From aa68b2e160dbd7d43115a666f9cb2c3a8ce1f483 Mon Sep 17 00:00:00 2001 From: Markolie Date: Sat, 6 Dec 2014 01:26:59 +0100 Subject: [PATCH 1/5] AI/Cyborg HUD fixes, lets Vox's pick name when spawning, fixes Beepsky's/ED-209's ID'ing issue --- COPYING | 4 +- code/_onclick/cyborg.dm | 8 + code/_onclick/hud/_defines.dm | 1 + code/_onclick/hud/ai.dm | 6 +- code/_onclick/hud/robot.dm | 9 + code/_onclick/hud/screen_objects.dm | 7 +- code/defines/procs/hud.dm | 82 + code/game/machinery/bots/medbot.dm | 5 +- code/game/machinery/bots/secbot.dm | 8 +- code/game/machinery/turrets.dm | 2 +- code/global.dm | 2 + code/modules/admin/topic.dm | 3 - code/modules/clothing/glasses/hud.dm | 18 +- code/modules/customitems/item_spawning.dm | 2 +- .../mob/living/carbon/human/examine.dm | 27 +- code/modules/mob/living/carbon/human/human.dm | 2 +- code/modules/mob/living/carbon/metroid/hud.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 19 +- code/modules/mob/living/silicon/ai/life.dm | 20 +- code/modules/mob/living/silicon/pai/hud.dm | 110 - code/modules/mob/living/silicon/pai/life.dm | 4 +- code/modules/mob/living/silicon/robot/life.dm | 13 +- .../modules/mob/living/silicon/robot/robot.dm | 19 +- code/modules/mob/living/silicon/silicon.dm | 17 + baystation12.dme => paradise.dme | 3280 ++++++++--------- baystation12.otr => paradise.otr | 0 26 files changed, 1810 insertions(+), 1860 deletions(-) create mode 100644 code/defines/procs/hud.dm delete mode 100644 code/modules/mob/living/silicon/pai/hud.dm rename baystation12.dme => paradise.dme (98%) rename baystation12.otr => paradise.otr (100%) diff --git a/COPYING b/COPYING index 5005fcd90f0..5c2d485924d 100644 --- a/COPYING +++ b/COPYING @@ -1,5 +1,5 @@ -Baystation12 -Copyright (C) 2010-2013 Baystation12 and tgstation13. +Paradise +Copyright (C) 2010-2014 Paradise, Baystation12 and tgstation13. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/code/_onclick/cyborg.dm b/code/_onclick/cyborg.dm index 1636a940c04..18666b56217 100644 --- a/code/_onclick/cyborg.dm +++ b/code/_onclick/cyborg.dm @@ -40,6 +40,14 @@ face_atom(A) // change direction to face what you clicked on + if(aiCamera.in_camera_mode) + aiCamera.camera_mode_off() + if(is_component_functioning("camera")) + aiCamera.captureimage(A, usr) + else + src << "Your camera isn't functional." + return + /* cyborg restrained() currently does nothing if(restrained()) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 6d0cb0a80c5..464593bbd47 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -60,6 +60,7 @@ #define ui_alien_head "4:12,1:5" //aliens #define ui_alien_oclothing "5:14,1:5" //aliens +#define ui_borg_sensor "5:16,1:5" //borgs #define ui_inv1 "6:16,1:5" //borgs #define ui_inv2 "7:16,1:5" //borgs #define ui_inv3 "8:16,1:5" //borgs diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 52832285b4c..b528832c573 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -132,7 +132,7 @@ //Medical/Security sensors using = new /obj/screen() - using.name = "Toggle Sensors" + using.name = "Set Sensor Augmentation" using.icon = 'icons/mob/screen_ai.dmi' using.icon_state = "ai_sensor" using.screen_loc = ui_ai_sensor @@ -140,8 +140,4 @@ adding += using mymob.client.screen += adding + other - return - - mymob.client.screen += adding + other - return \ No newline at end of file diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 1ec46cea82b..1495714e51c 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -50,6 +50,15 @@ //End of module select +//Sec/Med HUDs + using = new /obj/screen() + using.name = "Toggle Sensor Augmentation" + using.icon = 'icons/mob/screen_ai.dmi' + using.icon_state = "ai_sensor" + using.screen_loc = ui_borg_sensor + using.layer = 20 + adding += using + //Intent using = new /obj/screen() using.name = "act_intent" diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index c2c307e70f8..b31ef842b4f 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -406,6 +406,11 @@ R.uneq_active() R.hud_used.update_robot_modules_display() + if("Toggle Sensor Augmentation") + if(isrobot(usr)) + var/mob/living/silicon/robot/R = usr + R.control_hud() + if("module1") if(istype(usr, /mob/living/silicon/robot)) usr:toggle_module(1) @@ -549,7 +554,7 @@ var/mob/living/silicon/ai/AI = usr AI.aiCamera.viewpictures() - if("Toggle Sensors") + if("Set Sensor Augmentation") if(isAI(usr)) var/mob/living/silicon/ai/AI = usr AI.control_hud() diff --git a/code/defines/procs/hud.dm b/code/defines/procs/hud.dm new file mode 100644 index 00000000000..c225a896cf5 --- /dev/null +++ b/code/defines/procs/hud.dm @@ -0,0 +1,82 @@ +/* Using the HUD procs is simple. Call these procs in the life.dm of the intended mob. +Use the regular_hud_updates() proc before process_med_hud(mob) or process_sec_hud(mob) so +the HUD updates properly! */ + +//Medical HUD outputs. Called by the Life() proc of the mob using it, usually. +proc/process_med_hud(var/mob/M, var/local_scanner, var/mob/Alt) + if(!can_process_hud(M)) + return + + var/datum/arranged_hud_process/P = arrange_hud_process(M, Alt, med_hud_users) + for(var/mob/living/carbon/human/patient in P.Mob.in_view(P.Turf)) + if(P.Mob.see_invisible < patient.invisibility) + continue + + if(!local_scanner) + if(istype(patient.w_uniform, /obj/item/clothing/under)) + var/obj/item/clothing/under/U = patient.w_uniform + if(U.sensor_mode < 2) + continue + else + continue + + P.Client.images += patient.hud_list[HEALTH_HUD] + if(local_scanner) + P.Client.images += patient.hud_list[STATUS_HUD] + +//Security HUDs. Pass a value for the second argument to enable implant viewing or other special features. +proc/process_sec_hud(var/mob/M, var/advanced_mode, var/mob/Alt) + if(!can_process_hud(M)) + return + var/datum/arranged_hud_process/P = arrange_hud_process(M, Alt, sec_hud_users) + for(var/mob/living/carbon/human/perp in P.Mob.in_view(P.Turf)) + if(P.Mob.see_invisible < perp.invisibility) + continue + + P.Client.images += perp.hud_list[ID_HUD] + if(advanced_mode) + P.Client.images += perp.hud_list[WANTED_HUD] + P.Client.images += perp.hud_list[IMPTRACK_HUD] + P.Client.images += perp.hud_list[IMPLOYAL_HUD] + P.Client.images += perp.hud_list[IMPCHEM_HUD] + +datum/arranged_hud_process + var/client/Client + var/mob/Mob + var/turf/Turf + +proc/arrange_hud_process(var/mob/M, var/mob/Alt, var/list/hud_list) + hud_list |= M + var/datum/arranged_hud_process/P = new + P.Client = M.client + P.Mob = Alt ? Alt : M + P.Turf = get_turf(P.Mob) + return P + +proc/can_process_hud(var/mob/M) + if(!M) + return 0 + if(!M.client) + return 0 + if(M.stat != CONSCIOUS) + return 0 + return 1 + +//Deletes the current HUD images so they can be refreshed with new ones. +mob/proc/regular_hud_updates() //Used in the life.dm of mobs that can use HUDs. + if(client) + for(var/image/hud in client.images) + if(copytext(hud.icon_state,1,4) == "hud") + client.images -= hud + med_hud_users -= src + sec_hud_users -= src + +mob/proc/in_view(var/turf/T) + return view(T) + +/mob/aiEye/in_view(var/turf/T) + var/list/viewed = new + for(var/mob/living/carbon/human/H in mob_list) + if(get_dist(H, T) <= 7) + viewed += H + return viewed diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index fc32f40e931..19a89339c62 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -602,6 +602,5 @@ if((robot.z == src.z) && !robot.blinded) if((skin == "bezerk") && (!("syndicate" in robot.faction))) continue - for(var/obj/I in robot.contents) - if(istype(I, /obj/item/borg/sight/hud/med)) - robot << "\icon[I] Medical emergency! [crit_patient ? "[crit_patient]" : "A patient"] is in critical condition at [location]!" \ No newline at end of file + if(robot.sensor_mode == 2) + robot << "Medical emergency! [crit_patient ? "[crit_patient]" : "A patient"] is in critical condition at [location]!" \ No newline at end of file diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index bd61055fcf0..995f0a17378 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -264,7 +264,7 @@ Auto Patrol: []"}, playsound(loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2) target.visible_message("[src] is trying to put handcuffs on [target]!",\ "[src] is trying to put handcuffs on [target]!") - spawn(80) + spawn(60) if( !Adjacent(target) || !isturf(target.loc) ) //if he's in a closet or not adjacent, we cancel cuffing. return if(!target.handcuffed) @@ -483,7 +483,5 @@ Auto Patrol: []"}, if((human.z == src.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/security) || istype(human.glasses, /obj/item/clothing/glasses/sunglasses/sechud) && !human.blinded) human << "\icon[human.glasses] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] threat [target] in [location]" for(var/mob/living/silicon/robot in world) - if((robot.z == src.z) && !robot.blinded) - for(var/obj/I in robot.contents) - if(istype(I, /obj/item/borg/sight/hud/sec)) - robot << "\icon[I] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] threat [target] in [location]" \ No newline at end of file + if((robot.z == src.z) && !robot.blinded && robot.sensor_mode == 1) + robot << "[src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] threat [target] in [location]" \ No newline at end of file diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 4b4fa66350f..7bfab1eddec 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -398,7 +398,7 @@ //user << browse(t, "window=turretid;size=500x250") //onclose(user, "turretid") - var/datum/browser/popup = new(user, "turretid", "Turret Control Panel ([area.name])") + var/datum/browser/popup = new(user, "turretid", "Turret Control Panel ([area.name])", 500, 250) popup.set_content(t) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() diff --git a/code/global.dm b/code/global.dm index 7f4e9487828..3818db51cc1 100644 --- a/code/global.dm +++ b/code/global.dm @@ -12,6 +12,8 @@ var/global/list/machines = list() var/global/list/processing_objects = list() var/global/list/active_diseases = list() var/global/list/events = list() +var/global/list/med_hud_users = list() +var/global/list/sec_hud_users = list() //items that ask to be called every cycle var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 1ae25534cd8..004e572ddf5 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1618,9 +1618,6 @@ var/obj/pageobj = B.contents[page] data += "Page [page] - [pageobj.name]
" - world << data - world << "Sent by: [usr]" - usr << browse(data, "window=[B.name]") else usr << "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]" diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 1382b25ef07..09f5db93afe 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -28,24 +28,10 @@ darkness_view = 8 /obj/item/clothing/glasses/hud/health/process_hud(var/mob/M) - if(!M) return - if(!M.client) return - var/client/C = M.client - for(var/mob/living/carbon/human/patient in view(get_turf(M))) - if(M.see_invisible < patient.invisibility) - continue - C.images += patient.hud_list[HEALTH_HUD] - C.images += patient.hud_list[STATUS_HUD] + process_med_hud(M,1) /obj/item/clothing/glasses/hud/health_advanced/process_hud(var/mob/M) - if(!M) return - if(!M.client) return - var/client/C = M.client - for(var/mob/living/carbon/human/patient in view(get_turf(M))) - if(M.see_invisible < patient.invisibility) - continue - C.images += patient.hud_list[HEALTH_HUD] - C.images += patient.hud_list[STATUS_HUD] + process_sec_hud(M,1) /obj/item/clothing/glasses/hud/security diff --git a/code/modules/customitems/item_spawning.dm b/code/modules/customitems/item_spawning.dm index 070d89ffa9d..8eaf1c3ee7b 100644 --- a/code/modules/customitems/item_spawning.dm +++ b/code/modules/customitems/item_spawning.dm @@ -8,7 +8,7 @@ if (M.internals) M.internals.icon_state = "internal1" - M.generate_name() + //M.generate_name() if( M.species.name=="Tajaran" || M.species.name=="Unathi" ) if(M.mind.assigned_role == "Cyborg" || M.mind.assigned_role == "Clown") diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index d4bd758201d..3f8953c397a 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -474,30 +474,15 @@ return istype(H.glasses, /obj/item/clothing/glasses/hud/health) || istype(H.glasses, /obj/item/clothing/glasses/hud/health_advanced) else return 0 - else if(istype(M, /mob/living/silicon/robot)) - var/mob/living/silicon/robot/R = M + else if(istype(M, /mob/living/silicon)) + var/mob/living/silicon/R = M switch(hudtype) if("security") - for(var/obj/I in R.contents) - if(istype(I, /obj/item/borg/sight/hud/sec)) - return 1 + if(R.sensor_mode == 1) + return 1 if("medical") - for(var/obj/I in R.contents) - if(istype(I, /obj/item/borg/sight/hud/med)) - return 1 - else - return 0 - else if(istype(M, /mob/living/silicon/ai)) - var/mob/living/silicon/ai/A = M - switch(hudtype) - if("security") - for(var/obj/I in A.contents) - if(istype(I, /obj/item/borg/sight/hud/sec)) - return 1 - if("medical") - for(var/obj/I in A.contents) - if(istype(I, /obj/item/borg/sight/hud/med)) - return 1 + if(R.sensor_mode == 2) + return 1 else return 0 else diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 250e17f4101..904cc91cdc9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1555,7 +1555,7 @@ //Check for ID var/obj/item/weapon/card/id/idcard = get_idcard() - if(judgebot.idcheck && !idcard && name=="Unknown") + if(judgebot.idcheck && !idcard) threatcount += 4 //Check for weapons diff --git a/code/modules/mob/living/carbon/metroid/hud.dm b/code/modules/mob/living/carbon/metroid/hud.dm index cfaa7f4f169..c5282b9a839 100644 --- a/code/modules/mob/living/carbon/metroid/hud.dm +++ b/code/modules/mob/living/carbon/metroid/hud.dm @@ -1,2 +1,2 @@ -/mob/living/carbon/slime/proc/regular_hud_updates() +/mob/living/carbon/slime/regular_hud_updates() return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 08cca9e9c04..47c5f3c496c 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -830,23 +830,10 @@ var/list/ai_list = list() lightNearbyCamera() /mob/living/silicon/ai/proc/control_hud() - set name = "Toggle Sensors" - set desc = "Toggles your sensors to display security records, medical records or nothing." + set name = "Set Sensor Augmentation" + set desc = "Augment visual feed with internal sensor overlays." set category = "AI Commands" - - if(stat != 0) - return - - var/hud = input("Please select a sensor module!", "Toggle Sensors", "None", null) in list("None","Security","Medical") - for(var/obj/item/borg/sight/hud/H in contents) - del(H) - switch(hud) - if("Security") - sechud = new/obj/item/borg/sight/hud/sec(src) - if("Medical") - healthhud = new/obj/item/borg/sight/hud/med(src) - else - return + toggle_sensor_mode() // Handled camera lighting, when toggled. // It will get the nearest camera from the eyeobj, lighting it. diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index bd54abad2c4..a4a0d5bdc28 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -1,7 +1,4 @@ /mob/living/silicon/ai/Life() - if(client) - handle_regular_hud_updates() - if (src.stat == 2) return else //I'm not removing that shitton of tabs, unneeded as they are. -- Urist @@ -176,6 +173,13 @@ sleep(50) theAPC = null + regular_hud_updates() + switch(src.sensor_mode) + if (SEC_HUD) + process_sec_hud(src,1,src.eyeobj) + if (MED_HUD) + process_med_hud(src,1,src.eyeobj) + /mob/living/silicon/ai/updatehealth() if(status_flags & GODMODE) health = 100 @@ -184,12 +188,4 @@ if(fire_res_on_core) health = 100 - getOxyLoss() - getToxLoss() - getBruteLoss() else - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - -/mob/living/silicon/ai/proc/handle_regular_hud_updates() - for(var/image/hud in client.images) //COPIED FROM the human handle_regular_hud_updates() proc - if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe - client.images.Remove(hud) - - var/obj/item/borg/sight/hud/hud = (locate(/obj/item/borg/sight/hud) in src) - if(hud && hud.hud) hud.hud.process_hud(src) \ No newline at end of file + health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/hud.dm b/code/modules/mob/living/silicon/pai/hud.dm deleted file mode 100644 index 8aecc924366..00000000000 --- a/code/modules/mob/living/silicon/pai/hud.dm +++ /dev/null @@ -1,110 +0,0 @@ -/mob/living/silicon/pai/proc/regular_hud_updates() - if(client) - for(var/image/hud in client.images) - if(copytext(hud.icon_state,1,4) == "hud") - client.images -= hud - -/mob/living/silicon/pai/proc/securityHUD() - if(client) - var/image/holder - var/turf/T = get_turf_or_move(src.loc) - for(var/mob/living/carbon/human/perp in view(T)) - if(src.see_invisible < perp.invisibility) - continue - var/perpname = "wot" - holder = perp.hud_list[ID_HUD] - if(perp.wear_id) - var/obj/item/weapon/card/id/I = perp.wear_id.GetID() - if(I) - perpname = I.registered_name - holder.icon_state = "hud[ckey(perp:wear_id:GetJobName())]" - client.images += holder - else - perpname = perp.name - holder.icon_state = "hudunknown" - client.images += holder - else - holder.icon_state = "hudunknown" - client.images += holder - - for(var/datum/data/record/E in data_core.general) - if(E.fields["name"] == perpname) - holder = perp.hud_list[WANTED_HUD] - for(var/datum/data/record/R in data_core.security) - if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "*Arrest*")) - holder.icon_state = "hudwanted" - client.images += holder - break - else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Incarcerated")) - holder.icon_state = "hudprisoner" - client.images += holder - break - else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Parolled")) - holder.icon_state = "hudparolled" - client.images += holder - break - else if((R.fields["id"] == E.fields["id"]) && (R.fields["criminal"] == "Released")) - holder.icon_state = "hudreleased" - client.images += holder - break - -/mob/living/silicon/pai/proc/medicalHUD() - if(client) - var/image/holder - var/turf/T = get_turf_or_move(src.loc) - for(var/mob/living/carbon/human/patient in view(T)) - if(src.see_invisible < patient.invisibility) - continue - var/foundVirus = 0 - - for (var/ID in patient.virus2) - if (ID in virusDB) - foundVirus = 1 - break - - holder = patient.hud_list[HEALTH_HUD] - if(patient.stat == 2) - holder.icon_state = "hudhealth-100" - client.images += holder - else - holder.icon_state = "hud[RoundHealth(patient.health)]" - client.images += holder - - holder = patient.hud_list[STATUS_HUD] - if(patient.stat == 2) - holder.icon_state = "huddead" - else if(patient.status_flags & XENO_HOST) - holder.icon_state = "hudxeno" - else if(foundVirus) - holder.icon_state = "hudill" - else if(patient.has_brain_worms()) - var/mob/living/simple_animal/borer/B = patient.has_brain_worms() - if(B.controlling) - holder.icon_state = "hudbrainworm" - else - holder.icon_state = "hudhealthy" - else - holder.icon_state = "hudhealthy" - client.images += holder - -/mob/living/silicon/pai/proc/RoundHealth(health) - switch(health) - if(100 to INFINITY) - return "health100" - if(70 to 100) - return "health80" - if(50 to 70) - return "health60" - if(30 to 50) - return "health40" - if(20 to 30) - return "health25" - if(5 to 15) - return "health10" - if(1 to 5) - return "health1" - if(-99 to 0) - return "health0" - else - return "health-100" - return "0" \ No newline at end of file diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index cebdf2a5359..423287f60c1 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -10,9 +10,9 @@ regular_hud_updates() if(src.secHUD == 1) - src.securityHUD() + process_sec_hud(src, 1) if(src.medHUD == 1) - src.medicalHUD() + process_med_hud(src, 1) if(silence_time) if(world.timeofday >= silence_time) silence_time = null diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 7a30a91b8f4..e60aa9d2c90 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -177,12 +177,17 @@ src.see_in_dark = 8 src.see_invisible = SEE_INVISIBLE_LEVEL_TWO - for(var/image/hud in client.images) //COPIED FROM the human handle_regular_hud_updates() proc - if(copytext(hud.icon_state,1,4) == "hud") //ugly, but icon comparison is worse, I believe - client.images.Remove(hud) + regular_hud_updates() var/obj/item/borg/sight/hud/hud = (locate(/obj/item/borg/sight/hud) in src) - if(hud && hud.hud) hud.hud.process_hud(src) + if(hud && hud.hud) + hud.hud.process_hud(src) + else + switch(src.sensor_mode) + if (SEC_HUD) + process_sec_hud(src,1) + if (MED_HUD) + process_med_hud(src,1) if (src.healths) if (src.stat != 2) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c98e6405c03..c53d13aeb8a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -461,23 +461,10 @@ src << "\red You enable [C.name]." /mob/living/silicon/robot/verb/control_hud() - set name = "Toggle Sensors" - set desc = "Toggles your sensors to display security records, medical records or nothing." + set name = "Set Sensor Augmentation" + set desc = "Augment visual feed with internal sensor overlays." set category = "Robot Commands" - - if(stat != 0) - return - - var/hud = input("Please select a sensor module!", "Toggle Sensors", "None", null) in list("None","Security","Medical") - for(var/obj/item/borg/sight/hud/H in contents) - del(H) - switch(hud) - if("Security") - sechud = new/obj/item/borg/sight/hud/sec(src) - if("Medical") - healthhud = new/obj/item/borg/sight/hud/med(src) - else - return + toggle_sensor_mode() /mob/living/silicon/robot/blob_act() if (stat != 2) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index d2e067f8cc8..fbd29d63595 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -12,6 +12,10 @@ var/list/alarm_types_clear = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0) var/designation = "" var/obj/item/device/camera/siliconcam/aiCamera = null //photography + + var/sensor_mode = 0 //Determines the current HUD. + #define SEC_HUD 1 //Security HUD mode + #define MED_HUD 2 //Medical HUD mode /mob/living/silicon/proc/cancelAlarm() return @@ -235,3 +239,16 @@ /mob/living/silicon/assess_threat() //Secbots won't hunt silicon units return -10 + +/mob/living/silicon/proc/toggle_sensor_mode() + var/sensor_type = input("Please select sensor type.", "Sensor Integration", null) in list("Security", "Medical","Disable") + switch(sensor_type) + if ("Security") + sensor_mode = SEC_HUD + src << "Security records overlay enabled." + if ("Medical") + sensor_mode = MED_HUD + src << "Life signs monitor overlay enabled." + if ("Disable") + sensor_mode = 0 + src << "Sensor augmentations disabled." diff --git a/baystation12.dme b/paradise.dme similarity index 98% rename from baystation12.dme rename to paradise.dme index a108d27664c..2689cc3ae6a 100644 --- a/baystation12.dme +++ b/paradise.dme @@ -1,1640 +1,1640 @@ -// DM Environment file for baystation12.dme. -// All manual changes should be made outside the BEGIN_ and END_ blocks. - // New source code should be placed in .dm files: choose File/New --> Code File. -// BEGIN_INTERNALS -// END_INTERNALS -// BEGIN_FILE_DIR -#define FILE_DIR . -#define FILE_DIR "code" -#define FILE_DIR "code/TriDimension" -#define FILE_DIR "code/unused" -#define FILE_DIR "code/unused/goonheist" -#define FILE_DIR "code/WorkInProgress" -#define FILE_DIR "code/WorkInProgress/Cael_Aislinn" -#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/IndexLP" -#define FILE_DIR "code/WorkInProgress/Susan" -#define FILE_DIR "html" -#define FILE_DIR "icons" -#define FILE_DIR "icons/48x48" -#define FILE_DIR "icons/ass" -#define FILE_DIR "icons/effects" -#define FILE_DIR "icons/mecha" -#define FILE_DIR "icons/misc" -#define FILE_DIR "icons/mob" -#define FILE_DIR "icons/mob/human_races" -#define FILE_DIR "icons/mob/in-hand" -#define FILE_DIR "icons/mob/in-hand/left" -#define FILE_DIR "icons/mob/in-hand/right" -#define FILE_DIR "icons/mob/otherHuman" -#define FILE_DIR "icons/mob/species" -#define FILE_DIR "icons/mob/species/armalis" -#define FILE_DIR "icons/mob/species/skrell" -#define FILE_DIR "icons/mob/species/tajaran" -#define FILE_DIR "icons/mob/species/unathi" -#define FILE_DIR "icons/mob/species/vox" -#define FILE_DIR "icons/mob/spirits" -#define FILE_DIR "icons/NTOS" -#define FILE_DIR "icons/NTOS/battery_icons" -#define FILE_DIR "icons/obj" -#define FILE_DIR "icons/obj/assemblies" -#define FILE_DIR "icons/obj/atmospherics" -#define FILE_DIR "icons/obj/clothing" -#define FILE_DIR "icons/obj/clothing/species" -#define FILE_DIR "icons/obj/clothing/species/skrell" -#define FILE_DIR "icons/obj/clothing/species/tajaran" -#define FILE_DIR "icons/obj/clothing/species/unathi" -#define FILE_DIR "icons/obj/doors" -#define FILE_DIR "icons/obj/flora" -#define FILE_DIR "icons/obj/machines" -#define FILE_DIR "icons/obj/pipes" -#define FILE_DIR "icons/obj/power_cond" -#define FILE_DIR "icons/pda_icons" -#define FILE_DIR "icons/pods" -#define FILE_DIR "icons/spideros_icons" -#define FILE_DIR "icons/stamp_icons" -#define FILE_DIR "icons/Testing" -#define FILE_DIR "icons/turf" -#define FILE_DIR "icons/vehicles" -#define FILE_DIR "icons/vending_icons" -#define FILE_DIR "maps" -#define FILE_DIR "maps/overmap" -#define FILE_DIR "maps/overmap/bearcat" -#define FILE_DIR "nano" -#define FILE_DIR "nano/images" -#define FILE_DIR "sound" -#define FILE_DIR "sound/AI" -#define FILE_DIR "sound/ambience" -#define FILE_DIR "sound/effects" -#define FILE_DIR "sound/effects/turret" -#define FILE_DIR "sound/effects/wind" -#define FILE_DIR "sound/hallucinations" -#define FILE_DIR "sound/items" -#define FILE_DIR "sound/machines" -#define FILE_DIR "sound/mecha" -#define FILE_DIR "sound/misc" -#define FILE_DIR "sound/music" -#define FILE_DIR "sound/piano" -#define FILE_DIR "sound/turntable" -#define FILE_DIR "sound/violin" -#define FILE_DIR "sound/voice" -#define FILE_DIR "sound/voice/complionator" -#define FILE_DIR "sound/voice/Serithi" -#define FILE_DIR "sound/vox" -#define FILE_DIR "sound/vox_fem" -#define FILE_DIR "sound/weapons" -// END_FILE_DIR -// BEGIN_PREFERENCES -#define DEBUG -// END_PREFERENCES -// BEGIN_INCLUDE -#include "code\global.dm" -#include "code\hub.dm" -#include "code\names.dm" -#include "code\setup.dm" -#include "code\stylesheet.dm" -#include "code\world.dm" -#include "code\__HELPERS\experimental.dm" -#include "code\__HELPERS\files.dm" -#include "code\__HELPERS\game.dm" -#include "code\__HELPERS\global_lists.dm" -#include "code\__HELPERS\icons.dm" -#include "code\__HELPERS\lists.dm" -#include "code\__HELPERS\logging.dm" -#include "code\__HELPERS\maths.dm" -#include "code\__HELPERS\matrices.dm" -#include "code\__HELPERS\mobs.dm" -#include "code\__HELPERS\names.dm" -#include "code\__HELPERS\sanitize_values.dm" -#include "code\__HELPERS\text.dm" -#include "code\__HELPERS\time.dm" -#include "code\__HELPERS\timed_alerts.dm" -#include "code\__HELPERS\type2type.dm" -#include "code\__HELPERS\unsorted.dm" -#include "code\_hooks\area.dm" -#include "code\_hooks\hooks.dm" -#include "code\_hooks\mob.dm" -#include "code\_onclick\adjacent.dm" -#include "code\_onclick\ai.dm" -#include "code\_onclick\click.dm" -#include "code\_onclick\cyborg.dm" -#include "code\_onclick\drag_drop.dm" -#include "code\_onclick\item_attack.dm" -#include "code\_onclick\observer.dm" -#include "code\_onclick\other_mobs.dm" -#include "code\_onclick\overmind.dm" -#include "code\_onclick\telekinesis.dm" -#include "code\_onclick\hud\_defines.dm" -#include "code\_onclick\hud\ai.dm" -#include "code\_onclick\hud\alien.dm" -#include "code\_onclick\hud\alien_larva.dm" -#include "code\_onclick\hud\hud.dm" -#include "code\_onclick\hud\human.dm" -#include "code\_onclick\hud\monkey.dm" -#include "code\_onclick\hud\other_mobs.dm" -#include "code\_onclick\hud\robot.dm" -#include "code\_onclick\hud\screen_objects.dm" -#include "code\ATMOSPHERICS\atmospherics.dm" -#include "code\ATMOSPHERICS\chiller.dm" -#include "code\ATMOSPHERICS\datum_pipe_network.dm" -#include "code\ATMOSPHERICS\datum_pipeline.dm" -#include "code\ATMOSPHERICS\he_pipes.dm" -#include "code\ATMOSPHERICS\pipes.dm" -#include "code\ATMOSPHERICS\components\portables_connector.dm" -#include "code\ATMOSPHERICS\components\tvalve.dm" -#include "code\ATMOSPHERICS\components\valve.dm" -#include "code\ATMOSPHERICS\components\binary_devices\binary_atmos_base.dm" -#include "code\ATMOSPHERICS\components\binary_devices\circulator.dm" -#include "code\ATMOSPHERICS\components\binary_devices\dp_vent_pump.dm" -#include "code\ATMOSPHERICS\components\binary_devices\passive_gate.dm" -#include "code\ATMOSPHERICS\components\binary_devices\pump.dm" -#include "code\ATMOSPHERICS\components\binary_devices\volume_pump.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\filter.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\mixer.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\trinary_base.dm" -#include "code\ATMOSPHERICS\components\unary\cold_sink.dm" -#include "code\ATMOSPHERICS\components\unary\generator_input.dm" -#include "code\ATMOSPHERICS\components\unary\heat_exchanger.dm" -#include "code\ATMOSPHERICS\components\unary\heat_source.dm" -#include "code\ATMOSPHERICS\components\unary\outlet_injector.dm" -#include "code\ATMOSPHERICS\components\unary\oxygen_generator.dm" -#include "code\ATMOSPHERICS\components\unary\thermal_plate.dm" -#include "code\ATMOSPHERICS\components\unary\unary_base.dm" -#include "code\ATMOSPHERICS\components\unary\vent_pump.dm" -#include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm" -#include "code\controllers\_DynamicAreaLighting_TG.dm" -#include "code\controllers\configuration.dm" -#include "code\controllers\emergency_shuttle_controller.dm" -#include "code\controllers\failsafe.dm" -#include "code\controllers\garbage.dm" -#include "code\controllers\hooks-defs.dm" -#include "code\controllers\hooks.dm" -#include "code\controllers\lighting_controller.dm" -#include "code\controllers\master_controller.dm" -#include "code\controllers\shuttle_controller.dm" -#include "code\controllers\verbs.dm" -#include "code\controllers\voting.dm" -#include "code\datums\ai_laws.dm" -#include "code\datums\browser.dm" -#include "code\datums\computerfiles.dm" -#include "code\datums\datacore.dm" -#include "code\datums\datumvars.dm" -#include "code\datums\mind.dm" -#include "code\datums\mixed.dm" -#include "code\datums\modules.dm" -#include "code\datums\organs.dm" -#include "code\datums\recipe.dm" -#include "code\datums\spell.dm" -#include "code\datums\sun.dm" -#include "code\datums\supplypacks.dm" -#include "code\datums\uplink_item.dm" -#include "code\datums\crafting\crafting.dm" -#include "code\datums\crafting\recipes.dm" -#include "code\datums\helper_datums\construction_datum.dm" -#include "code\datums\helper_datums\events.dm" -#include "code\datums\helper_datums\global_iterator.dm" -#include "code\datums\helper_datums\teleport.dm" -#include "code\datums\helper_datums\topic_input.dm" -#include "code\datums\spells\area_teleport.dm" -#include "code\datums\spells\charge.dm" -#include "code\datums\spells\conjure.dm" -#include "code\datums\spells\construct_spells.dm" -#include "code\datums\spells\dumbfire.dm" -#include "code\datums\spells\emplosion.dm" -#include "code\datums\spells\ethereal_jaunt.dm" -#include "code\datums\spells\explosion.dm" -#include "code\datums\spells\genetic.dm" -#include "code\datums\spells\horsemask.dm" -#include "code\datums\spells\inflict_handler.dm" -#include "code\datums\spells\knock.dm" -#include "code\datums\spells\mind_transfer.dm" -#include "code\datums\spells\projectile.dm" -#include "code\datums\spells\trigger.dm" -#include "code\datums\spells\turf_teleport.dm" -#include "code\datums\spells\wizard.dm" -#include "code\datums\visibility_networks\chunk.dm" -#include "code\datums\visibility_networks\dictionary.dm" -#include "code\datums\visibility_networks\update_triggers.dm" -#include "code\datums\visibility_networks\visibility_interface.dm" -#include "code\datums\visibility_networks\visibility_network.dm" -#include "code\datums\wires\airlock.dm" -#include "code\datums\wires\alarm.dm" -#include "code\datums\wires\apc.dm" -#include "code\datums\wires\camera.dm" -#include "code\datums\wires\explosive.dm" -#include "code\datums\wires\mulebot.dm" -#include "code\datums\wires\particle_accelerator.dm" -#include "code\datums\wires\radio.dm" -#include "code\datums\wires\robot.dm" -#include "code\datums\wires\syndicatebomb.dm" -#include "code\datums\wires\vending.dm" -#include "code\datums\wires\wires.dm" -#include "code\defines\obj.dm" -#include "code\defines\vox_sounds.dm" -#include "code\defines\obj\weapon.dm" -#include "code\defines\procs\AStar.dm" -#include "code\defines\procs\captain_announce.dm" -#include "code\defines\procs\command_alert.dm" -#include "code\defines\procs\dbcore.dm" -#include "code\defines\procs\sd_Alert.dm" -#include "code\defines\procs\statistics.dm" -#include "code\game\asteroid.dm" -#include "code\game\atoms.dm" -#include "code\game\atoms_movable.dm" -#include "code\game\communications.dm" -#include "code\game\response_team.dm" -#include "code\game\shuttle_engines.dm" -#include "code\game\skincmd.dm" -#include "code\game\smoothwall.dm" -#include "code\game\sound.dm" -#include "code\game\supplyshuttle.dm" -#include "code\game\area\ai_monitored.dm" -#include "code\game\area\areas.dm" -#include "code\game\area\Dynamic areas.dm" -#include "code\game\area\Space Station 13 areas.dm" -#include "code\game\dna\dna2.dm" -#include "code\game\dna\dna2_domutcheck.dm" -#include "code\game\dna\dna2_helpers.dm" -#include "code\game\dna\dna_modifier.dm" -#include "code\game\dna\genes\disabilities.dm" -#include "code\game\dna\genes\gene.dm" -#include "code\game\dna\genes\goon_disabilities.dm" -#include "code\game\dna\genes\goon_powers.dm" -#include "code\game\dna\genes\monkey.dm" -#include "code\game\dna\genes\powers.dm" -#include "code\game\dna\genes\vg_disabilities.dm" -#include "code\game\dna\genes\vg_powers.dm" -#include "code\game\gamemodes\antag_spawner.dm" -#include "code\game\gamemodes\events.dm" -#include "code\game\gamemodes\factions.dm" -#include "code\game\gamemodes\game_mode.dm" -#include "code\game\gamemodes\gameticker.dm" -#include "code\game\gamemodes\intercept_report.dm" -#include "code\game\gamemodes\objective.dm" -#include "code\game\gamemodes\scoreboard.dm" -#include "code\game\gamemodes\setupgame.dm" -#include "code\game\gamemodes\steal_items.dm" -#include "code\game\gamemodes\autotraitor\autotraitor.dm" -#include "code\game\gamemodes\blob\blob.dm" -#include "code\game\gamemodes\blob\blob_finish.dm" -#include "code\game\gamemodes\blob\blob_report.dm" -#include "code\game\gamemodes\blob\overmind.dm" -#include "code\game\gamemodes\blob\powers.dm" -#include "code\game\gamemodes\blob\theblob.dm" -#include "code\game\gamemodes\blob\blobs\core.dm" -#include "code\game\gamemodes\blob\blobs\factory.dm" -#include "code\game\gamemodes\blob\blobs\node.dm" -#include "code\game\gamemodes\blob\blobs\resource.dm" -#include "code\game\gamemodes\blob\blobs\shield.dm" -#include "code\game\gamemodes\borer\borer.dm" -#include "code\game\gamemodes\changeling\changeling.dm" -#include "code\game\gamemodes\changeling\changeling_powers.dm" -#include "code\game\gamemodes\changeling\modularchangling.dm" -#include "code\game\gamemodes\changeling\traitor_chan.dm" -#include "code\game\gamemodes\cult\cult.dm" -#include "code\game\gamemodes\cult\cult_items.dm" -#include "code\game\gamemodes\cult\cult_structures.dm" -#include "code\game\gamemodes\cult\ritual.dm" -#include "code\game\gamemodes\cult\runes.dm" -#include "code\game\gamemodes\cult\talisman.dm" -#include "code\game\gamemodes\events\biomass.dm" -#include "code\game\gamemodes\events\black_hole.dm" -#include "code\game\gamemodes\events\clang.dm" -#include "code\game\gamemodes\events\ninja_abilities.dm" -#include "code\game\gamemodes\events\ninja_equipment.dm" -#include "code\game\gamemodes\events\power_failure.dm" -#include "code\game\gamemodes\events\space_ninja.dm" -#include "code\game\gamemodes\events\spacevines.dm" -#include "code\game\gamemodes\events\wormholes.dm" -#include "code\game\gamemodes\events\holidays\Christmas.dm" -#include "code\game\gamemodes\events\holidays\Holidays.dm" -#include "code\game\gamemodes\events\holidays\Other.dm" -#include "code\game\gamemodes\extended\extended.dm" -#include "code\game\gamemodes\malfunction\Malf_Modules.dm" -#include "code\game\gamemodes\malfunction\malfunction.dm" -#include "code\game\gamemodes\meteor\meteor.dm" -#include "code\game\gamemodes\meteor\meteors.dm" -#include "code\game\gamemodes\mutiny\auth_key.dm" -#include "code\game\gamemodes\mutiny\directive.dm" -#include "code\game\gamemodes\mutiny\emergency_authentication_device.dm" -#include "code\game\gamemodes\mutiny\key_pinpointer.dm" -#include "code\game\gamemodes\mutiny\mutiny.dm" -#include "code\game\gamemodes\mutiny\mutiny_admin.dm" -#include "code\game\gamemodes\mutiny\mutiny_fluff.dm" -#include "code\game\gamemodes\mutiny\mutiny_hooks.dm" -#include "code\game\gamemodes\mutiny\directives\alien_fraud_directive.dm" -#include "code\game\gamemodes\mutiny\directives\bluespace_contagion_directive.dm" -#include "code\game\gamemodes\mutiny\directives\financial_crisis_directive.dm" -#include "code\game\gamemodes\mutiny\directives\ipc_virus_directive.dm" -#include "code\game\gamemodes\mutiny\directives\research_to_ripleys_directive.dm" -#include "code\game\gamemodes\mutiny\directives\tau_ceti_needs_women_directive.dm" -#include "code\game\gamemodes\mutiny\directives\terminations_directive.dm" -#include "code\game\gamemodes\mutiny\directives\vox_heist.dm" -#include "code\game\gamemodes\nations\flag_pinpointer.dm" -#include "code\game\gamemodes\nations\flagprocs.dm" -#include "code\game\gamemodes\nations\nationdatums.dm" -#include "code\game\gamemodes\nations\nations.dm" -#include "code\game\gamemodes\ninja\ninja.dm" -#include "code\game\gamemodes\nuclear\nuclear.dm" -#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\traitor\traitor.dm" -#include "code\game\gamemodes\vampire\hud.dm" -#include "code\game\gamemodes\vampire\vampire.dm" -#include "code\game\gamemodes\vampire\vampire_powers.dm" -#include "code\game\gamemodes\vox\vox.dm" -#include "code\game\gamemodes\vox\heist\heist.dm" -#include "code\game\gamemodes\vox\trade\trade.dm" -#include "code\game\gamemodes\wizard\artefact.dm" -#include "code\game\gamemodes\wizard\raginmages.dm" -#include "code\game\gamemodes\wizard\rightandwrong.dm" -#include "code\game\gamemodes\wizard\soulstone.dm" -#include "code\game\gamemodes\wizard\spellbook.dm" -#include "code\game\gamemodes\wizard\wizard.dm" -#include "code\game\gamemodes\xenos\xenos.dm" -#include "code\game\jobs\access.dm" -#include "code\game\jobs\job_controller.dm" -#include "code\game\jobs\job_objective.dm" -#include "code\game\jobs\jobprocs.dm" -#include "code\game\jobs\jobs.dm" -#include "code\game\jobs\whitelist.dm" -#include "code\game\jobs\job\civilian.dm" -#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\science.dm" -#include "code\game\jobs\job\security.dm" -#include "code\game\jobs\job\silicon.dm" -#include "code\game\jobs\job\supervisor.dm" -#include "code\game\jobs\job\support.dm" -#include "code\game\jobs\job\support_chaplain.dm" -#include "code\game\jobs\job_objectives\science.dm" -#include "code\game\machinery\adv_med.dm" -#include "code\game\machinery\ai_slipper.dm" -#include "code\game\machinery\alarm.dm" -#include "code\game\machinery\atmo_control.dm" -#include "code\game\machinery\autolathe.dm" -#include "code\game\machinery\Beacon.dm" -#include "code\game\machinery\bees_apiary.dm" -#include "code\game\machinery\bees_items.dm" -#include "code\game\machinery\biogenerator.dm" -#include "code\game\machinery\buttons.dm" -#include "code\game\machinery\cell_charger.dm" -#include "code\game\machinery\cloning.dm" -#include "code\game\machinery\constructable_frame.dm" -#include "code\game\machinery\cryo.dm" -#include "code\game\machinery\cryopod.dm" -#include "code\game\machinery\deployable.dm" -#include "code\game\machinery\door_control.dm" -#include "code\game\machinery\doppler_array.dm" -#include "code\game\machinery\flasher.dm" -#include "code\game\machinery\floodlight.dm" -#include "code\game\machinery\Freezer.dm" -#include "code\game\machinery\hologram.dm" -#include "code\game\machinery\holosign.dm" -#include "code\game\machinery\hydroponics.dm" -#include "code\game\machinery\igniter.dm" -#include "code\game\machinery\iv_drip.dm" -#include "code\game\machinery\lightswitch.dm" -#include "code\game\machinery\machinery.dm" -#include "code\game\machinery\magnet.dm" -#include "code\game\machinery\mass_driver.dm" -#include "code\game\machinery\metaldetector.dm" -#include "code\game\machinery\navbeacon.dm" -#include "code\game\machinery\newscaster.dm" -#include "code\game\machinery\OpTable.dm" -#include "code\game\machinery\overview.dm" -#include "code\game\machinery\PDApainter.dm" -#include "code\game\machinery\portable_turret.dm" -#include "code\game\machinery\recharger.dm" -#include "code\game\machinery\rechargestation.dm" -#include "code\game\machinery\recycler.dm" -#include "code\game\machinery\requests_console.dm" -#include "code\game\machinery\robot_fabricator.dm" -#include "code\game\machinery\seed_extractor.dm" -#include "code\game\machinery\shieldgen.dm" -#include "code\game\machinery\Sleeper.dm" -#include "code\game\machinery\slotmachine.dm" -#include "code\game\machinery\spaceheater.dm" -#include "code\game\machinery\status_display.dm" -#include "code\game\machinery\suit_storage_unit.dm" -#include "code\game\machinery\supply_display.dm" -#include "code\game\machinery\syndicatebeacon.dm" -#include "code\game\machinery\syndicatebomb.dm" -#include "code\game\machinery\telepad.dm" -#include "code\game\machinery\teleporter.dm" -#include "code\game\machinery\transformer.dm" -#include "code\game\machinery\turrets.dm" -#include "code\game\machinery\vending.dm" -#include "code\game\machinery\washing_machine.dm" -#include "code\game\machinery\wishgranter.dm" -#include "code\game\machinery\atmoalter\area_atmos_computer.dm" -#include "code\game\machinery\atmoalter\canister.dm" -#include "code\game\machinery\atmoalter\meter.dm" -#include "code\game\machinery\atmoalter\portable_atmospherics.dm" -#include "code\game\machinery\atmoalter\pump.dm" -#include "code\game\machinery\atmoalter\scrubber.dm" -#include "code\game\machinery\atmoalter\zvent.dm" -#include "code\game\machinery\bots\bots.dm" -#include "code\game\machinery\bots\cleanbot.dm" -#include "code\game\machinery\bots\ed209bot.dm" -#include "code\game\machinery\bots\floorbot.dm" -#include "code\game\machinery\bots\medbot.dm" -#include "code\game\machinery\bots\mulebot.dm" -#include "code\game\machinery\bots\secbot.dm" -#include "code\game\machinery\camera\camera.dm" -#include "code\game\machinery\camera\camera_assembly.dm" -#include "code\game\machinery\camera\motion.dm" -#include "code\game\machinery\camera\presets.dm" -#include "code\game\machinery\camera\tracking.dm" -#include "code\game\machinery\computer\ai_core.dm" -#include "code\game\machinery\computer\aifixer.dm" -#include "code\game\machinery\computer\arcade.dm" -#include "code\game\machinery\computer\atmos_alert.dm" -#include "code\game\machinery\computer\buildandrepair.dm" -#include "code\game\machinery\computer\camera.dm" -#include "code\game\machinery\computer\card.dm" -#include "code\game\machinery\computer\cloning.dm" -#include "code\game\machinery\computer\communications.dm" -#include "code\game\machinery\computer\computer.dm" -#include "code\game\machinery\computer\crew.dm" -#include "code\game\machinery\computer\HolodeckControl.dm" -#include "code\game\machinery\computer\hologram.dm" -#include "code\game\machinery\computer\honkputer.dm" -#include "code\game\machinery\computer\law.dm" -#include "code\game\machinery\computer\medical.dm" -#include "code\game\machinery\computer\message.dm" -#include "code\game\machinery\computer\Operating.dm" -#include "code\game\machinery\computer\pod.dm" -#include "code\game\machinery\computer\power.dm" -#include "code\game\machinery\computer\prisoner.dm" -#include "code\game\machinery\computer\prisonshuttle.dm" -#include "code\game\machinery\computer\robot.dm" -#include "code\game\machinery\computer\salvage_ship.dm" -#include "code\game\machinery\computer\security.dm" -#include "code\game\machinery\computer\shuttle.dm" -#include "code\game\machinery\computer\skills.dm" -#include "code\game\machinery\computer\specops_shuttle.dm" -#include "code\game\machinery\computer\station_alert.dm" -#include "code\game\machinery\computer\store.dm" -#include "code\game\machinery\computer\syndicate_specops_shuttle.dm" -#include "code\game\machinery\computer\telecrystalconsoles.dm" -#include "code\game\machinery\computer\telescience.dm" -#include "code\game\machinery\computer\xenos_shuttle.dm" -#include "code\game\machinery\doors\airlock.dm" -#include "code\game\machinery\doors\airlock_control.dm" -#include "code\game\machinery\doors\airlock_electronics.dm" -#include "code\game\machinery\doors\alarmlock.dm" -#include "code\game\machinery\doors\brigdoors.dm" -#include "code\game\machinery\doors\checkForMultipleDoors.dm" -#include "code\game\machinery\doors\door.dm" -#include "code\game\machinery\doors\firedoor.dm" -#include "code\game\machinery\doors\multi_tile.dm" -#include "code\game\machinery\doors\poddoor.dm" -#include "code\game\machinery\doors\shutters.dm" -#include "code\game\machinery\doors\spacepod.dm" -#include "code\game\machinery\doors\unpowered.dm" -#include "code\game\machinery\doors\windowdoor.dm" -#include "code\game\machinery\embedded_controller\airlock_controllers.dm" -#include "code\game\machinery\embedded_controller\airlock_docking_controller.dm" -#include "code\game\machinery\embedded_controller\airlock_docking_controller_multi.dm" -#include "code\game\machinery\embedded_controller\airlock_program.dm" -#include "code\game\machinery\embedded_controller\docking_program.dm" -#include "code\game\machinery\embedded_controller\docking_program_multi.dm" -#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" -#include "code\game\machinery\embedded_controller\embedded_program_base.dm" -#include "code\game\machinery\embedded_controller\simple_docking_controller.dm" -#include "code\game\machinery\kitchen\gibber.dm" -#include "code\game\machinery\kitchen\icecream_vat.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" -#include "code\game\machinery\pipe\pipe_dispenser.dm" -#include "code\game\machinery\telecomms\broadcaster.dm" -#include "code\game\machinery\telecomms\logbrowser.dm" -#include "code\game\machinery\telecomms\machine_interactions.dm" -#include "code\game\machinery\telecomms\presets.dm" -#include "code\game\machinery\telecomms\telecomunications.dm" -#include "code\game\machinery\telecomms\telemonitor.dm" -#include "code\game\machinery\telecomms\traffic_control.dm" -#include "code\game\magic\Uristrunes.dm" -#include "code\game\mecha\mech_bay.dm" -#include "code\game\mecha\mech_fabricator.dm" -#include "code\game\mecha\mecha.dm" -#include "code\game\mecha\mecha_construction_paths.dm" -#include "code\game\mecha\mecha_control_console.dm" -#include "code\game\mecha\mecha_parts.dm" -#include "code\game\mecha\mecha_wreckage.dm" -#include "code\game\mecha\combat\combat.dm" -#include "code\game\mecha\combat\durand.dm" -#include "code\game\mecha\combat\gygax.dm" -#include "code\game\mecha\combat\honker.dm" -#include "code\game\mecha\combat\marauder.dm" -#include "code\game\mecha\combat\phazon.dm" -#include "code\game\mecha\combat\recitence.dm" -#include "code\game\mecha\equipment\mecha_equipment.dm" -#include "code\game\mecha\equipment\tools\medical_tools.dm" -#include "code\game\mecha\equipment\tools\tools.dm" -#include "code\game\mecha\equipment\weapons\weapons.dm" -#include "code\game\mecha\medical\medical.dm" -#include "code\game\mecha\medical\odysseus.dm" -#include "code\game\mecha\working\ripley.dm" -#include "code\game\mecha\working\working.dm" -#include "code\game\objects\empulse.dm" -#include "code\game\objects\explosion.dm" -#include "code\game\objects\explosion_recursive.dm" -#include "code\game\objects\items.dm" -#include "code\game\objects\objs.dm" -#include "code\game\objects\structures.dm" -#include "code\game\objects\weapons.dm" -#include "code\game\objects\closets\walllocker.dm" -#include "code\game\objects\effects\aliens.dm" -#include "code\game\objects\effects\anomalies.dm" -#include "code\game\objects\effects\bump_teleporter.dm" -#include "code\game\objects\effects\effect_system.dm" -#include "code\game\objects\effects\gibs.dm" -#include "code\game\objects\effects\glowshroom.dm" -#include "code\game\objects\effects\landmarks.dm" -#include "code\game\objects\effects\manifest.dm" -#include "code\game\objects\effects\mines.dm" -#include "code\game\objects\effects\misc.dm" -#include "code\game\objects\effects\overlays.dm" -#include "code\game\objects\effects\portals.dm" -#include "code\game\objects\effects\spiders.dm" -#include "code\game\objects\effects\step_triggers.dm" -#include "code\game\objects\effects\decals\cleanable.dm" -#include "code\game\objects\effects\decals\contraband.dm" -#include "code\game\objects\effects\decals\crayon.dm" -#include "code\game\objects\effects\decals\misc.dm" -#include "code\game\objects\effects\decals\remains.dm" -#include "code\game\objects\effects\decals\warning_stripes.dm" -#include "code\game\objects\effects\decals\Cleanable\aliens.dm" -#include "code\game\objects\effects\decals\Cleanable\fuel.dm" -#include "code\game\objects\effects\decals\Cleanable\humans.dm" -#include "code\game\objects\effects\decals\Cleanable\misc.dm" -#include "code\game\objects\effects\decals\Cleanable\robots.dm" -#include "code\game\objects\effects\decals\posters\bs12.dm" -#include "code\game\objects\effects\decals\posters\tgposters.dm" -#include "code\game\objects\effects\spawners\bombspawner.dm" -#include "code\game\objects\effects\spawners\gibspawner.dm" -#include "code\game\objects\effects\spawners\vaultspawner.dm" -#include "code\game\objects\items\apc_frame.dm" -#include "code\game\objects\items\blueprints.dm" -#include "code\game\objects\items\bluespace_crystal.dm" -#include "code\game\objects\items\bodybag.dm" -#include "code\game\objects\items\candle.dm" -#include "code\game\objects\items\contraband.dm" -#include "code\game\objects\items\crayons.dm" -#include "code\game\objects\items\flag.dm" -#include "code\game\objects\items\latexballoon.dm" -#include "code\game\objects\items\shooting_range.dm" -#include "code\game\objects\items\toys.dm" -#include "code\game\objects\items\trash.dm" -#include "code\game\objects\items\devices\aicard.dm" -#include "code\game\objects\items\devices\chameleonproj.dm" -#include "code\game\objects\items\devices\debugger.dm" -#include "code\game\objects\items\devices\flash.dm" -#include "code\game\objects\items\devices\flashlight.dm" -#include "code\game\objects\items\devices\gps.dm" -#include "code\game\objects\items\devices\handtv.dm" -#include "code\game\objects\items\devices\laserpointer.dm" -#include "code\game\objects\items\devices\lightreplacer.dm" -#include "code\game\objects\items\devices\megaphone.dm" -#include "code\game\objects\items\devices\modkit.dm" -#include "code\game\objects\items\devices\multitool.dm" -#include "code\game\objects\items\devices\paicard.dm" -#include "code\game\objects\items\devices\pipe_freezer.dm" -#include "code\game\objects\items\devices\pipe_painter.dm" -#include "code\game\objects\items\devices\powersink.dm" -#include "code\game\objects\items\devices\scanners.dm" -#include "code\game\objects\items\devices\suit_cooling.dm" -#include "code\game\objects\items\devices\taperecorder.dm" -#include "code\game\objects\items\devices\traitordevices.dm" -#include "code\game\objects\items\devices\transfer_valve.dm" -#include "code\game\objects\items\devices\uplinks.dm" -#include "code\game\objects\items\devices\violin.dm" -#include "code\game\objects\items\devices\whistle.dm" -#include "code\game\objects\items\devices\PDA\cart.dm" -#include "code\game\objects\items\devices\PDA\chatroom.dm" -#include "code\game\objects\items\devices\PDA\PDA.dm" -#include "code\game\objects\items\devices\PDA\radio.dm" -#include "code\game\objects\items\devices\radio\beacon.dm" -#include "code\game\objects\items\devices\radio\electropack.dm" -#include "code\game\objects\items\devices\radio\encryptionkey.dm" -#include "code\game\objects\items\devices\radio\headset.dm" -#include "code\game\objects\items\devices\radio\intercom.dm" -#include "code\game\objects\items\devices\radio\radio.dm" -#include "code\game\objects\items\robot\robot_items.dm" -#include "code\game\objects\items\robot\robot_parts.dm" -#include "code\game\objects\items\robot\robot_upgrades.dm" -#include "code\game\objects\items\stacks\medical.dm" -#include "code\game\objects\items\stacks\nanopaste.dm" -#include "code\game\objects\items\stacks\rods.dm" -#include "code\game\objects\items\stacks\stack.dm" -#include "code\game\objects\items\stacks\sheets\glass.dm" -#include "code\game\objects\items\stacks\sheets\leather.dm" -#include "code\game\objects\items\stacks\sheets\light.dm" -#include "code\game\objects\items\stacks\sheets\mineral.dm" -#include "code\game\objects\items\stacks\sheets\sheet_types.dm" -#include "code\game\objects\items\stacks\sheets\sheets.dm" -#include "code\game\objects\items\stacks\tiles\light.dm" -#include "code\game\objects\items\stacks\tiles\plasteel.dm" -#include "code\game\objects\items\stacks\tiles\tile_types.dm" -#include "code\game\objects\items\weapons\AI_modules.dm" -#include "code\game\objects\items\weapons\alien_specific.dm" -#include "code\game\objects\items\weapons\cards_ids.dm" -#include "code\game\objects\items\weapons\cash.dm" -#include "code\game\objects\items\weapons\cigs_lighters.dm" -#include "code\game\objects\items\weapons\clown_items.dm" -#include "code\game\objects\items\weapons\cosmetics.dm" -#include "code\game\objects\items\weapons\dice.dm" -#include "code\game\objects\items\weapons\dna_injector.dm" -#include "code\game\objects\items\weapons\dnascrambler.dm" -#include "code\game\objects\items\weapons\explosives.dm" -#include "code\game\objects\items\weapons\extinguisher.dm" -#include "code\game\objects\items\weapons\flamethrower.dm" -#include "code\game\objects\items\weapons\gift_wrappaper.dm" -#include "code\game\objects\items\weapons\handcuffs.dm" -#include "code\game\objects\items\weapons\hydroponics.dm" -#include "code\game\objects\items\weapons\kitchen.dm" -#include "code\game\objects\items\weapons\manuals.dm" -#include "code\game\objects\items\weapons\mop.dm" -#include "code\game\objects\items\weapons\ninja_manuscript.dm" -#include "code\game\objects\items\weapons\paint.dm" -#include "code\game\objects\items\weapons\paiwire.dm" -#include "code\game\objects\items\weapons\power_cells.dm" -#include "code\game\objects\items\weapons\RCD.dm" -#include "code\game\objects\items\weapons\RCS.dm" -#include "code\game\objects\items\weapons\RSF.dm" -#include "code\game\objects\items\weapons\scrolls.dm" -#include "code\game\objects\items\weapons\shards.dm" -#include "code\game\objects\items\weapons\shields.dm" -#include "code\game\objects\items\weapons\stunbaton.dm" -#include "code\game\objects\items\weapons\surgery_tools.dm" -#include "code\game\objects\items\weapons\swords_axes_etc.dm" -#include "code\game\objects\items\weapons\table_rack_parts.dm" -#include "code\game\objects\items\weapons\teleportation.dm" -#include "code\game\objects\items\weapons\tools.dm" -#include "code\game\objects\items\weapons\twohanded.dm" -#include "code\game\objects\items\weapons\vending_items.dm" -#include "code\game\objects\items\weapons\weaponry.dm" -#include "code\game\objects\items\weapons\wires.dm" -#include "code\game\objects\items\weapons\grenades\bananade.dm" -#include "code\game\objects\items\weapons\grenades\chem_grenade.dm" -#include "code\game\objects\items\weapons\grenades\clowngrenade.dm" -#include "code\game\objects\items\weapons\grenades\emgrenade.dm" -#include "code\game\objects\items\weapons\grenades\flashbang.dm" -#include "code\game\objects\items\weapons\grenades\ghettobomb.dm" -#include "code\game\objects\items\weapons\grenades\grenade.dm" -#include "code\game\objects\items\weapons\grenades\smokebomb.dm" -#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" -#include "code\game\objects\items\weapons\grenades\syndieminibomb.dm" -#include "code\game\objects\items\weapons\implants\deadman.dm" -#include "code\game\objects\items\weapons\implants\implant.dm" -#include "code\game\objects\items\weapons\implants\implantcase.dm" -#include "code\game\objects\items\weapons\implants\implantchair.dm" -#include "code\game\objects\items\weapons\implants\implanter.dm" -#include "code\game\objects\items\weapons\implants\implantfreedom.dm" -#include "code\game\objects\items\weapons\implants\implantpad.dm" -#include "code\game\objects\items\weapons\implants\implantuplink.dm" -#include "code\game\objects\items\weapons\melee\energy.dm" -#include "code\game\objects\items\weapons\melee\misc.dm" -#include "code\game\objects\items\weapons\storage\backpack.dm" -#include "code\game\objects\items\weapons\storage\bags.dm" -#include "code\game\objects\items\weapons\storage\belt.dm" -#include "code\game\objects\items\weapons\storage\bible.dm" -#include "code\game\objects\items\weapons\storage\boxes.dm" -#include "code\game\objects\items\weapons\storage\briefcase.dm" -#include "code\game\objects\items\weapons\storage\fancy.dm" -#include "code\game\objects\items\weapons\storage\firstaid.dm" -#include "code\game\objects\items\weapons\storage\lockbox.dm" -#include "code\game\objects\items\weapons\storage\secure.dm" -#include "code\game\objects\items\weapons\storage\storage.dm" -#include "code\game\objects\items\weapons\storage\toolbox.dm" -#include "code\game\objects\items\weapons\storage\uplink_kits.dm" -#include "code\game\objects\items\weapons\storage\wallets.dm" -#include "code\game\objects\items\weapons\tanks\jetpack.dm" -#include "code\game\objects\items\weapons\tanks\tank_types.dm" -#include "code\game\objects\items\weapons\tanks\tanks.dm" -#include "code\game\objects\items\weapons\tanks\watertank.dm" -#include "code\game\objects\random\random.dm" -#include "code\game\objects\storage\coat.dm" -#include "code\game\objects\structures\barsign.dm" -#include "code\game\objects\structures\bedsheet_bin.dm" -#include "code\game\objects\structures\coathanger.dm" -#include "code\game\objects\structures\displaycase.dm" -#include "code\game\objects\structures\door_assembly.dm" -#include "code\game\objects\structures\electricchair.dm" -#include "code\game\objects\structures\engicart.dm" -#include "code\game\objects\structures\extinguisher.dm" -#include "code\game\objects\structures\false_walls.dm" -#include "code\game\objects\structures\flora.dm" -#include "code\game\objects\structures\fullwindow.dm" -#include "code\game\objects\structures\girders.dm" -#include "code\game\objects\structures\grille.dm" -#include "code\game\objects\structures\inflatable.dm" -#include "code\game\objects\structures\janicart.dm" -#include "code\game\objects\structures\kitchen_spike.dm" -#include "code\game\objects\structures\ladders.dm" -#include "code\game\objects\structures\lamarr_cage.dm" -#include "code\game\objects\structures\lattice.dm" -#include "code\game\objects\structures\mineral_doors.dm" -#include "code\game\objects\structures\mirror.dm" -#include "code\game\objects\structures\mop_bucket.dm" -#include "code\game\objects\structures\morgue.dm" -#include "code\game\objects\structures\musician.dm" -#include "code\game\objects\structures\noticeboard.dm" -#include "code\game\objects\structures\safe.dm" -#include "code\game\objects\structures\segway.dm" -#include "code\game\objects\structures\signs.dm" -#include "code\game\objects\structures\tables_racks.dm" -#include "code\game\objects\structures\tank_dispenser.dm" -#include "code\game\objects\structures\target_stake.dm" -#include "code\game\objects\structures\watercloset.dm" -#include "code\game\objects\structures\windoor_assembly.dm" -#include "code\game\objects\structures\window.dm" -#include "code\game\objects\structures\crates_lockers\closets.dm" -#include "code\game\objects\structures\crates_lockers\crates.dm" -#include "code\game\objects\structures\crates_lockers\crittercrate.dm" -#include "code\game\objects\structures\crates_lockers\largecrate.dm" -#include "code\game\objects\structures\crates_lockers\closets\coffin.dm" -#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" -#include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm" -#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" -#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" -#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" -#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" -#include "code\game\objects\structures\crates_lockers\closets\statue.dm" -#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" -#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\stools.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm" -#include "code\game\objects\structures\transit_tubes\station.dm" -#include "code\game\objects\structures\transit_tubes\transit_tube.dm" -#include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm" -#include "code\game\structure\structure.dm" -#include "code\game\turfs\simulated.dm" -#include "code\game\turfs\turf.dm" -#include "code\game\turfs\unsimulated.dm" -#include "code\game\turfs\simulated\floor.dm" -#include "code\game\turfs\simulated\floor_types.dm" -#include "code\game\turfs\simulated\walls.dm" -#include "code\game\turfs\simulated\walls_mineral.dm" -#include "code\game\turfs\simulated\walls_misc.dm" -#include "code\game\turfs\simulated\walls_reinforced.dm" -#include "code\game\turfs\space\space.dm" -#include "code\game\turfs\space\transit.dm" -#include "code\game\turfs\unsimulated\beach.dm" -#include "code\game\turfs\unsimulated\floor.dm" -#include "code\game\turfs\unsimulated\walls.dm" -#include "code\game\vehicles\spacepods\construction.dm" -#include "code\game\vehicles\spacepods\equipment.dm" -#include "code\game\vehicles\spacepods\parts.dm" -#include "code\game\vehicles\spacepods\spacepod.dm" -#include "code\game\verbs\atom_verbs.dm" -#include "code\game\verbs\ooc.dm" -#include "code\game\verbs\suicide.dm" -#include "code\game\verbs\who.dm" -#include "code\js\byjax.dm" -#include "code\js\menus.dm" -#include "code\modules\admin\admin.dm" -#include "code\modules\admin\admin_investigate.dm" -#include "code\modules\admin\admin_memo.dm" -#include "code\modules\admin\admin_ranks.dm" -#include "code\modules\admin\admin_verbs.dm" -#include "code\modules\admin\banappearance.dm" -#include "code\modules\admin\banjob.dm" -#include "code\modules\admin\create_mob.dm" -#include "code\modules\admin\create_object.dm" -#include "code\modules\admin\create_turf.dm" -#include "code\modules\admin\holder2.dm" -#include "code\modules\admin\IsBanned.dm" -#include "code\modules\admin\NewBan.dm" -#include "code\modules\admin\newbanjob.dm" -#include "code\modules\admin\player_notes.dm" -#include "code\modules\admin\player_panel.dm" -#include "code\modules\admin\secrets.dm" -#include "code\modules\admin\topic.dm" -#include "code\modules\admin\ToRban.dm" -#include "code\modules\admin\DB ban\functions.dm" -#include "code\modules\admin\permissionverbs\permissionedit.dm" -#include "code\modules\admin\verbs\adminhelp.dm" -#include "code\modules\admin\verbs\adminjump.dm" -#include "code\modules\admin\verbs\adminpm.dm" -#include "code\modules\admin\verbs\adminsay.dm" -#include "code\modules\admin\verbs\atmosdebug.dm" -#include "code\modules\admin\verbs\BrokenInhands.dm" -#include "code\modules\admin\verbs\cinematic.dm" -#include "code\modules\admin\verbs\custom_event.dm" -#include "code\modules\admin\verbs\deadsay.dm" -#include "code\modules\admin\verbs\debug.dm" -#include "code\modules\admin\verbs\diagnostics.dm" -#include "code\modules\admin\verbs\getlogs.dm" -#include "code\modules\admin\verbs\honksquad.dm" -#include "code\modules\admin\verbs\mapping.dm" -#include "code\modules\admin\verbs\massmodvar.dm" -#include "code\modules\admin\verbs\modifyvariables.dm" -#include "code\modules\admin\verbs\one_click_antag.dm" -#include "code\modules\admin\verbs\onlyone.dm" -#include "code\modules\admin\verbs\onlyoneteam.dm" -#include "code\modules\admin\verbs\playsound.dm" -#include "code\modules\admin\verbs\possess.dm" -#include "code\modules\admin\verbs\pray.dm" -#include "code\modules\admin\verbs\randomverbs.dm" -#include "code\modules\admin\verbs\striketeam.dm" -#include "code\modules\admin\verbs\striketeam_syndicate.dm" -#include "code\modules\admin\verbs\tripAI.dm" -#include "code\modules\admin\verbs\vox_raiders.dm" -#include "code\modules\assembly\assembly.dm" -#include "code\modules\assembly\bomb.dm" -#include "code\modules\assembly\helpers.dm" -#include "code\modules\assembly\holder.dm" -#include "code\modules\assembly\igniter.dm" -#include "code\modules\assembly\infrared.dm" -#include "code\modules\assembly\mousetrap.dm" -#include "code\modules\assembly\proximity.dm" -#include "code\modules\assembly\shock_kit.dm" -#include "code\modules\assembly\signaler.dm" -#include "code\modules\assembly\timer.dm" -#include "code\modules\assembly\voice.dm" -#include "code\modules\awaymissions\bluespaceartillery.dm" -#include "code\modules\awaymissions\corpse.dm" -#include "code\modules\awaymissions\exile.dm" -#include "code\modules\awaymissions\gateway.dm" -#include "code\modules\awaymissions\loot.dm" -#include "code\modules\awaymissions\pamphlet.dm" -#include "code\modules\awaymissions\trigger.dm" -#include "code\modules\client\client defines.dm" -#include "code\modules\client\client procs.dm" -#include "code\modules\client\preferences.dm" -#include "code\modules\client\preferences_mysql.dm" -#include "code\modules\client\preferences_toggles.dm" -#include "code\modules\clothing\clothing.dm" -#include "code\modules\clothing\glasses\glasses.dm" -#include "code\modules\clothing\glasses\hud.dm" -#include "code\modules\clothing\gloves\boxing.dm" -#include "code\modules\clothing\gloves\color.dm" -#include "code\modules\clothing\gloves\miscellaneous.dm" -#include "code\modules\clothing\gloves\ninja.dm" -#include "code\modules\clothing\head\collectable.dm" -#include "code\modules\clothing\head\hardhat.dm" -#include "code\modules\clothing\head\helmet.dm" -#include "code\modules\clothing\head\jobs.dm" -#include "code\modules\clothing\head\misc.dm" -#include "code\modules\clothing\head\misc_special.dm" -#include "code\modules\clothing\head\soft_caps.dm" -#include "code\modules\clothing\masks\boxing.dm" -#include "code\modules\clothing\masks\breath.dm" -#include "code\modules\clothing\masks\gasmask.dm" -#include "code\modules\clothing\masks\miscellaneous.dm" -#include "code\modules\clothing\shoes\colour.dm" -#include "code\modules\clothing\shoes\magboots.dm" -#include "code\modules\clothing\shoes\miscellaneous.dm" -#include "code\modules\clothing\spacesuits\alien.dm" -#include "code\modules\clothing\spacesuits\breaches.dm" -#include "code\modules\clothing\spacesuits\captain.dm" -#include "code\modules\clothing\spacesuits\ert.dm" -#include "code\modules\clothing\spacesuits\miscellaneous.dm" -#include "code\modules\clothing\spacesuits\ninja.dm" -#include "code\modules\clothing\spacesuits\rig.dm" -#include "code\modules\clothing\spacesuits\syndi.dm" -#include "code\modules\clothing\spacesuits\void.dm" -#include "code\modules\clothing\suits\alien.dm" -#include "code\modules\clothing\suits\armor.dm" -#include "code\modules\clothing\suits\bio.dm" -#include "code\modules\clothing\suits\jobs.dm" -#include "code\modules\clothing\suits\labcoat.dm" -#include "code\modules\clothing\suits\miscellaneous.dm" -#include "code\modules\clothing\suits\utility.dm" -#include "code\modules\clothing\suits\wiz_robe.dm" -#include "code\modules\clothing\under\chameleon.dm" -#include "code\modules\clothing\under\color.dm" -#include "code\modules\clothing\under\miscellaneous.dm" -#include "code\modules\clothing\under\shorts.dm" -#include "code\modules\clothing\under\syndicate.dm" -#include "code\modules\clothing\under\ties.dm" -#include "code\modules\clothing\under\jobs\civilian.dm" -#include "code\modules\clothing\under\jobs\engineering.dm" -#include "code\modules\clothing\under\jobs\medsci.dm" -#include "code\modules\clothing\under\jobs\security.dm" -#include "code\modules\customitems\item_defines.dm" -#include "code\modules\customitems\item_spawning.dm" -#include "code\modules\customitems\definitions\base.dm" -#include "code\modules\DetectiveWork\detective_work.dm" -#include "code\modules\DetectiveWork\evidence.dm" -#include "code\modules\DetectiveWork\footprints_and_rag.dm" -#include "code\modules\DetectiveWork\scanner.dm" -#include "code\modules\economy\Accounts.dm" -#include "code\modules\economy\Accounts_DB.dm" -#include "code\modules\economy\ATM.dm" -#include "code\modules\economy\Economy.dm" -#include "code\modules\economy\Economy_Events.dm" -#include "code\modules\economy\Economy_Events_Mundane.dm" -#include "code\modules\economy\Economy_TradeDestinations.dm" -#include "code\modules\economy\EFTPOS.dm" -#include "code\modules\economy\Job_Departments.dm" -#include "code\modules\economy\POS.dm" -#include "code\modules\economy\utils.dm" -#include "code\modules\events\blob.dm" -#include "code\modules\events\borers.dm" -#include "code\modules\events\cargobonus.dm" -#include "code\modules\events\carp_migration.dm" -#include "code\modules\events\comms_blackout.dm" -#include "code\modules\events\communications_blackout.dm" -#include "code\modules\events\electrical_storm.dm" -#include "code\modules\events\event.dm" -#include "code\modules\events\event_dynamic.dm" -#include "code\modules\events\event_manager.dm" -#include "code\modules\events\grid_check.dm" -#include "code\modules\events\infestation.dm" -#include "code\modules\events\ion_storm.dm" -#include "code\modules\events\meteors.dm" -#include "code\modules\events\money_hacker.dm" -#include "code\modules\events\money_lotto.dm" -#include "code\modules\events\money_spam.dm" -#include "code\modules\events\organ_failure.dm" -#include "code\modules\events\prison_break.dm" -#include "code\modules\events\radiation_storm.dm" -#include "code\modules\events\rogue_drones.dm" -#include "code\modules\events\space_ninja.dm" -#include "code\modules\events\spacevine.dm" -#include "code\modules\events\tear.dm" -#include "code\modules\events\viral_infection.dm" -#include "code\modules\events\viral_outbreak.dm" -#include "code\modules\events\wallrot.dm" -#include "code\modules\events\sayuevents\meaty_ores.dm" -#include "code\modules\events\sayuevents\spooky.dm" -#include "code\modules\events\sayuevents\undead.dm" -#include "code\modules\events\sayuevents\wormholes.dm" -#include "code\modules\events\tgevents\alien_infestation.dm" -#include "code\modules\events\tgevents\anomaly.dm" -#include "code\modules\events\tgevents\anomaly_bluespace.dm" -#include "code\modules\events\tgevents\anomaly_flux.dm" -#include "code\modules\events\tgevents\anomaly_grav.dm" -#include "code\modules\events\tgevents\anomaly_pyro.dm" -#include "code\modules\events\tgevents\anomaly_vortex.dm" -#include "code\modules\events\tgevents\brand_intelligence.dm" -#include "code\modules\events\tgevents\dust.dm" -#include "code\modules\events\tgevents\false_alarm.dm" -#include "code\modules\events\tgevents\immovable_rod.dm" -#include "code\modules\events\tgevents\mass_hallucination.dm" -#include "code\modules\events\tgevents\spider_infestation.dm" -#include "code\modules\events\tgevents\vent_clog.dm" -#include "code\modules\ext_scripts\irc.dm" -#include "code\modules\ext_scripts\python.dm" -#include "code\modules\flufftext\Dreaming.dm" -#include "code\modules\flufftext\Hallucination.dm" -#include "code\modules\flufftext\TextFilters.dm" -#include "code\modules\food\cereal_maker.dm" -#include "code\modules\food\cooker.dm" -#include "code\modules\food\customizables.dm" -#include "code\modules\food\deep_fryer.dm" -#include "code\modules\food\food_grill.dm" -#include "code\modules\food\icecream_vat.dm" -#include "code\modules\food\oven.dm" -#include "code\modules\food\recipes_microwave.dm" -#include "code\modules\genetics\side_effects.dm" -#include "code\modules\hydroponics\grown_inedible.dm" -#include "code\modules\hydroponics\hydro_tools.dm" -#include "code\modules\hydroponics\seed_datums.dm" -#include "code\modules\hydroponics\seed_machines.dm" -#include "code\modules\hydroponics\seed_mobs.dm" -#include "code\modules\hydroponics\seeds.dm" -#include "code\modules\hydroponics\vines.dm" -#include "code\modules\library\lib_items.dm" -#include "code\modules\library\lib_machines.dm" -#include "code\modules\library\lib_readme.dm" -#include "code\modules\media\jukebox.dm" -#include "code\modules\media\machinery.dm" -#include "code\modules\media\mediamanager.dm" -#include "code\modules\media\broadcast\receiver.dm" -#include "code\modules\media\broadcast\transmitter.dm" -#include "code\modules\media\broadcast\receivers\radio.dm" -#include "code\modules\media\broadcast\transmitters\broadcast.dm" -#include "code\modules\mining\abandonedcrates.dm" -#include "code\modules\mining\alloys.dm" -#include "code\modules\mining\coins.dm" -#include "code\modules\mining\equipment_locker.dm" -#include "code\modules\mining\machine_input_output_plates.dm" -#include "code\modules\mining\machine_processing.dm" -#include "code\modules\mining\machine_stacking.dm" -#include "code\modules\mining\machine_unloading.dm" -#include "code\modules\mining\manufacturing.dm" -#include "code\modules\mining\materials.dm" -#include "code\modules\mining\mine_areas.dm" -#include "code\modules\mining\mine_items.dm" -#include "code\modules\mining\mine_turfs.dm" -#include "code\modules\mining\minerals.dm" -#include "code\modules\mining\mining_recipes.dm" -#include "code\modules\mining\mint.dm" -#include "code\modules\mining\money_bag.dm" -#include "code\modules\mining\ore.dm" -#include "code\modules\mining\ore_datum.dm" -#include "code\modules\mining\satchel_ore_boxdm.dm" -#include "code\modules\mining\security_recipes.dm" -#include "code\modules\mining\surprise.dm" -#include "code\modules\mining\drilling\distribution.dm" -#include "code\modules\mining\drilling\drill.dm" -#include "code\modules\mining\drilling\scanner.dm" -#include "code\modules\mining\laborcamp\laborminerals.dm" -#include "code\modules\mining\laborcamp\laborshuttle.dm" -#include "code\modules\mining\laborcamp\laborstacker.dm" -#include "code\modules\mining\surprises\tg.dm" -#include "code\modules\mining\surprises\vg.dm" -#include "code\modules\mob\abilities.dm" -#include "code\modules\mob\death.dm" -#include "code\modules\mob\emote.dm" -#include "code\modules\mob\holder.dm" -#include "code\modules\mob\inventory.dm" -#include "code\modules\mob\language.dm" -#include "code\modules\mob\login.dm" -#include "code\modules\mob\logout.dm" -#include "code\modules\mob\mob.dm" -#include "code\modules\mob\mob_defines.dm" -#include "code\modules\mob\mob_grab.dm" -#include "code\modules\mob\mob_helpers.dm" -#include "code\modules\mob\mob_movement.dm" -#include "code\modules\mob\mob_transformation_simple.dm" -#include "code\modules\mob\say.dm" -#include "code\modules\mob\transform_procs.dm" -#include "code\modules\mob\update_icons.dm" -#include "code\modules\mob\camera\camera.dm" -#include "code\modules\mob\dead\death.dm" -#include "code\modules\mob\dead\observer\logout.dm" -#include "code\modules\mob\dead\observer\observer.dm" -#include "code\modules\mob\dead\observer\say.dm" -#include "code\modules\mob\dead\observer\spells.dm" -#include "code\modules\mob\living\damage_procs.dm" -#include "code\modules\mob\living\living.dm" -#include "code\modules\mob\living\living_defense.dm" -#include "code\modules\mob\living\living_defines.dm" -#include "code\modules\mob\living\login.dm" -#include "code\modules\mob\living\logout.dm" -#include "code\modules\mob\living\say.dm" -#include "code\modules\mob\living\carbon\_defines.dm" -#include "code\modules\mob\living\carbon\carbon.dm" -#include "code\modules\mob\living\carbon\carbon_defenses.dm" -#include "code\modules\mob\living\carbon\carbon_defines.dm" -#include "code\modules\mob\living\carbon\give.dm" -#include "code\modules\mob\living\carbon\shock.dm" -#include "code\modules\mob\living\carbon\species.dm" -#include "code\modules\mob\living\carbon\alien\alien.dm" -#include "code\modules\mob\living\carbon\alien\alien_defenses.dm" -#include "code\modules\mob\living\carbon\alien\death.dm" -#include "code\modules\mob\living\carbon\alien\login.dm" -#include "code\modules\mob\living\carbon\alien\logout.dm" -#include "code\modules\mob\living\carbon\alien\powers.dm" -#include "code\modules\mob\living\carbon\alien\say.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\emote.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\empress.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\life.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\login.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\queen.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\update_icons.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\drone.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\hunter.dm" -#include "code\modules\mob\living\carbon\alien\humanoid\caste\sentinel.dm" -#include "code\modules\mob\living\carbon\alien\larva\death.dm" -#include "code\modules\mob\living\carbon\alien\larva\emote.dm" -#include "code\modules\mob\living\carbon\alien\larva\inventory.dm" -#include "code\modules\mob\living\carbon\alien\larva\larva.dm" -#include "code\modules\mob\living\carbon\alien\larva\life.dm" -#include "code\modules\mob\living\carbon\alien\larva\powers.dm" -#include "code\modules\mob\living\carbon\alien\larva\update_icons.dm" -#include "code\modules\mob\living\carbon\alien\special\alien_embryo.dm" -#include "code\modules\mob\living\carbon\alien\special\facehugger.dm" -#include "code\modules\mob\living\carbon\brain\brain.dm" -#include "code\modules\mob\living\carbon\brain\brain_item.dm" -#include "code\modules\mob\living\carbon\brain\death.dm" -#include "code\modules\mob\living\carbon\brain\emote.dm" -#include "code\modules\mob\living\carbon\brain\life.dm" -#include "code\modules\mob\living\carbon\brain\login.dm" -#include "code\modules\mob\living\carbon\brain\MMI.dm" -#include "code\modules\mob\living\carbon\brain\posibrain.dm" -#include "code\modules\mob\living\carbon\brain\say.dm" -#include "code\modules\mob\living\carbon\human\death.dm" -#include "code\modules\mob\living\carbon\human\emote.dm" -#include "code\modules\mob\living\carbon\human\examine.dm" -#include "code\modules\mob\living\carbon\human\human.dm" -#include "code\modules\mob\living\carbon\human\human_attackalien.dm" -#include "code\modules\mob\living\carbon\human\human_attackhand.dm" -#include "code\modules\mob\living\carbon\human\human_attackpaw.dm" -#include "code\modules\mob\living\carbon\human\human_damage.dm" -#include "code\modules\mob\living\carbon\human\human_defense.dm" -#include "code\modules\mob\living\carbon\human\human_defines.dm" -#include "code\modules\mob\living\carbon\human\human_movement.dm" -#include "code\modules\mob\living\carbon\human\inventory.dm" -#include "code\modules\mob\living\carbon\human\life.dm" -#include "code\modules\mob\living\carbon\human\login.dm" -#include "code\modules\mob\living\carbon\human\say.dm" -#include "code\modules\mob\living\carbon\human\update_icons.dm" -#include "code\modules\mob\living\carbon\human\whisper.dm" -#include "code\modules\mob\living\carbon\human\plasmaman\species.dm" -#include "code\modules\mob\living\carbon\metroid\death.dm" -#include "code\modules\mob\living\carbon\metroid\emote.dm" -#include "code\modules\mob\living\carbon\metroid\examine.dm" -#include "code\modules\mob\living\carbon\metroid\hud.dm" -#include "code\modules\mob\living\carbon\metroid\life.dm" -#include "code\modules\mob\living\carbon\metroid\login.dm" -#include "code\modules\mob\living\carbon\metroid\metroid.dm" -#include "code\modules\mob\living\carbon\metroid\powers.dm" -#include "code\modules\mob\living\carbon\metroid\say.dm" -#include "code\modules\mob\living\carbon\metroid\subtypes.dm" -#include "code\modules\mob\living\carbon\metroid\update_icons.dm" -#include "code\modules\mob\living\carbon\monkey\death.dm" -#include "code\modules\mob\living\carbon\monkey\diona.dm" -#include "code\modules\mob\living\carbon\monkey\emote.dm" -#include "code\modules\mob\living\carbon\monkey\examine.dm" -#include "code\modules\mob\living\carbon\monkey\inventory.dm" -#include "code\modules\mob\living\carbon\monkey\life.dm" -#include "code\modules\mob\living\carbon\monkey\login.dm" -#include "code\modules\mob\living\carbon\monkey\monkey.dm" -#include "code\modules\mob\living\carbon\monkey\powers.dm" -#include "code\modules\mob\living\carbon\monkey\update_icons.dm" -#include "code\modules\mob\living\silicon\death.dm" -#include "code\modules\mob\living\silicon\login.dm" -#include "code\modules\mob\living\silicon\say.dm" -#include "code\modules\mob\living\silicon\silicon.dm" -#include "code\modules\mob\living\silicon\ai\ai.dm" -#include "code\modules\mob\living\silicon\ai\death.dm" -#include "code\modules\mob\living\silicon\ai\examine.dm" -#include "code\modules\mob\living\silicon\ai\laws.dm" -#include "code\modules\mob\living\silicon\ai\life.dm" -#include "code\modules\mob\living\silicon\ai\login.dm" -#include "code\modules\mob\living\silicon\ai\logout.dm" -#include "code\modules\mob\living\silicon\ai\say.dm" -#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" -#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" -#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" -#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" -#include "code\modules\mob\living\silicon\ai\freelook\update_triggers.dm" -#include "code\modules\mob\living\silicon\ai\freelook\visibility_interface.dm" -#include "code\modules\mob\living\silicon\decoy\death.dm" -#include "code\modules\mob\living\silicon\decoy\decoy.dm" -#include "code\modules\mob\living\silicon\decoy\life.dm" -#include "code\modules\mob\living\silicon\pai\death.dm" -#include "code\modules\mob\living\silicon\pai\examine.dm" -#include "code\modules\mob\living\silicon\pai\hud.dm" -#include "code\modules\mob\living\silicon\pai\life.dm" -#include "code\modules\mob\living\silicon\pai\pai.dm" -#include "code\modules\mob\living\silicon\pai\personality.dm" -#include "code\modules\mob\living\silicon\pai\recruit.dm" -#include "code\modules\mob\living\silicon\pai\say.dm" -#include "code\modules\mob\living\silicon\pai\software.dm" -#include "code\modules\mob\living\silicon\robot\component.dm" -#include "code\modules\mob\living\silicon\robot\death.dm" -#include "code\modules\mob\living\silicon\robot\emote.dm" -#include "code\modules\mob\living\silicon\robot\examine.dm" -#include "code\modules\mob\living\silicon\robot\inventory.dm" -#include "code\modules\mob\living\silicon\robot\laws.dm" -#include "code\modules\mob\living\silicon\robot\life.dm" -#include "code\modules\mob\living\silicon\robot\login.dm" -#include "code\modules\mob\living\silicon\robot\photos.dm" -#include "code\modules\mob\living\silicon\robot\robot.dm" -#include "code\modules\mob\living\silicon\robot\robot_damage.dm" -#include "code\modules\mob\living\silicon\robot\robot_items.dm" -#include "code\modules\mob\living\silicon\robot\robot_modules.dm" -#include "code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" -#include "code\modules\mob\living\simple_animal\bees.dm" -#include "code\modules\mob\living\simple_animal\borer.dm" -#include "code\modules\mob\living\simple_animal\constructs.dm" -#include "code\modules\mob\living\simple_animal\corpse.dm" -#include "code\modules\mob\living\simple_animal\parrot.dm" -#include "code\modules\mob\living\simple_animal\powers.dm" -#include "code\modules\mob\living\simple_animal\shade.dm" -#include "code\modules\mob\living\simple_animal\simple_animal.dm" -#include "code\modules\mob\living\simple_animal\tribbles.dm" -#include "code\modules\mob\living\simple_animal\vox.dm" -#include "code\modules\mob\living\simple_animal\worm.dm" -#include "code\modules\mob\living\simple_animal\friendly\cat.dm" -#include "code\modules\mob\living\simple_animal\friendly\corgi.dm" -#include "code\modules\mob\living\simple_animal\friendly\crab.dm" -#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" -#include "code\modules\mob\living\simple_animal\friendly\lizard.dm" -#include "code\modules\mob\living\simple_animal\friendly\mouse.dm" -#include "code\modules\mob\living\simple_animal\friendly\slime.dm" -#include "code\modules\mob\living\simple_animal\friendly\spiderbot.dm" -#include "code\modules\mob\living\simple_animal\friendly\tomato.dm" -#include "code\modules\mob\living\simple_animal\hostile\alien.dm" -#include "code\modules\mob\living\simple_animal\hostile\bat.dm" -#include "code\modules\mob\living\simple_animal\hostile\bear.dm" -#include "code\modules\mob\living\simple_animal\hostile\carp.dm" -#include "code\modules\mob\living\simple_animal\hostile\creature.dm" -#include "code\modules\mob\living\simple_animal\hostile\faithless.dm" -#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" -#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm" -#include "code\modules\mob\living\simple_animal\hostile\hostile.dm" -#include "code\modules\mob\living\simple_animal\hostile\mimic.dm" -#include "code\modules\mob\living\simple_animal\hostile\mining_mobs.dm" -#include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" -#include "code\modules\mob\living\simple_animal\hostile\pirate.dm" -#include "code\modules\mob\living\simple_animal\hostile\russian.dm" -#include "code\modules\mob\living\simple_animal\hostile\statue.dm" -#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm" -#include "code\modules\mob\living\simple_animal\hostile\tree.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\undead.dm" -#include "code\modules\mob\new_player\login.dm" -#include "code\modules\mob\new_player\logout.dm" -#include "code\modules\mob\new_player\new_player.dm" -#include "code\modules\mob\new_player\poll.dm" -#include "code\modules\mob\new_player\preferences_setup.dm" -#include "code\modules\mob\new_player\sprite_accessories.dm" -#include "code\modules\mob\spirit\cultnet.dm" -#include "code\modules\mob\spirit\movement.dm" -#include "code\modules\mob\spirit\spirit.dm" -#include "code\modules\mob\spirit\viewpoint.dm" -#include "code\modules\mob\spirit\mask\mask.dm" -#include "code\modules\mob\spirit\mask\respawn.dm" -#include "code\modules\nano\_JSON.dm" -#include "code\modules\nano\JSON Reader.dm" -#include "code\modules\nano\JSON Writer.dm" -#include "code\modules\nano\nanoexternal.dm" -#include "code\modules\nano\nanomanager.dm" -#include "code\modules\nano\nanomapgen.dm" -#include "code\modules\nano\nanoui.dm" -#include "code\modules\organs\blood.dm" -#include "code\modules\organs\organ.dm" -#include "code\modules\organs\organ_external.dm" -#include "code\modules\organs\organ_internal.dm" -#include "code\modules\organs\pain.dm" -#include "code\modules\organs\skeleton.dm" -#include "code\modules\organs\wound.dm" -#include "code\modules\paperwork\carbonpaper.dm" -#include "code\modules\paperwork\clipboard.dm" -#include "code\modules\paperwork\faxmachine.dm" -#include "code\modules\paperwork\filingcabinet.dm" -#include "code\modules\paperwork\folders.dm" -#include "code\modules\paperwork\handlabeler.dm" -#include "code\modules\paperwork\paper.dm" -#include "code\modules\paperwork\paper_bundle.dm" -#include "code\modules\paperwork\paperbin.dm" -#include "code\modules\paperwork\pen.dm" -#include "code\modules\paperwork\photocopier.dm" -#include "code\modules\paperwork\photography.dm" -#include "code\modules\paperwork\silicon_photography.dm" -#include "code\modules\paperwork\stamps.dm" -#include "code\modules\power\apc.dm" -#include "code\modules\power\cable.dm" -#include "code\modules\power\cable_heavyduty.dm" -#include "code\modules\power\cable_logic.dm" -#include "code\modules\power\cell.dm" -#include "code\modules\power\engine.dm" -#include "code\modules\power\generator.dm" -#include "code\modules\power\generator_type2.dm" -#include "code\modules\power\gravitygenerator.dm" -#include "code\modules\power\lighting.dm" -#include "code\modules\power\port_gen.dm" -#include "code\modules\power\power.dm" -#include "code\modules\power\smes.dm" -#include "code\modules\power\solar.dm" -#include "code\modules\power\switch.dm" -#include "code\modules\power\terminal.dm" -#include "code\modules\power\tracker.dm" -#include "code\modules\power\turbine.dm" -#include "code\modules\power\singularity\collector.dm" -#include "code\modules\power\singularity\containment_field.dm" -#include "code\modules\power\singularity\emitter.dm" -#include "code\modules\power\singularity\field_generator.dm" -#include "code\modules\power\singularity\generator.dm" -#include "code\modules\power\singularity\investigate.dm" -#include "code\modules\power\singularity\singularity.dm" -#include "code\modules\power\singularity\particle_accelerator\particle.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_chamber.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_control.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_power.dm" -#include "code\modules\projectiles\ammunition.dm" -#include "code\modules\projectiles\gun.dm" -#include "code\modules\projectiles\projectile.dm" -#include "code\modules\projectiles\targeting.dm" -#include "code\modules\projectiles\ammunition\boxes.dm" -#include "code\modules\projectiles\ammunition\bullets.dm" -#include "code\modules\projectiles\ammunition\magazines.dm" -#include "code\modules\projectiles\guns\alien.dm" -#include "code\modules\projectiles\guns\energy.dm" -#include "code\modules\projectiles\guns\magic.dm" -#include "code\modules\projectiles\guns\projectile.dm" -#include "code\modules\projectiles\guns\energy\laser.dm" -#include "code\modules\projectiles\guns\energy\nuclear.dm" -#include "code\modules\projectiles\guns\energy\pulse.dm" -#include "code\modules\projectiles\guns\energy\special.dm" -#include "code\modules\projectiles\guns\energy\stun.dm" -#include "code\modules\projectiles\guns\energy\temperature.dm" -#include "code\modules\projectiles\guns\magic\staff.dm" -#include "code\modules\projectiles\guns\magic\wand.dm" -#include "code\modules\projectiles\guns\projectile\automatic.dm" -#include "code\modules\projectiles\guns\projectile\crossbow.dm" -#include "code\modules\projectiles\guns\projectile\launcher.dm" -#include "code\modules\projectiles\guns\projectile\pistol.dm" -#include "code\modules\projectiles\guns\projectile\pneumatic.dm" -#include "code\modules\projectiles\guns\projectile\revolver.dm" -#include "code\modules\projectiles\guns\projectile\rocket.dm" -#include "code\modules\projectiles\guns\projectile\shotgun.dm" -#include "code\modules\projectiles\projectile\animate.dm" -#include "code\modules\projectiles\projectile\beams.dm" -#include "code\modules\projectiles\projectile\bullets.dm" -#include "code\modules\projectiles\projectile\change.dm" -#include "code\modules\projectiles\projectile\energy.dm" -#include "code\modules\projectiles\projectile\force.dm" -#include "code\modules\projectiles\projectile\magic.dm" -#include "code\modules\projectiles\projectile\special.dm" -#include "code\modules\reagents\Chemistry-Colours.dm" -#include "code\modules\reagents\Chemistry-Holder.dm" -#include "code\modules\reagents\Chemistry-Machinery.dm" -#include "code\modules\reagents\Chemistry-Readme.dm" -#include "code\modules\reagents\Chemistry-Reagents-Antidepressants.dm" -#include "code\modules\reagents\Chemistry-Reagents.dm" -#include "code\modules\reagents\Chemistry-Recipes.dm" -#include "code\modules\reagents\dartgun.dm" -#include "code\modules\reagents\grenade_launcher.dm" -#include "code\modules\reagents\reagent_containers.dm" -#include "code\modules\reagents\reagent_dispenser.dm" -#include "code\modules\reagents\syringe_gun.dm" -#include "code\modules\reagents\reagent_containers\blood_pack.dm" -#include "code\modules\reagents\reagent_containers\borghydro.dm" -#include "code\modules\reagents\reagent_containers\dropper.dm" -#include "code\modules\reagents\reagent_containers\drugs.dm" -#include "code\modules\reagents\reagent_containers\food.dm" -#include "code\modules\reagents\reagent_containers\glass.dm" -#include "code\modules\reagents\reagent_containers\hypospray.dm" -#include "code\modules\reagents\reagent_containers\pill.dm" -#include "code\modules\reagents\reagent_containers\robodropper.dm" -#include "code\modules\reagents\reagent_containers\spray.dm" -#include "code\modules\reagents\reagent_containers\syringes.dm" -#include "code\modules\reagents\reagent_containers\food\cans.dm" -#include "code\modules\reagents\reagent_containers\food\condiment.dm" -#include "code\modules\reagents\reagent_containers\food\drinks.dm" -#include "code\modules\reagents\reagent_containers\food\sandwich.dm" -#include "code\modules\reagents\reagent_containers\food\snacks.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\bottle.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\drinkingglass.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\jar.dm" -#include "code\modules\reagents\reagent_containers\food\drinks\bottle\robot.dm" -#include "code\modules\reagents\reagent_containers\food\snacks\grown.dm" -#include "code\modules\reagents\reagent_containers\food\snacks\meat.dm" -#include "code\modules\reagents\reagent_containers\glass\bottle.dm" -#include "code\modules\reagents\reagent_containers\glass\bottle\robot.dm" -#include "code\modules\recycling\conveyor2.dm" -#include "code\modules\recycling\disposal-construction.dm" -#include "code\modules\recycling\disposal.dm" -#include "code\modules\recycling\sortingmachinery.dm" -#include "code\modules\research\circuitprinter.dm" -#include "code\modules\research\designs.dm" -#include "code\modules\research\destructive_analyzer.dm" -#include "code\modules\research\message_server.dm" -#include "code\modules\research\protolathe.dm" -#include "code\modules\research\rd-readme.dm" -#include "code\modules\research\rdconsole.dm" -#include "code\modules\research\rdmachines.dm" -#include "code\modules\research\research.dm" -#include "code\modules\research\server.dm" -#include "code\modules\research\xenoarchaeology\areas.dm" -#include "code\modules\research\xenoarchaeology\chemistry.dm" -#include "code\modules\research\xenoarchaeology\geosample.dm" -#include "code\modules\research\xenoarchaeology\manuals.dm" -#include "code\modules\research\xenoarchaeology\master_controller.dm" -#include "code\modules\research\xenoarchaeology\misc.dm" -#include "code\modules\research\xenoarchaeology\readme.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_autocloner.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_crystal.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_gigadrill.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_hoverpod.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_replicator.dm" -#include "code\modules\research\xenoarchaeology\artifact\artifact_unknown.dm" -#include "code\modules\research\xenoarchaeology\artifact\effect.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_affect_cold.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_badfeeling.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_cellcharge.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_celldrain.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_dnaswitch.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_emp.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_forcefield.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasco2.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasnitro.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasoxy.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasplasma.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gassleeping.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_goodfeeling.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heal.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heat.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_hurt.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_radiate.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_roboheal.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_robohurt.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_sleepy.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_stun.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_teleport.dm" -#include "code\modules\research\xenoarchaeology\finds\finds.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_defines.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_fossils.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_misc.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_special.dm" -#include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" -#include "code\modules\research\xenoarchaeology\genetics\prehistoric_animals.dm" -#include "code\modules\research\xenoarchaeology\genetics\prehistoric_plants.dm" -#include "code\modules\research\xenoarchaeology\genetics\prehistoric_seeds.dm" -#include "code\modules\research\xenoarchaeology\genetics\reconstitutor.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_analyser.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_harvester.dm" -#include "code\modules\research\xenoarchaeology\machinery\artifact_scanner.dm" -#include "code\modules\research\xenoarchaeology\machinery\coolant.dm" -#include "code\modules\research\xenoarchaeology\machinery\geosample_scanner.dm" -#include "code\modules\research\xenoarchaeology\tools\ano_device_battery.dm" -#include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" -#include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" -#include "code\modules\research\xenoarchaeology\tools\gearbelt.dm" -#include "code\modules\research\xenoarchaeology\tools\suspension_generator.dm" -#include "code\modules\research\xenoarchaeology\tools\tools.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_anoscanner.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_coresampler.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_locater.dm" -#include "code\modules\research\xenoarchaeology\tools\tools_pickaxe.dm" -#include "code\modules\scripting\Errors.dm" -#include "code\modules\scripting\IDE.dm" -#include "code\modules\scripting\Options.dm" -#include "code\modules\scripting\stack.dm" -#include "code\modules\scripting\AST\AST Nodes.dm" -#include "code\modules\scripting\AST\Blocks.dm" -#include "code\modules\scripting\AST\Statements.dm" -#include "code\modules\scripting\AST\Operators\Binary Operators.dm" -#include "code\modules\scripting\AST\Operators\Unary Operators.dm" -#include "code\modules\scripting\Implementations\_Logic.dm" -#include "code\modules\scripting\Implementations\Telecomms.dm" -#include "code\modules\scripting\Interpreter\Evaluation.dm" -#include "code\modules\scripting\Interpreter\Interaction.dm" -#include "code\modules\scripting\Interpreter\Interpreter.dm" -#include "code\modules\scripting\Interpreter\Scope.dm" -#include "code\modules\scripting\Parser\Expressions.dm" -#include "code\modules\scripting\Parser\Keywords.dm" -#include "code\modules\scripting\Parser\Parser.dm" -#include "code\modules\scripting\Scanner\Scanner.dm" -#include "code\modules\scripting\Scanner\Tokens.dm" -#include "code\modules\security levels\keycard authentication.dm" -#include "code\modules\security levels\security levels.dm" -#include "code\modules\shuttles\antagonist.dm" -#include "code\modules\shuttles\departmental.dm" -#include "code\modules\shuttles\escape_pods.dm" -#include "code\modules\shuttles\shuttle.dm" -#include "code\modules\shuttles\shuttle_console.dm" -#include "code\modules\shuttles\shuttle_emergency.dm" -#include "code\modules\shuttles\shuttle_ferry.dm" -#include "code\modules\shuttles\shuttle_specops.dm" -#include "code\modules\shuttles\shuttle_supply.dm" -#include "code\modules\shuttles\shuttles_multi.dm" -#include "code\modules\store\items.dm" -#include "code\modules\store\store.dm" -#include "code\modules\supermatter\supermatter.dm" -#include "code\modules\surgery\bones.dm" -#include "code\modules\surgery\braincore.dm" -#include "code\modules\surgery\eye.dm" -#include "code\modules\surgery\face.dm" -#include "code\modules\surgery\generic.dm" -#include "code\modules\surgery\headreattach.dm" -#include "code\modules\surgery\implant.dm" -#include "code\modules\surgery\other.dm" -#include "code\modules\surgery\ribcage.dm" -#include "code\modules\surgery\robolimbs.dm" -#include "code\modules\surgery\surgery.dm" -#include "code\modules\vehicles\ambulance.dm" -#include "code\modules\vehicles\cargo_train.dm" -#include "code\modules\vehicles\janicart.dm" -#include "code\modules\vehicles\train.dm" -#include "code\modules\vehicles\vehicle.dm" -#include "code\modules\virus2\analyser.dm" -#include "code\modules\virus2\antibodies.dm" -#include "code\modules\virus2\centrifuge.dm" -#include "code\modules\virus2\curer.dm" -#include "code\modules\virus2\disease2.dm" -#include "code\modules\virus2\diseasesplicer.dm" -#include "code\modules\virus2\dishincubator.dm" -#include "code\modules\virus2\effect.dm" -#include "code\modules\virus2\helpers.dm" -#include "code\modules\virus2\isolator.dm" -#include "code\modules\virus2\items_devices.dm" -#include "code\WorkInProgress\autopsy.dm" -#include "code\WorkInProgress\buildmode.dm" -#include "code\WorkInProgress\explosion_particles.dm" -#include "code\WorkInProgress\fireworks.dm" -#include "code\WorkInProgress\periodic_news.dm" -#include "code\WorkInProgress\Apples\artifacts.dm" -#include "code\WorkInProgress\Cael_Aislinn\sculpture.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\falsewall.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_animals.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_plants.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_temple.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_tribe.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_turfs.dm" -#include "code\WorkInProgress\Cael_Aislinn\Jungle\misc_helpers.dm" -#include "code\WorkInProgress\Cael_Aislinn\Rust\areas.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\circuits_and_designs.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\energy_field.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_capacitor.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen.dm" -#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen_external.dm" -#include "code\WorkInProgress\Chinsky\ashtray.dm" -#include "code\WorkInProgress\Chinsky\guestpass.dm" -#include "code\WorkInProgress\Cib\MedicalSideEffects.dm" -#include "code\WorkInProgress\computer3\bios.dm" -#include "code\WorkInProgress\computer3\buildandrepair.dm" -#include "code\WorkInProgress\computer3\component.dm" -#include "code\WorkInProgress\computer3\computer.dm" -#include "code\WorkInProgress\computer3\computer3_notes.dm" -#include "code\WorkInProgress\computer3\file.dm" -#include "code\WorkInProgress\computer3\laptop.dm" -#include "code\WorkInProgress\computer3\lapvend.dm" -#include "code\WorkInProgress\computer3\networking.dm" -#include "code\WorkInProgress\computer3\NTOS.dm" -#include "code\WorkInProgress\computer3\program.dm" -#include "code\WorkInProgress\computer3\program_disks.dm" -#include "code\WorkInProgress\computer3\server.dm" -#include "code\WorkInProgress\computer3\storage.dm" -#include "code\WorkInProgress\computer3\computers\arcade.dm" -#include "code\WorkInProgress\computer3\computers\atmos_alert.dm" -#include "code\WorkInProgress\computer3\computers\camera.dm" -#include "code\WorkInProgress\computer3\computers\card.dm" -#include "code\WorkInProgress\computer3\computers\communications.dm" -#include "code\WorkInProgress\computer3\computers\crew.dm" -#include "code\WorkInProgress\computer3\computers\customs.dm" -#include "code\WorkInProgress\computer3\computers\HolodeckControl.dm" -#include "code\WorkInProgress\computer3\computers\law.dm" -#include "code\WorkInProgress\computer3\computers\medical.dm" -#include "code\WorkInProgress\computer3\computers\Operating.dm" -#include "code\WorkInProgress\computer3\computers\power.dm" -#include "code\WorkInProgress\computer3\computers\prisoner.dm" -#include "code\WorkInProgress\computer3\computers\robot.dm" -#include "code\WorkInProgress\computer3\computers\security.dm" -#include "code\WorkInProgress\computer3\computers\welcome.dm" -#include "code\WorkInProgress\Mini\atmos_control.dm" -#include "code\WorkInProgress\Ported\policetape.dm" -#include "code\WorkInProgress\Sayu\belt.dm" -#include "code\WorkInProgress\Sayu\cargoprofile.dm" -#include "code\WorkInProgress\Sayu\grenades.dm" -#include "code\WorkInProgress\Sayu\programmable.dm" -#include "code\WorkInProgress\Sayu\random_items.dm" -#include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm" -#include "code\WorkInProgress\ZomgPonies\karma.dm" -#include "code\WorkInProgress\ZomgPonies\clothing\civilian.dm" -#include "code\WorkInProgress\ZomgPonies\mobs\pony.dm" -#include "code\WorkInProgress\ZomgPonies\oldcode\turntable.dm" -#include "code\WorkInProgress\ZomgPonies\powerarmor\powerarmor.dm" -#include "code\WorkInProgress\ZomgPonies\powerarmor\powerarmorcomponents.dm" -#include "code\ZAS\_docs.dm" -#include "code\ZAS\_gas_mixture.dm" -#include "code\ZAS\Airflow.dm" -#include "code\ZAS\Atom.dm" -#include "code\ZAS\Connection.dm" -#include "code\ZAS\ConnectionGroup.dm" -#include "code\ZAS\ConnectionManager.dm" -#include "code\ZAS\Controller.dm" -#include "code\ZAS\Debug.dm" -#include "code\ZAS\Diagnostic.dm" -#include "code\ZAS\Fire.dm" -#include "code\ZAS\Plasma.dm" -#include "code\ZAS\Turf.dm" -#include "code\ZAS\Variable Settings.dm" -#include "code\ZAS\Zone.dm" -#include "interface\interface.dm" -#include "interface\skin.dmf" -#include "maps\cyberiad.dmm" -#include "maps\RandomZLevels\clown3.dmm" -// END_INCLUDE +// DM Environment file for baystation12.dme. +// All manual changes should be made outside the BEGIN_ and END_ blocks. + // New source code should be placed in .dm files: choose File/New --> Code File. +// BEGIN_INTERNALS +// END_INTERNALS +// BEGIN_FILE_DIR +#define FILE_DIR . +#define FILE_DIR "code" +#define FILE_DIR "code/TriDimension" +#define FILE_DIR "code/unused" +#define FILE_DIR "code/unused/goonheist" +#define FILE_DIR "code/WorkInProgress" +#define FILE_DIR "code/WorkInProgress/Cael_Aislinn" +#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/IndexLP" +#define FILE_DIR "code/WorkInProgress/Susan" +#define FILE_DIR "html" +#define FILE_DIR "icons" +#define FILE_DIR "icons/48x48" +#define FILE_DIR "icons/ass" +#define FILE_DIR "icons/effects" +#define FILE_DIR "icons/mecha" +#define FILE_DIR "icons/misc" +#define FILE_DIR "icons/mob" +#define FILE_DIR "icons/mob/human_races" +#define FILE_DIR "icons/mob/in-hand" +#define FILE_DIR "icons/mob/in-hand/left" +#define FILE_DIR "icons/mob/in-hand/right" +#define FILE_DIR "icons/mob/otherHuman" +#define FILE_DIR "icons/mob/species" +#define FILE_DIR "icons/mob/species/armalis" +#define FILE_DIR "icons/mob/species/skrell" +#define FILE_DIR "icons/mob/species/tajaran" +#define FILE_DIR "icons/mob/species/unathi" +#define FILE_DIR "icons/mob/species/vox" +#define FILE_DIR "icons/mob/spirits" +#define FILE_DIR "icons/NTOS" +#define FILE_DIR "icons/NTOS/battery_icons" +#define FILE_DIR "icons/obj" +#define FILE_DIR "icons/obj/assemblies" +#define FILE_DIR "icons/obj/atmospherics" +#define FILE_DIR "icons/obj/clothing" +#define FILE_DIR "icons/obj/clothing/species" +#define FILE_DIR "icons/obj/clothing/species/skrell" +#define FILE_DIR "icons/obj/clothing/species/tajaran" +#define FILE_DIR "icons/obj/clothing/species/unathi" +#define FILE_DIR "icons/obj/doors" +#define FILE_DIR "icons/obj/flora" +#define FILE_DIR "icons/obj/machines" +#define FILE_DIR "icons/obj/pipes" +#define FILE_DIR "icons/obj/power_cond" +#define FILE_DIR "icons/pda_icons" +#define FILE_DIR "icons/pods" +#define FILE_DIR "icons/spideros_icons" +#define FILE_DIR "icons/stamp_icons" +#define FILE_DIR "icons/Testing" +#define FILE_DIR "icons/turf" +#define FILE_DIR "icons/vehicles" +#define FILE_DIR "icons/vending_icons" +#define FILE_DIR "maps" +#define FILE_DIR "maps/overmap" +#define FILE_DIR "maps/overmap/bearcat" +#define FILE_DIR "nano" +#define FILE_DIR "nano/images" +#define FILE_DIR "sound" +#define FILE_DIR "sound/AI" +#define FILE_DIR "sound/ambience" +#define FILE_DIR "sound/effects" +#define FILE_DIR "sound/effects/turret" +#define FILE_DIR "sound/effects/wind" +#define FILE_DIR "sound/hallucinations" +#define FILE_DIR "sound/items" +#define FILE_DIR "sound/machines" +#define FILE_DIR "sound/mecha" +#define FILE_DIR "sound/misc" +#define FILE_DIR "sound/music" +#define FILE_DIR "sound/piano" +#define FILE_DIR "sound/turntable" +#define FILE_DIR "sound/violin" +#define FILE_DIR "sound/voice" +#define FILE_DIR "sound/voice/complionator" +#define FILE_DIR "sound/voice/Serithi" +#define FILE_DIR "sound/vox" +#define FILE_DIR "sound/vox_fem" +#define FILE_DIR "sound/weapons" +// END_FILE_DIR +// BEGIN_PREFERENCES +#define DEBUG +// END_PREFERENCES +// BEGIN_INCLUDE +#include "code\global.dm" +#include "code\hub.dm" +#include "code\names.dm" +#include "code\setup.dm" +#include "code\stylesheet.dm" +#include "code\world.dm" +#include "code\__HELPERS\experimental.dm" +#include "code\__HELPERS\files.dm" +#include "code\__HELPERS\game.dm" +#include "code\__HELPERS\global_lists.dm" +#include "code\__HELPERS\icons.dm" +#include "code\__HELPERS\lists.dm" +#include "code\__HELPERS\logging.dm" +#include "code\__HELPERS\maths.dm" +#include "code\__HELPERS\matrices.dm" +#include "code\__HELPERS\mobs.dm" +#include "code\__HELPERS\names.dm" +#include "code\__HELPERS\sanitize_values.dm" +#include "code\__HELPERS\text.dm" +#include "code\__HELPERS\time.dm" +#include "code\__HELPERS\timed_alerts.dm" +#include "code\__HELPERS\type2type.dm" +#include "code\__HELPERS\unsorted.dm" +#include "code\_hooks\area.dm" +#include "code\_hooks\hooks.dm" +#include "code\_hooks\mob.dm" +#include "code\_onclick\adjacent.dm" +#include "code\_onclick\ai.dm" +#include "code\_onclick\click.dm" +#include "code\_onclick\cyborg.dm" +#include "code\_onclick\drag_drop.dm" +#include "code\_onclick\item_attack.dm" +#include "code\_onclick\observer.dm" +#include "code\_onclick\other_mobs.dm" +#include "code\_onclick\overmind.dm" +#include "code\_onclick\telekinesis.dm" +#include "code\_onclick\hud\_defines.dm" +#include "code\_onclick\hud\ai.dm" +#include "code\_onclick\hud\alien.dm" +#include "code\_onclick\hud\alien_larva.dm" +#include "code\_onclick\hud\hud.dm" +#include "code\_onclick\hud\human.dm" +#include "code\_onclick\hud\monkey.dm" +#include "code\_onclick\hud\other_mobs.dm" +#include "code\_onclick\hud\robot.dm" +#include "code\_onclick\hud\screen_objects.dm" +#include "code\ATMOSPHERICS\atmospherics.dm" +#include "code\ATMOSPHERICS\chiller.dm" +#include "code\ATMOSPHERICS\datum_pipe_network.dm" +#include "code\ATMOSPHERICS\datum_pipeline.dm" +#include "code\ATMOSPHERICS\he_pipes.dm" +#include "code\ATMOSPHERICS\pipes.dm" +#include "code\ATMOSPHERICS\components\portables_connector.dm" +#include "code\ATMOSPHERICS\components\tvalve.dm" +#include "code\ATMOSPHERICS\components\valve.dm" +#include "code\ATMOSPHERICS\components\binary_devices\binary_atmos_base.dm" +#include "code\ATMOSPHERICS\components\binary_devices\circulator.dm" +#include "code\ATMOSPHERICS\components\binary_devices\dp_vent_pump.dm" +#include "code\ATMOSPHERICS\components\binary_devices\passive_gate.dm" +#include "code\ATMOSPHERICS\components\binary_devices\pump.dm" +#include "code\ATMOSPHERICS\components\binary_devices\volume_pump.dm" +#include "code\ATMOSPHERICS\components\trinary_devices\filter.dm" +#include "code\ATMOSPHERICS\components\trinary_devices\mixer.dm" +#include "code\ATMOSPHERICS\components\trinary_devices\trinary_base.dm" +#include "code\ATMOSPHERICS\components\unary\cold_sink.dm" +#include "code\ATMOSPHERICS\components\unary\generator_input.dm" +#include "code\ATMOSPHERICS\components\unary\heat_exchanger.dm" +#include "code\ATMOSPHERICS\components\unary\heat_source.dm" +#include "code\ATMOSPHERICS\components\unary\outlet_injector.dm" +#include "code\ATMOSPHERICS\components\unary\oxygen_generator.dm" +#include "code\ATMOSPHERICS\components\unary\thermal_plate.dm" +#include "code\ATMOSPHERICS\components\unary\unary_base.dm" +#include "code\ATMOSPHERICS\components\unary\vent_pump.dm" +#include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm" +#include "code\controllers\_DynamicAreaLighting_TG.dm" +#include "code\controllers\configuration.dm" +#include "code\controllers\emergency_shuttle_controller.dm" +#include "code\controllers\failsafe.dm" +#include "code\controllers\garbage.dm" +#include "code\controllers\hooks-defs.dm" +#include "code\controllers\hooks.dm" +#include "code\controllers\lighting_controller.dm" +#include "code\controllers\master_controller.dm" +#include "code\controllers\shuttle_controller.dm" +#include "code\controllers\verbs.dm" +#include "code\controllers\voting.dm" +#include "code\datums\ai_laws.dm" +#include "code\datums\browser.dm" +#include "code\datums\computerfiles.dm" +#include "code\datums\datacore.dm" +#include "code\datums\datumvars.dm" +#include "code\datums\mind.dm" +#include "code\datums\mixed.dm" +#include "code\datums\modules.dm" +#include "code\datums\organs.dm" +#include "code\datums\recipe.dm" +#include "code\datums\spell.dm" +#include "code\datums\sun.dm" +#include "code\datums\supplypacks.dm" +#include "code\datums\uplink_item.dm" +#include "code\datums\crafting\crafting.dm" +#include "code\datums\crafting\recipes.dm" +#include "code\datums\helper_datums\construction_datum.dm" +#include "code\datums\helper_datums\events.dm" +#include "code\datums\helper_datums\global_iterator.dm" +#include "code\datums\helper_datums\teleport.dm" +#include "code\datums\helper_datums\topic_input.dm" +#include "code\datums\spells\area_teleport.dm" +#include "code\datums\spells\charge.dm" +#include "code\datums\spells\conjure.dm" +#include "code\datums\spells\construct_spells.dm" +#include "code\datums\spells\dumbfire.dm" +#include "code\datums\spells\emplosion.dm" +#include "code\datums\spells\ethereal_jaunt.dm" +#include "code\datums\spells\explosion.dm" +#include "code\datums\spells\genetic.dm" +#include "code\datums\spells\horsemask.dm" +#include "code\datums\spells\inflict_handler.dm" +#include "code\datums\spells\knock.dm" +#include "code\datums\spells\mind_transfer.dm" +#include "code\datums\spells\projectile.dm" +#include "code\datums\spells\trigger.dm" +#include "code\datums\spells\turf_teleport.dm" +#include "code\datums\spells\wizard.dm" +#include "code\datums\visibility_networks\chunk.dm" +#include "code\datums\visibility_networks\dictionary.dm" +#include "code\datums\visibility_networks\update_triggers.dm" +#include "code\datums\visibility_networks\visibility_interface.dm" +#include "code\datums\visibility_networks\visibility_network.dm" +#include "code\datums\wires\airlock.dm" +#include "code\datums\wires\alarm.dm" +#include "code\datums\wires\apc.dm" +#include "code\datums\wires\camera.dm" +#include "code\datums\wires\explosive.dm" +#include "code\datums\wires\mulebot.dm" +#include "code\datums\wires\particle_accelerator.dm" +#include "code\datums\wires\radio.dm" +#include "code\datums\wires\robot.dm" +#include "code\datums\wires\syndicatebomb.dm" +#include "code\datums\wires\vending.dm" +#include "code\datums\wires\wires.dm" +#include "code\defines\obj.dm" +#include "code\defines\vox_sounds.dm" +#include "code\defines\obj\weapon.dm" +#include "code\defines\procs\AStar.dm" +#include "code\defines\procs\captain_announce.dm" +#include "code\defines\procs\command_alert.dm" +#include "code\defines\procs\dbcore.dm" +#include "code\defines\procs\hud.dm" +#include "code\defines\procs\sd_Alert.dm" +#include "code\defines\procs\statistics.dm" +#include "code\game\asteroid.dm" +#include "code\game\atoms.dm" +#include "code\game\atoms_movable.dm" +#include "code\game\communications.dm" +#include "code\game\response_team.dm" +#include "code\game\shuttle_engines.dm" +#include "code\game\skincmd.dm" +#include "code\game\smoothwall.dm" +#include "code\game\sound.dm" +#include "code\game\supplyshuttle.dm" +#include "code\game\area\ai_monitored.dm" +#include "code\game\area\areas.dm" +#include "code\game\area\Dynamic areas.dm" +#include "code\game\area\Space Station 13 areas.dm" +#include "code\game\dna\dna2.dm" +#include "code\game\dna\dna2_domutcheck.dm" +#include "code\game\dna\dna2_helpers.dm" +#include "code\game\dna\dna_modifier.dm" +#include "code\game\dna\genes\disabilities.dm" +#include "code\game\dna\genes\gene.dm" +#include "code\game\dna\genes\goon_disabilities.dm" +#include "code\game\dna\genes\goon_powers.dm" +#include "code\game\dna\genes\monkey.dm" +#include "code\game\dna\genes\powers.dm" +#include "code\game\dna\genes\vg_disabilities.dm" +#include "code\game\dna\genes\vg_powers.dm" +#include "code\game\gamemodes\antag_spawner.dm" +#include "code\game\gamemodes\events.dm" +#include "code\game\gamemodes\factions.dm" +#include "code\game\gamemodes\game_mode.dm" +#include "code\game\gamemodes\gameticker.dm" +#include "code\game\gamemodes\intercept_report.dm" +#include "code\game\gamemodes\objective.dm" +#include "code\game\gamemodes\scoreboard.dm" +#include "code\game\gamemodes\setupgame.dm" +#include "code\game\gamemodes\steal_items.dm" +#include "code\game\gamemodes\autotraitor\autotraitor.dm" +#include "code\game\gamemodes\blob\blob.dm" +#include "code\game\gamemodes\blob\blob_finish.dm" +#include "code\game\gamemodes\blob\blob_report.dm" +#include "code\game\gamemodes\blob\overmind.dm" +#include "code\game\gamemodes\blob\powers.dm" +#include "code\game\gamemodes\blob\theblob.dm" +#include "code\game\gamemodes\blob\blobs\core.dm" +#include "code\game\gamemodes\blob\blobs\factory.dm" +#include "code\game\gamemodes\blob\blobs\node.dm" +#include "code\game\gamemodes\blob\blobs\resource.dm" +#include "code\game\gamemodes\blob\blobs\shield.dm" +#include "code\game\gamemodes\borer\borer.dm" +#include "code\game\gamemodes\changeling\changeling.dm" +#include "code\game\gamemodes\changeling\changeling_powers.dm" +#include "code\game\gamemodes\changeling\modularchangling.dm" +#include "code\game\gamemodes\changeling\traitor_chan.dm" +#include "code\game\gamemodes\cult\cult.dm" +#include "code\game\gamemodes\cult\cult_items.dm" +#include "code\game\gamemodes\cult\cult_structures.dm" +#include "code\game\gamemodes\cult\ritual.dm" +#include "code\game\gamemodes\cult\runes.dm" +#include "code\game\gamemodes\cult\talisman.dm" +#include "code\game\gamemodes\events\biomass.dm" +#include "code\game\gamemodes\events\black_hole.dm" +#include "code\game\gamemodes\events\clang.dm" +#include "code\game\gamemodes\events\ninja_abilities.dm" +#include "code\game\gamemodes\events\ninja_equipment.dm" +#include "code\game\gamemodes\events\power_failure.dm" +#include "code\game\gamemodes\events\space_ninja.dm" +#include "code\game\gamemodes\events\spacevines.dm" +#include "code\game\gamemodes\events\wormholes.dm" +#include "code\game\gamemodes\events\holidays\Christmas.dm" +#include "code\game\gamemodes\events\holidays\Holidays.dm" +#include "code\game\gamemodes\events\holidays\Other.dm" +#include "code\game\gamemodes\extended\extended.dm" +#include "code\game\gamemodes\malfunction\Malf_Modules.dm" +#include "code\game\gamemodes\malfunction\malfunction.dm" +#include "code\game\gamemodes\meteor\meteor.dm" +#include "code\game\gamemodes\meteor\meteors.dm" +#include "code\game\gamemodes\mutiny\auth_key.dm" +#include "code\game\gamemodes\mutiny\directive.dm" +#include "code\game\gamemodes\mutiny\emergency_authentication_device.dm" +#include "code\game\gamemodes\mutiny\key_pinpointer.dm" +#include "code\game\gamemodes\mutiny\mutiny.dm" +#include "code\game\gamemodes\mutiny\mutiny_admin.dm" +#include "code\game\gamemodes\mutiny\mutiny_fluff.dm" +#include "code\game\gamemodes\mutiny\mutiny_hooks.dm" +#include "code\game\gamemodes\mutiny\directives\alien_fraud_directive.dm" +#include "code\game\gamemodes\mutiny\directives\bluespace_contagion_directive.dm" +#include "code\game\gamemodes\mutiny\directives\financial_crisis_directive.dm" +#include "code\game\gamemodes\mutiny\directives\ipc_virus_directive.dm" +#include "code\game\gamemodes\mutiny\directives\research_to_ripleys_directive.dm" +#include "code\game\gamemodes\mutiny\directives\tau_ceti_needs_women_directive.dm" +#include "code\game\gamemodes\mutiny\directives\terminations_directive.dm" +#include "code\game\gamemodes\mutiny\directives\vox_heist.dm" +#include "code\game\gamemodes\nations\flag_pinpointer.dm" +#include "code\game\gamemodes\nations\flagprocs.dm" +#include "code\game\gamemodes\nations\nationdatums.dm" +#include "code\game\gamemodes\nations\nations.dm" +#include "code\game\gamemodes\ninja\ninja.dm" +#include "code\game\gamemodes\nuclear\nuclear.dm" +#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\traitor\traitor.dm" +#include "code\game\gamemodes\vampire\hud.dm" +#include "code\game\gamemodes\vampire\vampire.dm" +#include "code\game\gamemodes\vampire\vampire_powers.dm" +#include "code\game\gamemodes\vox\vox.dm" +#include "code\game\gamemodes\vox\heist\heist.dm" +#include "code\game\gamemodes\vox\trade\trade.dm" +#include "code\game\gamemodes\wizard\artefact.dm" +#include "code\game\gamemodes\wizard\raginmages.dm" +#include "code\game\gamemodes\wizard\rightandwrong.dm" +#include "code\game\gamemodes\wizard\soulstone.dm" +#include "code\game\gamemodes\wizard\spellbook.dm" +#include "code\game\gamemodes\wizard\wizard.dm" +#include "code\game\gamemodes\xenos\xenos.dm" +#include "code\game\jobs\access.dm" +#include "code\game\jobs\job_controller.dm" +#include "code\game\jobs\job_objective.dm" +#include "code\game\jobs\jobprocs.dm" +#include "code\game\jobs\jobs.dm" +#include "code\game\jobs\whitelist.dm" +#include "code\game\jobs\job\civilian.dm" +#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\science.dm" +#include "code\game\jobs\job\security.dm" +#include "code\game\jobs\job\silicon.dm" +#include "code\game\jobs\job\supervisor.dm" +#include "code\game\jobs\job\support.dm" +#include "code\game\jobs\job\support_chaplain.dm" +#include "code\game\jobs\job_objectives\science.dm" +#include "code\game\machinery\adv_med.dm" +#include "code\game\machinery\ai_slipper.dm" +#include "code\game\machinery\alarm.dm" +#include "code\game\machinery\atmo_control.dm" +#include "code\game\machinery\autolathe.dm" +#include "code\game\machinery\Beacon.dm" +#include "code\game\machinery\bees_apiary.dm" +#include "code\game\machinery\bees_items.dm" +#include "code\game\machinery\biogenerator.dm" +#include "code\game\machinery\buttons.dm" +#include "code\game\machinery\cell_charger.dm" +#include "code\game\machinery\cloning.dm" +#include "code\game\machinery\constructable_frame.dm" +#include "code\game\machinery\cryo.dm" +#include "code\game\machinery\cryopod.dm" +#include "code\game\machinery\deployable.dm" +#include "code\game\machinery\door_control.dm" +#include "code\game\machinery\doppler_array.dm" +#include "code\game\machinery\flasher.dm" +#include "code\game\machinery\floodlight.dm" +#include "code\game\machinery\Freezer.dm" +#include "code\game\machinery\hologram.dm" +#include "code\game\machinery\holosign.dm" +#include "code\game\machinery\hydroponics.dm" +#include "code\game\machinery\igniter.dm" +#include "code\game\machinery\iv_drip.dm" +#include "code\game\machinery\lightswitch.dm" +#include "code\game\machinery\machinery.dm" +#include "code\game\machinery\magnet.dm" +#include "code\game\machinery\mass_driver.dm" +#include "code\game\machinery\metaldetector.dm" +#include "code\game\machinery\navbeacon.dm" +#include "code\game\machinery\newscaster.dm" +#include "code\game\machinery\OpTable.dm" +#include "code\game\machinery\overview.dm" +#include "code\game\machinery\PDApainter.dm" +#include "code\game\machinery\portable_turret.dm" +#include "code\game\machinery\recharger.dm" +#include "code\game\machinery\rechargestation.dm" +#include "code\game\machinery\recycler.dm" +#include "code\game\machinery\requests_console.dm" +#include "code\game\machinery\robot_fabricator.dm" +#include "code\game\machinery\seed_extractor.dm" +#include "code\game\machinery\shieldgen.dm" +#include "code\game\machinery\Sleeper.dm" +#include "code\game\machinery\slotmachine.dm" +#include "code\game\machinery\spaceheater.dm" +#include "code\game\machinery\status_display.dm" +#include "code\game\machinery\suit_storage_unit.dm" +#include "code\game\machinery\supply_display.dm" +#include "code\game\machinery\syndicatebeacon.dm" +#include "code\game\machinery\syndicatebomb.dm" +#include "code\game\machinery\telepad.dm" +#include "code\game\machinery\teleporter.dm" +#include "code\game\machinery\transformer.dm" +#include "code\game\machinery\turrets.dm" +#include "code\game\machinery\vending.dm" +#include "code\game\machinery\washing_machine.dm" +#include "code\game\machinery\wishgranter.dm" +#include "code\game\machinery\atmoalter\area_atmos_computer.dm" +#include "code\game\machinery\atmoalter\canister.dm" +#include "code\game\machinery\atmoalter\meter.dm" +#include "code\game\machinery\atmoalter\portable_atmospherics.dm" +#include "code\game\machinery\atmoalter\pump.dm" +#include "code\game\machinery\atmoalter\scrubber.dm" +#include "code\game\machinery\atmoalter\zvent.dm" +#include "code\game\machinery\bots\bots.dm" +#include "code\game\machinery\bots\cleanbot.dm" +#include "code\game\machinery\bots\ed209bot.dm" +#include "code\game\machinery\bots\floorbot.dm" +#include "code\game\machinery\bots\medbot.dm" +#include "code\game\machinery\bots\mulebot.dm" +#include "code\game\machinery\bots\secbot.dm" +#include "code\game\machinery\camera\camera.dm" +#include "code\game\machinery\camera\camera_assembly.dm" +#include "code\game\machinery\camera\motion.dm" +#include "code\game\machinery\camera\presets.dm" +#include "code\game\machinery\camera\tracking.dm" +#include "code\game\machinery\computer\ai_core.dm" +#include "code\game\machinery\computer\aifixer.dm" +#include "code\game\machinery\computer\arcade.dm" +#include "code\game\machinery\computer\atmos_alert.dm" +#include "code\game\machinery\computer\buildandrepair.dm" +#include "code\game\machinery\computer\camera.dm" +#include "code\game\machinery\computer\card.dm" +#include "code\game\machinery\computer\cloning.dm" +#include "code\game\machinery\computer\communications.dm" +#include "code\game\machinery\computer\computer.dm" +#include "code\game\machinery\computer\crew.dm" +#include "code\game\machinery\computer\HolodeckControl.dm" +#include "code\game\machinery\computer\hologram.dm" +#include "code\game\machinery\computer\honkputer.dm" +#include "code\game\machinery\computer\law.dm" +#include "code\game\machinery\computer\medical.dm" +#include "code\game\machinery\computer\message.dm" +#include "code\game\machinery\computer\Operating.dm" +#include "code\game\machinery\computer\pod.dm" +#include "code\game\machinery\computer\power.dm" +#include "code\game\machinery\computer\prisoner.dm" +#include "code\game\machinery\computer\prisonshuttle.dm" +#include "code\game\machinery\computer\robot.dm" +#include "code\game\machinery\computer\salvage_ship.dm" +#include "code\game\machinery\computer\security.dm" +#include "code\game\machinery\computer\shuttle.dm" +#include "code\game\machinery\computer\skills.dm" +#include "code\game\machinery\computer\specops_shuttle.dm" +#include "code\game\machinery\computer\station_alert.dm" +#include "code\game\machinery\computer\store.dm" +#include "code\game\machinery\computer\syndicate_specops_shuttle.dm" +#include "code\game\machinery\computer\telecrystalconsoles.dm" +#include "code\game\machinery\computer\telescience.dm" +#include "code\game\machinery\computer\xenos_shuttle.dm" +#include "code\game\machinery\doors\airlock.dm" +#include "code\game\machinery\doors\airlock_control.dm" +#include "code\game\machinery\doors\airlock_electronics.dm" +#include "code\game\machinery\doors\alarmlock.dm" +#include "code\game\machinery\doors\brigdoors.dm" +#include "code\game\machinery\doors\checkForMultipleDoors.dm" +#include "code\game\machinery\doors\door.dm" +#include "code\game\machinery\doors\firedoor.dm" +#include "code\game\machinery\doors\multi_tile.dm" +#include "code\game\machinery\doors\poddoor.dm" +#include "code\game\machinery\doors\shutters.dm" +#include "code\game\machinery\doors\spacepod.dm" +#include "code\game\machinery\doors\unpowered.dm" +#include "code\game\machinery\doors\windowdoor.dm" +#include "code\game\machinery\embedded_controller\airlock_controllers.dm" +#include "code\game\machinery\embedded_controller\airlock_docking_controller.dm" +#include "code\game\machinery\embedded_controller\airlock_docking_controller_multi.dm" +#include "code\game\machinery\embedded_controller\airlock_program.dm" +#include "code\game\machinery\embedded_controller\docking_program.dm" +#include "code\game\machinery\embedded_controller\docking_program_multi.dm" +#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" +#include "code\game\machinery\embedded_controller\embedded_program_base.dm" +#include "code\game\machinery\embedded_controller\simple_docking_controller.dm" +#include "code\game\machinery\kitchen\gibber.dm" +#include "code\game\machinery\kitchen\icecream_vat.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" +#include "code\game\machinery\pipe\pipe_dispenser.dm" +#include "code\game\machinery\telecomms\broadcaster.dm" +#include "code\game\machinery\telecomms\logbrowser.dm" +#include "code\game\machinery\telecomms\machine_interactions.dm" +#include "code\game\machinery\telecomms\presets.dm" +#include "code\game\machinery\telecomms\telecomunications.dm" +#include "code\game\machinery\telecomms\telemonitor.dm" +#include "code\game\machinery\telecomms\traffic_control.dm" +#include "code\game\magic\Uristrunes.dm" +#include "code\game\mecha\mech_bay.dm" +#include "code\game\mecha\mech_fabricator.dm" +#include "code\game\mecha\mecha.dm" +#include "code\game\mecha\mecha_construction_paths.dm" +#include "code\game\mecha\mecha_control_console.dm" +#include "code\game\mecha\mecha_parts.dm" +#include "code\game\mecha\mecha_wreckage.dm" +#include "code\game\mecha\combat\combat.dm" +#include "code\game\mecha\combat\durand.dm" +#include "code\game\mecha\combat\gygax.dm" +#include "code\game\mecha\combat\honker.dm" +#include "code\game\mecha\combat\marauder.dm" +#include "code\game\mecha\combat\phazon.dm" +#include "code\game\mecha\combat\recitence.dm" +#include "code\game\mecha\equipment\mecha_equipment.dm" +#include "code\game\mecha\equipment\tools\medical_tools.dm" +#include "code\game\mecha\equipment\tools\tools.dm" +#include "code\game\mecha\equipment\weapons\weapons.dm" +#include "code\game\mecha\medical\medical.dm" +#include "code\game\mecha\medical\odysseus.dm" +#include "code\game\mecha\working\ripley.dm" +#include "code\game\mecha\working\working.dm" +#include "code\game\objects\empulse.dm" +#include "code\game\objects\explosion.dm" +#include "code\game\objects\explosion_recursive.dm" +#include "code\game\objects\items.dm" +#include "code\game\objects\objs.dm" +#include "code\game\objects\structures.dm" +#include "code\game\objects\weapons.dm" +#include "code\game\objects\closets\walllocker.dm" +#include "code\game\objects\effects\aliens.dm" +#include "code\game\objects\effects\anomalies.dm" +#include "code\game\objects\effects\bump_teleporter.dm" +#include "code\game\objects\effects\effect_system.dm" +#include "code\game\objects\effects\gibs.dm" +#include "code\game\objects\effects\glowshroom.dm" +#include "code\game\objects\effects\landmarks.dm" +#include "code\game\objects\effects\manifest.dm" +#include "code\game\objects\effects\mines.dm" +#include "code\game\objects\effects\misc.dm" +#include "code\game\objects\effects\overlays.dm" +#include "code\game\objects\effects\portals.dm" +#include "code\game\objects\effects\spiders.dm" +#include "code\game\objects\effects\step_triggers.dm" +#include "code\game\objects\effects\decals\cleanable.dm" +#include "code\game\objects\effects\decals\contraband.dm" +#include "code\game\objects\effects\decals\crayon.dm" +#include "code\game\objects\effects\decals\misc.dm" +#include "code\game\objects\effects\decals\remains.dm" +#include "code\game\objects\effects\decals\warning_stripes.dm" +#include "code\game\objects\effects\decals\Cleanable\aliens.dm" +#include "code\game\objects\effects\decals\Cleanable\fuel.dm" +#include "code\game\objects\effects\decals\Cleanable\humans.dm" +#include "code\game\objects\effects\decals\Cleanable\misc.dm" +#include "code\game\objects\effects\decals\Cleanable\robots.dm" +#include "code\game\objects\effects\decals\posters\bs12.dm" +#include "code\game\objects\effects\decals\posters\tgposters.dm" +#include "code\game\objects\effects\spawners\bombspawner.dm" +#include "code\game\objects\effects\spawners\gibspawner.dm" +#include "code\game\objects\effects\spawners\vaultspawner.dm" +#include "code\game\objects\items\apc_frame.dm" +#include "code\game\objects\items\blueprints.dm" +#include "code\game\objects\items\bluespace_crystal.dm" +#include "code\game\objects\items\bodybag.dm" +#include "code\game\objects\items\candle.dm" +#include "code\game\objects\items\contraband.dm" +#include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\flag.dm" +#include "code\game\objects\items\latexballoon.dm" +#include "code\game\objects\items\shooting_range.dm" +#include "code\game\objects\items\toys.dm" +#include "code\game\objects\items\trash.dm" +#include "code\game\objects\items\devices\aicard.dm" +#include "code\game\objects\items\devices\chameleonproj.dm" +#include "code\game\objects\items\devices\debugger.dm" +#include "code\game\objects\items\devices\flash.dm" +#include "code\game\objects\items\devices\flashlight.dm" +#include "code\game\objects\items\devices\gps.dm" +#include "code\game\objects\items\devices\handtv.dm" +#include "code\game\objects\items\devices\laserpointer.dm" +#include "code\game\objects\items\devices\lightreplacer.dm" +#include "code\game\objects\items\devices\megaphone.dm" +#include "code\game\objects\items\devices\modkit.dm" +#include "code\game\objects\items\devices\multitool.dm" +#include "code\game\objects\items\devices\paicard.dm" +#include "code\game\objects\items\devices\pipe_freezer.dm" +#include "code\game\objects\items\devices\pipe_painter.dm" +#include "code\game\objects\items\devices\powersink.dm" +#include "code\game\objects\items\devices\scanners.dm" +#include "code\game\objects\items\devices\suit_cooling.dm" +#include "code\game\objects\items\devices\taperecorder.dm" +#include "code\game\objects\items\devices\traitordevices.dm" +#include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\uplinks.dm" +#include "code\game\objects\items\devices\violin.dm" +#include "code\game\objects\items\devices\whistle.dm" +#include "code\game\objects\items\devices\PDA\cart.dm" +#include "code\game\objects\items\devices\PDA\chatroom.dm" +#include "code\game\objects\items\devices\PDA\PDA.dm" +#include "code\game\objects\items\devices\PDA\radio.dm" +#include "code\game\objects\items\devices\radio\beacon.dm" +#include "code\game\objects\items\devices\radio\electropack.dm" +#include "code\game\objects\items\devices\radio\encryptionkey.dm" +#include "code\game\objects\items\devices\radio\headset.dm" +#include "code\game\objects\items\devices\radio\intercom.dm" +#include "code\game\objects\items\devices\radio\radio.dm" +#include "code\game\objects\items\robot\robot_items.dm" +#include "code\game\objects\items\robot\robot_parts.dm" +#include "code\game\objects\items\robot\robot_upgrades.dm" +#include "code\game\objects\items\stacks\medical.dm" +#include "code\game\objects\items\stacks\nanopaste.dm" +#include "code\game\objects\items\stacks\rods.dm" +#include "code\game\objects\items\stacks\stack.dm" +#include "code\game\objects\items\stacks\sheets\glass.dm" +#include "code\game\objects\items\stacks\sheets\leather.dm" +#include "code\game\objects\items\stacks\sheets\light.dm" +#include "code\game\objects\items\stacks\sheets\mineral.dm" +#include "code\game\objects\items\stacks\sheets\sheet_types.dm" +#include "code\game\objects\items\stacks\sheets\sheets.dm" +#include "code\game\objects\items\stacks\tiles\light.dm" +#include "code\game\objects\items\stacks\tiles\plasteel.dm" +#include "code\game\objects\items\stacks\tiles\tile_types.dm" +#include "code\game\objects\items\weapons\AI_modules.dm" +#include "code\game\objects\items\weapons\alien_specific.dm" +#include "code\game\objects\items\weapons\cards_ids.dm" +#include "code\game\objects\items\weapons\cash.dm" +#include "code\game\objects\items\weapons\cigs_lighters.dm" +#include "code\game\objects\items\weapons\clown_items.dm" +#include "code\game\objects\items\weapons\cosmetics.dm" +#include "code\game\objects\items\weapons\dice.dm" +#include "code\game\objects\items\weapons\dna_injector.dm" +#include "code\game\objects\items\weapons\dnascrambler.dm" +#include "code\game\objects\items\weapons\explosives.dm" +#include "code\game\objects\items\weapons\extinguisher.dm" +#include "code\game\objects\items\weapons\flamethrower.dm" +#include "code\game\objects\items\weapons\gift_wrappaper.dm" +#include "code\game\objects\items\weapons\handcuffs.dm" +#include "code\game\objects\items\weapons\hydroponics.dm" +#include "code\game\objects\items\weapons\kitchen.dm" +#include "code\game\objects\items\weapons\manuals.dm" +#include "code\game\objects\items\weapons\mop.dm" +#include "code\game\objects\items\weapons\ninja_manuscript.dm" +#include "code\game\objects\items\weapons\paint.dm" +#include "code\game\objects\items\weapons\paiwire.dm" +#include "code\game\objects\items\weapons\power_cells.dm" +#include "code\game\objects\items\weapons\RCD.dm" +#include "code\game\objects\items\weapons\RCS.dm" +#include "code\game\objects\items\weapons\RSF.dm" +#include "code\game\objects\items\weapons\scrolls.dm" +#include "code\game\objects\items\weapons\shards.dm" +#include "code\game\objects\items\weapons\shields.dm" +#include "code\game\objects\items\weapons\stunbaton.dm" +#include "code\game\objects\items\weapons\surgery_tools.dm" +#include "code\game\objects\items\weapons\swords_axes_etc.dm" +#include "code\game\objects\items\weapons\table_rack_parts.dm" +#include "code\game\objects\items\weapons\teleportation.dm" +#include "code\game\objects\items\weapons\tools.dm" +#include "code\game\objects\items\weapons\twohanded.dm" +#include "code\game\objects\items\weapons\vending_items.dm" +#include "code\game\objects\items\weapons\weaponry.dm" +#include "code\game\objects\items\weapons\wires.dm" +#include "code\game\objects\items\weapons\grenades\bananade.dm" +#include "code\game\objects\items\weapons\grenades\chem_grenade.dm" +#include "code\game\objects\items\weapons\grenades\clowngrenade.dm" +#include "code\game\objects\items\weapons\grenades\emgrenade.dm" +#include "code\game\objects\items\weapons\grenades\flashbang.dm" +#include "code\game\objects\items\weapons\grenades\ghettobomb.dm" +#include "code\game\objects\items\weapons\grenades\grenade.dm" +#include "code\game\objects\items\weapons\grenades\smokebomb.dm" +#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" +#include "code\game\objects\items\weapons\grenades\syndieminibomb.dm" +#include "code\game\objects\items\weapons\implants\deadman.dm" +#include "code\game\objects\items\weapons\implants\implant.dm" +#include "code\game\objects\items\weapons\implants\implantcase.dm" +#include "code\game\objects\items\weapons\implants\implantchair.dm" +#include "code\game\objects\items\weapons\implants\implanter.dm" +#include "code\game\objects\items\weapons\implants\implantfreedom.dm" +#include "code\game\objects\items\weapons\implants\implantpad.dm" +#include "code\game\objects\items\weapons\implants\implantuplink.dm" +#include "code\game\objects\items\weapons\melee\energy.dm" +#include "code\game\objects\items\weapons\melee\misc.dm" +#include "code\game\objects\items\weapons\storage\backpack.dm" +#include "code\game\objects\items\weapons\storage\bags.dm" +#include "code\game\objects\items\weapons\storage\belt.dm" +#include "code\game\objects\items\weapons\storage\bible.dm" +#include "code\game\objects\items\weapons\storage\boxes.dm" +#include "code\game\objects\items\weapons\storage\briefcase.dm" +#include "code\game\objects\items\weapons\storage\fancy.dm" +#include "code\game\objects\items\weapons\storage\firstaid.dm" +#include "code\game\objects\items\weapons\storage\lockbox.dm" +#include "code\game\objects\items\weapons\storage\secure.dm" +#include "code\game\objects\items\weapons\storage\storage.dm" +#include "code\game\objects\items\weapons\storage\toolbox.dm" +#include "code\game\objects\items\weapons\storage\uplink_kits.dm" +#include "code\game\objects\items\weapons\storage\wallets.dm" +#include "code\game\objects\items\weapons\tanks\jetpack.dm" +#include "code\game\objects\items\weapons\tanks\tank_types.dm" +#include "code\game\objects\items\weapons\tanks\tanks.dm" +#include "code\game\objects\items\weapons\tanks\watertank.dm" +#include "code\game\objects\random\random.dm" +#include "code\game\objects\storage\coat.dm" +#include "code\game\objects\structures\barsign.dm" +#include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\coathanger.dm" +#include "code\game\objects\structures\displaycase.dm" +#include "code\game\objects\structures\door_assembly.dm" +#include "code\game\objects\structures\electricchair.dm" +#include "code\game\objects\structures\engicart.dm" +#include "code\game\objects\structures\extinguisher.dm" +#include "code\game\objects\structures\false_walls.dm" +#include "code\game\objects\structures\flora.dm" +#include "code\game\objects\structures\fullwindow.dm" +#include "code\game\objects\structures\girders.dm" +#include "code\game\objects\structures\grille.dm" +#include "code\game\objects\structures\inflatable.dm" +#include "code\game\objects\structures\janicart.dm" +#include "code\game\objects\structures\kitchen_spike.dm" +#include "code\game\objects\structures\ladders.dm" +#include "code\game\objects\structures\lamarr_cage.dm" +#include "code\game\objects\structures\lattice.dm" +#include "code\game\objects\structures\mineral_doors.dm" +#include "code\game\objects\structures\mirror.dm" +#include "code\game\objects\structures\mop_bucket.dm" +#include "code\game\objects\structures\morgue.dm" +#include "code\game\objects\structures\musician.dm" +#include "code\game\objects\structures\noticeboard.dm" +#include "code\game\objects\structures\safe.dm" +#include "code\game\objects\structures\segway.dm" +#include "code\game\objects\structures\signs.dm" +#include "code\game\objects\structures\tables_racks.dm" +#include "code\game\objects\structures\tank_dispenser.dm" +#include "code\game\objects\structures\target_stake.dm" +#include "code\game\objects\structures\watercloset.dm" +#include "code\game\objects\structures\windoor_assembly.dm" +#include "code\game\objects\structures\window.dm" +#include "code\game\objects\structures\crates_lockers\closets.dm" +#include "code\game\objects\structures\crates_lockers\crates.dm" +#include "code\game\objects\structures\crates_lockers\crittercrate.dm" +#include "code\game\objects\structures\crates_lockers\largecrate.dm" +#include "code\game\objects\structures\crates_lockers\closets\coffin.dm" +#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" +#include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm" +#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" +#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" +#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" +#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" +#include "code\game\objects\structures\crates_lockers\closets\statue.dm" +#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" +#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\stools.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm" +#include "code\game\objects\structures\transit_tubes\station.dm" +#include "code\game\objects\structures\transit_tubes\transit_tube.dm" +#include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm" +#include "code\game\structure\structure.dm" +#include "code\game\turfs\simulated.dm" +#include "code\game\turfs\turf.dm" +#include "code\game\turfs\unsimulated.dm" +#include "code\game\turfs\simulated\floor.dm" +#include "code\game\turfs\simulated\floor_types.dm" +#include "code\game\turfs\simulated\walls.dm" +#include "code\game\turfs\simulated\walls_mineral.dm" +#include "code\game\turfs\simulated\walls_misc.dm" +#include "code\game\turfs\simulated\walls_reinforced.dm" +#include "code\game\turfs\space\space.dm" +#include "code\game\turfs\space\transit.dm" +#include "code\game\turfs\unsimulated\beach.dm" +#include "code\game\turfs\unsimulated\floor.dm" +#include "code\game\turfs\unsimulated\walls.dm" +#include "code\game\vehicles\spacepods\construction.dm" +#include "code\game\vehicles\spacepods\equipment.dm" +#include "code\game\vehicles\spacepods\parts.dm" +#include "code\game\vehicles\spacepods\spacepod.dm" +#include "code\game\verbs\atom_verbs.dm" +#include "code\game\verbs\ooc.dm" +#include "code\game\verbs\suicide.dm" +#include "code\game\verbs\who.dm" +#include "code\js\byjax.dm" +#include "code\js\menus.dm" +#include "code\modules\admin\admin.dm" +#include "code\modules\admin\admin_investigate.dm" +#include "code\modules\admin\admin_memo.dm" +#include "code\modules\admin\admin_ranks.dm" +#include "code\modules\admin\admin_verbs.dm" +#include "code\modules\admin\banappearance.dm" +#include "code\modules\admin\banjob.dm" +#include "code\modules\admin\create_mob.dm" +#include "code\modules\admin\create_object.dm" +#include "code\modules\admin\create_turf.dm" +#include "code\modules\admin\holder2.dm" +#include "code\modules\admin\IsBanned.dm" +#include "code\modules\admin\NewBan.dm" +#include "code\modules\admin\newbanjob.dm" +#include "code\modules\admin\player_notes.dm" +#include "code\modules\admin\player_panel.dm" +#include "code\modules\admin\secrets.dm" +#include "code\modules\admin\topic.dm" +#include "code\modules\admin\ToRban.dm" +#include "code\modules\admin\DB ban\functions.dm" +#include "code\modules\admin\permissionverbs\permissionedit.dm" +#include "code\modules\admin\verbs\adminhelp.dm" +#include "code\modules\admin\verbs\adminjump.dm" +#include "code\modules\admin\verbs\adminpm.dm" +#include "code\modules\admin\verbs\adminsay.dm" +#include "code\modules\admin\verbs\atmosdebug.dm" +#include "code\modules\admin\verbs\BrokenInhands.dm" +#include "code\modules\admin\verbs\cinematic.dm" +#include "code\modules\admin\verbs\custom_event.dm" +#include "code\modules\admin\verbs\deadsay.dm" +#include "code\modules\admin\verbs\debug.dm" +#include "code\modules\admin\verbs\diagnostics.dm" +#include "code\modules\admin\verbs\getlogs.dm" +#include "code\modules\admin\verbs\honksquad.dm" +#include "code\modules\admin\verbs\mapping.dm" +#include "code\modules\admin\verbs\massmodvar.dm" +#include "code\modules\admin\verbs\modifyvariables.dm" +#include "code\modules\admin\verbs\one_click_antag.dm" +#include "code\modules\admin\verbs\onlyone.dm" +#include "code\modules\admin\verbs\onlyoneteam.dm" +#include "code\modules\admin\verbs\playsound.dm" +#include "code\modules\admin\verbs\possess.dm" +#include "code\modules\admin\verbs\pray.dm" +#include "code\modules\admin\verbs\randomverbs.dm" +#include "code\modules\admin\verbs\striketeam.dm" +#include "code\modules\admin\verbs\striketeam_syndicate.dm" +#include "code\modules\admin\verbs\tripAI.dm" +#include "code\modules\admin\verbs\vox_raiders.dm" +#include "code\modules\assembly\assembly.dm" +#include "code\modules\assembly\bomb.dm" +#include "code\modules\assembly\helpers.dm" +#include "code\modules\assembly\holder.dm" +#include "code\modules\assembly\igniter.dm" +#include "code\modules\assembly\infrared.dm" +#include "code\modules\assembly\mousetrap.dm" +#include "code\modules\assembly\proximity.dm" +#include "code\modules\assembly\shock_kit.dm" +#include "code\modules\assembly\signaler.dm" +#include "code\modules\assembly\timer.dm" +#include "code\modules\assembly\voice.dm" +#include "code\modules\awaymissions\bluespaceartillery.dm" +#include "code\modules\awaymissions\corpse.dm" +#include "code\modules\awaymissions\exile.dm" +#include "code\modules\awaymissions\gateway.dm" +#include "code\modules\awaymissions\loot.dm" +#include "code\modules\awaymissions\pamphlet.dm" +#include "code\modules\awaymissions\trigger.dm" +#include "code\modules\client\client defines.dm" +#include "code\modules\client\client procs.dm" +#include "code\modules\client\preferences.dm" +#include "code\modules\client\preferences_mysql.dm" +#include "code\modules\client\preferences_toggles.dm" +#include "code\modules\clothing\clothing.dm" +#include "code\modules\clothing\glasses\glasses.dm" +#include "code\modules\clothing\glasses\hud.dm" +#include "code\modules\clothing\gloves\boxing.dm" +#include "code\modules\clothing\gloves\color.dm" +#include "code\modules\clothing\gloves\miscellaneous.dm" +#include "code\modules\clothing\gloves\ninja.dm" +#include "code\modules\clothing\head\collectable.dm" +#include "code\modules\clothing\head\hardhat.dm" +#include "code\modules\clothing\head\helmet.dm" +#include "code\modules\clothing\head\jobs.dm" +#include "code\modules\clothing\head\misc.dm" +#include "code\modules\clothing\head\misc_special.dm" +#include "code\modules\clothing\head\soft_caps.dm" +#include "code\modules\clothing\masks\boxing.dm" +#include "code\modules\clothing\masks\breath.dm" +#include "code\modules\clothing\masks\gasmask.dm" +#include "code\modules\clothing\masks\miscellaneous.dm" +#include "code\modules\clothing\shoes\colour.dm" +#include "code\modules\clothing\shoes\magboots.dm" +#include "code\modules\clothing\shoes\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\alien.dm" +#include "code\modules\clothing\spacesuits\breaches.dm" +#include "code\modules\clothing\spacesuits\captain.dm" +#include "code\modules\clothing\spacesuits\ert.dm" +#include "code\modules\clothing\spacesuits\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\ninja.dm" +#include "code\modules\clothing\spacesuits\rig.dm" +#include "code\modules\clothing\spacesuits\syndi.dm" +#include "code\modules\clothing\spacesuits\void.dm" +#include "code\modules\clothing\suits\alien.dm" +#include "code\modules\clothing\suits\armor.dm" +#include "code\modules\clothing\suits\bio.dm" +#include "code\modules\clothing\suits\jobs.dm" +#include "code\modules\clothing\suits\labcoat.dm" +#include "code\modules\clothing\suits\miscellaneous.dm" +#include "code\modules\clothing\suits\utility.dm" +#include "code\modules\clothing\suits\wiz_robe.dm" +#include "code\modules\clothing\under\chameleon.dm" +#include "code\modules\clothing\under\color.dm" +#include "code\modules\clothing\under\miscellaneous.dm" +#include "code\modules\clothing\under\shorts.dm" +#include "code\modules\clothing\under\syndicate.dm" +#include "code\modules\clothing\under\ties.dm" +#include "code\modules\clothing\under\jobs\civilian.dm" +#include "code\modules\clothing\under\jobs\engineering.dm" +#include "code\modules\clothing\under\jobs\medsci.dm" +#include "code\modules\clothing\under\jobs\security.dm" +#include "code\modules\customitems\item_defines.dm" +#include "code\modules\customitems\item_spawning.dm" +#include "code\modules\customitems\definitions\base.dm" +#include "code\modules\DetectiveWork\detective_work.dm" +#include "code\modules\DetectiveWork\evidence.dm" +#include "code\modules\DetectiveWork\footprints_and_rag.dm" +#include "code\modules\DetectiveWork\scanner.dm" +#include "code\modules\economy\Accounts.dm" +#include "code\modules\economy\Accounts_DB.dm" +#include "code\modules\economy\ATM.dm" +#include "code\modules\economy\Economy.dm" +#include "code\modules\economy\Economy_Events.dm" +#include "code\modules\economy\Economy_Events_Mundane.dm" +#include "code\modules\economy\Economy_TradeDestinations.dm" +#include "code\modules\economy\EFTPOS.dm" +#include "code\modules\economy\Job_Departments.dm" +#include "code\modules\economy\POS.dm" +#include "code\modules\economy\utils.dm" +#include "code\modules\events\blob.dm" +#include "code\modules\events\borers.dm" +#include "code\modules\events\cargobonus.dm" +#include "code\modules\events\carp_migration.dm" +#include "code\modules\events\comms_blackout.dm" +#include "code\modules\events\communications_blackout.dm" +#include "code\modules\events\electrical_storm.dm" +#include "code\modules\events\event.dm" +#include "code\modules\events\event_dynamic.dm" +#include "code\modules\events\event_manager.dm" +#include "code\modules\events\grid_check.dm" +#include "code\modules\events\infestation.dm" +#include "code\modules\events\ion_storm.dm" +#include "code\modules\events\meteors.dm" +#include "code\modules\events\money_hacker.dm" +#include "code\modules\events\money_lotto.dm" +#include "code\modules\events\money_spam.dm" +#include "code\modules\events\organ_failure.dm" +#include "code\modules\events\prison_break.dm" +#include "code\modules\events\radiation_storm.dm" +#include "code\modules\events\rogue_drones.dm" +#include "code\modules\events\space_ninja.dm" +#include "code\modules\events\spacevine.dm" +#include "code\modules\events\tear.dm" +#include "code\modules\events\viral_infection.dm" +#include "code\modules\events\viral_outbreak.dm" +#include "code\modules\events\wallrot.dm" +#include "code\modules\events\sayuevents\meaty_ores.dm" +#include "code\modules\events\sayuevents\spooky.dm" +#include "code\modules\events\sayuevents\undead.dm" +#include "code\modules\events\sayuevents\wormholes.dm" +#include "code\modules\events\tgevents\alien_infestation.dm" +#include "code\modules\events\tgevents\anomaly.dm" +#include "code\modules\events\tgevents\anomaly_bluespace.dm" +#include "code\modules\events\tgevents\anomaly_flux.dm" +#include "code\modules\events\tgevents\anomaly_grav.dm" +#include "code\modules\events\tgevents\anomaly_pyro.dm" +#include "code\modules\events\tgevents\anomaly_vortex.dm" +#include "code\modules\events\tgevents\brand_intelligence.dm" +#include "code\modules\events\tgevents\dust.dm" +#include "code\modules\events\tgevents\false_alarm.dm" +#include "code\modules\events\tgevents\immovable_rod.dm" +#include "code\modules\events\tgevents\mass_hallucination.dm" +#include "code\modules\events\tgevents\spider_infestation.dm" +#include "code\modules\events\tgevents\vent_clog.dm" +#include "code\modules\ext_scripts\irc.dm" +#include "code\modules\ext_scripts\python.dm" +#include "code\modules\flufftext\Dreaming.dm" +#include "code\modules\flufftext\Hallucination.dm" +#include "code\modules\flufftext\TextFilters.dm" +#include "code\modules\food\cereal_maker.dm" +#include "code\modules\food\cooker.dm" +#include "code\modules\food\customizables.dm" +#include "code\modules\food\deep_fryer.dm" +#include "code\modules\food\food_grill.dm" +#include "code\modules\food\icecream_vat.dm" +#include "code\modules\food\oven.dm" +#include "code\modules\food\recipes_microwave.dm" +#include "code\modules\genetics\side_effects.dm" +#include "code\modules\hydroponics\grown_inedible.dm" +#include "code\modules\hydroponics\hydro_tools.dm" +#include "code\modules\hydroponics\seed_datums.dm" +#include "code\modules\hydroponics\seed_machines.dm" +#include "code\modules\hydroponics\seed_mobs.dm" +#include "code\modules\hydroponics\seeds.dm" +#include "code\modules\hydroponics\vines.dm" +#include "code\modules\library\lib_items.dm" +#include "code\modules\library\lib_machines.dm" +#include "code\modules\library\lib_readme.dm" +#include "code\modules\media\jukebox.dm" +#include "code\modules\media\machinery.dm" +#include "code\modules\media\mediamanager.dm" +#include "code\modules\media\broadcast\receiver.dm" +#include "code\modules\media\broadcast\transmitter.dm" +#include "code\modules\media\broadcast\receivers\radio.dm" +#include "code\modules\media\broadcast\transmitters\broadcast.dm" +#include "code\modules\mining\abandonedcrates.dm" +#include "code\modules\mining\alloys.dm" +#include "code\modules\mining\coins.dm" +#include "code\modules\mining\equipment_locker.dm" +#include "code\modules\mining\machine_input_output_plates.dm" +#include "code\modules\mining\machine_processing.dm" +#include "code\modules\mining\machine_stacking.dm" +#include "code\modules\mining\machine_unloading.dm" +#include "code\modules\mining\manufacturing.dm" +#include "code\modules\mining\materials.dm" +#include "code\modules\mining\mine_areas.dm" +#include "code\modules\mining\mine_items.dm" +#include "code\modules\mining\mine_turfs.dm" +#include "code\modules\mining\minerals.dm" +#include "code\modules\mining\mining_recipes.dm" +#include "code\modules\mining\mint.dm" +#include "code\modules\mining\money_bag.dm" +#include "code\modules\mining\ore.dm" +#include "code\modules\mining\ore_datum.dm" +#include "code\modules\mining\satchel_ore_boxdm.dm" +#include "code\modules\mining\security_recipes.dm" +#include "code\modules\mining\surprise.dm" +#include "code\modules\mining\drilling\distribution.dm" +#include "code\modules\mining\drilling\drill.dm" +#include "code\modules\mining\drilling\scanner.dm" +#include "code\modules\mining\laborcamp\laborminerals.dm" +#include "code\modules\mining\laborcamp\laborshuttle.dm" +#include "code\modules\mining\laborcamp\laborstacker.dm" +#include "code\modules\mining\surprises\tg.dm" +#include "code\modules\mining\surprises\vg.dm" +#include "code\modules\mob\abilities.dm" +#include "code\modules\mob\death.dm" +#include "code\modules\mob\emote.dm" +#include "code\modules\mob\holder.dm" +#include "code\modules\mob\inventory.dm" +#include "code\modules\mob\language.dm" +#include "code\modules\mob\login.dm" +#include "code\modules\mob\logout.dm" +#include "code\modules\mob\mob.dm" +#include "code\modules\mob\mob_defines.dm" +#include "code\modules\mob\mob_grab.dm" +#include "code\modules\mob\mob_helpers.dm" +#include "code\modules\mob\mob_movement.dm" +#include "code\modules\mob\mob_transformation_simple.dm" +#include "code\modules\mob\say.dm" +#include "code\modules\mob\transform_procs.dm" +#include "code\modules\mob\update_icons.dm" +#include "code\modules\mob\camera\camera.dm" +#include "code\modules\mob\dead\death.dm" +#include "code\modules\mob\dead\observer\logout.dm" +#include "code\modules\mob\dead\observer\observer.dm" +#include "code\modules\mob\dead\observer\say.dm" +#include "code\modules\mob\dead\observer\spells.dm" +#include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\living.dm" +#include "code\modules\mob\living\living_defense.dm" +#include "code\modules\mob\living\living_defines.dm" +#include "code\modules\mob\living\login.dm" +#include "code\modules\mob\living\logout.dm" +#include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\carbon\_defines.dm" +#include "code\modules\mob\living\carbon\carbon.dm" +#include "code\modules\mob\living\carbon\carbon_defenses.dm" +#include "code\modules\mob\living\carbon\carbon_defines.dm" +#include "code\modules\mob\living\carbon\give.dm" +#include "code\modules\mob\living\carbon\shock.dm" +#include "code\modules\mob\living\carbon\species.dm" +#include "code\modules\mob\living\carbon\alien\alien.dm" +#include "code\modules\mob\living\carbon\alien\alien_defenses.dm" +#include "code\modules\mob\living\carbon\alien\death.dm" +#include "code\modules\mob\living\carbon\alien\login.dm" +#include "code\modules\mob\living\carbon\alien\logout.dm" +#include "code\modules\mob\living\carbon\alien\powers.dm" +#include "code\modules\mob\living\carbon\alien\say.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\emote.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\empress.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\inventory.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\life.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\login.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\queen.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\update_icons.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\drone.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\hunter.dm" +#include "code\modules\mob\living\carbon\alien\humanoid\caste\sentinel.dm" +#include "code\modules\mob\living\carbon\alien\larva\death.dm" +#include "code\modules\mob\living\carbon\alien\larva\emote.dm" +#include "code\modules\mob\living\carbon\alien\larva\inventory.dm" +#include "code\modules\mob\living\carbon\alien\larva\larva.dm" +#include "code\modules\mob\living\carbon\alien\larva\life.dm" +#include "code\modules\mob\living\carbon\alien\larva\powers.dm" +#include "code\modules\mob\living\carbon\alien\larva\update_icons.dm" +#include "code\modules\mob\living\carbon\alien\special\alien_embryo.dm" +#include "code\modules\mob\living\carbon\alien\special\facehugger.dm" +#include "code\modules\mob\living\carbon\brain\brain.dm" +#include "code\modules\mob\living\carbon\brain\brain_item.dm" +#include "code\modules\mob\living\carbon\brain\death.dm" +#include "code\modules\mob\living\carbon\brain\emote.dm" +#include "code\modules\mob\living\carbon\brain\life.dm" +#include "code\modules\mob\living\carbon\brain\login.dm" +#include "code\modules\mob\living\carbon\brain\MMI.dm" +#include "code\modules\mob\living\carbon\brain\posibrain.dm" +#include "code\modules\mob\living\carbon\brain\say.dm" +#include "code\modules\mob\living\carbon\human\death.dm" +#include "code\modules\mob\living\carbon\human\emote.dm" +#include "code\modules\mob\living\carbon\human\examine.dm" +#include "code\modules\mob\living\carbon\human\human.dm" +#include "code\modules\mob\living\carbon\human\human_attackalien.dm" +#include "code\modules\mob\living\carbon\human\human_attackhand.dm" +#include "code\modules\mob\living\carbon\human\human_attackpaw.dm" +#include "code\modules\mob\living\carbon\human\human_damage.dm" +#include "code\modules\mob\living\carbon\human\human_defense.dm" +#include "code\modules\mob\living\carbon\human\human_defines.dm" +#include "code\modules\mob\living\carbon\human\human_movement.dm" +#include "code\modules\mob\living\carbon\human\inventory.dm" +#include "code\modules\mob\living\carbon\human\life.dm" +#include "code\modules\mob\living\carbon\human\login.dm" +#include "code\modules\mob\living\carbon\human\say.dm" +#include "code\modules\mob\living\carbon\human\update_icons.dm" +#include "code\modules\mob\living\carbon\human\whisper.dm" +#include "code\modules\mob\living\carbon\human\plasmaman\species.dm" +#include "code\modules\mob\living\carbon\metroid\death.dm" +#include "code\modules\mob\living\carbon\metroid\emote.dm" +#include "code\modules\mob\living\carbon\metroid\examine.dm" +#include "code\modules\mob\living\carbon\metroid\hud.dm" +#include "code\modules\mob\living\carbon\metroid\life.dm" +#include "code\modules\mob\living\carbon\metroid\login.dm" +#include "code\modules\mob\living\carbon\metroid\metroid.dm" +#include "code\modules\mob\living\carbon\metroid\powers.dm" +#include "code\modules\mob\living\carbon\metroid\say.dm" +#include "code\modules\mob\living\carbon\metroid\subtypes.dm" +#include "code\modules\mob\living\carbon\metroid\update_icons.dm" +#include "code\modules\mob\living\carbon\monkey\death.dm" +#include "code\modules\mob\living\carbon\monkey\diona.dm" +#include "code\modules\mob\living\carbon\monkey\emote.dm" +#include "code\modules\mob\living\carbon\monkey\examine.dm" +#include "code\modules\mob\living\carbon\monkey\inventory.dm" +#include "code\modules\mob\living\carbon\monkey\life.dm" +#include "code\modules\mob\living\carbon\monkey\login.dm" +#include "code\modules\mob\living\carbon\monkey\monkey.dm" +#include "code\modules\mob\living\carbon\monkey\powers.dm" +#include "code\modules\mob\living\carbon\monkey\update_icons.dm" +#include "code\modules\mob\living\silicon\death.dm" +#include "code\modules\mob\living\silicon\login.dm" +#include "code\modules\mob\living\silicon\say.dm" +#include "code\modules\mob\living\silicon\silicon.dm" +#include "code\modules\mob\living\silicon\ai\ai.dm" +#include "code\modules\mob\living\silicon\ai\death.dm" +#include "code\modules\mob\living\silicon\ai\examine.dm" +#include "code\modules\mob\living\silicon\ai\laws.dm" +#include "code\modules\mob\living\silicon\ai\life.dm" +#include "code\modules\mob\living\silicon\ai\login.dm" +#include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\say.dm" +#include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" +#include "code\modules\mob\living\silicon\ai\freelook\chunk.dm" +#include "code\modules\mob\living\silicon\ai\freelook\eye.dm" +#include "code\modules\mob\living\silicon\ai\freelook\read_me.dm" +#include "code\modules\mob\living\silicon\ai\freelook\update_triggers.dm" +#include "code\modules\mob\living\silicon\ai\freelook\visibility_interface.dm" +#include "code\modules\mob\living\silicon\decoy\death.dm" +#include "code\modules\mob\living\silicon\decoy\decoy.dm" +#include "code\modules\mob\living\silicon\decoy\life.dm" +#include "code\modules\mob\living\silicon\pai\death.dm" +#include "code\modules\mob\living\silicon\pai\examine.dm" +#include "code\modules\mob\living\silicon\pai\life.dm" +#include "code\modules\mob\living\silicon\pai\pai.dm" +#include "code\modules\mob\living\silicon\pai\personality.dm" +#include "code\modules\mob\living\silicon\pai\recruit.dm" +#include "code\modules\mob\living\silicon\pai\say.dm" +#include "code\modules\mob\living\silicon\pai\software.dm" +#include "code\modules\mob\living\silicon\robot\component.dm" +#include "code\modules\mob\living\silicon\robot\death.dm" +#include "code\modules\mob\living\silicon\robot\emote.dm" +#include "code\modules\mob\living\silicon\robot\examine.dm" +#include "code\modules\mob\living\silicon\robot\inventory.dm" +#include "code\modules\mob\living\silicon\robot\laws.dm" +#include "code\modules\mob\living\silicon\robot\life.dm" +#include "code\modules\mob\living\silicon\robot\login.dm" +#include "code\modules\mob\living\silicon\robot\photos.dm" +#include "code\modules\mob\living\silicon\robot\robot.dm" +#include "code\modules\mob\living\silicon\robot\robot_damage.dm" +#include "code\modules\mob\living\silicon\robot\robot_items.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules.dm" +#include "code\modules\mob\living\silicon\robot\robot_movement.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" +#include "code\modules\mob\living\simple_animal\bees.dm" +#include "code\modules\mob\living\simple_animal\borer.dm" +#include "code\modules\mob\living\simple_animal\constructs.dm" +#include "code\modules\mob\living\simple_animal\corpse.dm" +#include "code\modules\mob\living\simple_animal\parrot.dm" +#include "code\modules\mob\living\simple_animal\powers.dm" +#include "code\modules\mob\living\simple_animal\shade.dm" +#include "code\modules\mob\living\simple_animal\simple_animal.dm" +#include "code\modules\mob\living\simple_animal\tribbles.dm" +#include "code\modules\mob\living\simple_animal\vox.dm" +#include "code\modules\mob\living\simple_animal\worm.dm" +#include "code\modules\mob\living\simple_animal\friendly\cat.dm" +#include "code\modules\mob\living\simple_animal\friendly\corgi.dm" +#include "code\modules\mob\living\simple_animal\friendly\crab.dm" +#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" +#include "code\modules\mob\living\simple_animal\friendly\lizard.dm" +#include "code\modules\mob\living\simple_animal\friendly\mouse.dm" +#include "code\modules\mob\living\simple_animal\friendly\slime.dm" +#include "code\modules\mob\living\simple_animal\friendly\spiderbot.dm" +#include "code\modules\mob\living\simple_animal\friendly\tomato.dm" +#include "code\modules\mob\living\simple_animal\hostile\alien.dm" +#include "code\modules\mob\living\simple_animal\hostile\bat.dm" +#include "code\modules\mob\living\simple_animal\hostile\bear.dm" +#include "code\modules\mob\living\simple_animal\hostile\carp.dm" +#include "code\modules\mob\living\simple_animal\hostile\creature.dm" +#include "code\modules\mob\living\simple_animal\hostile\faithless.dm" +#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" +#include "code\modules\mob\living\simple_animal\hostile\hivebot.dm" +#include "code\modules\mob\living\simple_animal\hostile\hostile.dm" +#include "code\modules\mob\living\simple_animal\hostile\mimic.dm" +#include "code\modules\mob\living\simple_animal\hostile\mining_mobs.dm" +#include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" +#include "code\modules\mob\living\simple_animal\hostile\pirate.dm" +#include "code\modules\mob\living\simple_animal\hostile\russian.dm" +#include "code\modules\mob\living\simple_animal\hostile\statue.dm" +#include "code\modules\mob\living\simple_animal\hostile\syndicate.dm" +#include "code\modules\mob\living\simple_animal\hostile\tree.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\undead.dm" +#include "code\modules\mob\new_player\login.dm" +#include "code\modules\mob\new_player\logout.dm" +#include "code\modules\mob\new_player\new_player.dm" +#include "code\modules\mob\new_player\poll.dm" +#include "code\modules\mob\new_player\preferences_setup.dm" +#include "code\modules\mob\new_player\sprite_accessories.dm" +#include "code\modules\mob\spirit\cultnet.dm" +#include "code\modules\mob\spirit\movement.dm" +#include "code\modules\mob\spirit\spirit.dm" +#include "code\modules\mob\spirit\viewpoint.dm" +#include "code\modules\mob\spirit\mask\mask.dm" +#include "code\modules\mob\spirit\mask\respawn.dm" +#include "code\modules\nano\_JSON.dm" +#include "code\modules\nano\JSON Reader.dm" +#include "code\modules\nano\JSON Writer.dm" +#include "code\modules\nano\nanoexternal.dm" +#include "code\modules\nano\nanomanager.dm" +#include "code\modules\nano\nanomapgen.dm" +#include "code\modules\nano\nanoui.dm" +#include "code\modules\organs\blood.dm" +#include "code\modules\organs\organ.dm" +#include "code\modules\organs\organ_external.dm" +#include "code\modules\organs\organ_internal.dm" +#include "code\modules\organs\pain.dm" +#include "code\modules\organs\skeleton.dm" +#include "code\modules\organs\wound.dm" +#include "code\modules\paperwork\carbonpaper.dm" +#include "code\modules\paperwork\clipboard.dm" +#include "code\modules\paperwork\faxmachine.dm" +#include "code\modules\paperwork\filingcabinet.dm" +#include "code\modules\paperwork\folders.dm" +#include "code\modules\paperwork\handlabeler.dm" +#include "code\modules\paperwork\paper.dm" +#include "code\modules\paperwork\paper_bundle.dm" +#include "code\modules\paperwork\paperbin.dm" +#include "code\modules\paperwork\pen.dm" +#include "code\modules\paperwork\photocopier.dm" +#include "code\modules\paperwork\photography.dm" +#include "code\modules\paperwork\silicon_photography.dm" +#include "code\modules\paperwork\stamps.dm" +#include "code\modules\power\apc.dm" +#include "code\modules\power\cable.dm" +#include "code\modules\power\cable_heavyduty.dm" +#include "code\modules\power\cable_logic.dm" +#include "code\modules\power\cell.dm" +#include "code\modules\power\engine.dm" +#include "code\modules\power\generator.dm" +#include "code\modules\power\generator_type2.dm" +#include "code\modules\power\gravitygenerator.dm" +#include "code\modules\power\lighting.dm" +#include "code\modules\power\port_gen.dm" +#include "code\modules\power\power.dm" +#include "code\modules\power\smes.dm" +#include "code\modules\power\solar.dm" +#include "code\modules\power\switch.dm" +#include "code\modules\power\terminal.dm" +#include "code\modules\power\tracker.dm" +#include "code\modules\power\turbine.dm" +#include "code\modules\power\singularity\collector.dm" +#include "code\modules\power\singularity\containment_field.dm" +#include "code\modules\power\singularity\emitter.dm" +#include "code\modules\power\singularity\field_generator.dm" +#include "code\modules\power\singularity\generator.dm" +#include "code\modules\power\singularity\investigate.dm" +#include "code\modules\power\singularity\singularity.dm" +#include "code\modules\power\singularity\particle_accelerator\particle.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_chamber.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_control.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_power.dm" +#include "code\modules\projectiles\ammunition.dm" +#include "code\modules\projectiles\gun.dm" +#include "code\modules\projectiles\projectile.dm" +#include "code\modules\projectiles\targeting.dm" +#include "code\modules\projectiles\ammunition\boxes.dm" +#include "code\modules\projectiles\ammunition\bullets.dm" +#include "code\modules\projectiles\ammunition\magazines.dm" +#include "code\modules\projectiles\guns\alien.dm" +#include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\magic.dm" +#include "code\modules\projectiles\guns\projectile.dm" +#include "code\modules\projectiles\guns\energy\laser.dm" +#include "code\modules\projectiles\guns\energy\nuclear.dm" +#include "code\modules\projectiles\guns\energy\pulse.dm" +#include "code\modules\projectiles\guns\energy\special.dm" +#include "code\modules\projectiles\guns\energy\stun.dm" +#include "code\modules\projectiles\guns\energy\temperature.dm" +#include "code\modules\projectiles\guns\magic\staff.dm" +#include "code\modules\projectiles\guns\magic\wand.dm" +#include "code\modules\projectiles\guns\projectile\automatic.dm" +#include "code\modules\projectiles\guns\projectile\crossbow.dm" +#include "code\modules\projectiles\guns\projectile\launcher.dm" +#include "code\modules\projectiles\guns\projectile\pistol.dm" +#include "code\modules\projectiles\guns\projectile\pneumatic.dm" +#include "code\modules\projectiles\guns\projectile\revolver.dm" +#include "code\modules\projectiles\guns\projectile\rocket.dm" +#include "code\modules\projectiles\guns\projectile\shotgun.dm" +#include "code\modules\projectiles\projectile\animate.dm" +#include "code\modules\projectiles\projectile\beams.dm" +#include "code\modules\projectiles\projectile\bullets.dm" +#include "code\modules\projectiles\projectile\change.dm" +#include "code\modules\projectiles\projectile\energy.dm" +#include "code\modules\projectiles\projectile\force.dm" +#include "code\modules\projectiles\projectile\magic.dm" +#include "code\modules\projectiles\projectile\special.dm" +#include "code\modules\reagents\Chemistry-Colours.dm" +#include "code\modules\reagents\Chemistry-Holder.dm" +#include "code\modules\reagents\Chemistry-Machinery.dm" +#include "code\modules\reagents\Chemistry-Readme.dm" +#include "code\modules\reagents\Chemistry-Reagents-Antidepressants.dm" +#include "code\modules\reagents\Chemistry-Reagents.dm" +#include "code\modules\reagents\Chemistry-Recipes.dm" +#include "code\modules\reagents\dartgun.dm" +#include "code\modules\reagents\grenade_launcher.dm" +#include "code\modules\reagents\reagent_containers.dm" +#include "code\modules\reagents\reagent_dispenser.dm" +#include "code\modules\reagents\syringe_gun.dm" +#include "code\modules\reagents\reagent_containers\blood_pack.dm" +#include "code\modules\reagents\reagent_containers\borghydro.dm" +#include "code\modules\reagents\reagent_containers\dropper.dm" +#include "code\modules\reagents\reagent_containers\drugs.dm" +#include "code\modules\reagents\reagent_containers\food.dm" +#include "code\modules\reagents\reagent_containers\glass.dm" +#include "code\modules\reagents\reagent_containers\hypospray.dm" +#include "code\modules\reagents\reagent_containers\pill.dm" +#include "code\modules\reagents\reagent_containers\robodropper.dm" +#include "code\modules\reagents\reagent_containers\spray.dm" +#include "code\modules\reagents\reagent_containers\syringes.dm" +#include "code\modules\reagents\reagent_containers\food\cans.dm" +#include "code\modules\reagents\reagent_containers\food\condiment.dm" +#include "code\modules\reagents\reagent_containers\food\drinks.dm" +#include "code\modules\reagents\reagent_containers\food\sandwich.dm" +#include "code\modules\reagents\reagent_containers\food\snacks.dm" +#include "code\modules\reagents\reagent_containers\food\drinks\bottle.dm" +#include "code\modules\reagents\reagent_containers\food\drinks\drinkingglass.dm" +#include "code\modules\reagents\reagent_containers\food\drinks\jar.dm" +#include "code\modules\reagents\reagent_containers\food\drinks\bottle\robot.dm" +#include "code\modules\reagents\reagent_containers\food\snacks\grown.dm" +#include "code\modules\reagents\reagent_containers\food\snacks\meat.dm" +#include "code\modules\reagents\reagent_containers\glass\bottle.dm" +#include "code\modules\reagents\reagent_containers\glass\bottle\robot.dm" +#include "code\modules\recycling\conveyor2.dm" +#include "code\modules\recycling\disposal-construction.dm" +#include "code\modules\recycling\disposal.dm" +#include "code\modules\recycling\sortingmachinery.dm" +#include "code\modules\research\circuitprinter.dm" +#include "code\modules\research\designs.dm" +#include "code\modules\research\destructive_analyzer.dm" +#include "code\modules\research\message_server.dm" +#include "code\modules\research\protolathe.dm" +#include "code\modules\research\rd-readme.dm" +#include "code\modules\research\rdconsole.dm" +#include "code\modules\research\rdmachines.dm" +#include "code\modules\research\research.dm" +#include "code\modules\research\server.dm" +#include "code\modules\research\xenoarchaeology\areas.dm" +#include "code\modules\research\xenoarchaeology\chemistry.dm" +#include "code\modules\research\xenoarchaeology\geosample.dm" +#include "code\modules\research\xenoarchaeology\manuals.dm" +#include "code\modules\research\xenoarchaeology\master_controller.dm" +#include "code\modules\research\xenoarchaeology\misc.dm" +#include "code\modules\research\xenoarchaeology\readme.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_autocloner.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_crystal.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_gigadrill.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_hoverpod.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_replicator.dm" +#include "code\modules\research\xenoarchaeology\artifact\artifact_unknown.dm" +#include "code\modules\research\xenoarchaeology\artifact\effect.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_affect_cold.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_badfeeling.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_cellcharge.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_celldrain.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_dnaswitch.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_emp.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_forcefield.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasco2.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasnitro.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasoxy.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasplasma.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gassleeping.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_goodfeeling.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heal.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heat.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_hurt.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_radiate.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_roboheal.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_robohurt.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_sleepy.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_stun.dm" +#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_teleport.dm" +#include "code\modules\research\xenoarchaeology\finds\finds.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_defines.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_fossils.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_misc.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_special.dm" +#include "code\modules\research\xenoarchaeology\finds\finds_talkingitem.dm" +#include "code\modules\research\xenoarchaeology\genetics\prehistoric_animals.dm" +#include "code\modules\research\xenoarchaeology\genetics\prehistoric_plants.dm" +#include "code\modules\research\xenoarchaeology\genetics\prehistoric_seeds.dm" +#include "code\modules\research\xenoarchaeology\genetics\reconstitutor.dm" +#include "code\modules\research\xenoarchaeology\machinery\artifact_analyser.dm" +#include "code\modules\research\xenoarchaeology\machinery\artifact_harvester.dm" +#include "code\modules\research\xenoarchaeology\machinery\artifact_scanner.dm" +#include "code\modules\research\xenoarchaeology\machinery\coolant.dm" +#include "code\modules\research\xenoarchaeology\machinery\geosample_scanner.dm" +#include "code\modules\research\xenoarchaeology\tools\ano_device_battery.dm" +#include "code\modules\research\xenoarchaeology\tools\anomaly_suit.dm" +#include "code\modules\research\xenoarchaeology\tools\bunsen_burner.dm" +#include "code\modules\research\xenoarchaeology\tools\gearbelt.dm" +#include "code\modules\research\xenoarchaeology\tools\suspension_generator.dm" +#include "code\modules\research\xenoarchaeology\tools\tools.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_anoscanner.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_coresampler.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_depthscanner.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_locater.dm" +#include "code\modules\research\xenoarchaeology\tools\tools_pickaxe.dm" +#include "code\modules\scripting\Errors.dm" +#include "code\modules\scripting\IDE.dm" +#include "code\modules\scripting\Options.dm" +#include "code\modules\scripting\stack.dm" +#include "code\modules\scripting\AST\AST Nodes.dm" +#include "code\modules\scripting\AST\Blocks.dm" +#include "code\modules\scripting\AST\Statements.dm" +#include "code\modules\scripting\AST\Operators\Binary Operators.dm" +#include "code\modules\scripting\AST\Operators\Unary Operators.dm" +#include "code\modules\scripting\Implementations\_Logic.dm" +#include "code\modules\scripting\Implementations\Telecomms.dm" +#include "code\modules\scripting\Interpreter\Evaluation.dm" +#include "code\modules\scripting\Interpreter\Interaction.dm" +#include "code\modules\scripting\Interpreter\Interpreter.dm" +#include "code\modules\scripting\Interpreter\Scope.dm" +#include "code\modules\scripting\Parser\Expressions.dm" +#include "code\modules\scripting\Parser\Keywords.dm" +#include "code\modules\scripting\Parser\Parser.dm" +#include "code\modules\scripting\Scanner\Scanner.dm" +#include "code\modules\scripting\Scanner\Tokens.dm" +#include "code\modules\security levels\keycard authentication.dm" +#include "code\modules\security levels\security levels.dm" +#include "code\modules\shuttles\antagonist.dm" +#include "code\modules\shuttles\departmental.dm" +#include "code\modules\shuttles\escape_pods.dm" +#include "code\modules\shuttles\shuttle.dm" +#include "code\modules\shuttles\shuttle_console.dm" +#include "code\modules\shuttles\shuttle_emergency.dm" +#include "code\modules\shuttles\shuttle_ferry.dm" +#include "code\modules\shuttles\shuttle_specops.dm" +#include "code\modules\shuttles\shuttle_supply.dm" +#include "code\modules\shuttles\shuttles_multi.dm" +#include "code\modules\store\items.dm" +#include "code\modules\store\store.dm" +#include "code\modules\supermatter\supermatter.dm" +#include "code\modules\surgery\bones.dm" +#include "code\modules\surgery\braincore.dm" +#include "code\modules\surgery\eye.dm" +#include "code\modules\surgery\face.dm" +#include "code\modules\surgery\generic.dm" +#include "code\modules\surgery\headreattach.dm" +#include "code\modules\surgery\implant.dm" +#include "code\modules\surgery\other.dm" +#include "code\modules\surgery\ribcage.dm" +#include "code\modules\surgery\robolimbs.dm" +#include "code\modules\surgery\surgery.dm" +#include "code\modules\vehicles\ambulance.dm" +#include "code\modules\vehicles\cargo_train.dm" +#include "code\modules\vehicles\janicart.dm" +#include "code\modules\vehicles\train.dm" +#include "code\modules\vehicles\vehicle.dm" +#include "code\modules\virus2\analyser.dm" +#include "code\modules\virus2\antibodies.dm" +#include "code\modules\virus2\centrifuge.dm" +#include "code\modules\virus2\curer.dm" +#include "code\modules\virus2\disease2.dm" +#include "code\modules\virus2\diseasesplicer.dm" +#include "code\modules\virus2\dishincubator.dm" +#include "code\modules\virus2\effect.dm" +#include "code\modules\virus2\helpers.dm" +#include "code\modules\virus2\isolator.dm" +#include "code\modules\virus2\items_devices.dm" +#include "code\WorkInProgress\autopsy.dm" +#include "code\WorkInProgress\buildmode.dm" +#include "code\WorkInProgress\explosion_particles.dm" +#include "code\WorkInProgress\fireworks.dm" +#include "code\WorkInProgress\periodic_news.dm" +#include "code\WorkInProgress\Apples\artifacts.dm" +#include "code\WorkInProgress\Cael_Aislinn\sculpture.dm" +#include "code\WorkInProgress\Cael_Aislinn\Jungle\falsewall.dm" +#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle.dm" +#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_animals.dm" +#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_plants.dm" +#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_temple.dm" +#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_tribe.dm" +#include "code\WorkInProgress\Cael_Aislinn\Jungle\jungle_turfs.dm" +#include "code\WorkInProgress\Cael_Aislinn\Jungle\misc_helpers.dm" +#include "code\WorkInProgress\Cael_Aislinn\Rust\areas.dm" +#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\circuits_and_designs.dm" +#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\energy_field.dm" +#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_capacitor.dm" +#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen.dm" +#include "code\WorkInProgress\Cael_Aislinn\ShieldGen\shield_gen_external.dm" +#include "code\WorkInProgress\Chinsky\ashtray.dm" +#include "code\WorkInProgress\Chinsky\guestpass.dm" +#include "code\WorkInProgress\Cib\MedicalSideEffects.dm" +#include "code\WorkInProgress\computer3\bios.dm" +#include "code\WorkInProgress\computer3\buildandrepair.dm" +#include "code\WorkInProgress\computer3\component.dm" +#include "code\WorkInProgress\computer3\computer.dm" +#include "code\WorkInProgress\computer3\computer3_notes.dm" +#include "code\WorkInProgress\computer3\file.dm" +#include "code\WorkInProgress\computer3\laptop.dm" +#include "code\WorkInProgress\computer3\lapvend.dm" +#include "code\WorkInProgress\computer3\networking.dm" +#include "code\WorkInProgress\computer3\NTOS.dm" +#include "code\WorkInProgress\computer3\program.dm" +#include "code\WorkInProgress\computer3\program_disks.dm" +#include "code\WorkInProgress\computer3\server.dm" +#include "code\WorkInProgress\computer3\storage.dm" +#include "code\WorkInProgress\computer3\computers\arcade.dm" +#include "code\WorkInProgress\computer3\computers\atmos_alert.dm" +#include "code\WorkInProgress\computer3\computers\camera.dm" +#include "code\WorkInProgress\computer3\computers\card.dm" +#include "code\WorkInProgress\computer3\computers\communications.dm" +#include "code\WorkInProgress\computer3\computers\crew.dm" +#include "code\WorkInProgress\computer3\computers\customs.dm" +#include "code\WorkInProgress\computer3\computers\HolodeckControl.dm" +#include "code\WorkInProgress\computer3\computers\law.dm" +#include "code\WorkInProgress\computer3\computers\medical.dm" +#include "code\WorkInProgress\computer3\computers\Operating.dm" +#include "code\WorkInProgress\computer3\computers\power.dm" +#include "code\WorkInProgress\computer3\computers\prisoner.dm" +#include "code\WorkInProgress\computer3\computers\robot.dm" +#include "code\WorkInProgress\computer3\computers\security.dm" +#include "code\WorkInProgress\computer3\computers\welcome.dm" +#include "code\WorkInProgress\Mini\atmos_control.dm" +#include "code\WorkInProgress\Ported\policetape.dm" +#include "code\WorkInProgress\Sayu\belt.dm" +#include "code\WorkInProgress\Sayu\cargoprofile.dm" +#include "code\WorkInProgress\Sayu\grenades.dm" +#include "code\WorkInProgress\Sayu\programmable.dm" +#include "code\WorkInProgress\Sayu\random_items.dm" +#include "code\WorkInProgress\SkyMarshal\Ultralight_procs.dm" +#include "code\WorkInProgress\ZomgPonies\karma.dm" +#include "code\WorkInProgress\ZomgPonies\clothing\civilian.dm" +#include "code\WorkInProgress\ZomgPonies\mobs\pony.dm" +#include "code\WorkInProgress\ZomgPonies\oldcode\turntable.dm" +#include "code\WorkInProgress\ZomgPonies\powerarmor\powerarmor.dm" +#include "code\WorkInProgress\ZomgPonies\powerarmor\powerarmorcomponents.dm" +#include "code\ZAS\_docs.dm" +#include "code\ZAS\_gas_mixture.dm" +#include "code\ZAS\Airflow.dm" +#include "code\ZAS\Atom.dm" +#include "code\ZAS\Connection.dm" +#include "code\ZAS\ConnectionGroup.dm" +#include "code\ZAS\ConnectionManager.dm" +#include "code\ZAS\Controller.dm" +#include "code\ZAS\Debug.dm" +#include "code\ZAS\Diagnostic.dm" +#include "code\ZAS\Fire.dm" +#include "code\ZAS\Plasma.dm" +#include "code\ZAS\Turf.dm" +#include "code\ZAS\Variable Settings.dm" +#include "code\ZAS\Zone.dm" +#include "interface\interface.dm" +#include "interface\skin.dmf" +#include "maps\cyberiad.dmm" +#include "maps\RandomZLevels\clown3.dmm" +// END_INCLUDE diff --git a/baystation12.otr b/paradise.otr similarity index 100% rename from baystation12.otr rename to paradise.otr From 90bbdcac2c394c90ea499c54df84b43cc5de97f8 Mon Sep 17 00:00:00 2001 From: DZD Date: Fri, 5 Dec 2014 20:21:11 -0500 Subject: [PATCH 2/5] Space Pod Weapons Fix and Minor Changes - [x]Space pods will now fire their weapons properly. - [x]Space pods now have less health (150 for regular pods, 200 for security) - [x]Space pods now have a light that can be toggled on/off. - [x]Security pod now has a regular taser rather than a burst taser by default - [x]Adjusted fire rates and energy costs for space pod weapons - [x]Tasers can fire every 2 seconds at a 250 energy cost. - [x]Lasers can fire every 3 seconds at a 300 energy cost. - [x]Burst tasers can fire every 4 seconds at a 350 energy cost. --- code/game/vehicles/spacepods/equipment.dm | 61 ++++++++++------------- code/game/vehicles/spacepods/spacepod.dm | 44 +++++++++++----- 2 files changed, 56 insertions(+), 49 deletions(-) diff --git a/code/game/vehicles/spacepods/equipment.dm b/code/game/vehicles/spacepods/equipment.dm index 0cb0d21fbc2..e8815739966 100644 --- a/code/game/vehicles/spacepods/equipment.dm +++ b/code/game/vehicles/spacepods/equipment.dm @@ -1,5 +1,4 @@ /obj/item/device/spacepod_equipment/weaponry/proc/fire_weapons() - if(my_atom.next_firetime > world.time) usr << "Your weapons are recharging." return @@ -12,37 +11,39 @@ my_atom.battery.use(shot_cost) var/olddir for(var/i = 0; i < shots_per; i++) - if(olddir != dir) - switch(dir) + if(olddir != my_atom.dir) + switch(my_atom.dir) if(NORTH) - firstloc = get_step(src, NORTH) + firstloc = get_step(my_atom, NORTH) + firstloc = get_step(firstloc, NORTH) secondloc = get_step(firstloc,EAST) if(SOUTH) - firstloc = get_turf(src) + firstloc = get_step(my_atom, SOUTH) secondloc = get_step(firstloc,EAST) if(EAST) - firstloc = get_turf(src) + firstloc = get_step(my_atom, EAST) firstloc = get_step(firstloc, EAST) secondloc = get_step(firstloc,NORTH) if(WEST) - firstloc = get_turf(src) + firstloc = get_step(my_atom, WEST) secondloc = get_step(firstloc,NORTH) olddir = dir - var/obj/item/projectile/projone = new projectile_type(firstloc) - var/obj/item/projectile/projtwo = new projectile_type(secondloc) - projone.starting = get_turf(src) + var/proj_type = text2path(projectile_type) + var/obj/item/projectile/projone = new proj_type(firstloc) + var/obj/item/projectile/projtwo = new proj_type(secondloc) + projone.starting = get_turf(my_atom) projone.shot_from = src projone.firer = usr projone.def_zone = "chest" - projtwo.starting = get_turf(src) + projtwo.starting = get_turf(my_atom) projtwo.shot_from = src projtwo.firer = usr projtwo.def_zone = "chest" spawn() playsound(src, fire_sound, 50, 1) - projone.dumbfire(dir) - projtwo.dumbfire(dir) - sleep(1) + projone.dumbfire(my_atom.dir) + projtwo.dumbfire(my_atom.dir) + sleep(2) my_atom.next_firetime = world.time + fire_delay /datum/spacepod/equipment @@ -70,44 +71,32 @@ var/shot_cost = 0 var/shots_per = 1 var/fire_sound - var/fire_delay = 10 + var/fire_delay = 20 /obj/item/device/spacepod_equipment/weaponry/taser name = "\improper taser system" desc = "A weak taser system for space pods, fires electrodes that shock upon impact." icon_state = "pod_taser" projectile_type = "/obj/item/projectile/energy/electrode" - shot_cost = 10 + shot_cost = 250 fire_sound = "sound/weapons/Taser.ogg" -/obj/item/device/spacepod_equipment/weaponry/taser/proc/fire_weapon_system() - set category = "Spacepod" - set name = "Fire Taser System" - set desc = "Fire the tasers." - set src = usr.loc - - fire_weapons() - -/obj/item/device/spacepod_equipment/weaponry/taser/burst - name = "\improper taser system" +/obj/item/device/spacepod_equipment/weaponry/burst_taser + name = "\improper burst taser system" desc = "A weak taser system for space pods, this one fires 3 at a time." icon_state = "pod_b_taser" - shot_cost = 20 + projectile_type = "/obj/item/projectile/energy/electrode" + shot_cost = 350 shots_per = 3 + fire_sound = "sound/weapons/Taser.ogg" + fire_delay = 40 /obj/item/device/spacepod_equipment/weaponry/laser name = "\improper laser system" desc = "A weak laser system for space pods, fires concentrated bursts of energy" icon_state = "pod_w_laser" projectile_type = "/obj/item/projectile/beam" - shot_cost = 15 + shot_cost = 300 fire_sound = 'sound/weapons/Laser.ogg' - fire_delay = 25 + fire_delay = 30 -/obj/item/device/spacepod_equipment/weaponry/laser/proc/fire_weapon_system() - set category = "Spacepod" - set name = "Fire Laser System" - set desc = "Fire the lasers." - set src = usr.loc - - fire_weapons() \ No newline at end of file diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index dec4673d13b..7b533eb5b01 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -24,7 +24,9 @@ var/hatch_open = 0 var/next_firetime = 0 var/list/pod_overlays - var/health = 400 + var/health = 200 + var/lights = 0 + var/lights_power = 6 /obj/spacepod/New() . = ..() @@ -140,9 +142,6 @@ W.loc = equipment_system equipment_system.weapon_system = W equipment_system.weapon_system.my_atom = src - var/path = text2path("[W.type]/proc/fire_weapon_system") - if(path) - verbs += path//obj/spacepod/proc/fire_weapons return @@ -207,16 +206,14 @@ name = "\improper security spacepod" desc = "An armed security spacepod." icon_state = "pod_mil" + health = 150 /obj/spacepod/sec/New() ..() - var/obj/item/device/spacepod_equipment/weaponry/taser/burst/T = new /obj/item/device/spacepod_equipment/weaponry/taser/burst + var/obj/item/device/spacepod_equipment/weaponry/taser/T = new /obj/item/device/spacepod_equipment/weaponry/taser T.loc = equipment_system equipment_system.weapon_system = T - equipment_system.weapon_system.my_atom = T - var/path = text2path("[T.type]/proc/fire_weapon_system") - if(path) - verbs += path//obj/spacepod/proc/fire_weapons + equipment_system.weapon_system.my_atom = src return /obj/spacepod/random/New() @@ -368,12 +365,12 @@ src.occupant = null usr << "You climb out of the pod" return - + /obj/spacepod/verb/toggleDoors() set name = "Toggle Nearby Pod Doors" set category = "Spacepod" set src = usr.loc - + for(var/obj/machinery/door/poddoor/P in oview(3,src)) if(istype(P, /obj/machinery/door/poddoor/three_tile_hor) || istype(P, /obj/machinery/door/poddoor/three_tile_ver) || istype(P, /obj/machinery/door/poddoor/four_tile_hor) || istype(P, /obj/machinery/door/poddoor/four_tile_ver)) var/mob/living/carbon/human/L = usr @@ -384,9 +381,30 @@ else P.close() return 1 - usr << "Access denied." + usr << "Access denied." return - usr << "You are not close to any pod doors." + usr << "You are not close to any pod doors." + return + +/obj/spacepod/verb/fireWeapon() + set name = "Fire Pod Weapons" + set desc = "Fire the weapons." + set category = "Spacepod" + set src = usr.loc + equipment_system.weapon_system.fire_weapons() + +obj/spacepod/verb/toggleLights() + set name = "Toggle Lights" + set category = "Spacepod" + set src = usr.loc + if (usr != occupant) + return + lights = !lights + if(lights) + SetLuminosity(luminosity + lights_power) + else + SetLuminosity(luminosity - lights_power) + occupant << "Toggled lights [lights?"on":"off"]." return /obj/spacepod/proc/enter_after(delay as num, var/mob/user as mob, var/numticks = 5) From e96f7799bba160947040903d479660b504773263 Mon Sep 17 00:00:00 2001 From: DZD Date: Fri, 5 Dec 2014 20:22:25 -0500 Subject: [PATCH 3/5] Fixes Space Pod Health Civilian space pod has 100 health instead of 200. --- code/game/vehicles/spacepods/spacepod.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/vehicles/spacepods/spacepod.dm b/code/game/vehicles/spacepods/spacepod.dm index 7b533eb5b01..e41bfee03fd 100644 --- a/code/game/vehicles/spacepods/spacepod.dm +++ b/code/game/vehicles/spacepods/spacepod.dm @@ -24,7 +24,7 @@ var/hatch_open = 0 var/next_firetime = 0 var/list/pod_overlays - var/health = 200 + var/health = 100 var/lights = 0 var/lights_power = 6 @@ -204,7 +204,7 @@ /obj/spacepod/sec name = "\improper security spacepod" - desc = "An armed security spacepod." + desc = "An armed security spacepod with reinforced armor plating." icon_state = "pod_mil" health = 150 From 86f80d5a6927a067a49bf42b4b084519deaa58cf Mon Sep 17 00:00:00 2001 From: Markolie Date: Sat, 6 Dec 2014 08:28:02 +0100 Subject: [PATCH 4/5] IPC fixes galore --- .gitignore | 6 +-- code/game/machinery/OpTable.dm | 54 ++++++------------- code/game/objects/items/weapons/tools.dm | 26 ++++++--- code/modules/mob/living/carbon/brain/say.dm | 3 ++ code/modules/mob/living/carbon/human/death.dm | 24 +++++---- code/modules/mob/living/carbon/human/life.dm | 3 ++ code/modules/power/cable.dm | 6 +++ code/modules/reagents/reagent_dispenser.dm | 1 + code/modules/research/designs.dm | 10 ++++ .../xenoarchaeology/artifact/artifact.dm | 19 +++++++ code/modules/surgery/face.dm | 2 + code/modules/surgery/headreattach.dm | 49 ++++++++++++----- code/modules/surgery/robolimbs.dm | 44 ++++++++++----- maps/cyberiad.dmm | 2 +- 14 files changed, 167 insertions(+), 82 deletions(-) diff --git a/.gitignore b/.gitignore index c1c488d24b6..b0cdc822cb3 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,6 @@ #ignore other, specific files and folers data/ -maps/backup/* -maps/cyberiad.dmm.backup -nano/debug.html \ No newline at end of file +/maps/backup/* +/maps/cyberiad.dmm.backup +/nano/debug.html \ No newline at end of file diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index f16bfc65334..36984e5c314 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -20,11 +20,8 @@ if (computer) computer.table = src break -// spawn(100) //Wont the MC just call this process() before and at the 10 second mark anyway? -// process() /obj/machinery/optable/ex_act(severity) - switch(severity) if(1.0) //SN src = null @@ -76,41 +73,17 @@ /obj/machinery/optable/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob) - - if(O.loc == user) //no you can't pull things out of your ass - return - if(user.restrained() || user.stat || user.weakened || user.stunned || user.paralysis || user.resting) //are you cuffed, dying, lying, stunned or other - return - if(O.anchored || get_dist(user, src) > 1 || get_dist(user, O) > 1 || user.contents.Find(src)) // is the mob anchored, too far away from you, or are you too far away from the source - return - if(!ismob(O)) //humans only - return - if(istype(O, /mob/living/simple_animal) || istype(O, /mob/living/silicon)) //animals and robutts dont fit - return - if(!ishuman(user) && !isrobot(user)) //No ghosts or mice putting people into the sleeper - return - if(user.loc==null) // just in case someone manages to get a closet into the blue light dimension, as unlikely as that seems - return - if(!istype(user.loc, /turf) || !istype(O.loc, /turf)) // are you in a container/closet/pod/etc? + if(usr.stat || !ishuman(usr) || usr.restrained() || !check_table(usr)) return + var/mob/living/L = O - if(!istype(L) || L.buckled) - return - for(var/mob/living/carbon/slime/M in range(1,L)) - if(M.Victim == L) - usr << "[L.name] cannot be operated on while they have \a [M] attached to their head!" - return - if(src.victim) - usr << "\blue The table is already occupied!" - return - - take_victim(L, user) + take_victim(L,usr) return /obj/machinery/optable/proc/check_victim() if(locate(/mob/living/carbon/human, src.loc)) var/mob/living/carbon/human/M = locate(/mob/living/carbon/human, src.loc) - if(M.resting) + if(M.lying) src.victim = M icon_state = M.pulse ? "table2-active" : "table2-idle" return 1 @@ -146,11 +119,7 @@ set category = "Object" set src in oview(1) - if(usr.stat || !ishuman(usr) || usr.buckled || usr.restrained()) - return - - if(src.victim) - usr << "\blue The table is already occupied!" + if(usr.stat || !ishuman(usr) || usr.restrained() || !check_table(usr)) return take_victim(usr,usr) @@ -162,5 +131,14 @@ del(W) return -/obj/machinery/optable/slime - icon_state = "table-slime" + +/obj/machinery/optable/proc/check_table(mob/living/carbon/patient as mob) + if(src.victim) + usr << "\blue The table is already occupied!" + return 0 + + if(patient.buckled) + usr << "\blue Unbuckle first!" + return 0 + + return 1 diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 96d58bf6dc6..4838c848339 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -463,7 +463,6 @@ item_state = "crowbar_red" /obj/item/weapon/weldingtool/attack(mob/M as mob, mob/user as mob) - if(hasorgans(M)) var/datum/organ/external/S = M:organs_by_name[user.zone_sel.selecting] @@ -480,14 +479,27 @@ return if(S.brute_dam) - S.heal_damage(15,0,0,1) - user.visible_message("\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src].") - if(istype(M,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = M - H.updatehealth() - return + var/obj/item/weapon/weldingtool/WT = src + if (WT.remove_fuel(0,user)) + playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1) + S.heal_damage(15,0,0,1) + user.visible_message("\red \The [user] patches some dents on \the [M]'s [S.display_name] with \the [src].") + if(istype(M,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + H.updatehealth() + if(istype(M,/mob/living/carbon/human/machine) && M.stat == 0) // If an IPC is brought back to life by welding it, which is possible, update the mob list + if(M in dead_mob_list) + dead_mob_list -= M + respawnable_list -= M + living_mob_list += M + mob_list += M + return + else + user << "\red You need more welding fuel to complete this task." + return else user << "Nothing to fix!" + return else return ..() diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm index fa09d87f22a..1e7a9da9a76 100644 --- a/code/modules/mob/living/carbon/brain/say.dm +++ b/code/modules/mob/living/carbon/brain/say.dm @@ -1,6 +1,9 @@ /mob/living/carbon/brain/say(var/message) if (silent) return + + if (stat == 2) // Dead. + return say_dead(message) if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/mmi/posibrain)))) return //No MMI, can't speak, bucko./N diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index f18ab76d718..55e894b90bf 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -5,13 +5,13 @@ canmove = 0 icon = null invisibility = 101 + if(!(species.flags & IS_SYNTHETIC)) + animation = new(loc) + animation.icon_state = "blank" + animation.icon = 'icons/mob/mob.dmi' + animation.master = src - animation = new(loc) - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = src - - playsound(src.loc, 'sound/effects/gib.ogg', 100, 1, 10) + playsound(src.loc, 'sound/effects/gib.ogg', 100, 1, 10) for(var/datum/organ/external/E in src.organs) if(istype(E, /datum/organ/external/chest)) @@ -20,9 +20,15 @@ if(prob(100 - E.get_damage())) // Override the current limb status and don't cause an explosion E.droplimb(1,1) - - flick("gibbed-h", animation) - hgibs(loc, viruses, dna) + + if(!(species.flags & IS_SYNTHETIC)) + flick("gibbed-h", animation) + hgibs(loc, viruses, dna) + else + new /obj/effect/decal/cleanable/robot_debris(src.loc) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(3, 1, src) + s.start() spawn(15) if(animation) del(animation) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 1f2b53fe5f4..046fad8d152 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1672,6 +1672,9 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc proc/handle_decay() var/decaytime = world.time - timeofdeath + + if(species.flags & IS_SYNTHETIC) + return if(decaytime <= 6000) //10 minutes for decaylevel1 -- stinky return diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index c688127ad2b..1223913f0ce 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -633,6 +633,12 @@ obj/structure/cable/proc/cableColor(var/colorC) if(istype(M,/mob/living/carbon/human)) var/mob/living/carbon/human/H = M H.updatehealth() + if(istype(M,/mob/living/carbon/human/machine) && M.stat == 0) // If an IPC is brought back to life by welding it, which is possible, update the mob list + if(M in dead_mob_list) + dead_mob_list -= M + respawnable_list -= M + living_mob_list += M + mob_list += M return else user << "Nothing to fix!" diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index b97908a76ab..f4736a33fdd 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -251,6 +251,7 @@ icon_state = "virusfoodtank" amount_per_transfer_from_this = 10 anchored = 1 + density = 0 New() ..() diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 85ad55e083c..aef3092f261 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1579,6 +1579,16 @@ datum/design/adv_reagent_scanner reliability_base = 74 build_path = "/obj/item/device/reagent_scanner/adv" +datum/design/cyborg_analyzer + name = "Cyborg Analyzer" + desc = "A hand-held scanner able to diagnose robotic injuries." + id = "cyborg_analyzer" + req_tech = list("programming" = 2, "biotech" = 2, "magnets" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 30, "$glass" = 20) + reliability_base = 74 + build_path = "/obj/item/device/robotanalyzer" + datum/design/mmi name = "Man-Machine Interface" desc = "The Warrior's bland acronym, MMI, obscures the true horror of this monstrosity." diff --git a/code/modules/research/xenoarchaeology/artifact/artifact.dm b/code/modules/research/xenoarchaeology/artifact/artifact.dm index 669ae3d17b0..1ba21f79667 100644 --- a/code/modules/research/xenoarchaeology/artifact/artifact.dm +++ b/code/modules/research/xenoarchaeology/artifact/artifact.dm @@ -44,6 +44,25 @@ /obj/structure/boulder/New() icon_state = "boulder[rand(1,4)]" excavation_level = rand(5,50) + +/obj/structure/boulder/Bumped(AM) + . = ..() + if(istype(AM,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = AM + if((istype(H.l_hand,/obj/item/weapon/pickaxe)) && (!H.hand)) + attackby(H.l_hand,H) + else if((istype(H.r_hand,/obj/item/weapon/pickaxe)) && H.hand) + attackby(H.r_hand,H) + + else if(istype(AM,/mob/living/silicon/robot)) + var/mob/living/silicon/robot/R = AM + if(istype(R.module_active,/obj/item/weapon/pickaxe)) + attackby(R.module_active,R) + + else if(istype(AM,/obj/mecha)) + var/obj/mecha/M = AM + if(istype(M.selected,/obj/item/mecha_parts/mecha_equipment/tool/drill)) + M.selected.action(src) /obj/structure/boulder/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/device/core_sampler)) diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm index daec3c36eca..13a90e1ab2d 100644 --- a/code/modules/surgery/face.dm +++ b/code/modules/surgery/face.dm @@ -128,6 +128,8 @@ if (target.op_stage.face == 3) var/datum/organ/external/head/h = affected h.disfigured = 0 + h.update_icon() + target.regenerate_icons() target.op_stage.face = 0 fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) diff --git a/code/modules/surgery/headreattach.dm b/code/modules/surgery/headreattach.dm index 43d5c3c44d2..3c49a9e8c0a 100644 --- a/code/modules/surgery/headreattach.dm +++ b/code/modules/surgery/headreattach.dm @@ -26,20 +26,28 @@ min_duration = 80 max_duration = 100 - + can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) return ..() && !(affected.status & ORGAN_CUT_AWAY) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("[user] starts peeling back tattered flesh where [target]'s head used to be with \the [tool].", \ - "You start peeling back tattered flesh where [target]'s head used to be with \the [tool].") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("[user] starts peeling back tattered flesh where [target]'s head used to be with \the [tool].", \ + "You start peeling back tattered flesh where [target]'s head used to be with \the [tool].") + else + user.visible_message("[user] starts peeling back metal where [target]'s head used to be with \the [tool].", \ + "You start peeling back metal where [target]'s head used to be with \the [tool].") ..() end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\blue [user] peels back tattered flesh where [target]'s head used to be with \the [tool].", \ - "\blue You peel back tattered flesh where [target]'s head used to be with \the [tool].") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("\blue [user] peels back tattered flesh where [target]'s head used to be with \the [tool].", \ + "\blue You peel back tattered flesh where [target]'s head used to be with \the [tool].") + else + user.visible_message("\blue [user] peels back metal where [target]'s head used to be with \the [tool].", \ + "\blue You peel back metal where [target]'s head used to be with \the [tool].") affected.status |= ORGAN_CUT_AWAY fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -47,7 +55,7 @@ if (affected.parent) affected = affected.parent user.visible_message("\red [user]'s hand slips, ripping [target]'s [affected.display_name] open!", \ - "\red Your hand slips, ripping [target]'s [affected.display_name] open!") + "\red Your hand slips, ripping [target]'s [affected.display_name] open!") affected.createwound(CUT, 10) @@ -72,16 +80,25 @@ ..() end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - user.visible_message("\blue [user] has finished repositioning flesh and tissue to something anatomically recognizable where [target]'s head used to be with \the [tool].", \ - "\blue You have finished repositioning flesh and tissue to something anatomically recognizable where [target]'s head used to be with \the [tool].") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("\blue [user] has finished repositioning flesh and tissue to something anatomically recognizable where [target]'s head used to be with \the [tool].", \ + "\blue You have finished repositioning flesh and tissue to something anatomically recognizable where [target]'s head used to be with \the [tool].") + else + user.visible_message("\blue [user] has finished repositioning metal to something recognizable where [target]'s head used to be with \the [tool].", \ + "\blue You have finished repositioning metal to something anatomically recognizable where [target]'s head used to be with \the [tool].") + target.op_stage.head_reattach = 1 fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) if (affected.parent) affected = affected.parent + if(!(target.species.flags & IS_SYNTHETIC)) user.visible_message("\red [user]'s hand slips, further rending flesh on [target]'s neck!", \ "\red Your hand slips, further rending flesh on [target]'s neck!") + else + user.visible_message("\red [user]'s hand slips, further rending metal on [target]'s neck!", \ + "\red Your hand slips, further rending metal on [target]'s neck!") target.apply_damage(10, BRUTE, affected) /datum/surgery_step/head/suture @@ -99,8 +116,12 @@ begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) // var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] is stapling and suturing flesh into place in [target]'s esophagal and vocal region with \the [tool].", \ - "You start to staple and suture flesh into place in [target]'s esophagal and vocal region with \the [tool].") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("[user] is stapling and suturing flesh into place in [target]'s esophagal and vocal region with \the [tool].", \ + "You start to staple and suture flesh into place in [target]'s esophagal and vocal region with \the [tool].") + else + user.visible_message("[user] is stapling and suturing metal into place in [target]'s esophagal and vocal region with \the [tool].", \ + "You start to staple and suture metal into place in [target]'s esophagal and vocal region with \the [tool].") ..() end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -175,15 +196,19 @@ user.visible_message("\blue [user] has attached [target]'s head to the body.", \ "\blue You have attached [target]'s head to the body.") affected.status = 0 + if(istype(target,/mob/living/carbon/human/machine)) + affected.status = 128 affected.amputated = 0 affected.destspawn = 0 var/obj/item/weapon/organ/head/B = tool if (B.brainmob.mind) B.brainmob.mind.transfer_to(target) + affected.setAmputatedTree() + target.handle_organs() target.update_body() - target.updatehealth() target.UpdateDamageIcon() - + target.regenerate_icons() + target.updatehealth() del(B) fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) diff --git a/code/modules/surgery/robolimbs.dm b/code/modules/surgery/robolimbs.dm index d79437ace40..94aac677711 100644 --- a/code/modules/surgery/robolimbs.dm +++ b/code/modules/surgery/robolimbs.dm @@ -37,14 +37,22 @@ begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] starts cutting away flesh where [target]'s [affected.display_name] used to be with \the [tool].", \ - "You start cutting away flesh where [target]'s [affected.display_name] used to be with \the [tool].") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("[user] starts cutting away flesh where [target]'s [affected.display_name] used to be with \the [tool].", \ + "You start cutting away flesh where [target]'s [affected.display_name] used to be with \the [tool].") + else + user.visible_message("[user] starts cutting away metal where [target]'s [affected.display_name] used to be with \the [tool].", \ + "You start cutting away metal where [target]'s [affected.display_name] used to be with \the [tool].") ..() end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\blue [user] cuts away flesh where [target]'s [affected.display_name] used to be with \the [tool].", \ - "\blue You cut away flesh where [target]'s [affected.display_name] used to be with \the [tool].") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("\blue [user] cuts away flesh where [target]'s [affected.display_name] used to be with \the [tool].", \ + "\blue You cut away flesh where [target]'s [affected.display_name] used to be with \the [tool].") + else + user.visible_message("\blue [user] cuts away metal where [target]'s [affected.display_name] used to be with \the [tool].", \ + "\blue You cut away metal where [target]'s [affected.display_name] used to be with \the [tool].") affected.status |= ORGAN_CUT_AWAY fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -52,7 +60,7 @@ if (affected.parent) affected = affected.parent user.visible_message("\red [user]'s hand slips, cutting [target]'s [affected.display_name] open!", \ - "\red Your hand slips, cutting [target]'s [affected.display_name] open!") + "\red Your hand slips, cutting [target]'s [affected.display_name] open!") affected.createwound(CUT, 10) @@ -71,22 +79,34 @@ begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("[user] is beginning reposition flesh and nerve endings where where [target]'s [affected.display_name] used to be with [tool].", \ - "You start repositioning flesh and nerve endings where where [target]'s [affected.display_name] used to be with [tool].") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("[user] is beginning to reposition flesh and nerve endings where where [target]'s [affected.display_name] used to be with [tool].", \ + "You start repositioning flesh and nerve endings where where [target]'s [affected.display_name] used to be with [tool].") + else + user.visible_message("[user] is beginning to reposition metal and wire endings where where [target]'s [affected.display_name] used to be with [tool].", \ + "You start repositioning metal and wire endings where where [target]'s [affected.display_name] used to be with [tool].") ..() end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - user.visible_message("\blue [user] has finished repositioning flesh and nerve endings where [target]'s [affected.display_name] used to be with [tool].", \ - "\blue You have finished repositioning flesh and nerve endings where [target]'s [affected.display_name] used to be with [tool].") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("\blue [user] has finished repositioning flesh and nerve endings where [target]'s [affected.display_name] used to be with [tool].", \ + "\blue You have finished repositioning flesh and nerve endings where [target]'s [affected.display_name] used to be with [tool].") + else + user.visible_message("\blue [user] has finished repositioning metal and wire endings where [target]'s [affected.display_name] used to be with [tool].", \ + "\blue You have finished repositioning metal and wire endings where [target]'s [affected.display_name] used to be with [tool].") affected.open = 3 fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) if (affected.parent) affected = affected.parent - user.visible_message("\red [user]'s hand slips, tearing flesh on [target]'s [affected.display_name]!", \ - "\red Your hand slips, tearing flesh on [target]'s [affected.display_name]!") + if(!(target.species.flags & IS_SYNTHETIC)) + user.visible_message("\red [user]'s hand slips, tearing flesh on [target]'s [affected.display_name]!", \ + "\red Your hand slips, tearing flesh on [target]'s [affected.display_name]!") + else + user.visible_message("\red [user]'s hand slips, tearing metal on [target]'s [affected.display_name]!", \ + "\red Your hand slips, tearing metal on [target]'s [affected.display_name]!") target.apply_damage(10, BRUTE, affected, sharp=1) @@ -108,7 +128,7 @@ begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) user.visible_message("[user] starts adjusting area around [target]'s [affected.display_name] with \the [tool].", \ - "You start adjusting area around [target]'s [affected.display_name] with \the [tool]..") + "You start adjusting area around [target]'s [affected.display_name] with \the [tool].") ..() end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index d6e8c0595fd..9050acacb72 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -8398,7 +8398,7 @@ "dfz" = (/turf/simulated/shuttle/plating{name = "Vox plating"; nitrogen = 100; oxygen = 0},/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/vox/station) "dfA" = (/obj/structure/closet{name = "Loot Closet"},/turf/simulated/shuttle/plating{name = "Vox plating"; nitrogen = 100; oxygen = 0},/area/shuttle/vox/station) "dfB" = (/turf/simulated/shuttle/plating{name = "Vox plating"; nitrogen = 100; oxygen = 0},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/vox/station) -"dfC" = (/obj/effect/landmark/start,/obj/machinery/media/jukebox/lobby,/turf/unsimulated/floor,/area/start) +"dfC" = (/obj/effect/landmark/start,/turf/unsimulated/floor,/area/start) "dfD" = (/turf/unsimulated/wall/splashscreen,/area/start) "dfE" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/flashbang/clusterbang,/turf/simulated/floor/engine,/area/shuttle/gamma/space) "dfF" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/chem_grenade/incendiary{name = "Incendiary Grenade"},/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space) From 21a1c0bc830abc2515e9bf19884251d502f0e4d5 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 6 Dec 2014 02:33:31 -0500 Subject: [PATCH 5/5] Stunning Changes --- code/datums/supplypacks.dm | 11 + code/game/gamemodes/gameticker.dm | 5 + code/game/mecha/equipment/weapons/weapons.dm | 2 +- code/game/objects/items/devices/flash.dm | 299 +++++++----------- .../objects/items/weapons/alien_specific.dm | 2 +- code/game/objects/items/weapons/stunbaton.dm | 218 +++++-------- code/game/sound.dm | 4 + code/modules/client/preferences.dm | 8 + code/modules/client/preferences_toggles.dm | 15 + code/modules/mob/living/carbon/carbon.dm | 2 - code/modules/mob/living/carbon/human/emote.dm | 72 ++--- code/modules/mob/living/living_defense.dm | 5 +- code/modules/mob/living/say.dm | 12 +- .../mob/living/silicon/robot/robot_modules.dm | 30 +- code/modules/mob/new_player/login.dm | 1 + code/modules/projectiles/guns/energy/pulse.dm | 2 +- .../projectiles/guns/energy/special.dm | 10 + code/modules/projectiles/guns/energy/stun.dm | 16 +- code/modules/projectiles/projectile/energy.dm | 22 +- code/modules/research/designs.dm | 2 +- code/setup.dm | 2 +- icons/obj/gun.dmi | Bin 57540 -> 58019 bytes 22 files changed, 327 insertions(+), 413 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index e94f02efcf9..a20997140f0 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -667,6 +667,17 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee access = access_security group = "Security" +/datum/supply_packs/disabler + name = "Disabler Crate" + contains = list(/obj/item/weapon/gun/energy/disabler, + /obj/item/weapon/gun/energy/disabler, + /obj/item/weapon/gun/energy/disabler) + cost = 10 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "disabler crate" + access = access_security + group = "Security" + /datum/supply_packs/eweapons name = "Experimental weapons crate" contains = list(/obj/item/weapon/flamethrower/full, diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 799f7f7da90..627d24d9355 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -16,6 +16,7 @@ var/global/datum/controller/gameticker/ticker var/event_time = null var/event = 0 + var/login_music // music played in pregame lobby var/list/datum/mind/minds = list()//The people in the game. Used for objective tracking. @@ -38,6 +39,10 @@ var/global/datum/controller/gameticker/ticker var/initialtpass = 0 //holder for inital autotransfer vote timer /datum/controller/gameticker/proc/pregame() + login_music = pick(\ + 'sound/music/space.ogg',\ + 'sound/music/Title1.ogg',\ + 'sound/music/Title2.ogg',) do pregame_timeleft = 180 world << "Welcome to the pre-game lobby!" diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index f63b3fd114b..a2a5e5228c2 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -109,7 +109,7 @@ icon_state = "mecha_taser" energy_drain = 20 equip_cooldown = 8 - projectile = /obj/item/projectile/energy/electrode/revolver + projectile = /obj/item/projectile/energy/electrode fire_sound = 'sound/weapons/Taser.ogg' size = 1 diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index ec5506e125b..224de285a1c 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -1,227 +1,148 @@ /obj/item/device/flash name = "flash" - desc = "Used for blinding and being an asshole." + desc = "A powerful and versatile flashbulb device, with applications ranging from disorienting attackers to acting as visual receptors in robot production." icon_state = "flash" item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang) - throwforce = 5 - w_class = 1.0 - throw_speed = 4 - throw_range = 10 - flags = FPRINT | TABLEPASS| CONDUCT + throwforce = 0 + w_class = 1 + throw_speed = 3 + throw_range = 7 + flags = FPRINT | TABLEPASS | CONDUCT origin_tech = "magnets=2;combat=1" var/times_used = 0 //Number of times it's been used. var/broken = 0 //Is the flash burnt out? var/last_used = 0 //last world.time it was used. -/obj/item/device/flash/proc/clown_check(var/mob/user) + +/obj/item/device/flash/proc/clown_check(mob/user) if(user && (M_CLUMSY in user.mutations) && prob(50)) - user << "\red \The [src] slips out of your hand." - user.drop_item() + flash_carbon(user, user, 15, 0) + user.visible_message("[user] blinds [user] with the flash!") return 0 return 1 -/obj/item/device/flash/proc/flash_recharge() - //capacitor recharges over time - for(var/i=0, i<3, i++) - if(last_used+600 > world.time) - break - last_used += 600 - times_used -= 2 + +/obj/item/device/flash/proc/burn_out() //Made so you can override it if you want to have an invincible flash from R&D or something. + broken = 1 + icon_state = "[initial(icon_state)]burnt" + visible_message("The [src.name] burns out!") + + +/obj/item/device/flash/proc/flash_recharge(var/mob/user) + if(prob(times_used * 2)) //if you use it 5 times in a minute it has a 10% chance to break! + burn_out() + return 0 + + var/deciseconds_passed = world.time - last_used + for(var/seconds = deciseconds_passed/10, seconds>=10, seconds-=10) //get 1 charge every 10 seconds + times_used-- + last_used = world.time - times_used = max(0,round(times_used)) //sanity + times_used = max(0, times_used) //sanity -/obj/item/device/flash/attack(mob/living/M as mob, mob/user as mob) - if(!user || !M) return //sanity +/obj/item/device/flash/proc/try_use_flash(var/mob/user) + flash_recharge(user) - M.attack_log += text("\[[time_stamp()]\] Has been flashed (attempt) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to flash [M.name] ([M.ckey])") - if(M.ckey) - msg_admin_attack("[user.name] ([user.ckey]) Used the [src.name] to flash [M.name] ([M.ckey]) (JMP)") - - if(!iscarbon(user)) - M.LAssailant = null - else - M.LAssailant = user - - if(!clown_check(user)) return if(broken) - user << "\The [src] is broken." - return + return 0 - flash_recharge() - - //spamming the flash before it's fully charged (60seconds) increases the chance of it breaking - //It will never break on the first use. - switch(times_used) - if(0 to 5) - last_used = world.time - if(prob(times_used)) //if you use it 5 times in a minute it has a 10% chance to break! - broken = 1 - user << "The bulb has burnt out!" - icon_state = "flashburnt" - return - times_used++ - else //can only use it 5 times a minute - user << "*click* *click*" - return playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) - var/flashfail = 0 + flick("[initial(icon_state)]2", src) + times_used++ + + if(user && !clown_check(user)) + return 0 + + return 1 + + +/obj/item/device/flash/proc/flash_carbon(var/mob/living/carbon/M, var/mob/user = null, var/power = 5, convert = 1) + add_logs(M, user, "flashed", object="the flash") + var/safety = M:eyecheck() + if(safety <= 0) + M.confused += power + flick("e_flash", M.flash) + if(user && convert) + terrible_conversion_proc(M, user) + M.Stun(1) + +/obj/item/device/flash/attack(mob/living/M, mob/user) + if(!try_use_flash(user)) + return 0 if(iscarbon(M)) - var/safety = M:eyecheck() - if(safety <= 0) - M.Weaken(5) - flick("e_flash", M.flash) - - if(ishuman(M) && ishuman(user) && M.stat!=DEAD) - if(user.mind && user.mind in ticker.mode.head_revolutionaries) - var/revsafe = 0 - for(var/obj/item/weapon/implant/loyalty/L in M) - if(L && L.implanted) - revsafe = 1 - break - M.mind_initialize() //give them a mind datum if they don't have one. - if(M.mind.has_been_rev) - revsafe = 2 - if(!revsafe) - M.mind.has_been_rev = 1 - ticker.mode.add_revolutionary(M.mind) - else if(revsafe == 1) - user << "Something seems to be blocking the flash!" - else - user << "This mind seems resistant to the flash!" - user << "This mind is so vacant that it is not susceptible to influence!" - else - flashfail = 1 + flash_carbon(M, user, 5, 1) + user.visible_message("[user] blinds [M] with the flash!") + return 1 else if(issilicon(M)) M.Weaken(rand(5,10)) - else - flashfail = 1 + add_logs(M, user, "flashed", object="[src.name]") + user.visible_message("[user] overloads [M]'s sensors with the flash!") + return 1 - if(isrobot(user)) - spawn(0) - var/atom/movable/overlay/animation = new(user.loc) - animation.layer = user.layer + 1 - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = user - flick("blspell", animation) - sleep(5) - del(animation) - - if(!flashfail) - flick("flash2", src) - if(!issilicon(M)) - - user.visible_message("[user] blinds [M] with the flash!") - else - - user.visible_message("[user] overloads [M]'s sensors with the flash!") - else - - user.visible_message("[user] fails to blind [M] with the flash!") - - return + user.visible_message("[user] fails to blind [M] with the flash!") - - -/obj/item/device/flash/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0) - if(!user || !clown_check(user)) return - if(broken) - user.show_message("The [src.name] is broken", 2) - return - - flash_recharge() - - //spamming the flash before it's fully charged (60seconds) increases the chance of it breaking - //It will never break on the first use. - switch(times_used) - if(0 to 5) - if(prob(2*times_used)) //if you use it 5 times in a minute it has a 10% chance to break! - broken = 1 - user << "The bulb has burnt out!" - icon_state = "flashburnt" - return - times_used++ - else //can only use it 5 times a minute - user.show_message("*click* *click*", 2) - return - playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) - flick("flash2", src) - if(user && isrobot(user)) - spawn(0) - var/atom/movable/overlay/animation = new(user.loc) - animation.layer = user.layer + 1 - animation.icon_state = "blank" - animation.icon = 'icons/mob/mob.dmi' - animation.master = user - flick("blspell", animation) - sleep(5) - del(animation) - +/obj/item/device/flash/attack_self(mob/living/carbon/user, flag = 0, emp = 0) + if(!try_use_flash(user)) + return 0 for(var/mob/living/carbon/M in oviewers(3, null)) - if(prob(50)) - if (locate(/obj/item/weapon/cloaking_device, M)) - for(var/obj/item/weapon/cloaking_device/S in M) - S.active = 0 - S.icon_state = "shield0" - if(M.alpha < 255) - var/oldalpha = M.alpha - if(prob(80)) - M.alpha = 255 - M.visible_message("[M] suddenly becomes fully visible!",\ - "You see a bright flash of light and are suddenly fully visible again.") - spawn(50) - M.alpha = oldalpha - var/safety = M:eyecheck() - if(!safety) - if(!M.blinded) - flick("flash", M.flash) + flash_carbon(M, user, 3, 0) - return /obj/item/device/flash/emp_act(severity) - if(broken) return - flash_recharge() - switch(times_used) - if(0 to 5) - if(prob(2*times_used)) - broken = 1 - icon_state = "flashburnt" - return - times_used++ - if(istype(loc, /mob/living/carbon)) - var/mob/living/carbon/M = loc - var/safety = M.eyecheck() - if(safety <= 0) - M.Weaken(5) - flick("e_flash", M.flash) - for(var/mob/O in viewers(M, null)) - O.show_message("[M] is blinded by the flash!") + if(!try_use_flash()) + return 0 + for(var/mob/living/carbon/M in viewers(3, null)) + flash_carbon(M, null, 10, 0) + burn_out() ..() -/obj/item/device/flash/synthetic - name = "synthetic flash" - desc = "When a problem arises, SCIENCE is the solution." - icon_state = "sflash" - origin_tech = "magnets=2;combat=1" - var/construction_cost = list("metal"=750,"glass"=750) - var/construction_time=100 -/obj/item/device/flash/synthetic/attack(mob/living/M as mob, mob/user as mob) - ..() - if(!broken) - broken = 1 - user << "\red The bulb has burnt out!" - icon_state = "flashburnt" +/obj/item/device/flash/proc/terrible_conversion_proc(var/mob/M, var/mob/user) + if(ishuman(M) && ishuman(user) && M.stat != DEAD) + if(user.mind && ((user.mind in ticker.mode.head_revolutionaries))) + if(M.client) + if(M.stat == CONSCIOUS) + M.mind_initialize() //give them a mind datum if they don't have one. + var/resisted + if(!isloyal(M)) + if(user.mind in ticker.mode.head_revolutionaries) + if(!ticker.mode.add_revolutionary(M.mind)) + resisted = 1 + else + resisted = 1 -/obj/item/device/flash/synthetic/attack_self(mob/living/carbon/user as mob, flag = 0, emp = 0) + if(resisted) + user << "This mind seems resistant to the flash!" + else + user << "They must be conscious before you can convert them!" + else + user << "This mind is so vacant that it is not susceptible to influence!" + + +/obj/item/device/flash/cyborg + origin_tech = null + +/obj/item/device/flash/cyborg/attack(mob/living/M, mob/user) ..() - if(!broken) - broken = 1 - user << "\red The bulb has burnt out!" - icon_state = "flashburnt" + cyborg_flash_animation(user) + +/obj/item/device/flash/cyborg/attack_self(mob/user) + ..() + cyborg_flash_animation(user) + +/obj/item/device/flash/cyborg/proc/cyborg_flash_animation(var/mob/living/user) + var/atom/movable/overlay/animation = new(user.loc) + animation.layer = user.layer + 1 + animation.icon_state = "blank" + animation.icon = 'icons/mob/mob.dmi' + animation.master = user + flick("blspell", animation) + sleep(5) + del(animation) + +/obj/item/device/flash/synthetic //just a regular flash now \ No newline at end of file diff --git a/code/game/objects/items/weapons/alien_specific.dm b/code/game/objects/items/weapons/alien_specific.dm index 7026cf6f74a..ba914f4f8ce 100644 --- a/code/game/objects/items/weapons/alien_specific.dm +++ b/code/game/objects/items/weapons/alien_specific.dm @@ -56,7 +56,7 @@ //SKREEEEEEEEEEEE tool -/obj/item/device/flash/alien +/obj/item/device/flash/cyborg/alien name = "eye flash" desc = "Useful for taking pictures, making friends and flash-frying chips." icon = 'icons/mob/alien.dmi' diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index fb273ff1ed2..d7e501ea6e1 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -3,29 +3,24 @@ desc = "A stun baton for incapacitating people with." icon_state = "stunbaton" item_state = "baton" - flags = FPRINT | TABLEPASS slot_flags = SLOT_BELT + flags = FPRINT | TABLEPASS force = 10 throwforce = 7 w_class = 3 origin_tech = "combat=2" attack_verb = list("beaten") - var/stunforce = 0 - var/agonyforce = 60 - var/status = 0 //whether the thing is on or not + var/stunforce = 7 + var/status = 0 var/obj/item/weapon/cell/high/bcell = null - var/mob/foundmob = "" //Used in throwing proc. - var/hitcost = 1500 //oh god why do power cells carry so much charge? We probably need to make a distinction between "industrial" sized power cells for APCs and power cells for everything else. - var/allowharm = 1 // Allow or disallow harming with the stunbaton + var/hitcost = 1500 /obj/item/weapon/melee/baton/suicide_act(mob/user) user.visible_message("[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") return (FIRELOSS) - -/obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed. +/obj/item/weapon/melee/baton/New() ..() - bcell = new/obj/item/weapon/cell/high(src) update_icon() return @@ -33,25 +28,22 @@ bcell = locate(/obj/item/weapon/cell) in contents update_icon() +/obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed. + ..() + bcell = new(src) + update_icon() + return + /obj/item/weapon/melee/baton/proc/deductcharge(var/chrgdeductamt) if(bcell) - if(bcell.rigged) - bcell.explode()//exploding baton of justice + if(bcell.charge < (hitcost+chrgdeductamt)) // If after the deduction the baton doesn't have enough charge for a stun hit it turns off. + status = 0 update_icon() - return + playsound(loc, "sparks", 75, 1, -1) + if(bcell.use(chrgdeductamt)) + return 1 else - bcell.charge -= max(chrgdeductamt,0) - if(bcell.charge < hitcost) - status = 0 - update_icon() - -/obj/item/weapon/melee/baton/examine() - set src in view(1) - ..() - if(bcell) - usr <<"The baton is [round(bcell.percent())]% charged." - if(!bcell) - usr <<"The baton does not have a power source installed." + return 0 /obj/item/weapon/melee/baton/update_icon() if(status) @@ -61,16 +53,27 @@ else icon_state = "[initial(icon_state)]" +/obj/item/weapon/melee/baton/examine(mob/user) + ..() + if(bcell) + user <<"The baton is [round(bcell.percent())]% charged." + if(!bcell) + user <<"The baton does not have a power source installed." + /obj/item/weapon/melee/baton/attackby(obj/item/weapon/W, mob/user) if(istype(W, /obj/item/weapon/cell)) - if(!bcell) + var/obj/item/weapon/cell/C = W + if(bcell) + user << "[src] already has a cell." + else + if(C.maxcharge < hitcost) + user << "[src] requires a higher capacity cell." + return user.drop_item() W.loc = src bcell = W user << "You install a cell in [src]." update_icon() - else - user << "[src] already has a cell." else if(istype(W, /obj/item/weapon/screwdriver)) if(bcell) @@ -85,143 +88,88 @@ return /obj/item/weapon/melee/baton/attack_self(mob/user) - if(status && (M_CLUMSY in user.mutations) && prob(50)) - user << "\red You grab the [src] on the wrong side." - user.Weaken(stunforce*3) - deductcharge(hitcost) - return - if(bcell && bcell.charge) - if(bcell.charge < hitcost) - status = 0 - user << "[src] is out of charge." - else - status = !status - user << "[src] is now [status ? "on" : "off"]." - playsound(loc, "sparks", 75, 1, -1) - update_icon() + if(bcell && bcell.charge > hitcost) + status = !status + user << "[src] is now [status ? "on" : "off"]." + playsound(loc, "sparks", 75, 1, -1) else status = 0 if(!bcell) user << "[src] does not have a power source!" else user << "[src] is out of charge." + update_icon() add_fingerprint(user) -/obj/item/weapon/melee/baton/attack(mob/M, mob/user) +/obj/item/weapon/melee/baton/attack(mob/M, mob/living/user) if(status && (M_CLUMSY in user.mutations) && prob(50)) - user << "span class='danger'>You accidentally hit yourself with the [src]!
" - user.Weaken(30) + user.visible_message("[user] accidentally hits themself with [src]!", \ + "You accidentally hit yourself with [src]!") + user.Weaken(stunforce*3) deductcharge(hitcost) return if(isrobot(M)) ..() return + if(!isliving(M)) + return - var/agony = agonyforce - var/stun = stunforce var/mob/living/L = M - var/target_zone = check_zone(user.zone_sel.selecting) - if(user.a_intent == "harm" && allowharm == 1) - if (!..()) //item/attack() does it's own messaging and logs - return 0 // item/attack() will return 1 if they hit, 0 if they missed. - agony *= 0.5 //whacking someone causes a much poorer contact than prodding them. - stun *= 0.5 - //we can't really extract the actual hit zone from ..(), unfortunately. Just act like they attacked the area they intended to. - else - //copied from human_defense.dm - human defence code should really be refactored some time. - if (ishuman(L)) - user.lastattacked = L //are these used at all, if we have logs? - L.lastattacker = user - - if (user != L) // Attacking yourself can't miss - target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, L) - - if(!target_zone) - L.visible_message("\red [user] misses [L] with \the [src]!") - return 0 - - var/mob/living/carbon/human/H = L - var/datum/organ/external/affecting = H.get_organ(target_zone) - if (affecting) - if(!status) - L.visible_message("[L] has been prodded in the [affecting.display_name] with [src] by [user]. Luckily it was off.") - return 1 - else - H.visible_message("[L] has been prodded in the [affecting.display_name] with [src] by [user]!") + if(user.a_intent != "harm") + if(status) + baton_stun(L, user) else - if(!status) - L.visible_message("[L] has been prodded with [src] by [user]. Luckily it was off.") - return 1 - else - L.visible_message("[L] has been prodded with [src] by [user]!") + L.visible_message("[L] has been prodded with [src] by [user]. Luckily it was off.", \ + "You've been prodded with [src] by [user]. Luckily it was off") + return + else + ..() + if(status) + baton_stun(L, user) - //stun effects - L.stun_effect_act(stun, agony, target_zone, src) +/obj/item/weapon/melee/baton/proc/baton_stun(mob/living/L, mob/user) + user.lastattacked = L + L.lastattacker = user + + L.Stun(stunforce) + L.Weaken(stunforce) + L.apply_effect(STUTTER, stunforce) + + L.visible_message("[L] has been stunned with [src] by [user]!", \ + "You've been stunned with [src] by [user]!") playsound(loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) - msg_admin_attack("[key_name(user)] stunned [key_name(L)] with the [src].") - deductcharge(hitcost) + if(isrobot(loc)) + var/mob/living/silicon/robot/R = loc + if(R && R.cell) + R.cell.use(hitcost) + else + deductcharge(hitcost) if(ishuman(L)) var/mob/living/carbon/human/H = L H.forcesay(hit_appends) - return 1 - - -/obj/item/weapon/melee/baton/throw_impact(atom/hit_atom) - . = ..() - if (prob(50)) - if(istype(hit_atom, /mob/living)) - var/mob/living/carbon/human/H = hit_atom - if(status) - //stun effects - if (stunforce) - H.Stun(stunforce) - H.Weaken(stunforce) - H.apply_effect(STUTTER, stunforce) - - if (agonyforce) - //Siemens coefficient? - //TODO: Merge this with taser effects - H.apply_effect(agonyforce,AGONY,0) - H.apply_effect(STUTTER, agonyforce/10) - H.apply_effect(EYE_BLUR, agonyforce/10) - H.flash_pain() - - deductcharge(hitcost) - - if(bcell.charge < hitcost) - status = 0 - update_icon() - - - for(var/mob/M in player_list) if(M.key == src.fingerprintslast) - foundmob = M - break - - H.visible_message("[src], thrown by [foundmob.name], strikes [H] and stuns them!") - - H.attack_log += "\[[time_stamp()]\] Stunned by thrown [src.name] last touched by ([src.fingerprintslast])" - log_attack("Flying [src.name], last touched by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])" ) - - if(!iscarbon(foundmob)) - H.LAssailant = null - else - H.LAssailant = foundmob + add_logs(L, user, "stunned", object="stunbaton") /obj/item/weapon/melee/baton/emp_act(severity) if(bcell) - bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please. + deductcharge(1000 / severity) + if(bcell.reliability != 100 && prob(50/severity)) + bcell.reliability -= 10 / severity ..() //secborg stun baton module /obj/item/weapon/melee/baton/robot hitcost = 500 +/obj/item/weapon/melee/baton/robot/New() + ..() + return + /obj/item/weapon/melee/baton/robot/attack_self(mob/user) //try to find our power cell var/mob/living/silicon/robot/R = loc @@ -246,16 +194,6 @@ item_state = "prod" force = 3 throwforce = 5 - stunforce = 0 - agonyforce = 42 //less than a stunbaton and uses way more charge. + stunforce = 5 hitcost = 3750 - attack_verb = list("poked") - slot_flags = null - -/obj/item/weapon/melee/baton/cattleprod/update_icon() - if(status) - icon_state = "stunprod_active" - else if(!bcell) - icon_state = "stunprod_nocell" - else - icon_state = "stunprod" + slot_flags = null \ No newline at end of file diff --git a/code/game/sound.dm b/code/game/sound.dm index 925dbb0fad2..8f76396ed4c 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -93,6 +93,10 @@ var/const/FALLOFF_SOUNDS = 0.5 S.environment = 2 src << S +/client/proc/playtitlemusic() + if(!ticker || !ticker.login_music) return + if(prefs.sound & SOUND_LOBBY) + src << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS /proc/get_rand_frequency() return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs. diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index acd0a4585a4..e832922a0ef 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -310,6 +310,7 @@ datum/preferences dat += "-Color: [UI_style_color]
__

" dat += "-Alpha(transparence): [UI_style_alpha]
" dat += "Play admin midis: [(sound & SOUND_MIDI) ? "Yes" : "No"]
" + dat += "Play lobby music: [(sound & SOUND_LOBBY) ? "Yes" : "No"]
" dat += "Randomized Character Slot: [randomslot ? "Yes" : "No"]
" dat += "Ghost ears: [(toggles & CHAT_GHOSTEARS) ? "Nearest Creatures" : "All Speech"]
" dat += "Ghost sight: [(toggles & CHAT_GHOSTSIGHT) ? "Nearest Creatures" : "All Emotes"]
" @@ -1291,6 +1292,13 @@ datum/preferences if("hear_midis") sound ^= SOUND_MIDI + if("lobby_music") + sound ^= SOUND_LOBBY + if(sound & SOUND_LOBBY) + user << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1) + else + user << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) + if("ghost_ears") toggles ^= CHAT_GHOSTEARS diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index a9b9d9aad9c..196674eefde 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -59,6 +59,21 @@ src << "You will [(prefs.toggles & CHAT_PRAYER) ? "now" : "no longer"] see prayerchat." feedback_add_details("admin_verb","TP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/toggletitlemusic() + set name = "Hear/Silence LobbyMusic" + set category = "Preferences" + set desc = "Toggles hearing the GameLobby music" + prefs.sound ^= SOUND_LOBBY + prefs.save_preferences(src) + if(prefs.sound & SOUND_LOBBY) + src << "You will now hear music in the game lobby." + if(istype(mob, /mob/new_player)) + playtitlemusic() + else + src << "You will no longer hear music in the game lobby." + if(istype(mob, /mob/new_player)) + src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // stop the jamsz + feedback_add_details("admin_verb","TLobby") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/verb/togglemidis() set name = "Hear/Silence Midis" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 882d972ddd7..7d307c92aac 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -219,8 +219,6 @@ "\blue [M] gives [src] a [pick("hug","warm embrace")].", \ "\blue You hug [src].", \ ) - if(prob(10)) - src.emote("fart") /mob/living/carbon/proc/eyecheck() diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index a59a0c8d636..28afe49ab45 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -635,8 +635,11 @@ // Needed for M_TOXIC_FART if("fart") if(world.time-lastFart >= 600) - playsound(src.loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins voted no to fun - message = "[src] [pick("passes wind","farts")]." +// playsound(src.loc, 'sound/effects/fart.ogg', 50, 1, -3) //Admins still vote no to fun + if(M_TOXIC_FARTS in mutations) + message = "[src] unleashes a [pick("horrible","terrible","foul","disgusting","awful")] fart." + else + message = "[src] [pick("passes wind","farts")]." m_type = 2 var/turf/location = get_turf(src) @@ -644,38 +647,31 @@ if(M_SUPER_FART in mutations) aoe_range+=3 //Was 5 - // If we're wearing a suit, don't blast or gas those around us. + /* // If we're wearing a suit, don't blast or gas those around us. var/wearing_suit=0 var/wearing_mask=0 if(wear_suit && wear_suit.body_parts_covered & LOWER_TORSO) wearing_suit=1 if (internal != null && wear_mask && (wear_mask.flags & MASKINTERNALS)) - wearing_mask=1 + wearing_mask=1 */ // Process toxic farts first. if(M_TOXIC_FARTS in mutations) - if(wearing_suit) - if(!wearing_mask) - src << "\red You gas yourself!" - reagents.add_reagent("space_drugs", rand(10,20)) - else - // Was /turf/, now /mob/ - - for(var/mob/M in range(location,aoe_range)) - if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS)) - continue - if(!airborne_can_reach(location,M,aoe_range)) - continue - // Now, we don't have this: - //new /obj/effects/fart_cloud(T,L) - // But: - // <[REDACTED]> so, what it does is...imagine a 3x3 grid with the person in the center. When someone uses the emote *fart (it's not a spell style ability and has no cooldown), then anyone in the 8 tiles AROUND the person who uses it - // <[REDACTED]> gets between 1 and 10 units of jenkem added to them...we obviously don't have Jenkem, but Space Drugs do literally the same exact thing as Jenkem - // <[REDACTED]> the user, of course, isn't impacted because it's not an actual smoke cloud - // So, let's give 'em space drugs. - if (M == src) - continue - M.reagents.add_reagent("space_drugs",rand(1,10)) + for(var/mob/M in range(location,aoe_range)) + if (M.internal != null && M.wear_mask && (M.wear_mask.flags & MASKINTERNALS)) + continue + if(!airborne_can_reach(location,M,aoe_range)) + continue + // Now, we don't have this: + //new /obj/effects/fart_cloud(T,L) + // But: + // <[REDACTED]> so, what it does is...imagine a 3x3 grid with the person in the center. When someone uses the emote *fart (it's not a spell style ability and has no cooldown), then anyone in the 8 tiles AROUND the person who uses it + // <[REDACTED]> gets between 1 and 10 units of jenkem added to them...we obviously don't have Jenkem, but Space Drugs do literally the same exact thing as Jenkem + // <[REDACTED]> the user, of course, isn't impacted because it's not an actual smoke cloud + // So, let's give 'em space drugs. + if (M == src) + continue + M.reagents.add_reagent("space_drugs",rand(1,10)) /* var/datum/effect/effect/system/smoke_spread/chem/fart/S = new /datum/effect/effect/system/smoke_spread/chem/fart S.attach(location) @@ -686,23 +682,21 @@ S.start() */ if(M_SUPER_FART in mutations) - playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) visible_message("\red [name] hunches down and grits their teeth!") if(do_after(usr,30)) visible_message("\red [name] unleashes a [pick("tremendous","gigantic","colossal")] fart!","You hear a [pick("tremendous","gigantic","colossal")] fart.") //playsound(L.loc, 'superfart.ogg', 50, 0) - if(!wearing_suit) - for(var/mob/living/V in range(location,aoe_range)) - shake_camera(V,10,5) - if (V == src) - continue - if(!airborne_can_reach(get_turf(src), get_turf(V))) - continue - V << "\red You are sent flying!" - V.Weaken(5) // why the hell was this set to 12 christ - step_away(V,location,15) - step_away(V,location,15) - step_away(V,location,15) + for(var/mob/living/V in range(location,aoe_range)) + shake_camera(V,10,5) + if (V == src) + continue + if(!airborne_can_reach(get_turf(src), get_turf(V))) + continue + V << "\red You are sent flying!" + V.Weaken(5) // why the hell was this set to 12 christ + step_away(V,location,15) + step_away(V,location,15) + step_away(V,location,15) else usr << "\red You were interrupted and couldn't fart! Rude!" lastFart=world.time diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 113f00e1fb9..73c5f3b1857 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -64,12 +64,13 @@ src <<"\red You have been hit by [P]!" del P return -*/ + if(istype(P, /obj/item/projectile/energy/electrode) || istype(P, /obj/item/projectile/bullet/stunshot)) stun_effect_act(0, P.agony, def_zone, P) src <<"\red You have been hit by [P]!" del P return +*/ //Armor var/absorb = run_armor_check(def_zone, P.flag) @@ -81,7 +82,7 @@ if(!P.nodamage) apply_damage(P.damage, P.damage_type, def_zone, absorb, 0, P, sharp=proj_sharp, edge=proj_edge) - + P.on_hit(src, absorb, def_zone) if(istype(P, /obj/item/projectile/beam/lightning)) if(P.damage >= 200) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index ecdfd40b84c..64f5c33dbc6 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -10,11 +10,11 @@ var/list/department_radio_keys = list( ":s" = "Security", "#s" = "Security", ".s" = "Security", ":w" = "whisper", "#w" = "whisper", ".w" = "whisper", ":b" = "binary", "#b" = "binary", ".b" = "binary", - ":d" = "drone", "#d" = "drone", ".d" = "drone", + ":d" = "drone", "#d" = "drone", ".d" = "drone", ":a" = "alientalk", "#a" = "alientalk", ".a" = "alientalk", ":t" = "Syndicate", "#t" = "Syndicate", ".t" = "Syndicate", ":u" = "Supply", "#u" = "Supply", ".u" = "Supply", - ":z" = "Service", "#z" = "Service", ".z" = "Service", + ":z" = "Service", "#z" = "Service", ".z" = "Service", ":g" = "changeling", "#g" = "changeling", ".g" = "changeling", @@ -28,14 +28,14 @@ var/list/department_radio_keys = list( ":E" = "Engineering", "#E" = "Engineering", ".E" = "Engineering", ":S" = "Security", "#S" = "Security", ".S" = "Security", ":W" = "whisper", "#W" = "whisper", ".W" = "whisper", - ":D" = "drone", "#D" = "drone", ".D" = "drone", + ":D" = "drone", "#D" = "drone", ".D" = "drone", ":B" = "binary", "#B" = "binary", ".B" = "binary", ":A" = "alientalk", "#A" = "alientalk", ".A" = "alientalk", ":T" = "Syndicate", "#T" = "Syndicate", ".T" = "Syndicate", ":U" = "Supply", "#U" = "Supply", ".U" = "Supply", ":Z" = "Service", "#Z" = "Service", ".Z" = "Service", ":G" = "changeling", "#G" = "changeling", ".G" = "changeling" - + /* //kinda localization -- rastaf0 //same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding. ":ê" = "right hand", "#ê" = "right hand", ".ê" = "right hand", @@ -185,8 +185,8 @@ var/list/department_radio_keys = list( if (!(istype(src,/mob/living/carbon/human) && !isAI(src) && !isrobot(src) || istype(src,/mob/living/carbon/monkey) || istype(src, /mob/living/simple_animal/parrot) || isrobot(src) && (message_mode=="department") || isAI(src) && (message_mode=="department") || (message_mode in radiochannels))) message_mode = null //only humans can use headsets - if(src.stunned > 2 || (traumatic_shock > 61 && prob(50))) - message_mode = null //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it + if(traumatic_shock > 61 && prob(50)) + message_mode = null //people in shock will have a high chance of not being able to speak on radio; needed since people don't instantly pass out at 100 damage. message = capitalize(message) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 38fd15f0cd3..7f97febc907 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -24,7 +24,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.emag = new /obj/item/toy/sword(src) src.emag.name = "Placeholder Emag Item" // src.jetpack = new /obj/item/toy/sword(src) @@ -62,7 +62,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/weapon/melee/baton/loaded(src) src.modules += new /obj/item/weapon/extinguisher(src) src.modules += new /obj/item/weapon/wrench(src) @@ -80,7 +80,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/device/healthanalyzer(src) src.modules += new /obj/item/weapon/reagent_containers/borghypo/surgeon(src) src.modules += new /obj/item/weapon/scalpel(src) @@ -119,7 +119,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/device/healthanalyzer(src) src.modules += new /obj/item/device/reagent_scanner/adv(src) src.modules += new /obj/item/roller_holder(src) @@ -164,7 +164,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/borg/sight/meson(src) src.modules += new /obj/item/weapon/extinguisher(src) src.modules += new /obj/item/weapon/rcd/borg(src) @@ -187,7 +187,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/borg/sight/meson(src) src.modules += new /obj/item/weapon/extinguisher(src) src.modules += new /obj/item/weapon/weldingtool/largetank(src) @@ -228,7 +228,7 @@ New() src.modules += new /obj/item/device/flashlight/seclite(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/weapon/handcuffs/cyborg(src) src.modules += new /obj/item/weapon/melee/baton/robot(src) src.modules += new /obj/item/weapon/gun/energy/taser/cyborg(src) @@ -244,7 +244,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/weapon/soap/nanotrasen(src) src.modules += new /obj/item/weapon/storage/bag/trash(src) src.modules += new /obj/item/weapon/mop(src) @@ -264,7 +264,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src) src.modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src) @@ -291,7 +291,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/weapon/pen/robopen(src) src.modules += new /obj/item/weapon/form_printer(src) src.modules += new /obj/item/device/taperecorder(src) @@ -312,7 +312,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/borg/sight/meson(src) src.modules += new /obj/item/weapon/wrench(src) src.modules += new /obj/item/weapon/screwdriver(src) @@ -326,7 +326,7 @@ name = "NT advanced combat module" /obj/item/weapon/robot_module/deathsquad/New() - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/device/flashlight(src) src.modules += new /obj/item/borg/sight/thermal(src) src.modules += new /obj/item/weapon/melee/energy/sword/cyborg(src) @@ -340,7 +340,7 @@ name = "syndicate robot module" /obj/item/weapon/robot_module/syndicate/New() - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/device/flashlight(src) src.modules += new /obj/item/weapon/melee/energy/sword/cyborg(src) src.modules += new /obj/item/weapon/gun/energy/crossbow/cyborg(src) @@ -356,7 +356,7 @@ New() src.modules += new /obj/item/device/flashlight(src) - src.modules += new /obj/item/device/flash(src) + src.modules += new /obj/item/device/flash/cyborg(src) src.modules += new /obj/item/borg/sight/thermal(src) src.modules += new /obj/item/weapon/gun/energy/laser/cyborg(src) src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src) @@ -371,7 +371,7 @@ New() src.modules += new /obj/item/weapon/melee/energy/alien/claws(src) - src.modules += new /obj/item/device/flash/alien(src) + src.modules += new /obj/item/device/flash/cyborg/alien(src) src.modules += new /obj/item/borg/sight/thermal/alien(src) var/obj/item/weapon/reagent_containers/spray/alien/stun/S = new /obj/item/weapon/reagent_containers/spray/alien/stun(src) S.reagents.add_reagent("stoxin",250) //nerfed to sleeptoxin to make it less instant drop. diff --git a/code/modules/mob/new_player/login.dm b/code/modules/mob/new_player/login.dm index 6c4230439ea..a32e373fccd 100644 --- a/code/modules/mob/new_player/login.dm +++ b/code/modules/mob/new_player/login.dm @@ -33,3 +33,4 @@ spawn(40) if(client) handle_privacy_poll() + client.playtitlemusic() diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index a7f59cbecdf..e11a604b45e 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -19,7 +19,7 @@ charge_cost = 100 fire_sound = 'sound/weapons/Taser.ogg' user << "\red [src.name] is now set to stun." - projectile_type = "/obj/item/projectile/energy/electrode/revolver" + projectile_type = "/obj/item/projectile/energy/electrode" if(0) mode = 1 charge_cost = 100 diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 06ae671bd87..6826924c6e5 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -232,3 +232,13 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out. power_supply.give(5000) playsound(src.loc, 'sound/weapons/shotgunpump.ogg', 60, 1) return + + +/obj/item/weapon/gun/energy/disabler + name = "disabler" + desc = "A self-defense weapon that exhausts organic targets, weakening them until they collapse." + icon_state = "disabler" + item_state = null + projectile_type = "/obj/item/projectile/energy/disabler" + cell_type = "/obj/item/weapon/cell" + charge_cost = 500 \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index 487ba361f9d..41e3764fdfe 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -6,7 +6,7 @@ item_state = null //so the human update icon uses the icon_state instead. fire_sound = 'sound/weapons/Taser.ogg' projectile_type = "/obj/item/projectile/energy/electrode" - cell_type = "/obj/item/weapon/cell" + cell_type = "/obj/item/weapon/cell/crap" /obj/item/weapon/gun/energy/taser/cyborg name = "taser gun" @@ -29,7 +29,7 @@ /obj/item/weapon/gun/energy/taser/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg return 1 - + /obj/item/weapon/gun/energy/taser/cyborg/process_chambered() if(in_chamber) return 1 @@ -46,9 +46,9 @@ name = "stun revolver" desc = "A high-tech revolver that fires stun cartridges. The stun cartridges can be recharged using a conventional energy weapon recharger." icon_state = "stunrevolver" - fire_sound = 'sound/weapons/Taser.ogg' + fire_sound = "sound/weapons/gunshot.ogg" origin_tech = "combat=3;materials=3;powerstorage=2" - projectile_type = "/obj/item/projectile/energy/electrode/revolver" + projectile_type = "/obj/item/projectile/energy/electrode" cell_type = "/obj/item/weapon/cell" @@ -77,10 +77,10 @@ /obj/item/weapon/gun/energy/crossbow/process() charge_tick++ - if(charge_tick < 4) + if(charge_tick < 4) return 0 charge_tick = 0 - if(!power_supply) + if(!power_supply) return 0 power_supply.give(1000) return 1 @@ -92,8 +92,8 @@ desc = "An energy-based crossbow that draws power from the cyborg's internal energy cell directly." /obj/item/weapon/gun/energy/crossbow/cyborg/process() - return 1 - + return 1 + /obj/item/weapon/gun/energy/crossbow/cyborg/process_chambered() if(in_chamber) return 1 diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 15e8b3af1fa..c5be6dcd6fa 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -10,13 +10,9 @@ name = "electrode" icon_state = "spark" nodamage = 1 - /* - stun = 10 - weaken = 10 - stutter = 10 - */ - agony = 40 - damage_type = HALLOSS + stun = 5 + weaken = 5 + stutter = 5 hitsound = 'sound/weapons/tase.ogg' //Damage will be handled on the MOB side, to prevent window shattering. @@ -74,3 +70,15 @@ damage = 20 damage_type = TOX irradiate = 20 + +/obj/item/projectile/energy/disabler + name = "disabler beam" + icon_state = "omnilaser" + damage = 34 + damage_type = HALLOSS + var/range = 8 + +/obj/item/projectile/energy/disabler/Range() + range-- + if(range <= 0) + del(src) \ No newline at end of file diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 85ad55e083c..d9a69f652bd 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1602,7 +1602,7 @@ datum/design/mmi_radio category = "Misc" datum/design/synthetic_flash - name = "Synthetic Flash" + name = "Flash" desc = "When a problem arises, SCIENCE is the solution." id = "sflash" req_tech = list("magnets" = 3, "combat" = 2) diff --git a/code/setup.dm b/code/setup.dm index 8073c8c7648..227480126f7 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -698,7 +698,7 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define SOUND_ADMINHELP 1 #define SOUND_MIDI 2 #define SOUND_AMBIENCE 4 -#define SOUND_LOBBY 8 //Removed, can be replaced with any other sound bitflag as needed. +#define SOUND_LOBBY 8 #define SOUND_STREAMING 16 #define SOUND_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|SOUND_STREAMING) diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 758e6dc1877fae6ccaa7eea68ebb96b242bb713f..f206f2c013c7a70a85ee3f644d543b8980026a39 100644 GIT binary patch delta 19806 zcmZU)2Q*x7)IK`8=n}n)1c^im(HSjB5JZ${qa<3?=xvTpLWmX-iIyOU-s_A`MDIkG z=!`y?a*yBl{qO&-b=Puc&YYPsd+&Fb=h^!`ooz(lx`;m9BB)8cEeEK4FPSzvZ$j}C zw6c0cbu7F0mdzlbxIlbr3pNP0(1}dH8r+?$SpXl#jZc#VEo2@02H?>f0WW< z2fMdhGo6gB^mA(Po_TF_KeP7ZV>Y~E_PSyoLN1CP zlnf`;v3*l|6;kuDc>?(F@xOROa3R6FaH2Q%E`ko&$_ za{Ge%K1%$p_8cqezun)2H+=0v)8(ohYm)qD%a7UE**XpQjI8>7UgkK{nRMa_NSe7d zk!PXA^4z`0N#|d5)eBX1#V3CE>(Dgyz5Mo0oi4)zyLDISuW`d22fF5MY%uk9Y*d;& z#&zv>O%U+mF-b9au2U|L#maGs{ykee{&Xn!cy&xJ)t22#HEjZFXvmVHrST|L#O-^? z56W9~eWAog8a#=&1sYbmP#Fa+zeozBW@$UVPHnzgJihg{Vu$#5LWeN>*3W+cCBpmeE-Kh?+xjYm{k1 zymx}dDsABeywpX}p~UwDDfH2{hiQGrr?^gM=y}>?BR!G-WL^)e5>F7}HR6{%p>(vj zCM%p2v&Utv?-N`HV%l!>X+%IV+jpK8@9ISN+M`=c9?Kq~_(7dSlq=9K(|> zo*BZe94hP3PWV~Xf;yQxnJp@@MxLL8B@Vbo_JPh>kNW!ON=w7dyj$CbhP*isjO?^M z`sB&teV<%r7VjaS%l3vJW`0__YjKTOK8Qf@(P@zG5mEXV-;d`H@Lm!QZ_nYDUVCcR z)zZq`=Ih%S1N>MrdM?Mwh1bokp-WMJ-P>~gL_wFSU2?0YH&RMu3T8(#+LPt{bx>5y>jE56A5v@U^SXWz9?y{TZsj17cmx_ z?|BYCsd4A@HxKZr6^~`8E`4yyD{7+F1Kz}&H|8f9&bufFo9Sf{oyaI<`ME~;jEB{D zb|#|V-W%1U791@E4?-Hj+~@2nL$rKx{z~j&Y`=zP>BbA-lTq2HXH}BKKY99VG_u&W zO?JAJgMQxnM8XzK+fwKOmxN-@2jY+PNE?x;;#=!E&iO|Mjef3Rt?ru2Aj&`g)ab+%D?^BG zQb_aWhVb3I$QCb;jzo!<{7t0_@QATw%}t9Oe#q+;80@q4{+e5m41nGMEf#_A0!%PSgN-`{#Q5L>T#a=Ff3TNx#?Q z6gEmuA2jvvrP%z9Io&AiQHgzXPtcH@@#k}5{gk4-woGnIB*k?eWkTL59hIa3%OvVh zc?48)=%tUZPgTaw?^`qbmnXko^9QD%{pN2PvPTSw4{dmre=0%m0xdioGH)UjS~1Mp zfNZwH-F9!;n7vW<(>AlUcIG8nMISkjt&cw)MlV;H~D*1bo6REKIn5~ z1o5}RzA$PasH?2Z+ig0!)SbCC<-1g*$fnl~Cz|T@<7gC#A3gF*F|?U-aLkhlkViqZ z*kl<(us_=~BR(jdx&5ivM@@NAt(}Q5MrQHiqVc>qOaBe%i^CoKb-jiRYVt~5jJ*U~ z&e*1&U7T-Sy5cs}^BkBP`k$c*z9+%H9Z~M5yoVcq2=*wQZ@yW?|b027`)0!63nKOZpkrpnhB_lB(hDEC_ zTi-?H^PBuOB8DYLFynjbD!k`&q;^z|iEYp;^>VBFIu}}K!bW|9qmTSmtYZ55Ph1qU zF{UsT`_=CE?YSDv73t7VZ$)s}$Svmj$=Ut41QVApOv)iXT~Uv#?2x0t^WQ(i7<0nW zGcQiZmNnv7LN$!<*_XNeS(^%;nqAbh_)T}6)@LSy-L;;8KlyD}jT+L^^))RvnnOj@AIkE4f+omHx`8&Hikv6q=C8Lep z{*dW9u(r<5mL3-ooH=Cyo8-r3C=x*yWDKq+UEIDAt_MApyMgamq}YX^W!?=y=qS`o zpNcNsjiP3c@?0OxnHZ&FTEmOHH@&n6ZGO&EsmssK#6(&=@e6{U7b#IIoPankA2R}m zh)+CLF;Al(*xmpgM$P=W^p;#BZaiCRCtQHA;jqht%e`zu9)Mwag9t);bi4Mv5a-EC zXE%bA4Q`)0-h85^Wi7!b2LE;IlQzGahQ{g$V?X2m(}~%k_4cj8MT^@{`bae??cI># z*Y7A;+Dc7^r~|n*HH;eZ9LgppEMBsl+WZEHvx5Bm+?ILV?HL%ZwA=blDAV8`l5B4;K-2cDFQ%=2R;H?u<^1`Nt*&ZPNZD^a3}#AQ zOIA$@d;2!P=*3Zu%`)XiE+Hwzo0_^@QtDEoY{Cq{0>xG?uBZJBRH1tU7hJ}rEe0%s zyJ`n!Hrm=$?d|PW6()3CT%~@DPhJC0p1c!%v!;na=cNkP47bnRaD`obDPOC7Z1QIA z*3NvB@drv%i%5~=iJS3FpFhd7REUW=9FM)dv2c}HSWDWCJw3&rX37`(*YRZq%g$+PI~nsv>&t&NZfD#`o{vPapovQ20Dl zTz3ApRqOG&M?`eOmC0u3=0+A4;t7bxFR8|6VWy_Qq;E?eCJ*S?& zKD{W>9zk~AqoMY8iij`@AeMk707HjSh zV1XVChFJ+p*i+lqSpsi<%!*93*+&x4rNm3fkdXd*zB4`<5Kg$ z0+f=OBD><5EF{F$oigsdwWzs#B#?!(G{kFg?{{F%>k7AYA3vstPfvCy?bowIKG2O( zs2Y%iKJBqJekZH0;1M}R%F?6W8$W>M*c%SEtq|`HW(YY635iof(7!7sOD$^v+sT^{ z$6W#PFdo8i(1|O-l2H9}>WRYG%^*kRG8!vlWjbPd!8o>u??~RDDI_FXzC*w(%5*-0 zK_pBJNbq~$-}5L!mjA9s{L+K)Jzs95<%hNd)eFpF(y8f>@j&!lBy3#?-f};d`#I(i z*3vg;wn5obrU}u~9uJg9mF@{3@T_(24D8@BS5{ZF*SZ(pmmpua+-rnW<&8rLym^0F z_*>gYQ26O7pg^ah>?YHF5KW6ee{T1WZ23?<@eI`Lc+Qfw*tc%3^v$@?YUTM)q&flg8x@RVRMn z#|#g2%~9lLbdn}i))zJk{T4~FUnw{cp2H}H)~B!R9&8?AYG~g~@HbF=887p)@?_SY z-z_7AgKHH3xTEwKjlI%0hi3pMz65l_yMdHL???&aYCJZ{hF4qok6LSkf&1xU9wM>0 z{BiJ;%fF`@gT>zDo>SX@ryxFPRCq#7^#VyE<7LJ^*@HwBZK+aU*s{6)9bMZG| zXKU-$`j7vd=P4U*27jo$i{_hNsQFRIaPAGJ^C^}Ja1|e^ni!|@=K(_27KWcwN+Y}t z3G^DTPflzXt3|fYp&sH;){j~-(#GR!r>a}Ve2~7~8)rfmoZDMyIk@rKwEu=vR#3sP z;`!5od@pwzf?WU+0j^L?kY@qx>}~Y@O`km8h-lHhGpR(kJqC54JmoQV6je|Sa|PBg zP7zRF)G16j;@lg!X%zT(yR8TP>@GBLa^c~+RC-$PxwyD5ZgZ)vg6t{0K+z0V$_#b%5NI(=G!JCa|{6dGvy zA&$_LqbYJYRSysCUDWOMt-C>9fAUSwvdz)@cO%Z(S}~hxQ6g}5Zi-x^A)+1`;yd)M z0pW|4Xl17Je@{b2CQh}^ln09^wud(F;ss@Iz-@9fzd~u_I2_A}3pv~6&+~ZoT@dDa zCjzYfX;r}8Z~}-GW^VC0z99KXt0(9VYwP##1qI@8v5nl^n-egy!`IvE7M7-wA~o2- zOEIr@;vbu5f6=Mrz#u_fbXhnV!Nb!1w5+TlCSh|y2y%n=VeFH?o3PCw}8n1AYwA~cr=xn%l<f$YV9-=SfYsm`6i5pR|#ESr_i} zMv0KKQ*9!>@|FZR?vb5qDmyo}lMR)i? zNG|axYI(gqUW({3H=V{eopM0y~{@{k6r~jVPoV%v569|uw#h{i6dByY_3Rwu}hdOj^ZTT`0 z?gU+W_J0iA4iM-vvIC$>Xnvt=jpY_(y5VzOA!4rk#sO5b2QR2t z)z5m$j#(rY&>8O|h4&FaX?}s;ud=8qnV|Idk$%fCgsP4;FPdEQVSc{eHu{|T&gSLJ zGXqzc49QiF|2tx?KDu~wm4G5f4?{=+(S>5GoyuD3 z;J)GiCV)e&vo@G34Eto{>*=B!!S7`A_XPWUm?yM;`@hPVMp0F8>_y0t7CZhgiBu94 ziD``z0gS_%skxtg4HY~&J41CPMwKTBFOZdVq~)}5UJ?Wa@7BzAjK8@ z-e>bYU)X_%P_n+V5`;ik8W)+U+u9SOtj0qj3xaRIm?K3F&%UC%4vfjST+ySy_T8#a z18=lSgB58t?cUu_`&o4V{-BGotXG04xZndBkkvF`iJX$fIP6X}9tZ%7R4`y|pBoNq zPrI(kj=wbI+J6Gy#o`?BO$yYJlgoU=Skq|k60E5dZmj_I2u=YDWm6=a-!D5wm=S1i zqdHq)xE*-|PGuq3s7%YDffhDPENrwi{h4@Di=Jk@1 zo1ju@x!$X~ppcePYW(DT==q(XM1*fd z+4vu76=l;t2HO~c0M@#Uy)B+qq{#AZ#Vq>kY!h$)?Rj>98y+SSG<5uhM7S%-k&bIKwdkJ zRF#XmgwdW8m}&5F%pMH+fijGzfGc$mnPa0F`Fg@thXcp!J3TVg_3* zGBqY!SM!ks!3_%pWu(P7j>#Z8MWrTMLvdpTb-ATaGtNRrncwgO`=B^mGs_($VV|?w z&d<+j7;Cb27iqJPjuJ4~x&1g(d|;);2h->TFa|2CUTkD4sEF-QS28VY2_a@f`&ny< z(!`y}Y=rHrDa@aNsHqY}t*>jjK@-wWL&GPI@0-`_nbf=IK&IL8HB*+cHJr>o`~dz; zOTP;1TNvWV33{ULw7)|z$=HLqO)!DMD)taC!^J`y=5(ks>3{c(_k-Q`$v2H*!}5_oBtfx<$KM}<-JKWadpngdb4A`HYi4;YX!Av^|e z{28y_8D{GuH0eJ4JHF)D8FJ&26+aRH3m{6DvU~7tBnD(6qua`KEh%|gX_eqH8kj=P z@`G@4Xep;S`0%UB<(eE3-0HQR9sg@r7xlnExl&7)HsFW;w+*69o&eU^$)8p^o14Qr z>4X&4YT4NikZo$i^5bK#fiva%-i<*!p_DGJGN`c&4MI>_9ILO-;UHl_rxBa5g= zo8^6lA;^zk2b^bSiV$z_?*Dozayy8qY9{Uq6R|JAoGI-=u&{D6F`j>(Y}|$FTAx1u zm)b+L(&4<^9(hkjCcT|m`IwhO<F|~f)8d^zh{;GF*;q>wIo9dw2$QK!Ly)aS3 zlWR0JrD33Zez0hGLy{%}Q+IN@8z~aDp^BnoDjI9EtKyZAV0dHO!Bq014Lp={;x>RW zbTEGqS1TJk`vE4BQjk>Ce~4>>P00~$YU%#XZn@w2UT5q2`VX#F2y)bfwzz_zuz_6- zF*+eq63%Qz3v+RCsSi4TU}|P&EtzpAh+d7GZ`^^%>r~8|wi(KB31`|8mHeGg`AEe{ zmMZU2(f-`(gVoQ`RGjZ-KeKsk{uTl3d~mqEV_4B&A3*($a64#E>Z69DP?XyFY_Y4QAW_@qXBV zLuX-FmhIvYah%^ep^EA*uQpq2Euvn3;_Pe{1h(4+x?~V@Xs~P)73bC{fIgf9Pbgx$ z!oW9rR-(D>bc0aZ2~gU;MLY&x9P+qh>f&VE&<#zf5cCi@yqg?VcJWa%`ZARY2IiKX zx3tg*u)11bo_#x*eN6xY$}#EreGc5Q&u#M zjC{9Eh4eiFo(B)E?CAAsFoJa1lnGl$qNZJNH^M=a(|oqPDs zd#9;}uMbEz&ygZ}XIQ;NyIzW4PC`c%@cq&LRsDC4nwFtxR z$U@Xr3suRl@{jL5)2gt@Ew4|jE*-wazoS)9b%0U+Fdg z&B8{-`sNAo6k%O96;kC-HQ8+-bm|(*?+fG*#DO;;y^DCP0u2bP1cM%Tq+su-@1H#v>DMw{CpI zme<$q9NB4SPVO&xq#OC#p*hv$#bMAc{3MoqZE6s@jCksgfiCmL?Nf4p8cG|b>lSir zHA1hkncBDW*>s-Ry}kiHi#pmoXvG{>&#nLdl(_r`u(65g*nd4$%Gk?Yj{~?!L@8hl zt$yf6SXTu+1n3EROvEA}Bg1;NPPqM&8k&R_kG3NlbmPnFr9GH4aarbhdk;4d*AjR} zAtNIb2ZX~Y%VUzJ27cm?IX3EaiD*ELH+tLx9kI9;Vu zn7n;-S*bOFasu_QG_v35qx5*%NT;t~?~F3@b*Grz$>0_Ii{D-8K`l1tz4xue)TRru@Mx{qyzD({_&gBz@ML(2nBoQzCNVy@lbM_P$4Va|_S z>u%6yvnf&REZaLZui8$oPnRX}P^&DUVF8=BtxvWlerLfKB0IxF?pv&*OdL--^Z?VB zZpinN9@_L8Y~)^z#M4i-y3|e6K2VrBI@(WkIw;-U301v=ANi&c7>VB)`L?p1lXvx8 z33pp+a~k=~_?uKwm!19ny)Xg>7;-(Tf+LB&Wb-sH19AI#-V6!)XL(FW~FBQDp34g^Rt`~@xo0c65A$TR3 zmQz!uZ!kxDuHO}t-z7D~JQIPk>r><7ijCx<0mRo!jCK%Seap_8ZWu+f{{rd46TQ;b zKgNTZOPfvOc6-s|$Fn+gNCLFnpZ_tRUb5C zg5pK*^0`peiL>in_pvC#v^j#MjQGXm_TB!%1EiF9>-m)xqw^40VPzgh2uBA5;vt_n zqIY+poBd_B=Wl&aL&kRR9AT~2fz@jwgwwg75T$$$4!gb!v?UntoE*-f)U&{Fi5LRp zXxV5v$*I$y(L606Jt_Q5y!K$SjR`Gwb%7ra@ zw#m0__^YGf)l9$&=Hp{Kc{S6j2W!(OulaL0;D(Zb|4Mh;3d#85I#=F<3*w3hdPIqk zAfL8UatLU|9!fkS-H@Fm=m}jA+{Ju!3=dY2m*)_CSby&vyT|q#I7i$|U8KEg0p+A- zi8LKvX_(3Zds}!du=A~HQ)?G=pFzydFqT*AIU8NZR3($$VQe1xBm!u+%W((-b(jm zq;RKJnJ}vNk~)<{cs`2K4Mq0cor(L({c$cYK}QGjgjyjpHv|OQE!LN@?2-Dfjmq^h zXhKSRc<;eA->DkjG9L}D4hAmmLKo{C^to17{V>pA zYw?W=1dI`1nh4H!q33OXtg@55d zlmbb+l=oMnrQn=diXfBOI;;gfTal`YQ)5Tmwv*%)ixVM3#MBMgF_f{hI#u&NFW7!# z2VdAAbbnDqa85KOVn#3qc9q0&yKaP$A`~#w$gZ;(c&!D~vS&Y6j z@!c#UWD?XA0NfZww7%JZ?9>ID`Jp%>GQXhdYjBpa(%M~)(Ne)YA<;EjZNwa;dy4z< zV||67`vG2w8(F59n62gQ=XUuUz=eixAy?}Iak-xHHIYw60qB(}AL5Xyxw(heU;_gK zAQ;!w(b=6?j_nZ9>LmLo)CFpNgQ<5pc2zVSuECeQP|pQ?J5T^y-u%VGbRq#>^i2mB z+=LL^{sz9|bgK6CVU*1OZPI%KcKMl{isn4k)f+ENKFPN6L7|H|+W0E$C4mqJf>yZ%ADoWN7^E})!D zqy`*!4G^ZKfYiVlv)u7{PeV)VET4Kqn37qT;lB>%DXQjl_H{+=YWu8{@^UOH^1fLu zIS6>9{}mKhD6Z|p;JVI$$2Zgob&1~+md*no*OLJD9s(E@T3PCz-2)Xfkc&Gg)wtim zTn2aiJ2W(8FQ7YXFJfE;Y=fj=#G)~f-tO>>79sah*y5LSqh1OaMfwJkJiHHErVO`Y zkon-`>Ao}ra}UH}beDX(W2!AY#B@G>5NsidTauX7I58Ro?ksk`y}=4%ejW@7t+f{7 zNykU_cXuM_TPS9PdzIF})>MWCOaz?s`u)|~-P1sd1vz&0y-pS&p@0!9qhqgB%28*p z{i7GRE8@xkBKDP+C8qoA%6gD(rQ#(LFQZn-ZV_y7Su5621EPn%N#0(Dq9awJvJR32 z!iKMJh3(u%6{Q&w#DQdyhx`P!Y4a!IjUMVI_$me&+Q@S)dACt5IdcT0_iqh_jH|%I z_tG>#!Qa&lbpw=uD9gSb2s(e0Mq9?K8l794uWl}T^ebNnp7Ga$8tQA}#z5yk#9(sD zm1a?yy0~(&IR*mSAXF$C6Op4D==Hm09`C%#!XQO#J2m*V=%PXDeyxrnm{soMJ^T05 zPVVlWbte6hCxtKpvDc2)6?#G5n3$461@gBaKLjDDdRNH|JwwA8K4ALHUN7y_&$n4T zbk}2NdP-1OF&reC42+Ea=4C}iYNoT&9%ii< z9j(xC1Yvz)<1=rlGBHK-lRpzl7=@1FSP$s`G70O04%#YkV~5E-rZUMvZgy6H^_q2u zx1ay8&4HQBV!qUz{@4&FWaoW(!LEiH(xzqwloAQ0<-G2Oa6EO!oRk415DsZ~WWf{S z^S-jw#SA^0icg&<7H<1q)2A4J+6VAJyK^UvR;_qKuv9~X-vXVaq;c! zx`-76$XI(;YHFAIdyY-VIyI_?53j62yUICp<0c z1|%jvKCJJhPm}i3r|KRDtkGv*%iw!&Xf%RHxQTnoIR9e+uc~UUEz^sAk`QBs!Ts5c z=PbCnnYiAvia!8Qf73X*F@`?6Ha5hN%leY_EFiPQqRD7@b|3QxRHbQ_GqG+VfD)qT z?#p<5nPk2vA|m8z5gAtaP`mH_kvmw9zO?uV z5p~e}QQy3e%er~K_S1>J%wnvFls?iIgxYh;BpT$@a)+GOPt{YbsdMEKamqOt1_3l zFcv7BpIyva@)rfIb!WuPN;i6+>6^u{p8mZBX1ROR5UbY`JYMc$+prpAQ0%M?bg zb|gR$pITVFn>akWU&?+R5|zNR>@x>(-f5r)F-Lx}K zi8#&y7@>+>X|=^8KedP+EFx&;A1bsI9LnFdQsb$*C6zGn$%E)uzmWN!kgy`3QEG9~ zUC@iX(kNIE_a8i96Sw=bRQrY)B5OefayTJ14PT==9e(lVgA8rEgH!vXD8Acw2x;;5 zi5;u|YYLF!L`A)`5u5IfFRuZ-H_tk+x(!p< zB{E2eR+{kgZ`LVcy5fnul3`!w{{3zPX(=5&eQ0kCd2@q{S)JlqpDsKPi_vZ`DtdzY z+j6!L+u5lW-D7BMygKi@*p*saOisbI;l2o-RL*63UUCGT&J@&NndoB{fD>^Z0#rfY z+Vkd(Q3^?T3mkvUaBF=;#VTtNht4B+U!2&#=14Md0}SEbdVv2f4bwYoL0MUfj(^(7 z&3Ra_(fUOgv=;6Z_Tg(Lqn{?c z5G3|&aj5$}d$es&e9jui|H?7KZEeA}M<}P94@4<}4R)9eyN{@j%S=g$^IZ&{T3wwd z;Tnudq5n}-#DFk-k`_)H*%&l8KC4R?s{QO)rD|kP`o@Of0cDZ|;Ql!4b;YMfD)Hu7 zd0-)2yK(RR;>!meqYf$;%`eI&e7q=W;-i*>)&m-9)f_i)@|{g^J43Za?|%Q zF~e;yTf;zFV(~GgMb^+bP#?2AQDiLXa=lU9IPnX9wn!Z#?EPi+(B>gX{#=W}m8q8?hwox%- z2(}{(-`TkV@gmKd-^UpaQ**@~+~8M|@)L#d2>NBC#a~ZqLy(b_%vV9*k+djWqUgAr zW;^j~;-^WOeOG`&pkbMD@Gpu&SnOL{;}Y|MQ6Ou$>R6y!4!$?Fg^s3~sLD~T0bdv& zqJ3Lh46f`)l=6obANJhPa1+(KHbk7)Fi z=ufZ+z*U-C$}TwhZEC!q=SshsC|E>PtD`5jm}mB3rhJgos_U!K-?K|kb9a)Ug8(~b z6R#nK$((Kptox9b*0Z&}?XlKNPYMAykG1X1H${TIsH{ht-5DrS&$GRG`1T49^gQ+O zh?b>z;$1%fw|;C!UGv@FS!XgBT$r;a;WFC% z;*xQ!Q}YF9EM$mixAi9%cp^?5AXc=^i5>oj-fuLRTV=*laN|qsd?~Jy{+l!5?@`4Vr>(gU&iy_wP4X_NjFjb7GJX%pIqi8oE0p-;>VzQ z@0e8o@U(KR|9Z3V2 z@oJe?>hE)9PP+L$HmP~@&3id}Z6- zVxY2jOE{jkVwMBn5xa{Edj;x)nOk^%ivHR`2DuU)^`~k`oJ&Ri>(9#V-LLK3lFh&G zG2O_`9p$Y%J_dr^FlKnnXB1`+{|fRUi6K<~28Zse_;>G;PA>XIy0UOQ5a9_v$V$@U zP)Gdr9F5l?vUo6Bacx0<@Z|%(KF4lKxa40DOZ|I|9+?%1?t9tI^lW_ZmKeambc-$rH5`K&Hyl>GAyFi?Cg&V=KK=f8JBLB_s ztVoxQ7;oupE7l8e`=bE_+q_{;FzN!DW9A zhR~Ki{P^Cpf4V(CuI&m!1DHC*Cbz{|16S%yv~yu!K7XsP?15Jh z@*BTM@*%kk$|Y0n;Mb>%TUhcvTb2Wp$8SabqK5vS(^rV3x!ch5%P@qL=VCI<7t2GE zNb_s|j-|!bkVPec^N}7RUlRi1uzoBKj`Z&fuYRk^`X8wA>EphD8+PyRs=~b6eeD0c zN2`0?A9;nOLHL}hoNV1KlZZ z_T?k=Z^!WjFh3{Q?qGSZQ*NRSdSea$qB~f5?qeeYe`N}*2L55(0j4Wd(OVn(MG^FB zA`yfp+yY>s+?HzoJ|krYW@Ig>GT4ic1g~psQ-Ekum$7`IBTQhu>Rp~8OYQAzZdi{r zNJxqvI`bt{Br^aj0{?p+5KrZ0xqmN)bgz?Lf?B2Zz3{j7TtX7G zSw#MHZtsAEJYK{yE$RexuU^EoyFehxKwm`g<*D~MVmTG@^Yy*yHAU@^2{c z!@(Swx2ztd&kKXgrEeb8ZJiN3Fm#ZHC~%lZgA3_&FRmHzZYo4lSAt>W6{ zk7lj}kUzm^^Y>(Dy<4TZ2wP581-2m&nW}H)TOVdtWhpMRU>6s!chhhKHK+Z%u|{wh z9v@j@+g%~!>DtwoTmXRpAoQf6U18+5+y&8dcR%7uHyAjdn#$P>4O3UJp8x*53nzmr zzj^cEu8@$$M+|PN&XoyD^>OXr$sNQ|XY%M})9U^;Q)8b0N}StY1n*@@b#CsnJ-afK zqhoQdvlo;Favw!t!c8JNI;SGpyy4eWCZR% zPC>{UyWQ1g{~_fiejdzfpd0fivoaU|gxu_$lUBFAF*-Izpybo1Ft}Q9k;LszWub6# zR=o@ydQ-(io0Pz?0MN!ILBCc_-rh-8w;k_&o;LTsn;+cJV{`cZ+VG|gNEyzngAO7W zANYoDlwhPj%|7*ATU#p!d3JVbDb2ybL1lk|lp+b_lZ+G7ztValyDC<2L`kDHC=v#Q zlIRZFXLi3OiH?xQEKJV6`yN4D#zhJF2hb56@595-Tv>^#32z8I?d(ey;5ELsk$@92 zeC7A;J0X<&A(he+C-l7Ki0s8Z{wpBp>Z@jI{p){_-O9|sUvMtv^1s*)X(P7WFM>GS zTGGxRqz!M~SVwmZE!z$U6~@m8?zi}z&HHj@F3t<)% zojRx4zPSj;JMGW`7!G9WG_O@js4r&iY>=CHx`}R0g&-R6GiB4!%#xz~*d0$XyyU<# zXdIJ}Orw_;PHU6};ud}j+LzEJY0~$`8R3+D6OYw{5h>T^Z-QE*`#vKqqL6m{7|m5%QBqF zOuSvC<5k)##*)q zfSJ3wx~lv6)uS&Jd>7tcD)x~o60{bTdHTEdogYwTIuEloUGGhCF*}eIc`A6T&C=uLM zjdj7NE{Ku3J>&zd{<8rU!;~NDV(ecU&=qoOvT)-k+L`fY`#j>&S5+N9weLNzz-{Dr z@7`62?|Igr4pyC&)m4jHZbn8Dq+++$Uby8&{n7f6?Qw5~lCWMy4Mi`BdQTh)WPHLq z>K<3;VA{vr($c}d+L}l>6ANtU*Do7ZR#uw1<)KyPvwy4haXNzZ*sO{T4BQ%JbL58>iexnOKDAUD=vTkGJ+kHj}~wK=u9mY zL;t+Q54*;<&Wd0b;*^VviaJ5a%{kak%(F0=EUX8_wSl^#8z|j5h-NGRuWFhBBg!py zVHsj@5Y_7Us<1VO6_~|T0w_>>?Z%WjMQ(#ho7Yi)M(2;J-w=KcjqMxSZ%uHwo@|2CJEE?w=S&rC}btz5uQvgPO#MP`LrcvVfMn_OOX2qe1VR%J4$AN_Y4T*EMYJa zvz#p_;qp3My_U%bxhzBHlJ+q3A$u8FgEzQlK=q7rX_|y+x(W7$dsU=Y7pHVgCIbSx z=v>dPZX2;SbNz(FZ}xIcUGId%IBc6R|F++@Zs=;UlR-dqSKITSsobZbG~AGRFs%Xa zL;1jxFh?R1U48ML$yEB>?|R0-KlcoTf{=0P%d^@3jB~P zZ1E^A*!6=?tYhdT92k1Jzsn+_OZ}s%RM)N13M)ohE?|LN+dpUNY~AsVW}7HjSbBcb z{X9%+aVzzwB8YE7w`c>vUYYe{SFWRfs-}AxZ_Y=m<}cj;5;t77+prj_v<-J;P^$%NM#` z08vN(4%UUwpM*1XF504c7wa$)_E9vNonThGgWJ%{L%nR zH3*)4YrjCdvlF52*a&>$)5fjWU_V)fQ!s@7YUh#ikKd3I-;n?M$Tx?x|3CYY$dli7 z(}6fx0_-ER0>q9jL|30*zTbby^=d(WZ(^YA8W>D&r%fdxAT+G_`SV_x+TQT?$vj-~ z3hOQ20H@~j3$9O}(rot~fiPa_48P??KiVCq5EMU zpr9bc$_)isLWUBBHA!i{c)<#>8Wkm2G!z9Aw)xcKAQ13gq@B6Cvi@7s%otr?G;Egy z_llFt_cAvh+{0OYcyz)XbR4MV>MBeWQZy722T-+rkmjVw|8nA_u=#Irmply8%~I<+ zzcto+@(`b}Poe%?jd*MBr=X*=L6?X(O(T^dX79_BbNeVMq#)Jq=*%Jpg31+3o&ZWR z;?$E_?{q}BjgPOD(?CYV!~`#J91HME7lg4gh_Hb3a7f^)6o{2jCuCfH$iJak@QXW> z-aj=;& zn@CPenLPjYZg|@^XM9YIl8w6b-KU?$yf*Z{$opUCi=y@Q`z@3qDI9SrlMZFjp_)%1%`cv4{d73Sb zKW+DW0_XeOs&(^8Tkld>Bl^hJd&JNC=r!2h%!k*7qr&ADg1*#F8r`~m%kRVlA{xz- z4Vo};Gx&D?eZ0CIBj-odqkY@k}~ z8w3L5z%peN6e2owAS8-p`MDeVZ(uCA_zKlaW}VZ!{~t<_z~>E~nTf!f+>bEm~net@)_ zjT&pp4PyPnw2vPNA)}+Copaw8*UnAEvOSxr?0e!lR~{49SvE6r58|mj<=Ao>=l@Pe zhg%qd^b4nSBE_Op?^i*X!^=Be+v1reJy+|-3<@V8`?t~iPa8}4?i(Q$vdHYBTAG<2 zL`VL2H8m|ovfi>U+##`eAUPS3IC&k68HA@nd_c4871c)t4S}s4o_J2Mc2<`~fo*J;g)x8IV` zikNne0zGj|y1QgM?nO!K?0#DU_go#X=(_wP*9X6#gRV1fCz*-phPLsLQ5#}kR~Wkq+>w>NN@xM6Tna{ zpaKen-Xh`z5OBtjNJ!p^Yu3xUKa!PoZgTIr=iB?+-~LXm?W>`-ky*yZxILTe<+z5#8O5Mq*a%h(Lk3wPAs!66_c)ri3ThcI_yw2)F+E%$tGZ6)xw(0BIE zW8d=s2t};%VBYO1OeWJ?g&_r?0loWPhGt8fwA*0h{g#~E*{c))LR`_+=<=g`K53hA zlovy)wrm`;TYB#GT`vWZX`Ij|r%%~33Iz=4@$&Yl^K&9D_hd)*!n;;*x^M03SGm;^ z715i`x4~RrEuj zD^Q_^sVP?J@k8N%2LP|Kwo1EdMYwCbcsBPFeZWZ|d)Y1-{>u@h2apRfsKWxf02sib zLd=wwY>gL+p(W7F9)tjSgdCSTEL~ryKZOB|L77NBv2V4h<6MbRejl1S-Z}{qv&eA{QQs!I9;Q!5X#@Kv8r)7d;o6y7)N0dL`$CJJErS19O zEHCG{zi#&$Lw&wc5=F}<14#(~)p2r^Xe=6y78MtdVka-dBFGkV{Z8MUw7HRBSe@nYv#F`ZK2diV1xxqMIqmu9K~n#AT-qw-1`!e)bxm%jZ~ z!4z3jqm>y0ijG+pBik#Rtm*K??-o@+HxHx!Rr6js5Sb|^rrNna@ib6U;`ZrK98S4X z`;{4=Ea^f~7(*vN(DbKxY z9?+78R3dk(pc^iez8vx_pHDy(lg-`s{JGYWK(Jg_Q921(S;K;xlPUK7d^2CrYVi8a zo5M1RYT=8j(Px?Ae_WC8DPZV6J2sC?H)P&>J(`)iIrhfGBv=VazlngH!P361+-J$dH4POthhzlS1jHPqnK+weKqZERd{Uql`v z1S~|tMg~g3z*LjhF3DDytTgEvx#yY_yS6no z<&A?xp#{`(h(7jn*-jk=-2Vu#)#aDT& zAIz9<6^<2dJ)y69UTA&HSA+s#<-!FMPm!)8W-?v9kRGJ7dSUzx`%c2{qZu*33LD-b z9*jNaU~X0XgV%7(Z`Sx8ML|@`gTArOr*R1(K&&}=hR0?=DIQp2yf8nWy}?#WSzPe1 zF2S|Wykz8?N#^tmb!~@QdGK~tf?_F{P>#&!pd~YCEp`fp<|gfW=;{)-;pP`FmbR6B zi6flwB|hM59M;lmDxv#kVr~+0s@1k`+-M^G`0>N$cw0*kkgC8pdm+IxVUKW+d0(Zb zO)(E3&m)PwUB#+ysFGX7D$Cb)XtBx>@~D?tw9g0E_-xlqu}S9GV+B8cky!vcqVHw@ zB72Jgsk%e#Hg4k)=#S;)C1c3yoHa#>9S8dH)}PS@F=wy<_yfW!O{SMw;ZEfd+p?(O zx5coBBRV|Z8|^B*kFX%~=yvicNX^qH5WNrDDH@0ga2fy}pop+x&wYvb5%pl)RqGE0 z_zAr>W49MnbujD07HUfyBUJg~T!$sLJ|wAj1?<~^6hPN61TMbZI7ZCU_yxzVjvTYw zI;f}%)iyNR0HA;pJ#NlWy%~Zq*HqQaCMCFkJP4zR{CZPbit&MnhmTH8Wiy$f9l(z2 zW0>+Y>(@;YHiQFC=-qK4br|eFGyTFxzy#A;a1qn2bxFSdQ|hHBM5rs4A_qDD?v-ho z$g}BioFPybC2B=lPA&t)h?bU?dv$dP2M32*GT9mw!~kL*L#mvSPv0vg z;z#7$_*fpy>_l@2>|315GaP5u}ITY1qPCPk6oa1#Q18EeJUg zcv||Jwmog@b6L+23KJaO!Ks0u58r{$+{^Iz*Xgz)k^tG@lTLdi1B4suTi^Rjo0`F0 zj9EFvObnJ%Y80*lKjYEFb--d(q8f!FK()KOr?+?4Jwq_8e~7jVei2!u4EJ}E36`i$ z>&7d1sGn0ksq;FJ@zGU@i?UVoE~_u$Ph_05Z*RpK@B>k{TO=H)-?|^%tM+?4!`J0v zHr*9`21~UbJX~i30@S07y090Ci!KI1F&XVPIv7kor&&<|4SQ%&^ub%K!@0-r2tjj6 zL(ir^t>mB#y08*o7ViTXhpm&K0~4ZISy}eR?sf-T@EL;~)?7-IMhmbX2OE~{8;cz1 zoV?;5T@(JTkVa#p_-;e{qtlhb4CFC`hNiY4kJwvZC3L}0Lsk|iYd%GuxVw;7Alp2N zG_SzT3aV87G&YGfNtKCC_tVFUsPfl+b$@C)u8{Z@Y7F}I-1V8sfKcqEVnDtzggH?d z(~uxoI6njnC)xBT7qIdLg(yD*^Ht@aib0y_aX<$20p=r6C44F6PoFeW^Qj^bc%8R) Kv}!!-m-aszyTi)> delta 19312 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 z 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