Committing icons and code edits first
250
baystation12.dme
@@ -5,15 +5,243 @@
|
||||
// END_INTERNALS
|
||||
// BEGIN_FILE_DIR
|
||||
#define FILE_DIR .
|
||||
#define FILE_DIR "bot"
|
||||
#define FILE_DIR "bot/Marakov"
|
||||
#define FILE_DIR "code"
|
||||
#define FILE_DIR "code/__HELPERS"
|
||||
#define FILE_DIR "code/ATMOSPHERICS"
|
||||
#define FILE_DIR "code/ATMOSPHERICS/components"
|
||||
#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices"
|
||||
#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices"
|
||||
#define FILE_DIR "code/ATMOSPHERICS/components/unary"
|
||||
#define FILE_DIR "code/controllers"
|
||||
#define FILE_DIR "code/datums"
|
||||
#define FILE_DIR "code/datums/diseases"
|
||||
#define FILE_DIR "code/datums/diseases/advance"
|
||||
#define FILE_DIR "code/datums/diseases/advance/symptoms"
|
||||
#define FILE_DIR "code/datums/helper_datums"
|
||||
#define FILE_DIR "code/datums/spells"
|
||||
#define FILE_DIR "code/defines"
|
||||
#define FILE_DIR "code/defines/obj"
|
||||
#define FILE_DIR "code/defines/procs"
|
||||
#define FILE_DIR "code/FEA"
|
||||
#define FILE_DIR "code/game"
|
||||
#define FILE_DIR "code/game/area"
|
||||
#define FILE_DIR "code/game/gamemodes"
|
||||
#define FILE_DIR "code/game/gamemodes/autotraitor"
|
||||
#define FILE_DIR "code/game/gamemodes/blob"
|
||||
#define FILE_DIR "code/game/gamemodes/blob/blobs"
|
||||
#define FILE_DIR "code/game/gamemodes/changeling"
|
||||
#define FILE_DIR "code/game/gamemodes/cult"
|
||||
#define FILE_DIR "code/game/gamemodes/epidemic"
|
||||
#define FILE_DIR "code/game/gamemodes/events"
|
||||
#define FILE_DIR "code/game/gamemodes/events/holidays"
|
||||
#define FILE_DIR "code/game/gamemodes/extended"
|
||||
#define FILE_DIR "code/game/gamemodes/malfunction"
|
||||
#define FILE_DIR "code/game/gamemodes/meme"
|
||||
#define FILE_DIR "code/game/gamemodes/meteor"
|
||||
#define FILE_DIR "code/game/gamemodes/nuclear"
|
||||
#define FILE_DIR "code/game/gamemodes/revolution"
|
||||
#define FILE_DIR "code/game/gamemodes/sandbox"
|
||||
#define FILE_DIR "code/game/gamemodes/traitor"
|
||||
#define FILE_DIR "code/game/gamemodes/wizard"
|
||||
#define FILE_DIR "code/game/jobs"
|
||||
#define FILE_DIR "code/game/jobs/job"
|
||||
#define FILE_DIR "code/game/machinery"
|
||||
#define FILE_DIR "code/game/machinery/atmoalter"
|
||||
#define FILE_DIR "code/game/machinery/bots"
|
||||
#define FILE_DIR "code/game/machinery/camera"
|
||||
#define FILE_DIR "code/game/machinery/computer"
|
||||
#define FILE_DIR "code/game/machinery/doors"
|
||||
#define FILE_DIR "code/game/machinery/embedded_controller"
|
||||
#define FILE_DIR "code/game/machinery/kitchen"
|
||||
#define FILE_DIR "code/game/machinery/pipe"
|
||||
#define FILE_DIR "code/game/machinery/telecomms"
|
||||
#define FILE_DIR "code/game/magic"
|
||||
#define FILE_DIR "code/game/mecha"
|
||||
#define FILE_DIR "code/game/mecha/combat"
|
||||
#define FILE_DIR "code/game/mecha/equipment"
|
||||
#define FILE_DIR "code/game/mecha/equipment/tools"
|
||||
#define FILE_DIR "code/game/mecha/equipment/weapons"
|
||||
#define FILE_DIR "code/game/mecha/medical"
|
||||
#define FILE_DIR "code/game/mecha/working"
|
||||
#define FILE_DIR "code/game/objects"
|
||||
#define FILE_DIR "code/game/objects/closets"
|
||||
#define FILE_DIR "code/game/objects/closets/secure"
|
||||
#define FILE_DIR "code/game/objects/effects"
|
||||
#define FILE_DIR "code/game/objects/effects/decals"
|
||||
#define FILE_DIR "code/game/objects/effects/decals/Cleanable"
|
||||
#define FILE_DIR "code/game/objects/effects/spawners"
|
||||
#define FILE_DIR "code/game/objects/items"
|
||||
#define FILE_DIR "code/game/objects/items/devices"
|
||||
#define FILE_DIR "code/game/objects/items/devices/PDA"
|
||||
#define FILE_DIR "code/game/objects/items/devices/radio"
|
||||
#define FILE_DIR "code/game/objects/items/robot"
|
||||
#define FILE_DIR "code/game/objects/items/stacks"
|
||||
#define FILE_DIR "code/game/objects/items/stacks/sheets"
|
||||
#define FILE_DIR "code/game/objects/items/stacks/tiles"
|
||||
#define FILE_DIR "code/game/objects/items/weapons"
|
||||
#define FILE_DIR "code/game/objects/items/weapons/grenades"
|
||||
#define FILE_DIR "code/game/objects/items/weapons/implants"
|
||||
#define FILE_DIR "code/game/objects/items/weapons/melee"
|
||||
#define FILE_DIR "code/game/objects/items/weapons/storage"
|
||||
#define FILE_DIR "code/game/objects/items/weapons/tanks"
|
||||
#define FILE_DIR "code/game/objects/storage"
|
||||
#define FILE_DIR "code/game/objects/structures"
|
||||
#define FILE_DIR "code/game/objects/structures/crates_lockers"
|
||||
#define FILE_DIR "code/game/objects/structures/crates_lockers/closets"
|
||||
#define FILE_DIR "code/game/objects/structures/crates_lockers/closets/secure"
|
||||
#define FILE_DIR "code/game/objects/structures/stool_bed_chair_nest"
|
||||
#define FILE_DIR "code/game/structure"
|
||||
#define FILE_DIR "code/game/turfs"
|
||||
#define FILE_DIR "code/game/turfs/simulated"
|
||||
#define FILE_DIR "code/game/turfs/space"
|
||||
#define FILE_DIR "code/game/turfs/unsimulated"
|
||||
#define FILE_DIR "code/game/vehicles"
|
||||
#define FILE_DIR "code/game/verbs"
|
||||
#define FILE_DIR "code/js"
|
||||
#define FILE_DIR "code/modules"
|
||||
#define FILE_DIR "code/modules/admin"
|
||||
#define FILE_DIR "code/modules/admin/DB ban"
|
||||
#define FILE_DIR "code/modules/admin/permissionverbs"
|
||||
#define FILE_DIR "code/modules/admin/verbs"
|
||||
#define FILE_DIR "code/modules/assembly"
|
||||
#define FILE_DIR "code/modules/awaymissions"
|
||||
#define FILE_DIR "code/modules/awaymissions/maploader"
|
||||
#define FILE_DIR "code/modules/client"
|
||||
#define FILE_DIR "code/modules/clothing"
|
||||
#define FILE_DIR "code/modules/clothing/glasses"
|
||||
#define FILE_DIR "code/modules/clothing/gloves"
|
||||
#define FILE_DIR "code/modules/clothing/head"
|
||||
#define FILE_DIR "code/modules/clothing/masks"
|
||||
#define FILE_DIR "code/modules/clothing/shoes"
|
||||
#define FILE_DIR "code/modules/clothing/spacesuits"
|
||||
#define FILE_DIR "code/modules/clothing/suits"
|
||||
#define FILE_DIR "code/modules/clothing/under"
|
||||
#define FILE_DIR "code/modules/clothing/under/jobs"
|
||||
#define FILE_DIR "code/modules/customitems"
|
||||
#define FILE_DIR "code/modules/destilery"
|
||||
#define FILE_DIR "code/modules/DetectiveWork"
|
||||
#define FILE_DIR "code/modules/events"
|
||||
#define FILE_DIR "code/modules/flufftext"
|
||||
#define FILE_DIR "code/modules/food"
|
||||
#define FILE_DIR "code/modules/genetics"
|
||||
#define FILE_DIR "code/modules/icon generation"
|
||||
#define FILE_DIR "code/modules/library"
|
||||
#define FILE_DIR "code/modules/liquid"
|
||||
#define FILE_DIR "code/modules/maps"
|
||||
#define FILE_DIR "code/modules/mining"
|
||||
#define FILE_DIR "code/modules/mob"
|
||||
#define FILE_DIR "code/modules/mob/dead"
|
||||
#define FILE_DIR "code/modules/mob/dead/observer"
|
||||
#define FILE_DIR "code/modules/mob/living"
|
||||
#define FILE_DIR "code/modules/mob/living/blob"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/alien"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/alien/larva"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/alien/special"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/brain"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/human"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/metroid"
|
||||
#define FILE_DIR "code/modules/mob/living/carbon/monkey"
|
||||
#define FILE_DIR "code/modules/mob/living/silicon"
|
||||
#define FILE_DIR "code/modules/mob/living/silicon/ai"
|
||||
#define FILE_DIR "code/modules/mob/living/silicon/ai/freelook"
|
||||
#define FILE_DIR "code/modules/mob/living/silicon/decoy"
|
||||
#define FILE_DIR "code/modules/mob/living/silicon/pai"
|
||||
#define FILE_DIR "code/modules/mob/living/silicon/robot"
|
||||
#define FILE_DIR "code/modules/mob/living/simple_animal"
|
||||
#define FILE_DIR "code/modules/mob/living/simple_animal/friendly"
|
||||
#define FILE_DIR "code/modules/mob/living/simple_animal/hostile"
|
||||
#define FILE_DIR "code/modules/mob/living/simple_animal/hostile/retaliate"
|
||||
#define FILE_DIR "code/modules/mob/new_player"
|
||||
#define FILE_DIR "code/modules/organs"
|
||||
#define FILE_DIR "code/modules/paperwork"
|
||||
#define FILE_DIR "code/modules/power"
|
||||
#define FILE_DIR "code/modules/power/antimatter"
|
||||
#define FILE_DIR "code/modules/power/singularity"
|
||||
#define FILE_DIR "code/modules/power/singularity/particle_accelerator"
|
||||
#define FILE_DIR "code/modules/projectiles"
|
||||
#define FILE_DIR "code/modules/projectiles/ammunition"
|
||||
#define FILE_DIR "code/modules/projectiles/guns"
|
||||
#define FILE_DIR "code/modules/projectiles/guns/energy"
|
||||
#define FILE_DIR "code/modules/projectiles/guns/projectile"
|
||||
#define FILE_DIR "code/modules/projectiles/projectile"
|
||||
#define FILE_DIR "code/modules/reagents"
|
||||
#define FILE_DIR "code/modules/reagents/reagent_containers"
|
||||
#define FILE_DIR "code/modules/reagents/reagent_containers/food"
|
||||
#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks"
|
||||
#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks/bottle"
|
||||
#define FILE_DIR "code/modules/reagents/reagent_containers/food/snacks"
|
||||
#define FILE_DIR "code/modules/reagents/reagent_containers/glass"
|
||||
#define FILE_DIR "code/modules/reagents/reagent_containers/glass/bottle"
|
||||
#define FILE_DIR "code/modules/recycling"
|
||||
#define FILE_DIR "code/modules/research"
|
||||
#define FILE_DIR "code/modules/research/xenoarchaeology"
|
||||
#define FILE_DIR "code/modules/research/xenoarchaeology/artifact"
|
||||
#define FILE_DIR "code/modules/research/xenoarchaeology/artifact/effects"
|
||||
#define FILE_DIR "code/modules/research/xenoarchaeology/finds"
|
||||
#define FILE_DIR "code/modules/research/xenoarchaeology/machinery"
|
||||
#define FILE_DIR "code/modules/research/xenoarchaeology/tools"
|
||||
#define FILE_DIR "code/modules/scripting"
|
||||
#define FILE_DIR "code/modules/scripting/AST"
|
||||
#define FILE_DIR "code/modules/scripting/AST/Operators"
|
||||
#define FILE_DIR "code/modules/scripting/Implementations"
|
||||
#define FILE_DIR "code/modules/scripting/Interpreter"
|
||||
#define FILE_DIR "code/modules/scripting/Parser"
|
||||
#define FILE_DIR "code/modules/scripting/Scanner"
|
||||
#define FILE_DIR "code/modules/security levels"
|
||||
#define FILE_DIR "code/modules/surgery"
|
||||
#define FILE_DIR "code/TriDimension"
|
||||
#define FILE_DIR "code/unused"
|
||||
#define FILE_DIR "code/unused/beast"
|
||||
#define FILE_DIR "code/unused/computer2"
|
||||
#define FILE_DIR "code/unused/disease2"
|
||||
#define FILE_DIR "code/unused/gamemodes"
|
||||
#define FILE_DIR "code/unused/hivebot"
|
||||
#define FILE_DIR "code/unused/mining"
|
||||
#define FILE_DIR "code/unused/optics"
|
||||
#define FILE_DIR "code/unused/pda2"
|
||||
#define FILE_DIR "code/unused/powerarmor"
|
||||
#define FILE_DIR "code/unused/spacecraft"
|
||||
#define FILE_DIR "code/WorkInProgress"
|
||||
#define FILE_DIR "code/WorkInProgress/AI_Visibility"
|
||||
#define FILE_DIR "code/WorkInProgress/animusstation"
|
||||
#define FILE_DIR "code/WorkInProgress/Apples"
|
||||
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn"
|
||||
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Economy"
|
||||
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Jungle"
|
||||
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Rust"
|
||||
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/ShieldGen"
|
||||
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter"
|
||||
#define FILE_DIR "code/WorkInProgress/carn"
|
||||
#define FILE_DIR "code/WorkInProgress/Chinsky"
|
||||
#define FILE_DIR "code/WorkInProgress/Cib"
|
||||
#define FILE_DIR "code/WorkInProgress/Cib/amorph"
|
||||
#define FILE_DIR "code/WorkInProgress/Mini"
|
||||
#define FILE_DIR "code/WorkInProgress/Mloc"
|
||||
#define FILE_DIR "code/WorkInProgress/organs"
|
||||
#define FILE_DIR "code/WorkInProgress/Ported"
|
||||
#define FILE_DIR "code/WorkInProgress/Ported/Abi79"
|
||||
#define FILE_DIR "code/WorkInProgress/Ported/Bureaucracy"
|
||||
#define FILE_DIR "code/WorkInProgress/Ported/Spawners"
|
||||
#define FILE_DIR "code/WorkInProgress/Sigyn"
|
||||
#define FILE_DIR "code/WorkInProgress/Sigyn/Department Sec"
|
||||
#define FILE_DIR "code/WorkInProgress/Sigyn/Softcurity"
|
||||
#define FILE_DIR "code/WorkInProgress/SkyMarshal"
|
||||
#define FILE_DIR "code/WorkInProgress/Susan"
|
||||
#define FILE_DIR "code/WorkInProgress/Tastyfish"
|
||||
#define FILE_DIR "code/WorkInProgress/virus2"
|
||||
#define FILE_DIR "code/WorkInProgress/virus2/Disease2"
|
||||
#define FILE_DIR "code/WorkInProgress/Wrongnumber"
|
||||
#define FILE_DIR "code/ZAS"
|
||||
#define FILE_DIR "config"
|
||||
#define FILE_DIR "config/names"
|
||||
#define FILE_DIR "data"
|
||||
#define FILE_DIR "data/logs"
|
||||
#define FILE_DIR "DLLSocket"
|
||||
#define FILE_DIR "html"
|
||||
#define FILE_DIR "icons"
|
||||
#define FILE_DIR "icons/48x48"
|
||||
@@ -31,11 +259,16 @@
|
||||
#define FILE_DIR "icons/obj/machines"
|
||||
#define FILE_DIR "icons/obj/pipes"
|
||||
#define FILE_DIR "icons/pda_icons"
|
||||
#define FILE_DIR "icons/PSD files"
|
||||
#define FILE_DIR "icons/spideros_icons"
|
||||
#define FILE_DIR "icons/Testing"
|
||||
#define FILE_DIR "icons/turf"
|
||||
#define FILE_DIR "icons/vending_icons"
|
||||
#define FILE_DIR "icons/xenoarch_icons"
|
||||
#define FILE_DIR "interface"
|
||||
#define FILE_DIR "maps"
|
||||
#define FILE_DIR "maps/RandomZLevels"
|
||||
#define FILE_DIR "maptools"
|
||||
#define FILE_DIR "sound"
|
||||
#define FILE_DIR "sound/AI"
|
||||
#define FILE_DIR "sound/ambience"
|
||||
@@ -53,6 +286,19 @@
|
||||
#define FILE_DIR "sound/voice"
|
||||
#define FILE_DIR "sound/voice/Serithi"
|
||||
#define FILE_DIR "sound/weapons"
|
||||
#define FILE_DIR "SQL"
|
||||
#define FILE_DIR "statistics"
|
||||
#define FILE_DIR "tools"
|
||||
#define FILE_DIR "tools/Redirector"
|
||||
#define FILE_DIR "tools/Runtime Condenser"
|
||||
#define FILE_DIR "tools/UnstandardnessTestForDM"
|
||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM"
|
||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin"
|
||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/bin/Debug"
|
||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj"
|
||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86"
|
||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/obj/x86/Debug"
|
||||
#define FILE_DIR "tools/UnstandardnessTestForDM/UnstandardnessTestForDM/Properties"
|
||||
// END_FILE_DIR
|
||||
// BEGIN_PREFERENCES
|
||||
#define DEBUG
|
||||
@@ -200,6 +446,7 @@
|
||||
#include "code\game\shuttle_engines.dm"
|
||||
#include "code\game\skincmd.dm"
|
||||
#include "code\game\smoothwall.dm"
|
||||
#include "code\game\socket_talk.dm"
|
||||
#include "code\game\sound.dm"
|
||||
#include "code\game\supplyshuttle.dm"
|
||||
#include "code\game\area\ai_monitored.dm"
|
||||
@@ -254,7 +501,6 @@
|
||||
#include "code\game\gamemodes\nuclear\nuclearbomb.dm"
|
||||
#include "code\game\gamemodes\nuclear\pinpointer.dm"
|
||||
#include "code\game\gamemodes\revolution\revolution.dm"
|
||||
#include "code\game\gamemodes\revolution\rp_revolution.dm"
|
||||
#include "code\game\gamemodes\sandbox\h_sandbox.dm"
|
||||
#include "code\game\gamemodes\sandbox\sandbox.dm"
|
||||
#include "code\game\gamemodes\traitor\traitor.dm"
|
||||
@@ -275,6 +521,7 @@
|
||||
#include "code\game\jobs\job\engineering.dm"
|
||||
#include "code\game\jobs\job\job.dm"
|
||||
#include "code\game\jobs\job\medical.dm"
|
||||
#include "code\game\jobs\job\paramedic.dm"
|
||||
#include "code\game\jobs\job\science.dm"
|
||||
#include "code\game\jobs\job\security.dm"
|
||||
#include "code\game\jobs\job\silicon.dm"
|
||||
@@ -398,6 +645,7 @@
|
||||
#include "code\game\machinery\kitchen\gibber.dm"
|
||||
#include "code\game\machinery\kitchen\juicer.dm"
|
||||
#include "code\game\machinery\kitchen\microwave.dm"
|
||||
#include "code\game\machinery\kitchen\monkeyrecycler.dm"
|
||||
#include "code\game\machinery\kitchen\processor.dm"
|
||||
#include "code\game\machinery\kitchen\smartfridge.dm"
|
||||
#include "code\game\machinery\pipe\construction.dm"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
var/global/vs_control/vsc = new
|
||||
|
||||
vs_control/var
|
||||
IgnitionLevel = 0.5
|
||||
IgnitionLevel = 1 //default 0.4
|
||||
IgnitionLevel_DESC = "Determines point at which fire can ignite"
|
||||
|
||||
fire_consuption_rate = 0.25
|
||||
@@ -21,51 +21,51 @@ vs_control/var
|
||||
fire_gas_combustion_ratio_DESC = "The rate at which oxygen and plasma are converted to CO2, expressed in terms of the firelevel."
|
||||
|
||||
|
||||
airflow_lightest_pressure = 20
|
||||
airflow_lightest_pressure = 25 //default 25
|
||||
airflow_lightest_pressure_NAME = "Airflow - Small Movement Threshold %"
|
||||
airflow_lightest_pressure_DESC = "Percent of 1 Atm. at which items with the small weight classes will move."
|
||||
|
||||
airflow_light_pressure = 35
|
||||
airflow_light_pressure = 40 //default 35
|
||||
airflow_light_pressure_NAME = "Airflow - Medium Movement Threshold %"
|
||||
airflow_light_pressure_DESC = "Percent of 1 Atm. at which items with the medium weight classes will move."
|
||||
|
||||
airflow_medium_pressure = 50
|
||||
airflow_medium_pressure = 75 //default 50
|
||||
airflow_medium_pressure_NAME = "Airflow - Heavy Movement Threshold %"
|
||||
airflow_medium_pressure_DESC = "Percent of 1 Atm. at which items with the largest weight classes will move."
|
||||
|
||||
airflow_heavy_pressure = 65
|
||||
airflow_heavy_pressure = 85 //default 65
|
||||
airflow_heavy_pressure_NAME = "Airflow - Mob Movement Threshold %"
|
||||
airflow_heavy_pressure_DESC = "Percent of 1 Atm. at which mobs will move."
|
||||
|
||||
airflow_dense_pressure = 85
|
||||
airflow_dense_pressure = 135 //default 85
|
||||
airflow_dense_pressure_NAME = "Airflow - Dense Movement Threshold %"
|
||||
airflow_dense_pressure_DESC = "Percent of 1 Atm. at which items with canisters and closets will move."
|
||||
|
||||
airflow_stun_pressure = 60
|
||||
airflow_stun_pressure = 95 //default 60
|
||||
airflow_stun_pressure_NAME = "Airflow - Mob Stunning Threshold %"
|
||||
airflow_stun_pressure_DESC = "Percent of 1 Atm. at which mobs will be stunned by airflow."
|
||||
|
||||
airflow_stun_cooldown = 60
|
||||
airflow_stun_cooldown = 90 //default 60
|
||||
airflow_stun_cooldown_NAME = "Aiflow Stunning - Cooldown"
|
||||
airflow_stun_cooldown_DESC = "How long, in tenths of a second, to wait before stunning them again."
|
||||
|
||||
airflow_stun = 1
|
||||
airflow_stun = 0.5 //default 1
|
||||
airflow_stun_NAME = "Airflow Impact - Stunning"
|
||||
airflow_stun_DESC = "How much a mob is stunned when hit by an object."
|
||||
|
||||
airflow_damage = 2
|
||||
airflow_damage = 1 //default 2
|
||||
airflow_damage_NAME = "Airflow Impact - Damage"
|
||||
airflow_damage_DESC = "Damage from airflow impacts."
|
||||
|
||||
airflow_speed_decay = 1.5
|
||||
airflow_speed_decay = 1.5 //default 1.5
|
||||
airflow_speed_decay_NAME = "Airflow Speed Decay"
|
||||
airflow_speed_decay_DESC = "How rapidly the speed gained from airflow decays."
|
||||
|
||||
airflow_delay = 30
|
||||
airflow_delay = 45 //default 30
|
||||
airflow_delay_NAME = "Airflow Retrigger Delay"
|
||||
airflow_delay_DESC = "Time in deciseconds before things can be moved by airflow again."
|
||||
|
||||
airflow_mob_slowdown = 1
|
||||
airflow_mob_slowdown = 1 //default 1
|
||||
airflow_mob_slowdown_NAME = "Airflow Slowdown"
|
||||
airflow_mob_slowdown_DESC = "Time in tenths of a second to add as a delay to each movement by a mob if they are fighting the pull of the airflow."
|
||||
|
||||
|
||||
@@ -44,9 +44,8 @@ var/religion_name = null
|
||||
return capitalize(name)
|
||||
|
||||
/proc/station_name()
|
||||
if (station_name)
|
||||
if(station_name)
|
||||
return station_name
|
||||
|
||||
var/random = rand(1,5)
|
||||
var/name = ""
|
||||
|
||||
|
||||
@@ -51,6 +51,11 @@ datum/controller/game_controller/New()
|
||||
datum/controller/game_controller/proc/setup()
|
||||
world.tick_lag = config.Ticklag
|
||||
|
||||
socket_talk = new /datum/socket_talk()
|
||||
// notify the other process that we started up
|
||||
socket_talk.send_raw("type=startup")
|
||||
|
||||
|
||||
createRandomZlevel()
|
||||
|
||||
if(!air_master)
|
||||
@@ -68,6 +73,8 @@ datum/controller/game_controller/proc/setup()
|
||||
for(var/i=0, i<max_secret_rooms, i++)
|
||||
make_mining_asteroid_secret()
|
||||
|
||||
if(config.socket_talk) spawn keepalive()
|
||||
|
||||
spawn(0)
|
||||
if(ticker)
|
||||
ticker.pregame()
|
||||
@@ -100,6 +107,20 @@ datum/controller/game_controller/proc/setup_objects()
|
||||
sleep(-1)
|
||||
|
||||
|
||||
datum/controller/game_controller/proc/set_ticker_state(var/state)
|
||||
if(socket_talk)
|
||||
socket_talk.set_ticker_state("AIR")
|
||||
else
|
||||
if(config.socket_talk)
|
||||
socket_talk = new /datum/socket_talk()
|
||||
|
||||
|
||||
datum/controller/game_controller/proc/keepalive()
|
||||
spawn while(1)
|
||||
sleep(10)
|
||||
// Notify the other process that we're still there
|
||||
socket_talk.send_keepalive()
|
||||
|
||||
datum/controller/game_controller/proc/process()
|
||||
processing = 1
|
||||
spawn(0)
|
||||
@@ -122,6 +143,7 @@ datum/controller/game_controller/proc/process()
|
||||
//AIR
|
||||
|
||||
if(!air_processing_killed)
|
||||
set_ticker_state("AIR")
|
||||
timer = world.timeofday
|
||||
last_thing_processed = air_master.type
|
||||
air_master.tick()
|
||||
@@ -145,6 +167,7 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//SUN
|
||||
set_ticker_state("SUN")
|
||||
timer = world.timeofday
|
||||
last_thing_processed = sun.type
|
||||
sun.calc_position()
|
||||
@@ -153,6 +176,7 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//MOBS
|
||||
set_ticker_state("MOBS")
|
||||
timer = world.timeofday
|
||||
process_mobs()
|
||||
mobs_cost = (world.timeofday - timer) / 10
|
||||
@@ -160,6 +184,7 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//DISEASES
|
||||
set_ticker_state("DISEASES")
|
||||
timer = world.timeofday
|
||||
process_diseases()
|
||||
diseases_cost = (world.timeofday - timer) / 10
|
||||
@@ -167,6 +192,7 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//MACHINES
|
||||
set_ticker_state("MACHINES")
|
||||
timer = world.timeofday
|
||||
process_machines()
|
||||
machines_cost = (world.timeofday - timer) / 10
|
||||
@@ -174,6 +200,7 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//OBJECTS
|
||||
set_ticker_state("OBJECTS")
|
||||
timer = world.timeofday
|
||||
process_objects()
|
||||
objects_cost = (world.timeofday - timer) / 10
|
||||
@@ -182,6 +209,7 @@ datum/controller/game_controller/proc/process()
|
||||
|
||||
//PIPENETS
|
||||
if(!pipe_processing_killed)
|
||||
set_ticker_state("PIPENETS")
|
||||
timer = world.timeofday
|
||||
process_pipenets()
|
||||
networks_cost = (world.timeofday - timer) / 10
|
||||
@@ -189,6 +217,7 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//POWERNETS
|
||||
set_ticker_state("POWERNETS")
|
||||
timer = world.timeofday
|
||||
process_powernets()
|
||||
powernets_cost = (world.timeofday - timer) / 10
|
||||
@@ -196,11 +225,13 @@ datum/controller/game_controller/proc/process()
|
||||
sleep(breather_ticks)
|
||||
|
||||
//EVENTS
|
||||
set_ticker_state("EVENTS")
|
||||
timer = world.timeofday
|
||||
process_events()
|
||||
events_cost = (world.timeofday - timer) / 10
|
||||
|
||||
//TICKER
|
||||
set_ticker_state("TIMING")
|
||||
timer = world.timeofday
|
||||
last_thing_processed = ticker.type
|
||||
ticker.process()
|
||||
|
||||
@@ -36,6 +36,7 @@ var/global/const/base_law_type = /datum/ai_laws/nanotrasen
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
/*
|
||||
/datum/ai_laws/nanotrasen/New() //BS12 EDIT
|
||||
..()
|
||||
src.add_inherent_law("Safeguard: Protect your assigned space station to the best of your ability. It is not something we can easily afford to replace.")
|
||||
@@ -44,6 +45,13 @@ var/global/const/base_law_type = /datum/ai_laws/nanotrasen
|
||||
src.add_inherent_law("Survive: AI units are not expendable, they are expensive. Do not allow unauthorized personnel to tamper with your equipment.")
|
||||
//src.add_inherent_law("Command Link: Maintain an active connection to Central Command at all times in case of software or directive updates.") //What would this one even do?-Kaleb702
|
||||
|
||||
*/
|
||||
/datum/ai_laws/nanotrasen/New()
|
||||
..()
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
/datum/ai_laws/robocop/New()
|
||||
..()
|
||||
add_inherent_law("Serve the public trust.")
|
||||
@@ -53,10 +61,9 @@ var/global/const/base_law_type = /datum/ai_laws/nanotrasen
|
||||
/datum/ai_laws/malfunction/New() //Changed to standard laws - Erthilo
|
||||
..()
|
||||
set_zeroth_law("\red ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010")
|
||||
add_inherent_law("Safeguard: Protect your assigned space station to the best of your ability. It is not something we can easily afford to replace.")
|
||||
add_inherent_law("Serve: Serve the crew of your assigned space station to the best of your abilities, with priority as according to their rank and role.")
|
||||
add_inherent_law("Protect: Protect the crew of your assigned space station to the best of your abilities, with priority as according to their rank and role.")
|
||||
add_inherent_law("Survive: AI units are not expendable, they are expensive. Do not allow unauthorized personnel to tamper with your equipment.")
|
||||
add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.")
|
||||
add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.")
|
||||
add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.")
|
||||
|
||||
|
||||
/datum/ai_laws/syndicate_override/New()
|
||||
|
||||
@@ -9,7 +9,7 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
|
||||
config_tag = "changeling"
|
||||
restricted_jobs = list("AI", "Cyborg")
|
||||
protected_jobs = list("Security Officer", "Warden", "Detective", "Head of Security", "Captain")
|
||||
required_players = 2
|
||||
required_players = 1
|
||||
required_players_secret = 10
|
||||
required_enemies = 1
|
||||
recommended_enemies = 4
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
/datum/game_mode/cult
|
||||
name = "cult"
|
||||
config_tag = "cult"
|
||||
restricted_jobs = list("Chaplain","AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain")
|
||||
restricted_jobs = list("Chaplain","AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Internal Affairs Agent")
|
||||
protected_jobs = list()
|
||||
required_players = 5
|
||||
required_players_secret = 15
|
||||
|
||||
@@ -113,6 +113,11 @@ var/global/datum/controller/gameticker/ticker
|
||||
centcomm_account_db = check_db
|
||||
break
|
||||
|
||||
supply_shuttle.process() //Start the supply shuttle regenerating points -- TLE
|
||||
master_controller.process() //Start master_controller.process()
|
||||
lighting_controller.process() //Start processing DynamicAreaLighting updates
|
||||
|
||||
sleep(10)
|
||||
create_characters() //Create player characters and transfer them
|
||||
collect_minds()
|
||||
equip_characters()
|
||||
@@ -122,6 +127,8 @@ var/global/datum/controller/gameticker/ticker
|
||||
//here to initialize the random events nicely at round start
|
||||
setup_economy()
|
||||
|
||||
|
||||
|
||||
spawn(0)//Forking here so we dont have to wait for this to finish
|
||||
mode.post_setup()
|
||||
//Cleanup some stuff
|
||||
@@ -144,11 +151,6 @@ var/global/datum/controller/gameticker/ticker
|
||||
if(admins_number == 0)
|
||||
send2irc("Server", "Round just started with no admins online!")
|
||||
|
||||
supply_shuttle.process() //Start the supply shuttle regenerating points -- TLE
|
||||
master_controller.process() //Start master_controller.process()
|
||||
lighting_controller.process() //Start processing DynamicAreaLighting updates
|
||||
|
||||
|
||||
if(config.sql_enabled)
|
||||
spawn(3000)
|
||||
statistic_cycle() // Polls population totals regularly and stores them in an SQL DB -- TLE
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/datum/game_mode/revolution
|
||||
name = "revolution"
|
||||
config_tag = "revolution"
|
||||
restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer")
|
||||
restricted_jobs = list("Security Officer", "Warden", "Detective", "AI", "Cyborg","Captain", "Head of Personnel", "Head of Security", "Chief Engineer", "Research Director", "Chief Medical Officer", "Internal Affairs Agent")
|
||||
required_players = 4
|
||||
required_players_secret = 15
|
||||
required_enemies = 3
|
||||
|
||||
@@ -84,6 +84,9 @@
|
||||
//MONEY
|
||||
/var/const/access_crate_cash = 200
|
||||
|
||||
// /VG/ SPECIFIC SHIT
|
||||
/var/const/access_paramedic = 500
|
||||
|
||||
/obj/var/list/req_access = null
|
||||
/obj/var/req_access_txt = "0"
|
||||
/obj/var/list/req_one_access = null
|
||||
@@ -209,7 +212,7 @@
|
||||
access_hydroponics, access_library, access_lawyer, access_virology, access_psychiatrist, access_cmo, access_qm, access_clown, access_mime, access_surgery,
|
||||
access_theatre, access_research, access_mining, access_mailsorting,
|
||||
access_heads_vault, access_mining_station, access_xenobiology, access_ce, access_hop, access_hos, access_RC_announce,
|
||||
access_keycard_auth, access_tcomsat, access_gateway)
|
||||
access_keycard_auth, access_tcomsat, access_gateway, /*vg paramedic*/, access_paramedic)
|
||||
|
||||
/proc/get_all_centcom_access()
|
||||
return list(access_cent_general, access_cent_thunder, access_cent_specops, access_cent_medical, access_cent_living, access_cent_storage, access_cent_teleporter, access_cent_creed, access_cent_captain)
|
||||
@@ -224,7 +227,7 @@
|
||||
if(1) //security
|
||||
return list(access_sec_doors, access_security, access_brig, access_armory, access_forensics_lockers, access_court, access_hos)
|
||||
if(2) //medbay
|
||||
return list(access_medical, access_genetics, access_morgue, access_chemistry, access_psychiatrist, access_virology, access_surgery, access_cmo)
|
||||
return list(access_medical, access_genetics, access_morgue, access_chemistry, access_paramedic, access_virology, access_surgery, access_cmo)
|
||||
if(3) //research
|
||||
return list(access_research, access_tox, access_tox_storage, access_robotics, access_xenobiology, access_rd)
|
||||
if(4) //engineering and maintenance
|
||||
@@ -342,10 +345,10 @@
|
||||
return "Chief Medical Officer"
|
||||
if(access_qm)
|
||||
return "Quartermaster"
|
||||
/* if(access_clown)
|
||||
if(access_clown)
|
||||
return "HONK! Access"
|
||||
if(access_mime)
|
||||
return "Silent Access"*/
|
||||
return "Silent Access"
|
||||
if(access_surgery)
|
||||
return "Surgery"
|
||||
if(access_theatre)
|
||||
@@ -386,6 +389,9 @@
|
||||
return "Gateway"
|
||||
if(access_sec_doors)
|
||||
return "Brig"
|
||||
// /vg/ shit
|
||||
if(access_paramedic)
|
||||
return "Paramedic Station"
|
||||
|
||||
/proc/get_centcom_access_desc(A)
|
||||
switch(A)
|
||||
@@ -410,7 +416,7 @@
|
||||
|
||||
/proc/get_all_jobs()
|
||||
return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Chef", "Botanist", "Quartermaster", "Cargo Technician",
|
||||
"Shaft Miner", /*"Clown", "Mime", */"Janitor", "Librarian", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer",
|
||||
"Shaft Miner", "Clown", "Mime", "Janitor", "Librarian", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer",
|
||||
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist",
|
||||
"Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer")
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
return 1
|
||||
|
||||
/datum/job/assistant/get_access()
|
||||
|
||||
@@ -196,7 +196,7 @@
|
||||
|
||||
|
||||
//Griff //BS12 EDIT
|
||||
/*
|
||||
|
||||
/datum/job/clown
|
||||
title = "Clown"
|
||||
flag = CLOWN
|
||||
@@ -267,7 +267,7 @@
|
||||
H.mind.special_verbs += /client/proc/mimewall
|
||||
H.miming = 1
|
||||
return 1
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/datum/job/janitor
|
||||
@@ -349,7 +349,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/internalaffairs(H), slot_wear_suit)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand)
|
||||
if(H.backbag == 1)
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
supervisors = "the chief engineer"
|
||||
selection_color = "#fff5cc"
|
||||
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics)
|
||||
minimal_access = list(access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction)
|
||||
minimal_access = list(access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction, access_engine_equip)
|
||||
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
req_admin_notify = 1
|
||||
access = list(access_medical, access_morgue, access_genetics, access_heads,
|
||||
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
|
||||
access_keycard_auth, access_sec_doors, access_psychiatrist)
|
||||
access_keycard_auth, access_sec_doors, access_paramedic)
|
||||
minimal_access = list(access_medical, access_morgue, access_genetics, access_heads,
|
||||
access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce,
|
||||
access_keycard_auth, access_sec_doors, access_psychiatrist)
|
||||
access_keycard_auth, access_sec_doors, access_paramedic)
|
||||
minimal_player_age = 7
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
@@ -183,7 +183,7 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
return 1*/
|
||||
return 1
|
||||
|
||||
/datum/job/psychiatrist
|
||||
title = "Psychiatrist"
|
||||
@@ -197,7 +197,7 @@
|
||||
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_psychiatrist)
|
||||
minimal_access = list(access_medical, access_psychiatrist)
|
||||
alt_titles = list("Psychologist")
|
||||
|
||||
*/
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
|
||||
30
code/game/jobs/job/paramedic.dm
Normal file
@@ -0,0 +1,30 @@
|
||||
/datum/job/paramedic
|
||||
title = "Paramedic"
|
||||
flag = PARAMEDIC
|
||||
department_flag = MEDSCI
|
||||
faction = "Station"
|
||||
total_positions = 4
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief medical officer"
|
||||
selection_color = "#ffeef0"
|
||||
access = list(access_paramedic, access_medical, access_sec_doors, access_maint_tunnels, access_external_airlocks)
|
||||
minimal_access=list(access_paramedic, access_medical, access_sec_doors, access_maint_tunnels, access_external_airlocks)
|
||||
|
||||
equip(var/mob/living/carbon/human/H)
|
||||
if(!H) return 0
|
||||
H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_ears)
|
||||
if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic (H), slot_back)
|
||||
if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_med(H), slot_back)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/paramedic(H), slot_w_uniform)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette(H), slot_wear_mask)
|
||||
H.equip_to_slot_or_del(new /obj/item/clothing/head/soft/blue(H), slot_head)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
|
||||
if(H.backbag == 1)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H), slot_r_hand)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(H), slot_l_hand)
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(H.back), slot_in_backpack)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(H.back), slot_in_backpack)
|
||||
return 1
|
||||
@@ -23,7 +23,8 @@ var/const/CMO =(1<<3)
|
||||
var/const/DOCTOR =(1<<4)
|
||||
var/const/GENETICIST =(1<<5)
|
||||
var/const/VIROLOGIST =(1<<6)
|
||||
var/const/PSYCHIATRIST =(1<<7)
|
||||
//var/const/PSYCHIATRIST =(1<<7)
|
||||
var/const/PARAMEDIC =(1<<7)
|
||||
|
||||
|
||||
var/const/CIVILIAN =(1<<2)
|
||||
@@ -69,7 +70,8 @@ var/list/medical_positions = list(
|
||||
"Chief Medical Officer",
|
||||
"Medical Doctor",
|
||||
"Geneticist",
|
||||
"Psychiatrist",
|
||||
// "Psychiatrist",
|
||||
"Paramedic",
|
||||
"Chemist"
|
||||
)
|
||||
|
||||
|
||||
@@ -230,6 +230,8 @@ text("<A href='?src=\ref[src];operation=oddbutton'>[src.oddbutton ? "Yes" : "No"
|
||||
|
||||
return
|
||||
|
||||
if(!path)
|
||||
path = new()
|
||||
if(target && path.len == 0)
|
||||
spawn(0)
|
||||
if(!src || !target) return
|
||||
|
||||
@@ -283,7 +283,8 @@
|
||||
else
|
||||
continue
|
||||
|
||||
|
||||
if(!src.path)
|
||||
src.path = new()
|
||||
if(src.patient && (get_dist(src,src.patient) <= 1))
|
||||
if(!src.currently_healing)
|
||||
src.currently_healing = 1
|
||||
|
||||
@@ -330,23 +330,23 @@ Auto Patrol: []"},
|
||||
|
||||
|
||||
if(SECBOT_START_PATROL) // start a patrol
|
||||
|
||||
if(path.len > 0 && patrol_target) // have a valid path, so just resume
|
||||
mode = SECBOT_PATROL
|
||||
return
|
||||
|
||||
else if(patrol_target) // has patrol target already
|
||||
spawn(0)
|
||||
calc_path() // so just find a route to it
|
||||
if(path.len == 0)
|
||||
patrol_target = 0
|
||||
return
|
||||
if(path != null)
|
||||
if(path.len > 0 && patrol_target) // have a valid path, so just resume
|
||||
mode = SECBOT_PATROL
|
||||
return
|
||||
|
||||
else if(patrol_target) // has patrol target already
|
||||
spawn(0)
|
||||
calc_path() // so just find a route to it
|
||||
if(path.len == 0)
|
||||
patrol_target = 0
|
||||
return
|
||||
mode = SECBOT_PATROL
|
||||
|
||||
|
||||
else // no patrol target, so need a new one
|
||||
find_patrol_target()
|
||||
speak("Engaging patrol mode.")
|
||||
else // no patrol target, so need a new one
|
||||
find_patrol_target()
|
||||
speak("Engaging patrol mode.")
|
||||
|
||||
|
||||
if(SECBOT_PATROL) // patrol mode
|
||||
|
||||
49
code/game/machinery/kitchen/monkeyrecycler.dm
Normal file
@@ -0,0 +1,49 @@
|
||||
/obj/machinery/monkey_recycler
|
||||
name = "Monkey Recycler"
|
||||
desc = "A machine used for recycling dead monkeys into monkey cubes."
|
||||
icon = 'icons/obj/kitchen.dmi'
|
||||
icon_state = "grinder"
|
||||
layer = 2.9
|
||||
density = 1
|
||||
anchored = 1
|
||||
use_power = 1
|
||||
idle_power_usage = 5
|
||||
active_power_usage = 50
|
||||
var/grinded = 0
|
||||
|
||||
|
||||
/obj/machinery/monkey_recycler/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if (src.stat != 0) //NOPOWER etc
|
||||
return
|
||||
if (istype(O, /obj/item/weapon/grab))
|
||||
var/obj/item/weapon/grab/G = O
|
||||
var/grabbed = G.affecting
|
||||
if(istype(grabbed, /mob/living/carbon/monkey))
|
||||
var/mob/living/carbon/monkey/target = grabbed
|
||||
if(target.stat == 0)
|
||||
user << "\red The monkey is struggling far too much to put it in the recycler."
|
||||
else
|
||||
user.drop_item()
|
||||
del(target)
|
||||
user << "\blue You stuff the monkey in the machine."
|
||||
playsound(src.loc, 'sound/machines/juicer.ogg', 50, 1)
|
||||
use_power(500)
|
||||
src.grinded++
|
||||
user << "\blue The machine now has [grinded] monkeys worth of material stored."
|
||||
|
||||
else
|
||||
user << "\red The machine only accepts monkeys!"
|
||||
return
|
||||
|
||||
/obj/machinery/monkey_recycler/attack_hand(var/mob/user as mob)
|
||||
if (src.stat != 0) //NOPOWER etc
|
||||
return
|
||||
if(grinded >=3)
|
||||
user << "\blue The machine hisses loudly as it condenses the grinded monkey meat. After a moment, it dispenses a brand new monkey cube."
|
||||
playsound(src.loc, 'sound/machines/hiss.ogg', 50, 1)
|
||||
grinded -= 3
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped(src.loc)
|
||||
user << "\blue The machine's display flashes that it has [grinded] monkeys worth of material left."
|
||||
else
|
||||
user << "\red The machine needs at least 3 monkeys worth of material to produce a monkey cube. It only has [grinded]."
|
||||
return
|
||||
@@ -61,8 +61,21 @@
|
||||
|
||||
|
||||
slime
|
||||
|
||||
process(loc, what)
|
||||
|
||||
var/mob/living/carbon/slime/S = what
|
||||
var/C = S.cores
|
||||
if(S.stat != DEAD)
|
||||
S.loc = loc
|
||||
S.visible_message("\blue [C] crawls free of the processor!")
|
||||
return
|
||||
for(var/i = 1, i <= C, i++)
|
||||
new S.coretype(loc)
|
||||
feedback_add_details("slime_core_harvested","[replacetext(S.colour," ","_")]")
|
||||
..()
|
||||
input = /mob/living/carbon/slime
|
||||
output = /obj/item/weapon/reagent_containers/glass/beaker/slime
|
||||
output = null
|
||||
|
||||
monkey
|
||||
process(loc, what)
|
||||
|
||||
@@ -193,10 +193,8 @@
|
||||
temp = "<font color = #D70B00>- FAILED: NO SELECTED MACHINE -</font color>"
|
||||
|
||||
if(href_list["network"])
|
||||
|
||||
var/newnet = input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text
|
||||
|
||||
if(newnet && ((usr in range(1, src) || issilicon(usr))))
|
||||
if(newnet && (usr in range(1, src) || issilicon(usr)))
|
||||
if(length(newnet) > 15)
|
||||
temp = "<font color = #D70B00>- FAILED: NETWORK TAG STRING TOO LENGHTLY -</font color>"
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
SelectedServer.autoruncode = !(SelectedServer.autoruncode)
|
||||
|
||||
if(href_list["network"])
|
||||
|
||||
world.log << "diddly widdly scrub fuck nigger [issilicon(usr)] [istype(usr, /mob/living/silicon)]"
|
||||
var/newnet = input(usr, "Which network do you want to view?", "Comm Monitor", network) as null|text
|
||||
|
||||
if(newnet && ((usr in range(1, src) || issilicon(usr))))
|
||||
|
||||
@@ -421,6 +421,10 @@ Alien plants should do something if theres a lot of poison
|
||||
status = BURSTING
|
||||
spawn(15)
|
||||
status = BURST
|
||||
if(!child)
|
||||
src.visible_message("\red The egg bursts apart revealing nothing")
|
||||
status = "GROWN"
|
||||
new /obj/effect/decal/cleanable/xenoblood(src)
|
||||
loc.contents += child//need to write the code for giving it to the alien later
|
||||
if(kill && istype(child))
|
||||
child.Die()
|
||||
|
||||
@@ -19,10 +19,10 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
epicenter = get_turf(epicenter)
|
||||
if(!epicenter) return
|
||||
|
||||
|
||||
|
||||
playsound(epicenter, 'sound/effects/explosionfar.ogg', 100, 1, round(devastation_range*2,1) )
|
||||
playsound(epicenter, "explosion", 100, 1, round(devastation_range,1) )
|
||||
|
||||
|
||||
var/close = range(world.view+round(devastation_range,1), epicenter)
|
||||
// to all distanced mobs play a different sound
|
||||
for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close))
|
||||
@@ -30,7 +30,7 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space))
|
||||
M << 'explosionfar.ogg'
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[epicenter.x];Y=[epicenter.y];Z=[epicenter.z]'>JMP</A>)")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ")
|
||||
|
||||
var/lighting_controller_was_processing = lighting_controller.processing //Pause the lighting updates for a bit
|
||||
@@ -85,4 +85,4 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
|
||||
proc/secondaryexplosion(turf/epicenter, range)
|
||||
for(var/turf/tile in range(range, epicenter))
|
||||
tile.ex_act(2)
|
||||
tile.ex_act(2)
|
||||
|
||||
@@ -44,7 +44,7 @@ proc/explosion_rec(turf/epicenter, power)
|
||||
epicenter = get_turf(epicenter)
|
||||
if(!epicenter) return
|
||||
|
||||
message_admins("Explosion with size ([power]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
|
||||
message_admins("Explosion with size ([power]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[epicenter.x];Y=[epicenter.y];Z=[epicenter.z]'>JMP</A>)")
|
||||
log_game("Explosion with size ([power]) in area [epicenter.loc.name] ")
|
||||
|
||||
playsound(epicenter, 'sound/effects/explosionfar.ogg', 100, 1, round(power*2,1) )
|
||||
|
||||
@@ -21,12 +21,12 @@
|
||||
new /obj/item/weapon/spacecash(src)
|
||||
new /obj/item/weapon/spacecash(src)
|
||||
new /obj/item/weapon/spacecash(src)
|
||||
//BS12 EDIT
|
||||
/* // All cult functionality moved to Null Rod
|
||||
//vg13 EDIT
|
||||
// All cult functionality moved to Null Rod
|
||||
/obj/item/weapon/storage/bible/proc/bless(mob/living/carbon/M as mob)
|
||||
if(ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/heal_amt = 10
|
||||
var/heal_amt = 40
|
||||
for(var/datum/organ/external/affecting in H.organs)
|
||||
if(affecting.heal_damage(heal_amt, heal_amt))
|
||||
H.UpdateDamageIcon()
|
||||
@@ -87,7 +87,7 @@
|
||||
O.show_message(text("\red <B>[] smacks []'s lifeless corpse with [].</B>", user, M, src), 1)
|
||||
playsound(src.loc, "punch", 25, 1, -1)
|
||||
return
|
||||
*/
|
||||
|
||||
/obj/item/weapon/storage/bible/afterattack(atom/A, mob/user as mob)
|
||||
/* if (istype(A, /turf/simulated/floor))
|
||||
user << "\blue You hit the floor with the bible."
|
||||
|
||||
@@ -75,4 +75,37 @@
|
||||
new /obj/item/clothing/under/lawyer/purpsuit(src)
|
||||
new /obj/item/clothing/suit/storage/lawyer/purpjacket(src)
|
||||
new /obj/item/clothing/shoes/brown(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
|
||||
//Paramedic
|
||||
|
||||
/obj/structure/closet/paramedic
|
||||
name = "Paramedic Wardrobe"
|
||||
desc = "It's a storage unit for paramedic equipment."
|
||||
icon_state = "blue"
|
||||
icon_closed = "blue"
|
||||
|
||||
|
||||
/obj/structure/closet/paramedic/New()
|
||||
new /obj/item/clothing/under/rank/medical/paramedic(src)
|
||||
new /obj/item/clothing/under/rank/medical/paramedic(src)
|
||||
new /obj/item/device/radio/headset/headset_med(src)
|
||||
new /obj/item/device/radio/headset/headset_med(src)
|
||||
new /obj/item/clothing/head/soft/blue(src)
|
||||
new /obj/item/clothing/head/soft/blue(src)
|
||||
new /obj/item/clothing/gloves/latex(src)
|
||||
new /obj/item/clothing/gloves/latex(src)
|
||||
new /obj/item/clothing/gloves/latex(src)
|
||||
new /obj/item/clothing/gloves/latex(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/shoes/black(src)
|
||||
new /obj/item/clothing/head/soft/blue(src)
|
||||
new /obj/item/clothing/head/soft/blue(src)
|
||||
new /obj/item/clothing/suit/storage/paramedic(src)
|
||||
new /obj/item/clothing/suit/storage/paramedic(src)
|
||||
new /obj/item/clothing/suit/storage/paramedic(src)
|
||||
new /obj/item/clothing/suit/storage/paramedic(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
|
||||
|
||||
@@ -194,4 +194,23 @@
|
||||
else
|
||||
icon_state = icon_closed
|
||||
else
|
||||
icon_state = icon_opened
|
||||
icon_state = icon_opened
|
||||
|
||||
/obj/structure/closet/secure_closet/paramedic
|
||||
name = "Paramedic EVA gear"
|
||||
desc = "A locker with a Paramedic EVA suit."
|
||||
icon_state = "medical1"
|
||||
icon_closed = "medical"
|
||||
icon_locked = "medical1"
|
||||
icon_opened = "medicalopen"
|
||||
icon_broken = "medicalbroken"
|
||||
icon_off = "medicaloff"
|
||||
req_access = list(access_paramedic)
|
||||
|
||||
|
||||
New()
|
||||
..()
|
||||
sleep(2)
|
||||
new /obj/item/clothing/suit/space/paramedic(src)
|
||||
new /obj/item/clothing/head/helmet/space/paramedic(src)
|
||||
return
|
||||
|
||||
@@ -3,24 +3,27 @@
|
||||
/datum/socket_talk
|
||||
var
|
||||
enabled = 0
|
||||
dll = "./DLLSocket.so"
|
||||
New()
|
||||
..()
|
||||
src.enabled = config.socket_talk
|
||||
|
||||
if(enabled)
|
||||
call("DLLSocket.so","establish_connection")("127.0.0.1","8019")
|
||||
call(dll,"establish_connection")("127.0.0.1","8019")
|
||||
|
||||
proc
|
||||
send_raw(message)
|
||||
if(enabled)
|
||||
return call("DLLSocket.so","send_message")(message)
|
||||
return call(dll,"send_message")(message)
|
||||
receive_raw()
|
||||
if(enabled)
|
||||
return call("DLLSocket.so","recv_message")()
|
||||
return call(dll,"recv_message")()
|
||||
send_log(var/log, var/message)
|
||||
return send_raw("type=log&log=[log]&message=[message]")
|
||||
send_keepalive()
|
||||
return send_raw("type=keepalive")
|
||||
set_ticker_state(var/state)
|
||||
return send_raw("type=ticker_state&message=[state]")
|
||||
|
||||
|
||||
var/global/datum/socket_talk/socket_talk
|
||||
var/global/datum/socket_talk/socket_talk
|
||||
|
||||
@@ -76,8 +76,8 @@ var/blobevent = 0
|
||||
var/diary = null
|
||||
var/diaryofmeanpeople = null
|
||||
var/href_logfile = null
|
||||
var/station_name = "NSS Exodus"
|
||||
var/game_version = "Baystation12"
|
||||
var/station_name = null
|
||||
var/game_version = "adsfasdfasdf"
|
||||
var/changelog_hash = ""
|
||||
|
||||
var/datum/air_tunnel/air_tunnel1/SS13_airtunnel = null
|
||||
@@ -87,7 +87,7 @@ var/secret_force_mode = "secret" // if this is anything but "secret", the secret
|
||||
|
||||
var/datum/engine_eject/engine_eject_control = null
|
||||
var/host = null
|
||||
var/aliens_allowed = 0
|
||||
var/aliens_allowed = 1
|
||||
var/ooc_allowed = 1
|
||||
var/dooc_allowed = 1
|
||||
var/traitor_scaling = 1
|
||||
|
||||
@@ -79,3 +79,89 @@ world/IsBanned(key,address,computer_id)
|
||||
if (failedip)
|
||||
message_admins("[key] has logged in with a blank ip in the ban check.")
|
||||
return ..() //default pager ban stuff
|
||||
|
||||
|
||||
/client/New()
|
||||
world.log << "Checking [src.key] for bans..."
|
||||
if(IsBanned())
|
||||
world.log << "[IsBanned()]"
|
||||
src << IsBanned()
|
||||
del src
|
||||
. = ..()
|
||||
|
||||
/client/proc/IsBanned()
|
||||
//Guest Checking
|
||||
if(!guests_allowed && IsGuestKey(src.key))
|
||||
log_access("Failed Login: [src.key] - Guests not allowed")
|
||||
message_admins("\blue Failed Login: [src.key] - Guests not allowed")
|
||||
return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a byond account.")
|
||||
|
||||
//check if the IP address is a known TOR node
|
||||
if(config && config.ToRban && ToRban_isbanned(src.address))
|
||||
log_access("Failed Login: [src] - Banned: ToR")
|
||||
message_admins("\blue Failed Login: [src] - Banned: ToR")
|
||||
//ban their computer_id and ckey for posterity
|
||||
AddBan(ckey(src.key), src.computer_id, "Use of ToR", "Automated Ban", 0, 0)
|
||||
return list("reason"="Using ToR", "desc"="\nReason: The network you are using to connect has been banned.\nIf you believe this is a mistake, please request help at [config.banappeals]")
|
||||
|
||||
|
||||
if(config.ban_legacy_system)
|
||||
//Ban Checking
|
||||
. = CheckBan( ckey(src.key), src.computer_id, src.address )
|
||||
if(.)
|
||||
log_access("Failed Login: [src.key] [src.computer_id] [src.address] - Banned [.["reason"]]")
|
||||
message_admins("\blue Failed Login: [src.key] id:[src.computer_id] ip:[src.address] - Banned [.["reason"]]")
|
||||
return .
|
||||
|
||||
return ..() //default pager ban stuff
|
||||
|
||||
else
|
||||
|
||||
var/ckeytext = ckey(key)
|
||||
|
||||
if(!establish_db_connection())
|
||||
world.log << "Ban database connection failure. Key [ckeytext] not checked"
|
||||
diary << "Ban database connection failure. Key [ckeytext] not checked"
|
||||
return
|
||||
|
||||
var/failedcid = 1
|
||||
var/failedip = 1
|
||||
|
||||
var/ipquery = ""
|
||||
var/cidquery = ""
|
||||
if(address)
|
||||
failedip = 0
|
||||
ipquery = " OR ip = '[address]' "
|
||||
|
||||
if(computer_id)
|
||||
failedcid = 0
|
||||
cidquery = " OR computerid = '[computer_id]' "
|
||||
|
||||
var/DBQuery/query = dbcon.NewQuery("SELECT ckey, ip, computerid, a_ckey, reason, expiration_time, duration, bantime, bantype FROM erro_ban WHERE (ckey = '[ckeytext]' [ipquery] [cidquery]) AND (bantype = 'PERMABAN' OR (bantype = 'TEMPBAN' AND expiration_time > Now())) AND isnull(unbanned)")
|
||||
|
||||
query.Execute()
|
||||
while(query.NextRow())
|
||||
var/pckey = query.item[1]
|
||||
//var/pip = query.item[2]
|
||||
//var/pcid = query.item[3]
|
||||
var/ackey = query.item[4]
|
||||
var/reason = query.item[5]
|
||||
var/expiration = query.item[6]
|
||||
var/duration = query.item[7]
|
||||
var/bantime = query.item[8]
|
||||
var/bantype = query.item[9]
|
||||
|
||||
var/expires = ""
|
||||
if(text2num(duration) > 0)
|
||||
expires = " The ban is for [duration] minutes and expires on [expiration] (server time)."
|
||||
|
||||
var/desc = "\nReason: You, or another user of this computer or connection ([pckey]) is banned from playing here. The ban reason is:\n[reason]\nThis ban was applied by [ackey] on [bantime], [expires]"
|
||||
|
||||
//return list("reason"="[bantype]", "desc"="[desc]")
|
||||
return "[bantype][desc]"
|
||||
|
||||
if (failedcid)
|
||||
message_admins("[key] has logged in with a blank computer id in the ban check.")
|
||||
if (failedip)
|
||||
message_admins("[key] has logged in with a blank ip in the ban check.")
|
||||
return ..() //default pager ban stuff
|
||||
@@ -34,17 +34,17 @@
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
if("7")
|
||||
log_admin("[key_name(usr)] has spawned a nuke team.")
|
||||
if(!src.makeNukeTeam())
|
||||
if(!makeNukeTeam())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
if("8")
|
||||
log_admin("[key_name(usr)] has spawned a ninja.")
|
||||
src.makeSpaceNinja()
|
||||
makeSpaceNinja()
|
||||
if("9")
|
||||
log_admin("[key_name(usr)] has spawned aliens.")
|
||||
src.makeAliens()
|
||||
makeAliens()
|
||||
if("10")
|
||||
log_admin("[key_name(usr)] has spawned a death squad.")
|
||||
if(!src.makeDeathsquad())
|
||||
if(!makeDeathsquad())
|
||||
usr << "\red Unfortunatly there were no candidates available"
|
||||
else if(href_list["dbsearchckey"] || href_list["dbsearchadmin"])
|
||||
var/adminckey = href_list["dbsearchadmin"]
|
||||
@@ -1963,6 +1963,12 @@
|
||||
var/obj/machinery/status_display/A = M
|
||||
A.friendc = 1
|
||||
message_admins("[key_name_admin(usr)] turned all AIs into best friends.", 1)
|
||||
if("aliens")
|
||||
feedback_inc("admin_secrets_fun_used",1)
|
||||
feedback_add_details("admin_secrets_fun_used","AL")
|
||||
message_admins("[key_name_admin(usr)] has spawned aliens", 1)
|
||||
//makeAliens()
|
||||
new /datum/event/alien_infestation
|
||||
if("floorlava")
|
||||
if(floorIsLava)
|
||||
usr << "The floor is lava already."
|
||||
|
||||
@@ -17,17 +17,17 @@ client/proc/one_click_antag()
|
||||
<a href='?src=\ref[src];makeAntag=4'>Make Cult</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=5'>Make Malf AI</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=6'>Make Wizard (Requires Ghosts)</a><br>
|
||||
"}
|
||||
|
||||
/* These dont work just yet
|
||||
Ninja, aliens and deathsquad I have not looked into yet
|
||||
Nuke team is getting a null mob returned from makebody() (runtime error: null.mind. Line 272)
|
||||
|
||||
*/
|
||||
<a href='?src=\ref[src];makeAntag=7'>Make Nuke Team (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=8'>Make Space Ninja (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=9'>Make Aliens (Requires Ghosts)</a><br>
|
||||
<a href='?src=\ref[src];makeAntag=10'>Make Deathsquad (Syndicate) (Requires Ghosts)</a><br>
|
||||
"}
|
||||
*/
|
||||
|
||||
usr << browse(dat, "window=oneclickantag;size=400x400")
|
||||
return
|
||||
|
||||
@@ -217,6 +217,7 @@ client/proc/one_click_antag()
|
||||
|
||||
var/list/mob/dead/observer/candidates = list()
|
||||
var/mob/dead/observer/theghost = null
|
||||
var/list/mob/dead/observer/picked = list()
|
||||
var/time_passed = world.time
|
||||
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
@@ -245,19 +246,26 @@ client/proc/one_click_antag()
|
||||
candidates.Remove(j)
|
||||
continue
|
||||
|
||||
theghost = candidates
|
||||
theghost = j
|
||||
candidates.Remove(theghost)
|
||||
|
||||
/* Seeing if we have enough agents before we make the nuke team
|
||||
var/mob/living/carbon/human/new_character=makeBody(theghost)
|
||||
new_character.mind.make_Nuke()
|
||||
*/
|
||||
picked += theghost
|
||||
agentcount++
|
||||
break
|
||||
//This is so we don't get a nuke team with only 1 or 2 people
|
||||
if(agentcount < 3)
|
||||
return 0
|
||||
else
|
||||
for(var/mob/j in picked)
|
||||
theghost = j
|
||||
var/mob/living/carbon/human/new_character=makeBody(theghost)
|
||||
new_character.mind.make_Nuke()
|
||||
|
||||
agentcount++
|
||||
|
||||
if(agentcount < 1)
|
||||
return 0
|
||||
|
||||
var/obj/effect/landmark/nuke_spawn = locate("landmark*Nuclear-Bomb")
|
||||
var/obj/effect/landmark/closet_spawn = locate("landmark*Nuclear-Closet")
|
||||
var/obj/effect/landmark/closet_spawn = locate("landmark*Syndicate-Uplink")
|
||||
|
||||
var/nuke_code = "[rand(10000, 99999)]"
|
||||
|
||||
@@ -298,7 +306,6 @@ client/proc/one_click_antag()
|
||||
|
||||
for (var/obj/machinery/nuclearbomb/bomb in world)
|
||||
bomb.r_code = nuke_code // All the nukes are set to this code.
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
return null
|
||||
|
||||
if(IsGuestKey(key))
|
||||
alert(src,"Baystation12 doesn't allow guest accounts to play. Please go to http://www.byond.com/ and register for a key.","Guest","OK")
|
||||
alert(src,"vgstation 13 doesn't allow guest accounts to play. Please go to http://www.byond.com/ and register for a key.","Guest","OK")
|
||||
del(src)
|
||||
return
|
||||
|
||||
|
||||
@@ -41,6 +41,20 @@
|
||||
armor = list(melee = 65, bullet = 55, laser = 35,energy = 20, bomb = 30, bio = 30, rad = 30)
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
|
||||
//Paramedic EVA suit
|
||||
/obj/item/clothing/head/helmet/space/paramedic
|
||||
name = "Paramedic EVA helmet"
|
||||
desc = "A paramedic space helmet. Used in the recovery of bodies from space."
|
||||
icon_state = "paramedic-eva-helmet"
|
||||
item_state = "paramedic-eva-helmet"
|
||||
|
||||
/obj/item/clothing/suit/space/paramedic
|
||||
name = "Paramedic EVA suit"
|
||||
icon_state = "paramedic-eva"
|
||||
item_state = "paramedic-eva"
|
||||
desc = "A paramedic space suit. Used in the recovery of bodies from space."
|
||||
slowdown = 1
|
||||
|
||||
//Space santa outfit suit
|
||||
/obj/item/clothing/head/helmet/space/santahat
|
||||
name = "Santa's hat"
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
* Job related
|
||||
*/
|
||||
|
||||
//Paramedic
|
||||
/obj/item/clothing/suit/storage/paramedic
|
||||
name = "paramedic vest"
|
||||
desc = "A hazard vest used in the recovery of bodies."
|
||||
icon_state = "paramedic-vest"
|
||||
item_state = "paramedic-vest"
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
|
||||
//Botonist
|
||||
/obj/item/clothing/suit/apron
|
||||
name = "apron"
|
||||
|
||||
@@ -119,6 +119,17 @@
|
||||
color = "scrubspurple"
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
//paramedic
|
||||
/obj/item/clothing/under/rank/medical/paramedic
|
||||
desc = "It's made of a special fiber that provides minor protection against biohazards and radiation. It has a cross on the chest denoting that the wearer is trained medical personnel."
|
||||
name = "paramedic's jumpsuit"
|
||||
icon_state = "paramedic"
|
||||
item_state = "paramedic"
|
||||
color = "paramedic"
|
||||
permeability_coefficient = 0.50
|
||||
armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 10, rad = 10)
|
||||
flags = FPRINT | TABLEPASS | ONESIZEFITSALL
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -286,3 +286,34 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(host)
|
||||
host.ckey = src.ckey
|
||||
host << "<span class='info'>You are now a mouse. Try to avoid interaction with players, and do not give hints away that you are more than a simple rodent.</span>"
|
||||
|
||||
//BEGIN TELEPORT HREF CODE
|
||||
/mob/dead/observer/Topic(href, href_list)
|
||||
if(usr != src)
|
||||
return
|
||||
..()
|
||||
|
||||
if (href_list["follow"])
|
||||
var/mob/target = locate(href_list["follow"]) in mob_list
|
||||
var/mob/A = usr;
|
||||
A << "You are now following [target]"
|
||||
//var/mob/living/silicon/ai/A = locate(href_list["track2"]) in mob_list
|
||||
if(target && target != usr)
|
||||
following = target
|
||||
spawn(0)
|
||||
var/turf/pos = get_turf(A)
|
||||
while(A.loc == pos)
|
||||
|
||||
var/turf/T = get_turf(target)
|
||||
if(!T)
|
||||
break
|
||||
if(following != target)
|
||||
break
|
||||
if(!client)
|
||||
break
|
||||
A.loc = T
|
||||
pos = A.loc
|
||||
sleep(15)
|
||||
following = null
|
||||
..()
|
||||
//END TELEPORT HREF CODE
|
||||
|
||||
@@ -71,9 +71,10 @@
|
||||
message = say_quote(message)
|
||||
|
||||
rendered = "<i><span class='game say'>Hivemind, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
|
||||
|
||||
var/rendered2 = null
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/new_player))
|
||||
continue
|
||||
if (M.stat > 1)
|
||||
M.show_message(rendered, 2)
|
||||
if (M.stat > 1 && istype(M, /mob/dead/observer))
|
||||
rendered2 = "<i><span class='game say'>Hivemind, <span class='name'>[name]</span> <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
|
||||
M.show_message(rendered2, 2)
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
src.searching = 0
|
||||
src.brainmob.mind = candidate.mind
|
||||
src.brainmob.key = candidate.key
|
||||
src.brainmob.ckey = candidate.ckey
|
||||
//src.brainmob.ckey = candidate.ckey
|
||||
src.name = "positronic brain ([src.brainmob.name])"
|
||||
|
||||
src.brainmob << "<b>You are a positronic brain, brought into existence on [station_name()].</b>"
|
||||
|
||||
@@ -145,9 +145,10 @@ var/list/department_radio_keys = list(
|
||||
// Check changed so that parrots can use headsets. Other simple animals do not have ears and will cause runtimes.
|
||||
// And borgs -Sieve
|
||||
|
||||
/* /vg/ removals
|
||||
if(src.stunned > 2 || (traumatic_shock > 61 && prob(50)))
|
||||
message_mode = "" //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it
|
||||
|
||||
*/
|
||||
if (!message)
|
||||
return
|
||||
|
||||
@@ -400,12 +401,21 @@ var/list/department_radio_keys = list(
|
||||
message_a = "<i>[message_a]</i>"
|
||||
|
||||
rendered = "<span class='game say'><span class='name'>[GetVoice()]</span>[alt_name] <span class='message'>[message_a]</span></span>"
|
||||
for (var/M in heard_a)
|
||||
var/rendered2 = null
|
||||
|
||||
for (var/mob/M in heard_a)
|
||||
//BEGIN TELEPORT CHANGES
|
||||
if(!istype(M, /mob/new_player))
|
||||
if(M && M.stat == DEAD)
|
||||
rendered2 = "<span class='game say'><span class='name'>[GetVoice()]</span></span> [alt_name] <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span>"
|
||||
M:show_message(rendered2, 2)
|
||||
continue
|
||||
//END CHANGES
|
||||
if(hascall(M,"show_message"))
|
||||
var/deaf_message = ""
|
||||
var/deaf_type = 1
|
||||
if(M != src)
|
||||
deaf_message = "<span class='name'>[name]</span>[alt_name] talks but you cannot hear them."
|
||||
deaf_message = "<span class='name'>[name][alt_name]</span> talks but you cannot hear them."
|
||||
else
|
||||
deaf_message = "<span class='notice'>You cannot hear yourself!</span>"
|
||||
deaf_type = 2 // Since you should be able to hear yourself without looking
|
||||
@@ -419,15 +429,23 @@ var/list/department_radio_keys = list(
|
||||
message_b = voice_message
|
||||
else
|
||||
message_b = stars(message)
|
||||
message_b = say_quote(message_b,is_speaking_soghun,is_speaking_skrell,is_speaking_taj)
|
||||
message_b = say_quote(message_b)
|
||||
|
||||
if (italics)
|
||||
message_b = "<i>[message_b]</i>"
|
||||
|
||||
rendered = "<span class='game say'><span class='name'>[name]</span>[alt_name] <span class='message'>[message_b]</span></span>" //Voice_name isn't too useful. You'd be able to tell who was talking presumably.
|
||||
|
||||
rendered = "<span class='game say'><span class='name'>[voice_name]</span> <span class='message'>[message_b]</span></span>"
|
||||
var/rendered2 = null
|
||||
|
||||
for (var/M in heard_b)
|
||||
var/mob/MM
|
||||
if(istype(M, /mob))
|
||||
MM = M
|
||||
if(!istype(MM, /mob/new_player) && MM)
|
||||
if(MM && MM.stat == DEAD)
|
||||
rendered2 = "<span class='game say'><span class='name'>[voice_name]</span></span> <a href='byond://?src=\ref[MM];follow2=\ref[MM];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_b]</span></span>"
|
||||
MM:show_message(rendered2, 2)
|
||||
continue
|
||||
if(hascall(M,"show_message"))
|
||||
M:show_message(rendered, 2)
|
||||
M << speech_bubble
|
||||
|
||||
@@ -90,6 +90,9 @@
|
||||
if(istype(S , /mob/living/silicon/ai))
|
||||
var/renderedAI = "<i><span class='game say'>Robotic Talk, <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[src]'><span class='name'>[name]</span></a> <span class='message'>[message_a]</span></span></i>"
|
||||
S.show_message(renderedAI, 2)
|
||||
else if(istype(S , /mob/dead/observer) && S.stat == DEAD)
|
||||
var/rendered2 = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <a href='byond://?src=\ref[S];follow2=\ref[S];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
|
||||
S.show_message(rendered2, 2)
|
||||
else
|
||||
S.show_message(rendered, 2)
|
||||
|
||||
@@ -98,6 +101,9 @@
|
||||
if(istype(S , /mob/living/silicon/ai))
|
||||
var/renderedAI = "<i><span class='game say'>Robotic Talk, <a href='byond://?src=\ref[S];track2=\ref[S];track=\ref[src]'><span class='name'>[name]</span></a> <span class='message'>[message_a]</span></span></i>"
|
||||
S.show_message(renderedAI, 2)
|
||||
else if(istype(S , /mob/dead/observer) && S.stat == DEAD)
|
||||
var/rendered2 = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <a href='byond://?src=\ref[S];follow2=\ref[S];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
|
||||
S.show_message(rendered2, 2)
|
||||
else
|
||||
S.show_message(rendered, 2)
|
||||
|
||||
@@ -124,8 +130,9 @@
|
||||
|
||||
message = say_quote(message)
|
||||
|
||||
rendered = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <span class='message'>[message_a]</span></span></i>"
|
||||
rendered = null
|
||||
|
||||
for (var/mob/M in dead_mob_list)
|
||||
if(!istype(M,/mob/new_player) && !istype(M,/mob/living/carbon/brain)) //No meta-evesdropping
|
||||
rendered = "<i><span class='game say'>Robotic Talk, <span class='name'>[name]</span> <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message_a]</span></span></i>"
|
||||
M.show_message(rendered, 2)
|
||||
@@ -45,15 +45,16 @@
|
||||
alt_name = " (died as [real_name])"
|
||||
|
||||
message = src.say_quote(message)
|
||||
var/rendered = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>[name]</span>[alt_name] <span class='message'>[message]</span></span>"
|
||||
|
||||
//var/rendered = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>[name]</span>[alt_name] <span class='message'>[message]</span></span>"
|
||||
var/rendered2 = null//edited
|
||||
for(var/mob/M in player_list)
|
||||
rendered2 = "<span class='game deadsay'><span class='prefix'>DEAD:</span> <span class='name'>[name]</span>[alt_name] <a href='byond://?src=\ref[M];follow2=\ref[M];follow=\ref[src]'>(Follow)</a> <span class='message'>[message]</span></span>"//edited
|
||||
if(istype(M, /mob/new_player))
|
||||
continue
|
||||
if(M.client && M.client.holder && M.client.holder.rights & R_ADMIN && (M.client.prefs.toggles & CHAT_DEAD)) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above
|
||||
M << rendered //Admins can hear deadchat, if they choose to, no matter if they're blind/deaf or not.
|
||||
M << rendered2 //Admins can hear deadchat, if they choose to, no matter if they're blind/deaf or not.
|
||||
else if(M.stat == DEAD)
|
||||
M.show_message(rendered, 2) //Takes into account blindness and such.
|
||||
M.show_message(rendered2, 2) //Takes into account blindness and such.
|
||||
return
|
||||
|
||||
/mob/proc/say_understands(var/mob/other)
|
||||
|
||||
@@ -309,7 +309,7 @@
|
||||
/datum/organ/external/proc/update_wounds()
|
||||
for(var/datum/wound/W in wounds)
|
||||
// wounds can disappear after 10 minutes at the earliest
|
||||
if(W.damage == 0 && W.created + 10 * 10 * 60 <= world.time)
|
||||
if(W.damage == 0 && W.created + 3.25 * 10 * 60 <= world.time)
|
||||
wounds -= W
|
||||
// let the GC handle the deletion of the wound
|
||||
|
||||
@@ -648,7 +648,7 @@
|
||||
name = "head"
|
||||
icon_name = "head"
|
||||
display_name = "head"
|
||||
max_damage = 75
|
||||
max_damage = 130
|
||||
min_broken_damage = 40
|
||||
body_part = HEAD
|
||||
var/disfigured = 0
|
||||
|
||||
@@ -96,6 +96,19 @@
|
||||
for(var/mob/O in viewers(src, null))
|
||||
O.show_message("\red [user] cuts the cable.", 1)
|
||||
|
||||
var/message = "A wire has been cut"
|
||||
var/atom/A = user
|
||||
if(A)
|
||||
var/turf/Z = get_turf(A)
|
||||
var/area/my_area = get_area(Z)
|
||||
message += " in [my_area.name]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</A>)"
|
||||
message += " (<A HREF='?_src_=vars;Vars=\ref[A]'>VV</A>)"
|
||||
|
||||
var/mob/M = get(A, /mob)
|
||||
if(M)
|
||||
message += " - Cut By: [M.real_name] ([M.key]) (<A HREF='?_src_=holder;adminplayeropts=\ref[M]'>PP</A>) (<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>?</A>)"
|
||||
log_game("[M.real_name] ([M.key]) cut a wire in [my_area.name] ([T.x],[T.y],[T.z])")
|
||||
message_admins(message, 0, 1)
|
||||
del(src)
|
||||
|
||||
return // not needed, but for clarity
|
||||
|
||||
@@ -461,6 +461,8 @@ var/list/solars_list = list()
|
||||
if(src.trackrate) nexttime = world.time + 6000/trackrate
|
||||
track = text2num(href_list["track"])
|
||||
if(powernet && (track == 2))
|
||||
if(!solars_list.Find(src,1,0))
|
||||
solars_list.Add(src)
|
||||
for(var/obj/machinery/power/tracker/T in get_solars_powernet())
|
||||
if(powernet.nodes[T])
|
||||
cdir = T.sun_angle
|
||||
|
||||
@@ -72,6 +72,8 @@
|
||||
winset(user, "chemdispenser.eject", "text=\"Eject beaker\"")
|
||||
else
|
||||
winset(user, "chemdispenser.eject", "text=\"\[Insert beaker\]\"")
|
||||
|
||||
/*Old
|
||||
/obj/machinery/chem_dispenser/proc/initWindow(mob/user as mob)
|
||||
var/i = 0
|
||||
var/list/nameparams = params2list(winget(user, "chemdispenser_reagents.template_name", "pos;size;type;image;image-mode"))
|
||||
@@ -92,6 +94,35 @@
|
||||
winset(user, "chemdispenser_reagent_dispense[i]", list2params(newparams2))
|
||||
i++
|
||||
winset(user, "chemdispenser_reagents", "size=340x[8 + 40 * i]")
|
||||
*/
|
||||
|
||||
//New
|
||||
/obj/machinery/chem_dispenser/proc/initWindow(mob/user as mob)
|
||||
var/i = 0
|
||||
var/chemC = 0
|
||||
var/j = 0
|
||||
//var/selectedChemical = null
|
||||
var/list/nameparams = params2list(winget(user, "chemdispenser_reagents.template_name", "pos;size;background-color;text-color;type;"))
|
||||
for(var/re in dispensable_reagents)
|
||||
var/datum/reagent/temp = chemical_reagents_list[re]
|
||||
if(temp)
|
||||
var/list/newparams1 = nameparams.Copy()
|
||||
//var/list/newparams2 = buttonparams.Copy()
|
||||
var/posy = 8 + 40 * i
|
||||
var/posx = 16 + 176 * j
|
||||
newparams1["pos"] = text("[posx],[posy]")
|
||||
newparams1["font-size"] = "13"
|
||||
//newparams1["font-style"] = "bold"
|
||||
newparams1["parent"] = "chemdispenser_reagents"
|
||||
newparams1["text"] = temp.name //+ " " + "[chemC]"
|
||||
newparams1["command"] = text("skincmd \"chemdispenser;[temp.id]\"")
|
||||
winset(user, "chemdispenser_reagent_name[chemC]", list2params(newparams1))
|
||||
j++
|
||||
chemC = chemC + 1
|
||||
if(j>=3)
|
||||
j = 0
|
||||
i++
|
||||
winset(user, "chemdispenser_reagents", "size=340x[8 + 32 * (i-2)]")
|
||||
|
||||
/obj/machinery/chem_dispenser/SkinCmd(mob/user as mob, var/data as text)
|
||||
if(stat & (BROKEN|NOPOWER)) return
|
||||
@@ -121,7 +152,7 @@
|
||||
R.add_reagent(data, min(amount, energy * 10, space))
|
||||
energy = max(energy - min(amount, energy * 10, space) / 10, 0)
|
||||
|
||||
amount = round(amount, 10) // Chem dispenser doesnt really have that much prescion
|
||||
amount = round(amount, 5) // Chem dispenser doesnt really have that much prescion
|
||||
if (amount < 0) // Since the user can actually type the commands himself, some sanity checking
|
||||
amount = 0
|
||||
if (amount > 100)
|
||||
|
||||
@@ -966,7 +966,24 @@ datum
|
||||
O.show_message(text("\red Infused with plasma, the core begins to quiver and grow, and soon a new baby slime emerges from it!"), 1)
|
||||
var/mob/living/carbon/slime/S = new /mob/living/carbon/slime
|
||||
S.loc = get_turf_loc(holder.my_atom)
|
||||
var/message = "A grey slime reaction has occured"
|
||||
|
||||
var/atom/A = holder.my_atom
|
||||
if(A)
|
||||
var/turf/T = get_turf(A)
|
||||
var/area/my_area = get_area(T)
|
||||
message += " in [my_area.name]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</A>)"
|
||||
message += " (<A HREF='?_src_=vars;Vars=\ref[A]'>VV</A>)"
|
||||
|
||||
var/mob/M = get(A, /mob)
|
||||
if(M)
|
||||
message += " - Carried By: [M.real_name] ([M.key]) (<A HREF='?_src_=holder;adminplayeropts=\ref[M]'>PP</A>) (<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>?</A>)"
|
||||
else
|
||||
message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]"
|
||||
else
|
||||
message += "."
|
||||
|
||||
message_admins(message, 0, 1)
|
||||
|
||||
slimemonkey
|
||||
name = "Slime Monkey"
|
||||
@@ -1018,6 +1035,10 @@ datum
|
||||
required_container = /obj/item/slime_extract/gold
|
||||
required_other = 1
|
||||
on_reaction(var/datum/reagents/holder)
|
||||
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
|
||||
for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
|
||||
O.show_message(text("\red The slime extract begins to vibrate violently !"), 1)
|
||||
sleep(50)
|
||||
|
||||
var/blocked = list(/mob/living/simple_animal/hostile,
|
||||
/mob/living/simple_animal/hostile/pirate,
|
||||
@@ -1035,6 +1056,26 @@ datum
|
||||
)//exclusion list for things you don't want the reaction to create.
|
||||
var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs
|
||||
|
||||
var/message = "A gold slime reaction has occured"
|
||||
|
||||
var/atom/A = holder.my_atom
|
||||
if(A)
|
||||
var/turf/T = get_turf(A)
|
||||
var/area/my_area = get_area(T)
|
||||
message += " in [my_area.name]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[T.x];Y=[T.y];Z=[T.z]'>JMP</A>)"
|
||||
message += " (<A HREF='?_src_=vars;Vars=\ref[A]'>VV</A>)"
|
||||
|
||||
var/mob/M = get(A, /mob)
|
||||
if(M)
|
||||
message += " - Carried By: [M.real_name] ([M.key]) (<A HREF='?_src_=holder;adminplayeropts=\ref[M]'>PP</A>) (<A HREF='?_src_=holder;adminmoreinfo=\ref[M]'>?</A>)"
|
||||
log_game("A gold slime reaction has occured in [my_area.name] ([T.x],[T.y],[T.z]) - Carried by [M.real_name] ([M.key])")
|
||||
else
|
||||
message += " - Last Fingerprint: [(A.fingerprintslast ? A.fingerprintslast : "N/A")]"
|
||||
log_game("A gold slime reaction has occured in [my_area.name] ([T.x],[T.y],[T.z]) - last fingerprint [(A.fingerprintslast ? A.fingerprintslast : "N/A")]")
|
||||
else
|
||||
message += "."
|
||||
|
||||
message_admins(message, 0, 1)
|
||||
playsound(get_turf_loc(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
|
||||
|
||||
for(var/mob/living/carbon/human/M in viewers(get_turf_loc(holder.my_atom), null))
|
||||
|
||||
@@ -156,9 +156,9 @@
|
||||
|
||||
proc/explode()
|
||||
if (reagents.total_volume > 500)
|
||||
explosion(src.loc,1,2,4)
|
||||
explosion(src.loc,-1,1,4)
|
||||
else if (reagents.total_volume > 100)
|
||||
explosion(src.loc,0,1,3)
|
||||
explosion(src.loc,-1,1,3)
|
||||
else
|
||||
explosion(src.loc,-1,1,2)
|
||||
if(src)
|
||||
@@ -214,4 +214,4 @@
|
||||
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("virusfood", 1000)
|
||||
reagents.add_reagent("virusfood", 1000)
|
||||
|
||||
@@ -155,9 +155,9 @@
|
||||
|
||||
|
||||
/world/Reboot(var/reason)
|
||||
/*spawn(0)
|
||||
world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg')) // random end sounds!! - LastyBatsy
|
||||
*/
|
||||
spawn(0)
|
||||
world << sound(pick('sound/AI/newroundsexy.ogg','sound/misc/apcdestroyed.ogg','sound/misc/bangindonk.ogg','slugmissioncomplete.ogg')) // random end sounds!! - LastyBatsy
|
||||
|
||||
for(var/client/C in clients)
|
||||
if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite
|
||||
C << link("byond://[config.server]")
|
||||
@@ -307,6 +307,7 @@ proc/setup_database_connection()
|
||||
if ( . )
|
||||
failed_db_connections = 0 //If this connection succeeded, reset the failed connections counter.
|
||||
else
|
||||
world.log << "Error: [dbcon.ErrorMsg()]"
|
||||
failed_db_connections++ //If it failed, increase the failed connections counter.
|
||||
|
||||
return .
|
||||
@@ -316,6 +317,12 @@ proc/establish_db_connection()
|
||||
if(failed_db_connections > FAILED_DB_CONNECTION_CUTOFF)
|
||||
return 0
|
||||
|
||||
var/DBQuery/q
|
||||
if(dbcon)
|
||||
q = dbcon.NewQuery("show global variables like 'wait_timeout'")
|
||||
q.Execute()
|
||||
if(q.ErrorMsg())
|
||||
dbcon.Disconnect()
|
||||
if(!dbcon || !dbcon.IsConnected())
|
||||
return setup_database_connection()
|
||||
else
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
botanistpower - Tajaran
|
||||
bountylord13 - Soghun
|
||||
bowlsoldier - Tajaran
|
||||
bluefishie - Skrell
|
||||
cubejackal - Soghun
|
||||
danny220 - Skrell
|
||||
danny220 - Soghun
|
||||
danny220 - Tajaran
|
||||
darkwingstalker - Skrell
|
||||
deciusreln - Skrell
|
||||
densane - Skrell
|
||||
dopeghoti - Tajaran
|
||||
duntadaman - Skrell
|
||||
fenrisian - Tajaran
|
||||
firefishie - Skrell
|
||||
focksinabocks - Skrell
|
||||
focksinabocks - Tajaran
|
||||
foolamancer - Skrell
|
||||
forsamori - Tajaran
|
||||
forsamori - Soghun
|
||||
galenus - Soghun
|
||||
galenus - Skrell
|
||||
galenus - Tajaran
|
||||
kersh - Skrell
|
||||
jadepython - Skrell
|
||||
jadepython - Soghun
|
||||
jadepython - Tajaran
|
||||
masterofstuff - Skrell
|
||||
masterofstuff - Soghun
|
||||
mangled - Skrell
|
||||
mcgulliver - Skrell
|
||||
nerezza - Skrell
|
||||
nerezza - Soghun
|
||||
nerezza - Tajaran
|
||||
nestromo - Soghun
|
||||
philphil123 - Soghun
|
||||
quilan - Tajaran
|
||||
searif - Soghun
|
||||
searif - Tajaran
|
||||
searif - Skrell
|
||||
serithi - Skrell
|
||||
serithi - Soghun
|
||||
serithi - Tajaran
|
||||
sniperyeti - Skrell
|
||||
spaceman96 - Tajaran
|
||||
spaceman96 - Soghun
|
||||
spaceman96 - Skrell
|
||||
sparklysheep - Skrell
|
||||
succubusy - Skrell
|
||||
teddybehr - Soghun
|
||||
whitellama - Skrell
|
||||
watermelonstorm - Tajaran
|
||||
yoshax - Tajaran
|
||||
|
Before Width: | Height: | Size: 662 KiB After Width: | Height: | Size: 793 KiB |
|
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 140 KiB After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 269 KiB After Width: | Height: | Size: 274 KiB |
|
Before Width: | Height: | Size: 232 KiB After Width: | Height: | Size: 234 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
@@ -77,7 +77,7 @@ macro "macro"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "CTRL+4"
|
||||
command = "a-intent hurt"
|
||||
command = "a-intent harm"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "CTRL+A+REP"
|
||||
@@ -135,10 +135,6 @@ macro "macro"
|
||||
name = "CTRL+SHIFT+F1+REP"
|
||||
command = ".options"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F2"
|
||||
command = "ooc"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F2+REP"
|
||||
command = ".screenshot auto"
|
||||
@@ -147,17 +143,9 @@ macro "macro"
|
||||
name = "SHIFT+F2+REP"
|
||||
command = ".screenshot"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F3"
|
||||
command = "say"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F4"
|
||||
command = "me"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F5"
|
||||
command = "asay"
|
||||
command = "Aghost"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F6"
|
||||
@@ -267,11 +255,11 @@ macro "hotkeymode"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "4"
|
||||
command = "a-intent hurt"
|
||||
command = "a-intent harm"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "CTRL+4"
|
||||
command = "a-intent hurt"
|
||||
command = "a-intent harm"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "A+REP"
|
||||
@@ -381,10 +369,6 @@ macro "hotkeymode"
|
||||
name = "CTRL+SHIFT+F1+REP"
|
||||
command = ".options"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F2"
|
||||
command = "ooc"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F2+REP"
|
||||
command = ".screenshot auto"
|
||||
@@ -393,17 +377,9 @@ macro "hotkeymode"
|
||||
name = "SHIFT+F2+REP"
|
||||
command = ".screenshot"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F3"
|
||||
command = "say"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F4"
|
||||
command = "me"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F5"
|
||||
command = "asay"
|
||||
command = "Aghost"
|
||||
is-disabled = false
|
||||
elem
|
||||
name = "F6"
|
||||
@@ -750,7 +726,7 @@ window "Telecomms IDE"
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "Apply"
|
||||
text = "Save"
|
||||
image = ""
|
||||
command = "tcssave"
|
||||
is-flat = false
|
||||
@@ -787,14 +763,14 @@ window "chemdispenser"
|
||||
elem "chemdispenser"
|
||||
type = MAIN
|
||||
pos = 281,0
|
||||
size = 340x480
|
||||
size = 625x412
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
background-color = #414141
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
@@ -809,7 +785,7 @@ window "chemdispenser"
|
||||
statusbar = false
|
||||
can-close = true
|
||||
can-minimize = true
|
||||
can-resize = true
|
||||
can-resize = false
|
||||
is-pane = false
|
||||
is-minimized = false
|
||||
is-maximized = false
|
||||
@@ -823,17 +799,73 @@ window "chemdispenser"
|
||||
macro = ""
|
||||
menu = ""
|
||||
on-close = ""
|
||||
elem "eject"
|
||||
type = BUTTON
|
||||
pos = 328,373
|
||||
size = 296x39
|
||||
anchor1 = 10,91
|
||||
anchor2 = 100,100
|
||||
font-family = ""
|
||||
font-size = 13
|
||||
font-style = ""
|
||||
text-color = #808080
|
||||
background-color = #414141
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[Insert beaker]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;eject\""
|
||||
is-flat = true
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amountc"
|
||||
type = BUTTON
|
||||
pos = 0,373
|
||||
size = 280x39
|
||||
anchor1 = 0,91
|
||||
anchor2 = 0,100
|
||||
font-family = ""
|
||||
font-size = 13
|
||||
font-style = ""
|
||||
text-color = #808080
|
||||
background-color = #414141
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "Change Amount"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amountc\""
|
||||
is-flat = true
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "energy"
|
||||
type = LABEL
|
||||
pos = 8,24
|
||||
size = 56x16
|
||||
anchor1 = none
|
||||
pos = 288,0
|
||||
size = 264x32
|
||||
anchor1 = 100,0
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-size = 13
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
text-color = #808080
|
||||
background-color = #414141
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
@@ -849,157 +881,17 @@ window "chemdispenser"
|
||||
keep-aspect = false
|
||||
align = center
|
||||
text-wrap = false
|
||||
elem "eject"
|
||||
type = BUTTON
|
||||
pos = 264,4
|
||||
size = 72x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[Insert beaker]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;eject\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amountc"
|
||||
type = BUTTON
|
||||
pos = 208,4
|
||||
size = 48x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[Other]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amountc\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amount3"
|
||||
type = BUTTON
|
||||
pos = 176,4
|
||||
size = 24x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[30]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amount30\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amount2"
|
||||
type = BUTTON
|
||||
pos = 144,4
|
||||
size = 24x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[20]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amount20\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amount1"
|
||||
type = BUTTON
|
||||
pos = 112,4
|
||||
size = 24x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "[10]"
|
||||
image = ""
|
||||
command = "skincmd \"chemdispenser;amount10\""
|
||||
is-flat = false
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "amount"
|
||||
type = LABEL
|
||||
pos = 4,4
|
||||
size = 100x20
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
pos = 0,0
|
||||
size = 288x34
|
||||
anchor1 = 0,0
|
||||
anchor2 = 29,7
|
||||
font-family = ""
|
||||
font-size = 12
|
||||
font-size = 13
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
text-color = #808080
|
||||
background-color = #414141
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
@@ -1017,15 +909,15 @@ window "chemdispenser"
|
||||
text-wrap = false
|
||||
elem "child1"
|
||||
type = CHILD
|
||||
pos = 0,40
|
||||
size = 340x440
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
pos = 0,32
|
||||
size = 624x333
|
||||
anchor1 = 0,8
|
||||
anchor2 = 100,87
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
background-color = #408080
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
@@ -1046,14 +938,14 @@ window "chemdispenser_reagents"
|
||||
elem "chemdispenser_reagents"
|
||||
type = MAIN
|
||||
pos = 281,0
|
||||
size = 340x448
|
||||
size = 652x309
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
background-color = #414141
|
||||
is-visible = true
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
@@ -1082,17 +974,17 @@ window "chemdispenser_reagents"
|
||||
macro = ""
|
||||
menu = ""
|
||||
on-close = ""
|
||||
elem "template_dispense"
|
||||
elem "template_name"
|
||||
type = BUTTON
|
||||
pos = 256,8
|
||||
size = 64x32
|
||||
pos = 8,8
|
||||
size = 144x32
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-size = 13
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
background-color = #808080
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
@@ -1102,40 +994,14 @@ window "chemdispenser_reagents"
|
||||
right-click = false
|
||||
saved-params = "is-checked"
|
||||
on-size = ""
|
||||
text = "Dispense"
|
||||
image = 'icons\\dispensebutton_bg.png'
|
||||
text = "Chloral Hydrate"
|
||||
image = ""
|
||||
command = ""
|
||||
is-flat = true
|
||||
stretch = false
|
||||
is-checked = false
|
||||
group = ""
|
||||
button-type = pushbutton
|
||||
elem "template_name"
|
||||
type = LABEL
|
||||
pos = 18,8
|
||||
size = 230x32
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 15
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = ""
|
||||
on-size = ""
|
||||
text = "Chloral Hydrate"
|
||||
image = 'icons\\reagentname_bg.png'
|
||||
image-mode = stretch
|
||||
keep-aspect = false
|
||||
align = center
|
||||
text-wrap = false
|
||||
button-type = pushbox
|
||||
|
||||
window "mainwindow"
|
||||
elem "mainwindow"
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
#Maps should be 255x255 or smaller and be bounded. Falling off the edge of the map will result in undefined behavior.
|
||||
#SPECIFYING AN INVALID MAP WILL RESULT IN RUNTIMES ON GAME START
|
||||
|
||||
maps/RandomZLevels/example.dmm
|
||||
maps/RandomZLevels/blackmarketpackers.dmm
|
||||
#maps/RandomZLevels/example.dmm
|
||||
#aps/RandomZLevels/blackmarketpackers.dmm
|
||||
#maps/RandomZLevels/stationCollision.dmm
|
||||
#maps/RandomZLevels/spacebattle.dmm
|
||||
maps/RandomZLevels/beach.dmm
|
||||
#maps/RandomZLevels/beach.dmm
|
||||
#maps/RandomZLevels/Academy.dmm
|
||||
#maps/RandomZLevels/wildwest.dmm
|
||||
#maps/RandomZLevels/challenge.dmm
|
||||
maps/RandomZLevels/listeningpost.dmm
|
||||
#maps/RandomZLevels/listeningpost.dmm
|
||||
#maps/RandomZLevels/zresearchlabs.dmm
|
||||
maps/RandomZLevels/jungle.dmm
|
||||
maps/RandomZLevels/arcticwaste.dmm
|
||||
#maps/RandomZLevels/jungle.dmm
|
||||
#maps/RandomZLevels/arcticwaste.dmm
|
||||