diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 49f2307c..341a0408 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -120,7 +120,6 @@
#define BIOWARE_NERVES "nerves"
#define BIOWARE_CIRCULATION "circulation"
#define BIOWARE_LIGAMENTS "ligaments"
-#define BIOWARE_DISSECTION "dissected"
//Health hud screws for carbon mobs
#define SCREWYHUD_NONE 0
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 55538277..944fe63e 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -81,6 +81,7 @@
#define TRAIT_PUSHIMMUNE "push_immunity"
#define TRAIT_SHOCKIMMUNE "shock_immunity"
#define TRAIT_STABLEHEART "stable_heart"
+#define TRAIT_STABLELIVER "stable_liver"
#define TRAIT_RESISTHEAT "resist_heat"
#define TRAIT_RESISTHEATHANDS "resist_heat_handsonly" //For when you want to be able to touch hot things, but still want fire to be an issue.
#define TRAIT_RESISTCOLD "resist_cold"
@@ -111,6 +112,7 @@
#define TRAIT_NOHARDCRIT "nohardcrit"
#define TRAIT_NOSOFTCRIT "nosoftcrit"
#define TRAIT_MINDSHIELD "mindshield"
+#define TRAIT_DISSECTED "dissected"
#define TRAIT_FEARLESS "fearless"
#define TRAIT_UNSTABLE "unstable"
#define TRAIT_PARALYSIS_L_ARM "para-l-arm" //These are used for brain-based paralysis, where replacing the limb won't fix it
@@ -128,6 +130,9 @@
#define TRAIT_RADRESONANCE "radioactive_resonance" //Hyperstation edit
#define TRAIT_SWIMMING "swimming" //only applied by /datum/element/swimming, for checking
#define TRAIT_CAPTAIN_METABOLISM "captain-metabolism"
+#define TRAIT_ABDUCTOR_TRAINING "abductor-training"
+#define TRAIT_ABDUCTOR_SCIENTIST_TRAINING "abductor-scientist-training"
+#define TRAIT_SURGEON "surgeon"
#define TRAIT_NONATURALHEAL "nonaturalheal" // Only Admins can heal you. NOTHING else does it unless it's given the god tag.
#define TRAIT_NORUNNING "norunning" // You walk!
#define TRAIT_NOMARROW "nomarrow" // You don't make blood, with chemicals or nanites.
@@ -204,6 +209,7 @@
// unique trait sources, still defines
#define STATUE_MUTE "statue"
+#define CLONING_POD_TRAIT "cloning-pod"
#define CHANGELING_DRAIN "drain"
#define CHANGELING_HIVEMIND_MUTE "ling_mute"
#define ABYSSAL_GAZE_BLIND "abyssal_gaze"
@@ -232,9 +238,9 @@
#define LOCKED_HELMET_TRAIT "locked-helmet"
#define NINJA_SUIT_TRAIT "ninja-suit"
#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant"
+#define ABDUCTOR_ANTAGONIST "abductor-antagonist"
#define SLEEPING_CARP_TRAIT "sleeping_carp"
#define RISING_BASS_TRAIT "rising_bass"
-#define ABDUCTOR_ANTAGONIST "abductor-antagonist"
#define NUKEOP_ANTAGONIST "nukeop-antagonist"
#define MADE_UNCLONEABLE "made-uncloneable"
#define NUKEOP_TRAIT "nuke-op"
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 7f34e845..35cfd76b 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -1,560 +1,562 @@
-//Cloning revival method.
-//The pod handles the actual cloning while the computer manages the clone profiles
-
-//Potential replacement for genetics revives or something I dunno (?)
-
-#define CLONE_INITIAL_DAMAGE 150 //Clones in clonepods start with 150 cloneloss damage and 150 brainloss damage, thats just logical
-#define MINIMUM_HEAL_LEVEL 40
-
-#define SPEAK(message) radio.talk_into(src, message, radio_channel)
-
-/obj/machinery/clonepod
- name = "cloning pod"
- desc = "An electronically-lockable pod for growing organic tissue."
- density = TRUE
- icon = 'icons/obj/machines/cloning.dmi'
- icon_state = "pod_0"
- req_access = list(ACCESS_CLONING) //FOR PREMATURE UNLOCKING.
- verb_say = "states"
- circuit = /obj/item/circuitboard/machine/clonepod
-
- var/heal_level //The clone is released once its health reaches this level.
- var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine.
- var/mess = FALSE //Need to clean out it if it's full of exploded clone.
- var/attempting = FALSE //One clone attempt at a time thanks
- var/speed_coeff
- var/efficiency
-
- var/datum/mind/clonemind
- var/grab_ghost_when = CLONER_MATURE_CLONE
-
- var/internal_radio = TRUE
- var/obj/item/radio/radio
- var/radio_key = /obj/item/encryptionkey/headset_med
- var/radio_channel = RADIO_CHANNEL_MEDICAL
-
- var/obj/effect/countdown/clonepod/countdown
-
- var/list/unattached_flesh
- var/flesh_number = 0
-
-/obj/machinery/clonepod/Initialize()
- . = ..()
-
- countdown = new(src)
-
- if(internal_radio)
- radio = new(src)
- radio.keyslot = new radio_key
- radio.subspace_transmission = TRUE
- radio.canhear_range = 0
- radio.recalculateChannels()
-
- update_icon()
-
-/obj/machinery/clonepod/Destroy()
- go_out()
- QDEL_NULL(radio)
- QDEL_NULL(countdown)
- if(connected)
- connected.DetachCloner(src)
- QDEL_LIST(unattached_flesh)
- . = ..()
-
-/obj/machinery/clonepod/RefreshParts()
- speed_coeff = 0
- efficiency = 0
- for(var/obj/item/stock_parts/scanning_module/S in component_parts)
- efficiency += S.rating
- for(var/obj/item/stock_parts/manipulator/P in component_parts)
- speed_coeff += P.rating
- heal_level = (efficiency * 15) + 10
- if(heal_level < MINIMUM_HEAL_LEVEL)
- heal_level = MINIMUM_HEAL_LEVEL
- if(heal_level > 100)
- heal_level = 100
-
-//The return of data disks?? Just for transferring between genetics machine/cloning machine.
-//TO-DO: Make the genetics machine accept them.
-/obj/item/disk/data
- name = "cloning data disk"
- icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk.
- var/list/fields = list()
- var/list/mutations = list()
- var/max_mutations = 6
- var/read_only = 0 //Well,it's still a floppy disk
-
-//Disk stuff.
-/obj/item/disk/data/Initialize()
- . = ..()
- icon_state = "datadisk[rand(0,6)]"
- add_overlay("datadisk_gene")
-
-/obj/item/disk/data/attack_self(mob/user)
- read_only = !read_only
- to_chat(user, "You flip the write-protect tab to [read_only ? "protected" : "unprotected"].")
-
-/obj/item/disk/data/examine(mob/user)
- . = ..()
- . += "The write-protect tab is set to [read_only ? "protected" : "unprotected"]."
-
-
-//Clonepod
-
-/obj/machinery/clonepod/examine(mob/user)
- . = ..()
- var/mob/living/mob_occupant = occupant
- if(mess)
- . += "It's filled with blood and viscera. You swear you can see it moving..."
- if(is_operational() && mob_occupant)
- if(mob_occupant.stat != DEAD)
- . += "Current clone cycle is [round(get_completion())]% complete."
-
-/obj/machinery/clonepod/return_air()
- // We want to simulate the clone not being in contact with
- // the atmosphere, so we'll put them in a constant pressure
- // nitrogen. They don't need to breathe while cloning anyway.
- var/static/datum/gas_mixture/immutable/cloner/GM //global so that there's only one instance made for all cloning pods
- if(!GM)
- GM = new
- return GM
-
-/obj/machinery/clonepod/proc/get_completion()
- . = FALSE
- var/mob/living/mob_occupant = occupant
- if(mob_occupant)
- . = (100 * ((mob_occupant.health + 100) / (heal_level + 100)))
-
-/obj/machinery/clonepod/attack_ai(mob/user)
- return examine(user)
-
-//Start growing a human clone in the pod!
-/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, mutation_index, mindref, datum/species/mrace, list/features, factions, list/quirks)
- if(panel_open)
- return FALSE
- if(mess || attempting)
- return FALSE
- clonemind = locate(mindref) in SSticker.minds
- if(!istype(clonemind)) //not a mind
- return FALSE
- if(!QDELETED(clonemind.current))
- if(clonemind.current.stat != DEAD) //mind is associated with a non-dead body
- return FALSE
- if(clonemind.current.suiciding) // Mind is associated with a body that is suiciding.
- return FALSE
- if(clonemind.active) //somebody is using that mind
- if( ckey(clonemind.key)!=ckey )
- return FALSE
- else
- // get_ghost() will fail if they're unable to reenter their body
- var/mob/dead/observer/G = clonemind.get_ghost()
- if(!G)
- return FALSE
- if(G.suiciding) // The ghost came from a body that is suiciding.
- return FALSE
- if(clonemind.damnation_type) //Can't clone the damned.
- INVOKE_ASYNC(src, .proc/horrifyingsound)
- mess = TRUE
- update_icon()
- return FALSE
-
- attempting = TRUE //One at a time!!
- countdown.start()
-
- var/mob/living/carbon/human/H = new /mob/living/carbon/human(src)
-
- H.hardset_dna(ui, mutation_index, H.real_name, null, mrace, features)
- if(prob(50 - efficiency*10)) //Chance to give a bad mutation.
- H.easy_randmut(NEGATIVE+MINOR_NEGATIVE) //100% bad mutation. Can be cured with mutadone.
-
- H.silent = 20 //Prevents an extreme edge case where clones could speak if they said something at exactly the right moment.
- occupant = H
-
- if(!clonename) //to prevent null names
- clonename = "clone ([rand(1,999)])"
- H.real_name = clonename
-
- //Get the clone body ready
- maim_clone(H)
- ADD_TRAIT(H, TRAIT_STABLEHEART, "cloning")
- ADD_TRAIT(H, TRAIT_EMOTEMUTE, "cloning")
- ADD_TRAIT(H, TRAIT_MUTE, "cloning")
- ADD_TRAIT(H, TRAIT_NOBREATH, "cloning")
- ADD_TRAIT(H, TRAIT_NOCRITDAMAGE, "cloning")
- H.Unconscious(80)
-
- clonemind.transfer_to(H)
-
- if(grab_ghost_when == CLONER_FRESH_CLONE)
- H.grab_ghost()
- to_chat(H, "Consciousness slowly creeps over you as your body regenerates.
So this is what cloning feels like?")
-
- if(grab_ghost_when == CLONER_MATURE_CLONE)
- H.ghostize(TRUE) //Only does anything if they were still in their old body and not already a ghost
- to_chat(H.get_ghost(TRUE), "Your body is beginning to regenerate in a cloning pod. You will become conscious when it is complete.")
-
- if(H)
- H.faction |= factions
-
- for(var/V in quirks)
- var/datum/quirk/Q = new V(H)
- Q.on_clone(quirks[V])
-
- H.set_cloned_appearance()
- H.give_genitals(TRUE)
-
- H.suiciding = FALSE
- attempting = FALSE
-
- return TRUE
-
-//Grow clones to maturity then kick them out. FREELOADERS
-/obj/machinery/clonepod/process()
- var/mob/living/mob_occupant = occupant
-
- if(!is_operational()) //Autoeject if power is lost
- if(mob_occupant)
- go_out()
- mob_occupant.apply_vore_prefs()
- connected_message("Clone Ejected: Loss of power.")
-
- else if(mob_occupant && (mob_occupant.loc == src))
- if((mob_occupant.stat == DEAD) || (mob_occupant.suiciding) || mob_occupant.hellbound) //Autoeject corpses and suiciding dudes.
- connected_message("Clone Rejected: Deceased.")
- if(internal_radio)
- SPEAK("The cloning has been \
- aborted due to unrecoverable tissue failure.")
- go_out()
- mob_occupant.apply_vore_prefs()
-
- else if(mob_occupant.cloneloss > (100 - heal_level))
- mob_occupant.Unconscious(80)
- var/dmg_mult = CONFIG_GET(number/damage_multiplier)
- //Slowly get that clone healed and finished.
- mob_occupant.adjustCloneLoss(-((speed_coeff / 2) * dmg_mult))
- var/progress = CLONE_INITIAL_DAMAGE - mob_occupant.getCloneLoss()
- // To avoid the default cloner making incomplete clones
- progress += (100 - MINIMUM_HEAL_LEVEL)
- var/milestone = CLONE_INITIAL_DAMAGE / flesh_number
- var/installed = flesh_number - unattached_flesh.len
-
- if((progress / milestone) >= installed)
- // attach some flesh
- var/obj/item/I = pick_n_take(unattached_flesh)
- if(isorgan(I))
- var/obj/item/organ/O = I
- O.organ_flags &= ~ORGAN_FROZEN
- O.Insert(mob_occupant)
- else if(isbodypart(I))
- var/obj/item/bodypart/BP = I
- BP.attach_limb(mob_occupant)
-
- //Premature clones may have brain damage.
- mob_occupant.adjustOrganLoss(ORGAN_SLOT_BRAIN, -((speed_coeff / 2) * dmg_mult))
-
-
- use_power(7500) //This might need tweaking.
-
- else if((mob_occupant.cloneloss <= (100 - heal_level)))
- connected_message("Cloning Process Complete.")
- if(internal_radio)
- SPEAK("The cloning cycle is complete.")
-
- // If the cloner is upgraded to debugging high levels, sometimes
- // organs and limbs can be missing.
- for(var/i in unattached_flesh)
- if(isorgan(i))
- var/obj/item/organ/O = i
- O.organ_flags &= ~ORGAN_FROZEN
- O.Insert(mob_occupant)
- else if(isbodypart(i))
- var/obj/item/bodypart/BP = i
- BP.attach_limb(mob_occupant)
-
- go_out()
- mob_occupant.apply_vore_prefs()
-
- else if (!mob_occupant || mob_occupant.loc != src)
- occupant = null
- use_power(200)
-
- update_icon()
-
-//Let's unlock this early I guess. Might be too early, needs tweaking.
-/obj/machinery/clonepod/attackby(obj/item/W, mob/user, params)
- if(!(occupant || mess))
- if(default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]",W))
- return
-
- if(default_deconstruction_crowbar(W))
- return
-
- if(istype(W, /obj/item/multitool))
- var/obj/item/multitool/P = W
-
- if(istype(P.buffer, /obj/machinery/computer/cloning))
- if(get_area(P.buffer) != get_area(src))
- to_chat(user, "-% Cannot link machines across power zones. Buffer cleared %-")
- P.buffer = null
- return
- to_chat(user, "-% Successfully linked [P.buffer] with [src] %-")
- var/obj/machinery/computer/cloning/comp = P.buffer
- if(connected)
- connected.DetachCloner(src)
- comp.AttachCloner(src)
- else
- P.buffer = src
- to_chat(user, "-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-")
- return
-
- var/mob/living/mob_occupant = occupant
- if(W.GetID())
- if(!check_access(W))
- to_chat(user, "Access Denied.")
- return
- if(!(mob_occupant || mess))
- to_chat(user, "Error: Pod has no occupant.")
- return
- else
- connected_message("Emergency Ejection")
- SPEAK("An emergency ejection of the current clone has occurred. Survival not guaranteed.")
- to_chat(user, "You force an emergency ejection. ")
- go_out()
- mob_occupant.apply_vore_prefs()
- else
- return ..()
-
-/obj/machinery/clonepod/emag_act(mob/user)
- if(!occupant)
- return
- to_chat(user, "You corrupt the genetic compiler.")
- malfunction()
-
-//Put messages in the connected computer's temp var for display.
-/obj/machinery/clonepod/proc/connected_message(message)
- if ((isnull(connected)) || (!istype(connected, /obj/machinery/computer/cloning)))
- return FALSE
- if (!message)
- return FALSE
-
- connected.temp = message
- connected.updateUsrDialog()
- return TRUE
-
-/obj/machinery/clonepod/proc/go_out()
- countdown.stop()
- var/mob/living/mob_occupant = occupant
- var/turf/T = get_turf(src)
-
- if(mess) //Clean that mess and dump those gibs!
- for(var/obj/fl in unattached_flesh)
- fl.forceMove(T)
- if(istype(fl, /obj/item/organ))
- var/obj/item/organ/O = fl
- O.organ_flags &= ~ORGAN_FROZEN
- unattached_flesh.Cut()
- mess = FALSE
- if(mob_occupant)
- mob_occupant.spawn_gibs()
- audible_message("You hear a splat.")
- update_icon()
- return
-
- if(!mob_occupant)
- return
-
- REMOVE_TRAIT(mob_occupant, TRAIT_STABLEHEART, "cloning")
- REMOVE_TRAIT(mob_occupant, TRAIT_EMOTEMUTE, "cloning")
- REMOVE_TRAIT(mob_occupant, TRAIT_MUTE, "cloning")
- REMOVE_TRAIT(mob_occupant, TRAIT_NOCRITDAMAGE, "cloning")
- REMOVE_TRAIT(mob_occupant, TRAIT_NOBREATH, "cloning")
-
- if(grab_ghost_when == CLONER_MATURE_CLONE)
- mob_occupant.grab_ghost()
- to_chat(occupant, "There is a bright flash!
You feel like a new being.")
- mob_occupant.flash_act()
-
- occupant.forceMove(T)
- update_icon()
- mob_occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest.
- for(var/fl in unattached_flesh)
- qdel(fl)
- unattached_flesh.Cut()
-
- //Do the resize on ejection. The clone pod seems to do a lot of matrix transforms the way size code does, so we will handle our resize after.
- mob_occupant.previous_size = 1 //Set the previous size to default so the resize properly set health and speed.
- mob_occupant.custom_body_size = mob_occupant.client.prefs.body_size
- mob_occupant.resize(mob_occupant.custom_body_size * 0.01)
- occupant = null
-
-/obj/machinery/clonepod/proc/malfunction()
- var/mob/living/mob_occupant = occupant
- if(mob_occupant)
- connected_message("Critical Error!")
- SPEAK("Critical error! Please contact a Thinktronic Systems \
- technician, as your warranty may be affected.")
- mess = TRUE
- maim_clone(mob_occupant) //Remove every bit that's grown back so far to drop later, also destroys bits that haven't grown yet
- update_icon()
- if(mob_occupant.mind != clonemind)
- clonemind.transfer_to(mob_occupant)
- mob_occupant.grab_ghost() // We really just want to make you suffer.
- flash_color(mob_occupant, flash_color="#960000", flash_time=100)
- to_chat(mob_occupant, "Agony blazes across your consciousness as your body is torn apart.
Is this what dying is like? Yes it is.")
- playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 50, 0)
- SEND_SOUND(mob_occupant, sound('sound/hallucinations/veryfar_noise.ogg',0,1,50))
- QDEL_IN(mob_occupant, 40)
-
-/obj/machinery/clonepod/relaymove(mob/user)
- container_resist(user)
-
-/obj/machinery/clonepod/container_resist(mob/living/user)
- if(user.stat == CONSCIOUS)
- go_out()
-
-/obj/machinery/clonepod/emp_act(severity)
- . = ..()
- if (!(. & EMP_PROTECT_SELF))
- var/mob/living/mob_occupant = occupant
- if(mob_occupant && prob(100/(severity*efficiency)))
- connected_message(Gibberish("EMP-caused Accidental Ejection", 0))
- SPEAK(Gibberish("Exposure to electromagnetic fields has caused the ejection of, ERROR: John Doe, prematurely." ,0))
- mob_occupant.apply_vore_prefs()
- go_out()
-
-/obj/machinery/clonepod/ex_act(severity, target)
- ..()
- if(!QDELETED(src))
- go_out()
-
-/obj/machinery/clonepod/handle_atom_del(atom/A)
- if(A == occupant)
- occupant = null
- countdown.stop()
-
-/obj/machinery/clonepod/proc/horrifyingsound()
- for(var/i in 1 to 5)
- playsound(loc,pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 100, rand(0.95,1.05))
- sleep(1)
- sleep(10)
- playsound(loc,'sound/hallucinations/wail.ogg',100,1)
-
-/obj/machinery/clonepod/deconstruct(disassembled = TRUE)
- if(occupant)
- go_out()
- ..()
-
-/obj/machinery/clonepod/proc/maim_clone(mob/living/carbon/human/H)
- if(!unattached_flesh)
- unattached_flesh = list()
- else
- for(var/fl in unattached_flesh)
- qdel(fl)
- unattached_flesh.Cut()
-
- H.setCloneLoss(CLONE_INITIAL_DAMAGE) //Yeah, clones start with very low health, not with random, because why would they start with random health
- //H.setOrganLoss(ORGAN_SLOT_BRAIN, CLONE_INITIAL_DAMAGE)
- // In addition to being cellularly damaged and having barely any
-
- // brain function, they also have no limbs or internal organs.
-
- if(!HAS_TRAIT(H, TRAIT_NODISMEMBER))
- var/static/list/zones = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)
- for(var/zone in zones)
- var/obj/item/bodypart/BP = H.get_bodypart(zone)
- if(BP)
- BP.drop_limb()
- BP.forceMove(src)
- unattached_flesh += BP
-
- for(var/o in H.internal_organs)
- var/obj/item/organ/organ = o
- if(!istype(organ) || (organ.organ_flags & ORGAN_VITAL))
- continue
- organ.organ_flags |= ORGAN_FROZEN
- organ.Remove(H, special=TRUE)
- organ.forceMove(src)
- unattached_flesh += organ
-
- flesh_number = unattached_flesh.len
-
-#define CRYOMOBS 'icons/obj/cryo_mobs.dmi'
-
-/obj/machinery/clonepod/update_icon()
- cut_overlays()
-
- if(mess)
- icon_state = "pod_g"
- var/image/gib1 = image(CRYOMOBS, "gibup")
- var/image/gib2 = image(CRYOMOBS, "gibdown")
- gib1.pixel_y = 27 + round(sin(world.time) * 3)
- gib1.pixel_x = round(sin(world.time * 3))
- gib2.pixel_y = 27 + round(cos(world.time) * 3)
- gib2.pixel_x = round(cos(world.time * 3))
- add_overlay(gib2)
- add_overlay(gib1)
- add_overlay("cover-on")
-
- else if(occupant)
- icon_state = "pod_1"
-
- var/image/occupant_overlay
- var/completion = (flesh_number - unattached_flesh.len) / flesh_number
-
- if(unattached_flesh.len <= 0)
- occupant_overlay = image(occupant.icon, occupant.icon_state)
- occupant_overlay.copy_overlays(occupant)
- else
- occupant_overlay = image(CRYOMOBS, "clone_meat")
- var/matrix/tform = matrix()
- tform.Scale(completion)
- tform.Turn(cos(world.time * 2) * 3)
- occupant_overlay.transform = tform
- occupant_overlay.appearance_flags = 0
-
- occupant_overlay.dir = SOUTH
- occupant_overlay.pixel_y = 27 + round(sin(world.time) * 3)
- occupant_overlay.pixel_x = round(sin(world.time * 3))
-
- add_overlay(occupant_overlay)
- add_overlay("cover-on")
- else
- icon_state = "pod_0"
-
- if(panel_open)
- icon_state = "pod_0_maintenance"
-
- add_overlay("panel")
-
-/*
- * Manual -- A big ol' manual.
- */
-
-/obj/item/paper/guides/jobs/medical/cloning
- name = "paper - 'H-87 Cloning Apparatus Manual"
- info = {"
Getting Started
- Congratulations, your station has purchased the H-87 industrial cloning device!
- Using the H-87 is almost as simple as brain surgery! Simply insert the target humanoid into the scanning chamber and select the scan option to create a new profile!
- That's all there is to it!
- Notice, cloning system cannot scan inorganic life or small primates. Scan may fail if subject has suffered extreme brain damage.
- Clone profiles may be viewed through the profiles menu. Scanning implants a complementary HEALTH MONITOR IMPLANT into the subject, which may be viewed from each profile.
- Profile Deletion has been restricted to \[Station Head\] level access.
- Cloning from a profile
- Cloning is as simple as pressing the CLONE option at the bottom of the desired profile.
- Per your company's EMPLOYEE PRIVACY RIGHTS agreement, the H-87 has been blocked from cloning crewmembers while they are still alive.
-
- The provided CLONEPOD SYSTEM will produce the desired clone. Standard clone maturation times (With SPEEDCLONE technology) are roughly 90 seconds.
- The cloning pod may be unlocked early with any \[Medical Researcher\] ID after initial maturation is complete.
- Please note that resulting clones may have a small DEVELOPMENTAL DEFECT as a result of genetic drift.
- Profile Management
- The H-87 (as well as your station's standard genetics machine) can accept STANDARD DATA DISKETTES.
- These diskettes are used to transfer genetic information between machines and profiles.
- A load/save dialog will become available in each profile if a disk is inserted.
- A good diskette is a great way to counter aforementioned genetic drift!
-
- This technology produced under license from Thinktronic Systems, LTD."}
-
-#undef CLONE_INITIAL_DAMAGE
-#undef SPEAK
-#undef MINIMUM_HEAL_LEVEL
-
+//Cloning revival method.
+//The pod handles the actual cloning while the computer manages the clone profiles
+
+//Potential replacement for genetics revives or something I dunno (?)
+
+#define CLONE_INITIAL_DAMAGE 150 //Clones in clonepods start with 150 cloneloss damage and 150 brainloss damage, thats just logical
+#define MINIMUM_HEAL_LEVEL 40
+
+#define SPEAK(message) radio.talk_into(src, message, radio_channel)
+
+/obj/machinery/clonepod
+ name = "cloning pod"
+ desc = "An electronically-lockable pod for growing organic tissue."
+ density = TRUE
+ icon = 'icons/obj/machines/cloning.dmi'
+ icon_state = "pod_0"
+ req_access = list(ACCESS_CLONING) //FOR PREMATURE UNLOCKING.
+ verb_say = "states"
+ circuit = /obj/item/circuitboard/machine/clonepod
+
+ var/heal_level //The clone is released once its health reaches this level.
+ var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine.
+ var/mess = FALSE //Need to clean out it if it's full of exploded clone.
+ var/attempting = FALSE //One clone attempt at a time thanks
+ var/speed_coeff
+ var/efficiency
+
+ var/datum/mind/clonemind
+ var/grab_ghost_when = CLONER_MATURE_CLONE
+
+ var/internal_radio = TRUE
+ var/obj/item/radio/radio
+ var/radio_key = /obj/item/encryptionkey/headset_med
+ var/radio_channel = RADIO_CHANNEL_MEDICAL
+
+ var/obj/effect/countdown/clonepod/countdown
+
+ var/list/unattached_flesh
+ var/flesh_number = 0
+
+/obj/machinery/clonepod/Initialize()
+ . = ..()
+
+ countdown = new(src)
+
+ if(internal_radio)
+ radio = new(src)
+ radio.keyslot = new radio_key
+ radio.subspace_transmission = TRUE
+ radio.canhear_range = 0
+ radio.recalculateChannels()
+
+ update_icon()
+
+/obj/machinery/clonepod/Destroy()
+ go_out()
+ QDEL_NULL(radio)
+ QDEL_NULL(countdown)
+ if(connected)
+ connected.DetachCloner(src)
+ QDEL_LIST(unattached_flesh)
+ . = ..()
+
+/obj/machinery/clonepod/RefreshParts()
+ speed_coeff = 0
+ efficiency = 0
+ for(var/obj/item/stock_parts/scanning_module/S in component_parts)
+ efficiency += S.rating
+ for(var/obj/item/stock_parts/manipulator/P in component_parts)
+ speed_coeff += P.rating
+ heal_level = (efficiency * 15) + 10
+ if(heal_level < MINIMUM_HEAL_LEVEL)
+ heal_level = MINIMUM_HEAL_LEVEL
+ if(heal_level > 100)
+ heal_level = 100
+
+//The return of data disks?? Just for transferring between genetics machine/cloning machine.
+//TO-DO: Make the genetics machine accept them.
+/obj/item/disk/data
+ name = "cloning data disk"
+ icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk.
+ var/list/fields = list()
+ var/list/mutations = list()
+ var/max_mutations = 6
+ var/read_only = 0 //Well,it's still a floppy disk
+
+//Disk stuff.
+/obj/item/disk/data/Initialize()
+ . = ..()
+ icon_state = "datadisk[rand(0,6)]"
+ add_overlay("datadisk_gene")
+
+/obj/item/disk/data/attack_self(mob/user)
+ read_only = !read_only
+ to_chat(user, "You flip the write-protect tab to [read_only ? "protected" : "unprotected"].")
+
+/obj/item/disk/data/examine(mob/user)
+ . = ..()
+ . += "The write-protect tab is set to [read_only ? "protected" : "unprotected"]."
+
+
+//Clonepod
+
+/obj/machinery/clonepod/examine(mob/user)
+ . = ..()
+ var/mob/living/mob_occupant = occupant
+ if(mess)
+ . += "It's filled with blood and viscera. You swear you can see it moving..."
+ if(is_operational() && mob_occupant)
+ if(mob_occupant.stat != DEAD)
+ . += "Current clone cycle is [round(get_completion())]% complete."
+
+/obj/machinery/clonepod/return_air()
+ // We want to simulate the clone not being in contact with
+ // the atmosphere, so we'll put them in a constant pressure
+ // nitrogen. They don't need to breathe while cloning anyway.
+ var/static/datum/gas_mixture/immutable/cloner/GM //global so that there's only one instance made for all cloning pods
+ if(!GM)
+ GM = new
+ return GM
+
+/obj/machinery/clonepod/proc/get_completion()
+ . = FALSE
+ var/mob/living/mob_occupant = occupant
+ if(mob_occupant)
+ . = (100 * ((mob_occupant.health + 100) / (heal_level + 100)))
+
+/obj/machinery/clonepod/attack_ai(mob/user)
+ return examine(user)
+
+//Start growing a human clone in the pod!
+/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, mutation_index, mindref, datum/species/mrace, list/features, factions, list/quirks)
+ if(panel_open)
+ return FALSE
+ if(mess || attempting)
+ return FALSE
+ clonemind = locate(mindref) in SSticker.minds
+ if(!istype(clonemind)) //not a mind
+ return FALSE
+ if(!QDELETED(clonemind.current))
+ if(clonemind.current.stat != DEAD) //mind is associated with a non-dead body
+ return FALSE
+ if(clonemind.current.suiciding) // Mind is associated with a body that is suiciding.
+ return FALSE
+ if(clonemind.active) //somebody is using that mind
+ if( ckey(clonemind.key)!=ckey )
+ return FALSE
+ else
+ // get_ghost() will fail if they're unable to reenter their body
+ var/mob/dead/observer/G = clonemind.get_ghost()
+ if(!G)
+ return FALSE
+ if(G.suiciding) // The ghost came from a body that is suiciding.
+ return FALSE
+ if(clonemind.damnation_type) //Can't clone the damned.
+ INVOKE_ASYNC(src, .proc/horrifyingsound)
+ mess = TRUE
+ update_icon()
+ return FALSE
+
+ attempting = TRUE //One at a time!!
+ countdown.start()
+
+ var/mob/living/carbon/human/H = new /mob/living/carbon/human(src)
+
+ H.hardset_dna(ui, mutation_index, H.real_name, null, mrace, features)
+ if(prob(50 - efficiency*10)) //Chance to give a bad mutation.
+ H.easy_randmut(NEGATIVE+MINOR_NEGATIVE) //100% bad mutation. Can be cured with mutadone.
+
+ H.silent = 20 //Prevents an extreme edge case where clones could speak if they said something at exactly the right moment.
+ occupant = H
+
+ if(!clonename) //to prevent null names
+ clonename = "clone ([rand(1,999)])"
+ H.real_name = clonename
+
+ //Get the clone body ready
+ maim_clone(H)
+ ADD_TRAIT(H, TRAIT_STABLEHEART, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_STABLELIVER, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_EMOTEMUTE, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_MUTE, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_NOBREATH, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_NOCRITDAMAGE, CLONING_POD_TRAIT)
+ H.Unconscious(80)
+
+ clonemind.transfer_to(H)
+
+ if(grab_ghost_when == CLONER_FRESH_CLONE)
+ H.grab_ghost()
+ to_chat(H, "Consciousness slowly creeps over you as your body regenerates.
So this is what cloning feels like?")
+
+ if(grab_ghost_when == CLONER_MATURE_CLONE)
+ H.ghostize(TRUE) //Only does anything if they were still in their old body and not already a ghost
+ to_chat(H.get_ghost(TRUE), "Your body is beginning to regenerate in a cloning pod. You will become conscious when it is complete.")
+
+ if(H)
+ H.faction |= factions
+
+ for(var/V in quirks)
+ var/datum/quirk/Q = new V(H)
+ Q.on_clone(quirks[V])
+
+ H.set_cloned_appearance()
+ H.give_genitals(TRUE)
+
+ H.suiciding = FALSE
+ attempting = FALSE
+
+ return TRUE
+
+//Grow clones to maturity then kick them out. FREELOADERS
+/obj/machinery/clonepod/process()
+ var/mob/living/mob_occupant = occupant
+
+ if(!is_operational()) //Autoeject if power is lost
+ if(mob_occupant)
+ go_out()
+ mob_occupant.apply_vore_prefs()
+ connected_message("Clone Ejected: Loss of power.")
+
+ else if(mob_occupant && (mob_occupant.loc == src))
+ if((mob_occupant.stat == DEAD) || (mob_occupant.suiciding) || mob_occupant.hellbound) //Autoeject corpses and suiciding dudes.
+ connected_message("Clone Rejected: Deceased.")
+ if(internal_radio)
+ SPEAK("The cloning has been \
+ aborted due to unrecoverable tissue failure.")
+ go_out()
+ mob_occupant.apply_vore_prefs()
+
+ else if(mob_occupant.cloneloss > (100 - heal_level))
+ mob_occupant.Unconscious(80)
+ var/dmg_mult = CONFIG_GET(number/damage_multiplier)
+ //Slowly get that clone healed and finished.
+ mob_occupant.adjustCloneLoss(-((speed_coeff / 2) * dmg_mult))
+ var/progress = CLONE_INITIAL_DAMAGE - mob_occupant.getCloneLoss()
+ // To avoid the default cloner making incomplete clones
+ progress += (100 - MINIMUM_HEAL_LEVEL)
+ var/milestone = CLONE_INITIAL_DAMAGE / flesh_number
+ var/installed = flesh_number - unattached_flesh.len
+
+ if((progress / milestone) >= installed)
+ // attach some flesh
+ var/obj/item/I = pick_n_take(unattached_flesh)
+ if(isorgan(I))
+ var/obj/item/organ/O = I
+ O.organ_flags &= ~ORGAN_FROZEN
+ O.Insert(mob_occupant)
+ else if(isbodypart(I))
+ var/obj/item/bodypart/BP = I
+ BP.attach_limb(mob_occupant)
+
+ //Premature clones may have brain damage.
+ mob_occupant.adjustOrganLoss(ORGAN_SLOT_BRAIN, -((speed_coeff / 2) * dmg_mult))
+
+
+ use_power(7500) //This might need tweaking.
+
+ else if((mob_occupant.cloneloss <= (100 - heal_level)))
+ connected_message("Cloning Process Complete.")
+ if(internal_radio)
+ SPEAK("The cloning cycle is complete.")
+
+ // If the cloner is upgraded to debugging high levels, sometimes
+ // organs and limbs can be missing.
+ for(var/i in unattached_flesh)
+ if(isorgan(i))
+ var/obj/item/organ/O = i
+ O.organ_flags &= ~ORGAN_FROZEN
+ O.Insert(mob_occupant)
+ else if(isbodypart(i))
+ var/obj/item/bodypart/BP = i
+ BP.attach_limb(mob_occupant)
+
+ go_out()
+ mob_occupant.apply_vore_prefs()
+
+ else if (!mob_occupant || mob_occupant.loc != src)
+ occupant = null
+ use_power(200)
+
+ update_icon()
+
+//Let's unlock this early I guess. Might be too early, needs tweaking.
+/obj/machinery/clonepod/attackby(obj/item/W, mob/user, params)
+ if(!(occupant || mess))
+ if(default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]",W))
+ return
+
+ if(default_deconstruction_crowbar(W))
+ return
+
+ if(istype(W, /obj/item/multitool))
+ var/obj/item/multitool/P = W
+
+ if(istype(P.buffer, /obj/machinery/computer/cloning))
+ if(get_area(P.buffer) != get_area(src))
+ to_chat(user, "-% Cannot link machines across power zones. Buffer cleared %-")
+ P.buffer = null
+ return
+ to_chat(user, "-% Successfully linked [P.buffer] with [src] %-")
+ var/obj/machinery/computer/cloning/comp = P.buffer
+ if(connected)
+ connected.DetachCloner(src)
+ comp.AttachCloner(src)
+ else
+ P.buffer = src
+ to_chat(user, "-% Successfully stored [REF(P.buffer)] [P.buffer.name] in buffer %-")
+ return
+
+ var/mob/living/mob_occupant = occupant
+ if(W.GetID())
+ if(!check_access(W))
+ to_chat(user, "Access Denied.")
+ return
+ if(!(mob_occupant || mess))
+ to_chat(user, "Error: Pod has no occupant.")
+ return
+ else
+ connected_message("Emergency Ejection")
+ SPEAK("An emergency ejection of the current clone has occurred. Survival not guaranteed.")
+ to_chat(user, "You force an emergency ejection. ")
+ go_out()
+ mob_occupant.apply_vore_prefs()
+ else
+ return ..()
+
+/obj/machinery/clonepod/emag_act(mob/user)
+ if(!occupant)
+ return
+ to_chat(user, "You corrupt the genetic compiler.")
+ malfunction()
+
+//Put messages in the connected computer's temp var for display.
+/obj/machinery/clonepod/proc/connected_message(message)
+ if ((isnull(connected)) || (!istype(connected, /obj/machinery/computer/cloning)))
+ return FALSE
+ if (!message)
+ return FALSE
+
+ connected.temp = message
+ connected.updateUsrDialog()
+ return TRUE
+
+/obj/machinery/clonepod/proc/go_out()
+ countdown.stop()
+ var/mob/living/mob_occupant = occupant
+ var/turf/T = get_turf(src)
+
+ if(mess) //Clean that mess and dump those gibs!
+ for(var/obj/fl in unattached_flesh)
+ fl.forceMove(T)
+ if(istype(fl, /obj/item/organ))
+ var/obj/item/organ/O = fl
+ O.organ_flags &= ~ORGAN_FROZEN
+ unattached_flesh.Cut()
+ mess = FALSE
+ if(mob_occupant)
+ mob_occupant.spawn_gibs()
+ audible_message("You hear a splat.")
+ update_icon()
+ return
+
+ if(!mob_occupant)
+ return
+
+ REMOVE_TRAIT(mob_occupant, TRAIT_STABLEHEART, CLONING_POD_TRAIT)
+ REMOVE_TRAIT(mob_occupant, TRAIT_STABLELIVER, CLONING_POD_TRAIT)
+ REMOVE_TRAIT(mob_occupant, TRAIT_EMOTEMUTE, CLONING_POD_TRAIT)
+ REMOVE_TRAIT(mob_occupant, TRAIT_MUTE, CLONING_POD_TRAIT)
+ REMOVE_TRAIT(mob_occupant, TRAIT_NOCRITDAMAGE, CLONING_POD_TRAIT)
+ REMOVE_TRAIT(mob_occupant, TRAIT_NOBREATH, CLONING_POD_TRAIT)
+
+ if(grab_ghost_when == CLONER_MATURE_CLONE)
+ mob_occupant.grab_ghost()
+ to_chat(occupant, "There is a bright flash!
You feel like a new being.")
+ mob_occupant.flash_act()
+
+ occupant.forceMove(T)
+ update_icon()
+ mob_occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest.
+ for(var/fl in unattached_flesh)
+ qdel(fl)
+ unattached_flesh.Cut()
+
+ //Do the resize on ejection. The clone pod seems to do a lot of matrix transforms the way size code does, so we will handle our resize after.
+ mob_occupant.previous_size = 1 //Set the previous size to default so the resize properly set health and speed.
+ mob_occupant.custom_body_size = mob_occupant.client.prefs.body_size
+ mob_occupant.resize(mob_occupant.custom_body_size * 0.01)
+ occupant = null
+
+/obj/machinery/clonepod/proc/malfunction()
+ var/mob/living/mob_occupant = occupant
+ if(mob_occupant)
+ connected_message("Critical Error!")
+ SPEAK("Critical error! Please contact a Thinktronic Systems \
+ technician, as your warranty may be affected.")
+ mess = TRUE
+ maim_clone(mob_occupant) //Remove every bit that's grown back so far to drop later, also destroys bits that haven't grown yet
+ update_icon()
+ if(mob_occupant.mind != clonemind)
+ clonemind.transfer_to(mob_occupant)
+ mob_occupant.grab_ghost() // We really just want to make you suffer.
+ flash_color(mob_occupant, flash_color="#960000", flash_time=100)
+ to_chat(mob_occupant, "Agony blazes across your consciousness as your body is torn apart.
Is this what dying is like? Yes it is.")
+ playsound(src.loc, 'sound/machines/warning-buzzer.ogg', 50, 0)
+ SEND_SOUND(mob_occupant, sound('sound/hallucinations/veryfar_noise.ogg',0,1,50))
+ QDEL_IN(mob_occupant, 40)
+
+/obj/machinery/clonepod/relaymove(mob/user)
+ container_resist(user)
+
+/obj/machinery/clonepod/container_resist(mob/living/user)
+ if(user.stat == CONSCIOUS)
+ go_out()
+
+/obj/machinery/clonepod/emp_act(severity)
+ . = ..()
+ if (!(. & EMP_PROTECT_SELF))
+ var/mob/living/mob_occupant = occupant
+ if(mob_occupant && prob(100/(severity*efficiency)))
+ connected_message(Gibberish("EMP-caused Accidental Ejection", 0))
+ SPEAK(Gibberish("Exposure to electromagnetic fields has caused the ejection of, ERROR: John Doe, prematurely." ,0))
+ mob_occupant.apply_vore_prefs()
+ go_out()
+
+/obj/machinery/clonepod/ex_act(severity, target)
+ ..()
+ if(!QDELETED(src))
+ go_out()
+
+/obj/machinery/clonepod/handle_atom_del(atom/A)
+ if(A == occupant)
+ occupant = null
+ countdown.stop()
+
+/obj/machinery/clonepod/proc/horrifyingsound()
+ for(var/i in 1 to 5)
+ playsound(loc,pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 100, rand(0.95,1.05))
+ sleep(1)
+ sleep(10)
+ playsound(loc,'sound/hallucinations/wail.ogg',100,1)
+
+/obj/machinery/clonepod/deconstruct(disassembled = TRUE)
+ if(occupant)
+ go_out()
+ ..()
+
+/obj/machinery/clonepod/proc/maim_clone(mob/living/carbon/human/H)
+ if(!unattached_flesh)
+ unattached_flesh = list()
+ else
+ for(var/fl in unattached_flesh)
+ qdel(fl)
+ unattached_flesh.Cut()
+
+ H.setCloneLoss(CLONE_INITIAL_DAMAGE) //Yeah, clones start with very low health, not with random, because why would they start with random health
+ //H.setOrganLoss(ORGAN_SLOT_BRAIN, CLONE_INITIAL_DAMAGE)
+ // In addition to being cellularly damaged and having barely any
+
+ // brain function, they also have no limbs or internal organs.
+
+ if(!HAS_TRAIT(H, TRAIT_NODISMEMBER))
+ var/static/list/zones = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG)
+ for(var/zone in zones)
+ var/obj/item/bodypart/BP = H.get_bodypart(zone)
+ if(BP)
+ BP.drop_limb()
+ BP.forceMove(src)
+ unattached_flesh += BP
+
+ for(var/o in H.internal_organs)
+ var/obj/item/organ/organ = o
+ if(!istype(organ) || (organ.organ_flags & ORGAN_VITAL))
+ continue
+ organ.organ_flags |= ORGAN_FROZEN
+ organ.Remove(H, special=TRUE)
+ organ.forceMove(src)
+ unattached_flesh += organ
+
+ flesh_number = unattached_flesh.len
+
+#define CRYOMOBS 'icons/obj/cryo_mobs.dmi'
+
+/obj/machinery/clonepod/update_icon()
+ cut_overlays()
+
+ if(mess)
+ icon_state = "pod_g"
+ var/image/gib1 = image(CRYOMOBS, "gibup")
+ var/image/gib2 = image(CRYOMOBS, "gibdown")
+ gib1.pixel_y = 27 + round(sin(world.time) * 3)
+ gib1.pixel_x = round(sin(world.time * 3))
+ gib2.pixel_y = 27 + round(cos(world.time) * 3)
+ gib2.pixel_x = round(cos(world.time * 3))
+ add_overlay(gib2)
+ add_overlay(gib1)
+ add_overlay("cover-on")
+
+ else if(occupant)
+ icon_state = "pod_1"
+
+ var/image/occupant_overlay
+ var/completion = (flesh_number - unattached_flesh.len) / flesh_number
+
+ if(unattached_flesh.len <= 0)
+ occupant_overlay = image(occupant.icon, occupant.icon_state)
+ occupant_overlay.copy_overlays(occupant)
+ else
+ occupant_overlay = image(CRYOMOBS, "clone_meat")
+ var/matrix/tform = matrix()
+ tform.Scale(completion)
+ tform.Turn(cos(world.time * 2) * 3)
+ occupant_overlay.transform = tform
+ occupant_overlay.appearance_flags = 0
+
+ occupant_overlay.dir = SOUTH
+ occupant_overlay.pixel_y = 27 + round(sin(world.time) * 3)
+ occupant_overlay.pixel_x = round(sin(world.time * 3))
+
+ add_overlay(occupant_overlay)
+ add_overlay("cover-on")
+ else
+ icon_state = "pod_0"
+
+ if(panel_open)
+ icon_state = "pod_0_maintenance"
+
+ add_overlay("panel")
+
+/*
+ * Manual -- A big ol' manual.
+ */
+
+/obj/item/paper/guides/jobs/medical/cloning
+ name = "paper - 'H-87 Cloning Apparatus Manual"
+ info = {"Getting Started
+ Congratulations, your station has purchased the H-87 industrial cloning device!
+ Using the H-87 is almost as simple as brain surgery! Simply insert the target humanoid into the scanning chamber and select the scan option to create a new profile!
+ That's all there is to it!
+ Notice, cloning system cannot scan inorganic life or small primates. Scan may fail if subject has suffered extreme brain damage.
+ Clone profiles may be viewed through the profiles menu. Scanning implants a complementary HEALTH MONITOR IMPLANT into the subject, which may be viewed from each profile.
+ Profile Deletion has been restricted to \[Station Head\] level access.
+ Cloning from a profile
+ Cloning is as simple as pressing the CLONE option at the bottom of the desired profile.
+ Per your company's EMPLOYEE PRIVACY RIGHTS agreement, the H-87 has been blocked from cloning crewmembers while they are still alive.
+
+ The provided CLONEPOD SYSTEM will produce the desired clone. Standard clone maturation times (With SPEEDCLONE technology) are roughly 90 seconds.
+ The cloning pod may be unlocked early with any \[Medical Researcher\] ID after initial maturation is complete.
+ Please note that resulting clones may have a small DEVELOPMENTAL DEFECT as a result of genetic drift.
+ Profile Management
+ The H-87 (as well as your station's standard genetics machine) can accept STANDARD DATA DISKETTES.
+ These diskettes are used to transfer genetic information between machines and profiles.
+ A load/save dialog will become available in each profile if a disk is inserted.
+ A good diskette is a great way to counter aforementioned genetic drift!
+
+ This technology produced under license from Thinktronic Systems, LTD."}
+
+#undef CLONE_INITIAL_DAMAGE
+#undef SPEAK
+#undef MINIMUM_HEAL_LEVEL
+
diff --git a/code/game/machinery/exp_cloner.dm b/code/game/machinery/exp_cloner.dm
index baa7ed27..db60a1a4 100644
--- a/code/game/machinery/exp_cloner.dm
+++ b/code/game/machinery/exp_cloner.dm
@@ -42,11 +42,12 @@
icon_state = "pod_1"
//Get the clone body ready
maim_clone(H)
- ADD_TRAIT(H, TRAIT_STABLEHEART, "cloning")
- ADD_TRAIT(H, TRAIT_EMOTEMUTE, "cloning")
- ADD_TRAIT(H, TRAIT_MUTE, "cloning")
- ADD_TRAIT(H, TRAIT_NOBREATH, "cloning")
- ADD_TRAIT(H, TRAIT_NOCRITDAMAGE, "cloning")
+ ADD_TRAIT(H, TRAIT_STABLEHEART, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_STABLELIVER, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_EMOTEMUTE, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_MUTE, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_NOBREATH, CLONING_POD_TRAIT)
+ ADD_TRAIT(H, TRAIT_NOCRITDAMAGE, CLONING_POD_TRAIT)
H.Unconscious(80)
var/list/candidates = pollCandidatesForMob("Do you want to play as [clonename]'s defective clone?", null, null, null, 100, H)
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index 8e29b38f..effe1045 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -44,6 +44,7 @@
owner.assigned_role = "[name] [sub_role]"
owner.objectives += team.objectives
finalize_abductor()
+ ADD_TRAIT(owner, TRAIT_ABDUCTOR_TRAINING, ABDUCTOR_ANTAGONIST)
return ..()
/datum/antagonist/abductor/on_removal()
@@ -51,6 +52,7 @@
if(owner.current)
to_chat(owner.current,"You are no longer the [owner.special_role]!")
owner.special_role = null
+ REMOVE_TRAIT(owner, TRAIT_ABDUCTOR_TRAINING, ABDUCTOR_ANTAGONIST)
return ..()
/datum/antagonist/abductor/greet()
@@ -74,11 +76,15 @@
update_abductor_icons_added(owner,"abductor")
-/datum/antagonist/abductor/scientist/finalize_abductor()
- ..()
- var/mob/living/carbon/human/H = owner.current
- var/datum/species/abductor/A = H.dna.species
- A.scientist = TRUE
+/datum/antagonist/abductor/scientist/on_gain()
+ ADD_TRAIT(owner, TRAIT_ABDUCTOR_SCIENTIST_TRAINING, ABDUCTOR_ANTAGONIST)
+ ADD_TRAIT(owner, TRAIT_SURGEON, ABDUCTOR_ANTAGONIST)
+ . = ..()
+
+/datum/antagonist/abductor/scientist/on_removal()
+ REMOVE_TRAIT(owner, TRAIT_ABDUCTOR_SCIENTIST_TRAINING, ABDUCTOR_ANTAGONIST)
+ REMOVE_TRAIT(owner, TRAIT_SURGEON, ABDUCTOR_ANTAGONIST)
+ . = ..()
/datum/antagonist/abductor/admin_add(datum/mind/new_owner,mob/admin)
var/list/current_teams = list()
@@ -213,4 +219,4 @@
/datum/antagonist/proc/update_abductor_icons_removed(datum/mind/alien_mind)
var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_ABDUCTOR]
hud.leave_hud(alien_mind.current)
- set_antag_hud(alien_mind.current, null)
\ No newline at end of file
+ set_antag_hud(alien_mind.current, null)
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 75cf91f7..603dd433 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -132,22 +132,24 @@
/obj/item/abductor
icon = 'icons/obj/abductor.dmi'
-/obj/item/abductor/proc/AbductorCheck(user)
- if(isabductor(user))
+/obj/item/abductor/proc/AbductorCheck(mob/user)
+ if(HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING))
return TRUE
to_chat(user, "You can't figure how this works!")
return FALSE
-/obj/item/abductor/proc/ScientistCheck(user)
- if(!AbductorCheck(user))
- return FALSE
+/obj/item/abductor/proc/ScientistCheck(mob/user)
+ var/training = HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING)
+ var/sci_training = HAS_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING)
- var/mob/living/carbon/human/H = user
- var/datum/species/abductor/S = H.dna.species
- if(S.scientist)
- return TRUE
- to_chat(user, "You're not trained to use this!")
- return FALSE
+ if(training && !sci_training)
+ to_chat(user, "You're not trained to use this!")
+ . = FALSE
+ else if(!training && !sci_training)
+ to_chat(user, "You can't figure how this works!")
+ . = FALSE
+ else
+ . = TRUE
/obj/item/abductor/gizmo
name = "science tool"
@@ -681,7 +683,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
desc = "Abduct with style - spiky style. Prevents digital tracking."
icon_state = "alienhelmet"
item_state = "alienhelmet"
- blockTracking = 1
+ blockTracking = TRUE
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
// Operating Table / Beds / Lockers
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index c2b4f548..3588494e 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -5,6 +5,7 @@
icon_state = "gland"
status = ORGAN_ROBOTIC
beating = TRUE
+ var/true_name = "baseline placebo referencer"
var/cooldown_low = 300
var/cooldown_high = 300
var/next_activation = 0
@@ -16,6 +17,11 @@
var/mind_control_duration = 1800
var/active_mind_control = FALSE
+/obj/item/organ/heart/gland/examine(mob/user)
+ . = ..()
+ if(HAS_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) || isobserver(user))
+ to_chat(user, "It is \a [true_name].")
+
/obj/item/organ/heart/gland/proc/ownerCheck()
if(ishuman(owner))
return TRUE
@@ -95,6 +101,7 @@
return
/obj/item/organ/heart/gland/heals
+ true_name = "coherency harmonizer"
cooldown_low = 200
cooldown_high = 400
uses = -1
@@ -109,6 +116,7 @@
owner.adjustOxyLoss(-20)
/obj/item/organ/heart/gland/slime
+ true_name = "gastric animation galvanizer"
cooldown_low = 600
cooldown_high = 1200
uses = -1
@@ -130,6 +138,7 @@
Slime.Leader = owner
/obj/item/organ/heart/gland/mindshock
+ true_name = "neural crosstalk uninhibitor"
cooldown_low = 400
cooldown_high = 700
uses = -1
@@ -156,6 +165,7 @@
H.hallucination += 60
/obj/item/organ/heart/gland/pop
+ true_name = "anthropmorphic translocator"
cooldown_low = 900
cooldown_high = 1800
uses = -1
@@ -171,6 +181,7 @@
owner.set_species(species)
/obj/item/organ/heart/gland/ventcrawling
+ true_name = "pliant cartilage enabler"
cooldown_low = 1800
cooldown_high = 2400
uses = 1
@@ -183,6 +194,7 @@
owner.ventcrawler = VENTCRAWLER_ALWAYS
/obj/item/organ/heart/gland/viral
+ true_name = "contamination incubator"
cooldown_low = 1800
cooldown_high = 2400
uses = 1
@@ -217,6 +229,7 @@
return A
/obj/item/organ/heart/gland/trauma
+ true_name = "white matter randomiser"
cooldown_low = 800
cooldown_high = 1200
uses = 5
@@ -235,6 +248,7 @@
owner.gain_trauma_type(BRAIN_TRAUMA_MILD, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_LOBOTOMY))
/obj/item/organ/heart/gland/spiderman
+ true_name = "araneae cloister accelerator"
cooldown_low = 450
cooldown_high = 900
uses = -1
@@ -249,6 +263,7 @@
S.directive = "Protect your nest inside [owner.real_name]."
/obj/item/organ/heart/gland/egg
+ true_name = "roe/enzymatic synthesizer"
cooldown_low = 300
cooldown_high = 400
uses = -1
@@ -264,6 +279,7 @@
new /obj/item/reagent_containers/food/snacks/egg/gland(T)
/obj/item/organ/heart/gland/electric
+ true_name = "electron accumulator/discharger"
cooldown_low = 800
cooldown_high = 1200
uses = -1
@@ -289,6 +305,7 @@
playsound(get_turf(owner), 'sound/magic/lightningshock.ogg', 50, 1)
/obj/item/organ/heart/gland/chem
+ true_name = "intrinsic pharma-provider"
cooldown_low = 50
cooldown_high = 50
uses = -1
@@ -308,6 +325,7 @@
..()
/obj/item/organ/heart/gland/plasma
+ true_name = "effluvium sanguine-synonym emitter"
cooldown_low = 1200
cooldown_high = 1800
uses = -1
diff --git a/code/modules/antagonists/abductor/machinery/camera.dm b/code/modules/antagonists/abductor/machinery/camera.dm
index 41cfa6a9..00e48cb1 100644
--- a/code/modules/antagonists/abductor/machinery/camera.dm
+++ b/code/modules/antagonists/abductor/machinery/camera.dm
@@ -55,8 +55,7 @@
actions += set_droppoint_action
/obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(mob/living/carbon/human/H)
- var/datum/species/abductor/S = H.dna.species
- return S.scientist
+ return HAS_TRAIT(H, TRAIT_ABDUCTOR_SCIENTIST_TRAINING)
/datum/action/innate/teleport_in
name = "Send To"
diff --git a/code/modules/antagonists/abductor/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm
index 46d69ba9..30b82398 100644
--- a/code/modules/antagonists/abductor/machinery/console.dm
+++ b/code/modules/antagonists/abductor/machinery/console.dm
@@ -28,7 +28,7 @@
. = ..()
if(.)
return
- if(!isabductor(user))
+ if(!HAS_TRAIT(user, TRAIT_ABDUCTOR_TRAINING))
to_chat(user, "You start mashing alien buttons at random!")
if(do_after(user,100, target = src))
TeleporterSend()
diff --git a/code/modules/antagonists/abductor/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm
index 1cb95fbf..ab636f7d 100644
--- a/code/modules/antagonists/abductor/machinery/pad.dm
+++ b/code/modules/antagonists/abductor/machinery/pad.dm
@@ -53,4 +53,4 @@
. = ..()
var/datum/effect_system/spark_spread/S = new
S.set_up(10,0,loc)
- S.start()
\ No newline at end of file
+ S.start()
diff --git a/code/modules/mob/living/carbon/examine.dm b/code/modules/mob/living/carbon/examine.dm
index 14ea50a2..f2aa70ce 100644
--- a/code/modules/mob/living/carbon/examine.dm
+++ b/code/modules/mob/living/carbon/examine.dm
@@ -92,7 +92,8 @@
. += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly unsimian manner."
if(combatmode)
- . += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]"
+ . += "[t_He] [t_is] visibly tense[resting ? "." : ", and [t_is] standing in combative stance."]\n"
+ . += common_trait_examine()
var/datum/component/mood/mood = src.GetComponent(/datum/component/mood)
if(mood)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index d370cd36..fb017161 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -352,6 +352,7 @@
if (length(msg))
. += "[msg.Join("")]"
+ msg += common_trait_examine()
var/traitstring = get_trait_string()
if(ishuman(user))
diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm
index 576e246c..ffd129eb 100644
--- a/code/modules/mob/living/carbon/human/species_types/abductors.dm
+++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm
@@ -1,22 +1,18 @@
-/datum/species/abductor
- name = "Abductor"
- id = "abductor"
- say_mod = "gibbers"
- sexes = FALSE
- species_traits = list(NOBLOOD,NOEYES,NOGENITALS,NOAROUSAL)
- inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NOGUNS,TRAIT_NOHUNGER,TRAIT_NOBREATH)
- mutanttongue = /obj/item/organ/tongue/abductor
- var/scientist = FALSE // vars to not pollute spieces list with castes
-
-/datum/species/abductor/copy_properties_from(datum/species/abductor/old_species)
- scientist = old_species.scientist
-
-/datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species)
- . = ..()
- var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR]
- abductor_hud.add_hud_to(C)
-
-/datum/species/abductor/on_species_loss(mob/living/carbon/C)
- . = ..()
- var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR]
- abductor_hud.remove_hud_from(C)
+/datum/species/abductor
+ name = "Abductor"
+ id = "abductor"
+ say_mod = "gibbers"
+ sexes = FALSE
+ species_traits = list(NOBLOOD,NOEYES,NOGENITALS,NOAROUSAL)
+ inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NOGUNS,TRAIT_NOHUNGER,TRAIT_NOBREATH)
+ mutanttongue = /obj/item/organ/tongue/abductor
+
+/datum/species/abductor/on_species_gain(mob/living/carbon/C, datum/species/old_species)
+ . = ..()
+ var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR]
+ abductor_hud.add_hud_to(C)
+
+/datum/species/abductor/on_species_loss(mob/living/carbon/C)
+ . = ..()
+ var/datum/atom_hud/abductor_hud = GLOB.huds[DATA_HUD_ABDUCTOR]
+ abductor_hud.remove_hud_from(C)
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 56858582..765c50da 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -719,7 +719,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
/mob/living/carbon/proc/liver_failure()
reagents.end_metabolization(src, keep_liverless = TRUE) //Stops trait-based effects on reagents, to prevent permanent buffs
reagents.metabolize(src, can_overdose=FALSE, liverless = TRUE)
- if(HAS_TRAIT(src, TRAIT_STABLEHEART))
+ if(HAS_TRAIT(src, TRAIT_STABLELIVER))
return
adjustToxLoss(4, TRUE, TRUE)
if(prob(30))
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 8a1fb90a..7063ed51 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -1,526 +1,537 @@
-
-// see _DEFINES/is_helpers.dm for mob type checks
-
-/mob/proc/lowest_buckled_mob()
- . = src
- if(buckled && ismob(buckled))
- var/mob/Buckled = buckled
- . = Buckled.lowest_buckled_mob()
-
-/proc/check_zone(zone)
- if(!zone)
- return BODY_ZONE_CHEST
- switch(zone)
- if(BODY_ZONE_PRECISE_EYES)
- zone = BODY_ZONE_HEAD
- if(BODY_ZONE_PRECISE_MOUTH)
- zone = BODY_ZONE_HEAD
- if(BODY_ZONE_PRECISE_L_HAND)
- zone = BODY_ZONE_L_ARM
- if(BODY_ZONE_PRECISE_R_HAND)
- zone = BODY_ZONE_R_ARM
- if(BODY_ZONE_PRECISE_L_FOOT)
- zone = BODY_ZONE_L_LEG
- if(BODY_ZONE_PRECISE_R_FOOT)
- zone = BODY_ZONE_R_LEG
- if(BODY_ZONE_PRECISE_GROIN)
- zone = BODY_ZONE_CHEST
- return zone
-
-
-/proc/ran_zone(zone, probability = 80)
- if(prob(probability))
- zone = check_zone(zone)
- else
- zone = pickweight(list(BODY_ZONE_HEAD = 6, BODY_ZONE_CHEST = 6, BODY_ZONE_L_ARM = 22, BODY_ZONE_R_ARM = 22, BODY_ZONE_L_LEG = 22, BODY_ZONE_R_LEG = 22))
- return zone
-
-/proc/above_neck(zone)
- var/list/zones = list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES)
- if(zones.Find(zone))
- return 1
- else
- return 0
-
-/proc/stars(n, pr)
- n = html_encode(n)
- if (pr == null)
- pr = 25
- if (pr <= 0)
- return null
- else
- if (pr >= 100)
- return n
- var/te = n
- var/t = ""
- n = length(n)
- var/p = null
- p = 1
- while(p <= n)
- if ((copytext(te, p, p + 1) == " " || prob(pr)))
- t = text("[][]", t, copytext(te, p, p + 1))
- else
- t = text("[]*", t)
- p++
- return sanitize(t)
-
-/proc/slur(n,var/strength=50)
- strength = min(strength,50)
- var/phrase = html_decode(n)
- var/leng = length(phrase)
- var/counter=length(phrase)
- var/newphrase=""
- var/newletter=""
- while(counter>=1)
- newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
- if(rand(1,100)<=strength*0.5)
- if(lowertext(newletter)=="o")
- newletter="u"
- if(lowertext(newletter)=="s")
- newletter="ch"
- if(lowertext(newletter)=="a")
- newletter="ah"
- if(lowertext(newletter)=="u")
- newletter="oo"
- if(lowertext(newletter)=="c")
- newletter="k"
- if(rand(1,100) <= strength*0.25)
- if(newletter==" ")
- newletter="...huuuhhh..."
- if(newletter==".")
- newletter=" *BURP*."
- if(rand(1,100) <= strength*0.5)
- if(rand(1,5) == 1)
- newletter+="'"
- if(rand(1,5) == 1)
- newletter+="[newletter]"
- if(rand(1,5) == 1)
- newletter+="[newletter][newletter]"
- newphrase+="[newletter]";counter-=1
- return newphrase
-
-
-/proc/cultslur(n) // Inflicted on victims of a stun talisman
- var/phrase = html_decode(n)
- var/leng = length(phrase)
- var/counter=length(phrase)
- var/newphrase=""
- var/newletter=""
- while(counter>=1)
- newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
- if(rand(1,2)==2)
- if(lowertext(newletter)=="o")
- newletter="u"
- if(lowertext(newletter)=="t")
- newletter="ch"
- if(lowertext(newletter)=="a")
- newletter="ah"
- if(lowertext(newletter)=="u")
- newletter="oo"
- if(lowertext(newletter)=="c")
- newletter=" NAR "
- if(lowertext(newletter)=="s")
- newletter=" SIE "
- if(rand(1,4)==4)
- if(newletter==" ")
- newletter=" no hope... "
- if(newletter=="H")
- newletter=" IT COMES... "
-
- switch(rand(1,15))
- if(1)
- newletter="'"
- if(2)
- newletter+="agn"
- if(3)
- newletter="fth"
- if(4)
- newletter="nglu"
- if(5)
- newletter="glor"
- newphrase+="[newletter]";counter-=1
- return newphrase
-
-
-/proc/stutter(n)
- var/te = html_decode(n)
- var/t = ""//placed before the message. Not really sure what it's for.
- n = length(n)//length of the entire word
- var/p = null
- p = 1//1 is the start of any word
- while(p <= n)//while P, which starts at 1 is less or equal to N which is the length.
- var/n_letter = copytext(te, p, p + 1)//copies text from a certain distance. In this case, only one letter at a time.
- if (prob(80) && (ckey(n_letter) in list("b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z")))
- if (prob(10))
- n_letter = text("[n_letter]-[n_letter]-[n_letter]-[n_letter]")//replaces the current letter with this instead.
- else
- if (prob(20))
- n_letter = text("[n_letter]-[n_letter]-[n_letter]")
- else
- if (prob(5))
- n_letter = null
- else
- n_letter = text("[n_letter]-[n_letter]")
- t = text("[t][n_letter]")//since the above is ran through for each letter, the text just adds up back to the original word.
- p++//for each letter p is increased to find where the next letter will be.
- return copytext(sanitize(t),1,MAX_MESSAGE_LEN)
-
-/proc/derpspeech(message, stuttering)
- message = replacetext(message, " am ", " ")
- message = replacetext(message, " is ", " ")
- message = replacetext(message, " are ", " ")
- message = replacetext(message, "you", "u")
- message = replacetext(message, "help", "halp")
- message = replacetext(message, "grief", "grife")
- message = replacetext(message, "space", "spess")
- message = replacetext(message, "carp", "crap")
- message = replacetext(message, "reason", "raisin")
- if(prob(50))
- message = uppertext(message)
- message += "[stutter(pick("!", "!!", "!!!"))]"
- if(!stuttering && prob(15))
- message = stutter(message)
- return message
-
-
-/proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 for p will cause letters to be replaced instead of added
- /* Turn text into complete gibberish! */
- var/returntext = ""
- for(var/i = 1, i <= length(t), i++)
-
- var/letter = copytext(t, i, i+1)
- if(prob(50))
- if(p >= 70)
- letter = ""
-
- for(var/j = 1, j <= rand(0, 2), j++)
- letter += pick("#","@","*","&","%","$","/", "<", ">", ";","*","*","*","*","*","*","*")
-
- returntext += letter
-
- return returntext
-
-
-/proc/ninjaspeak(n) //NINJACODE
-/*
-The difference with stutter is that this proc can stutter more than 1 letter
-The issue here is that anything that does not have a space is treated as one word (in many instances). For instance, "LOOKING," is a word, including the comma.
-It's fairly easy to fix if dealing with single letters but not so much with compounds of letters./N
-*/
- var/te = html_decode(n)
- var/t = ""
- n = length(n)
- var/p = 1
- while(p <= n)
- var/n_letter
- var/n_mod = rand(1,4)
- if(p+n_mod>n+1)
- n_letter = copytext(te, p, n+1)
- else
- n_letter = copytext(te, p, p+n_mod)
- if (prob(50))
- if (prob(30))
- n_letter = text("[n_letter]-[n_letter]-[n_letter]")
- else
- n_letter = text("[n_letter]-[n_letter]")
- else
- n_letter = text("[n_letter]")
- t = text("[t][n_letter]")
- p=p+n_mod
- return copytext(sanitize(t),1,MAX_MESSAGE_LEN)
-
-
-/proc/shake_camera(mob/M, duration, strength=1)
- if(!M || !M.client || duration < 1)
- return
- var/client/C = M.client
- var/oldx = C.pixel_x
- var/oldy = C.pixel_y
- var/max = strength*world.icon_size
- var/min = -(strength*world.icon_size)
-
- for(var/i in 0 to duration-1)
- if (i == 0)
- animate(C, pixel_x=rand(min,max), pixel_y=rand(min,max), time=1)
- else
- animate(pixel_x=rand(min,max), pixel_y=rand(min,max), time=1)
- animate(pixel_x=oldx, pixel_y=oldy, time=1)
-
-
-
-/proc/findname(msg)
- if(!istext(msg))
- msg = "[msg]"
- for(var/i in GLOB.mob_list)
- var/mob/M = i
- if(M.real_name == msg)
- return M
- return 0
-
-/mob/proc/first_name()
- var/static/regex/firstname = new("^\[^\\s-\]+") //First word before whitespace or "-"
- firstname.Find(real_name)
- return firstname.match
-
-
-//change a mob's act-intent. Input the intent as a string such as "help" or use "right"/"left
-/mob/verb/a_intent_change(input as text)
- set name = "a-intent"
- set hidden = 1
-
- if(!possible_a_intents || !possible_a_intents.len)
- return
-
- if(input in possible_a_intents)
- a_intent = input
- else
- var/current_intent = possible_a_intents.Find(a_intent)
-
- if(!current_intent)
- // Failsafe. Just in case some badmin was playing with VV.
- current_intent = 1
-
- if(input == INTENT_HOTKEY_RIGHT)
- current_intent += 1
- if(input == INTENT_HOTKEY_LEFT)
- current_intent -= 1
-
- // Handle looping
- if(current_intent < 1)
- current_intent = possible_a_intents.len
- if(current_intent > possible_a_intents.len)
- current_intent = 1
-
- a_intent = possible_a_intents[current_intent]
-
- if(hud_used && hud_used.action_intent)
- hud_used.action_intent.icon_state = "[a_intent]"
-
-
-/proc/is_blind(A)
- if(ismob(A))
- var/mob/B = A
- return B.eye_blind
- return FALSE
-
-/mob/proc/hallucinating()
- return FALSE
-
-/proc/is_special_character(mob/M) // returns 1 for special characters and 2 for heroes of gamemode //moved out of admins.dm because things other than admin procs were calling this.
- if(!SSticker.HasRoundStarted())
- return FALSE
- if(!istype(M))
- return FALSE
- if(issilicon(M))
- if(iscyborg(M)) //For cyborgs, returns 1 if the cyborg has a law 0 and special_role. Returns 0 if the borg is merely slaved to an AI traitor.
- return FALSE
- else if(isAI(M))
- var/mob/living/silicon/ai/A = M
- if(A.laws && A.laws.zeroth && A.mind && A.mind.special_role)
- return TRUE
- return FALSE
- if(M.mind && M.mind.special_role)//If they have a mind and special role, they are some type of traitor or antagonist.
- switch(SSticker.mode.config_tag)
- if("revolution")
- if(is_revolutionary(M))
- return 2
- if("cult")
- if(M.mind in SSticker.mode.cult)
- return 2
- if("nuclear")
- if(M.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE))
- return 2
- if("changeling")
- if(M.mind.has_antag_datum(/datum/antagonist/changeling,TRUE))
- return 2
- if("wizard")
- if(iswizard(M))
- return 2
- if("apprentice")
- if(M.mind in SSticker.mode.apprentices)
- return 2
- if("monkey")
- if(isliving(M))
- var/mob/living/L = M
- if(L.diseases && (locate(/datum/disease/transformation/jungle_fever) in L.diseases))
- return 2
- return TRUE
- if(M.mind && LAZYLEN(M.mind.antag_datums)) //they have an antag datum!
- return TRUE
- return FALSE
-
-/mob/proc/reagent_check(datum/reagent/R) // utilized in the species code
- return 1
-
-/proc/notify_ghosts(var/message, var/ghost_sound = null, var/enter_link = null, var/atom/source = null, var/mutable_appearance/alert_overlay = null, var/action = NOTIFY_JUMP, flashwindow = TRUE, ignore_mapload = TRUE, ignore_key) //Easy notification of ghosts.
- if(ignore_mapload && SSatoms.initialized != INITIALIZATION_INNEW_REGULAR) //don't notify for objects created during a map load
- return
- for(var/mob/dead/observer/O in GLOB.player_list)
- if(O.client)
- if (ignore_key && O.ckey in GLOB.poll_ignore[ignore_key])
- continue
- to_chat(O, "[message][(enter_link) ? " [enter_link]" : ""]")
- if(ghost_sound)
- SEND_SOUND(O, sound(ghost_sound))
- if(flashwindow)
- window_flash(O.client)
- if(source)
- var/obj/screen/alert/notify_action/A = O.throw_alert("[REF(source)]_notify_action", /obj/screen/alert/notify_action)
- if(A)
- if(O.client.prefs && O.client.prefs.UI_style)
- A.icon = ui_style2icon(O.client.prefs.UI_style)
- A.desc = message
- A.action = action
- A.target = source
- if(!alert_overlay)
- alert_overlay = new(source)
- alert_overlay.layer = FLOAT_LAYER
- alert_overlay.plane = FLOAT_PLANE
- A.add_overlay(alert_overlay)
-
-/proc/item_heal_robotic(mob/living/carbon/human/H, mob/user, brute_heal, burn_heal)
- var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected))
- if(affecting && affecting.status == BODYPART_ROBOTIC)
- var/dam //changes repair text based on how much brute/burn was supplied
- if(brute_heal > burn_heal)
- dam = 1
- else
- dam = 0
- if((brute_heal > 0 && affecting.brute_dam > 0) || (burn_heal > 0 && affecting.burn_dam > 0))
- if(affecting.heal_damage(brute_heal, burn_heal, 0, TRUE, FALSE))
- H.update_damage_overlays()
- user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.name].", \
- "You fix some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.name].")
- return 1 //successful heal
- else
- to_chat(user, "[affecting] is already in good condition!")
-
-
-/proc/IsAdminGhost(var/mob/user)
- if(!user) //Are they a mob? Auto interface updates call this with a null src
- return
- if(!user.client) // Do they have a client?
- return
- if(!isobserver(user)) // Are they a ghost?
- return
- if(!check_rights_for(user.client, R_ADMIN)) // Are they allowed?
- return
- if(!user.client.AI_Interact) // Do they have it enabled?
- return
- return TRUE
-
-/proc/offer_control(mob/M)
- to_chat(M, "Control of your mob has been offered to dead players.")
- if(usr)
- log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.")
- message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts")
- var/poll_message = "Do you want to play as [M.real_name]?"
- if(M.mind && M.mind.assigned_role)
- poll_message = "[poll_message] Job:[M.mind.assigned_role]."
- if(M.mind && M.mind.special_role)
- poll_message = "[poll_message] Status:[M.mind.special_role]."
- else if(M.mind)
- var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/)
- if(A)
- poll_message = "[poll_message] Status:[A.name]."
- var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M)
-
- if(LAZYLEN(candidates))
- var/mob/dead/observer/C = pick(candidates)
- to_chat(M, "Your mob has been taken over by a ghost!")
- message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(M)])")
- M.ghostize(0)
- M.key = C.key
- return TRUE
- else
- to_chat(M, "There were no ghosts willing to take control.")
- message_admins("No ghosts were willing to take control of [ADMIN_LOOKUPFLW(M)])")
- return FALSE
-
-/mob/proc/is_flying(mob/M = src)
- if(M.movement_type & FLYING)
- return 1
- else
- return 0
-
-/mob/proc/click_random_mob()
- var/list/nearby_mobs = list()
- for(var/mob/living/L in range(1, src))
- if(L!=src)
- nearby_mobs |= L
- if(nearby_mobs.len)
- var/mob/living/T = pick(nearby_mobs)
- ClickOn(T)
-
-// Logs a message in a mob's individual log, and in the global logs as well if log_globally is true
-/mob/log_message(message, message_type, color=null, log_globally = TRUE)
- if(!LAZYLEN(message))
- stack_trace("Empty message")
- return
-
- // Cannot use the list as a map if the key is a number, so we stringify it (thank you BYOND)
- var/smessage_type = num2text(message_type)
-
- if(client)
- if(!islist(client.player_details.logging[smessage_type]))
- client.player_details.logging[smessage_type] = list()
-
- if(!islist(logging[smessage_type]))
- logging[smessage_type] = list()
-
- var/colored_message = message
- if(color)
- if(color[1] == "#")
- colored_message = "[message]"
- else
- colored_message = "[message]"
-
- var/list/timestamped_message = list("[LAZYLEN(logging[smessage_type]) + 1]\[[TIME_STAMP("hh:mm:ss", FALSE)]\] [key_name(src)] [loc_name(src)]" = colored_message)
-
- logging[smessage_type] += timestamped_message
-
- if(client)
- client.player_details.logging[smessage_type] += timestamped_message
-
- ..()
-
-/mob/proc/can_hear()
- . = TRUE
-
-/proc/bloodtype_to_color(var/type)
- . = BLOOD_COLOR_HUMAN
- switch(type)
- if("U")//Universal blood; a bit orange
- . = BLOOD_COLOR_UNIVERSAL
- if("SY")//Synthetics blood; blue
- . = BLOOD_COLOR_SYNTHETIC
- if("L")//lizard, a bit pink/purple
- . = BLOOD_COLOR_LIZARD
- if("X*")//xeno blood; greenish yellow
- . = BLOOD_COLOR_XENO
- if("HF")// Oil/Hydraulic blood. something something why not. reee
- . = BLOOD_COLOR_OIL
- if("GEL")// slimepeople blood, rgb 0, 255, 144
- . = BLOOD_COLOR_SLIME
- if("BUG")// yellowish, like, y'know bug guts I guess.
- . = BLOOD_COLOR_BUG
- //add more stuff to the switch if you have more blood colors for different types
- // the defines are in _DEFINES/misc.dm
-
-//gets ID card object from special clothes slot or null.
-/mob/proc/get_idcard(hand_first = TRUE)
- var/obj/item/held_item = get_active_held_item()
- . = held_item?.GetID()
- if(!.) //If so, then check the inactive hand
- held_item = get_inactive_held_item()
- . = held_item?.GetID()
-
-/mob/proc/get_id_in_hand()
- var/obj/item/held_item = get_active_held_item()
- if(!held_item)
- return
- return held_item.GetID()
-
-//Can the mob see reagents inside of containers?
-/mob/proc/can_see_reagents()
- return stat == DEAD || has_unlimited_silicon_privilege //Dead guys and silicons can always see reagents
+
+// see _DEFINES/is_helpers.dm for mob type checks
+
+/mob/proc/lowest_buckled_mob()
+ . = src
+ if(buckled && ismob(buckled))
+ var/mob/Buckled = buckled
+ . = Buckled.lowest_buckled_mob()
+
+/proc/check_zone(zone)
+ if(!zone)
+ return BODY_ZONE_CHEST
+ switch(zone)
+ if(BODY_ZONE_PRECISE_EYES)
+ zone = BODY_ZONE_HEAD
+ if(BODY_ZONE_PRECISE_MOUTH)
+ zone = BODY_ZONE_HEAD
+ if(BODY_ZONE_PRECISE_L_HAND)
+ zone = BODY_ZONE_L_ARM
+ if(BODY_ZONE_PRECISE_R_HAND)
+ zone = BODY_ZONE_R_ARM
+ if(BODY_ZONE_PRECISE_L_FOOT)
+ zone = BODY_ZONE_L_LEG
+ if(BODY_ZONE_PRECISE_R_FOOT)
+ zone = BODY_ZONE_R_LEG
+ if(BODY_ZONE_PRECISE_GROIN)
+ zone = BODY_ZONE_CHEST
+ return zone
+
+
+/proc/ran_zone(zone, probability = 80)
+ if(prob(probability))
+ zone = check_zone(zone)
+ else
+ zone = pickweight(list(BODY_ZONE_HEAD = 6, BODY_ZONE_CHEST = 6, BODY_ZONE_L_ARM = 22, BODY_ZONE_R_ARM = 22, BODY_ZONE_L_LEG = 22, BODY_ZONE_R_LEG = 22))
+ return zone
+
+/proc/above_neck(zone)
+ var/list/zones = list(BODY_ZONE_HEAD, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_PRECISE_EYES)
+ if(zones.Find(zone))
+ return 1
+ else
+ return 0
+
+/proc/stars(n, pr)
+ n = html_encode(n)
+ if (pr == null)
+ pr = 25
+ if (pr <= 0)
+ return null
+ else
+ if (pr >= 100)
+ return n
+ var/te = n
+ var/t = ""
+ n = length(n)
+ var/p = null
+ p = 1
+ while(p <= n)
+ if ((copytext(te, p, p + 1) == " " || prob(pr)))
+ t = text("[][]", t, copytext(te, p, p + 1))
+ else
+ t = text("[]*", t)
+ p++
+ return sanitize(t)
+
+/proc/slur(n,var/strength=50)
+ strength = min(strength,50)
+ var/phrase = html_decode(n)
+ var/leng = length(phrase)
+ var/counter=length(phrase)
+ var/newphrase=""
+ var/newletter=""
+ while(counter>=1)
+ newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
+ if(rand(1,100)<=strength*0.5)
+ if(lowertext(newletter)=="o")
+ newletter="u"
+ if(lowertext(newletter)=="s")
+ newletter="ch"
+ if(lowertext(newletter)=="a")
+ newletter="ah"
+ if(lowertext(newletter)=="u")
+ newletter="oo"
+ if(lowertext(newletter)=="c")
+ newletter="k"
+ if(rand(1,100) <= strength*0.25)
+ if(newletter==" ")
+ newletter="...huuuhhh..."
+ if(newletter==".")
+ newletter=" *BURP*."
+ if(rand(1,100) <= strength*0.5)
+ if(rand(1,5) == 1)
+ newletter+="'"
+ if(rand(1,5) == 1)
+ newletter+="[newletter]"
+ if(rand(1,5) == 1)
+ newletter+="[newletter][newletter]"
+ newphrase+="[newletter]";counter-=1
+ return newphrase
+
+
+/proc/cultslur(n) // Inflicted on victims of a stun talisman
+ var/phrase = html_decode(n)
+ var/leng = length(phrase)
+ var/counter=length(phrase)
+ var/newphrase=""
+ var/newletter=""
+ while(counter>=1)
+ newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
+ if(rand(1,2)==2)
+ if(lowertext(newletter)=="o")
+ newletter="u"
+ if(lowertext(newletter)=="t")
+ newletter="ch"
+ if(lowertext(newletter)=="a")
+ newletter="ah"
+ if(lowertext(newletter)=="u")
+ newletter="oo"
+ if(lowertext(newletter)=="c")
+ newletter=" NAR "
+ if(lowertext(newletter)=="s")
+ newletter=" SIE "
+ if(rand(1,4)==4)
+ if(newletter==" ")
+ newletter=" no hope... "
+ if(newletter=="H")
+ newletter=" IT COMES... "
+
+ switch(rand(1,15))
+ if(1)
+ newletter="'"
+ if(2)
+ newletter+="agn"
+ if(3)
+ newletter="fth"
+ if(4)
+ newletter="nglu"
+ if(5)
+ newletter="glor"
+ newphrase+="[newletter]";counter-=1
+ return newphrase
+
+
+/proc/stutter(n)
+ var/te = html_decode(n)
+ var/t = ""//placed before the message. Not really sure what it's for.
+ n = length(n)//length of the entire word
+ var/p = null
+ p = 1//1 is the start of any word
+ while(p <= n)//while P, which starts at 1 is less or equal to N which is the length.
+ var/n_letter = copytext(te, p, p + 1)//copies text from a certain distance. In this case, only one letter at a time.
+ if (prob(80) && (ckey(n_letter) in list("b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z")))
+ if (prob(10))
+ n_letter = text("[n_letter]-[n_letter]-[n_letter]-[n_letter]")//replaces the current letter with this instead.
+ else
+ if (prob(20))
+ n_letter = text("[n_letter]-[n_letter]-[n_letter]")
+ else
+ if (prob(5))
+ n_letter = null
+ else
+ n_letter = text("[n_letter]-[n_letter]")
+ t = text("[t][n_letter]")//since the above is ran through for each letter, the text just adds up back to the original word.
+ p++//for each letter p is increased to find where the next letter will be.
+ return copytext(sanitize(t),1,MAX_MESSAGE_LEN)
+
+/proc/derpspeech(message, stuttering)
+ message = replacetext(message, " am ", " ")
+ message = replacetext(message, " is ", " ")
+ message = replacetext(message, " are ", " ")
+ message = replacetext(message, "you", "u")
+ message = replacetext(message, "help", "halp")
+ message = replacetext(message, "grief", "grife")
+ message = replacetext(message, "space", "spess")
+ message = replacetext(message, "carp", "crap")
+ message = replacetext(message, "reason", "raisin")
+ if(prob(50))
+ message = uppertext(message)
+ message += "[stutter(pick("!", "!!", "!!!"))]"
+ if(!stuttering && prob(15))
+ message = stutter(message)
+ return message
+
+
+/proc/Gibberish(t, p)//t is the inputted message, and any value higher than 70 for p will cause letters to be replaced instead of added
+ /* Turn text into complete gibberish! */
+ var/returntext = ""
+ for(var/i = 1, i <= length(t), i++)
+
+ var/letter = copytext(t, i, i+1)
+ if(prob(50))
+ if(p >= 70)
+ letter = ""
+
+ for(var/j = 1, j <= rand(0, 2), j++)
+ letter += pick("#","@","*","&","%","$","/", "<", ">", ";","*","*","*","*","*","*","*")
+
+ returntext += letter
+
+ return returntext
+
+
+/proc/ninjaspeak(n) //NINJACODE
+/*
+The difference with stutter is that this proc can stutter more than 1 letter
+The issue here is that anything that does not have a space is treated as one word (in many instances). For instance, "LOOKING," is a word, including the comma.
+It's fairly easy to fix if dealing with single letters but not so much with compounds of letters./N
+*/
+ var/te = html_decode(n)
+ var/t = ""
+ n = length(n)
+ var/p = 1
+ while(p <= n)
+ var/n_letter
+ var/n_mod = rand(1,4)
+ if(p+n_mod>n+1)
+ n_letter = copytext(te, p, n+1)
+ else
+ n_letter = copytext(te, p, p+n_mod)
+ if (prob(50))
+ if (prob(30))
+ n_letter = text("[n_letter]-[n_letter]-[n_letter]")
+ else
+ n_letter = text("[n_letter]-[n_letter]")
+ else
+ n_letter = text("[n_letter]")
+ t = text("[t][n_letter]")
+ p=p+n_mod
+ return copytext(sanitize(t),1,MAX_MESSAGE_LEN)
+
+
+/proc/shake_camera(mob/M, duration, strength=1)
+ if(!M || !M.client || duration < 1)
+ return
+ var/client/C = M.client
+ var/oldx = C.pixel_x
+ var/oldy = C.pixel_y
+ var/max = strength*world.icon_size
+ var/min = -(strength*world.icon_size)
+
+ for(var/i in 0 to duration-1)
+ if (i == 0)
+ animate(C, pixel_x=rand(min,max), pixel_y=rand(min,max), time=1)
+ else
+ animate(pixel_x=rand(min,max), pixel_y=rand(min,max), time=1)
+ animate(pixel_x=oldx, pixel_y=oldy, time=1)
+
+
+
+/proc/findname(msg)
+ if(!istext(msg))
+ msg = "[msg]"
+ for(var/i in GLOB.mob_list)
+ var/mob/M = i
+ if(M.real_name == msg)
+ return M
+ return 0
+
+/mob/proc/first_name()
+ var/static/regex/firstname = new("^\[^\\s-\]+") //First word before whitespace or "-"
+ firstname.Find(real_name)
+ return firstname.match
+
+
+//change a mob's act-intent. Input the intent as a string such as "help" or use "right"/"left
+/mob/verb/a_intent_change(input as text)
+ set name = "a-intent"
+ set hidden = 1
+
+ if(!possible_a_intents || !possible_a_intents.len)
+ return
+
+ if(input in possible_a_intents)
+ a_intent = input
+ else
+ var/current_intent = possible_a_intents.Find(a_intent)
+
+ if(!current_intent)
+ // Failsafe. Just in case some badmin was playing with VV.
+ current_intent = 1
+
+ if(input == INTENT_HOTKEY_RIGHT)
+ current_intent += 1
+ if(input == INTENT_HOTKEY_LEFT)
+ current_intent -= 1
+
+ // Handle looping
+ if(current_intent < 1)
+ current_intent = possible_a_intents.len
+ if(current_intent > possible_a_intents.len)
+ current_intent = 1
+
+ a_intent = possible_a_intents[current_intent]
+
+ if(hud_used && hud_used.action_intent)
+ hud_used.action_intent.icon_state = "[a_intent]"
+
+
+/proc/is_blind(A)
+ if(ismob(A))
+ var/mob/B = A
+ return B.eye_blind
+ return FALSE
+
+/mob/proc/hallucinating()
+ return FALSE
+
+/proc/is_special_character(mob/M) // returns 1 for special characters and 2 for heroes of gamemode //moved out of admins.dm because things other than admin procs were calling this.
+ if(!SSticker.HasRoundStarted())
+ return FALSE
+ if(!istype(M))
+ return FALSE
+ if(issilicon(M))
+ if(iscyborg(M)) //For cyborgs, returns 1 if the cyborg has a law 0 and special_role. Returns 0 if the borg is merely slaved to an AI traitor.
+ return FALSE
+ else if(isAI(M))
+ var/mob/living/silicon/ai/A = M
+ if(A.laws && A.laws.zeroth && A.mind && A.mind.special_role)
+ return TRUE
+ return FALSE
+ if(M.mind && M.mind.special_role)//If they have a mind and special role, they are some type of traitor or antagonist.
+ switch(SSticker.mode.config_tag)
+ if("revolution")
+ if(is_revolutionary(M))
+ return 2
+ if("cult")
+ if(M.mind in SSticker.mode.cult)
+ return 2
+ if("nuclear")
+ if(M.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE))
+ return 2
+ if("changeling")
+ if(M.mind.has_antag_datum(/datum/antagonist/changeling,TRUE))
+ return 2
+ if("wizard")
+ if(iswizard(M))
+ return 2
+ if("apprentice")
+ if(M.mind in SSticker.mode.apprentices)
+ return 2
+ if("monkey")
+ if(isliving(M))
+ var/mob/living/L = M
+ if(L.diseases && (locate(/datum/disease/transformation/jungle_fever) in L.diseases))
+ return 2
+ return TRUE
+ if(M.mind && LAZYLEN(M.mind.antag_datums)) //they have an antag datum!
+ return TRUE
+ return FALSE
+
+/mob/proc/reagent_check(datum/reagent/R) // utilized in the species code
+ return 1
+
+/proc/notify_ghosts(var/message, var/ghost_sound = null, var/enter_link = null, var/atom/source = null, var/mutable_appearance/alert_overlay = null, var/action = NOTIFY_JUMP, flashwindow = TRUE, ignore_mapload = TRUE, ignore_key) //Easy notification of ghosts.
+ if(ignore_mapload && SSatoms.initialized != INITIALIZATION_INNEW_REGULAR) //don't notify for objects created during a map load
+ return
+ for(var/mob/dead/observer/O in GLOB.player_list)
+ if(O.client)
+ if (ignore_key && O.ckey in GLOB.poll_ignore[ignore_key])
+ continue
+ to_chat(O, "[message][(enter_link) ? " [enter_link]" : ""]")
+ if(ghost_sound)
+ SEND_SOUND(O, sound(ghost_sound))
+ if(flashwindow)
+ window_flash(O.client)
+ if(source)
+ var/obj/screen/alert/notify_action/A = O.throw_alert("[REF(source)]_notify_action", /obj/screen/alert/notify_action)
+ if(A)
+ if(O.client.prefs && O.client.prefs.UI_style)
+ A.icon = ui_style2icon(O.client.prefs.UI_style)
+ A.desc = message
+ A.action = action
+ A.target = source
+ if(!alert_overlay)
+ alert_overlay = new(source)
+ alert_overlay.layer = FLOAT_LAYER
+ alert_overlay.plane = FLOAT_PLANE
+ A.add_overlay(alert_overlay)
+
+/proc/item_heal_robotic(mob/living/carbon/human/H, mob/user, brute_heal, burn_heal)
+ var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected))
+ if(affecting && affecting.status == BODYPART_ROBOTIC)
+ var/dam //changes repair text based on how much brute/burn was supplied
+ if(brute_heal > burn_heal)
+ dam = 1
+ else
+ dam = 0
+ if((brute_heal > 0 && affecting.brute_dam > 0) || (burn_heal > 0 && affecting.burn_dam > 0))
+ if(affecting.heal_damage(brute_heal, burn_heal, 0, TRUE, FALSE))
+ H.update_damage_overlays()
+ user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.name].", \
+ "You fix some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.name].")
+ return 1 //successful heal
+ else
+ to_chat(user, "[affecting] is already in good condition!")
+
+
+/proc/IsAdminGhost(var/mob/user)
+ if(!user) //Are they a mob? Auto interface updates call this with a null src
+ return
+ if(!user.client) // Do they have a client?
+ return
+ if(!isobserver(user)) // Are they a ghost?
+ return
+ if(!check_rights_for(user.client, R_ADMIN)) // Are they allowed?
+ return
+ if(!user.client.AI_Interact) // Do they have it enabled?
+ return
+ return TRUE
+
+/proc/offer_control(mob/M)
+ to_chat(M, "Control of your mob has been offered to dead players.")
+ if(usr)
+ log_admin("[key_name(usr)] has offered control of ([key_name(M)]) to ghosts.")
+ message_admins("[key_name_admin(usr)] has offered control of ([ADMIN_LOOKUPFLW(M)]) to ghosts")
+ var/poll_message = "Do you want to play as [M.real_name]?"
+ if(M.mind && M.mind.assigned_role)
+ poll_message = "[poll_message] Job:[M.mind.assigned_role]."
+ if(M.mind && M.mind.special_role)
+ poll_message = "[poll_message] Status:[M.mind.special_role]."
+ else if(M.mind)
+ var/datum/antagonist/A = M.mind.has_antag_datum(/datum/antagonist/)
+ if(A)
+ poll_message = "[poll_message] Status:[A.name]."
+ var/list/mob/dead/observer/candidates = pollCandidatesForMob(poll_message, ROLE_PAI, null, FALSE, 100, M)
+
+ if(LAZYLEN(candidates))
+ var/mob/dead/observer/C = pick(candidates)
+ to_chat(M, "Your mob has been taken over by a ghost!")
+ message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(M)])")
+ M.ghostize(0)
+ M.key = C.key
+ return TRUE
+ else
+ to_chat(M, "There were no ghosts willing to take control.")
+ message_admins("No ghosts were willing to take control of [ADMIN_LOOKUPFLW(M)])")
+ return FALSE
+
+/mob/proc/is_flying(mob/M = src)
+ if(M.movement_type & FLYING)
+ return 1
+ else
+ return 0
+
+/mob/proc/click_random_mob()
+ var/list/nearby_mobs = list()
+ for(var/mob/living/L in range(1, src))
+ if(L!=src)
+ nearby_mobs |= L
+ if(nearby_mobs.len)
+ var/mob/living/T = pick(nearby_mobs)
+ ClickOn(T)
+
+// Logs a message in a mob's individual log, and in the global logs as well if log_globally is true
+/mob/log_message(message, message_type, color=null, log_globally = TRUE)
+ if(!LAZYLEN(message))
+ stack_trace("Empty message")
+ return
+
+ // Cannot use the list as a map if the key is a number, so we stringify it (thank you BYOND)
+ var/smessage_type = num2text(message_type)
+
+ if(client)
+ if(!islist(client.player_details.logging[smessage_type]))
+ client.player_details.logging[smessage_type] = list()
+
+ if(!islist(logging[smessage_type]))
+ logging[smessage_type] = list()
+
+ var/colored_message = message
+ if(color)
+ if(color[1] == "#")
+ colored_message = "[message]"
+ else
+ colored_message = "[message]"
+
+ var/list/timestamped_message = list("[LAZYLEN(logging[smessage_type]) + 1]\[[TIME_STAMP("hh:mm:ss", FALSE)]\] [key_name(src)] [loc_name(src)]" = colored_message)
+
+ logging[smessage_type] += timestamped_message
+
+ if(client)
+ client.player_details.logging[smessage_type] += timestamped_message
+
+ ..()
+
+/mob/proc/can_hear()
+ . = TRUE
+
+//Examine text for traits shared by multiple types. I wish examine was less copypasted.
+/mob/proc/common_trait_examine()
+ if(HAS_TRAIT(src, TRAIT_DISSECTED))
+ var/dissectionmsg = ""
+ if(HAS_TRAIT_FROM(src, TRAIT_DISSECTED,"Extraterrestrial Dissection"))
+ dissectionmsg = " via Extraterrestrial Dissection. It is no longer worth experimenting on"
+ else if(HAS_TRAIT_FROM(src, TRAIT_DISSECTED,"Experimental Dissection"))
+ dissectionmsg = " via Experimental Dissection"
+ else if(HAS_TRAIT_FROM(src, TRAIT_DISSECTED,"Thorough Dissection"))
+ dissectionmsg = " via Thorough Dissection"
+ . += "This body has been dissected and analyzed[dissectionmsg].
"
+/proc/bloodtype_to_color(var/type)
+ . = BLOOD_COLOR_HUMAN
+ switch(type)
+ if("U")//Universal blood; a bit orange
+ . = BLOOD_COLOR_UNIVERSAL
+ if("SY")//Synthetics blood; blue
+ . = BLOOD_COLOR_SYNTHETIC
+ if("L")//lizard, a bit pink/purple
+ . = BLOOD_COLOR_LIZARD
+ if("X*")//xeno blood; greenish yellow
+ . = BLOOD_COLOR_XENO
+ if("HF")// Oil/Hydraulic blood. something something why not. reee
+ . = BLOOD_COLOR_OIL
+ if("GEL")// slimepeople blood, rgb 0, 255, 144
+ . = BLOOD_COLOR_SLIME
+ if("BUG")// yellowish, like, y'know bug guts I guess.
+ . = BLOOD_COLOR_BUG
+ //add more stuff to the switch if you have more blood colors for different types
+ // the defines are in _DEFINES/misc.dm
+
+//gets ID card object from special clothes slot or null.
+/mob/proc/get_idcard(hand_first = TRUE)
+ var/obj/item/held_item = get_active_held_item()
+ . = held_item?.GetID()
+ if(!.) //If so, then check the inactive hand
+ held_item = get_inactive_held_item()
+ . = held_item?.GetID()
+
+/mob/proc/get_id_in_hand()
+ var/obj/item/held_item = get_active_held_item()
+ if(!held_item)
+ return
+ return held_item.GetID()
+
+//Can the mob see reagents inside of containers?
+/mob/proc/can_see_reagents()
+ return stat == DEAD || has_unlimited_silicon_privilege //Dead guys and silicons can always see reagents
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index fe88c246..1fd4498b 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -1294,9 +1294,11 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/corazone/on_mob_metabolize(mob/living/M)
..()
ADD_TRAIT(M, TRAIT_STABLEHEART, type)
+ ADD_TRAIT(M, TRAIT_STABLELIVER, type)
/datum/reagent/medicine/corazone/on_mob_end_metabolize(mob/living/M)
REMOVE_TRAIT(M, TRAIT_STABLEHEART, type)
+ REMOVE_TRAIT(M, TRAIT_STABLELIVER, type)
..()
/datum/reagent/medicine/muscle_stimulant
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index abf7f37a..5cc1fcb3 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -749,12 +749,22 @@
var/surgery
/datum/design/surgery/experimental_dissection
- name = "Experimental Dissection"
- desc = "A surgical procedure which deeply analyzes the biology of a corpse, and automatically adds new findings to the research database."
- id = "surgery_exp_dissection"
- surgery = /datum/surgery/advanced/bioware/experimental_dissection
+ name = "Advanced Dissection"
+ desc = "A surgical procedure which analyzes the biology of a corpse, and automatically adds new findings to the research database."
+ id = "surgery_adv_dissection"
+ surgery = /datum/surgery/advanced/experimental_dissection/adv
research_icon_state = "surgery_chest"
+/datum/design/surgery/experimental_dissection/exp
+ name = "Experimental Dissection"
+ id = "surgery_exp_dissection"
+ surgery = /datum/surgery/advanced/experimental_dissection/exp
+
+/datum/design/surgery/experimental_dissection/ext
+ name = "Extraterrestrial Dissection"
+ id = "surgery_ext_dissection"
+ surgery = /datum/surgery/advanced/experimental_dissection/alien
+
/datum/design/surgery/lobotomy
name = "Lobotomy"
desc = "An invasive surgical procedure which guarantees removal of almost all brain traumas, but might cause another permanent trauma in return."
@@ -825,6 +835,13 @@
surgery = /datum/surgery/advanced/bioware/vein_threading
research_icon_state = "surgery_chest"
+/datum/design/surgery/muscled_veins
+ name = "Vein Muscle Membrane"
+ desc = "A surgical procedure which adds a muscled membrane to blood vessels, allowing them to pump blood without a heart."
+ id = "surgery_muscled_veins"
+ surgery = /datum/surgery/advanced/bioware/muscled_veins
+ research_icon_state = "surgery_chest"
+
/datum/design/surgery/ligament_hook
name = "Ligament Hook"
desc = "A surgical procedure which reshapes the connections between torso and limbs, making it so limbs can be attached manually if severed. \
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 4493fe1b..872a5368 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -135,7 +135,7 @@
display_name = "Advanced Surgery"
description = "When simple medicine doesn't cut it."
prereq_ids = list("adv_biotech")
- design_ids = list("surgery_lobotomy", "surgery_reconstruction","surgery_toxinhealing", "organbox", "surgery_exp_dissection")
+ design_ids = list("surgery_lobotomy", "surgery_reconstruction", "surgery_toxinhealing", "organbox", "surgery_adv_dissection")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
@@ -144,7 +144,7 @@
display_name = "Experimental Surgery"
description = "When evolution isn't fast enough."
prereq_ids = list("adv_surgery")
- design_ids = list("surgery_revival","surgery_pacify","surgery_vein_thread","surgery_nerve_splice","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_nerve_ground","surgery_viral_bond")
+ design_ids = list("surgery_revival","surgery_pacify","surgery_vein_thread","surgery_muscled_veins","surgery_nerve_splice","surgery_nerve_ground","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_viral_bond", "surgery_exp_dissection")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
export_price = 5000
@@ -153,7 +153,7 @@
display_name = "Alien Surgery"
description = "Abductors did nothing wrong."
prereq_ids = list("exp_surgery", "alientech")
- design_ids = list("surgery_brainwashing","surgery_zombie")
+ design_ids = list("surgery_brainwashing","surgery_zombie", "surgery_ext_dissection")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000)
export_price = 5000
diff --git a/code/modules/surgery/advanced/bioware/bioware_surgery.dm b/code/modules/surgery/advanced/bioware/bioware_surgery.dm
index 86817b9b..eb8f7391 100644
--- a/code/modules/surgery/advanced/bioware/bioware_surgery.dm
+++ b/code/modules/surgery/advanced/bioware/bioware_surgery.dm
@@ -5,6 +5,8 @@
/datum/surgery/advanced/bioware/can_start(mob/user, mob/living/carbon/human/target)
if(!..())
return FALSE
+ if(!istype(target))
+ return FALSE
for(var/X in target.bioware)
var/datum/bioware/B = X
if(B.mod_type == bioware_target)
diff --git a/code/modules/surgery/advanced/bioware/muscled_veins.dm b/code/modules/surgery/advanced/bioware/muscled_veins.dm
new file mode 100644
index 00000000..81212019
--- /dev/null
+++ b/code/modules/surgery/advanced/bioware/muscled_veins.dm
@@ -0,0 +1,42 @@
+/datum/surgery/advanced/bioware/muscled_veins
+ name = "Vein Muscle Membrane"
+ desc = "A surgical procedure which adds a muscled membrane to blood vessels, allowing them to pump blood without a heart."
+ steps = list(/datum/surgery_step/incise,
+ /datum/surgery_step/retract_skin,
+ /datum/surgery_step/clamp_bleeders,
+ /datum/surgery_step/incise,
+ /datum/surgery_step/incise,
+ /datum/surgery_step/muscled_veins,
+ /datum/surgery_step/close)
+ possible_locs = list(BODY_ZONE_CHEST)
+ bioware_target = BIOWARE_CIRCULATION
+
+/datum/surgery_step/muscled_veins
+ name = "shape vein muscles"
+ accept_hand = TRUE
+ time = 125
+
+/datum/surgery_step/muscled_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You start wrapping muscles around [target]'s circulatory system.",
+ "[user] starts wrapping muscles around [target]'s circulatory system.",
+ "[user] starts manipulating [target]'s circulatory system.")
+
+/datum/surgery_step/muscled_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You reshape [target]'s circulatory system, adding a muscled membrane!",
+ "[user] reshapes [target]'s circulatory system, adding a muscled membrane!",
+ "[user] finishes manipulating [target]'s circulatory system.")
+ new /datum/bioware/muscled_veins(target)
+ return TRUE
+
+/datum/bioware/muscled_veins
+ name = "Threaded Veins"
+ desc = "The circulatory system is woven into a mesh, severely reducing the amount of blood lost from wounds."
+ mod_type = BIOWARE_CIRCULATION
+
+/datum/bioware/muscled_veins/on_gain()
+ ..()
+ ADD_TRAIT(owner, TRAIT_STABLEHEART, "muscled_veins")
+
+/datum/bioware/muscled_veins/on_lose()
+ ..()
+ REMOVE_TRAIT(owner, TRAIT_STABLEHEART, "muscled_veins")
\ No newline at end of file
diff --git a/code/modules/surgery/advanced/brainwashing.dm b/code/modules/surgery/advanced/brainwashing.dm
index a2b50d9b..8596323e 100644
--- a/code/modules/surgery/advanced/brainwashing.dm
+++ b/code/modules/surgery/advanced/brainwashing.dm
@@ -13,8 +13,9 @@
/datum/surgery_step/brainwash,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human)
+ target_mobtypes = list(/mob/living/carbon/human)
possible_locs = list(BODY_ZONE_HEAD)
+
/datum/surgery/advanced/brainwashing/can_start(mob/user, mob/living/carbon/target)
if(!..())
return FALSE
diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm
index 12c5e4da..0f516a39 100644
--- a/code/modules/surgery/advanced/lobotomy.dm
+++ b/code/modules/surgery/advanced/lobotomy.dm
@@ -9,7 +9,7 @@
/datum/surgery_step/lobotomize,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_HEAD)
requires_bodypart_type = 0
/datum/surgery/advanced/lobotomy/can_start(mob/user, mob/living/carbon/target)
diff --git a/code/modules/surgery/advanced/pacification.dm b/code/modules/surgery/advanced/pacification.dm
index d5585d71..93864fc1 100644
--- a/code/modules/surgery/advanced/pacification.dm
+++ b/code/modules/surgery/advanced/pacification.dm
@@ -7,7 +7,8 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/pacify,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_HEAD)
requires_bodypart_type = 0
/datum/surgery/advanced/pacify/can_start(mob/user, mob/living/carbon/target)
diff --git a/code/modules/surgery/advanced/reconstruction.dm b/code/modules/surgery/advanced/reconstruction.dm
index dac94e3b..b3c044a2 100644
--- a/code/modules/surgery/advanced/reconstruction.dm
+++ b/code/modules/surgery/advanced/reconstruction.dm
@@ -11,7 +11,7 @@
/datum/surgery_step/reconstruct,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST)
requires_bodypart_type = 0
diff --git a/code/modules/surgery/advanced/revival.dm b/code/modules/surgery/advanced/revival.dm
index b31a7518..a2d5345e 100644
--- a/code/modules/surgery/advanced/revival.dm
+++ b/code/modules/surgery/advanced/revival.dm
@@ -8,7 +8,8 @@
/datum/surgery_step/incise,
/datum/surgery_step/revive,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_HEAD)
requires_bodypart_type = 0
/datum/surgery/advanced/revival/can_start(mob/user, mob/living/carbon/target)
diff --git a/code/modules/surgery/advanced/toxichealing.dm b/code/modules/surgery/advanced/toxichealing.dm
index ae43b3d5..30dfffd1 100644
--- a/code/modules/surgery/advanced/toxichealing.dm
+++ b/code/modules/surgery/advanced/toxichealing.dm
@@ -11,7 +11,7 @@
/datum/surgery_step/toxichealing,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST)
requires_bodypart_type = 0
diff --git a/code/modules/surgery/advanced/viral_bonding.dm b/code/modules/surgery/advanced/viral_bonding.dm
index 3a144648..45dbb4de 100644
--- a/code/modules/surgery/advanced/viral_bonding.dm
+++ b/code/modules/surgery/advanced/viral_bonding.dm
@@ -7,7 +7,8 @@
/datum/surgery_step/incise,
/datum/surgery_step/viral_bond,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST)
/datum/surgery/advanced/viral_bonding/can_start(mob/user, mob/living/carbon/target)
if(!..())
diff --git a/code/modules/surgery/amputation.dm b/code/modules/surgery/amputation.dm
index 01cf6ae1..d491a3f7 100644
--- a/code/modules/surgery/amputation.dm
+++ b/code/modules/surgery/amputation.dm
@@ -1,7 +1,7 @@
/datum/surgery/amputation
name = "Amputation"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/saw, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/sever_limb)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD)
requires_bodypart_type = 0
/datum/surgery_step/sever_limb
diff --git a/code/modules/surgery/brain_surgery.dm b/code/modules/surgery/brain_surgery.dm
index c553d054..3218e7b3 100644
--- a/code/modules/surgery/brain_surgery.dm
+++ b/code/modules/surgery/brain_surgery.dm
@@ -7,7 +7,8 @@
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/fix_brain,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_HEAD)
requires_bodypart_type = 0
/datum/surgery_step/fix_brain
diff --git a/code/modules/surgery/breast_augmentation.dm b/code/modules/surgery/breast_augmentation.dm
index 10899dc2..a2d05e09 100644
--- a/code/modules/surgery/breast_augmentation.dm
+++ b/code/modules/surgery/breast_augmentation.dm
@@ -1,7 +1,7 @@
/datum/surgery/breast_augmentation
name = "Breast augmentation"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/augment_breasts, /datum/surgery_step/close)
- species = list(/mob/living/carbon/human)
+ target_mobtypes = list(/mob/living/carbon/human)
possible_locs = list(BODY_ZONE_CHEST)
/datum/surgery_step/augment_breasts
diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm
index 4c65b569..e50f8ddc 100644
--- a/code/modules/surgery/cavity_implant.dm
+++ b/code/modules/surgery/cavity_implant.dm
@@ -1,7 +1,7 @@
/datum/surgery/cavity_implant
name = "Cavity implant"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/handle_cavity, /datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST)
//handle cavity
/datum/surgery_step/handle_cavity
diff --git a/code/modules/surgery/core_removal.dm b/code/modules/surgery/core_removal.dm
index 509ec96d..06aa66a1 100644
--- a/code/modules/surgery/core_removal.dm
+++ b/code/modules/surgery/core_removal.dm
@@ -1,39 +1,41 @@
-/datum/surgery/core_removal
- name = "Core removal"
- steps = list(/datum/surgery_step/incise, /datum/surgery_step/extract_core)
- species = list(/mob/living/simple_animal/slime)
- possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD)
-
-/datum/surgery/core_removal/can_start(mob/user, mob/living/target)
- if(target.stat == DEAD)
- return 1
- return 0
-//extract brain
-/datum/surgery_step/extract_core
- name = "extract core"
- implements = list(/obj/item/hemostat = 100, TOOL_CROWBAR = 100)
- time = 16
-
-/datum/surgery_step/extract_core/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, "You begin to extract a core from [target]...",
- "[user] begins to extract a core from [target].",
- "[user] begins to extract a core from [target].")
-
-/datum/surgery_step/extract_core/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- var/mob/living/simple_animal/slime/slime = target
- if(slime.cores > 0)
- slime.cores--
- display_results(user, target, "You successfully extract a core from [target]. [slime.cores] core\s remaining.",
- "[user] successfully extracts a core from [target]!",
- "[user] successfully extracts a core from [target]!")
-
- new slime.coretype(slime.loc)
-
- if(slime.cores <= 0)
- slime.icon_state = "[slime.colour] baby slime dead-nocore"
- return 1
- else
- return 0
- else
- to_chat(user, "There aren't any cores left in [target]!")
- return 1
+/datum/surgery/core_removal
+ name = "Core removal"
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/extract_core)
+ target_mobtypes = list(/mob/living/simple_animal/slime)
+ possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD)
+ lying_required = FALSE
+ ignore_clothes = TRUE
+
+/datum/surgery/core_removal/can_start(mob/user, mob/living/target)
+ if(target.stat == DEAD)
+ return 1
+ return 0
+//extract brain
+/datum/surgery_step/extract_core
+ name = "extract core"
+ implements = list(/obj/item/hemostat = 100, TOOL_CROWBAR = 100)
+ time = 16
+
+/datum/surgery_step/extract_core/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You begin to extract a core from [target]...",
+ "[user] begins to extract a core from [target].",
+ "[user] begins to extract a core from [target].")
+
+/datum/surgery_step/extract_core/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ var/mob/living/simple_animal/slime/slime = target
+ if(slime.cores > 0)
+ slime.cores--
+ display_results(user, target, "You successfully extract a core from [target]. [slime.cores] core\s remaining.",
+ "[user] successfully extracts a core from [target]!",
+ "[user] successfully extracts a core from [target]!")
+
+ new slime.coretype(slime.loc)
+
+ if(slime.cores <= 0)
+ slime.icon_state = "[slime.colour] baby slime dead-nocore"
+ return 1
+ else
+ return 0
+ else
+ to_chat(user, "There aren't any cores left in [target]!")
+ return 1
diff --git a/code/modules/surgery/embalming.dm b/code/modules/surgery/embalming.dm
index 4cc8efe5..329b13bc 100644
--- a/code/modules/surgery/embalming.dm
+++ b/code/modules/surgery/embalming.dm
@@ -5,7 +5,7 @@
/datum/surgery_step/embalming,
/datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST)
requires_bodypart_type = 0
diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm
new file mode 100644
index 00000000..0939511d
--- /dev/null
+++ b/code/modules/surgery/experimental_dissection.dm
@@ -0,0 +1,113 @@
+#define BASE_HUMAN_REWARD 500
+
+/datum/surgery/advanced/experimental_dissection
+ name = "Dissection"
+ desc = "A surgical procedure which analyzes the biology of a corpse, and automatically adds new findings to the research database."
+ steps = list(/datum/surgery_step/incise,
+ /datum/surgery_step/retract_skin,
+ /datum/surgery_step/clamp_bleeders,
+ /datum/surgery_step/dissection,
+ /datum/surgery_step/clamp_bleeders,
+ /datum/surgery_step/close)
+ possible_locs = list(BODY_ZONE_CHEST)
+ target_mobtypes = list(/mob/living) //Feel free to dissect devils but they're magic.
+ replaced_by = /datum/surgery/advanced/experimental_dissection/adv
+ requires_tech = FALSE
+ var/value_multiplier = 1
+
+/datum/surgery/advanced/experimental_dissection/can_start(mob/user, mob/living/target)
+ . = ..()
+ if(HAS_TRAIT_FROM(target, TRAIT_DISSECTED,"[name]"))
+ return FALSE
+ if(target.stat != DEAD)
+ return FALSE
+
+/datum/surgery_step/dissection
+ name = "dissection"
+ implements = list(/obj/item/scalpel/augment = 75, /obj/item/scalpel/advanced = 60, /obj/item/scalpel = 45, /obj/item/kitchen/knife = 20, /obj/item/shard = 10)// special tools not only cut down time but also improve probability, doesn't use TOOL_SCALPEL because different scalpels have different probs
+ time = 125
+ silicons_obey_prob = TRUE
+ repeatable = TRUE
+
+/datum/surgery_step/dissection/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You start dissecting [target].",
+ "[user] starts dissecting [target].",
+ "[user] starts dissecting [target].")
+
+/datum/surgery_step/dissection/proc/check_value(mob/living/target, datum/surgery/advanced/experimental_dissection/ED)
+ var/cost = BASE_HUMAN_REWARD
+ var/multi_surgery_adjust = 0
+
+ //determine bonus applied
+ if(isalienroyal(target))
+ cost = (BASE_HUMAN_REWARD*10)
+ else if(isalienadult(target))
+ cost = (BASE_HUMAN_REWARD*5)
+ else if(ismonkey(target))
+ cost = (BASE_HUMAN_REWARD*0.5)
+ else if(ishuman(target))
+ var/mob/living/carbon/human/H = target
+ if(H?.dna?.species)
+ if(isabductor(H))
+ cost = (BASE_HUMAN_REWARD*4)
+ else if(isgolem(H) || iszombie(H))
+ cost = (BASE_HUMAN_REWARD*3)
+ /*else if(isjellyperson(H) || ispodperson(H)) CITADEL CHANGE: jelly and pod being available roundstart shouldn't give additional points
+ cost = (BASE_HUMAN_REWARD*2)*/
+ else
+ cost = (BASE_HUMAN_REWARD * 0.6)
+
+
+
+ //now we do math for surgeries already done (no double dipping!).
+ for(var/i in typesof(/datum/surgery/advanced/experimental_dissection))
+ var/datum/surgery/advanced/experimental_dissection/cringe = i
+ if(HAS_TRAIT_FROM(target,TRAIT_DISSECTED,"[initial(cringe.name)]"))
+ multi_surgery_adjust = max(multi_surgery_adjust,initial(cringe.value_multiplier)) - 1
+
+ multi_surgery_adjust *= cost
+
+ //multiply by multiplier in surgery
+ cost *= ED.value_multiplier
+ return (cost-multi_surgery_adjust)
+
+/datum/surgery_step/dissection/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ var/points_earned = check_value(target, surgery)
+ display_results(user, target, "You dissect [target], and add your [points_earned] point\s worth of discoveries to the research database!",
+ "[user] dissects [target], discovering [points_earned] point\s of data!",
+ "[user] dissects [target]!")
+ SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points_earned))
+ var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
+ target.apply_damage(80, BRUTE, L)
+ ADD_TRAIT(target, TRAIT_DISSECTED, "[surgery.name]")
+ repeatable = FALSE
+ return TRUE
+
+/datum/surgery_step/dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You dissect [target], but do not find anything particularly interesting.",
+ "[user] dissects [target], however it seems [user.p_they()] didn't find anything useful.",
+ "[user] dissects [target], but looks a little dissapointed.")
+ SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = (round(check_value(target, surgery) * 0.01))))
+ var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
+ target.apply_damage(80, BRUTE, L)
+ return TRUE
+
+/datum/surgery/advanced/experimental_dissection/adv
+ name = "Thorough Dissection"
+ value_multiplier = 2
+ replaced_by = /datum/surgery/advanced/experimental_dissection/exp
+ requires_tech = TRUE
+
+/datum/surgery/advanced/experimental_dissection/exp
+ name = "Experimental Dissection"
+ value_multiplier = 5
+ replaced_by = /datum/surgery/advanced/experimental_dissection/alien
+ requires_tech = TRUE
+
+/datum/surgery/advanced/experimental_dissection/alien
+ name = "Extraterrestrial Dissection"
+ value_multiplier = 10
+ requires_tech = TRUE
+ replaced_by = null
+
+//#undef EXPDIS_FAIL_MSG
diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm
index 16bbceb9..45f24070 100644
--- a/code/modules/surgery/eye_surgery.dm
+++ b/code/modules/surgery/eye_surgery.dm
@@ -1,45 +1,45 @@
-/datum/surgery/eye_surgery
- name = "Eye surgery"
- steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/fix_eyes, /datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
- possible_locs = list(BODY_ZONE_PRECISE_EYES)
- requires_bodypart_type = 0
-//fix eyes
-/datum/surgery_step/fix_eyes
- name = "fix eyes"
- implements = list(/obj/item/hemostat = 100, TOOL_SCREWDRIVER = 45, /obj/item/pen = 25)
- time = 64
-/datum/surgery/eye_surgery/can_start(mob/user, mob/living/carbon/target)
- var/obj/item/organ/eyes/E = target.getorganslot(ORGAN_SLOT_EYES)
- if(!E)
- to_chat(user, "It's hard to do surgery on someone's eyes when [target.p_they()] [target.p_do()]n't have any.")
- return FALSE
- return TRUE
-
-/datum/surgery_step/fix_eyes/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, "You begin to fix [target]'s eyes...",
- "[user] begins to fix [target]'s eyes.",
- "[user] begins to perform surgery on [target]'s eyes.")
-
-/datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, "You succeed in fixing [target]'s eyes.",
- "[user] successfully fixes [target]'s eyes!",
- "[user] completes the surgery on [target]'s eyes.")
- target.cure_blind(list(EYE_DAMAGE))
- target.set_blindness(0)
- target.cure_nearsighted(list(EYE_DAMAGE))
- target.blur_eyes(35) //this will fix itself slowly.
- target.set_eye_damage(0)
- return TRUE
-
-/datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(target.getorgan(/obj/item/organ/brain))
- display_results(user, target, "You accidentally stab [target] right in the brain!",
- "[user] accidentally stabs [target] right in the brain!",
- "[user] accidentally stabs [target] right in the brain!")
- target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 70)
- else
- display_results(user, target, "You accidentally stab [target] right in the brain! Or would have, if [target] had a brain.",
- "[user] accidentally stabs [target] right in the brain! Or would have, if [target] had a brain.",
- "[user] accidentally stabs [target] right in the brain!")
- return FALSE
+/datum/surgery/eye_surgery
+ name = "Eye surgery"
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/retract_skin, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/fix_eyes, /datum/surgery_step/close)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ possible_locs = list(BODY_ZONE_PRECISE_EYES)
+ requires_bodypart_type = 0
+//fix eyes
+/datum/surgery_step/fix_eyes
+ name = "fix eyes"
+ implements = list(/obj/item/hemostat = 100, TOOL_SCREWDRIVER = 45, /obj/item/pen = 25)
+ time = 64
+/datum/surgery/eye_surgery/can_start(mob/user, mob/living/carbon/target)
+ var/obj/item/organ/eyes/E = target.getorganslot(ORGAN_SLOT_EYES)
+ if(!E)
+ to_chat(user, "It's hard to do surgery on someone's eyes when [target.p_they()] [target.p_do()]n't have any.")
+ return FALSE
+ return TRUE
+
+/datum/surgery_step/fix_eyes/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You begin to fix [target]'s eyes...",
+ "[user] begins to fix [target]'s eyes.",
+ "[user] begins to perform surgery on [target]'s eyes.")
+
+/datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You succeed in fixing [target]'s eyes.",
+ "[user] successfully fixes [target]'s eyes!",
+ "[user] completes the surgery on [target]'s eyes.")
+ target.cure_blind(list(EYE_DAMAGE))
+ target.set_blindness(0)
+ target.cure_nearsighted(list(EYE_DAMAGE))
+ target.blur_eyes(35) //this will fix itself slowly.
+ target.set_eye_damage(0)
+ return TRUE
+
+/datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ if(target.getorgan(/obj/item/organ/brain))
+ display_results(user, target, "You accidentally stab [target] right in the brain!",
+ "[user] accidentally stabs [target] right in the brain!",
+ "[user] accidentally stabs [target] right in the brain!")
+ target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 70)
+ else
+ display_results(user, target, "You accidentally stab [target] right in the brain! Or would have, if [target] had a brain.",
+ "[user] accidentally stabs [target] right in the brain! Or would have, if [target] had a brain.",
+ "[user] accidentally stabs [target] right in the brain!")
+ return FALSE
diff --git a/code/modules/surgery/graft_synthtissue.dm b/code/modules/surgery/graft_synthtissue.dm
index 97484301..b76c2560 100644
--- a/code/modules/surgery/graft_synthtissue.dm
+++ b/code/modules/surgery/graft_synthtissue.dm
@@ -4,7 +4,7 @@
/datum/surgery/graft_synthtissue
name = "Graft synthtissue"
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES)
steps = list(
/datum/surgery_step/incise,
diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm
index ff7d55db..f52bf971 100644
--- a/code/modules/surgery/helpers.dm
+++ b/code/modules/surgery/helpers.dm
@@ -1,171 +1,175 @@
-/proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user)
- if(!istype(M))
- return
-
- var/mob/living/carbon/C
- var/obj/item/bodypart/affecting
- var/selected_zone = user.zone_selected
-
- if(iscarbon(M))
- C = M
- affecting = C.get_bodypart(check_zone(selected_zone))
-
- if(!M.lying && !isslime(M)) //if they're prone or a slime
- return
-
- var/datum/surgery/current_surgery
-
- for(var/datum/surgery/S in M.surgeries)
- if(S.location == selected_zone)
- current_surgery = S
-
- if(!current_surgery)
- var/list/all_surgeries = GLOB.surgeries_list.Copy()
- var/list/available_surgeries = list()
-
- for(var/datum/surgery/S in all_surgeries)
- if(!S.possible_locs.Find(selected_zone))
- continue
- if(affecting)
- if(!S.requires_bodypart)
- continue
- if(S.requires_bodypart_type && affecting.status != S.requires_bodypart_type)
- continue
- if(S.requires_real_bodypart && affecting.is_pseudopart)
- continue
- else if(C && S.requires_bodypart) //mob with no limb in surgery zone when we need a limb
- continue
- if(!S.can_start(user, M))
- continue
- for(var/path in S.species)
- if(istype(M, path))
- available_surgeries[S.name] = S
- break
-
- var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries
- if(P && user && user.Adjacent(M) && (I in user))
- var/datum/surgery/S = available_surgeries[P]
-
- for(var/datum/surgery/other in M.surgeries)
- if(other.location == S.location)
- return //during the input() another surgery was started at the same location.
-
- //we check that the surgery is still doable after the input() wait.
- if(C)
- affecting = C.get_bodypart(check_zone(selected_zone))
- if(affecting)
- if(!S.requires_bodypart)
- return
- if(S.requires_bodypart_type && affecting.status != S.requires_bodypart_type)
- return
- else if(C && S.requires_bodypart)
- return
- if(!S.can_start(user, M))
- return
-
- if(S.ignore_clothes || get_location_accessible(M, selected_zone))
- var/datum/surgery/procedure = new S.type(M, selected_zone, affecting)
- user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for surgery.", \
- "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].")
-
- log_combat(user, M, "operated on", null, "(OPERATION TYPE: [procedure.name]) (TARGET AREA: [selected_zone])")
- else
- to_chat(user, "You need to expose [M]'s [parse_zone(selected_zone)] first!")
-
- else if(!current_surgery.step_in_progress)
- attempt_cancel_surgery(current_surgery, I, M, user)
-
- return 1
-
-/proc/attempt_cancel_surgery(datum/surgery/S, obj/item/I, mob/living/M, mob/user)
- var/selected_zone = user.zone_selected
- if(S.status == 1)
- M.surgeries -= S
- user.visible_message("[user] removes [I] from [M]'s [parse_zone(selected_zone)].", \
- "You remove [I] from [M]'s [parse_zone(selected_zone)].")
- qdel(S)
- else if(S.can_cancel)
- var/close_tool_type = /obj/item/cautery
- var/obj/item/close_tool = user.get_inactive_held_item()
- var/is_robotic = S.requires_bodypart_type == BODYPART_ROBOTIC
- if(is_robotic)
- close_tool_type = /obj/item/screwdriver
- if(istype(close_tool, close_tool_type) || iscyborg(user))
- M.surgeries -= S
- user.visible_message("[user] closes [M]'s [parse_zone(selected_zone)] with [close_tool] and removes [I].", \
- "You close [M]'s [parse_zone(selected_zone)] with [close_tool] and remove [I].")
- qdel(S)
- else
- to_chat(user, "You need to hold a [is_robotic ? "screwdriver" : "cautery"] in your inactive hand to stop [M]'s surgery!")
-
-/proc/get_location_modifier(mob/M)
- var/turf/T = get_turf(M)
- if(locate(/obj/structure/table/optable, T))
- return 1
- else if(locate(/obj/structure/table, T))
- return 0.8
- else if(locate(/obj/structure/bed, T))
- return 0.7
- else
- return 0.5
-
-
-/proc/get_location_accessible(mob/M, location)
- var/covered_locations = 0 //based on body_parts_covered
- var/face_covered = 0 //based on flags_inv
- var/eyesmouth_covered = 0 //based on flags_cover
- if(iscarbon(M))
- var/mob/living/carbon/C = M
- for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head))
- covered_locations |= I.body_parts_covered
- face_covered |= I.flags_inv
- eyesmouth_covered |= I.flags_cover
- if(ishuman(C))
- var/mob/living/carbon/human/H = C
- for(var/obj/item/I in list(H.wear_suit, H.w_uniform, H.shoes, H.belt, H.gloves, H.glasses, H.ears))
- covered_locations |= I.body_parts_covered
- face_covered |= I.flags_inv
- eyesmouth_covered |= I.flags_cover
-
- switch(location)
- if(BODY_ZONE_HEAD)
- if(covered_locations & HEAD)
- return 0
- if(BODY_ZONE_PRECISE_EYES)
- if(covered_locations & HEAD || face_covered & HIDEEYES || eyesmouth_covered & GLASSESCOVERSEYES)
- return 0
- if(BODY_ZONE_PRECISE_MOUTH)
- if(covered_locations & HEAD || face_covered & HIDEFACE || eyesmouth_covered & MASKCOVERSMOUTH || eyesmouth_covered & HEADCOVERSMOUTH)
- return 0
- if(BODY_ZONE_CHEST)
- if(covered_locations & CHEST)
- return 0
- if(BODY_ZONE_PRECISE_GROIN)
- if(covered_locations & GROIN)
- return 0
- if(BODY_ZONE_L_ARM)
- if(covered_locations & ARM_LEFT)
- return 0
- if(BODY_ZONE_R_ARM)
- if(covered_locations & ARM_RIGHT)
- return 0
- if(BODY_ZONE_L_LEG)
- if(covered_locations & LEG_LEFT)
- return 0
- if(BODY_ZONE_R_LEG)
- if(covered_locations & LEG_RIGHT)
- return 0
- if(BODY_ZONE_PRECISE_L_HAND)
- if(covered_locations & HAND_LEFT)
- return 0
- if(BODY_ZONE_PRECISE_R_HAND)
- if(covered_locations & HAND_RIGHT)
- return 0
- if(BODY_ZONE_PRECISE_L_FOOT)
- if(covered_locations & FOOT_LEFT)
- return 0
- if(BODY_ZONE_PRECISE_R_FOOT)
- if(covered_locations & FOOT_RIGHT)
- return 0
-
- return 1
+/proc/attempt_initiate_surgery(obj/item/I, mob/living/M, mob/user)
+ if(!istype(M))
+ return
+
+ var/mob/living/carbon/C
+ var/obj/item/bodypart/affecting
+ var/selected_zone = user.zone_selected
+
+ if(iscarbon(M))
+ C = M
+ affecting = C.get_bodypart(check_zone(selected_zone))
+
+ var/datum/surgery/current_surgery
+
+ for(var/datum/surgery/S in M.surgeries)
+ if(S.location == selected_zone)
+ current_surgery = S
+
+ if(!current_surgery)
+ var/list/all_surgeries = GLOB.surgeries_list.Copy()
+ var/list/available_surgeries = list()
+
+ for(var/datum/surgery/S in all_surgeries)
+ if(!S.possible_locs.Find(selected_zone))
+ continue
+ if(affecting)
+ if(!S.requires_bodypart)
+ continue
+ if(S.requires_bodypart_type && affecting.status != S.requires_bodypart_type)
+ continue
+ if(S.requires_real_bodypart && affecting.is_pseudopart)
+ continue
+ else if(C && S.requires_bodypart) //mob with no limb in surgery zone when we need a limb
+ continue
+ if(S.lying_required && !(M.lying))
+ continue
+ if(!S.can_start(user, M))
+ continue
+ for(var/path in S.target_mobtypes)
+ if(istype(M, path))
+ available_surgeries[S.name] = S
+ break
+
+ if(!available_surgeries.len)
+ return
+
+ var/P = input("Begin which procedure?", "Surgery", null, null) as null|anything in available_surgeries
+ if(P && user && user.Adjacent(M) && (I in user))
+ var/datum/surgery/S = available_surgeries[P]
+
+ for(var/datum/surgery/other in M.surgeries)
+ if(other.location == S.location)
+ return //during the input() another surgery was started at the same location.
+
+ //we check that the surgery is still doable after the input() wait.
+ if(C)
+ affecting = C.get_bodypart(check_zone(selected_zone))
+ if(affecting)
+ if(!S.requires_bodypart)
+ return
+ if(S.requires_bodypart_type && affecting.status != S.requires_bodypart_type)
+ return
+ else if(C && S.requires_bodypart)
+ return
+ if(S.lying_required && !(M.lying))
+ return
+ if(!S.can_start(user, M))
+ return
+
+ if(S.ignore_clothes || get_location_accessible(M, selected_zone))
+ var/datum/surgery/procedure = new S.type(M, selected_zone, affecting)
+ user.visible_message("[user] drapes [I] over [M]'s [parse_zone(selected_zone)] to prepare for surgery.", \
+ "You drape [I] over [M]'s [parse_zone(selected_zone)] to prepare for \an [procedure.name].")
+
+ log_combat(user, M, "operated on", null, "(OPERATION TYPE: [procedure.name]) (TARGET AREA: [selected_zone])")
+ else
+ to_chat(user, "You need to expose [M]'s [parse_zone(selected_zone)] first!")
+
+ else if(!current_surgery.step_in_progress)
+ attempt_cancel_surgery(current_surgery, I, M, user)
+
+ return 1
+
+/proc/attempt_cancel_surgery(datum/surgery/S, obj/item/I, mob/living/M, mob/user)
+ var/selected_zone = user.zone_selected
+ if(S.status == 1)
+ M.surgeries -= S
+ user.visible_message("[user] removes [I] from [M]'s [parse_zone(selected_zone)].", \
+ "You remove [I] from [M]'s [parse_zone(selected_zone)].")
+ qdel(S)
+ else if(S.can_cancel)
+ var/close_tool_type = /obj/item/cautery
+ var/obj/item/close_tool = user.get_inactive_held_item()
+ var/is_robotic = S.requires_bodypart_type == BODYPART_ROBOTIC
+ if(is_robotic)
+ close_tool_type = /obj/item/screwdriver
+ if(istype(close_tool, close_tool_type) || iscyborg(user))
+ M.surgeries -= S
+ user.visible_message("[user] closes [M]'s [parse_zone(selected_zone)] with [close_tool] and removes [I].", \
+ "You close [M]'s [parse_zone(selected_zone)] with [close_tool] and remove [I].")
+ qdel(S)
+ else
+ to_chat(user, "You need to hold a [is_robotic ? "screwdriver" : "cautery"] in your inactive hand to stop [M]'s surgery!")
+
+/proc/get_location_modifier(mob/M)
+ var/turf/T = get_turf(M)
+ if(locate(/obj/structure/table/optable, T))
+ return 1
+ else if(locate(/obj/structure/table, T))
+ return 0.8
+ else if(locate(/obj/structure/bed, T))
+ return 0.7
+ else
+ return 0.5
+
+
+/proc/get_location_accessible(mob/M, location)
+ var/covered_locations = 0 //based on body_parts_covered
+ var/face_covered = 0 //based on flags_inv
+ var/eyesmouth_covered = 0 //based on flags_cover
+ if(iscarbon(M))
+ var/mob/living/carbon/C = M
+ for(var/obj/item/clothing/I in list(C.back, C.wear_mask, C.head))
+ covered_locations |= I.body_parts_covered
+ face_covered |= I.flags_inv
+ eyesmouth_covered |= I.flags_cover
+ if(ishuman(C))
+ var/mob/living/carbon/human/H = C
+ for(var/obj/item/I in list(H.wear_suit, H.w_uniform, H.shoes, H.belt, H.gloves, H.glasses, H.ears))
+ covered_locations |= I.body_parts_covered
+ face_covered |= I.flags_inv
+ eyesmouth_covered |= I.flags_cover
+
+ switch(location)
+ if(BODY_ZONE_HEAD)
+ if(covered_locations & HEAD)
+ return 0
+ if(BODY_ZONE_PRECISE_EYES)
+ if(covered_locations & HEAD || face_covered & HIDEEYES || eyesmouth_covered & GLASSESCOVERSEYES)
+ return 0
+ if(BODY_ZONE_PRECISE_MOUTH)
+ if(covered_locations & HEAD || face_covered & HIDEFACE || eyesmouth_covered & MASKCOVERSMOUTH || eyesmouth_covered & HEADCOVERSMOUTH)
+ return 0
+ if(BODY_ZONE_CHEST)
+ if(covered_locations & CHEST)
+ return 0
+ if(BODY_ZONE_PRECISE_GROIN)
+ if(covered_locations & GROIN)
+ return 0
+ if(BODY_ZONE_L_ARM)
+ if(covered_locations & ARM_LEFT)
+ return 0
+ if(BODY_ZONE_R_ARM)
+ if(covered_locations & ARM_RIGHT)
+ return 0
+ if(BODY_ZONE_L_LEG)
+ if(covered_locations & LEG_LEFT)
+ return 0
+ if(BODY_ZONE_R_LEG)
+ if(covered_locations & LEG_RIGHT)
+ return 0
+ if(BODY_ZONE_PRECISE_L_HAND)
+ if(covered_locations & HAND_LEFT)
+ return 0
+ if(BODY_ZONE_PRECISE_R_HAND)
+ if(covered_locations & HAND_RIGHT)
+ return 0
+ if(BODY_ZONE_PRECISE_L_FOOT)
+ if(covered_locations & FOOT_LEFT)
+ return 0
+ if(BODY_ZONE_PRECISE_R_FOOT)
+ if(covered_locations & FOOT_RIGHT)
+ return 0
+
+ return 1
diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm
index 65fb4335..e9634026 100644
--- a/code/modules/surgery/implant_removal.dm
+++ b/code/modules/surgery/implant_removal.dm
@@ -1,60 +1,60 @@
-/datum/surgery/implant_removal
- name = "implant removal"
- steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/extract_implant, /datum/surgery_step/close)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
- possible_locs = list(BODY_ZONE_CHEST)
-//extract implant
-/datum/surgery_step/extract_implant
- name = "extract implant"
- implements = list(/obj/item/hemostat = 100, TOOL_CROWBAR = 65)
- time = 64
- var/obj/item/implant/I = null
-/datum/surgery_step/extract_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- for(var/obj/item/O in target.implants)
- I = O
- break
- if(I)
- display_results(user, target, "You begin to extract [I] from [target]'s [target_zone]...",
- "[user] begins to extract [I] from [target]'s [target_zone].",
- "[user] begins to extract something from [target]'s [target_zone].")
- else
- display_results(user, target, "You look for an implant in [target]'s [target_zone]...",
- "[user] looks for an implant in [target]'s [target_zone].",
- "[user] looks for something in [target]'s [target_zone].")
-
-/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(I)
- display_results(user, target, "You successfully remove [I] from [target]'s [target_zone].",
- "[user] successfully removes [I] from [target]'s [target_zone]!",
- "[user] successfully removes something from [target]'s [target_zone]!")
- I.removed(target)
-
- var/obj/item/implantcase/case
- for(var/obj/item/implantcase/ic in user.held_items)
- case = ic
- break
- if(!case)
- case = locate(/obj/item/implantcase) in get_turf(target)
- if(case && !case.imp)
- case.imp = I
- I.forceMove(case)
- case.update_icon()
- display_results(user, target, "You place [I] into [case].",
- "[user] places [I] into [case]!",
- "[user] places it into [case]!")
- else
- qdel(I)
-
- else
- to_chat(user, "You can't find anything in [target]'s [target_zone]!")
- return 1
-/datum/surgery/implant_removal/mechanic
- name = "implant removal"
- requires_bodypart_type = BODYPART_ROBOTIC
- steps = list(
- /datum/surgery_step/mechanic_open,
- /datum/surgery_step/open_hatch,
- /datum/surgery_step/mechanic_unwrench,
- /datum/surgery_step/extract_implant,
- /datum/surgery_step/mechanic_wrench,
- /datum/surgery_step/mechanic_close)
+/datum/surgery/implant_removal
+ name = "implant removal"
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/extract_implant, /datum/surgery_step/close)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ possible_locs = list(BODY_ZONE_CHEST)
+//extract implant
+/datum/surgery_step/extract_implant
+ name = "extract implant"
+ implements = list(/obj/item/hemostat = 100, TOOL_CROWBAR = 65)
+ time = 64
+ var/obj/item/implant/I = null
+/datum/surgery_step/extract_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ for(var/obj/item/O in target.implants)
+ I = O
+ break
+ if(I)
+ display_results(user, target, "You begin to extract [I] from [target]'s [target_zone]...",
+ "[user] begins to extract [I] from [target]'s [target_zone].",
+ "[user] begins to extract something from [target]'s [target_zone].")
+ else
+ display_results(user, target, "You look for an implant in [target]'s [target_zone]...",
+ "[user] looks for an implant in [target]'s [target_zone].",
+ "[user] looks for something in [target]'s [target_zone].")
+
+/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ if(I)
+ display_results(user, target, "You successfully remove [I] from [target]'s [target_zone].",
+ "[user] successfully removes [I] from [target]'s [target_zone]!",
+ "[user] successfully removes something from [target]'s [target_zone]!")
+ I.removed(target)
+
+ var/obj/item/implantcase/case
+ for(var/obj/item/implantcase/ic in user.held_items)
+ case = ic
+ break
+ if(!case)
+ case = locate(/obj/item/implantcase) in get_turf(target)
+ if(case && !case.imp)
+ case.imp = I
+ I.forceMove(case)
+ case.update_icon()
+ display_results(user, target, "You place [I] into [case].",
+ "[user] places [I] into [case]!",
+ "[user] places it into [case]!")
+ else
+ qdel(I)
+
+ else
+ to_chat(user, "You can't find anything in [target]'s [target_zone]!")
+ return 1
+/datum/surgery/implant_removal/mechanic
+ name = "implant removal"
+ requires_bodypart_type = BODYPART_ROBOTIC
+ steps = list(
+ /datum/surgery_step/mechanic_open,
+ /datum/surgery_step/open_hatch,
+ /datum/surgery_step/mechanic_unwrench,
+ /datum/surgery_step/extract_implant,
+ /datum/surgery_step/mechanic_wrench,
+ /datum/surgery_step/mechanic_close)
diff --git a/code/modules/surgery/limb_augmentation.dm b/code/modules/surgery/limb_augmentation.dm
index a7ab60ce..136e1093 100644
--- a/code/modules/surgery/limb_augmentation.dm
+++ b/code/modules/surgery/limb_augmentation.dm
@@ -1,60 +1,60 @@
-/////AUGMENTATION SURGERIES//////
-//SURGERY STEPS
-/datum/surgery_step/replace
- name = "sever muscles"
- implements = list(/obj/item/scalpel = 100, TOOL_WIRECUTTER = 55)
- time = 32
-
-
-/datum/surgery_step/replace/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, "You begin to sever the muscles on [target]'s [parse_zone(user.zone_selected)]...",
- "[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_selected)].",
- "[user] begins an incision on [target]'s [parse_zone(user.zone_selected)].")
-
-/datum/surgery_step/replace_limb
- name = "replace limb"
- implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100)
- time = 32
- var/obj/item/bodypart/L = null // L because "limb"
-/datum/surgery_step/replace_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- if(istype(tool, /obj/item/organ_storage) && istype(tool.contents[1], /obj/item/bodypart))
- tool = tool.contents[1]
- var/obj/item/bodypart/aug = tool
- if(aug.status != BODYPART_ROBOTIC)
- to_chat(user, "That's not an augment, silly!")
- return -1
- if(aug.body_zone != target_zone)
- to_chat(user, "[tool] isn't the right type for [parse_zone(target_zone)].")
- return -1
- L = surgery.operated_bodypart
- if(L)
- display_results(user, target, "You begin to augment [target]'s [parse_zone(user.zone_selected)]...",
- "[user] begins to augment [target]'s [parse_zone(user.zone_selected)] with [aug].",
- "[user] begins to augment [target]'s [parse_zone(user.zone_selected)].")
- else
- user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_selected)].", "You look for [target]'s [parse_zone(user.zone_selected)]...")
-
-//ACTUAL SURGERIES
-/datum/surgery/augmentation
- name = "Augmentation"
- steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/saw, /datum/surgery_step/replace_limb)
- species = list(/mob/living/carbon/human)
- possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD)
- requires_real_bodypart = TRUE
-//SURGERY STEP SUCCESSES
-/datum/surgery_step/replace_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/bodypart/tool, datum/surgery/surgery)
- if(L)
- if(istype(tool, /obj/item/organ_storage))
- tool.icon_state = initial(tool.icon_state)
- tool.desc = initial(tool.desc)
- tool.cut_overlays()
- tool = tool.contents[1]
- if(istype(tool) && user.temporarilyRemoveItemFromInventory(tool))
- tool.replace_limb(target, TRUE)
- display_results(user, target, "You successfully augment [target]'s [parse_zone(target_zone)].",
- "[user] successfully augments [target]'s [parse_zone(target_zone)] with [tool]!",
- "[user] successfully augments [target]'s [parse_zone(target_zone)]!")
- log_combat(user, target, "augmented", addition="by giving him new [parse_zone(target_zone)] INTENT: [uppertext(user.a_intent)]")
- else
- to_chat(user, "[target] has no organic [parse_zone(target_zone)] there!")
- return TRUE
+/////AUGMENTATION SURGERIES//////
+//SURGERY STEPS
+/datum/surgery_step/replace
+ name = "sever muscles"
+ implements = list(/obj/item/scalpel = 100, TOOL_WIRECUTTER = 55)
+ time = 32
+
+
+/datum/surgery_step/replace/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You begin to sever the muscles on [target]'s [parse_zone(user.zone_selected)]...",
+ "[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_selected)].",
+ "[user] begins an incision on [target]'s [parse_zone(user.zone_selected)].")
+
+/datum/surgery_step/replace_limb
+ name = "replace limb"
+ implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100)
+ time = 32
+ var/obj/item/bodypart/L = null // L because "limb"
+/datum/surgery_step/replace_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ if(istype(tool, /obj/item/organ_storage) && istype(tool.contents[1], /obj/item/bodypart))
+ tool = tool.contents[1]
+ var/obj/item/bodypart/aug = tool
+ if(aug.status != BODYPART_ROBOTIC)
+ to_chat(user, "That's not an augment, silly!")
+ return -1
+ if(aug.body_zone != target_zone)
+ to_chat(user, "[tool] isn't the right type for [parse_zone(target_zone)].")
+ return -1
+ L = surgery.operated_bodypart
+ if(L)
+ display_results(user, target, "You begin to augment [target]'s [parse_zone(user.zone_selected)]...",
+ "[user] begins to augment [target]'s [parse_zone(user.zone_selected)] with [aug].",
+ "[user] begins to augment [target]'s [parse_zone(user.zone_selected)].")
+ else
+ user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_selected)].", "You look for [target]'s [parse_zone(user.zone_selected)]...")
+
+//ACTUAL SURGERIES
+/datum/surgery/augmentation
+ name = "Augmentation"
+ steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/replace, /datum/surgery_step/saw, /datum/surgery_step/replace_limb)
+ target_mobtypes = list(/mob/living/carbon/human)
+ possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD)
+ requires_real_bodypart = TRUE
+//SURGERY STEP SUCCESSES
+/datum/surgery_step/replace_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/bodypart/tool, datum/surgery/surgery)
+ if(L)
+ if(istype(tool, /obj/item/organ_storage))
+ tool.icon_state = initial(tool.icon_state)
+ tool.desc = initial(tool.desc)
+ tool.cut_overlays()
+ tool = tool.contents[1]
+ if(istype(tool) && user.temporarilyRemoveItemFromInventory(tool))
+ tool.replace_limb(target, TRUE)
+ display_results(user, target, "You successfully augment [target]'s [parse_zone(target_zone)].",
+ "[user] successfully augments [target]'s [parse_zone(target_zone)] with [tool]!",
+ "[user] successfully augments [target]'s [parse_zone(target_zone)]!")
+ log_combat(user, target, "augmented", addition="by giving him new [parse_zone(target_zone)] INTENT: [uppertext(user.a_intent)]")
+ else
+ to_chat(user, "[target] has no organic [parse_zone(target_zone)] there!")
+ return TRUE
diff --git a/code/modules/surgery/organ_manipulation.dm b/code/modules/surgery/organ_manipulation.dm
index 6bffed74..fe6139cc 100644
--- a/code/modules/surgery/organ_manipulation.dm
+++ b/code/modules/surgery/organ_manipulation.dm
@@ -1,6 +1,6 @@
/datum/surgery/organ_manipulation
- name = "Organ manipulation"
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ name = "organ manipulation"
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD)
requires_real_bodypart = 1
steps = list(
@@ -26,7 +26,7 @@
/datum/surgery/organ_manipulation/alien
name = "Alien organ manipulation"
possible_locs = list(BODY_ZONE_CHEST, BODY_ZONE_HEAD, BODY_ZONE_PRECISE_GROIN, BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)
- species = list(/mob/living/carbon/alien/humanoid)
+ target_mobtypes = list(/mob/living/carbon/alien/humanoid)
steps = list(
/datum/surgery_step/saw,
/datum/surgery_step/incise,
diff --git a/code/modules/surgery/penis_augmentation.dm b/code/modules/surgery/penis_augmentation.dm
index fc431e69..edd6073d 100644
--- a/code/modules/surgery/penis_augmentation.dm
+++ b/code/modules/surgery/penis_augmentation.dm
@@ -1,7 +1,7 @@
/datum/surgery/penis_augmentation
name = "Penis augmentation"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/augment_penis, /datum/surgery_step/close)
- species = list(/mob/living/carbon/human)
+ target_mobtypes = list(/mob/living/carbon/human)
possible_locs = list(BODY_ZONE_PRECISE_GROIN)
/datum/surgery_step/augment_penis
diff --git a/code/modules/surgery/prosthetic_replacement.dm b/code/modules/surgery/prosthetic_replacement.dm
index fdceb1fb..8efa40a7 100644
--- a/code/modules/surgery/prosthetic_replacement.dm
+++ b/code/modules/surgery/prosthetic_replacement.dm
@@ -1,7 +1,7 @@
/datum/surgery/prosthetic_replacement
name = "Prosthetic replacement"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/add_prosthetic)
- species = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
+ target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD)
requires_bodypart = FALSE //need a missing limb
requires_bodypart_type = 0
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index e8f423aa..4a780c42 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -1,157 +1,174 @@
-/datum/surgery
- var/name = "surgery"
- var/desc = "surgery description"
- var/status = 1
- var/list/steps = list() //Steps in a surgery
- var/step_in_progress = 0 //Actively performing a Surgery
- var/can_cancel = 1 //Can cancel this surgery after step 1 with cautery
- var/list/species = list(/mob/living/carbon/human) //Acceptable Species
- var/location = BODY_ZONE_CHEST //Surgery location
- var/requires_bodypart_type = BODYPART_ORGANIC //Prevents you from performing an operation on incorrect limbs. 0 for any limb type
- var/list/possible_locs = list() //Multiple locations
- var/ignore_clothes = 0 //This surgery ignores clothes
- var/mob/living/carbon/target //Operation target mob
- var/obj/item/bodypart/operated_bodypart //Operable body part
- var/requires_bodypart = TRUE //Surgery available only when a bodypart is present, or only when it is missing.
- var/success_multiplier = 0 //Step success propability multiplier
- var/requires_real_bodypart = 0 //Some surgeries don't work on limbs that don't really exist
-
-/datum/surgery/New(surgery_target, surgery_location, surgery_bodypart)
- ..()
- if(surgery_target)
- target = surgery_target
- target.surgeries += src
- if(surgery_location)
- location = surgery_location
- if(surgery_bodypart)
- operated_bodypart = surgery_bodypart
-
-/datum/surgery/Destroy()
- if(target)
- target.surgeries -= src
- target = null
- operated_bodypart = null
- return ..()
-
-
-/datum/surgery/proc/can_start(mob/user, mob/living/carbon/target)
- // if 0 surgery wont show up in list
- // put special restrictions here
- return 1
-
-/datum/surgery/proc/next_step(mob/user, intent)
- if(step_in_progress)
- return 1
-
- var/try_to_fail = FALSE
- if(intent == INTENT_DISARM)
- try_to_fail = TRUE
-
- var/datum/surgery_step/S = get_surgery_step()
- if(S)
- var/obj/item/tool = user.get_active_held_item()
- if(S.try_op(user, target, user.zone_selected, tool, src, try_to_fail))
- return TRUE
- if(iscyborg(user) && user.a_intent != INTENT_HARM) //to save asimov borgs a LOT of heartache
- return TRUE
- if(tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it
- to_chat(user, "This step requires a different tool!")
- return TRUE
-
-/datum/surgery/proc/get_surgery_step()
- var/step_type = steps[status]
- return new step_type
-
-/datum/surgery/proc/get_surgery_next_step()
- if(status < steps.len)
- var/step_type = steps[status + 1]
- return new step_type
- else
- return null
-
-/datum/surgery/proc/complete()
- SSblackbox.record_feedback("tally", "surgeries_completed", 1, type)
- qdel(src)
-
-/datum/surgery/proc/get_propability_multiplier()
- var/propability = 0.5
- var/turf/T = get_turf(target)
-
- if(locate(/obj/structure/table/optable, T))
- propability = 1
- else if(locate(/obj/structure/table, T))
- propability = 0.8
- else if(locate(/obj/machinery/stasis, T))
- propability = 0.9
- else if(locate(/obj/structure/bed, T))
- propability = 0.7
-
- return propability + success_multiplier
-
-/datum/surgery/advanced
- name = "advanced surgery"
-
-/datum/surgery/advanced/can_start(mob/user, mob/living/carbon/target)
- if(!..())
- return FALSE
- //Abductor scientists need no instructions
- if(isabductor(user))
- var/mob/living/carbon/human/H = user
- var/datum/species/abductor/S = H.dna.species
- if(S.scientist)
- return TRUE
-
- if(iscyborg(user))
- var/mob/living/silicon/robot/R = user
- var/obj/item/surgical_processor/SP = locate() in R.module.modules
- if(!SP)
- return FALSE
- if(type in SP.advanced_surgeries)
- return TRUE
-
- var/turf/T = get_turf(target)
- var/obj/structure/table/optable/table = locate(/obj/structure/table/optable, T)
- if(!table || !table.computer)
- return FALSE
- if(table.computer.stat & (NOPOWER|BROKEN))
- return FALSE
- if(type in table.computer.advanced_surgeries)
- return TRUE
-
-/obj/item/disk/surgery
- name = "Surgery Procedure Disk"
- desc = "A disk that contains advanced surgery procedures, must be loaded into an Operating Console."
- icon_state = "datadisk1"
- materials = list(MAT_METAL=300, MAT_GLASS=100)
- var/list/surgeries
-
-/obj/item/disk/surgery/debug
- name = "Debug Surgery Disk"
- desc = "A disk that contains all existing surgery procedures."
- icon_state = "datadisk1"
- materials = list(MAT_METAL=300, MAT_GLASS=100)
-
-/obj/item/disk/surgery/debug/Initialize()
- . = ..()
- surgeries = subtypesof(/datum/surgery/advanced)
-
-//INFO
-//Check /mob/living/carbon/attackby for how surgery progresses, and also /mob/living/carbon/attack_hand.
-//As of Feb 21 2013 they are in code/modules/mob/living/carbon/carbon.dm, lines 459 and 51 respectively.
-//Other important variables are var/list/surgeries (/mob/living) and var/list/internal_organs (/mob/living/carbon)
-// var/list/bodyparts (/mob/living/carbon/human) is the LIMBS of a Mob.
-//Surgical procedures are initiated by attempt_initiate_surgery(), which is called by surgical drapes and bedsheets.
-
-
-//TODO
-//specific steps for some surgeries (fluff text)
-//more interesting failure options
-//randomised complications
-//more surgeries!
-//add a probability modifier for the state of the surgeon- health, twitching, etc. blindness, god forbid.
-//helper for converting a zone_sel.selecting to body part (for damage)
-
-
-//RESOLVED ISSUES //"Todo" jobs that have been completed
-//combine hands/feet into the arms - Hands/feet were removed - RR
-//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) - Call this one done, see possible_locs var - c0
+/datum/surgery
+ var/name = "surgery"
+ var/desc = "surgery description"
+ var/status = 1
+ var/list/steps = list() //Steps in a surgery
+ var/step_in_progress = 0 //Actively performing a Surgery
+ var/can_cancel = 1 //Can cancel this surgery after step 1 with cautery
+ var/list/target_mobtypes = list(/mob/living/carbon/human) //Acceptable Species
+ var/location = BODY_ZONE_CHEST //Surgery location
+ var/requires_bodypart_type = BODYPART_ORGANIC //Prevents you from performing an operation on incorrect limbs. 0 for any limb type
+ var/list/possible_locs = list() //Multiple locations
+ var/ignore_clothes = 0 //This surgery ignores clothes
+ var/mob/living/carbon/target //Operation target mob
+ var/obj/item/bodypart/operated_bodypart //Operable body part
+ var/requires_bodypart = TRUE //Surgery available only when a bodypart is present, or only when it is missing.
+ var/success_multiplier = 0 //Step success propability multiplier
+ var/requires_real_bodypart = 0 //Some surgeries don't work on limbs that don't really exist
+ var/lying_required = TRUE //Does the vicitm needs to be lying down.
+ var/requires_tech = FALSE
+ var/replaced_by
+
+/datum/surgery/New(surgery_target, surgery_location, surgery_bodypart)
+ ..()
+ if(surgery_target)
+ target = surgery_target
+ target.surgeries += src
+ if(surgery_location)
+ location = surgery_location
+ if(surgery_bodypart)
+ operated_bodypart = surgery_bodypart
+
+/datum/surgery/Destroy()
+ if(target)
+ target.surgeries -= src
+ target = null
+ operated_bodypart = null
+ return ..()
+
+
+/datum/surgery/proc/can_start(mob/user, mob/living/patient) //FALSE to not show in list
+ . = TRUE
+ if(replaced_by == /datum/surgery)
+ return FALSE
+
+ if(HAS_TRAIT(user, TRAIT_SURGEON))
+ if(replaced_by)
+ return FALSE
+ else
+ return TRUE
+
+ if(!requires_tech && !replaced_by)
+ return TRUE
+ // True surgeons (like abductor scientists) need no instructions
+
+ if(requires_tech)
+ . = FALSE
+
+ if(iscyborg(user))
+ var/mob/living/silicon/robot/R = user
+ var/obj/item/surgical_processor/SP = locate() in R.module.modules
+ if(SP)
+ if (replaced_by in SP.advanced_surgeries)
+ return FALSE
+ if(type in SP.advanced_surgeries)
+ return TRUE
+
+
+ var/turf/T = get_turf(patient)
+ var/obj/structure/table/optable/table = locate(/obj/structure/table/optable, T)
+ if(table)
+ if(!table.computer)
+ return FALSE
+ if(table.computer.stat & (NOPOWER|BROKEN))
+ return .
+ if(replaced_by in table.computer.advanced_surgeries)
+ return FALSE
+ if(type in table.computer.advanced_surgeries)
+ return TRUE
+
+/datum/surgery/proc/next_step(mob/user, intent)
+ if(step_in_progress)
+ return 1
+
+ var/try_to_fail = FALSE
+ if(intent == INTENT_DISARM)
+ try_to_fail = TRUE
+
+ var/datum/surgery_step/S = get_surgery_step()
+ if(S)
+ var/obj/item/tool = user.get_active_held_item()
+ if(S.try_op(user, target, user.zone_selected, tool, src, try_to_fail))
+ return TRUE
+ if(iscyborg(user) && user.a_intent != INTENT_HARM) //to save asimov borgs a LOT of heartache
+ return TRUE
+ if(tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it
+ to_chat(user, "This step requires a different tool!")
+ return TRUE
+
+/datum/surgery/proc/get_surgery_step()
+ var/step_type = steps[status]
+ return new step_type
+
+/datum/surgery/proc/get_surgery_next_step()
+ if(status < steps.len)
+ var/step_type = steps[status + 1]
+ return new step_type
+ else
+ return null
+
+/datum/surgery/proc/complete()
+ SSblackbox.record_feedback("tally", "surgeries_completed", 1, type)
+ qdel(src)
+
+/datum/surgery/proc/get_propability_multiplier()
+ var/propability = 0.5
+ var/turf/T = get_turf(target)
+
+ if(locate(/obj/structure/table/optable, T))
+ propability = 1
+ else if(locate(/obj/structure/table, T))
+ propability = 0.8
+ else if(locate(/obj/machinery/stasis, T))
+ propability = 0.9
+ else if(locate(/obj/structure/bed, T))
+ propability = 0.7
+
+ return propability + success_multiplier
+
+/datum/surgery/advanced
+ name = "advanced surgery"
+ requires_tech = TRUE
+
+/obj/item/disk/surgery
+ name = "Surgery Procedure Disk"
+ desc = "A disk that contains advanced surgery procedures, must be loaded into an Operating Console."
+ icon_state = "datadisk1"
+ materials = list(MAT_METAL=300, MAT_GLASS=100)
+ var/list/surgeries
+
+/obj/item/disk/surgery/debug
+ name = "Debug Surgery Disk"
+ desc = "A disk that contains all existing surgery procedures."
+ icon_state = "datadisk1"
+ materials = list(MAT_METAL=300, MAT_GLASS=100)
+
+/obj/item/disk/surgery/debug/Initialize()
+ . = ..()
+ surgeries = list()
+ var/list/req_tech_surgeries = subtypesof(/datum/surgery)
+ for(var/i in req_tech_surgeries)
+ var/datum/surgery/beep = i
+ if(initial(beep.requires_tech))
+ surgeries += beep
+
+//INFO
+//Check /mob/living/carbon/attackby for how surgery progresses, and also /mob/living/carbon/attack_hand.
+//As of Feb 21 2013 they are in code/modules/mob/living/carbon/carbon.dm, lines 459 and 51 respectively.
+//Other important variables are var/list/surgeries (/mob/living) and var/list/internal_organs (/mob/living/carbon)
+// var/list/bodyparts (/mob/living/carbon/human) is the LIMBS of a Mob.
+//Surgical procedures are initiated by attempt_initiate_surgery(), which is called by surgical drapes and bedsheets.
+
+
+//TODO
+//specific steps for some surgeries (fluff text)
+//more interesting failure options
+//randomised complications
+//more surgeries!
+//add a probability modifier for the state of the surgeon- health, twitching, etc. blindness, god forbid.
+//helper for converting a zone_sel.selecting to body part (for damage)
+
+
+//RESOLVED ISSUES //"Todo" jobs that have been completed
+//combine hands/feet into the arms - Hands/feet were removed - RR
+//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) - Call this one done, see possible_locs var - c0
\ No newline at end of file
diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm
index 11fd046e..71f813a5 100644
--- a/code/modules/surgery/surgery_step.dm
+++ b/code/modules/surgery/surgery_step.dm
@@ -1,126 +1,130 @@
-/datum/surgery_step
- var/name
- var/list/implements = list() //format is path = probability of success. alternatively
- var/implement_type = null //the current type of implement used. This has to be stored, as the actual typepath of the tool may not match the list type.
- var/accept_hand = FALSE //does the surgery step require an open hand? If true, ignores implements. Compatible with accept_any_item.
- var/accept_any_item = FALSE //does the surgery step accept any item? If true, ignores implements. Compatible with require_hand.
- var/time = 10 //how long does the step take?
- var/repeatable = FALSE //can this step be repeated? Make shure it isn't last step, or it used in surgery with `can_cancel = 1`. Or surgion will be stuck in the loop
- var/list/chems_needed = list() //list of chems needed to complete the step. Even on success, the step will have no effect if there aren't the chems required in the mob.
- var/require_all_chems = TRUE //any on the list or all on the list?
-/datum/surgery_step/proc/try_op(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
- var/success = FALSE
- if(accept_hand)
- if(!tool)
- success = TRUE
- if(iscyborg(user))
- success = TRUE
- if(accept_any_item)
- if(tool && tool_check(user, tool))
- success = TRUE
- else if(tool)
- for(var/key in implements)
- var/match = FALSE
- if(ispath(key) && istype(tool, key))
- match = TRUE
- else if(tool.tool_behaviour == key)
- match = TRUE
- if(match)
- implement_type = key
- if(tool_check(user, tool))
- success = TRUE
- break
- if(success)
- if(target_zone == surgery.location)
- if(get_location_accessible(target, target_zone) || surgery.ignore_clothes)
- return initiate(user, target, target_zone, tool, surgery, try_to_fail)
- else
- to_chat(user, "You need to expose [target]'s [parse_zone(target_zone)] to perform surgery on it!")
- return TRUE //returns TRUE so we don't stab the guy in the dick or wherever.
- if(repeatable)
- var/datum/surgery_step/next_step = surgery.get_surgery_next_step()
- if(next_step)
- surgery.status++
- if(next_step.try_op(user, target, user.zone_selected, user.get_active_held_item(), surgery))
- return TRUE
- else
- surgery.status--
- return FALSE
-/datum/surgery_step/proc/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
- surgery.step_in_progress = TRUE
- var/speed_mod = 1
- var/advance = FALSE
- if(preop(user, target, target_zone, tool, surgery) == -1)
- surgery.step_in_progress = FALSE
- return FALSE
- if(tool)
- speed_mod = tool.toolspeed
- if(do_after(user, time * speed_mod, target = target))
- var/prob_chance = 100
- if(implement_type) //this means it isn't a require hand or any item step.
- prob_chance = implements[implement_type]
- prob_chance *= surgery.get_propability_multiplier()
- if((prob(prob_chance) || iscyborg(user)) && chem_check(target) && !try_to_fail)
- if(success(user, target, target_zone, tool, surgery))
- advance = TRUE
- else
- if(failure(user, target, target_zone, tool, surgery))
- advance = TRUE
- if(advance && !repeatable)
- surgery.status++
- if(surgery.status > surgery.steps.len)
- surgery.complete()
- surgery.step_in_progress = FALSE
- return advance
-
-
-/datum/surgery_step/proc/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, "You begin to perform surgery on [target]...",
- "[user] begins to perform surgery on [target].",
- "[user] begins to perform surgery on [target].")
-
-/datum/surgery_step/proc/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, "You succeed.",
- "[user] succeeds!",
- "[user] finishes.")
- return TRUE
-
-/datum/surgery_step/proc/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- display_results(user, target, "You screw up!",
- "[user] screws up!",
- "[user] finishes.", TRUE) //By default the patient will notice if the wrong thing has been cut
- return FALSE
-
-/datum/surgery_step/proc/tool_check(mob/user, obj/item/tool)
- return TRUE
-/datum/surgery_step/proc/chem_check(mob/living/carbon/target)
- if(!LAZYLEN(chems_needed))
- return TRUE
- if(require_all_chems)
- . = TRUE
- for(var/R in chems_needed)
- if(!target.reagents.has_reagent(R))
- return FALSE
- else
- . = FALSE
- for(var/R in chems_needed)
- if(target.reagents.has_reagent(R))
- return TRUE
-/datum/surgery_step/proc/get_chem_list()
- if(!LAZYLEN(chems_needed))
- return
- var/list/chems = list()
- for(var/R in chems_needed)
- var/datum/reagent/temp = GLOB.chemical_reagents_list[R]
- if(temp)
- var/chemname = temp.name
- chems += chemname
- return english_list(chems, and_text = require_all_chems ? " and " : " or ")
-
-//Replaces visible_message during operations so only people looking over the surgeon can tell what they're doing, allowing for shenanigans.
-/datum/surgery_step/proc/display_results(mob/user, mob/living/carbon/target, self_message, detailed_message, vague_message, target_detailed = FALSE)
- var/list/detailed_mobs = get_hearers_in_view(1, user) //Only the surgeon and people looking over his shoulder can see the operation clearly
- if(!target_detailed)
- detailed_mobs -= target //The patient can't see well what's going on, unless it's something like getting cut
- user.visible_message(detailed_message, self_message, vision_distance = 1, ignored_mobs = target_detailed ? null : target)
- user.visible_message(vague_message, "", ignored_mobs = detailed_mobs)
+/datum/surgery_step
+ var/name
+ var/list/implements = list() //format is path = probability of success. alternatively
+ var/implement_type = null //the current type of implement used. This has to be stored, as the actual typepath of the tool may not match the list type.
+ var/accept_hand = FALSE //does the surgery step require an open hand? If true, ignores implements. Compatible with accept_any_item.
+ var/accept_any_item = FALSE //does the surgery step accept any item? If true, ignores implements. Compatible with require_hand.
+ var/time = 10 //how long does the step take?
+ var/repeatable = FALSE //can this step be repeated? Make shure it isn't last step, or it used in surgery with `can_cancel = 1`. Or surgion will be stuck in the loop
+ var/list/chems_needed = list() //list of chems needed to complete the step. Even on success, the step will have no effect if there aren't the chems required in the mob.
+ var/require_all_chems = TRUE //any on the list or all on the list?
+ var/silicons_obey_prob = FALSE
+
+/datum/surgery_step/proc/try_op(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
+ var/success = FALSE
+ if(accept_hand)
+ if(!tool)
+ success = TRUE
+ if(iscyborg(user))
+ success = TRUE
+ if(accept_any_item)
+ if(tool && tool_check(user, tool))
+ success = TRUE
+ else if(tool)
+ for(var/key in implements)
+ var/match = FALSE
+ if(ispath(key) && istype(tool, key))
+ match = TRUE
+ else if(tool.tool_behaviour == key)
+ match = TRUE
+ if(match)
+ implement_type = key
+ if(tool_check(user, tool))
+ success = TRUE
+ break
+ if(success)
+ if(target_zone == surgery.location)
+ if(get_location_accessible(target, target_zone) || surgery.ignore_clothes)
+ return initiate(user, target, target_zone, tool, surgery, try_to_fail)
+ else
+ to_chat(user, "You need to expose [target]'s [parse_zone(target_zone)] to perform surgery on it!")
+ return TRUE //returns TRUE so we don't stab the guy in the dick or wherever.
+ if(repeatable)
+ var/datum/surgery_step/next_step = surgery.get_surgery_next_step()
+ if(next_step)
+ surgery.status++
+ if(next_step.try_op(user, target, user.zone_selected, user.get_active_held_item(), surgery))
+ return TRUE
+ else
+ surgery.status--
+ return FALSE
+
+/datum/surgery_step/proc/initiate(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
+ surgery.step_in_progress = TRUE
+ var/speed_mod = 1
+ var/advance = FALSE
+ if(preop(user, target, target_zone, tool, surgery) == -1)
+ surgery.step_in_progress = FALSE
+ return FALSE
+ if(tool)
+ speed_mod = tool.toolspeed
+ if(do_after(user, time * speed_mod, target = target))
+ var/prob_chance = 100
+ if(implement_type) //this means it isn't a require hand or any item step.
+ prob_chance = implements[implement_type]
+ prob_chance *= surgery.get_propability_multiplier()
+
+ if((prob(prob_chance) || (iscyborg(user) && !silicons_obey_prob)) && chem_check(target) && !try_to_fail)
+ if(success(user, target, target_zone, tool, surgery))
+ advance = TRUE
+ else
+ if(failure(user, target, target_zone, tool, surgery))
+ advance = TRUE
+ if(advance && !repeatable)
+ surgery.status++
+ if(surgery.status > surgery.steps.len)
+ surgery.complete()
+ surgery.step_in_progress = FALSE
+ return advance
+
+/datum/surgery_step/proc/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You begin to perform surgery on [target]...",
+ "[user] begins to perform surgery on [target].",
+ "[user] begins to perform surgery on [target].")
+
+/datum/surgery_step/proc/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You succeed.",
+ "[user] succeeds!",
+ "[user] finishes.")
+ return TRUE
+
+/datum/surgery_step/proc/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery)
+ display_results(user, target, "You screw up!",
+ "[user] screws up!",
+ "[user] finishes.", TRUE) //By default the patient will notice if the wrong thing has been cut
+ return FALSE
+
+/datum/surgery_step/proc/tool_check(mob/user, obj/item/tool)
+ return TRUE
+
+/datum/surgery_step/proc/chem_check(mob/living/target)
+ if(!LAZYLEN(chems_needed))
+ return TRUE
+ if(require_all_chems)
+ . = TRUE
+ for(var/R in chems_needed)
+ if(!target.reagents.has_reagent(R))
+ return FALSE
+ else
+ . = FALSE
+ for(var/R in chems_needed)
+ if(target.reagents.has_reagent(R))
+ return TRUE
+/datum/surgery_step/proc/get_chem_list()
+ if(!LAZYLEN(chems_needed))
+ return
+ var/list/chems = list()
+ for(var/R in chems_needed)
+ var/datum/reagent/temp = GLOB.chemical_reagents_list[R]
+ if(temp)
+ var/chemname = temp.name
+ chems += chemname
+ return english_list(chems, and_text = require_all_chems ? " and " : " or ")
+
+//Replaces visible_message during operations so only people looking over the surgeon can tell what they're doing, allowing for shenanigans.
+/datum/surgery_step/proc/display_results(mob/user, mob/living/carbon/target, self_message, detailed_message, vague_message, target_detailed = FALSE)
+ var/list/detailed_mobs = get_hearers_in_view(1, user) //Only the surgeon and people looking over his shoulder can see the operation clearly
+ if(!target_detailed)
+ detailed_mobs -= target //The patient can't see well what's going on, unless it's something like getting cut
+ user.visible_message(detailed_message, self_message, vision_distance = 1, ignored_mobs = target_detailed ? null : target)
+ user.visible_message(vague_message, "", ignored_mobs = detailed_mobs)
diff --git a/tgstation.dme b/tgstation.dme
index 2c84ab36..7af2ce0b 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1,3277 +1,3278 @@
-
-// DM Environment file for tgstation.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 .
-// END_FILE_DIR
-
-// BEGIN_PREFERENCES
-#define DEBUG
-// END_PREFERENCES
-
-// BEGIN_INCLUDE
-#include "_maps\_basemap.dm"
-#include "code\_compile_options.dm"
-#include "code\world.dm"
-#include "code\__DEFINES\_globals.dm"
-#include "code\__DEFINES\_protect.dm"
-#include "code\__DEFINES\_tick.dm"
-#include "code\__DEFINES\access.dm"
-#include "code\__DEFINES\admin.dm"
-#include "code\__DEFINES\antagonists.dm"
-#include "code\__DEFINES\atmospherics.dm"
-#include "code\__DEFINES\atom_hud.dm"
-#include "code\__DEFINES\bsql.config.dm"
-#include "code\__DEFINES\bsql.dm"
-#include "code\__DEFINES\callbacks.dm"
-#include "code\__DEFINES\cargo.dm"
-#include "code\__DEFINES\cinematics.dm"
-#include "code\__DEFINES\citadel_defines.dm"
-#include "code\__DEFINES\cleaning.dm"
-#include "code\__DEFINES\clockcult.dm"
-#include "code\__DEFINES\colors.dm"
-#include "code\__DEFINES\combat.dm"
-#include "code\__DEFINES\components.dm"
-#include "code\__DEFINES\configuration.dm"
-#include "code\__DEFINES\construction.dm"
-#include "code\__DEFINES\contracts.dm"
-#include "code\__DEFINES\cult.dm"
-#include "code\__DEFINES\diseases.dm"
-#include "code\__DEFINES\DNA.dm"
-#include "code\__DEFINES\events.dm"
-#include "code\__DEFINES\exports.dm"
-#include "code\__DEFINES\flags.dm"
-#include "code\__DEFINES\food.dm"
-#include "code\__DEFINES\footsteps.dm"
-#include "code\__DEFINES\hud.dm"
-#include "code\__DEFINES\integrated_electronics.dm"
-#include "code\__DEFINES\interaction_flags.dm"
-#include "code\__DEFINES\inventory.dm"
-#include "code\__DEFINES\is_helpers.dm"
-#include "code\__DEFINES\jobs.dm"
-#include "code\__DEFINES\language.dm"
-#include "code\__DEFINES\layers.dm"
-#include "code\__DEFINES\lighting.dm"
-#include "code\__DEFINES\logging.dm"
-#include "code\__DEFINES\machines.dm"
-#include "code\__DEFINES\maps.dm"
-#include "code\__DEFINES\maths.dm"
-#include "code\__DEFINES\MC.dm"
-#include "code\__DEFINES\mecha.dm"
-#include "code\__DEFINES\medal.dm"
-#include "code\__DEFINES\melee.dm"
-#include "code\__DEFINES\menu.dm"
-#include "code\__DEFINES\misc.dm"
-#include "code\__DEFINES\mobs.dm"
-#include "code\__DEFINES\monkeys.dm"
-#include "code\__DEFINES\move_force.dm"
-#include "code\__DEFINES\movement.dm"
-#include "code\__DEFINES\movespeed_modification.dm"
-#include "code\__DEFINES\nanites.dm"
-#include "code\__DEFINES\networks.dm"
-#include "code\__DEFINES\obj_flags.dm"
-#include "code\__DEFINES\pinpointers.dm"
-#include "code\__DEFINES\pipe_construction.dm"
-#include "code\__DEFINES\pool.dm"
-#include "code\__DEFINES\preferences.dm"
-#include "code\__DEFINES\profile.dm"
-#include "code\__DEFINES\qdel.dm"
-#include "code\__DEFINES\radiation.dm"
-#include "code\__DEFINES\radio.dm"
-#include "code\__DEFINES\reactions.dm"
-#include "code\__DEFINES\reagents.dm"
-#include "code\__DEFINES\reagents_specific_heat.dm"
-#include "code\__DEFINES\research.dm"
-#include "code\__DEFINES\robots.dm"
-#include "code\__DEFINES\role_preferences.dm"
-#include "code\__DEFINES\rust_g.config.dm"
-#include "code\__DEFINES\rust_g.dm"
-#include "code\__DEFINES\say.dm"
-#include "code\__DEFINES\shuttles.dm"
-#include "code\__DEFINES\sight.dm"
-#include "code\__DEFINES\sound.dm"
-#include "code\__DEFINES\spaceman_dmm.dm"
-#include "code\__DEFINES\stat.dm"
-#include "code\__DEFINES\stat_tracking.dm"
-#include "code\__DEFINES\status_effects.dm"
-#include "code\__DEFINES\subsystems.dm"
-#include "code\__DEFINES\tgs.config.dm"
-#include "code\__DEFINES\tgs.dm"
-#include "code\__DEFINES\tgui.dm"
-#include "code\__DEFINES\time.dm"
-#include "code\__DEFINES\tools.dm"
-#include "code\__DEFINES\traits.dm"
-#include "code\__DEFINES\turf_flags.dm"
-#include "code\__DEFINES\typeids.dm"
-#include "code\__DEFINES\vehicles.dm"
-#include "code\__DEFINES\voreconstants.dm"
-#include "code\__DEFINES\vv.dm"
-#include "code\__DEFINES\wall_dents.dm"
-#include "code\__DEFINES\wires.dm"
-#include "code\__DEFINES\dcs\signals.dm"
-#include "code\__HELPERS\_cit_helpers.dm"
-#include "code\__HELPERS\_lists.dm"
-#include "code\__HELPERS\_logging.dm"
-#include "code\__HELPERS\_string_lists.dm"
-#include "code\__HELPERS\areas.dm"
-#include "code\__HELPERS\AStar.dm"
-#include "code\__HELPERS\cmp.dm"
-#include "code\__HELPERS\dates.dm"
-#include "code\__HELPERS\dna.dm"
-#include "code\__HELPERS\files.dm"
-#include "code\__HELPERS\game.dm"
-#include "code\__HELPERS\global_lists.dm"
-#include "code\__HELPERS\heap.dm"
-#include "code\__HELPERS\icon_smoothing.dm"
-#include "code\__HELPERS\icons.dm"
-#include "code\__HELPERS\level_traits.dm"
-#include "code\__HELPERS\matrices.dm"
-#include "code\__HELPERS\mobs.dm"
-#include "code\__HELPERS\mouse_control.dm"
-#include "code\__HELPERS\names.dm"
-#include "code\__HELPERS\priority_announce.dm"
-#include "code\__HELPERS\pronouns.dm"
-#include "code\__HELPERS\qdel.dm"
-#include "code\__HELPERS\radiation.dm"
-#include "code\__HELPERS\radio.dm"
-#include "code\__HELPERS\reagents.dm"
-#include "code\__HELPERS\roundend.dm"
-#include "code\__HELPERS\sanitize_values.dm"
-#include "code\__HELPERS\shell.dm"
-#include "code\__HELPERS\stat_tracking.dm"
-#include "code\__HELPERS\text.dm"
-#include "code\__HELPERS\text_vr.dm"
-#include "code\__HELPERS\time.dm"
-#include "code\__HELPERS\type2type.dm"
-#include "code\__HELPERS\type2type_vr.dm"
-#include "code\__HELPERS\typelists.dm"
-#include "code\__HELPERS\unsorted.dm"
-#include "code\__HELPERS\view.dm"
-#include "code\__HELPERS\sorts\__main.dm"
-#include "code\__HELPERS\sorts\InsertSort.dm"
-#include "code\__HELPERS\sorts\MergeSort.dm"
-#include "code\__HELPERS\sorts\TimSort.dm"
-#include "code\_globalvars\bitfields.dm"
-#include "code\_globalvars\configuration.dm"
-#include "code\_globalvars\game_modes.dm"
-#include "code\_globalvars\genetics.dm"
-#include "code\_globalvars\logging.dm"
-#include "code\_globalvars\misc.dm"
-#include "code\_globalvars\regexes.dm"
-#include "code\_globalvars\lists\flavor_misc.dm"
-#include "code\_globalvars\lists\maintenance_loot.dm"
-#include "code\_globalvars\lists\mapping.dm"
-#include "code\_globalvars\lists\medals.dm"
-#include "code\_globalvars\lists\mobs.dm"
-#include "code\_globalvars\lists\names.dm"
-#include "code\_globalvars\lists\objects.dm"
-#include "code\_globalvars\lists\poll_ignore.dm"
-#include "code\_globalvars\lists\typecache.dm"
-#include "code\_globalvars\lists\vending.dm"
-#include "code\_js\byjax.dm"
-#include "code\_js\menus.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\action_button.dm"
-#include "code\_onclick\hud\ai.dm"
-#include "code\_onclick\hud\alert.dm"
-#include "code\_onclick\hud\alien.dm"
-#include "code\_onclick\hud\alien_larva.dm"
-#include "code\_onclick\hud\blob_overmind.dm"
-#include "code\_onclick\hud\blobbernauthud.dm"
-#include "code\_onclick\hud\constructs.dm"
-#include "code\_onclick\hud\credits.dm"
-#include "code\_onclick\hud\devil.dm"
-#include "code\_onclick\hud\drones.dm"
-#include "code\_onclick\hud\fullscreen.dm"
-#include "code\_onclick\hud\generic_dextrous.dm"
-#include "code\_onclick\hud\ghost.dm"
-#include "code\_onclick\hud\guardian.dm"
-#include "code\_onclick\hud\hud.dm"
-#include "code\_onclick\hud\hud_cit.dm"
-#include "code\_onclick\hud\human.dm"
-#include "code\_onclick\hud\monkey.dm"
-#include "code\_onclick\hud\movable_screen_objects.dm"
-#include "code\_onclick\hud\parallax.dm"
-#include "code\_onclick\hud\picture_in_picture.dm"
-#include "code\_onclick\hud\plane_master.dm"
-#include "code\_onclick\hud\radial.dm"
-#include "code\_onclick\hud\radial_persistent.dm"
-#include "code\_onclick\hud\revenanthud.dm"
-#include "code\_onclick\hud\robot.dm"
-#include "code\_onclick\hud\screen_objects.dm"
-#include "code\_onclick\hud\swarmer.dm"
-#include "code\controllers\admin.dm"
-#include "code\controllers\configuration_citadel.dm"
-#include "code\controllers\controller.dm"
-#include "code\controllers\failsafe.dm"
-#include "code\controllers\globals.dm"
-#include "code\controllers\hooks.dm"
-#include "code\controllers\master.dm"
-#include "code\controllers\subsystem.dm"
-#include "code\controllers\configuration\config_entry.dm"
-#include "code\controllers\configuration\configuration.dm"
-#include "code\controllers\configuration\entries\comms.dm"
-#include "code\controllers\configuration\entries\dbconfig.dm"
-#include "code\controllers\configuration\entries\game_options.dm"
-#include "code\controllers\configuration\entries\general.dm"
-#include "code\controllers\subsystem\acid.dm"
-#include "code\controllers\subsystem\adjacent_air.dm"
-#include "code\controllers\subsystem\air.dm"
-#include "code\controllers\subsystem\air_turfs.dm"
-#include "code\controllers\subsystem\assets.dm"
-#include "code\controllers\subsystem\atoms.dm"
-#include "code\controllers\subsystem\augury.dm"
-#include "code\controllers\subsystem\autotransfer.dm"
-#include "code\controllers\subsystem\blackbox.dm"
-#include "code\controllers\subsystem\chat.dm"
-#include "code\controllers\subsystem\communications.dm"
-#include "code\controllers\subsystem\dbcore.dm"
-#include "code\controllers\subsystem\dcs.dm"
-#include "code\controllers\subsystem\disease.dm"
-#include "code\controllers\subsystem\events.dm"
-#include "code\controllers\subsystem\fire_burning.dm"
-#include "code\controllers\subsystem\garbage.dm"
-#include "code\controllers\subsystem\icon_smooth.dm"
-#include "code\controllers\subsystem\idlenpcpool.dm"
-#include "code\controllers\subsystem\input.dm"
-#include "code\controllers\subsystem\ipintel.dm"
-#include "code\controllers\subsystem\item_spawning.dm"
-#include "code\controllers\subsystem\job.dm"
-#include "code\controllers\subsystem\jukeboxes.dm"
-#include "code\controllers\subsystem\language.dm"
-#include "code\controllers\subsystem\lighting.dm"
-#include "code\controllers\subsystem\machines.dm"
-#include "code\controllers\subsystem\mapping.dm"
-#include "code\controllers\subsystem\medals.dm"
-#include "code\controllers\subsystem\minor_mapping.dm"
-#include "code\controllers\subsystem\mobs.dm"
-#include "code\controllers\subsystem\moods.dm"
-#include "code\controllers\subsystem\nightshift.dm"
-#include "code\controllers\subsystem\npcpool.dm"
-#include "code\controllers\subsystem\overlays.dm"
-#include "code\controllers\subsystem\pai.dm"
-#include "code\controllers\subsystem\parallax.dm"
-#include "code\controllers\subsystem\pathfinder.dm"
-#include "code\controllers\subsystem\persistence.dm"
-#include "code\controllers\subsystem\ping.dm"
-#include "code\controllers\subsystem\radiation.dm"
-#include "code\controllers\subsystem\radio.dm"
-#include "code\controllers\subsystem\research.dm"
-#include "code\controllers\subsystem\server_maint.dm"
-#include "code\controllers\subsystem\shuttle.dm"
-#include "code\controllers\subsystem\spacedrift.dm"
-#include "code\controllers\subsystem\stickyban.dm"
-#include "code\controllers\subsystem\sun.dm"
-#include "code\controllers\subsystem\tgui.dm"
-#include "code\controllers\subsystem\throwing.dm"
-#include "code\controllers\subsystem\ticker.dm"
-#include "code\controllers\subsystem\time_track.dm"
-#include "code\controllers\subsystem\timer.dm"
-#include "code\controllers\subsystem\title.dm"
-#include "code\controllers\subsystem\traumas.dm"
-#include "code\controllers\subsystem\vis_overlays.dm"
-#include "code\controllers\subsystem\vore.dm"
-#include "code\controllers\subsystem\vote.dm"
-#include "code\controllers\subsystem\weather.dm"
-#include "code\controllers\subsystem\processing\chemistry.dm"
-#include "code\controllers\subsystem\processing\circuit.dm"
-#include "code\controllers\subsystem\processing\fastprocess.dm"
-#include "code\controllers\subsystem\processing\fields.dm"
-#include "code\controllers\subsystem\processing\nanites.dm"
-#include "code\controllers\subsystem\processing\networks.dm"
-#include "code\controllers\subsystem\processing\obj.dm"
-#include "code\controllers\subsystem\processing\processing.dm"
-#include "code\controllers\subsystem\processing\projectiles.dm"
-#include "code\controllers\subsystem\processing\quirks.dm"
-#include "code\controllers\subsystem\processing\wet_floors.dm"
-#include "code\datums\action.dm"
-#include "code\datums\ai_laws.dm"
-#include "code\datums\armor.dm"
-#include "code\datums\beam.dm"
-#include "code\datums\browser.dm"
-#include "code\datums\callback.dm"
-#include "code\datums\chatmessage.dm"
-#include "code\datums\cinematic.dm"
-#include "code\datums\dash_weapon.dm"
-#include "code\datums\datacore.dm"
-#include "code\datums\datum.dm"
-#include "code\datums\datumvars.dm"
-#include "code\datums\dna.dm"
-#include "code\datums\dog_fashion.dm"
-#include "code\datums\embedding_behavior.dm"
-#include "code\datums\emotes.dm"
-#include "code\datums\ert.dm"
-#include "code\datums\explosion.dm"
-#include "code\datums\forced_movement.dm"
-#include "code\datums\holocall.dm"
-#include "code\datums\http.dm"
-#include "code\datums\hud.dm"
-#include "code\datums\map_config.dm"
-#include "code\datums\martial.dm"
-#include "code\datums\mind.dm"
-#include "code\datums\mutable_appearance.dm"
-#include "code\datums\numbered_display.dm"
-#include "code\datums\outfit.dm"
-#include "code\datums\position_point_vector.dm"
-#include "code\datums\profiling.dm"
-#include "code\datums\progressbar.dm"
-#include "code\datums\radiation_wave.dm"
-#include "code\datums\recipe.dm"
-#include "code\datums\ruins.dm"
-#include "code\datums\saymode.dm"
-#include "code\datums\shuttles.dm"
-#include "code\datums\soullink.dm"
-#include "code\datums\spawners_menu.dm"
-#include "code\datums\verbs.dm"
-#include "code\datums\weakrefs.dm"
-#include "code\datums\world_topic.dm"
-#include "code\datums\actions\beam_rifle.dm"
-#include "code\datums\actions\ninja.dm"
-#include "code\datums\brain_damage\brain_trauma.dm"
-#include "code\datums\brain_damage\hypnosis.dm"
-#include "code\datums\brain_damage\imaginary_friend.dm"
-#include "code\datums\brain_damage\mild.dm"
-#include "code\datums\brain_damage\phobia.dm"
-#include "code\datums\brain_damage\severe.dm"
-#include "code\datums\brain_damage\special.dm"
-#include "code\datums\brain_damage\split_personality.dm"
-#include "code\datums\components\_component.dm"
-#include "code\datums\components\anti_magic.dm"
-#include "code\datums\components\armor_plate.dm"
-#include "code\datums\components\bouncy.dm"
-#include "code\datums\components\butchering.dm"
-#include "code\datums\components\caltrop.dm"
-#include "code\datums\components\chasm.dm"
-#include "code\datums\components\construction.dm"
-#include "code\datums\components\decal.dm"
-#include "code\datums\components\earprotection.dm"
-#include "code\datums\components\edit_complainer.dm"
-#include "code\datums\components\empprotection.dm"
-#include "code\datums\components\footstep.dm"
-#include "code\datums\components\forced_gravity.dm"
-#include "code\datums\components\infective.dm"
-#include "code\datums\components\jousting.dm"
-#include "code\datums\components\knockoff.dm"
-#include "code\datums\components\lockon_aiming.dm"
-#include "code\datums\components\magnetic_catch.dm"
-#include "code\datums\components\material_container.dm"
-#include "code\datums\components\mirage_border.dm"
-#include "code\datums\components\mood.dm"
-#include "code\datums\components\nanites.dm"
-#include "code\datums\components\ntnet_interface.dm"
-#include "code\datums\components\orbiter.dm"
-#include "code\datums\components\paintable.dm"
-#include "code\datums\components\rad_insulation.dm"
-#include "code\datums\components\radioactive.dm"
-#include "code\datums\components\remote_materials.dm"
-#include "code\datums\components\riding.dm"
-#include "code\datums\components\rotation.dm"
-#include "code\datums\components\signal_redirect.dm"
-#include "code\datums\components\sizzle.dm"
-#include "code\datums\components\slippery.dm"
-#include "code\datums\components\spawner.dm"
-#include "code\datums\components\spooky.dm"
-#include "code\datums\components\squeak.dm"
-#include "code\datums\components\stationloving.dm"
-#include "code\datums\components\swarming.dm"
-#include "code\datums\components\thermite.dm"
-#include "code\datums\components\uplink.dm"
-#include "code\datums\components\wearertargeting.dm"
-#include "code\datums\components\wet_floor.dm"
-#include "code\datums\components\storage\storage.dm"
-#include "code\datums\components\storage\concrete\_concrete.dm"
-#include "code\datums\components\storage\concrete\bag_of_holding.dm"
-#include "code\datums\components\storage\concrete\bluespace.dm"
-#include "code\datums\components\storage\concrete\emergency.dm"
-#include "code\datums\components\storage\concrete\implant.dm"
-#include "code\datums\components\storage\concrete\pockets.dm"
-#include "code\datums\components\storage\concrete\rped.dm"
-#include "code\datums\components\storage\concrete\special.dm"
-#include "code\datums\components\storage\concrete\stack.dm"
-#include "code\datums\diseases\_disease.dm"
-#include "code\datums\diseases\_MobProcs.dm"
-#include "code\datums\diseases\anxiety.dm"
-#include "code\datums\diseases\appendicitis.dm"
-#include "code\datums\diseases\beesease.dm"
-#include "code\datums\diseases\brainrot.dm"
-#include "code\datums\diseases\cold.dm"
-#include "code\datums\diseases\cold9.dm"
-#include "code\datums\diseases\dna_spread.dm"
-#include "code\datums\diseases\fake_gbs.dm"
-#include "code\datums\diseases\flu.dm"
-#include "code\datums\diseases\fluspanish.dm"
-#include "code\datums\diseases\gbs.dm"
-#include "code\datums\diseases\heart_failure.dm"
-#include "code\datums\diseases\magnitis.dm"
-#include "code\datums\diseases\parrotpossession.dm"
-#include "code\datums\diseases\pierrot_throat.dm"
-#include "code\datums\diseases\retrovirus.dm"
-#include "code\datums\diseases\rhumba_beat.dm"
-#include "code\datums\diseases\transformation.dm"
-#include "code\datums\diseases\tuberculosis.dm"
-#include "code\datums\diseases\wizarditis.dm"
-#include "code\datums\diseases\advance\advance.dm"
-#include "code\datums\diseases\advance\presets.dm"
-#include "code\datums\diseases\advance\symptoms\beard.dm"
-#include "code\datums\diseases\advance\symptoms\choking.dm"
-#include "code\datums\diseases\advance\symptoms\confusion.dm"
-#include "code\datums\diseases\advance\symptoms\cough.dm"
-#include "code\datums\diseases\advance\symptoms\deafness.dm"
-#include "code\datums\diseases\advance\symptoms\dizzy.dm"
-#include "code\datums\diseases\advance\symptoms\fever.dm"
-#include "code\datums\diseases\advance\symptoms\fire.dm"
-#include "code\datums\diseases\advance\symptoms\flesh_eating.dm"
-#include "code\datums\diseases\advance\symptoms\hallucigen.dm"
-#include "code\datums\diseases\advance\symptoms\headache.dm"
-#include "code\datums\diseases\advance\symptoms\heal.dm"
-#include "code\datums\diseases\advance\symptoms\itching.dm"
-#include "code\datums\diseases\advance\symptoms\nanites.dm"
-#include "code\datums\diseases\advance\symptoms\narcolepsy.dm"
-#include "code\datums\diseases\advance\symptoms\oxygen.dm"
-#include "code\datums\diseases\advance\symptoms\sensory.dm"
-#include "code\datums\diseases\advance\symptoms\shedding.dm"
-#include "code\datums\diseases\advance\symptoms\shivering.dm"
-#include "code\datums\diseases\advance\symptoms\skin.dm"
-#include "code\datums\diseases\advance\symptoms\sneeze.dm"
-#include "code\datums\diseases\advance\symptoms\species.dm"
-#include "code\datums\diseases\advance\symptoms\symptoms.dm"
-#include "code\datums\diseases\advance\symptoms\viral.dm"
-#include "code\datums\diseases\advance\symptoms\vision.dm"
-#include "code\datums\diseases\advance\symptoms\voice_change.dm"
-#include "code\datums\diseases\advance\symptoms\vomit.dm"
-#include "code\datums\diseases\advance\symptoms\weight.dm"
-#include "code\datums\diseases\advance\symptoms\youth.dm"
-#include "code\datums\elements\_element.dm"
-#include "code\datums\elements\cleaning.dm"
-#include "code\datums\elements\earhealing.dm"
-#include "code\datums\elements\ghost_role_eligibility.dm"
-#include "code\datums\elements\mob_holder.dm"
-#include "code\datums\elements\swimming.dm"
-#include "code\datums\elements\wuv.dm"
-#include "code\datums\helper_datums\events.dm"
-#include "code\datums\helper_datums\getrev.dm"
-#include "code\datums\helper_datums\icon_snapshot.dm"
-#include "code\datums\helper_datums\teleport.dm"
-#include "code\datums\helper_datums\topic_input.dm"
-#include "code\datums\looping_sounds\_looping_sound.dm"
-#include "code\datums\looping_sounds\item_sounds.dm"
-#include "code\datums\looping_sounds\machinery_sounds.dm"
-#include "code\datums\looping_sounds\weather.dm"
-#include "code\datums\martial\boxing.dm"
-#include "code\datums\martial\cqc.dm"
-#include "code\datums\martial\krav_maga.dm"
-#include "code\datums\martial\mushpunch.dm"
-#include "code\datums\martial\plasma_fist.dm"
-#include "code\datums\martial\psychotic_brawl.dm"
-#include "code\datums\martial\sleeping_carp.dm"
-#include "code\datums\martial\wrestling.dm"
-#include "code\datums\mood_events\beauty_events.dm"
-#include "code\datums\mood_events\drink_events.dm"
-#include "code\datums\mood_events\drug_events.dm"
-#include "code\datums\mood_events\generic_negative_events.dm"
-#include "code\datums\mood_events\generic_positive_events.dm"
-#include "code\datums\mood_events\mood_event.dm"
-#include "code\datums\mood_events\needs_events.dm"
-#include "code\datums\mutations\_mutations.dm"
-#include "code\datums\mutations\actions.dm"
-#include "code\datums\mutations\antenna.dm"
-#include "code\datums\mutations\body.dm"
-#include "code\datums\mutations\chameleon.dm"
-#include "code\datums\mutations\cold_resistance.dm"
-#include "code\datums\mutations\combined.dm"
-#include "code\datums\mutations\hulk.dm"
-#include "code\datums\mutations\radioactive.dm"
-#include "code\datums\mutations\sight.dm"
-#include "code\datums\mutations\speech.dm"
-#include "code\datums\mutations\telekinesis.dm"
-#include "code\datums\ruins\lavaland.dm"
-#include "code\datums\ruins\space.dm"
-#include "code\datums\ruins\station.dm"
-#include "code\datums\status_effects\buffs.dm"
-#include "code\datums\status_effects\debuffs.dm"
-#include "code\datums\status_effects\gas.dm"
-#include "code\datums\status_effects\neutral.dm"
-#include "code\datums\status_effects\status_effect.dm"
-#include "code\datums\traits\_quirk.dm"
-#include "code\datums\traits\good.dm"
-#include "code\datums\traits\negative.dm"
-#include "code\datums\traits\neutral.dm"
-#include "code\datums\weather\weather.dm"
-#include "code\datums\weather\weather_types\acid_rain.dm"
-#include "code\datums\weather\weather_types\ash_storm.dm"
-#include "code\datums\weather\weather_types\floor_is_lava.dm"
-#include "code\datums\weather\weather_types\radiation_storm.dm"
-#include "code\datums\weather\weather_types\snow_storm.dm"
-#include "code\datums\wires\_wires.dm"
-#include "code\datums\wires\airalarm.dm"
-#include "code\datums\wires\airlock.dm"
-#include "code\datums\wires\apc.dm"
-#include "code\datums\wires\autolathe.dm"
-#include "code\datums\wires\emitter.dm"
-#include "code\datums\wires\explosive.dm"
-#include "code\datums\wires\microwave.dm"
-#include "code\datums\wires\mulebot.dm"
-#include "code\datums\wires\particle_accelerator.dm"
-#include "code\datums\wires\r_n_d.dm"
-#include "code\datums\wires\radio.dm"
-#include "code\datums\wires\robot.dm"
-#include "code\datums\wires\suit_storage_unit.dm"
-#include "code\datums\wires\syndicatebomb.dm"
-#include "code\datums\wires\tesla_coil.dm"
-#include "code\datums\wires\vending.dm"
-#include "code\game\alternate_appearance.dm"
-#include "code\game\atoms.dm"
-#include "code\game\atoms_movable.dm"
-#include "code\game\communications.dm"
-#include "code\game\data_huds.dm"
-#include "code\game\say.dm"
-#include "code\game\shuttle_engines.dm"
-#include "code\game\sound.dm"
-#include "code\game\world.dm"
-#include "code\game\area\ai_monitored.dm"
-#include "code\game\area\areas.dm"
-#include "code\game\area\Space_Station_13_areas.dm"
-#include "code\game\area\areas\away_content.dm"
-#include "code\game\area\areas\centcom.dm"
-#include "code\game\area\areas\holodeck.dm"
-#include "code\game\area\areas\mining.dm"
-#include "code\game\area\areas\shuttles.dm"
-#include "code\game\area\areas\ruins\_ruins.dm"
-#include "code\game\area\areas\ruins\lavaland.dm"
-#include "code\game\area\areas\ruins\space.dm"
-#include "code\game\area\areas\ruins\templates.dm"
-#include "code\game\gamemodes\events.dm"
-#include "code\game\gamemodes\game_mode.dm"
-#include "code\game\gamemodes\objective.dm"
-#include "code\game\gamemodes\objective_items.dm"
-#include "code\game\gamemodes\bloodsucker\bloodsucker.dm"
-#include "code\game\gamemodes\bloodsucker\hunter.dm"
-#include "code\game\gamemodes\brother\traitor_bro.dm"
-#include "code\game\gamemodes\changeling\changeling.dm"
-#include "code\game\gamemodes\changeling\traitor_chan.dm"
-#include "code\game\gamemodes\clock_cult\clock_cult.dm"
-#include "code\game\gamemodes\clown_ops\bananium_bomb.dm"
-#include "code\game\gamemodes\clown_ops\clown_ops.dm"
-#include "code\game\gamemodes\clown_ops\clown_weapons.dm"
-#include "code\game\gamemodes\cult\cult.dm"
-#include "code\game\gamemodes\devil\devil_game_mode.dm"
-#include "code\game\gamemodes\devil\game_mode.dm"
-#include "code\game\gamemodes\devil\objectives.dm"
-#include "code\game\gamemodes\devil\devil agent\devil_agent.dm"
-#include "code\game\gamemodes\dynamic\dynamic.dm"
-#include "code\game\gamemodes\dynamic\dynamic_rulesets.dm"
-#include "code\game\gamemodes\dynamic\dynamic_rulesets_events.dm"
-#include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm"
-#include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm"
-#include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm"
-#include "code\game\gamemodes\extended\extended.dm"
-#include "code\game\gamemodes\meteor\meteor.dm"
-#include "code\game\gamemodes\meteor\meteors.dm"
-#include "code\game\gamemodes\monkey\monkey.dm"
-#include "code\game\gamemodes\nuclear\nuclear.dm"
-#include "code\game\gamemodes\overthrow\objective.dm"
-#include "code\game\gamemodes\overthrow\overthrow.dm"
-#include "code\game\gamemodes\revolution\revolution.dm"
-#include "code\game\gamemodes\sandbox\airlock_maker.dm"
-#include "code\game\gamemodes\sandbox\h_sandbox.dm"
-#include "code\game\gamemodes\sandbox\sandbox.dm"
-#include "code\game\gamemodes\traitor\double_agents.dm"
-#include "code\game\gamemodes\traitor\traitor.dm"
-#include "code\game\gamemodes\wizard\wizard.dm"
-#include "code\game\machinery\_machinery.dm"
-#include "code\game\machinery\ai_slipper.dm"
-#include "code\game\machinery\airlock_control.dm"
-#include "code\game\machinery\announcement_system.dm"
-#include "code\game\machinery\aug_manipulator.dm"
-#include "code\game\machinery\autolathe.dm"
-#include "code\game\machinery\bank_machine.dm"
-#include "code\game\machinery\Beacon.dm"
-#include "code\game\machinery\bloodbankgen.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\dance_machine.dm"
-#include "code\game\machinery\defibrillator_mount.dm"
-#include "code\game\machinery\deployable.dm"
-#include "code\game\machinery\dish_drive.dm"
-#include "code\game\machinery\dna_scanner.dm"
-#include "code\game\machinery\doppler_array.dm"
-#include "code\game\machinery\droneDispenser.dm"
-#include "code\game\machinery\exp_cloner.dm"
-#include "code\game\machinery\firealarm.dm"
-#include "code\game\machinery\flasher.dm"
-#include "code\game\machinery\gulag_item_reclaimer.dm"
-#include "code\game\machinery\gulag_teleporter.dm"
-#include "code\game\machinery\harvester.dm"
-#include "code\game\machinery\hologram.dm"
-#include "code\game\machinery\igniter.dm"
-#include "code\game\machinery\iv_drip.dm"
-#include "code\game\machinery\launch_pad.dm"
-#include "code\game\machinery\lightswitch.dm"
-#include "code\game\machinery\limbgrower.dm"
-#include "code\game\machinery\magnet.dm"
-#include "code\game\machinery\mass_driver.dm"
-#include "code\game\machinery\navbeacon.dm"
-#include "code\game\machinery\newscaster.dm"
-#include "code\game\machinery\PDApainter.dm"
-#include "code\game\machinery\posi_alert.dm"
-#include "code\game\machinery\quantum_pad.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\shieldgen.dm"
-#include "code\game\machinery\Sleeper.dm"
-#include "code\game\machinery\slotmachine.dm"
-#include "code\game\machinery\spaceheater.dm"
-#include "code\game\machinery\stasis.dm"
-#include "code\game\machinery\status_display.dm"
-#include "code\game\machinery\suit_storage_unit.dm"
-#include "code\game\machinery\syndicatebeacon.dm"
-#include "code\game\machinery\syndicatebomb.dm"
-#include "code\game\machinery\teleporter.dm"
-#include "code\game\machinery\transformer.dm"
-#include "code\game\machinery\washing_machine.dm"
-#include "code\game\machinery\wishgranter.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\_computer.dm"
-#include "code\game\machinery\computer\aifixer.dm"
-#include "code\game\machinery\computer\apc_control.dm"
-#include "code\game\machinery\computer\arcade.dm"
-#include "code\game\machinery\computer\atmos_alert.dm"
-#include "code\game\machinery\computer\atmos_control.dm"
-#include "code\game\machinery\computer\buildandrepair.dm"
-#include "code\game\machinery\computer\camera.dm"
-#include "code\game\machinery\computer\camera_advanced.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\crew.dm"
-#include "code\game\machinery\computer\dna_console.dm"
-#include "code\game\machinery\computer\launchpad_control.dm"
-#include "code\game\machinery\computer\law.dm"
-#include "code\game\machinery\computer\medical.dm"
-#include "code\game\machinery\computer\Operating.dm"
-#include "code\game\machinery\computer\pod.dm"
-#include "code\game\machinery\computer\robot.dm"
-#include "code\game\machinery\computer\security.dm"
-#include "code\game\machinery\computer\station_alert.dm"
-#include "code\game\machinery\computer\telecrystalconsoles.dm"
-#include "code\game\machinery\computer\teleporter.dm"
-#include "code\game\machinery\computer\arcade\battle.dm"
-#include "code\game\machinery\computer\arcade\minesweeper.dm"
-#include "code\game\machinery\computer\arcade\misc_arcade.dm"
-#include "code\game\machinery\computer\arcade\orion_trail.dm"
-#include "code\game\machinery\computer\prisoner\_prisoner.dm"
-#include "code\game\machinery\computer\prisoner\gulag_teleporter.dm"
-#include "code\game\machinery\computer\prisoner\management.dm"
-#include "code\game\machinery\doors\airlock.dm"
-#include "code\game\machinery\doors\airlock_electronics.dm"
-#include "code\game\machinery\doors\airlock_types.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\passworddoor.dm"
-#include "code\game\machinery\doors\poddoor.dm"
-#include "code\game\machinery\doors\shutters.dm"
-#include "code\game\machinery\doors\unpowered.dm"
-#include "code\game\machinery\doors\windowdoor.dm"
-#include "code\game\machinery\embedded_controller\access_controller.dm"
-#include "code\game\machinery\embedded_controller\airlock_controller.dm"
-#include "code\game\machinery\embedded_controller\embedded_controller_base.dm"
-#include "code\game\machinery\embedded_controller\simple_vent_controller.dm"
-#include "code\game\machinery\pipe\construction.dm"
-#include "code\game\machinery\pipe\pipe_dispenser.dm"
-#include "code\game\machinery\porta_turret\portable_turret.dm"
-#include "code\game\machinery\porta_turret\portable_turret_construct.dm"
-#include "code\game\machinery\porta_turret\portable_turret_cover.dm"
-#include "code\game\machinery\poweredfans\fan_assembly.dm"
-#include "code\game\machinery\poweredfans\poweredfans.dm"
-#include "code\game\machinery\telecomms\broadcasting.dm"
-#include "code\game\machinery\telecomms\machine_interactions.dm"
-#include "code\game\machinery\telecomms\telecomunications.dm"
-#include "code\game\machinery\telecomms\computers\logbrowser.dm"
-#include "code\game\machinery\telecomms\computers\message.dm"
-#include "code\game\machinery\telecomms\computers\telemonitor.dm"
-#include "code\game\machinery\telecomms\machines\allinone.dm"
-#include "code\game\machinery\telecomms\machines\broadcaster.dm"
-#include "code\game\machinery\telecomms\machines\bus.dm"
-#include "code\game\machinery\telecomms\machines\hub.dm"
-#include "code\game\machinery\telecomms\machines\message_server.dm"
-#include "code\game\machinery\telecomms\machines\processor.dm"
-#include "code\game\machinery\telecomms\machines\receiver.dm"
-#include "code\game\machinery\telecomms\machines\relay.dm"
-#include "code\game\machinery\telecomms\machines\server.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_actions.dm"
-#include "code\game\mecha\mecha_construction_paths.dm"
-#include "code\game\mecha\mecha_control_console.dm"
-#include "code\game\mecha\mecha_defense.dm"
-#include "code\game\mecha\mecha_parts.dm"
-#include "code\game\mecha\mecha_topic.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\neovgre.dm"
-#include "code\game\mecha\combat\phazon.dm"
-#include "code\game\mecha\combat\reticence.dm"
-#include "code\game\mecha\equipment\mecha_equipment.dm"
-#include "code\game\mecha\equipment\tools\medical_tools.dm"
-#include "code\game\mecha\equipment\tools\mining_tools.dm"
-#include "code\game\mecha\equipment\tools\other_tools.dm"
-#include "code\game\mecha\equipment\tools\work_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\buckling.dm"
-#include "code\game\objects\empulse.dm"
-#include "code\game\objects\items.dm"
-#include "code\game\objects\obj_defense.dm"
-#include "code\game\objects\objs.dm"
-#include "code\game\objects\structures.dm"
-#include "code\game\objects\effects\alien_acid.dm"
-#include "code\game\objects\effects\anomalies.dm"
-#include "code\game\objects\effects\blessing.dm"
-#include "code\game\objects\effects\bump_teleporter.dm"
-#include "code\game\objects\effects\contraband.dm"
-#include "code\game\objects\effects\countdown.dm"
-#include "code\game\objects\effects\effects.dm"
-#include "code\game\objects\effects\forcefields.dm"
-#include "code\game\objects\effects\glowshroom.dm"
-#include "code\game\objects\effects\landmarks.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\proximity.dm"
-#include "code\game\objects\effects\spiders.dm"
-#include "code\game\objects\effects\step_triggers.dm"
-#include "code\game\objects\effects\wanted_poster.dm"
-#include "code\game\objects\effects\decals\cleanable.dm"
-#include "code\game\objects\effects\decals\crayon.dm"
-#include "code\game\objects\effects\decals\decal.dm"
-#include "code\game\objects\effects\decals\misc.dm"
-#include "code\game\objects\effects\decals\remains.dm"
-#include "code\game\objects\effects\decals\cleanable\aliens.dm"
-#include "code\game\objects\effects\decals\cleanable\gibs.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\turfdecal\dirt.dm"
-#include "code\game\objects\effects\decals\turfdecal\markings.dm"
-#include "code\game\objects\effects\decals\turfdecal\tilecoloring.dm"
-#include "code\game\objects\effects\decals\turfdecal\weather.dm"
-#include "code\game\objects\effects\effect_system\effect_system.dm"
-#include "code\game\objects\effects\effect_system\effects_explosion.dm"
-#include "code\game\objects\effects\effect_system\effects_foam.dm"
-#include "code\game\objects\effects\effect_system\effects_other.dm"
-#include "code\game\objects\effects\effect_system\effects_smoke.dm"
-#include "code\game\objects\effects\effect_system\effects_sparks.dm"
-#include "code\game\objects\effects\effect_system\effects_water.dm"
-#include "code\game\objects\effects\spawners\bombspawner.dm"
-#include "code\game\objects\effects\spawners\bundle.dm"
-#include "code\game\objects\effects\spawners\gibspawner.dm"
-#include "code\game\objects\effects\spawners\lootdrop.dm"
-#include "code\game\objects\effects\spawners\structure.dm"
-#include "code\game\objects\effects\spawners\traps.dm"
-#include "code\game\objects\effects\spawners\vaultspawner.dm"
-#include "code\game\objects\effects\spawners\xeno_egg_delivery.dm"
-#include "code\game\objects\effects\temporary_visuals\clockcult.dm"
-#include "code\game\objects\effects\temporary_visuals\cult.dm"
-#include "code\game\objects\effects\temporary_visuals\miscellaneous.dm"
-#include "code\game\objects\effects\temporary_visuals\temporary_visual.dm"
-#include "code\game\objects\effects\temporary_visuals\projectiles\impact.dm"
-#include "code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm"
-#include "code\game\objects\effects\temporary_visuals\projectiles\projectile_effects.dm"
-#include "code\game\objects\effects\temporary_visuals\projectiles\tracer.dm"
-#include "code\game\objects\items\AI_modules.dm"
-#include "code\game\objects\items\airlock_painter.dm"
-#include "code\game\objects\items\apc_frame.dm"
-#include "code\game\objects\items\blueprints.dm"
-#include "code\game\objects\items\body_egg.dm"
-#include "code\game\objects\items\bodybag.dm"
-#include "code\game\objects\items\candle.dm"
-#include "code\game\objects\items\cardboard_cutouts.dm"
-#include "code\game\objects\items\cards_ids.dm"
-#include "code\game\objects\items\charter.dm"
-#include "code\game\objects\items\chromosome.dm"
-#include "code\game\objects\items\chrono_eraser.dm"
-#include "code\game\objects\items\cigs_lighters.dm"
-#include "code\game\objects\items\clown_items.dm"
-#include "code\game\objects\items\control_wand.dm"
-#include "code\game\objects\items\cosmetics.dm"
-#include "code\game\objects\items\courtroom.dm"
-#include "code\game\objects\items\crayons.dm"
-#include "code\game\objects\items\defib.dm"
-#include "code\game\objects\items\dehy_carp.dm"
-#include "code\game\objects\items\dice.dm"
-#include "code\game\objects\items\dna_injector.dm"
-#include "code\game\objects\items\documents.dm"
-#include "code\game\objects\items\eightball.dm"
-#include "code\game\objects\items\extinguisher.dm"
-#include "code\game\objects\items\flamethrower.dm"
-#include "code\game\objects\items\gift.dm"
-#include "code\game\objects\items\granters.dm"
-#include "code\game\objects\items\handcuffs.dm"
-#include "code\game\objects\items\his_grace.dm"
-#include "code\game\objects\items\holosign_creator.dm"
-#include "code\game\objects\items\holy_weapons.dm"
-#include "code\game\objects\items\hot_potato.dm"
-#include "code\game\objects\items\inducer.dm"
-#include "code\game\objects\items\kitchen.dm"
-#include "code\game\objects\items\latexballoon.dm"
-#include "code\game\objects\items\lorebooks.dm"
-#include "code\game\objects\items\manuals.dm"
-#include "code\game\objects\items\mesmetron.dm"
-#include "code\game\objects\items\miscellaneous.dm"
-#include "code\game\objects\items\mop.dm"
-#include "code\game\objects\items\paint.dm"
-#include "code\game\objects\items\paiwire.dm"
-#include "code\game\objects\items\pet_carrier.dm"
-#include "code\game\objects\items\pinpointer.dm"
-#include "code\game\objects\items\plushes.dm"
-#include "code\game\objects\items\pneumaticCannon.dm"
-#include "code\game\objects\items\powerfist.dm"
-#include "code\game\objects\items\RCD.dm"
-#include "code\game\objects\items\RCL.dm"
-#include "code\game\objects\items\religion.dm"
-#include "code\game\objects\items\RPD.dm"
-#include "code\game\objects\items\RSF.dm"
-#include "code\game\objects\items\scrolls.dm"
-#include "code\game\objects\items\sharpener.dm"
-#include "code\game\objects\items\shields.dm"
-#include "code\game\objects\items\shooting_range.dm"
-#include "code\game\objects\items\signs.dm"
-#include "code\game\objects\items\singularityhammer.dm"
-#include "code\game\objects\items\stunbaton.dm"
-#include "code\game\objects\items\taster.dm"
-#include "code\game\objects\items\teleportation.dm"
-#include "code\game\objects\items\teleprod.dm"
-#include "code\game\objects\items\theft_tools.dm"
-#include "code\game\objects\items\toys.dm"
-#include "code\game\objects\items\trash.dm"
-#include "code\game\objects\items\twohanded.dm"
-#include "code\game\objects\items\vending_items.dm"
-#include "code\game\objects\items\weaponry.dm"
-#include "code\game\objects\items\circuitboards\circuitboard.dm"
-#include "code\game\objects\items\circuitboards\computer_circuitboards.dm"
-#include "code\game\objects\items\circuitboards\machine_circuitboards.dm"
-#include "code\game\objects\items\devices\aicard.dm"
-#include "code\game\objects\items\devices\anomaly_neutralizer.dm"
-#include "code\game\objects\items\devices\beacon.dm"
-#include "code\game\objects\items\devices\camera_bug.dm"
-#include "code\game\objects\items\devices\chameleonproj.dm"
-#include "code\game\objects\items\devices\compressionkit.dm"
-#include "code\game\objects\items\devices\dogborg_sleeper.dm"
-#include "code\game\objects\items\devices\doorCharge.dm"
-#include "code\game\objects\items\devices\electroadaptive_pseudocircuit.dm"
-#include "code\game\objects\items\devices\flashlight.dm"
-#include "code\game\objects\items\devices\forcefieldprojector.dm"
-#include "code\game\objects\items\devices\geiger_counter.dm"
-#include "code\game\objects\items\devices\glue.dm"
-#include "code\game\objects\items\devices\gps.dm"
-#include "code\game\objects\items\devices\instruments.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\multitool.dm"
-#include "code\game\objects\items\devices\paicard.dm"
-#include "code\game\objects\items\devices\pipe_painter.dm"
-#include "code\game\objects\items\devices\powersink.dm"
-#include "code\game\objects\items\devices\pressureplates.dm"
-#include "code\game\objects\items\devices\quantum_keycard.dm"
-#include "code\game\objects\items\devices\reverse_bear_trap.dm"
-#include "code\game\objects\items\devices\scanners.dm"
-#include "code\game\objects\items\devices\sensor_device.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\PDA\cart.dm"
-#include "code\game\objects\items\devices\PDA\PDA.dm"
-#include "code\game\objects\items\devices\PDA\PDA_types.dm"
-#include "code\game\objects\items\devices\PDA\radio.dm"
-#include "code\game\objects\items\devices\PDA\virus_cart.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\grenades\antigravity.dm"
-#include "code\game\objects\items\grenades\chem_grenade.dm"
-#include "code\game\objects\items\grenades\clusterbuster.dm"
-#include "code\game\objects\items\grenades\emgrenade.dm"
-#include "code\game\objects\items\grenades\flashbang.dm"
-#include "code\game\objects\items\grenades\ghettobomb.dm"
-#include "code\game\objects\items\grenades\grenade.dm"
-#include "code\game\objects\items\grenades\plastic.dm"
-#include "code\game\objects\items\grenades\smokebomb.dm"
-#include "code\game\objects\items\grenades\spawnergrenade.dm"
-#include "code\game\objects\items\grenades\syndieminibomb.dm"
-#include "code\game\objects\items\implants\implant.dm"
-#include "code\game\objects\items\implants\implant_abductor.dm"
-#include "code\game\objects\items\implants\implant_chem.dm"
-#include "code\game\objects\items\implants\implant_clown.dm"
-#include "code\game\objects\items\implants\implant_exile.dm"
-#include "code\game\objects\items\implants\implant_explosive.dm"
-#include "code\game\objects\items\implants\implant_freedom.dm"
-#include "code\game\objects\items\implants\implant_krav_maga.dm"
-#include "code\game\objects\items\implants\implant_mindshield.dm"
-#include "code\game\objects\items\implants\implant_misc.dm"
-#include "code\game\objects\items\implants\implant_radio.dm"
-#include "code\game\objects\items\implants\implant_slave.dm"
-#include "code\game\objects\items\implants\implant_spell.dm"
-#include "code\game\objects\items\implants\implant_stealth.dm"
-#include "code\game\objects\items\implants\implant_storage.dm"
-#include "code\game\objects\items\implants\implant_track.dm"
-#include "code\game\objects\items\implants\implant_uplink.dm"
-#include "code\game\objects\items\implants\implantcase.dm"
-#include "code\game\objects\items\implants\implantchair.dm"
-#include "code\game\objects\items\implants\implanter.dm"
-#include "code\game\objects\items\implants\implantpad.dm"
-#include "code\game\objects\items\melee\energy.dm"
-#include "code\game\objects\items\melee\misc.dm"
-#include "code\game\objects\items\melee\transforming.dm"
-#include "code\game\objects\items\robot\ai_upgrades.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\bscrystal.dm"
-#include "code\game\objects\items\stacks\cash.dm"
-#include "code\game\objects\items\stacks\medical.dm"
-#include "code\game\objects\items\stacks\rods.dm"
-#include "code\game\objects\items\stacks\stack.dm"
-#include "code\game\objects\items\stacks\telecrystal.dm"
-#include "code\game\objects\items\stacks\wrap.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\tile_mineral.dm"
-#include "code\game\objects\items\stacks\tiles\tile_reskinning.dm"
-#include "code\game\objects\items\stacks\tiles\tile_types.dm"
-#include "code\game\objects\items\storage\backpack.dm"
-#include "code\game\objects\items\storage\bags.dm"
-#include "code\game\objects\items\storage\belt.dm"
-#include "code\game\objects\items\storage\book.dm"
-#include "code\game\objects\items\storage\boxes.dm"
-#include "code\game\objects\items\storage\briefcase.dm"
-#include "code\game\objects\items\storage\dakis.dm"
-#include "code\game\objects\items\storage\fancy.dm"
-#include "code\game\objects\items\storage\firstaid.dm"
-#include "code\game\objects\items\storage\lockbox.dm"
-#include "code\game\objects\items\storage\secure.dm"
-#include "code\game\objects\items\storage\storage.dm"
-#include "code\game\objects\items\storage\toolbox.dm"
-#include "code\game\objects\items\storage\uplink_kits.dm"
-#include "code\game\objects\items\storage\wallets.dm"
-#include "code\game\objects\items\tanks\jetpack.dm"
-#include "code\game\objects\items\tanks\tank_types.dm"
-#include "code\game\objects\items\tanks\tanks.dm"
-#include "code\game\objects\items\tanks\watertank.dm"
-#include "code\game\objects\items\tools\crowbar.dm"
-#include "code\game\objects\items\tools\screwdriver.dm"
-#include "code\game\objects\items\tools\weldingtool.dm"
-#include "code\game\objects\items\tools\wirecutters.dm"
-#include "code\game\objects\items\tools\wrench.dm"
-#include "code\game\objects\structures\ai_core.dm"
-#include "code\game\objects\structures\aliens.dm"
-#include "code\game\objects\structures\artstuff.dm"
-#include "code\game\objects\structures\barsigns.dm"
-#include "code\game\objects\structures\bedsheet_bin.dm"
-#include "code\game\objects\structures\destructible_structures.dm"
-#include "code\game\objects\structures\displaycase.dm"
-#include "code\game\objects\structures\divine.dm"
-#include "code\game\objects\structures\door_assembly.dm"
-#include "code\game\objects\structures\door_assembly_types.dm"
-#include "code\game\objects\structures\dresser.dm"
-#include "code\game\objects\structures\electricchair.dm"
-#include "code\game\objects\structures\extinguisher.dm"
-#include "code\game\objects\structures\false_walls.dm"
-#include "code\game\objects\structures\fence.dm"
-#include "code\game\objects\structures\fireaxe.dm"
-#include "code\game\objects\structures\fireplace.dm"
-#include "code\game\objects\structures\flora.dm"
-#include "code\game\objects\structures\fluff.dm"
-#include "code\game\objects\structures\ghost_role_spawners.dm"
-#include "code\game\objects\structures\girders.dm"
-#include "code\game\objects\structures\grille.dm"
-#include "code\game\objects\structures\guillotine.dm"
-#include "code\game\objects\structures\guncase.dm"
-#include "code\game\objects\structures\headpike.dm"
-#include "code\game\objects\structures\hivebot.dm"
-#include "code\game\objects\structures\holosign.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\lattice.dm"
-#include "code\game\objects\structures\life_candle.dm"
-#include "code\game\objects\structures\loom.dm"
-#include "code\game\objects\structures\manned_turret.dm"
-#include "code\game\objects\structures\medkit.dm"
-#include "code\game\objects\structures\memorial.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\petrified_statue.dm"
-#include "code\game\objects\structures\plasticflaps.dm"
-#include "code\game\objects\structures\reflector.dm"
-#include "code\game\objects\structures\safe.dm"
-#include "code\game\objects\structures\showcase.dm"
-#include "code\game\objects\structures\spawner.dm"
-#include "code\game\objects\structures\spirit_board.dm"
-#include "code\game\objects\structures\stairs.dm"
-#include "code\game\objects\structures\statues.dm"
-#include "code\game\objects\structures\table_frames.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\traps.dm"
-#include "code\game\objects\structures\trash_piles.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\beds_chairs\alien_nest.dm"
-#include "code\game\objects\structures\beds_chairs\bed.dm"
-#include "code\game\objects\structures\beds_chairs\chair.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\closets\bodybag.dm"
-#include "code\game\objects\structures\crates_lockers\closets\cardboardbox.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\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\hydroponics.dm"
-#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm"
-#include "code\game\objects\structures\crates_lockers\closets\secure\misc.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\crates_lockers\crates\bins.dm"
-#include "code\game\objects\structures\crates_lockers\crates\critter.dm"
-#include "code\game\objects\structures\crates_lockers\crates\large.dm"
-#include "code\game\objects\structures\crates_lockers\crates\secure.dm"
-#include "code\game\objects\structures\crates_lockers\crates\wooden.dm"
-#include "code\game\objects\structures\lavaland\necropolis_tendril.dm"
-#include "code\game\objects\structures\signs\_signs.dm"
-#include "code\game\objects\structures\signs\signs_departments.dm"
-#include "code\game\objects\structures\signs\signs_maps.dm"
-#include "code\game\objects\structures\signs\signs_plaques.dm"
-#include "code\game\objects\structures\signs\signs_warning.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_construction.dm"
-#include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm"
-#include "code\game\turfs\baseturf_skipover.dm"
-#include "code\game\turfs\change_turf.dm"
-#include "code\game\turfs\closed.dm"
-#include "code\game\turfs\open.dm"
-#include "code\game\turfs\turf.dm"
-#include "code\game\turfs\openspace\openspace.dm"
-#include "code\game\turfs\simulated\chasm.dm"
-#include "code\game\turfs\simulated\dirtystation.dm"
-#include "code\game\turfs\simulated\floor.dm"
-#include "code\game\turfs\simulated\lava.dm"
-#include "code\game\turfs\simulated\minerals.dm"
-#include "code\game\turfs\simulated\reebe_void.dm"
-#include "code\game\turfs\simulated\river.dm"
-#include "code\game\turfs\simulated\walls.dm"
-#include "code\game\turfs\simulated\water.dm"
-#include "code\game\turfs\simulated\floor\fancy_floor.dm"
-#include "code\game\turfs\simulated\floor\light_floor.dm"
-#include "code\game\turfs\simulated\floor\mineral_floor.dm"
-#include "code\game\turfs\simulated\floor\misc_floor.dm"
-#include "code\game\turfs\simulated\floor\plasteel_floor.dm"
-#include "code\game\turfs\simulated\floor\plating.dm"
-#include "code\game\turfs\simulated\floor\reinf_floor.dm"
-#include "code\game\turfs\simulated\floor\plating\asteroid.dm"
-#include "code\game\turfs\simulated\floor\plating\dirt.dm"
-#include "code\game\turfs\simulated\floor\plating\misc_plating.dm"
-#include "code\game\turfs\simulated\wall\mineral_walls.dm"
-#include "code\game\turfs\simulated\wall\misc_walls.dm"
-#include "code\game\turfs\simulated\wall\reinf_walls.dm"
-#include "code\game\turfs\space\space.dm"
-#include "code\game\turfs\space\transit.dm"
-#include "code\modules\admin\admin.dm"
-#include "code\modules\admin\admin_investigate.dm"
-#include "code\modules\admin\admin_ranks.dm"
-#include "code\modules\admin\admin_verbs.dm"
-#include "code\modules\admin\adminmenu.dm"
-#include "code\modules\admin\antag_panel.dm"
-#include "code\modules\admin\banjob.dm"
-#include "code\modules\admin\chat_commands.dm"
-#include "code\modules\admin\check_antagonists.dm"
-#include "code\modules\admin\create_mob.dm"
-#include "code\modules\admin\create_object.dm"
-#include "code\modules\admin\create_poll.dm"
-#include "code\modules\admin\create_turf.dm"
-#include "code\modules\admin\fun_balloon.dm"
-#include "code\modules\admin\holder2.dm"
-#include "code\modules\admin\ipintel.dm"
-#include "code\modules\admin\IsBanned.dm"
-#include "code\modules\admin\NewBan.dm"
-#include "code\modules\admin\permissionedit.dm"
-#include "code\modules\admin\player_panel.dm"
-#include "code\modules\admin\secrets.dm"
-#include "code\modules\admin\sound_emitter.dm"
-#include "code\modules\admin\sql_message_system.dm"
-#include "code\modules\admin\stickyban.dm"
-#include "code\modules\admin\topic.dm"
-#include "code\modules\admin\whitelist.dm"
-#include "code\modules\admin\DB_ban\functions.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\ak47s.dm"
-#include "code\modules\admin\verbs\atmosdebug.dm"
-#include "code\modules\admin\verbs\bluespacearty.dm"
-#include "code\modules\admin\verbs\borgpanel.dm"
-#include "code\modules\admin\verbs\BrokenInhands.dm"
-#include "code\modules\admin\verbs\cinematic.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\dice.dm"
-#include "code\modules\admin\verbs\fps.dm"
-#include "code\modules\admin\verbs\getlogs.dm"
-#include "code\modules\admin\verbs\individual_logging.dm"
-#include "code\modules\admin\verbs\machine_upgrade.dm"
-#include "code\modules\admin\verbs\manipulate_organs.dm"
-#include "code\modules\admin\verbs\map_template_loadverb.dm"
-#include "code\modules\admin\verbs\mapping.dm"
-#include "code\modules\admin\verbs\maprotation.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\panicbunker.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\reestablish_db_connection.dm"
-#include "code\modules\admin\verbs\spawnfloorcluwne.dm"
-#include "code\modules\admin\verbs\spawnobjasmob.dm"
-#include "code\modules\admin\verbs\tripAI.dm"
-#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm"
-#include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm"
-#include "code\modules\admin\verbs\SDQL2\SDQL_2_wrappers.dm"
-#include "code\modules\antagonists\_common\antag_datum.dm"
-#include "code\modules\antagonists\_common\antag_helpers.dm"
-#include "code\modules\antagonists\_common\antag_hud.dm"
-#include "code\modules\antagonists\_common\antag_spawner.dm"
-#include "code\modules\antagonists\_common\antag_team.dm"
-#include "code\modules\antagonists\abductor\abductor.dm"
-#include "code\modules\antagonists\abductor\abductee\abductee_objectives.dm"
-#include "code\modules\antagonists\abductor\equipment\abduction_gear.dm"
-#include "code\modules\antagonists\abductor\equipment\abduction_outfits.dm"
-#include "code\modules\antagonists\abductor\equipment\abduction_surgery.dm"
-#include "code\modules\antagonists\abductor\equipment\gland.dm"
-#include "code\modules\antagonists\abductor\machinery\camera.dm"
-#include "code\modules\antagonists\abductor\machinery\console.dm"
-#include "code\modules\antagonists\abductor\machinery\dispenser.dm"
-#include "code\modules\antagonists\abductor\machinery\experiment.dm"
-#include "code\modules\antagonists\abductor\machinery\pad.dm"
-#include "code\modules\antagonists\blob\blob.dm"
-#include "code\modules\antagonists\blob\blob\blob_report.dm"
-#include "code\modules\antagonists\blob\blob\overmind.dm"
-#include "code\modules\antagonists\blob\blob\powers.dm"
-#include "code\modules\antagonists\blob\blob\theblob.dm"
-#include "code\modules\antagonists\blob\blob\blobs\blob_mobs.dm"
-#include "code\modules\antagonists\blob\blob\blobs\core.dm"
-#include "code\modules\antagonists\blob\blob\blobs\factory.dm"
-#include "code\modules\antagonists\blob\blob\blobs\node.dm"
-#include "code\modules\antagonists\blob\blob\blobs\resource.dm"
-#include "code\modules\antagonists\blob\blob\blobs\shield.dm"
-#include "code\modules\antagonists\bloodsucker\bloodsucker_flaws.dm"
-#include "code\modules\antagonists\bloodsucker\bloodsucker_integration.dm"
-#include "code\modules\antagonists\bloodsucker\bloodsucker_life.dm"
-#include "code\modules\antagonists\bloodsucker\bloodsucker_objectives.dm"
-#include "code\modules\antagonists\bloodsucker\bloodsucker_powers.dm"
-#include "code\modules\antagonists\bloodsucker\bloodsucker_sunlight.dm"
-#include "code\modules\antagonists\bloodsucker\bloodsucker_ui.dm"
-#include "code\modules\antagonists\bloodsucker\datum_bloodsucker.dm"
-#include "code\modules\antagonists\bloodsucker\datum_hunter.dm"
-#include "code\modules\antagonists\bloodsucker\datum_vassal.dm"
-#include "code\modules\antagonists\bloodsucker\items\bloodsucker_organs.dm"
-#include "code\modules\antagonists\bloodsucker\items\bloodsucker_stake.dm"
-#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_coffin.dm"
-#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_crypt.dm"
-#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_lair.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_brawn.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_cloak.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_feed.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_fortitude.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_gohome.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_haste.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_lunge.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_masquerade.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_mesmerize.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_trespass.dm"
-#include "code\modules\antagonists\bloodsucker\powers\bs_veil.dm"
-#include "code\modules\antagonists\bloodsucker\powers\v_recuperate.dm"
-#include "code\modules\antagonists\brainwashing\brainwashing.dm"
-#include "code\modules\antagonists\brother\brother.dm"
-#include "code\modules\antagonists\changeling\cellular_emporium.dm"
-#include "code\modules\antagonists\changeling\changeling.dm"
-#include "code\modules\antagonists\changeling\changeling_power.dm"
-#include "code\modules\antagonists\changeling\powers\absorb.dm"
-#include "code\modules\antagonists\changeling\powers\adrenaline.dm"
-#include "code\modules\antagonists\changeling\powers\augmented_eyesight.dm"
-#include "code\modules\antagonists\changeling\powers\biodegrade.dm"
-#include "code\modules\antagonists\changeling\powers\chameleon_skin.dm"
-#include "code\modules\antagonists\changeling\powers\digitalcamo.dm"
-#include "code\modules\antagonists\changeling\powers\fakedeath.dm"
-#include "code\modules\antagonists\changeling\powers\fleshmend.dm"
-#include "code\modules\antagonists\changeling\powers\headcrab.dm"
-#include "code\modules\antagonists\changeling\powers\hivemind.dm"
-#include "code\modules\antagonists\changeling\powers\humanform.dm"
-#include "code\modules\antagonists\changeling\powers\lesserform.dm"
-#include "code\modules\antagonists\changeling\powers\linglink.dm"
-#include "code\modules\antagonists\changeling\powers\mimic_voice.dm"
-#include "code\modules\antagonists\changeling\powers\mutations.dm"
-#include "code\modules\antagonists\changeling\powers\panacea.dm"
-#include "code\modules\antagonists\changeling\powers\pheromone_receptors.dm"
-#include "code\modules\antagonists\changeling\powers\regenerate.dm"
-#include "code\modules\antagonists\changeling\powers\revive.dm"
-#include "code\modules\antagonists\changeling\powers\shriek.dm"
-#include "code\modules\antagonists\changeling\powers\spiders.dm"
-#include "code\modules\antagonists\changeling\powers\strained_muscles.dm"
-#include "code\modules\antagonists\changeling\powers\tiny_prick.dm"
-#include "code\modules\antagonists\changeling\powers\transform.dm"
-#include "code\modules\antagonists\clockcult\clock_effect.dm"
-#include "code\modules\antagonists\clockcult\clock_item.dm"
-#include "code\modules\antagonists\clockcult\clock_mobs.dm"
-#include "code\modules\antagonists\clockcult\clock_scripture.dm"
-#include "code\modules\antagonists\clockcult\clock_structure.dm"
-#include "code\modules\antagonists\clockcult\clockcult.dm"
-#include "code\modules\antagonists\clockcult\clock_effects\city_of_cogs_rift.dm"
-#include "code\modules\antagonists\clockcult\clock_effects\clock_overlay.dm"
-#include "code\modules\antagonists\clockcult\clock_effects\clock_sigils.dm"
-#include "code\modules\antagonists\clockcult\clock_effects\general_markers.dm"
-#include "code\modules\antagonists\clockcult\clock_effects\servant_blocker.dm"
-#include "code\modules\antagonists\clockcult\clock_effects\spatial_gateway.dm"
-#include "code\modules\antagonists\clockcult\clock_helpers\clock_powerdrain.dm"
-#include "code\modules\antagonists\clockcult\clock_helpers\component_helpers.dm"
-#include "code\modules\antagonists\clockcult\clock_helpers\fabrication_helpers.dm"
-#include "code\modules\antagonists\clockcult\clock_helpers\hierophant_network.dm"
-#include "code\modules\antagonists\clockcult\clock_helpers\power_helpers.dm"
-#include "code\modules\antagonists\clockcult\clock_helpers\ratvarian_language.dm"
-#include "code\modules\antagonists\clockcult\clock_helpers\scripture_checks.dm"
-#include "code\modules\antagonists\clockcult\clock_helpers\slab_abilities.dm"
-#include "code\modules\antagonists\clockcult\clock_items\clock_components.dm"
-#include "code\modules\antagonists\clockcult\clock_items\clockwork_armor.dm"
-#include "code\modules\antagonists\clockcult\clock_items\clockwork_slab.dm"
-#include "code\modules\antagonists\clockcult\clock_items\clockwork_weaponry.dm"
-#include "code\modules\antagonists\clockcult\clock_items\construct_chassis.dm"
-#include "code\modules\antagonists\clockcult\clock_items\integration_cog.dm"
-#include "code\modules\antagonists\clockcult\clock_items\judicial_visor.dm"
-#include "code\modules\antagonists\clockcult\clock_items\replica_fabricator.dm"
-#include "code\modules\antagonists\clockcult\clock_items\soul_vessel.dm"
-#include "code\modules\antagonists\clockcult\clock_items\wraith_spectacles.dm"
-#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\_call_weapon.dm"
-#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_spear.dm"
-#include "code\modules\antagonists\clockcult\clock_mobs\_eminence.dm"
-#include "code\modules\antagonists\clockcult\clock_mobs\clockwork_marauder.dm"
-#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_applications.dm"
-#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_cyborg.dm"
-#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_drivers.dm"
-#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_scripts.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\_trap_object.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\ark_of_the_clockwork_justicar.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\clockwork_obelisk.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\eminence_spire.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\heralds_beacon.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\mania_motor.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\ocular_warden.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\ratvar_the_clockwork_justicar.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\reflector.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\stargazer.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\taunting_trail.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\wall_gear.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\lever.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor_mech.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\repeater.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\traps\brass_skewer.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\traps\power_null.dm"
-#include "code\modules\antagonists\clockcult\clock_structures\traps\steam_vent.dm"
-#include "code\modules\antagonists\cult\blood_magic.dm"
-#include "code\modules\antagonists\cult\cult.dm"
-#include "code\modules\antagonists\cult\cult_comms.dm"
-#include "code\modules\antagonists\cult\cult_items.dm"
-#include "code\modules\antagonists\cult\cult_structures.dm"
-#include "code\modules\antagonists\cult\ritual.dm"
-#include "code\modules\antagonists\cult\rune_spawn_action.dm"
-#include "code\modules\antagonists\cult\runes.dm"
-#include "code\modules\antagonists\devil\devil.dm"
-#include "code\modules\antagonists\devil\devil_helpers.dm"
-#include "code\modules\antagonists\devil\imp\imp.dm"
-#include "code\modules\antagonists\devil\sintouched\objectives.dm"
-#include "code\modules\antagonists\devil\sintouched\sintouched.dm"
-#include "code\modules\antagonists\devil\true_devil\_true_devil.dm"
-#include "code\modules\antagonists\devil\true_devil\inventory.dm"
-#include "code\modules\antagonists\disease\disease_abilities.dm"
-#include "code\modules\antagonists\disease\disease_datum.dm"
-#include "code\modules\antagonists\disease\disease_disease.dm"
-#include "code\modules\antagonists\disease\disease_event.dm"
-#include "code\modules\antagonists\disease\disease_mob.dm"
-#include "code\modules\antagonists\ert\ert.dm"
-#include "code\modules\antagonists\greentext\greentext.dm"
-#include "code\modules\antagonists\greybois\greybois.dm"
-#include "code\modules\antagonists\highlander\highlander.dm"
-#include "code\modules\antagonists\monkey\monkey.dm"
-#include "code\modules\antagonists\morph\morph.dm"
-#include "code\modules\antagonists\morph\morph_antag.dm"
-#include "code\modules\antagonists\nightmare\nightmare.dm"
-#include "code\modules\antagonists\ninja\ninja.dm"
-#include "code\modules\antagonists\nukeop\clownop.dm"
-#include "code\modules\antagonists\nukeop\nukeop.dm"
-#include "code\modules\antagonists\nukeop\equipment\nuclear_challenge.dm"
-#include "code\modules\antagonists\nukeop\equipment\nuclearbomb.dm"
-#include "code\modules\antagonists\nukeop\equipment\pinpointer.dm"
-#include "code\modules\antagonists\official\official.dm"
-#include "code\modules\antagonists\overthrow\overthrow.dm"
-#include "code\modules\antagonists\overthrow\overthrow_converter.dm"
-#include "code\modules\antagonists\overthrow\overthrow_team.dm"
-#include "code\modules\antagonists\pirate\pirate.dm"
-#include "code\modules\antagonists\revenant\revenant.dm"
-#include "code\modules\antagonists\revenant\revenant_abilities.dm"
-#include "code\modules\antagonists\revenant\revenant_antag.dm"
-#include "code\modules\antagonists\revenant\revenant_blight.dm"
-#include "code\modules\antagonists\revenant\revenant_spawn_event.dm"
-#include "code\modules\antagonists\revolution\revolution.dm"
-#include "code\modules\antagonists\separatist\separatist.dm"
-#include "code\modules\antagonists\slaughter\slaughter.dm"
-#include "code\modules\antagonists\slaughter\slaughter_antag.dm"
-#include "code\modules\antagonists\slaughter\slaughterevent.dm"
-#include "code\modules\antagonists\survivalist\survivalist.dm"
-#include "code\modules\antagonists\swarmer\swarmer.dm"
-#include "code\modules\antagonists\swarmer\swarmer_event.dm"
-#include "code\modules\antagonists\traitor\datum_traitor.dm"
-#include "code\modules\antagonists\traitor\equipment\Malf_Modules.dm"
-#include "code\modules\antagonists\traitor\IAA\internal_affairs.dm"
-#include "code\modules\antagonists\valentines\heartbreaker.dm"
-#include "code\modules\antagonists\valentines\valentine.dm"
-#include "code\modules\antagonists\wishgranter\wishgranter.dm"
-#include "code\modules\antagonists\wizard\wizard.dm"
-#include "code\modules\antagonists\wizard\equipment\artefact.dm"
-#include "code\modules\antagonists\wizard\equipment\soulstone.dm"
-#include "code\modules\antagonists\wizard\equipment\spellbook.dm"
-#include "code\modules\antagonists\xeno\xeno.dm"
-#include "code\modules\assembly\assembly.dm"
-#include "code\modules\assembly\bomb.dm"
-#include "code\modules\assembly\doorcontrol.dm"
-#include "code\modules\assembly\flash.dm"
-#include "code\modules\assembly\health.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\atmospherics\multiz.dm"
-#include "code\modules\atmospherics\environmental\LINDA_fire.dm"
-#include "code\modules\atmospherics\environmental\LINDA_system.dm"
-#include "code\modules\atmospherics\environmental\LINDA_turf_tile.dm"
-#include "code\modules\atmospherics\gasmixtures\gas_mixture.dm"
-#include "code\modules\atmospherics\gasmixtures\gas_types.dm"
-#include "code\modules\atmospherics\gasmixtures\immutable_mixtures.dm"
-#include "code\modules\atmospherics\gasmixtures\reactions.dm"
-#include "code\modules\atmospherics\machinery\airalarm.dm"
-#include "code\modules\atmospherics\machinery\atmosmachinery.dm"
-#include "code\modules\atmospherics\machinery\datum_pipeline.dm"
-#include "code\modules\atmospherics\machinery\components\components_base.dm"
-#include "code\modules\atmospherics\machinery\components\binary_devices\binary_devices.dm"
-#include "code\modules\atmospherics\machinery\components\binary_devices\circulator.dm"
-#include "code\modules\atmospherics\machinery\components\binary_devices\dp_vent_pump.dm"
-#include "code\modules\atmospherics\machinery\components\binary_devices\passive_gate.dm"
-#include "code\modules\atmospherics\machinery\components\binary_devices\pump.dm"
-#include "code\modules\atmospherics\machinery\components\binary_devices\relief_valve.dm"
-#include "code\modules\atmospherics\machinery\components\binary_devices\valve.dm"
-#include "code\modules\atmospherics\machinery\components\binary_devices\volume_pump.dm"
-#include "code\modules\atmospherics\machinery\components\trinary_devices\filter.dm"
-#include "code\modules\atmospherics\machinery\components\trinary_devices\mixer.dm"
-#include "code\modules\atmospherics\machinery\components\trinary_devices\trinary_devices.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\cryo.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\heat_exchanger.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\outlet_injector.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\passive_vent.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\portables_connector.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\relief_valve.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\tank.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\thermomachine.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\unary_devices.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\vent_pump.dm"
-#include "code\modules\atmospherics\machinery\components\unary_devices\vent_scrubber.dm"
-#include "code\modules\atmospherics\machinery\other\meter.dm"
-#include "code\modules\atmospherics\machinery\other\miner.dm"
-#include "code\modules\atmospherics\machinery\pipes\layermanifold.dm"
-#include "code\modules\atmospherics\machinery\pipes\manifold.dm"
-#include "code\modules\atmospherics\machinery\pipes\manifold4w.dm"
-#include "code\modules\atmospherics\machinery\pipes\mapping.dm"
-#include "code\modules\atmospherics\machinery\pipes\pipes.dm"
-#include "code\modules\atmospherics\machinery\pipes\simple.dm"
-#include "code\modules\atmospherics\machinery\pipes\heat_exchange\he_pipes.dm"
-#include "code\modules\atmospherics\machinery\pipes\heat_exchange\junction.dm"
-#include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold.dm"
-#include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold4w.dm"
-#include "code\modules\atmospherics\machinery\pipes\heat_exchange\simple.dm"
-#include "code\modules\atmospherics\machinery\portable\canister.dm"
-#include "code\modules\atmospherics\machinery\portable\portable_atmospherics.dm"
-#include "code\modules\atmospherics\machinery\portable\pump.dm"
-#include "code\modules\atmospherics\machinery\portable\scrubber.dm"
-#include "code\modules\awaymissions\away_props.dm"
-#include "code\modules\awaymissions\bluespaceartillery.dm"
-#include "code\modules\awaymissions\capture_the_flag.dm"
-#include "code\modules\awaymissions\corpse.dm"
-#include "code\modules\awaymissions\exile.dm"
-#include "code\modules\awaymissions\gateway.dm"
-#include "code\modules\awaymissions\pamphlet.dm"
-#include "code\modules\awaymissions\signpost.dm"
-#include "code\modules\awaymissions\super_secret_room.dm"
-#include "code\modules\awaymissions\zlevel.dm"
-#include "code\modules\awaymissions\mission_code\Academy.dm"
-#include "code\modules\awaymissions\mission_code\Cabin.dm"
-#include "code\modules\awaymissions\mission_code\caves.dm"
-#include "code\modules\awaymissions\mission_code\centcomAway.dm"
-#include "code\modules\awaymissions\mission_code\challenge.dm"
-#include "code\modules\awaymissions\mission_code\moonoutpost19.dm"
-#include "code\modules\awaymissions\mission_code\murderdome.dm"
-#include "code\modules\awaymissions\mission_code\research.dm"
-#include "code\modules\awaymissions\mission_code\snowdin.dm"
-#include "code\modules\awaymissions\mission_code\spacebattle.dm"
-#include "code\modules\awaymissions\mission_code\stationCollision.dm"
-#include "code\modules\awaymissions\mission_code\undergroundoutpost45.dm"
-#include "code\modules\awaymissions\mission_code\wildwest.dm"
-#include "code\modules\bsql\includes.dm"
-#include "code\modules\buildmode\bm_mode.dm"
-#include "code\modules\buildmode\buildmode.dm"
-#include "code\modules\buildmode\buttons.dm"
-#include "code\modules\buildmode\effects\line.dm"
-#include "code\modules\buildmode\submodes\advanced.dm"
-#include "code\modules\buildmode\submodes\area_edit.dm"
-#include "code\modules\buildmode\submodes\basic.dm"
-#include "code\modules\buildmode\submodes\boom.dm"
-#include "code\modules\buildmode\submodes\copy.dm"
-#include "code\modules\buildmode\submodes\fill.dm"
-#include "code\modules\buildmode\submodes\mapgen.dm"
-#include "code\modules\buildmode\submodes\throwing.dm"
-#include "code\modules\buildmode\submodes\variable_edit.dm"
-#include "code\modules\cargo\bounty.dm"
-#include "code\modules\cargo\bounty_console.dm"
-#include "code\modules\cargo\centcom_podlauncher.dm"
-#include "code\modules\cargo\console.dm"
-#include "code\modules\cargo\export_scanner.dm"
-#include "code\modules\cargo\exports.dm"
-#include "code\modules\cargo\expressconsole.dm"
-#include "code\modules\cargo\gondolapod.dm"
-#include "code\modules\cargo\order.dm"
-#include "code\modules\cargo\packs.dm"
-#include "code\modules\cargo\supplypod.dm"
-#include "code\modules\cargo\supplypod_beacon.dm"
-#include "code\modules\cargo\bounties\assistant.dm"
-#include "code\modules\cargo\bounties\botany.dm"
-#include "code\modules\cargo\bounties\chef.dm"
-#include "code\modules\cargo\bounties\engineering.dm"
-#include "code\modules\cargo\bounties\item.dm"
-#include "code\modules\cargo\bounties\mech.dm"
-#include "code\modules\cargo\bounties\medical.dm"
-#include "code\modules\cargo\bounties\mining.dm"
-#include "code\modules\cargo\bounties\reagent.dm"
-#include "code\modules\cargo\bounties\science.dm"
-#include "code\modules\cargo\bounties\security.dm"
-#include "code\modules\cargo\bounties\slime.dm"
-#include "code\modules\cargo\bounties\special.dm"
-#include "code\modules\cargo\bounties\virus.dm"
-#include "code\modules\cargo\exports\food_wine.dm"
-#include "code\modules\cargo\exports\gear.dm"
-#include "code\modules\cargo\exports\large_objects.dm"
-#include "code\modules\cargo\exports\manifest.dm"
-#include "code\modules\cargo\exports\materials.dm"
-#include "code\modules\cargo\exports\organs_robotics.dm"
-#include "code\modules\cargo\exports\parts.dm"
-#include "code\modules\cargo\exports\seeds.dm"
-#include "code\modules\cargo\exports\sheets.dm"
-#include "code\modules\cargo\exports\tools.dm"
-#include "code\modules\cargo\exports\weapons.dm"
-#include "code\modules\cargo\packs\armory.dm"
-#include "code\modules\cargo\packs\costumes_toys.dm"
-#include "code\modules\cargo\packs\emergency.dm"
-#include "code\modules\cargo\packs\engine.dm"
-#include "code\modules\cargo\packs\engineering.dm"
-#include "code\modules\cargo\packs\livestock.dm"
-#include "code\modules\cargo\packs\materials.dm"
-#include "code\modules\cargo\packs\medical.dm"
-#include "code\modules\cargo\packs\misc.dm"
-#include "code\modules\cargo\packs\organic.dm"
-#include "code\modules\cargo\packs\science.dm"
-#include "code\modules\cargo\packs\security.dm"
-#include "code\modules\cargo\packs\service.dm"
-#include "code\modules\chatter\chatter.dm"
-#include "code\modules\client\asset_cache.dm"
-#include "code\modules\client\client_colour.dm"
-#include "code\modules\client\client_defines.dm"
-#include "code\modules\client\client_procs.dm"
-#include "code\modules\client\darkmode.dm"
-#include "code\modules\client\message.dm"
-#include "code\modules\client\player_details.dm"
-#include "code\modules\client\preferences.dm"
-#include "code\modules\client\preferences_savefile.dm"
-#include "code\modules\client\preferences_toggles.dm"
-#include "code\modules\client\preferences_vr.dm"
-#include "code\modules\client\verbs\aooc.dm"
-#include "code\modules\client\verbs\etips.dm"
-#include "code\modules\client\verbs\looc.dm"
-#include "code\modules\client\verbs\ooc.dm"
-#include "code\modules\client\verbs\ping.dm"
-#include "code\modules\client\verbs\suicide.dm"
-#include "code\modules\client\verbs\who.dm"
-#include "code\modules\clothing\chameleon.dm"
-#include "code\modules\clothing\clothing.dm"
-#include "code\modules\clothing\ears\_ears.dm"
-#include "code\modules\clothing\glasses\_glasses.dm"
-#include "code\modules\clothing\glasses\engine_goggles.dm"
-#include "code\modules\clothing\glasses\hud.dm"
-#include "code\modules\clothing\glasses\vg_glasses.dm"
-#include "code\modules\clothing\gloves\_gloves.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\ring.dm"
-#include "code\modules\clothing\gloves\vg_gloves.dm"
-#include "code\modules\clothing\head\_head.dm"
-#include "code\modules\clothing\head\beanie.dm"
-#include "code\modules\clothing\head\cit_hats.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\head\vg_hats.dm"
-#include "code\modules\clothing\masks\_masks.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\hailer.dm"
-#include "code\modules\clothing\masks\miscellaneous.dm"
-#include "code\modules\clothing\masks\vg_masks.dm"
-#include "code\modules\clothing\neck\_neck.dm"
-#include "code\modules\clothing\outfits\ert.dm"
-#include "code\modules\clothing\outfits\event.dm"
-#include "code\modules\clothing\outfits\plasmaman.dm"
-#include "code\modules\clothing\outfits\standard.dm"
-#include "code\modules\clothing\outfits\vr.dm"
-#include "code\modules\clothing\outfits\vv_outfit.dm"
-#include "code\modules\clothing\shoes\_shoes.dm"
-#include "code\modules\clothing\shoes\bananashoes.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\shoes\taeclowndo.dm"
-#include "code\modules\clothing\shoes\vg_shoes.dm"
-#include "code\modules\clothing\spacesuits\_spacesuits.dm"
-#include "code\modules\clothing\spacesuits\chronosuit.dm"
-#include "code\modules\clothing\spacesuits\hardsuit.dm"
-#include "code\modules\clothing\spacesuits\miscellaneous.dm"
-#include "code\modules\clothing\spacesuits\plasmamen.dm"
-#include "code\modules\clothing\spacesuits\syndi.dm"
-#include "code\modules\clothing\spacesuits\vg_spess.dm"
-#include "code\modules\clothing\suits\_suits.dm"
-#include "code\modules\clothing\suits\armor.dm"
-#include "code\modules\clothing\suits\bio.dm"
-#include "code\modules\clothing\suits\cloaks.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\reactive_armour.dm"
-#include "code\modules\clothing\suits\toggles.dm"
-#include "code\modules\clothing\suits\utility.dm"
-#include "code\modules\clothing\suits\vg_suits.dm"
-#include "code\modules\clothing\suits\wiz_robe.dm"
-#include "code\modules\clothing\under\_under.dm"
-#include "code\modules\clothing\under\accessories.dm"
-#include "code\modules\clothing\under\color.dm"
-#include "code\modules\clothing\under\miscellaneous.dm"
-#include "code\modules\clothing\under\pants.dm"
-#include "code\modules\clothing\under\shorts.dm"
-#include "code\modules\clothing\under\syndicate.dm"
-#include "code\modules\clothing\under\trek.dm"
-#include "code\modules\clothing\under\vg_under.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\clothing\under\jobs\Plasmaman\civilian_service.dm"
-#include "code\modules\clothing\under\jobs\Plasmaman\engineering.dm"
-#include "code\modules\clothing\under\jobs\Plasmaman\medsci.dm"
-#include "code\modules\clothing\under\jobs\Plasmaman\security.dm"
-#include "code\modules\crafting\craft.dm"
-#include "code\modules\crafting\guncrafting.dm"
-#include "code\modules\crafting\recipes.dm"
-#include "code\modules\crafting\recipes\recipes_clothing.dm"
-#include "code\modules\crafting\recipes\recipes_misc.dm"
-#include "code\modules\crafting\recipes\recipes_primal.dm"
-#include "code\modules\crafting\recipes\recipes_robot.dm"
-#include "code\modules\crafting\recipes\recipes_weapon_and_ammo.dm"
-#include "code\modules\detectivework\detective_work.dm"
-#include "code\modules\detectivework\evidence.dm"
-#include "code\modules\detectivework\scanner.dm"
-#include "code\modules\emoji\emoji_parse.dm"
-#include "code\modules\error_handler\error_handler.dm"
-#include "code\modules\error_handler\error_viewer.dm"
-#include "code\modules\events\_event.dm"
-#include "code\modules\events\abductor.dm"
-#include "code\modules\events\alien_infestation.dm"
-#include "code\modules\events\anomaly.dm"
-#include "code\modules\events\anomaly_bluespace.dm"
-#include "code\modules\events\anomaly_flux.dm"
-#include "code\modules\events\anomaly_grav.dm"
-#include "code\modules\events\anomaly_pyro.dm"
-#include "code\modules\events\anomaly_vortex.dm"
-#include "code\modules\events\aurora_aquilae.dm"
-#include "code\modules\events\aurora_caelus.dm"
-#include "code\modules\events\blob.dm"
-#include "code\modules\events\brand_intelligence.dm"
-#include "code\modules\events\bureaucratic_error.dm"
-#include "code\modules\events\camerafailure.dm"
-#include "code\modules\events\carp_migration.dm"
-#include "code\modules\events\carpteam.dm"
-#include "code\modules\events\communications_blackout.dm"
-#include "code\modules\events\devil.dm"
-#include "code\modules\events\disease_outbreak.dm"
-#include "code\modules\events\dust.dm"
-#include "code\modules\events\electrical_storm.dm"
-#include "code\modules\events\false_alarm.dm"
-#include "code\modules\events\floorcluwne.dm"
-#include "code\modules\events\ghost_role.dm"
-#include "code\modules\events\grid_check.dm"
-#include "code\modules\events\heart_attack.dm"
-#include "code\modules\events\high_priority_bounty.dm"
-#include "code\modules\events\immovable_rod.dm"
-#include "code\modules\events\ion_storm.dm"
-#include "code\modules\events\major_dust.dm"
-#include "code\modules\events\mass_hallucination.dm"
-#include "code\modules\events\meateor_wave.dm"
-#include "code\modules\events\meteor_wave.dm"
-#include "code\modules\events\mice_migration.dm"
-#include "code\modules\events\nightmare.dm"
-#include "code\modules\events\operative.dm"
-#include "code\modules\events\pirates.dm"
-#include "code\modules\events\portal_storm.dm"
-#include "code\modules\events\prison_break.dm"
-#include "code\modules\events\processor_overload.dm"
-#include "code\modules\events\radiation_storm.dm"
-#include "code\modules\events\sentience.dm"
-#include "code\modules\events\shuttle_loan.dm"
-#include "code\modules\events\spacevine.dm"
-#include "code\modules\events\spider_infestation.dm"
-#include "code\modules\events\spontaneous_appendicitis.dm"
-#include "code\modules\events\vent_clog.dm"
-#include "code\modules\events\wormholes.dm"
-#include "code\modules\events\holiday\halloween.dm"
-#include "code\modules\events\holiday\vday.dm"
-#include "code\modules\events\holiday\xmas.dm"
-#include "code\modules\events\wizard\aid.dm"
-#include "code\modules\events\wizard\blobies.dm"
-#include "code\modules\events\wizard\curseditems.dm"
-#include "code\modules\events\wizard\departmentrevolt.dm"
-#include "code\modules\events\wizard\fakeexplosion.dm"
-#include "code\modules\events\wizard\ghost.dm"
-#include "code\modules\events\wizard\greentext.dm"
-#include "code\modules\events\wizard\imposter.dm"
-#include "code\modules\events\wizard\invincible.dm"
-#include "code\modules\events\wizard\lava.dm"
-#include "code\modules\events\wizard\magicarp.dm"
-#include "code\modules\events\wizard\petsplosion.dm"
-#include "code\modules\events\wizard\race.dm"
-#include "code\modules\events\wizard\rpgloot.dm"
-#include "code\modules\events\wizard\shuffle.dm"
-#include "code\modules\events\wizard\summons.dm"
-#include "code\modules\fields\fields.dm"
-#include "code\modules\fields\gravity.dm"
-#include "code\modules\fields\peaceborg_dampener.dm"
-#include "code\modules\fields\timestop.dm"
-#include "code\modules\fields\turf_objects.dm"
-#include "code\modules\flufftext\Dreaming.dm"
-#include "code\modules\flufftext\Hallucination.dm"
-#include "code\modules\food_and_drinks\autobottler.dm"
-#include "code\modules\food_and_drinks\food.dm"
-#include "code\modules\food_and_drinks\pizzabox.dm"
-#include "code\modules\food_and_drinks\drinks\drinks.dm"
-#include "code\modules\food_and_drinks\drinks\drinks\bottle.dm"
-#include "code\modules\food_and_drinks\drinks\drinks\drinkingglass.dm"
-#include "code\modules\food_and_drinks\food\condiment.dm"
-#include "code\modules\food_and_drinks\food\customizables.dm"
-#include "code\modules\food_and_drinks\food\snacks.dm"
-#include "code\modules\food_and_drinks\food\snacks_bread.dm"
-#include "code\modules\food_and_drinks\food\snacks_burgers.dm"
-#include "code\modules\food_and_drinks\food\snacks_cake.dm"
-#include "code\modules\food_and_drinks\food\snacks_egg.dm"
-#include "code\modules\food_and_drinks\food\snacks_frozen.dm"
-#include "code\modules\food_and_drinks\food\snacks_meat.dm"
-#include "code\modules\food_and_drinks\food\snacks_other.dm"
-#include "code\modules\food_and_drinks\food\snacks_pastry.dm"
-#include "code\modules\food_and_drinks\food\snacks_pie.dm"
-#include "code\modules\food_and_drinks\food\snacks_pizza.dm"
-#include "code\modules\food_and_drinks\food\snacks_salad.dm"
-#include "code\modules\food_and_drinks\food\snacks_sandwichtoast.dm"
-#include "code\modules\food_and_drinks\food\snacks_soup.dm"
-#include "code\modules\food_and_drinks\food\snacks_spaghetti.dm"
-#include "code\modules\food_and_drinks\food\snacks_sushi.dm"
-#include "code\modules\food_and_drinks\food\snacks_vend.dm"
-#include "code\modules\food_and_drinks\food\snacks\dough.dm"
-#include "code\modules\food_and_drinks\food\snacks\meat.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\deep_fryer.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\food_cart.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\gibber.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\grill.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\icecream_vat.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\microwave.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\monkeyrecycler.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\processor.dm"
-#include "code\modules\food_and_drinks\kitchen_machinery\smartfridge.dm"
-#include "code\modules\food_and_drinks\recipes\drinks_recipes.dm"
-#include "code\modules\food_and_drinks\recipes\food_mixtures.dm"
-#include "code\modules\food_and_drinks\recipes\processor_recipes.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_bread.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_burger.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_cake.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_egg.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_frozen.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_meat.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_misc.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pastry.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pie.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pizza.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_salad.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sandwich.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm"
-#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sushi.dm"
-#include "code\modules\games\cas.dm"
-#include "code\modules\goonchat\browserOutput.dm"
-#include "code\modules\goonchat\jsErrorHandler.dm"
-#include "code\modules\holiday\easter.dm"
-#include "code\modules\holiday\holidays.dm"
-#include "code\modules\holiday\halloween\bartholomew.dm"
-#include "code\modules\holiday\halloween\jacqueen.dm"
-#include "code\modules\holodeck\area_copy.dm"
-#include "code\modules\holodeck\computer.dm"
-#include "code\modules\holodeck\holo_effect.dm"
-#include "code\modules\holodeck\items.dm"
-#include "code\modules\holodeck\mobs.dm"
-#include "code\modules\holodeck\turfs.dm"
-#include "code\modules\hydroponics\biogenerator.dm"
-#include "code\modules\hydroponics\fermenting_barrel.dm"
-#include "code\modules\hydroponics\gene_modder.dm"
-#include "code\modules\hydroponics\grown.dm"
-#include "code\modules\hydroponics\growninedible.dm"
-#include "code\modules\hydroponics\hydroitemdefines.dm"
-#include "code\modules\hydroponics\hydroponics.dm"
-#include "code\modules\hydroponics\plant_genes.dm"
-#include "code\modules\hydroponics\sample.dm"
-#include "code\modules\hydroponics\seed_extractor.dm"
-#include "code\modules\hydroponics\seeds.dm"
-#include "code\modules\hydroponics\beekeeping\beebox.dm"
-#include "code\modules\hydroponics\beekeeping\beekeeper_suit.dm"
-#include "code\modules\hydroponics\beekeeping\honey_frame.dm"
-#include "code\modules\hydroponics\beekeeping\honeycomb.dm"
-#include "code\modules\hydroponics\grown\ambrosia.dm"
-#include "code\modules\hydroponics\grown\apple.dm"
-#include "code\modules\hydroponics\grown\banana.dm"
-#include "code\modules\hydroponics\grown\beans.dm"
-#include "code\modules\hydroponics\grown\berries.dm"
-#include "code\modules\hydroponics\grown\cannabis.dm"
-#include "code\modules\hydroponics\grown\cereals.dm"
-#include "code\modules\hydroponics\grown\chili.dm"
-#include "code\modules\hydroponics\grown\citrus.dm"
-#include "code\modules\hydroponics\grown\cocoa_vanilla.dm"
-#include "code\modules\hydroponics\grown\corn.dm"
-#include "code\modules\hydroponics\grown\cotton.dm"
-#include "code\modules\hydroponics\grown\eggplant.dm"
-#include "code\modules\hydroponics\grown\flowers.dm"
-#include "code\modules\hydroponics\grown\garlic.dm"
-#include "code\modules\hydroponics\grown\grass_carpet.dm"
-#include "code\modules\hydroponics\grown\kudzu.dm"
-#include "code\modules\hydroponics\grown\melon.dm"
-#include "code\modules\hydroponics\grown\misc.dm"
-#include "code\modules\hydroponics\grown\mushrooms.dm"
-#include "code\modules\hydroponics\grown\nettle.dm"
-#include "code\modules\hydroponics\grown\onion.dm"
-#include "code\modules\hydroponics\grown\peach.dm"
-#include "code\modules\hydroponics\grown\peanuts.dm"
-#include "code\modules\hydroponics\grown\pineapple.dm"
-#include "code\modules\hydroponics\grown\potato.dm"
-#include "code\modules\hydroponics\grown\pumpkin.dm"
-#include "code\modules\hydroponics\grown\random.dm"
-#include "code\modules\hydroponics\grown\replicapod.dm"
-#include "code\modules\hydroponics\grown\root.dm"
-#include "code\modules\hydroponics\grown\tea_coffee.dm"
-#include "code\modules\hydroponics\grown\tobacco.dm"
-#include "code\modules\hydroponics\grown\tomato.dm"
-#include "code\modules\hydroponics\grown\towercap.dm"
-#include "code\modules\integrated_electronics\_defines.dm"
-#include "code\modules\integrated_electronics\core\analyzer.dm"
-#include "code\modules\integrated_electronics\core\assemblies.dm"
-#include "code\modules\integrated_electronics\core\debugger.dm"
-#include "code\modules\integrated_electronics\core\detailer.dm"
-#include "code\modules\integrated_electronics\core\helpers.dm"
-#include "code\modules\integrated_electronics\core\integrated_circuit.dm"
-#include "code\modules\integrated_electronics\core\pins.dm"
-#include "code\modules\integrated_electronics\core\printer.dm"
-#include "code\modules\integrated_electronics\core\saved_circuits.dm"
-#include "code\modules\integrated_electronics\core\wirer.dm"
-#include "code\modules\integrated_electronics\core\special_pins\boolean_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\char_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\color_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\dir_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\index_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\list_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\number_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\ref_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\selfref_pin.dm"
-#include "code\modules\integrated_electronics\core\special_pins\string_pin.dm"
-#include "code\modules\integrated_electronics\passive\passive.dm"
-#include "code\modules\integrated_electronics\passive\power.dm"
-#include "code\modules\integrated_electronics\subtypes\access.dm"
-#include "code\modules\integrated_electronics\subtypes\arithmetic.dm"
-#include "code\modules\integrated_electronics\subtypes\atmospherics.dm"
-#include "code\modules\integrated_electronics\subtypes\converters.dm"
-#include "code\modules\integrated_electronics\subtypes\data_transfer.dm"
-#include "code\modules\integrated_electronics\subtypes\input.dm"
-#include "code\modules\integrated_electronics\subtypes\lists.dm"
-#include "code\modules\integrated_electronics\subtypes\logic.dm"
-#include "code\modules\integrated_electronics\subtypes\manipulation.dm"
-#include "code\modules\integrated_electronics\subtypes\memory.dm"
-#include "code\modules\integrated_electronics\subtypes\output.dm"
-#include "code\modules\integrated_electronics\subtypes\power.dm"
-#include "code\modules\integrated_electronics\subtypes\reagents.dm"
-#include "code\modules\integrated_electronics\subtypes\smart.dm"
-#include "code\modules\integrated_electronics\subtypes\text.dm"
-#include "code\modules\integrated_electronics\subtypes\time.dm"
-#include "code\modules\integrated_electronics\subtypes\trig.dm"
-#include "code\modules\integrated_electronics\subtypes\weaponized.dm"
-#include "code\modules\jobs\access.dm"
-#include "code\modules\jobs\job_exp.dm"
-#include "code\modules\jobs\jobs.dm"
-#include "code\modules\jobs\job_types\assistant.dm"
-#include "code\modules\jobs\job_types\captain.dm"
-#include "code\modules\jobs\job_types\cargo_service.dm"
-#include "code\modules\jobs\job_types\civilian.dm"
-#include "code\modules\jobs\job_types\civilian_chaplain.dm"
-#include "code\modules\jobs\job_types\engineering.dm"
-#include "code\modules\jobs\job_types\job.dm"
-#include "code\modules\jobs\job_types\job_alt_titles.dm"
-#include "code\modules\jobs\job_types\medical.dm"
-#include "code\modules\jobs\job_types\science.dm"
-#include "code\modules\jobs\job_types\security.dm"
-#include "code\modules\jobs\job_types\silicon.dm"
-#include "code\modules\jobs\map_changes\map_changes.dm"
-#include "code\modules\keybindings\bindings_admin.dm"
-#include "code\modules\keybindings\bindings_atom.dm"
-#include "code\modules\keybindings\bindings_carbon.dm"
-#include "code\modules\keybindings\bindings_client.dm"
-#include "code\modules\keybindings\bindings_human.dm"
-#include "code\modules\keybindings\bindings_living.dm"
-#include "code\modules\keybindings\bindings_mob.dm"
-#include "code\modules\keybindings\bindings_robot.dm"
-#include "code\modules\keybindings\focus.dm"
-#include "code\modules\keybindings\setup.dm"
-#include "code\modules\language\aphasia.dm"
-#include "code\modules\language\beachbum.dm"
-#include "code\modules\language\codespeak.dm"
-#include "code\modules\language\common.dm"
-#include "code\modules\language\draconic.dm"
-#include "code\modules\language\drone.dm"
-#include "code\modules\language\language.dm"
-#include "code\modules\language\language_holder.dm"
-#include "code\modules\language\language_menu.dm"
-#include "code\modules\language\machine.dm"
-#include "code\modules\language\monkey.dm"
-#include "code\modules\language\mushroom.dm"
-#include "code\modules\language\narsian.dm"
-#include "code\modules\language\ratvarian.dm"
-#include "code\modules\language\slime.dm"
-#include "code\modules\language\swarmer.dm"
-#include "code\modules\language\vampiric.dm"
-#include "code\modules\language\xenocommon.dm"
-#include "code\modules\library\lib_codex_gigas.dm"
-#include "code\modules\library\lib_items.dm"
-#include "code\modules\library\lib_machines.dm"
-#include "code\modules\library\random_books.dm"
-#include "code\modules\library\soapstone.dm"
-#include "code\modules\lighting\lighting_area.dm"
-#include "code\modules\lighting\lighting_atom.dm"
-#include "code\modules\lighting\lighting_corner.dm"
-#include "code\modules\lighting\lighting_object.dm"
-#include "code\modules\lighting\lighting_setup.dm"
-#include "code\modules\lighting\lighting_source.dm"
-#include "code\modules\lighting\lighting_turf.dm"
-#include "code\modules\mapping\dmm_suite.dm"
-#include "code\modules\mapping\map_template.dm"
-#include "code\modules\mapping\mapping_helpers.dm"
-#include "code\modules\mapping\preloader.dm"
-#include "code\modules\mapping\reader.dm"
-#include "code\modules\mapping\ruins.dm"
-#include "code\modules\mapping\verify.dm"
-#include "code\modules\mapping\space_management\multiz_helpers.dm"
-#include "code\modules\mapping\space_management\space_level.dm"
-#include "code\modules\mapping\space_management\space_reservation.dm"
-#include "code\modules\mapping\space_management\space_transition.dm"
-#include "code\modules\mapping\space_management\traits.dm"
-#include "code\modules\mapping\space_management\zlevel_manager.dm"
-#include "code\modules\mining\abandoned_crates.dm"
-#include "code\modules\mining\aux_base.dm"
-#include "code\modules\mining\aux_base_camera.dm"
-#include "code\modules\mining\fulton.dm"
-#include "code\modules\mining\machine_processing.dm"
-#include "code\modules\mining\machine_redemption.dm"
-#include "code\modules\mining\machine_silo.dm"
-#include "code\modules\mining\machine_stacking.dm"
-#include "code\modules\mining\machine_unloading.dm"
-#include "code\modules\mining\machine_vending.dm"
-#include "code\modules\mining\mine_items.dm"
-#include "code\modules\mining\minebot.dm"
-#include "code\modules\mining\mint.dm"
-#include "code\modules\mining\money_bag.dm"
-#include "code\modules\mining\ores_coins.dm"
-#include "code\modules\mining\satchel_ore_boxdm.dm"
-#include "code\modules\mining\shelters.dm"
-#include "code\modules\mining\equipment\explorer_gear.dm"
-#include "code\modules\mining\equipment\goliath_hide.dm"
-#include "code\modules\mining\equipment\kinetic_crusher.dm"
-#include "code\modules\mining\equipment\lazarus_injector.dm"
-#include "code\modules\mining\equipment\marker_beacons.dm"
-#include "code\modules\mining\equipment\mineral_scanner.dm"
-#include "code\modules\mining\equipment\mining_tools.dm"
-#include "code\modules\mining\equipment\regenerative_core.dm"
-#include "code\modules\mining\equipment\resonator.dm"
-#include "code\modules\mining\equipment\survival_pod.dm"
-#include "code\modules\mining\equipment\vendor_items.dm"
-#include "code\modules\mining\equipment\wormhole_jaunter.dm"
-#include "code\modules\mining\laborcamp\laborshuttle.dm"
-#include "code\modules\mining\laborcamp\laborstacker.dm"
-#include "code\modules\mining\lavaland\ash_flora.dm"
-#include "code\modules\mining\lavaland\necropolis_chests.dm"
-#include "code\modules\mining\lavaland\ruins\gym.dm"
-#include "code\modules\mob\death.dm"
-#include "code\modules\mob\emote.dm"
-#include "code\modules\mob\inventory.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_helpers.dm"
-#include "code\modules\mob\mob_movement.dm"
-#include "code\modules\mob\mob_movespeed.dm"
-#include "code\modules\mob\mob_transformation_simple.dm"
-#include "code\modules\mob\say.dm"
-#include "code\modules\mob\say_vr.dm"
-#include "code\modules\mob\status_procs.dm"
-#include "code\modules\mob\transform_procs.dm"
-#include "code\modules\mob\typing_indicator.dm"
-#include "code\modules\mob\update_icons.dm"
-#include "code\modules\mob\camera\camera.dm"
-#include "code\modules\mob\dead\dead.dm"
-#include "code\modules\mob\dead\new_player\login.dm"
-#include "code\modules\mob\dead\new_player\logout.dm"
-#include "code\modules\mob\dead\new_player\new_player.dm"
-#include "code\modules\mob\dead\new_player\poll.dm"
-#include "code\modules\mob\dead\new_player\preferences_setup.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\_sprite_accessories.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\body_markings.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\caps.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\ears.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\frills.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\hair_face.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\hair_head.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\horns.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\legs.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\moth_fluff.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\moth_wings.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\pines.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\snouts.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\socks.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\tails.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\undershirt.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\underwear.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories\wings.dm"
-#include "code\modules\mob\dead\observer\login.dm"
-#include "code\modules\mob\dead\observer\logout.dm"
-#include "code\modules\mob\dead\observer\notificationprefs.dm"
-#include "code\modules\mob\dead\observer\observer.dm"
-#include "code\modules\mob\dead\observer\observer_movement.dm"
-#include "code\modules\mob\dead\observer\say.dm"
-#include "code\modules\mob\living\blood.dm"
-#include "code\modules\mob\living\bloodcrawl.dm"
-#include "code\modules\mob\living\damage_procs.dm"
-#include "code\modules\mob\living\death.dm"
-#include "code\modules\mob\living\emote.dm"
-#include "code\modules\mob\living\life.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\living_movement.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\status_procs.dm"
-#include "code\modules\mob\living\taste.dm"
-#include "code\modules\mob\living\ventcrawling.dm"
-#include "code\modules\mob\living\brain\brain.dm"
-#include "code\modules\mob\living\brain\brain_item.dm"
-#include "code\modules\mob\living\brain\death.dm"
-#include "code\modules\mob\living\brain\emote.dm"
-#include "code\modules\mob\living\brain\life.dm"
-#include "code\modules\mob\living\brain\MMI.dm"
-#include "code\modules\mob\living\brain\posibrain.dm"
-#include "code\modules\mob\living\brain\say.dm"
-#include "code\modules\mob\living\brain\status_procs.dm"
-#include "code\modules\mob\living\carbon\carbon.dm"
-#include "code\modules\mob\living\carbon\carbon_defense.dm"
-#include "code\modules\mob\living\carbon\carbon_defines.dm"
-#include "code\modules\mob\living\carbon\carbon_movement.dm"
-#include "code\modules\mob\living\carbon\damage_procs.dm"
-#include "code\modules\mob\living\carbon\death.dm"
-#include "code\modules\mob\living\carbon\emote.dm"
-#include "code\modules\mob\living\carbon\examine.dm"
-#include "code\modules\mob\living\carbon\give.dm"
-#include "code\modules\mob\living\carbon\inventory.dm"
-#include "code\modules\mob\living\carbon\life.dm"
-#include "code\modules\mob\living\carbon\say.dm"
-#include "code\modules\mob\living\carbon\status_procs.dm"
-#include "code\modules\mob\living\carbon\update_icons.dm"
-#include "code\modules\mob\living\carbon\alien\alien.dm"
-#include "code\modules\mob\living\carbon\alien\alien_defense.dm"
-#include "code\modules\mob\living\carbon\alien\damage_procs.dm"
-#include "code\modules\mob\living\carbon\alien\death.dm"
-#include "code\modules\mob\living\carbon\alien\emote.dm"
-#include "code\modules\mob\living\carbon\alien\life.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\organs.dm"
-#include "code\modules\mob\living\carbon\alien\say.dm"
-#include "code\modules\mob\living\carbon\alien\screen.dm"
-#include "code\modules\mob\living\carbon\alien\status_procs.dm"
-#include "code\modules\mob\living\carbon\alien\update_icons.dm"
-#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm"
-#include "code\modules\mob\living\carbon\alien\humanoid\death.dm"
-#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm"
-#include "code\modules\mob\living\carbon\alien\humanoid\humanoid_defense.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\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\praetorian.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\inventory.dm"
-#include "code\modules\mob\living\carbon\alien\larva\larva.dm"
-#include "code\modules\mob\living\carbon\alien\larva\larva_defense.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\human\damage_procs.dm"
-#include "code\modules\mob\living\carbon\human\death.dm"
-#include "code\modules\mob\living\carbon\human\dummy.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\examine_vr.dm"
-#include "code\modules\mob\living\carbon\human\human.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_helpers.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\physiology.dm"
-#include "code\modules\mob\living\carbon\human\say.dm"
-#include "code\modules\mob\living\carbon\human\species.dm"
-#include "code\modules\mob\living\carbon\human\status_procs.dm"
-#include "code\modules\mob\living\carbon\human\typing_indicator.dm"
-#include "code\modules\mob\living\carbon\human\update_icons.dm"
-#include "code\modules\mob\living\carbon\human\species_types\abductors.dm"
-#include "code\modules\mob\living\carbon\human\species_types\android.dm"
-#include "code\modules\mob\living\carbon\human\species_types\angel.dm"
-#include "code\modules\mob\living\carbon\human\species_types\corporate.dm"
-#include "code\modules\mob\living\carbon\human\species_types\dullahan.dm"
-#include "code\modules\mob\living\carbon\human\species_types\felinid.dm"
-#include "code\modules\mob\living\carbon\human\species_types\flypeople.dm"
-#include "code\modules\mob\living\carbon\human\species_types\golems.dm"
-#include "code\modules\mob\living\carbon\human\species_types\humans.dm"
-#include "code\modules\mob\living\carbon\human\species_types\jellypeople.dm"
-#include "code\modules\mob\living\carbon\human\species_types\lizardpeople.dm"
-#include "code\modules\mob\living\carbon\human\species_types\mothmen.dm"
-#include "code\modules\mob\living\carbon\human\species_types\mushpeople.dm"
-#include "code\modules\mob\living\carbon\human\species_types\plasmamen.dm"
-#include "code\modules\mob\living\carbon\human\species_types\podpeople.dm"
-#include "code\modules\mob\living\carbon\human\species_types\shadowpeople.dm"
-#include "code\modules\mob\living\carbon\human\species_types\skeletons.dm"
-#include "code\modules\mob\living\carbon\human\species_types\synths.dm"
-#include "code\modules\mob\living\carbon\human\species_types\vampire.dm"
-#include "code\modules\mob\living\carbon\human\species_types\zombies.dm"
-#include "code\modules\mob\living\carbon\monkey\combat.dm"
-#include "code\modules\mob\living\carbon\monkey\death.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\monkey.dm"
-#include "code\modules\mob\living\carbon\monkey\monkey_defense.dm"
-#include "code\modules\mob\living\carbon\monkey\punpun.dm"
-#include "code\modules\mob\living\carbon\monkey\update_icons.dm"
-#include "code\modules\mob\living\silicon\damage_procs.dm"
-#include "code\modules\mob\living\silicon\death.dm"
-#include "code\modules\mob\living\silicon\examine.dm"
-#include "code\modules\mob\living\silicon\laws.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\silicon_defense.dm"
-#include "code\modules\mob\living\silicon\silicon_movement.dm"
-#include "code\modules\mob\living\silicon\ai\ai.dm"
-#include "code\modules\mob\living\silicon\ai\ai_defense.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\multicam.dm"
-#include "code\modules\mob\living\silicon\ai\say.dm"
-#include "code\modules\mob\living\silicon\ai\vox_sounds.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\pai\death.dm"
-#include "code\modules\mob\living\silicon\pai\pai.dm"
-#include "code\modules\mob\living\silicon\pai\pai_defense.dm"
-#include "code\modules\mob\living\silicon\pai\pai_shell.dm"
-#include "code\modules\mob\living\silicon\pai\personality.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\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\robot.dm"
-#include "code\modules\mob\living\silicon\robot\robot_defense.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\say.dm"
-#include "code\modules\mob\living\simple_animal\animal_defense.dm"
-#include "code\modules\mob\living\simple_animal\astral.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\damage_procs.dm"
-#include "code\modules\mob\living\simple_animal\parrot.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\simple_animal_vr.dm"
-#include "code\modules\mob\living\simple_animal\status_procs.dm"
-#include "code\modules\mob\living\simple_animal\bot\bot.dm"
-#include "code\modules\mob\living\simple_animal\bot\cleanbot.dm"
-#include "code\modules\mob\living\simple_animal\bot\construction.dm"
-#include "code\modules\mob\living\simple_animal\bot\ed209bot.dm"
-#include "code\modules\mob\living\simple_animal\bot\firebot.dm"
-#include "code\modules\mob\living\simple_animal\bot\floorbot.dm"
-#include "code\modules\mob\living\simple_animal\bot\honkbot.dm"
-#include "code\modules\mob\living\simple_animal\bot\medbot.dm"
-#include "code\modules\mob\living\simple_animal\bot\mulebot.dm"
-#include "code\modules\mob\living\simple_animal\bot\secbot.dm"
-#include "code\modules\mob\living\simple_animal\bot\SuperBeepsky.dm"
-#include "code\modules\mob\living\simple_animal\friendly\butterfly.dm"
-#include "code\modules\mob\living\simple_animal\friendly\cat.dm"
-#include "code\modules\mob\living\simple_animal\friendly\cockroach.dm"
-#include "code\modules\mob\living\simple_animal\friendly\crab.dm"
-#include "code\modules\mob\living\simple_animal\friendly\dog.dm"
-#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm"
-#include "code\modules\mob\living\simple_animal\friendly\fox.dm"
-#include "code\modules\mob\living\simple_animal\friendly\gondola.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\panda.dm"
-#include "code\modules\mob\living\simple_animal\friendly\penguin.dm"
-#include "code\modules\mob\living\simple_animal\friendly\pet.dm"
-#include "code\modules\mob\living\simple_animal\friendly\sloth.dm"
-#include "code\modules\mob\living\simple_animal\friendly\snake.dm"
-#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm"
-#include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm"
-#include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm"
-#include "code\modules\mob\living\simple_animal\friendly\drone\interaction.dm"
-#include "code\modules\mob\living\simple_animal\friendly\drone\inventory.dm"
-#include "code\modules\mob\living\simple_animal\friendly\drone\say.dm"
-#include "code\modules\mob\living\simple_animal\friendly\drone\verbs.dm"
-#include "code\modules\mob\living\simple_animal\friendly\drone\visuals_icons.dm"
-#include "code\modules\mob\living\simple_animal\guardian\guardian.dm"
-#include "code\modules\mob\living\simple_animal\guardian\guardiannaming.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\assassin.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\charger.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\dextrous.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\explosive.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\fire.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\lightning.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\protector.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\ranged.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\standard.dm"
-#include "code\modules\mob\living\simple_animal\guardian\types\support.dm"
-#include "code\modules\mob\living\simple_animal\hostile\alien.dm"
-#include "code\modules\mob\living\simple_animal\hostile\bear.dm"
-#include "code\modules\mob\living\simple_animal\hostile\bees.dm"
-#include "code\modules\mob\living\simple_animal\hostile\carp.dm"
-#include "code\modules\mob\living\simple_animal\hostile\cat_butcher.dm"
-#include "code\modules\mob\living\simple_animal\hostile\eyeballs.dm"
-#include "code\modules\mob\living\simple_animal\hostile\faithless.dm"
-#include "code\modules\mob\living\simple_animal\hostile\floor_cluwne.dm"
-#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm"
-#include "code\modules\mob\living\simple_animal\hostile\goose.dm"
-#include "code\modules\mob\living\simple_animal\hostile\headcrab.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\illusion.dm"
-#include "code\modules\mob\living\simple_animal\hostile\killertomato.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mecha_pilot.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mimic.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mushroom.dm"
-#include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm"
-#include "code\modules\mob\living\simple_animal\hostile\netherworld.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\sharks.dm"
-#include "code\modules\mob\living\simple_animal\hostile\skeleton.dm"
-#include "code\modules\mob\living\simple_animal\hostile\statue.dm"
-#include "code\modules\mob\living\simple_animal\hostile\stickman.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\venus_human_trap.dm"
-#include "code\modules\mob\living\simple_animal\hostile\wizard.dm"
-#include "code\modules\mob\living\simple_animal\hostile\wumborian_fugu.dm"
-#include "code\modules\mob\living\simple_animal\hostile\zombie.dm"
-#include "code\modules\mob\living\simple_animal\hostile\bosses\boss.dm"
-#include "code\modules\mob\living\simple_animal\hostile\bosses\paperwizard.dm"
-#include "code\modules\mob\living\simple_animal\hostile\gorilla\emotes.dm"
-#include "code\modules\mob\living\simple_animal\hostile\gorilla\gorilla.dm"
-#include "code\modules\mob\living\simple_animal\hostile\gorilla\visuals_icons.dm"
-#include "code\modules\mob\living\simple_animal\hostile\jungle\_jungle_mobs.dm"
-#include "code\modules\mob\living\simple_animal\hostile\jungle\leaper.dm"
-#include "code\modules\mob\living\simple_animal\hostile\jungle\mega_arachnid.dm"
-#include "code\modules\mob\living\simple_animal\hostile\jungle\mook.dm"
-#include "code\modules\mob\living\simple_animal\hostile\jungle\seedling.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\blood_drunk_miner.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\dragon_vore.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\drake.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\hierophant.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm"
-#include "code\modules\mob\living\simple_animal\hostile\megafauna\swarmer.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\basilisk.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\curse_blob.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goldgrub.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goliath.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\gutlunch.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm"
-#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm"
-#include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm"
-#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm"
-#include "code\modules\mob\living\simple_animal\hostile\retaliate\frog.dm"
-#include "code\modules\mob\living\simple_animal\hostile\retaliate\ghost.dm"
-#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"
-#include "code\modules\mob\living\simple_animal\hostile\retaliate\spaceman.dm"
-#include "code\modules\mob\living\simple_animal\slime\death.dm"
-#include "code\modules\mob\living\simple_animal\slime\emote.dm"
-#include "code\modules\mob\living\simple_animal\slime\life.dm"
-#include "code\modules\mob\living\simple_animal\slime\powers.dm"
-#include "code\modules\mob\living\simple_animal\slime\say.dm"
-#include "code\modules\mob\living\simple_animal\slime\slime.dm"
-#include "code\modules\mob\living\simple_animal\slime\subtypes.dm"
-#include "code\modules\modular_computers\laptop_vendor.dm"
-#include "code\modules\modular_computers\computers\item\computer.dm"
-#include "code\modules\modular_computers\computers\item\computer_components.dm"
-#include "code\modules\modular_computers\computers\item\computer_damage.dm"
-#include "code\modules\modular_computers\computers\item\computer_power.dm"
-#include "code\modules\modular_computers\computers\item\computer_ui.dm"
-#include "code\modules\modular_computers\computers\item\laptop.dm"
-#include "code\modules\modular_computers\computers\item\laptop_presets.dm"
-#include "code\modules\modular_computers\computers\item\processor.dm"
-#include "code\modules\modular_computers\computers\item\tablet.dm"
-#include "code\modules\modular_computers\computers\item\tablet_presets.dm"
-#include "code\modules\modular_computers\computers\machinery\console_presets.dm"
-#include "code\modules\modular_computers\computers\machinery\modular_computer.dm"
-#include "code\modules\modular_computers\computers\machinery\modular_console.dm"
-#include "code\modules\modular_computers\file_system\computer_file.dm"
-#include "code\modules\modular_computers\file_system\data.dm"
-#include "code\modules\modular_computers\file_system\program.dm"
-#include "code\modules\modular_computers\file_system\program_events.dm"
-#include "code\modules\modular_computers\file_system\programs\airestorer.dm"
-#include "code\modules\modular_computers\file_system\programs\alarm.dm"
-#include "code\modules\modular_computers\file_system\programs\card.dm"
-#include "code\modules\modular_computers\file_system\programs\configurator.dm"
-#include "code\modules\modular_computers\file_system\programs\file_browser.dm"
-#include "code\modules\modular_computers\file_system\programs\ntdownloader.dm"
-#include "code\modules\modular_computers\file_system\programs\ntmonitor.dm"
-#include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm"
-#include "code\modules\modular_computers\file_system\programs\nttransfer.dm"
-#include "code\modules\modular_computers\file_system\programs\powermonitor.dm"
-#include "code\modules\modular_computers\file_system\programs\sm_monitor.dm"
-#include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm"
-#include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm"
-#include "code\modules\modular_computers\hardware\_hardware.dm"
-#include "code\modules\modular_computers\hardware\ai_slot.dm"
-#include "code\modules\modular_computers\hardware\battery_module.dm"
-#include "code\modules\modular_computers\hardware\card_slot.dm"
-#include "code\modules\modular_computers\hardware\CPU.dm"
-#include "code\modules\modular_computers\hardware\hard_drive.dm"
-#include "code\modules\modular_computers\hardware\network_card.dm"
-#include "code\modules\modular_computers\hardware\portable_disk.dm"
-#include "code\modules\modular_computers\hardware\printer.dm"
-#include "code\modules\modular_computers\hardware\recharger.dm"
-#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm"
-#include "code\modules\ninja\__ninjaDefines.dm"
-#include "code\modules\ninja\energy_katana.dm"
-#include "code\modules\ninja\ninja_event.dm"
-#include "code\modules\ninja\outfit.dm"
-#include "code\modules\ninja\suit\gloves.dm"
-#include "code\modules\ninja\suit\head.dm"
-#include "code\modules\ninja\suit\mask.dm"
-#include "code\modules\ninja\suit\ninjaDrainAct.dm"
-#include "code\modules\ninja\suit\shoes.dm"
-#include "code\modules\ninja\suit\suit.dm"
-#include "code\modules\ninja\suit\suit_attackby.dm"
-#include "code\modules\ninja\suit\suit_initialisation.dm"
-#include "code\modules\ninja\suit\suit_process.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\energy_net_nets.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\ninja_adrenaline.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\ninja_cost_check.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\ninja_empulse.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\ninja_net.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\ninja_smoke.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\ninja_stars.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\ninja_stealth.dm"
-#include "code\modules\ninja\suit\n_suit_verbs\ninja_sword_recall.dm"
-#include "code\modules\NTNet\netdata.dm"
-#include "code\modules\NTNet\network.dm"
-#include "code\modules\NTNet\relays.dm"
-#include "code\modules\NTNet\services\_service.dm"
-#include "code\modules\oracle_ui\assets.dm"
-#include "code\modules\oracle_ui\hookup_procs.dm"
-#include "code\modules\oracle_ui\oracle_ui.dm"
-#include "code\modules\oracle_ui\themed.dm"
-#include "code\modules\paperwork\clipboard.dm"
-#include "code\modules\paperwork\contract.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_cutter.dm"
-#include "code\modules\paperwork\paper_premade.dm"
-#include "code\modules\paperwork\paperbin.dm"
-#include "code\modules\paperwork\paperplane.dm"
-#include "code\modules\paperwork\pen.dm"
-#include "code\modules\paperwork\photocopier.dm"
-#include "code\modules\paperwork\stamps.dm"
-#include "code\modules\photography\_pictures.dm"
-#include "code\modules\photography\camera\camera.dm"
-#include "code\modules\photography\camera\camera_image_capturing.dm"
-#include "code\modules\photography\camera\film.dm"
-#include "code\modules\photography\camera\other.dm"
-#include "code\modules\photography\camera\silicon_camera.dm"
-#include "code\modules\photography\photos\album.dm"
-#include "code\modules\photography\photos\frame.dm"
-#include "code\modules\photography\photos\photo.dm"
-#include "code\modules\pool\pool_controller.dm"
-#include "code\modules\pool\pool_drain.dm"
-#include "code\modules\pool\pool_effects.dm"
-#include "code\modules\pool\pool_main.dm"
-#include "code\modules\pool\pool_noodles.dm"
-#include "code\modules\pool\pool_structures.dm"
-#include "code\modules\pool\pool_wires.dm"
-#include "code\modules\power\apc.dm"
-#include "code\modules\power\cable.dm"
-#include "code\modules\power\cell.dm"
-#include "code\modules\power\floodlight.dm"
-#include "code\modules\power\generator.dm"
-#include "code\modules\power\gravitygenerator.dm"
-#include "code\modules\power\lighting.dm"
-#include "code\modules\power\monitor.dm"
-#include "code\modules\power\multiz.dm"
-#include "code\modules\power\port_gen.dm"
-#include "code\modules\power\power.dm"
-#include "code\modules\power\powernet.dm"
-#include "code\modules\power\rtg.dm"
-#include "code\modules\power\smes.dm"
-#include "code\modules\power\solar.dm"
-#include "code\modules\power\terminal.dm"
-#include "code\modules\power\tracker.dm"
-#include "code\modules\power\turbine.dm"
-#include "code\modules\power\antimatter\containment_jar.dm"
-#include "code\modules\power\antimatter\control.dm"
-#include "code\modules\power\antimatter\shielding.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\narsie.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_control.dm"
-#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm"
-#include "code\modules\power\supermatter\supermatter.dm"
-#include "code\modules\power\tesla\coil.dm"
-#include "code\modules\power\tesla\energy_ball.dm"
-#include "code\modules\power\tesla\generator.dm"
-#include "code\modules\procedural_mapping\mapGenerator.dm"
-#include "code\modules\procedural_mapping\mapGeneratorModule.dm"
-#include "code\modules\procedural_mapping\mapGeneratorObj.dm"
-#include "code\modules\procedural_mapping\mapGeneratorReadme.dm"
-#include "code\modules\procedural_mapping\mapGeneratorModules\helpers.dm"
-#include "code\modules\procedural_mapping\mapGeneratorModules\nature.dm"
-#include "code\modules\procedural_mapping\mapGenerators\asteroid.dm"
-#include "code\modules\procedural_mapping\mapGenerators\cellular.dm"
-#include "code\modules\procedural_mapping\mapGenerators\cult.dm"
-#include "code\modules\procedural_mapping\mapGenerators\lava_river.dm"
-#include "code\modules\procedural_mapping\mapGenerators\lavaland.dm"
-#include "code\modules\procedural_mapping\mapGenerators\nature.dm"
-#include "code\modules\procedural_mapping\mapGenerators\repair.dm"
-#include "code\modules\procedural_mapping\mapGenerators\shuttle.dm"
-#include "code\modules\procedural_mapping\mapGenerators\syndicate.dm"
-#include "code\modules\projectiles\gun.dm"
-#include "code\modules\projectiles\pins.dm"
-#include "code\modules\projectiles\projectile.dm"
-#include "code\modules\projectiles\ammunition\_ammunition.dm"
-#include "code\modules\projectiles\ammunition\_firing.dm"
-#include "code\modules\projectiles\ammunition\ballistic\lmg.dm"
-#include "code\modules\projectiles\ammunition\ballistic\pistol.dm"
-#include "code\modules\projectiles\ammunition\ballistic\revolver.dm"
-#include "code\modules\projectiles\ammunition\ballistic\rifle.dm"
-#include "code\modules\projectiles\ammunition\ballistic\shotgun.dm"
-#include "code\modules\projectiles\ammunition\ballistic\smg.dm"
-#include "code\modules\projectiles\ammunition\ballistic\sniper.dm"
-#include "code\modules\projectiles\ammunition\caseless\_caseless.dm"
-#include "code\modules\projectiles\ammunition\caseless\foam.dm"
-#include "code\modules\projectiles\ammunition\caseless\misc.dm"
-#include "code\modules\projectiles\ammunition\caseless\rocket.dm"
-#include "code\modules\projectiles\ammunition\energy\_energy.dm"
-#include "code\modules\projectiles\ammunition\energy\ebow.dm"
-#include "code\modules\projectiles\ammunition\energy\gravity.dm"
-#include "code\modules\projectiles\ammunition\energy\laser.dm"
-#include "code\modules\projectiles\ammunition\energy\lmg.dm"
-#include "code\modules\projectiles\ammunition\energy\plasma.dm"
-#include "code\modules\projectiles\ammunition\energy\plasma_cit.dm"
-#include "code\modules\projectiles\ammunition\energy\portal.dm"
-#include "code\modules\projectiles\ammunition\energy\special.dm"
-#include "code\modules\projectiles\ammunition\energy\stun.dm"
-#include "code\modules\projectiles\ammunition\special\magic.dm"
-#include "code\modules\projectiles\ammunition\special\syringe.dm"
-#include "code\modules\projectiles\boxes_magazines\_box_magazine.dm"
-#include "code\modules\projectiles\boxes_magazines\ammo_boxes.dm"
-#include "code\modules\projectiles\boxes_magazines\external\grenade.dm"
-#include "code\modules\projectiles\boxes_magazines\external\lmg.dm"
-#include "code\modules\projectiles\boxes_magazines\external\pistol.dm"
-#include "code\modules\projectiles\boxes_magazines\external\rechargable.dm"
-#include "code\modules\projectiles\boxes_magazines\external\rifle.dm"
-#include "code\modules\projectiles\boxes_magazines\external\shotgun.dm"
-#include "code\modules\projectiles\boxes_magazines\external\smg.dm"
-#include "code\modules\projectiles\boxes_magazines\external\sniper.dm"
-#include "code\modules\projectiles\boxes_magazines\external\toy.dm"
-#include "code\modules\projectiles\boxes_magazines\internal\_cylinder.dm"
-#include "code\modules\projectiles\boxes_magazines\internal\_internal.dm"
-#include "code\modules\projectiles\boxes_magazines\internal\grenade.dm"
-#include "code\modules\projectiles\boxes_magazines\internal\misc.dm"
-#include "code\modules\projectiles\boxes_magazines\internal\revolver.dm"
-#include "code\modules\projectiles\boxes_magazines\internal\rifle.dm"
-#include "code\modules\projectiles\boxes_magazines\internal\shotgun.dm"
-#include "code\modules\projectiles\boxes_magazines\internal\toy.dm"
-#include "code\modules\projectiles\guns\ballistic.dm"
-#include "code\modules\projectiles\guns\energy.dm"
-#include "code\modules\projectiles\guns\magic.dm"
-#include "code\modules\projectiles\guns\ballistic\automatic.dm"
-#include "code\modules\projectiles\guns\ballistic\laser_gatling.dm"
-#include "code\modules\projectiles\guns\ballistic\launchers.dm"
-#include "code\modules\projectiles\guns\ballistic\pistol.dm"
-#include "code\modules\projectiles\guns\ballistic\revolver.dm"
-#include "code\modules\projectiles\guns\ballistic\shotgun.dm"
-#include "code\modules\projectiles\guns\ballistic\toy.dm"
-#include "code\modules\projectiles\guns\energy\dueling.dm"
-#include "code\modules\projectiles\guns\energy\energy_gun.dm"
-#include "code\modules\projectiles\guns\energy\kinetic_accelerator.dm"
-#include "code\modules\projectiles\guns\energy\laser.dm"
-#include "code\modules\projectiles\guns\energy\megabuster.dm"
-#include "code\modules\projectiles\guns\energy\mounted.dm"
-#include "code\modules\projectiles\guns\energy\plasma_cit.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\magic\staff.dm"
-#include "code\modules\projectiles\guns\magic\wand.dm"
-#include "code\modules\projectiles\guns\misc\beam_rifle.dm"
-#include "code\modules\projectiles\guns\misc\blastcannon.dm"
-#include "code\modules\projectiles\guns\misc\chem_gun.dm"
-#include "code\modules\projectiles\guns\misc\grenade_launcher.dm"
-#include "code\modules\projectiles\guns\misc\medbeam.dm"
-#include "code\modules\projectiles\guns\misc\syringe_gun.dm"
-#include "code\modules\projectiles\projectile\beams.dm"
-#include "code\modules\projectiles\projectile\bullets.dm"
-#include "code\modules\projectiles\projectile\magic.dm"
-#include "code\modules\projectiles\projectile\megabuster.dm"
-#include "code\modules\projectiles\projectile\plasma.dm"
-#include "code\modules\projectiles\projectile\bullets\_incendiary.dm"
-#include "code\modules\projectiles\projectile\bullets\dart_syringe.dm"
-#include "code\modules\projectiles\projectile\bullets\dnainjector.dm"
-#include "code\modules\projectiles\projectile\bullets\grenade.dm"
-#include "code\modules\projectiles\projectile\bullets\lmg.dm"
-#include "code\modules\projectiles\projectile\bullets\pistol.dm"
-#include "code\modules\projectiles\projectile\bullets\revolver.dm"
-#include "code\modules\projectiles\projectile\bullets\rifle.dm"
-#include "code\modules\projectiles\projectile\bullets\shotgun.dm"
-#include "code\modules\projectiles\projectile\bullets\smg.dm"
-#include "code\modules\projectiles\projectile\bullets\sniper.dm"
-#include "code\modules\projectiles\projectile\bullets\special.dm"
-#include "code\modules\projectiles\projectile\energy\_energy.dm"
-#include "code\modules\projectiles\projectile\energy\ebow.dm"
-#include "code\modules\projectiles\projectile\energy\misc.dm"
-#include "code\modules\projectiles\projectile\energy\net_snare.dm"
-#include "code\modules\projectiles\projectile\energy\nuclear_particle.dm"
-#include "code\modules\projectiles\projectile\energy\stun.dm"
-#include "code\modules\projectiles\projectile\energy\tesla.dm"
-#include "code\modules\projectiles\projectile\magic\spellcard.dm"
-#include "code\modules\projectiles\projectile\reusable\_reusable.dm"
-#include "code\modules\projectiles\projectile\reusable\foam_dart.dm"
-#include "code\modules\projectiles\projectile\reusable\magspear.dm"
-#include "code\modules\projectiles\projectile\special\curse.dm"
-#include "code\modules\projectiles\projectile\special\floral.dm"
-#include "code\modules\projectiles\projectile\special\gravity.dm"
-#include "code\modules\projectiles\projectile\special\hallucination.dm"
-#include "code\modules\projectiles\projectile\special\ion.dm"
-#include "code\modules\projectiles\projectile\special\meteor.dm"
-#include "code\modules\projectiles\projectile\special\mindflayer.dm"
-#include "code\modules\projectiles\projectile\special\neurotoxin.dm"
-#include "code\modules\projectiles\projectile\special\plasma.dm"
-#include "code\modules\projectiles\projectile\special\rocket.dm"
-#include "code\modules\projectiles\projectile\special\temperature.dm"
-#include "code\modules\projectiles\projectile\special\wormhole.dm"
-#include "code\modules\reagents\chem_splash.dm"
-#include "code\modules\reagents\reagent_containers.dm"
-#include "code\modules\reagents\reagent_dispenser.dm"
-#include "code\modules\reagents\chemistry\colors.dm"
-#include "code\modules\reagents\chemistry\holder.dm"
-#include "code\modules\reagents\chemistry\reagents.dm"
-#include "code\modules\reagents\chemistry\recipes.dm"
-#include "code\modules\reagents\chemistry\machinery\chem_dispenser.dm"
-#include "code\modules\reagents\chemistry\machinery\chem_heater.dm"
-#include "code\modules\reagents\chemistry\machinery\chem_master.dm"
-#include "code\modules\reagents\chemistry\machinery\chem_synthesizer.dm"
-#include "code\modules\reagents\chemistry\machinery\pandemic.dm"
-#include "code\modules\reagents\chemistry\machinery\reagentgrinder.dm"
-#include "code\modules\reagents\chemistry\machinery\smoke_machine.dm"
-#include "code\modules\reagents\chemistry\reagents\alcohol_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\blob_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\drink_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\drug_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\food_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\impure_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\medicine_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\other_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\pyrotechnic_reagents.dm"
-#include "code\modules\reagents\chemistry\reagents\toxin_reagents.dm"
-#include "code\modules\reagents\chemistry\recipes\drugs.dm"
-#include "code\modules\reagents\chemistry\recipes\medicine.dm"
-#include "code\modules\reagents\chemistry\recipes\others.dm"
-#include "code\modules\reagents\chemistry\recipes\pyrotechnics.dm"
-#include "code\modules\reagents\chemistry\recipes\slime_extracts.dm"
-#include "code\modules\reagents\chemistry\recipes\special.dm"
-#include "code\modules\reagents\chemistry\recipes\toxins.dm"
-#include "code\modules\reagents\reagent_containers\blood_pack.dm"
-#include "code\modules\reagents\reagent_containers\borghydro.dm"
-#include "code\modules\reagents\reagent_containers\bottle.dm"
-#include "code\modules\reagents\reagent_containers\chem_pack.dm"
-#include "code\modules\reagents\reagent_containers\Chemical_tongue.dm"
-#include "code\modules\reagents\reagent_containers\dropper.dm"
-#include "code\modules\reagents\reagent_containers\glass.dm"
-#include "code\modules\reagents\reagent_containers\hypospray.dm"
-#include "code\modules\reagents\reagent_containers\hypovial.dm"
-#include "code\modules\reagents\reagent_containers\medspray.dm"
-#include "code\modules\reagents\reagent_containers\patch.dm"
-#include "code\modules\reagents\reagent_containers\pill.dm"
-#include "code\modules\reagents\reagent_containers\rags.dm"
-#include "code\modules\reagents\reagent_containers\sleeper_buffer.dm"
-#include "code\modules\reagents\reagent_containers\spray.dm"
-#include "code\modules\reagents\reagent_containers\syringes.dm"
-#include "code\modules\recycling\conveyor2.dm"
-#include "code\modules\recycling\sortingmachinery.dm"
-#include "code\modules\recycling\disposal\bin.dm"
-#include "code\modules\recycling\disposal\construction.dm"
-#include "code\modules\recycling\disposal\eject.dm"
-#include "code\modules\recycling\disposal\holder.dm"
-#include "code\modules\recycling\disposal\multiz.dm"
-#include "code\modules\recycling\disposal\outlet.dm"
-#include "code\modules\recycling\disposal\pipe.dm"
-#include "code\modules\recycling\disposal\pipe_sorting.dm"
-#include "code\modules\research\designs.dm"
-#include "code\modules\research\destructive_analyzer.dm"
-#include "code\modules\research\experimentor.dm"
-#include "code\modules\research\rdconsole.dm"
-#include "code\modules\research\rdmachines.dm"
-#include "code\modules\research\research_disk.dm"
-#include "code\modules\research\server.dm"
-#include "code\modules\research\stock_parts.dm"
-#include "code\modules\research\designs\AI_module_designs.dm"
-#include "code\modules\research\designs\autobotter_designs.dm"
-#include "code\modules\research\designs\biogenerator_designs.dm"
-#include "code\modules\research\designs\bluespace_designs.dm"
-#include "code\modules\research\designs\computer_part_designs.dm"
-#include "code\modules\research\designs\electronics_designs.dm"
-#include "code\modules\research\designs\equipment_designs.dm"
-#include "code\modules\research\designs\limbgrower_designs.dm"
-#include "code\modules\research\designs\mecha_designs.dm"
-#include "code\modules\research\designs\mechfabricator_designs.dm"
-#include "code\modules\research\designs\medical_designs.dm"
-#include "code\modules\research\designs\mining_designs.dm"
-#include "code\modules\research\designs\misc_designs.dm"
-#include "code\modules\research\designs\nanite_designs.dm"
-#include "code\modules\research\designs\power_designs.dm"
-#include "code\modules\research\designs\smelting_designs.dm"
-#include "code\modules\research\designs\stock_parts_designs.dm"
-#include "code\modules\research\designs\telecomms_designs.dm"
-#include "code\modules\research\designs\weapon_designs.dm"
-#include "code\modules\research\designs\autolathe_desings\autolathe_designs_construction.dm"
-#include "code\modules\research\designs\autolathe_desings\autolathe_designs_electronics.dm"
-#include "code\modules\research\designs\autolathe_desings\autolathe_designs_medical_and_dinnerware.dm"
-#include "code\modules\research\designs\autolathe_desings\autolathe_designs_sec_and_hacked.dm"
-#include "code\modules\research\designs\autolathe_desings\autolathe_designs_tcomms_and_misc.dm"
-#include "code\modules\research\designs\autolathe_desings\autolathe_designs_tools.dm"
-#include "code\modules\research\designs\comp_board_designs\comp_board_designs_all_misc.dm"
-#include "code\modules\research\designs\comp_board_designs\comp_board_designs_cargo .dm"
-#include "code\modules\research\designs\comp_board_designs\comp_board_designs_engi.dm"
-#include "code\modules\research\designs\comp_board_designs\comp_board_designs_medical.dm"
-#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sci.dm"
-#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sec.dm"
-#include "code\modules\research\designs\machine_desings\machine_designs_all_misc.dm"
-#include "code\modules\research\designs\machine_desings\machine_designs_cargo.dm"
-#include "code\modules\research\designs\machine_desings\machine_designs_engi.dm"
-#include "code\modules\research\designs\machine_desings\machine_designs_medical.dm"
-#include "code\modules\research\designs\machine_desings\machine_designs_sci.dm"
-#include "code\modules\research\designs\machine_desings\machine_designs_service.dm"
-#include "code\modules\research\machinery\_production.dm"
-#include "code\modules\research\machinery\circuit_imprinter.dm"
-#include "code\modules\research\machinery\departmental_circuit_imprinter.dm"
-#include "code\modules\research\machinery\departmental_protolathe.dm"
-#include "code\modules\research\machinery\departmental_techfab.dm"
-#include "code\modules\research\machinery\protolathe.dm"
-#include "code\modules\research\machinery\techfab.dm"
-#include "code\modules\research\nanites\nanite_chamber.dm"
-#include "code\modules\research\nanites\nanite_chamber_computer.dm"
-#include "code\modules\research\nanites\nanite_cloud_controller.dm"
-#include "code\modules\research\nanites\nanite_hijacker.dm"
-#include "code\modules\research\nanites\nanite_misc_items.dm"
-#include "code\modules\research\nanites\nanite_program_hub.dm"
-#include "code\modules\research\nanites\nanite_programmer.dm"
-#include "code\modules\research\nanites\nanite_programs.dm"
-#include "code\modules\research\nanites\nanite_remote.dm"
-#include "code\modules\research\nanites\program_disks.dm"
-#include "code\modules\research\nanites\public_chamber.dm"
-#include "code\modules\research\nanites\nanite_programs\buffing.dm"
-#include "code\modules\research\nanites\nanite_programs\healing.dm"
-#include "code\modules\research\nanites\nanite_programs\rogue.dm"
-#include "code\modules\research\nanites\nanite_programs\sensor.dm"
-#include "code\modules\research\nanites\nanite_programs\suppression.dm"
-#include "code\modules\research\nanites\nanite_programs\utility.dm"
-#include "code\modules\research\nanites\nanite_programs\weapon.dm"
-#include "code\modules\research\techweb\__techweb_helpers.dm"
-#include "code\modules\research\techweb\_techweb.dm"
-#include "code\modules\research\techweb\_techweb_node.dm"
-#include "code\modules\research\techweb\all_nodes.dm"
-#include "code\modules\research\xenoarch\artifact.dm"
-#include "code\modules\research\xenoarch\artifact_list.dm"
-#include "code\modules\research\xenoarch\strange_rock.dm"
-#include "code\modules\research\xenoarch\tools.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\amauri.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\gelthi.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\jurlmah.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\nofruit.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\shand.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\surik.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\telriis.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\thaadra.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\vale.dm"
-#include "code\modules\research\xenoarch\xenobotany\grown\vaporsac.dm"
-#include "code\modules\research\xenobiology\xenobio_camera.dm"
-#include "code\modules\research\xenobiology\xenobiology.dm"
-#include "code\modules\research\xenobiology\crossbreeding\__corecross.dm"
-#include "code\modules\research\xenobiology\crossbreeding\_clothing.dm"
-#include "code\modules\research\xenobiology\crossbreeding\_misc.dm"
-#include "code\modules\research\xenobiology\crossbreeding\_mobs.dm"
-#include "code\modules\research\xenobiology\crossbreeding\_status_effects.dm"
-#include "code\modules\research\xenobiology\crossbreeding\_weapons.dm"
-#include "code\modules\research\xenobiology\crossbreeding\burning.dm"
-#include "code\modules\research\xenobiology\crossbreeding\charged.dm"
-#include "code\modules\research\xenobiology\crossbreeding\chilling.dm"
-#include "code\modules\research\xenobiology\crossbreeding\consuming.dm"
-#include "code\modules\research\xenobiology\crossbreeding\industrial.dm"
-#include "code\modules\research\xenobiology\crossbreeding\prismatic.dm"
-#include "code\modules\research\xenobiology\crossbreeding\recurring.dm"
-#include "code\modules\research\xenobiology\crossbreeding\regenerative.dm"
-#include "code\modules\research\xenobiology\crossbreeding\reproductive.dm"
-#include "code\modules\research\xenobiology\crossbreeding\selfsustaining.dm"
-#include "code\modules\research\xenobiology\crossbreeding\stabilized.dm"
-#include "code\modules\ruins\lavaland_ruin_code.dm"
-#include "code\modules\ruins\lavalandruin_code\biodome_clown_planet.dm"
-#include "code\modules\ruins\lavalandruin_code\pizzaparty.dm"
-#include "code\modules\ruins\lavalandruin_code\puzzle.dm"
-#include "code\modules\ruins\lavalandruin_code\sloth.dm"
-#include "code\modules\ruins\lavalandruin_code\surface.dm"
-#include "code\modules\ruins\lavalandruin_code\syndicate_base.dm"
-#include "code\modules\ruins\objects_and_mobs\ash_walker_den.dm"
-#include "code\modules\ruins\objects_and_mobs\necropolis_gate.dm"
-#include "code\modules\ruins\objects_and_mobs\sin_ruins.dm"
-#include "code\modules\ruins\spaceruin_code\asteroid4.dm"
-#include "code\modules\ruins\spaceruin_code\bigderelict1.dm"
-#include "code\modules\ruins\spaceruin_code\caravanambush.dm"
-#include "code\modules\ruins\spaceruin_code\cloning_lab.dm"
-#include "code\modules\ruins\spaceruin_code\crashedclownship.dm"
-#include "code\modules\ruins\spaceruin_code\crashedship.dm"
-#include "code\modules\ruins\spaceruin_code\deepstorage.dm"
-#include "code\modules\ruins\spaceruin_code\DJstation.dm"
-#include "code\modules\ruins\spaceruin_code\hilbertshotel.dm"
-#include "code\modules\ruins\spaceruin_code\listeningstation.dm"
-#include "code\modules\ruins\spaceruin_code\miracle.dm"
-#include "code\modules\ruins\spaceruin_code\oldstation.dm"
-#include "code\modules\ruins\spaceruin_code\originalcontent.dm"
-#include "code\modules\ruins\spaceruin_code\spacehotel.dm"
-#include "code\modules\ruins\spaceruin_code\TheDerelict.dm"
-#include "code\modules\ruins\spaceruin_code\whiteshipruin_box.dm"
-#include "code\modules\security_levels\keycard_authentication.dm"
-#include "code\modules\security_levels\security_levels.dm"
-#include "code\modules\shuttle\arrivals.dm"
-#include "code\modules\shuttle\assault_pod.dm"
-#include "code\modules\shuttle\computer.dm"
-#include "code\modules\shuttle\docking.dm"
-#include "code\modules\shuttle\elevator.dm"
-#include "code\modules\shuttle\emergency.dm"
-#include "code\modules\shuttle\ferry.dm"
-#include "code\modules\shuttle\manipulator.dm"
-#include "code\modules\shuttle\monastery.dm"
-#include "code\modules\shuttle\navigation_computer.dm"
-#include "code\modules\shuttle\on_move.dm"
-#include "code\modules\shuttle\ripple.dm"
-#include "code\modules\shuttle\shuttle.dm"
-#include "code\modules\shuttle\shuttle_rotate.dm"
-#include "code\modules\shuttle\special.dm"
-#include "code\modules\shuttle\supply.dm"
-#include "code\modules\shuttle\syndicate.dm"
-#include "code\modules\shuttle\white_ship.dm"
-#include "code\modules\spells\spell.dm"
-#include "code\modules\spells\spell_types\adminbussed.dm"
-#include "code\modules\spells\spell_types\aimed.dm"
-#include "code\modules\spells\spell_types\area_teleport.dm"
-#include "code\modules\spells\spell_types\barnyard.dm"
-#include "code\modules\spells\spell_types\bloodcrawl.dm"
-#include "code\modules\spells\spell_types\charge.dm"
-#include "code\modules\spells\spell_types\conjure.dm"
-#include "code\modules\spells\spell_types\construct_spells.dm"
-#include "code\modules\spells\spell_types\devil.dm"
-#include "code\modules\spells\spell_types\devil_boons.dm"
-#include "code\modules\spells\spell_types\dumbfire.dm"
-#include "code\modules\spells\spell_types\emplosion.dm"
-#include "code\modules\spells\spell_types\ethereal_jaunt.dm"
-#include "code\modules\spells\spell_types\explosion.dm"
-#include "code\modules\spells\spell_types\forcewall.dm"
-#include "code\modules\spells\spell_types\genetic.dm"
-#include "code\modules\spells\spell_types\godhand.dm"
-#include "code\modules\spells\spell_types\infinite_guns.dm"
-#include "code\modules\spells\spell_types\inflict_handler.dm"
-#include "code\modules\spells\spell_types\knock.dm"
-#include "code\modules\spells\spell_types\lichdom.dm"
-#include "code\modules\spells\spell_types\lightning.dm"
-#include "code\modules\spells\spell_types\mime.dm"
-#include "code\modules\spells\spell_types\mind_transfer.dm"
-#include "code\modules\spells\spell_types\projectile.dm"
-#include "code\modules\spells\spell_types\rightandwrong.dm"
-#include "code\modules\spells\spell_types\rod_form.dm"
-#include "code\modules\spells\spell_types\santa.dm"
-#include "code\modules\spells\spell_types\shadow_walk.dm"
-#include "code\modules\spells\spell_types\shapeshift.dm"
-#include "code\modules\spells\spell_types\spacetime_distortion.dm"
-#include "code\modules\spells\spell_types\summonitem.dm"
-#include "code\modules\spells\spell_types\taeclowndo.dm"
-#include "code\modules\spells\spell_types\telepathy.dm"
-#include "code\modules\spells\spell_types\the_traps.dm"
-#include "code\modules\spells\spell_types\touch_attacks.dm"
-#include "code\modules\spells\spell_types\trigger.dm"
-#include "code\modules\spells\spell_types\turf_teleport.dm"
-#include "code\modules\spells\spell_types\voice_of_god.dm"
-#include "code\modules\spells\spell_types\wizard.dm"
-#include "code\modules\station_goals\bsa.dm"
-#include "code\modules\station_goals\dna_vault.dm"
-#include "code\modules\station_goals\shield.dm"
-#include "code\modules\station_goals\station_goal.dm"
-#include "code\modules\surgery\amputation.dm"
-#include "code\modules\surgery\brain_surgery.dm"
-#include "code\modules\surgery\breast_augmentation.dm"
-#include "code\modules\surgery\cavity_implant.dm"
-#include "code\modules\surgery\core_removal.dm"
-#include "code\modules\surgery\coronary_bypass.dm"
-#include "code\modules\surgery\dental_implant.dm"
-#include "code\modules\surgery\embalming.dm"
-#include "code\modules\surgery\eye_surgery.dm"
-#include "code\modules\surgery\graft_synthtissue.dm"
-#include "code\modules\surgery\helpers.dm"
-#include "code\modules\surgery\implant_removal.dm"
-#include "code\modules\surgery\limb_augmentation.dm"
-#include "code\modules\surgery\lipoplasty.dm"
-#include "code\modules\surgery\lobectomy.dm"
-#include "code\modules\surgery\mechanic_steps.dm"
-#include "code\modules\surgery\nutcracker.dm"
-#include "code\modules\surgery\organ_manipulation.dm"
-#include "code\modules\surgery\organic_steps.dm"
-#include "code\modules\surgery\penis_augmentation.dm"
-#include "code\modules\surgery\plastic_surgery.dm"
-#include "code\modules\surgery\prosthetic_replacement.dm"
-#include "code\modules\surgery\remove_embedded_object.dm"
-#include "code\modules\surgery\surgery.dm"
-#include "code\modules\surgery\surgery_step.dm"
-#include "code\modules\surgery\tools.dm"
-#include "code\modules\surgery\advanced\brainwashing.dm"
-#include "code\modules\surgery\advanced\lobotomy.dm"
-#include "code\modules\surgery\advanced\necrotic_revival.dm"
-#include "code\modules\surgery\advanced\pacification.dm"
-#include "code\modules\surgery\advanced\reconstruction.dm"
-#include "code\modules\surgery\advanced\revival.dm"
-#include "code\modules\surgery\advanced\toxichealing.dm"
-#include "code\modules\surgery\advanced\viral_bonding.dm"
-#include "code\modules\surgery\advanced\bioware\bioware.dm"
-#include "code\modules\surgery\advanced\bioware\bioware_surgery.dm"
-#include "code\modules\surgery\advanced\bioware\experimental_dissection..dm"
-#include "code\modules\surgery\advanced\bioware\ligament_hook.dm"
-#include "code\modules\surgery\advanced\bioware\ligament_reinforcement.dm"
-#include "code\modules\surgery\advanced\bioware\nerve_grounding.dm"
-#include "code\modules\surgery\advanced\bioware\nerve_splicing.dm"
-#include "code\modules\surgery\advanced\bioware\vein_threading.dm"
-#include "code\modules\surgery\bodyparts\bodyparts.dm"
-#include "code\modules\surgery\bodyparts\broken.dm"
-#include "code\modules\surgery\bodyparts\dismemberment.dm"
-#include "code\modules\surgery\bodyparts\head.dm"
-#include "code\modules\surgery\bodyparts\helpers.dm"
-#include "code\modules\surgery\bodyparts\robot_bodyparts.dm"
-#include "code\modules\surgery\organs\appendix.dm"
-#include "code\modules\surgery\organs\augments_arms.dm"
-#include "code\modules\surgery\organs\augments_chest.dm"
-#include "code\modules\surgery\organs\augments_eyes.dm"
-#include "code\modules\surgery\organs\augments_internal.dm"
-#include "code\modules\surgery\organs\autosurgeon.dm"
-#include "code\modules\surgery\organs\ears.dm"
-#include "code\modules\surgery\organs\eyes.dm"
-#include "code\modules\surgery\organs\heart.dm"
-#include "code\modules\surgery\organs\helpers.dm"
-#include "code\modules\surgery\organs\liver.dm"
-#include "code\modules\surgery\organs\lungs.dm"
-#include "code\modules\surgery\organs\organ_internal.dm"
-#include "code\modules\surgery\organs\stomach.dm"
-#include "code\modules\surgery\organs\tails.dm"
-#include "code\modules\surgery\organs\tongue.dm"
-#include "code\modules\surgery\organs\vocal_cords.dm"
-#include "code\modules\tgs\includes.dm"
-#include "code\modules\tgui\external.dm"
-#include "code\modules\tgui\states.dm"
-#include "code\modules\tgui\subsystem.dm"
-#include "code\modules\tgui\tgui.dm"
-#include "code\modules\tgui\states\admin.dm"
-#include "code\modules\tgui\states\always.dm"
-#include "code\modules\tgui\states\conscious.dm"
-#include "code\modules\tgui\states\contained.dm"
-#include "code\modules\tgui\states\deep_inventory.dm"
-#include "code\modules\tgui\states\default.dm"
-#include "code\modules\tgui\states\hands.dm"
-#include "code\modules\tgui\states\human_adjacent.dm"
-#include "code\modules\tgui\states\inventory.dm"
-#include "code\modules\tgui\states\language_menu.dm"
-#include "code\modules\tgui\states\not_incapacitated.dm"
-#include "code\modules\tgui\states\notcontained.dm"
-#include "code\modules\tgui\states\observer.dm"
-#include "code\modules\tgui\states\physical.dm"
-#include "code\modules\tgui\states\self.dm"
-#include "code\modules\tgui\states\zlevel.dm"
-#include "code\modules\tooltip\tooltip.dm"
-#include "code\modules\unit_tests\_unit_tests.dm"
-#include "code\modules\uplink\uplink_devices.dm"
-#include "code\modules\uplink\uplink_items.dm"
-#include "code\modules\uplink\uplink_purchase_log.dm"
-#include "code\modules\vehicles\_vehicle.dm"
-#include "code\modules\vehicles\atv.dm"
-#include "code\modules\vehicles\bicycle.dm"
-#include "code\modules\vehicles\lavaboat.dm"
-#include "code\modules\vehicles\motorized_wheelchair.dm"
-#include "code\modules\vehicles\pimpin_ride.dm"
-#include "code\modules\vehicles\ridden.dm"
-#include "code\modules\vehicles\scooter.dm"
-#include "code\modules\vehicles\sealed.dm"
-#include "code\modules\vehicles\secway.dm"
-#include "code\modules\vehicles\speedbike.dm"
-#include "code\modules\vehicles\vehicle_actions.dm"
-#include "code\modules\vehicles\vehicle_key.dm"
-#include "code\modules\vehicles\wheelchair.dm"
-#include "code\modules\vehicles\cars\car.dm"
-#include "code\modules\vehicles\cars\clowncar.dm"
-#include "code\modules\vending\_vending.dm"
-#include "code\modules\vending\assist.dm"
-#include "code\modules\vending\autodrobe.dm"
-#include "code\modules\vending\boozeomat.dm"
-#include "code\modules\vending\cartridge.dm"
-#include "code\modules\vending\cigarette.dm"
-#include "code\modules\vending\clothesmate.dm"
-#include "code\modules\vending\coffee.dm"
-#include "code\modules\vending\cola.dm"
-#include "code\modules\vending\drinnerware.dm"
-#include "code\modules\vending\engineering.dm"
-#include "code\modules\vending\engivend.dm"
-#include "code\modules\vending\games.dm"
-#include "code\modules\vending\liberation.dm"
-#include "code\modules\vending\liberation_toy.dm"
-#include "code\modules\vending\magivend.dm"
-#include "code\modules\vending\medical.dm"
-#include "code\modules\vending\medical_wall.dm"
-#include "code\modules\vending\megaseed.dm"
-#include "code\modules\vending\nutrimax.dm"
-#include "code\modules\vending\plasmaresearch.dm"
-#include "code\modules\vending\robotics.dm"
-#include "code\modules\vending\security.dm"
-#include "code\modules\vending\snack.dm"
-#include "code\modules\vending\sovietsoda.dm"
-#include "code\modules\vending\sustenance.dm"
-#include "code\modules\vending\toys.dm"
-#include "code\modules\vending\wardrobes.dm"
-#include "code\modules\vending\youtool.dm"
-#include "code\modules\VR\vr_human.dm"
-#include "code\modules\VR\vr_sleeper.dm"
-#include "code\modules\zombie\items.dm"
-#include "code\modules\zombie\organs.dm"
-#include "hyperstation\code\datums\elements\holder_micro.dm"
-#include "hyperstation\code\datums\ruins\lavaland.dm"
-#include "hyperstation\code\datums\traits\good.dm"
-#include "hyperstation\code\datums\traits\neutral.dm"
-#include "hyperstation\code\game\objects\structures\ghost_role_spawners.dm"
-#include "hyperstation\code\gamemode\traitor_lewd.dm"
-#include "hyperstation\code\gamemode\traitor_thief.dm"
-#include "hyperstation\code\gamemode\werewolf\werewolf.dm"
-#include "hyperstation\code\mobs\carrion.dm"
-#include "hyperstation\code\mobs\hugbot.dm"
-#include "hyperstation\code\mobs\mimic.dm"
-#include "hyperstation\code\mobs\werewolf.dm"
-#include "hyperstation\code\modules\traits.dm"
-#include "hyperstation\code\modules\antagonists\werewolf\werewolf.dm"
-#include "hyperstation\code\modules\client\loadout\glasses.dm"
-#include "hyperstation\code\modules\clothing\head.dm"
-#include "hyperstation\code\modules\clothing\glasses\polychromic_glasses.dm"
-#include "hyperstation\code\modules\clothing\spacesuits\hardsuit.dm"
-#include "hyperstation\code\modules\clothing\suits\misc.dm"
-#include "hyperstation\code\modules\crafting\bounties.dm"
-#include "hyperstation\code\modules\crafting\recipes.dm"
-#include "hyperstation\code\modules\integrated_electronics\input.dm"
-#include "hyperstation\code\modules\mob\mob_helpers.dm"
-#include "hyperstation\code\modules\patreon\patreon.dm"
-#include "hyperstation\code\modules\resize\resizing.dm"
-#include "hyperstation\code\modules\resize\sizechems.dm"
-#include "hyperstation\code\modules\resize\sizegun.dm"
-#include "hyperstation\code\obj\bluespace sewing kit.dm"
-#include "hyperstation\code\obj\condom.dm"
-#include "hyperstation\code\obj\decal.dm"
-#include "hyperstation\code\obj\fluff.dm"
-#include "hyperstation\code\obj\kinkyclothes.dm"
-#include "hyperstation\code\obj\leash.dm"
-#include "hyperstation\code\obj\lunaritems.dm"
-#include "hyperstation\code\obj\milking machine.dm"
-#include "hyperstation\code\obj\plushes.dm"
-#include "hyperstation\code\obj\pregnancytester.dm"
-#include "hyperstation\code\obj\rewards.dm"
-#include "hyperstation\code\obj\rope.dm"
-#include "hyperstation\code\obj\sounding.dm"
-#include "interface\interface.dm"
-#include "interface\menu.dm"
-#include "interface\stylesheet.dm"
-#include "interface\skin.dmf"
-#include "modular_citadel\code\init.dm"
-#include "modular_citadel\code\__HELPERS\list2list.dm"
-#include "modular_citadel\code\__HELPERS\lists.dm"
-#include "modular_citadel\code\__HELPERS\mobs.dm"
-#include "modular_citadel\code\_globalvars\lists\mobs.dm"
-#include "modular_citadel\code\_onclick\click.dm"
-#include "modular_citadel\code\_onclick\item_attack.dm"
-#include "modular_citadel\code\_onclick\other_mobs.dm"
-#include "modular_citadel\code\_onclick\hud\screen_objects.dm"
-#include "modular_citadel\code\_onclick\hud\sprint.dm"
-#include "modular_citadel\code\_onclick\hud\stamina.dm"
-#include "modular_citadel\code\controllers\configuration\entries\general.dm"
-#include "modular_citadel\code\controllers\subsystem\job.dm"
-#include "modular_citadel\code\datums\components\material_container.dm"
-#include "modular_citadel\code\datums\components\phantomthief.dm"
-#include "modular_citadel\code\datums\components\souldeath.dm"
-#include "modular_citadel\code\datums\mood_events\chem_events.dm"
-#include "modular_citadel\code\datums\mood_events\generic_negative_events.dm"
-#include "modular_citadel\code\datums\mood_events\generic_positive_events.dm"
-#include "modular_citadel\code\datums\mood_events\moodular.dm"
-#include "modular_citadel\code\datums\mutations\hulk.dm"
-#include "modular_citadel\code\datums\status_effects\chems.dm"
-#include "modular_citadel\code\datums\status_effects\debuffs.dm"
-#include "modular_citadel\code\datums\traits\negative.dm"
-#include "modular_citadel\code\datums\traits\neutral.dm"
-#include "modular_citadel\code\datums\wires\airlock.dm"
-#include "modular_citadel\code\datums\wires\autoylathe.dm"
-#include "modular_citadel\code\game\area\cit_areas.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\dominator.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\dominator_countdown.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\gang.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\gang_datums.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\gang_decals.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\gang_hud.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\gang_items.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\gang_pen.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\gangs.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\gangtool.dm"
-#include "modular_citadel\code\game\gamemodes\gangs\implant_gang.dm"
-#include "modular_citadel\code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm"
-#include "modular_citadel\code\game\gamemodes\revolution\revolution.dm"
-#include "modular_citadel\code\game\machinery\cryopod.dm"
-#include "modular_citadel\code\game\machinery\displaycases.dm"
-#include "modular_citadel\code\game\machinery\Sleeper.dm"
-#include "modular_citadel\code\game\machinery\toylathe.dm"
-#include "modular_citadel\code\game\machinery\vending.dm"
-#include "modular_citadel\code\game\machinery\wishgranter.dm"
-#include "modular_citadel\code\game\machinery\doors\airlock.dm"
-#include "modular_citadel\code\game\machinery\doors\airlock_types.dm"
-#include "modular_citadel\code\game\objects\cit_screenshake.dm"
-#include "modular_citadel\code\game\objects\items.dm"
-#include "modular_citadel\code\game\objects\tools.dm"
-#include "modular_citadel\code\game\objects\effects\spawner\spawners.dm"
-#include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm"
-#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\impact.dm"
-#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm"
-#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm"
-#include "modular_citadel\code\game\objects\items\balls.dm"
-#include "modular_citadel\code\game\objects\items\boombox.dm"
-#include "modular_citadel\code\game\objects\items\holy_weapons.dm"
-#include "modular_citadel\code\game\objects\items\honk.dm"
-#include "modular_citadel\code\game\objects\items\meat.dm"
-#include "modular_citadel\code\game\objects\items\stunsword.dm"
-#include "modular_citadel\code\game\objects\items\vending_items.dm"
-#include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm"
-#include "modular_citadel\code\game\objects\items\devices\aicard.dm"
-#include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm"
-#include "modular_citadel\code\game\objects\items\devices\radio\headset.dm"
-#include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm"
-#include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm"
-#include "modular_citadel\code\game\objects\items\melee\misc.dm"
-#include "modular_citadel\code\game\objects\items\robot\robot_upgrades.dm"
-#include "modular_citadel\code\game\objects\items\storage\firstaid.dm"
-#include "modular_citadel\code\game\objects\structures\tables_racks.dm"
-#include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm"
-#include "modular_citadel\code\game\objects\structures\beds_chairs\sofa.dm"
-#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\fitness.dm"
-#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\wardrobe.dm"
-#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\secure\citadel_lockers.dm"
-#include "modular_citadel\code\game\turfs\cit_turfs.dm"
-#include "modular_citadel\code\modules\admin\chat_commands.dm"
-#include "modular_citadel\code\modules\admin\holder2.dm"
-#include "modular_citadel\code\modules\admin\secrets.dm"
-#include "modular_citadel\code\modules\arousal\arousal.dm"
-#include "modular_citadel\code\modules\arousal\organs\breasts.dm"
-#include "modular_citadel\code\modules\arousal\organs\eggsack.dm"
-#include "modular_citadel\code\modules\arousal\organs\genitals.dm"
-#include "modular_citadel\code\modules\arousal\organs\genitals_sprite_accessories.dm"
-#include "modular_citadel\code\modules\arousal\organs\ovipositor.dm"
-#include "modular_citadel\code\modules\arousal\organs\penis.dm"
-#include "modular_citadel\code\modules\arousal\organs\testicles.dm"
-#include "modular_citadel\code\modules\arousal\organs\vagina.dm"
-#include "modular_citadel\code\modules\arousal\organs\womb.dm"
-#include "modular_citadel\code\modules\arousal\toys\dildos.dm"
-#include "modular_citadel\code\modules\awaymissions\citadel_ghostrole_spawners.dm"
-#include "modular_citadel\code\modules\cargo\console.dm"
-#include "modular_citadel\code\modules\client\client_defines.dm"
-#include "modular_citadel\code\modules\client\client_procs.dm"
-#include "modular_citadel\code\modules\client\preferences.dm"
-#include "modular_citadel\code\modules\client\preferences_savefile.dm"
-#include "modular_citadel\code\modules\client\preferences_toggles.dm"
-#include "modular_citadel\code\modules\client\loadout\__donator.dm"
-#include "modular_citadel\code\modules\client\loadout\_medical.dm"
-#include "modular_citadel\code\modules\client\loadout\_security.dm"
-#include "modular_citadel\code\modules\client\loadout\_service.dm"
-#include "modular_citadel\code\modules\client\loadout\backpack.dm"
-#include "modular_citadel\code\modules\client\loadout\glasses.dm"
-#include "modular_citadel\code\modules\client\loadout\gloves.dm"
-#include "modular_citadel\code\modules\client\loadout\hands.dm"
-#include "modular_citadel\code\modules\client\loadout\head.dm"
-#include "modular_citadel\code\modules\client\loadout\loadout.dm"
-#include "modular_citadel\code\modules\client\loadout\mask.dm"
-#include "modular_citadel\code\modules\client\loadout\neck.dm"
-#include "modular_citadel\code\modules\client\loadout\shoes.dm"
-#include "modular_citadel\code\modules\client\loadout\suit.dm"
-#include "modular_citadel\code\modules\client\loadout\uniform.dm"
-#include "modular_citadel\code\modules\client\verbs\who.dm"
-#include "modular_citadel\code\modules\clothing\clothing.dm"
-#include "modular_citadel\code\modules\clothing\neck.dm"
-#include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm"
-#include "modular_citadel\code\modules\clothing\head\head.dm"
-#include "modular_citadel\code\modules\clothing\spacesuits\cydonian_armor.dm"
-#include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm"
-#include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm"
-#include "modular_citadel\code\modules\clothing\suits\polychromic_suit.dm"
-#include "modular_citadel\code\modules\clothing\suits\suits.dm"
-#include "modular_citadel\code\modules\clothing\under\polychromic_clothes.dm"
-#include "modular_citadel\code\modules\clothing\under\trek_under.dm"
-#include "modular_citadel\code\modules\clothing\under\turtlenecks.dm"
-#include "modular_citadel\code\modules\clothing\under\under.dm"
-#include "modular_citadel\code\modules\crafting\recipes.dm"
-#include "modular_citadel\code\modules\custom_loadout\custom_items.dm"
-#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm"
-#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm"
-#include "modular_citadel\code\modules\events\blob.dm"
-#include "modular_citadel\code\modules\events\wizard\magicarp.dm"
-#include "modular_citadel\code\modules\food_and_drinks\snacks\meat.dm"
-#include "modular_citadel\code\modules\integrated_electronics\subtypes\manipulation.dm"
-#include "modular_citadel\code\modules\jobs\dresscode_values.dm"
-#include "modular_citadel\code\modules\keybindings\bindings_carbon.dm"
-#include "modular_citadel\code\modules\keybindings\bindings_human.dm"
-#include "modular_citadel\code\modules\keybindings\bindings_robot.dm"
-#include "modular_citadel\code\modules\mentor\follow.dm"
-#include "modular_citadel\code\modules\mentor\mentor.dm"
-#include "modular_citadel\code\modules\mentor\mentor_memo.dm"
-#include "modular_citadel\code\modules\mentor\mentor_verbs.dm"
-#include "modular_citadel\code\modules\mentor\mentorhelp.dm"
-#include "modular_citadel\code\modules\mentor\mentorpm.dm"
-#include "modular_citadel\code\modules\mentor\mentorsay.dm"
-#include "modular_citadel\code\modules\mining\mining_ruins.dm"
-#include "modular_citadel\code\modules\mob\cit_emotes.dm"
-#include "modular_citadel\code\modules\mob\mob.dm"
-#include "modular_citadel\code\modules\mob\dead\new_player\sprite_accessories.dm"
-#include "modular_citadel\code\modules\mob\living\damage_procs.dm"
-#include "modular_citadel\code\modules\mob\living\living.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\carbon.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\life.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\reindex_screams.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\human\human.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\human\life.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\human\species.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\furrypeople.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\ipc.dm"
-#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\jellypeople.dm"
-#include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm"
-#include "modular_citadel\code\modules\mob\living\silicon\robot\robot.dm"
-#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm"
-#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm"
-#include "modular_citadel\code\modules\mob\living\simple_animal\banana_spider.dm"
-#include "modular_citadel\code\modules\mob\living\simple_animal\kiwi.dm"
-#include "modular_citadel\code\modules\mob\living\simple_animal\simplemob_vore_values.dm"
-#include "modular_citadel\code\modules\power\lighting.dm"
-#include "modular_citadel\code\modules\projectiles\gun.dm"
-#include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm"
-#include "modular_citadel\code\modules\projectiles\ammunition\ballistic\smg\smg.dm"
-#include "modular_citadel\code\modules\projectiles\boxes_magazines\ammo_boxes.dm"
-#include "modular_citadel\code\modules\projectiles\boxes_magazines\external\pistol.dm"
-#include "modular_citadel\code\modules\projectiles\boxes_magazines\external\smg\smg.dm"
-#include "modular_citadel\code\modules\projectiles\bullets\bullets\smg.dm"
-#include "modular_citadel\code\modules\projectiles\guns\pumpenergy.dm"
-#include "modular_citadel\code\modules\projectiles\guns\toys.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\revolver.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\rifles.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm"
-#include "modular_citadel\code\modules\projectiles\guns\energy\energy_gun.dm"
-#include "modular_citadel\code\modules\projectiles\guns\energy\laser.dm"
-#include "modular_citadel\code\modules\projectiles\projectiles\reusable.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\astrogen.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\eigentstasium.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\enlargement.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\fermi_reagents.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\healing.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\MKUltra.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\other_reagents.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\reagents\SDGF.dm"
-#include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm"
-#include "modular_citadel\code\modules\reagents\objects\clothes.dm"
-#include "modular_citadel\code\modules\reagents\objects\items.dm"
-#include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm"
-#include "modular_citadel\code\modules\recycling\disposal\bin.dm"
-#include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm"
-#include "modular_citadel\code\modules\research\designs\machine_designs.dm"
-#include "modular_citadel\code\modules\research\designs\xenobio_designs.dm"
-#include "modular_citadel\code\modules\research\techweb\_techweb.dm"
-#include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm"
-#include "modular_citadel\code\modules\vehicles\secway.dm"
-#include "modular_citadel\code\modules\vore\hook-defs_vr.dm"
-#include "modular_citadel\code\modules\vore\persistence.dm"
-#include "modular_citadel\code\modules\vore\trycatch_vr.dm"
-#include "modular_citadel\code\modules\vore\eating\belly_dat_vr.dm"
-#include "modular_citadel\code\modules\vore\eating\belly_obj_vr.dm"
-#include "modular_citadel\code\modules\vore\eating\bellymodes_vr.dm"
-#include "modular_citadel\code\modules\vore\eating\digest_act_vr.dm"
-#include "modular_citadel\code\modules\vore\eating\living_vr.dm"
-#include "modular_citadel\code\modules\vore\eating\vore_vr.dm"
-#include "modular_citadel\code\modules\vore\eating\voreitems.dm"
-#include "modular_citadel\code\modules\vore\eating\vorepanel_vr.dm"
-#include "modular_citadel\interface\skin.dmf"
-#include "yogstation\code\modules\power\energyharvester.dm"
-// END_INCLUDE
+
+// DM Environment file for tgstation.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 .
+// END_FILE_DIR
+
+// BEGIN_PREFERENCES
+#define DEBUG
+// END_PREFERENCES
+
+// BEGIN_INCLUDE
+#include "_maps\_basemap.dm"
+#include "code\_compile_options.dm"
+#include "code\world.dm"
+#include "code\__DEFINES\_globals.dm"
+#include "code\__DEFINES\_protect.dm"
+#include "code\__DEFINES\_tick.dm"
+#include "code\__DEFINES\access.dm"
+#include "code\__DEFINES\admin.dm"
+#include "code\__DEFINES\antagonists.dm"
+#include "code\__DEFINES\atmospherics.dm"
+#include "code\__DEFINES\atom_hud.dm"
+#include "code\__DEFINES\bsql.config.dm"
+#include "code\__DEFINES\bsql.dm"
+#include "code\__DEFINES\callbacks.dm"
+#include "code\__DEFINES\cargo.dm"
+#include "code\__DEFINES\cinematics.dm"
+#include "code\__DEFINES\citadel_defines.dm"
+#include "code\__DEFINES\cleaning.dm"
+#include "code\__DEFINES\clockcult.dm"
+#include "code\__DEFINES\colors.dm"
+#include "code\__DEFINES\combat.dm"
+#include "code\__DEFINES\components.dm"
+#include "code\__DEFINES\configuration.dm"
+#include "code\__DEFINES\construction.dm"
+#include "code\__DEFINES\contracts.dm"
+#include "code\__DEFINES\cult.dm"
+#include "code\__DEFINES\diseases.dm"
+#include "code\__DEFINES\DNA.dm"
+#include "code\__DEFINES\events.dm"
+#include "code\__DEFINES\exports.dm"
+#include "code\__DEFINES\flags.dm"
+#include "code\__DEFINES\food.dm"
+#include "code\__DEFINES\footsteps.dm"
+#include "code\__DEFINES\hud.dm"
+#include "code\__DEFINES\integrated_electronics.dm"
+#include "code\__DEFINES\interaction_flags.dm"
+#include "code\__DEFINES\inventory.dm"
+#include "code\__DEFINES\is_helpers.dm"
+#include "code\__DEFINES\jobs.dm"
+#include "code\__DEFINES\language.dm"
+#include "code\__DEFINES\layers.dm"
+#include "code\__DEFINES\lighting.dm"
+#include "code\__DEFINES\logging.dm"
+#include "code\__DEFINES\machines.dm"
+#include "code\__DEFINES\maps.dm"
+#include "code\__DEFINES\maths.dm"
+#include "code\__DEFINES\MC.dm"
+#include "code\__DEFINES\mecha.dm"
+#include "code\__DEFINES\medal.dm"
+#include "code\__DEFINES\melee.dm"
+#include "code\__DEFINES\menu.dm"
+#include "code\__DEFINES\misc.dm"
+#include "code\__DEFINES\mobs.dm"
+#include "code\__DEFINES\monkeys.dm"
+#include "code\__DEFINES\move_force.dm"
+#include "code\__DEFINES\movement.dm"
+#include "code\__DEFINES\movespeed_modification.dm"
+#include "code\__DEFINES\nanites.dm"
+#include "code\__DEFINES\networks.dm"
+#include "code\__DEFINES\obj_flags.dm"
+#include "code\__DEFINES\pinpointers.dm"
+#include "code\__DEFINES\pipe_construction.dm"
+#include "code\__DEFINES\pool.dm"
+#include "code\__DEFINES\preferences.dm"
+#include "code\__DEFINES\profile.dm"
+#include "code\__DEFINES\qdel.dm"
+#include "code\__DEFINES\radiation.dm"
+#include "code\__DEFINES\radio.dm"
+#include "code\__DEFINES\reactions.dm"
+#include "code\__DEFINES\reagents.dm"
+#include "code\__DEFINES\reagents_specific_heat.dm"
+#include "code\__DEFINES\research.dm"
+#include "code\__DEFINES\robots.dm"
+#include "code\__DEFINES\role_preferences.dm"
+#include "code\__DEFINES\rust_g.config.dm"
+#include "code\__DEFINES\rust_g.dm"
+#include "code\__DEFINES\say.dm"
+#include "code\__DEFINES\shuttles.dm"
+#include "code\__DEFINES\sight.dm"
+#include "code\__DEFINES\sound.dm"
+#include "code\__DEFINES\spaceman_dmm.dm"
+#include "code\__DEFINES\stat.dm"
+#include "code\__DEFINES\stat_tracking.dm"
+#include "code\__DEFINES\status_effects.dm"
+#include "code\__DEFINES\subsystems.dm"
+#include "code\__DEFINES\tgs.config.dm"
+#include "code\__DEFINES\tgs.dm"
+#include "code\__DEFINES\tgui.dm"
+#include "code\__DEFINES\time.dm"
+#include "code\__DEFINES\tools.dm"
+#include "code\__DEFINES\traits.dm"
+#include "code\__DEFINES\turf_flags.dm"
+#include "code\__DEFINES\typeids.dm"
+#include "code\__DEFINES\vehicles.dm"
+#include "code\__DEFINES\voreconstants.dm"
+#include "code\__DEFINES\vv.dm"
+#include "code\__DEFINES\wall_dents.dm"
+#include "code\__DEFINES\wires.dm"
+#include "code\__DEFINES\dcs\signals.dm"
+#include "code\__HELPERS\_cit_helpers.dm"
+#include "code\__HELPERS\_lists.dm"
+#include "code\__HELPERS\_logging.dm"
+#include "code\__HELPERS\_string_lists.dm"
+#include "code\__HELPERS\areas.dm"
+#include "code\__HELPERS\AStar.dm"
+#include "code\__HELPERS\cmp.dm"
+#include "code\__HELPERS\dates.dm"
+#include "code\__HELPERS\dna.dm"
+#include "code\__HELPERS\files.dm"
+#include "code\__HELPERS\game.dm"
+#include "code\__HELPERS\global_lists.dm"
+#include "code\__HELPERS\heap.dm"
+#include "code\__HELPERS\icon_smoothing.dm"
+#include "code\__HELPERS\icons.dm"
+#include "code\__HELPERS\level_traits.dm"
+#include "code\__HELPERS\matrices.dm"
+#include "code\__HELPERS\mobs.dm"
+#include "code\__HELPERS\mouse_control.dm"
+#include "code\__HELPERS\names.dm"
+#include "code\__HELPERS\priority_announce.dm"
+#include "code\__HELPERS\pronouns.dm"
+#include "code\__HELPERS\qdel.dm"
+#include "code\__HELPERS\radiation.dm"
+#include "code\__HELPERS\radio.dm"
+#include "code\__HELPERS\reagents.dm"
+#include "code\__HELPERS\roundend.dm"
+#include "code\__HELPERS\sanitize_values.dm"
+#include "code\__HELPERS\shell.dm"
+#include "code\__HELPERS\stat_tracking.dm"
+#include "code\__HELPERS\text.dm"
+#include "code\__HELPERS\text_vr.dm"
+#include "code\__HELPERS\time.dm"
+#include "code\__HELPERS\type2type.dm"
+#include "code\__HELPERS\type2type_vr.dm"
+#include "code\__HELPERS\typelists.dm"
+#include "code\__HELPERS\unsorted.dm"
+#include "code\__HELPERS\view.dm"
+#include "code\__HELPERS\sorts\__main.dm"
+#include "code\__HELPERS\sorts\InsertSort.dm"
+#include "code\__HELPERS\sorts\MergeSort.dm"
+#include "code\__HELPERS\sorts\TimSort.dm"
+#include "code\_globalvars\bitfields.dm"
+#include "code\_globalvars\configuration.dm"
+#include "code\_globalvars\game_modes.dm"
+#include "code\_globalvars\genetics.dm"
+#include "code\_globalvars\logging.dm"
+#include "code\_globalvars\misc.dm"
+#include "code\_globalvars\regexes.dm"
+#include "code\_globalvars\lists\flavor_misc.dm"
+#include "code\_globalvars\lists\maintenance_loot.dm"
+#include "code\_globalvars\lists\mapping.dm"
+#include "code\_globalvars\lists\medals.dm"
+#include "code\_globalvars\lists\mobs.dm"
+#include "code\_globalvars\lists\names.dm"
+#include "code\_globalvars\lists\objects.dm"
+#include "code\_globalvars\lists\poll_ignore.dm"
+#include "code\_globalvars\lists\typecache.dm"
+#include "code\_globalvars\lists\vending.dm"
+#include "code\_js\byjax.dm"
+#include "code\_js\menus.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\action_button.dm"
+#include "code\_onclick\hud\ai.dm"
+#include "code\_onclick\hud\alert.dm"
+#include "code\_onclick\hud\alien.dm"
+#include "code\_onclick\hud\alien_larva.dm"
+#include "code\_onclick\hud\blob_overmind.dm"
+#include "code\_onclick\hud\blobbernauthud.dm"
+#include "code\_onclick\hud\constructs.dm"
+#include "code\_onclick\hud\credits.dm"
+#include "code\_onclick\hud\devil.dm"
+#include "code\_onclick\hud\drones.dm"
+#include "code\_onclick\hud\fullscreen.dm"
+#include "code\_onclick\hud\generic_dextrous.dm"
+#include "code\_onclick\hud\ghost.dm"
+#include "code\_onclick\hud\guardian.dm"
+#include "code\_onclick\hud\hud.dm"
+#include "code\_onclick\hud\hud_cit.dm"
+#include "code\_onclick\hud\human.dm"
+#include "code\_onclick\hud\monkey.dm"
+#include "code\_onclick\hud\movable_screen_objects.dm"
+#include "code\_onclick\hud\parallax.dm"
+#include "code\_onclick\hud\picture_in_picture.dm"
+#include "code\_onclick\hud\plane_master.dm"
+#include "code\_onclick\hud\radial.dm"
+#include "code\_onclick\hud\radial_persistent.dm"
+#include "code\_onclick\hud\revenanthud.dm"
+#include "code\_onclick\hud\robot.dm"
+#include "code\_onclick\hud\screen_objects.dm"
+#include "code\_onclick\hud\swarmer.dm"
+#include "code\controllers\admin.dm"
+#include "code\controllers\configuration_citadel.dm"
+#include "code\controllers\controller.dm"
+#include "code\controllers\failsafe.dm"
+#include "code\controllers\globals.dm"
+#include "code\controllers\hooks.dm"
+#include "code\controllers\master.dm"
+#include "code\controllers\subsystem.dm"
+#include "code\controllers\configuration\config_entry.dm"
+#include "code\controllers\configuration\configuration.dm"
+#include "code\controllers\configuration\entries\comms.dm"
+#include "code\controllers\configuration\entries\dbconfig.dm"
+#include "code\controllers\configuration\entries\game_options.dm"
+#include "code\controllers\configuration\entries\general.dm"
+#include "code\controllers\subsystem\acid.dm"
+#include "code\controllers\subsystem\adjacent_air.dm"
+#include "code\controllers\subsystem\air.dm"
+#include "code\controllers\subsystem\air_turfs.dm"
+#include "code\controllers\subsystem\assets.dm"
+#include "code\controllers\subsystem\atoms.dm"
+#include "code\controllers\subsystem\augury.dm"
+#include "code\controllers\subsystem\autotransfer.dm"
+#include "code\controllers\subsystem\blackbox.dm"
+#include "code\controllers\subsystem\chat.dm"
+#include "code\controllers\subsystem\communications.dm"
+#include "code\controllers\subsystem\dbcore.dm"
+#include "code\controllers\subsystem\dcs.dm"
+#include "code\controllers\subsystem\disease.dm"
+#include "code\controllers\subsystem\events.dm"
+#include "code\controllers\subsystem\fire_burning.dm"
+#include "code\controllers\subsystem\garbage.dm"
+#include "code\controllers\subsystem\icon_smooth.dm"
+#include "code\controllers\subsystem\idlenpcpool.dm"
+#include "code\controllers\subsystem\input.dm"
+#include "code\controllers\subsystem\ipintel.dm"
+#include "code\controllers\subsystem\item_spawning.dm"
+#include "code\controllers\subsystem\job.dm"
+#include "code\controllers\subsystem\jukeboxes.dm"
+#include "code\controllers\subsystem\language.dm"
+#include "code\controllers\subsystem\lighting.dm"
+#include "code\controllers\subsystem\machines.dm"
+#include "code\controllers\subsystem\mapping.dm"
+#include "code\controllers\subsystem\medals.dm"
+#include "code\controllers\subsystem\minor_mapping.dm"
+#include "code\controllers\subsystem\mobs.dm"
+#include "code\controllers\subsystem\moods.dm"
+#include "code\controllers\subsystem\nightshift.dm"
+#include "code\controllers\subsystem\npcpool.dm"
+#include "code\controllers\subsystem\overlays.dm"
+#include "code\controllers\subsystem\pai.dm"
+#include "code\controllers\subsystem\parallax.dm"
+#include "code\controllers\subsystem\pathfinder.dm"
+#include "code\controllers\subsystem\persistence.dm"
+#include "code\controllers\subsystem\ping.dm"
+#include "code\controllers\subsystem\radiation.dm"
+#include "code\controllers\subsystem\radio.dm"
+#include "code\controllers\subsystem\research.dm"
+#include "code\controllers\subsystem\server_maint.dm"
+#include "code\controllers\subsystem\shuttle.dm"
+#include "code\controllers\subsystem\spacedrift.dm"
+#include "code\controllers\subsystem\stickyban.dm"
+#include "code\controllers\subsystem\sun.dm"
+#include "code\controllers\subsystem\tgui.dm"
+#include "code\controllers\subsystem\throwing.dm"
+#include "code\controllers\subsystem\ticker.dm"
+#include "code\controllers\subsystem\time_track.dm"
+#include "code\controllers\subsystem\timer.dm"
+#include "code\controllers\subsystem\title.dm"
+#include "code\controllers\subsystem\traumas.dm"
+#include "code\controllers\subsystem\vis_overlays.dm"
+#include "code\controllers\subsystem\vore.dm"
+#include "code\controllers\subsystem\vote.dm"
+#include "code\controllers\subsystem\weather.dm"
+#include "code\controllers\subsystem\processing\chemistry.dm"
+#include "code\controllers\subsystem\processing\circuit.dm"
+#include "code\controllers\subsystem\processing\fastprocess.dm"
+#include "code\controllers\subsystem\processing\fields.dm"
+#include "code\controllers\subsystem\processing\nanites.dm"
+#include "code\controllers\subsystem\processing\networks.dm"
+#include "code\controllers\subsystem\processing\obj.dm"
+#include "code\controllers\subsystem\processing\processing.dm"
+#include "code\controllers\subsystem\processing\projectiles.dm"
+#include "code\controllers\subsystem\processing\quirks.dm"
+#include "code\controllers\subsystem\processing\wet_floors.dm"
+#include "code\datums\action.dm"
+#include "code\datums\ai_laws.dm"
+#include "code\datums\armor.dm"
+#include "code\datums\beam.dm"
+#include "code\datums\browser.dm"
+#include "code\datums\callback.dm"
+#include "code\datums\chatmessage.dm"
+#include "code\datums\cinematic.dm"
+#include "code\datums\dash_weapon.dm"
+#include "code\datums\datacore.dm"
+#include "code\datums\datum.dm"
+#include "code\datums\datumvars.dm"
+#include "code\datums\dna.dm"
+#include "code\datums\dog_fashion.dm"
+#include "code\datums\embedding_behavior.dm"
+#include "code\datums\emotes.dm"
+#include "code\datums\ert.dm"
+#include "code\datums\explosion.dm"
+#include "code\datums\forced_movement.dm"
+#include "code\datums\holocall.dm"
+#include "code\datums\http.dm"
+#include "code\datums\hud.dm"
+#include "code\datums\map_config.dm"
+#include "code\datums\martial.dm"
+#include "code\datums\mind.dm"
+#include "code\datums\mutable_appearance.dm"
+#include "code\datums\numbered_display.dm"
+#include "code\datums\outfit.dm"
+#include "code\datums\position_point_vector.dm"
+#include "code\datums\profiling.dm"
+#include "code\datums\progressbar.dm"
+#include "code\datums\radiation_wave.dm"
+#include "code\datums\recipe.dm"
+#include "code\datums\ruins.dm"
+#include "code\datums\saymode.dm"
+#include "code\datums\shuttles.dm"
+#include "code\datums\soullink.dm"
+#include "code\datums\spawners_menu.dm"
+#include "code\datums\verbs.dm"
+#include "code\datums\weakrefs.dm"
+#include "code\datums\world_topic.dm"
+#include "code\datums\actions\beam_rifle.dm"
+#include "code\datums\actions\ninja.dm"
+#include "code\datums\brain_damage\brain_trauma.dm"
+#include "code\datums\brain_damage\hypnosis.dm"
+#include "code\datums\brain_damage\imaginary_friend.dm"
+#include "code\datums\brain_damage\mild.dm"
+#include "code\datums\brain_damage\phobia.dm"
+#include "code\datums\brain_damage\severe.dm"
+#include "code\datums\brain_damage\special.dm"
+#include "code\datums\brain_damage\split_personality.dm"
+#include "code\datums\components\_component.dm"
+#include "code\datums\components\anti_magic.dm"
+#include "code\datums\components\armor_plate.dm"
+#include "code\datums\components\bouncy.dm"
+#include "code\datums\components\butchering.dm"
+#include "code\datums\components\caltrop.dm"
+#include "code\datums\components\chasm.dm"
+#include "code\datums\components\construction.dm"
+#include "code\datums\components\decal.dm"
+#include "code\datums\components\earprotection.dm"
+#include "code\datums\components\edit_complainer.dm"
+#include "code\datums\components\empprotection.dm"
+#include "code\datums\components\footstep.dm"
+#include "code\datums\components\forced_gravity.dm"
+#include "code\datums\components\infective.dm"
+#include "code\datums\components\jousting.dm"
+#include "code\datums\components\knockoff.dm"
+#include "code\datums\components\lockon_aiming.dm"
+#include "code\datums\components\magnetic_catch.dm"
+#include "code\datums\components\material_container.dm"
+#include "code\datums\components\mirage_border.dm"
+#include "code\datums\components\mood.dm"
+#include "code\datums\components\nanites.dm"
+#include "code\datums\components\ntnet_interface.dm"
+#include "code\datums\components\orbiter.dm"
+#include "code\datums\components\paintable.dm"
+#include "code\datums\components\rad_insulation.dm"
+#include "code\datums\components\radioactive.dm"
+#include "code\datums\components\remote_materials.dm"
+#include "code\datums\components\riding.dm"
+#include "code\datums\components\rotation.dm"
+#include "code\datums\components\signal_redirect.dm"
+#include "code\datums\components\sizzle.dm"
+#include "code\datums\components\slippery.dm"
+#include "code\datums\components\spawner.dm"
+#include "code\datums\components\spooky.dm"
+#include "code\datums\components\squeak.dm"
+#include "code\datums\components\stationloving.dm"
+#include "code\datums\components\swarming.dm"
+#include "code\datums\components\thermite.dm"
+#include "code\datums\components\uplink.dm"
+#include "code\datums\components\wearertargeting.dm"
+#include "code\datums\components\wet_floor.dm"
+#include "code\datums\components\storage\storage.dm"
+#include "code\datums\components\storage\concrete\_concrete.dm"
+#include "code\datums\components\storage\concrete\bag_of_holding.dm"
+#include "code\datums\components\storage\concrete\bluespace.dm"
+#include "code\datums\components\storage\concrete\emergency.dm"
+#include "code\datums\components\storage\concrete\implant.dm"
+#include "code\datums\components\storage\concrete\pockets.dm"
+#include "code\datums\components\storage\concrete\rped.dm"
+#include "code\datums\components\storage\concrete\special.dm"
+#include "code\datums\components\storage\concrete\stack.dm"
+#include "code\datums\diseases\_disease.dm"
+#include "code\datums\diseases\_MobProcs.dm"
+#include "code\datums\diseases\anxiety.dm"
+#include "code\datums\diseases\appendicitis.dm"
+#include "code\datums\diseases\beesease.dm"
+#include "code\datums\diseases\brainrot.dm"
+#include "code\datums\diseases\cold.dm"
+#include "code\datums\diseases\cold9.dm"
+#include "code\datums\diseases\dna_spread.dm"
+#include "code\datums\diseases\fake_gbs.dm"
+#include "code\datums\diseases\flu.dm"
+#include "code\datums\diseases\fluspanish.dm"
+#include "code\datums\diseases\gbs.dm"
+#include "code\datums\diseases\heart_failure.dm"
+#include "code\datums\diseases\magnitis.dm"
+#include "code\datums\diseases\parrotpossession.dm"
+#include "code\datums\diseases\pierrot_throat.dm"
+#include "code\datums\diseases\retrovirus.dm"
+#include "code\datums\diseases\rhumba_beat.dm"
+#include "code\datums\diseases\transformation.dm"
+#include "code\datums\diseases\tuberculosis.dm"
+#include "code\datums\diseases\wizarditis.dm"
+#include "code\datums\diseases\advance\advance.dm"
+#include "code\datums\diseases\advance\presets.dm"
+#include "code\datums\diseases\advance\symptoms\beard.dm"
+#include "code\datums\diseases\advance\symptoms\choking.dm"
+#include "code\datums\diseases\advance\symptoms\confusion.dm"
+#include "code\datums\diseases\advance\symptoms\cough.dm"
+#include "code\datums\diseases\advance\symptoms\deafness.dm"
+#include "code\datums\diseases\advance\symptoms\dizzy.dm"
+#include "code\datums\diseases\advance\symptoms\fever.dm"
+#include "code\datums\diseases\advance\symptoms\fire.dm"
+#include "code\datums\diseases\advance\symptoms\flesh_eating.dm"
+#include "code\datums\diseases\advance\symptoms\hallucigen.dm"
+#include "code\datums\diseases\advance\symptoms\headache.dm"
+#include "code\datums\diseases\advance\symptoms\heal.dm"
+#include "code\datums\diseases\advance\symptoms\itching.dm"
+#include "code\datums\diseases\advance\symptoms\nanites.dm"
+#include "code\datums\diseases\advance\symptoms\narcolepsy.dm"
+#include "code\datums\diseases\advance\symptoms\oxygen.dm"
+#include "code\datums\diseases\advance\symptoms\sensory.dm"
+#include "code\datums\diseases\advance\symptoms\shedding.dm"
+#include "code\datums\diseases\advance\symptoms\shivering.dm"
+#include "code\datums\diseases\advance\symptoms\skin.dm"
+#include "code\datums\diseases\advance\symptoms\sneeze.dm"
+#include "code\datums\diseases\advance\symptoms\species.dm"
+#include "code\datums\diseases\advance\symptoms\symptoms.dm"
+#include "code\datums\diseases\advance\symptoms\viral.dm"
+#include "code\datums\diseases\advance\symptoms\vision.dm"
+#include "code\datums\diseases\advance\symptoms\voice_change.dm"
+#include "code\datums\diseases\advance\symptoms\vomit.dm"
+#include "code\datums\diseases\advance\symptoms\weight.dm"
+#include "code\datums\diseases\advance\symptoms\youth.dm"
+#include "code\datums\elements\_element.dm"
+#include "code\datums\elements\cleaning.dm"
+#include "code\datums\elements\earhealing.dm"
+#include "code\datums\elements\ghost_role_eligibility.dm"
+#include "code\datums\elements\mob_holder.dm"
+#include "code\datums\elements\swimming.dm"
+#include "code\datums\elements\wuv.dm"
+#include "code\datums\helper_datums\events.dm"
+#include "code\datums\helper_datums\getrev.dm"
+#include "code\datums\helper_datums\icon_snapshot.dm"
+#include "code\datums\helper_datums\teleport.dm"
+#include "code\datums\helper_datums\topic_input.dm"
+#include "code\datums\looping_sounds\_looping_sound.dm"
+#include "code\datums\looping_sounds\item_sounds.dm"
+#include "code\datums\looping_sounds\machinery_sounds.dm"
+#include "code\datums\looping_sounds\weather.dm"
+#include "code\datums\martial\boxing.dm"
+#include "code\datums\martial\cqc.dm"
+#include "code\datums\martial\krav_maga.dm"
+#include "code\datums\martial\mushpunch.dm"
+#include "code\datums\martial\plasma_fist.dm"
+#include "code\datums\martial\psychotic_brawl.dm"
+#include "code\datums\martial\sleeping_carp.dm"
+#include "code\datums\martial\wrestling.dm"
+#include "code\datums\mood_events\beauty_events.dm"
+#include "code\datums\mood_events\drink_events.dm"
+#include "code\datums\mood_events\drug_events.dm"
+#include "code\datums\mood_events\generic_negative_events.dm"
+#include "code\datums\mood_events\generic_positive_events.dm"
+#include "code\datums\mood_events\mood_event.dm"
+#include "code\datums\mood_events\needs_events.dm"
+#include "code\datums\mutations\_mutations.dm"
+#include "code\datums\mutations\actions.dm"
+#include "code\datums\mutations\antenna.dm"
+#include "code\datums\mutations\body.dm"
+#include "code\datums\mutations\chameleon.dm"
+#include "code\datums\mutations\cold_resistance.dm"
+#include "code\datums\mutations\combined.dm"
+#include "code\datums\mutations\hulk.dm"
+#include "code\datums\mutations\radioactive.dm"
+#include "code\datums\mutations\sight.dm"
+#include "code\datums\mutations\speech.dm"
+#include "code\datums\mutations\telekinesis.dm"
+#include "code\datums\ruins\lavaland.dm"
+#include "code\datums\ruins\space.dm"
+#include "code\datums\ruins\station.dm"
+#include "code\datums\status_effects\buffs.dm"
+#include "code\datums\status_effects\debuffs.dm"
+#include "code\datums\status_effects\gas.dm"
+#include "code\datums\status_effects\neutral.dm"
+#include "code\datums\status_effects\status_effect.dm"
+#include "code\datums\traits\_quirk.dm"
+#include "code\datums\traits\good.dm"
+#include "code\datums\traits\negative.dm"
+#include "code\datums\traits\neutral.dm"
+#include "code\datums\weather\weather.dm"
+#include "code\datums\weather\weather_types\acid_rain.dm"
+#include "code\datums\weather\weather_types\ash_storm.dm"
+#include "code\datums\weather\weather_types\floor_is_lava.dm"
+#include "code\datums\weather\weather_types\radiation_storm.dm"
+#include "code\datums\weather\weather_types\snow_storm.dm"
+#include "code\datums\wires\_wires.dm"
+#include "code\datums\wires\airalarm.dm"
+#include "code\datums\wires\airlock.dm"
+#include "code\datums\wires\apc.dm"
+#include "code\datums\wires\autolathe.dm"
+#include "code\datums\wires\emitter.dm"
+#include "code\datums\wires\explosive.dm"
+#include "code\datums\wires\microwave.dm"
+#include "code\datums\wires\mulebot.dm"
+#include "code\datums\wires\particle_accelerator.dm"
+#include "code\datums\wires\r_n_d.dm"
+#include "code\datums\wires\radio.dm"
+#include "code\datums\wires\robot.dm"
+#include "code\datums\wires\suit_storage_unit.dm"
+#include "code\datums\wires\syndicatebomb.dm"
+#include "code\datums\wires\tesla_coil.dm"
+#include "code\datums\wires\vending.dm"
+#include "code\game\alternate_appearance.dm"
+#include "code\game\atoms.dm"
+#include "code\game\atoms_movable.dm"
+#include "code\game\communications.dm"
+#include "code\game\data_huds.dm"
+#include "code\game\say.dm"
+#include "code\game\shuttle_engines.dm"
+#include "code\game\sound.dm"
+#include "code\game\world.dm"
+#include "code\game\area\ai_monitored.dm"
+#include "code\game\area\areas.dm"
+#include "code\game\area\Space_Station_13_areas.dm"
+#include "code\game\area\areas\away_content.dm"
+#include "code\game\area\areas\centcom.dm"
+#include "code\game\area\areas\holodeck.dm"
+#include "code\game\area\areas\mining.dm"
+#include "code\game\area\areas\shuttles.dm"
+#include "code\game\area\areas\ruins\_ruins.dm"
+#include "code\game\area\areas\ruins\lavaland.dm"
+#include "code\game\area\areas\ruins\space.dm"
+#include "code\game\area\areas\ruins\templates.dm"
+#include "code\game\gamemodes\events.dm"
+#include "code\game\gamemodes\game_mode.dm"
+#include "code\game\gamemodes\objective.dm"
+#include "code\game\gamemodes\objective_items.dm"
+#include "code\game\gamemodes\bloodsucker\bloodsucker.dm"
+#include "code\game\gamemodes\bloodsucker\hunter.dm"
+#include "code\game\gamemodes\brother\traitor_bro.dm"
+#include "code\game\gamemodes\changeling\changeling.dm"
+#include "code\game\gamemodes\changeling\traitor_chan.dm"
+#include "code\game\gamemodes\clock_cult\clock_cult.dm"
+#include "code\game\gamemodes\clown_ops\bananium_bomb.dm"
+#include "code\game\gamemodes\clown_ops\clown_ops.dm"
+#include "code\game\gamemodes\clown_ops\clown_weapons.dm"
+#include "code\game\gamemodes\cult\cult.dm"
+#include "code\game\gamemodes\devil\devil_game_mode.dm"
+#include "code\game\gamemodes\devil\game_mode.dm"
+#include "code\game\gamemodes\devil\objectives.dm"
+#include "code\game\gamemodes\devil\devil agent\devil_agent.dm"
+#include "code\game\gamemodes\dynamic\dynamic.dm"
+#include "code\game\gamemodes\dynamic\dynamic_rulesets.dm"
+#include "code\game\gamemodes\dynamic\dynamic_rulesets_events.dm"
+#include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm"
+#include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm"
+#include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm"
+#include "code\game\gamemodes\extended\extended.dm"
+#include "code\game\gamemodes\meteor\meteor.dm"
+#include "code\game\gamemodes\meteor\meteors.dm"
+#include "code\game\gamemodes\monkey\monkey.dm"
+#include "code\game\gamemodes\nuclear\nuclear.dm"
+#include "code\game\gamemodes\overthrow\objective.dm"
+#include "code\game\gamemodes\overthrow\overthrow.dm"
+#include "code\game\gamemodes\revolution\revolution.dm"
+#include "code\game\gamemodes\sandbox\airlock_maker.dm"
+#include "code\game\gamemodes\sandbox\h_sandbox.dm"
+#include "code\game\gamemodes\sandbox\sandbox.dm"
+#include "code\game\gamemodes\traitor\double_agents.dm"
+#include "code\game\gamemodes\traitor\traitor.dm"
+#include "code\game\gamemodes\wizard\wizard.dm"
+#include "code\game\machinery\_machinery.dm"
+#include "code\game\machinery\ai_slipper.dm"
+#include "code\game\machinery\airlock_control.dm"
+#include "code\game\machinery\announcement_system.dm"
+#include "code\game\machinery\aug_manipulator.dm"
+#include "code\game\machinery\autolathe.dm"
+#include "code\game\machinery\bank_machine.dm"
+#include "code\game\machinery\Beacon.dm"
+#include "code\game\machinery\bloodbankgen.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\dance_machine.dm"
+#include "code\game\machinery\defibrillator_mount.dm"
+#include "code\game\machinery\deployable.dm"
+#include "code\game\machinery\dish_drive.dm"
+#include "code\game\machinery\dna_scanner.dm"
+#include "code\game\machinery\doppler_array.dm"
+#include "code\game\machinery\droneDispenser.dm"
+#include "code\game\machinery\exp_cloner.dm"
+#include "code\game\machinery\firealarm.dm"
+#include "code\game\machinery\flasher.dm"
+#include "code\game\machinery\gulag_item_reclaimer.dm"
+#include "code\game\machinery\gulag_teleporter.dm"
+#include "code\game\machinery\harvester.dm"
+#include "code\game\machinery\hologram.dm"
+#include "code\game\machinery\igniter.dm"
+#include "code\game\machinery\iv_drip.dm"
+#include "code\game\machinery\launch_pad.dm"
+#include "code\game\machinery\lightswitch.dm"
+#include "code\game\machinery\limbgrower.dm"
+#include "code\game\machinery\magnet.dm"
+#include "code\game\machinery\mass_driver.dm"
+#include "code\game\machinery\navbeacon.dm"
+#include "code\game\machinery\newscaster.dm"
+#include "code\game\machinery\PDApainter.dm"
+#include "code\game\machinery\posi_alert.dm"
+#include "code\game\machinery\quantum_pad.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\shieldgen.dm"
+#include "code\game\machinery\Sleeper.dm"
+#include "code\game\machinery\slotmachine.dm"
+#include "code\game\machinery\spaceheater.dm"
+#include "code\game\machinery\stasis.dm"
+#include "code\game\machinery\status_display.dm"
+#include "code\game\machinery\suit_storage_unit.dm"
+#include "code\game\machinery\syndicatebeacon.dm"
+#include "code\game\machinery\syndicatebomb.dm"
+#include "code\game\machinery\teleporter.dm"
+#include "code\game\machinery\transformer.dm"
+#include "code\game\machinery\washing_machine.dm"
+#include "code\game\machinery\wishgranter.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\_computer.dm"
+#include "code\game\machinery\computer\aifixer.dm"
+#include "code\game\machinery\computer\apc_control.dm"
+#include "code\game\machinery\computer\arcade.dm"
+#include "code\game\machinery\computer\atmos_alert.dm"
+#include "code\game\machinery\computer\atmos_control.dm"
+#include "code\game\machinery\computer\buildandrepair.dm"
+#include "code\game\machinery\computer\camera.dm"
+#include "code\game\machinery\computer\camera_advanced.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\crew.dm"
+#include "code\game\machinery\computer\dna_console.dm"
+#include "code\game\machinery\computer\launchpad_control.dm"
+#include "code\game\machinery\computer\law.dm"
+#include "code\game\machinery\computer\medical.dm"
+#include "code\game\machinery\computer\Operating.dm"
+#include "code\game\machinery\computer\pod.dm"
+#include "code\game\machinery\computer\robot.dm"
+#include "code\game\machinery\computer\security.dm"
+#include "code\game\machinery\computer\station_alert.dm"
+#include "code\game\machinery\computer\telecrystalconsoles.dm"
+#include "code\game\machinery\computer\teleporter.dm"
+#include "code\game\machinery\computer\arcade\battle.dm"
+#include "code\game\machinery\computer\arcade\minesweeper.dm"
+#include "code\game\machinery\computer\arcade\misc_arcade.dm"
+#include "code\game\machinery\computer\arcade\orion_trail.dm"
+#include "code\game\machinery\computer\prisoner\_prisoner.dm"
+#include "code\game\machinery\computer\prisoner\gulag_teleporter.dm"
+#include "code\game\machinery\computer\prisoner\management.dm"
+#include "code\game\machinery\doors\airlock.dm"
+#include "code\game\machinery\doors\airlock_electronics.dm"
+#include "code\game\machinery\doors\airlock_types.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\passworddoor.dm"
+#include "code\game\machinery\doors\poddoor.dm"
+#include "code\game\machinery\doors\shutters.dm"
+#include "code\game\machinery\doors\unpowered.dm"
+#include "code\game\machinery\doors\windowdoor.dm"
+#include "code\game\machinery\embedded_controller\access_controller.dm"
+#include "code\game\machinery\embedded_controller\airlock_controller.dm"
+#include "code\game\machinery\embedded_controller\embedded_controller_base.dm"
+#include "code\game\machinery\embedded_controller\simple_vent_controller.dm"
+#include "code\game\machinery\pipe\construction.dm"
+#include "code\game\machinery\pipe\pipe_dispenser.dm"
+#include "code\game\machinery\porta_turret\portable_turret.dm"
+#include "code\game\machinery\porta_turret\portable_turret_construct.dm"
+#include "code\game\machinery\porta_turret\portable_turret_cover.dm"
+#include "code\game\machinery\poweredfans\fan_assembly.dm"
+#include "code\game\machinery\poweredfans\poweredfans.dm"
+#include "code\game\machinery\telecomms\broadcasting.dm"
+#include "code\game\machinery\telecomms\machine_interactions.dm"
+#include "code\game\machinery\telecomms\telecomunications.dm"
+#include "code\game\machinery\telecomms\computers\logbrowser.dm"
+#include "code\game\machinery\telecomms\computers\message.dm"
+#include "code\game\machinery\telecomms\computers\telemonitor.dm"
+#include "code\game\machinery\telecomms\machines\allinone.dm"
+#include "code\game\machinery\telecomms\machines\broadcaster.dm"
+#include "code\game\machinery\telecomms\machines\bus.dm"
+#include "code\game\machinery\telecomms\machines\hub.dm"
+#include "code\game\machinery\telecomms\machines\message_server.dm"
+#include "code\game\machinery\telecomms\machines\processor.dm"
+#include "code\game\machinery\telecomms\machines\receiver.dm"
+#include "code\game\machinery\telecomms\machines\relay.dm"
+#include "code\game\machinery\telecomms\machines\server.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_actions.dm"
+#include "code\game\mecha\mecha_construction_paths.dm"
+#include "code\game\mecha\mecha_control_console.dm"
+#include "code\game\mecha\mecha_defense.dm"
+#include "code\game\mecha\mecha_parts.dm"
+#include "code\game\mecha\mecha_topic.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\neovgre.dm"
+#include "code\game\mecha\combat\phazon.dm"
+#include "code\game\mecha\combat\reticence.dm"
+#include "code\game\mecha\equipment\mecha_equipment.dm"
+#include "code\game\mecha\equipment\tools\medical_tools.dm"
+#include "code\game\mecha\equipment\tools\mining_tools.dm"
+#include "code\game\mecha\equipment\tools\other_tools.dm"
+#include "code\game\mecha\equipment\tools\work_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\buckling.dm"
+#include "code\game\objects\empulse.dm"
+#include "code\game\objects\items.dm"
+#include "code\game\objects\obj_defense.dm"
+#include "code\game\objects\objs.dm"
+#include "code\game\objects\structures.dm"
+#include "code\game\objects\effects\alien_acid.dm"
+#include "code\game\objects\effects\anomalies.dm"
+#include "code\game\objects\effects\blessing.dm"
+#include "code\game\objects\effects\bump_teleporter.dm"
+#include "code\game\objects\effects\contraband.dm"
+#include "code\game\objects\effects\countdown.dm"
+#include "code\game\objects\effects\effects.dm"
+#include "code\game\objects\effects\forcefields.dm"
+#include "code\game\objects\effects\glowshroom.dm"
+#include "code\game\objects\effects\landmarks.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\proximity.dm"
+#include "code\game\objects\effects\spiders.dm"
+#include "code\game\objects\effects\step_triggers.dm"
+#include "code\game\objects\effects\wanted_poster.dm"
+#include "code\game\objects\effects\decals\cleanable.dm"
+#include "code\game\objects\effects\decals\crayon.dm"
+#include "code\game\objects\effects\decals\decal.dm"
+#include "code\game\objects\effects\decals\misc.dm"
+#include "code\game\objects\effects\decals\remains.dm"
+#include "code\game\objects\effects\decals\cleanable\aliens.dm"
+#include "code\game\objects\effects\decals\cleanable\gibs.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\turfdecal\dirt.dm"
+#include "code\game\objects\effects\decals\turfdecal\markings.dm"
+#include "code\game\objects\effects\decals\turfdecal\tilecoloring.dm"
+#include "code\game\objects\effects\decals\turfdecal\weather.dm"
+#include "code\game\objects\effects\effect_system\effect_system.dm"
+#include "code\game\objects\effects\effect_system\effects_explosion.dm"
+#include "code\game\objects\effects\effect_system\effects_foam.dm"
+#include "code\game\objects\effects\effect_system\effects_other.dm"
+#include "code\game\objects\effects\effect_system\effects_smoke.dm"
+#include "code\game\objects\effects\effect_system\effects_sparks.dm"
+#include "code\game\objects\effects\effect_system\effects_water.dm"
+#include "code\game\objects\effects\spawners\bombspawner.dm"
+#include "code\game\objects\effects\spawners\bundle.dm"
+#include "code\game\objects\effects\spawners\gibspawner.dm"
+#include "code\game\objects\effects\spawners\lootdrop.dm"
+#include "code\game\objects\effects\spawners\structure.dm"
+#include "code\game\objects\effects\spawners\traps.dm"
+#include "code\game\objects\effects\spawners\vaultspawner.dm"
+#include "code\game\objects\effects\spawners\xeno_egg_delivery.dm"
+#include "code\game\objects\effects\temporary_visuals\clockcult.dm"
+#include "code\game\objects\effects\temporary_visuals\cult.dm"
+#include "code\game\objects\effects\temporary_visuals\miscellaneous.dm"
+#include "code\game\objects\effects\temporary_visuals\temporary_visual.dm"
+#include "code\game\objects\effects\temporary_visuals\projectiles\impact.dm"
+#include "code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm"
+#include "code\game\objects\effects\temporary_visuals\projectiles\projectile_effects.dm"
+#include "code\game\objects\effects\temporary_visuals\projectiles\tracer.dm"
+#include "code\game\objects\items\AI_modules.dm"
+#include "code\game\objects\items\airlock_painter.dm"
+#include "code\game\objects\items\apc_frame.dm"
+#include "code\game\objects\items\blueprints.dm"
+#include "code\game\objects\items\body_egg.dm"
+#include "code\game\objects\items\bodybag.dm"
+#include "code\game\objects\items\candle.dm"
+#include "code\game\objects\items\cardboard_cutouts.dm"
+#include "code\game\objects\items\cards_ids.dm"
+#include "code\game\objects\items\charter.dm"
+#include "code\game\objects\items\chromosome.dm"
+#include "code\game\objects\items\chrono_eraser.dm"
+#include "code\game\objects\items\cigs_lighters.dm"
+#include "code\game\objects\items\clown_items.dm"
+#include "code\game\objects\items\control_wand.dm"
+#include "code\game\objects\items\cosmetics.dm"
+#include "code\game\objects\items\courtroom.dm"
+#include "code\game\objects\items\crayons.dm"
+#include "code\game\objects\items\defib.dm"
+#include "code\game\objects\items\dehy_carp.dm"
+#include "code\game\objects\items\dice.dm"
+#include "code\game\objects\items\dna_injector.dm"
+#include "code\game\objects\items\documents.dm"
+#include "code\game\objects\items\eightball.dm"
+#include "code\game\objects\items\extinguisher.dm"
+#include "code\game\objects\items\flamethrower.dm"
+#include "code\game\objects\items\gift.dm"
+#include "code\game\objects\items\granters.dm"
+#include "code\game\objects\items\handcuffs.dm"
+#include "code\game\objects\items\his_grace.dm"
+#include "code\game\objects\items\holosign_creator.dm"
+#include "code\game\objects\items\holy_weapons.dm"
+#include "code\game\objects\items\hot_potato.dm"
+#include "code\game\objects\items\inducer.dm"
+#include "code\game\objects\items\kitchen.dm"
+#include "code\game\objects\items\latexballoon.dm"
+#include "code\game\objects\items\lorebooks.dm"
+#include "code\game\objects\items\manuals.dm"
+#include "code\game\objects\items\mesmetron.dm"
+#include "code\game\objects\items\miscellaneous.dm"
+#include "code\game\objects\items\mop.dm"
+#include "code\game\objects\items\paint.dm"
+#include "code\game\objects\items\paiwire.dm"
+#include "code\game\objects\items\pet_carrier.dm"
+#include "code\game\objects\items\pinpointer.dm"
+#include "code\game\objects\items\plushes.dm"
+#include "code\game\objects\items\pneumaticCannon.dm"
+#include "code\game\objects\items\powerfist.dm"
+#include "code\game\objects\items\RCD.dm"
+#include "code\game\objects\items\RCL.dm"
+#include "code\game\objects\items\religion.dm"
+#include "code\game\objects\items\RPD.dm"
+#include "code\game\objects\items\RSF.dm"
+#include "code\game\objects\items\scrolls.dm"
+#include "code\game\objects\items\sharpener.dm"
+#include "code\game\objects\items\shields.dm"
+#include "code\game\objects\items\shooting_range.dm"
+#include "code\game\objects\items\signs.dm"
+#include "code\game\objects\items\singularityhammer.dm"
+#include "code\game\objects\items\stunbaton.dm"
+#include "code\game\objects\items\taster.dm"
+#include "code\game\objects\items\teleportation.dm"
+#include "code\game\objects\items\teleprod.dm"
+#include "code\game\objects\items\theft_tools.dm"
+#include "code\game\objects\items\toys.dm"
+#include "code\game\objects\items\trash.dm"
+#include "code\game\objects\items\twohanded.dm"
+#include "code\game\objects\items\vending_items.dm"
+#include "code\game\objects\items\weaponry.dm"
+#include "code\game\objects\items\circuitboards\circuitboard.dm"
+#include "code\game\objects\items\circuitboards\computer_circuitboards.dm"
+#include "code\game\objects\items\circuitboards\machine_circuitboards.dm"
+#include "code\game\objects\items\devices\aicard.dm"
+#include "code\game\objects\items\devices\anomaly_neutralizer.dm"
+#include "code\game\objects\items\devices\beacon.dm"
+#include "code\game\objects\items\devices\camera_bug.dm"
+#include "code\game\objects\items\devices\chameleonproj.dm"
+#include "code\game\objects\items\devices\compressionkit.dm"
+#include "code\game\objects\items\devices\dogborg_sleeper.dm"
+#include "code\game\objects\items\devices\doorCharge.dm"
+#include "code\game\objects\items\devices\electroadaptive_pseudocircuit.dm"
+#include "code\game\objects\items\devices\flashlight.dm"
+#include "code\game\objects\items\devices\forcefieldprojector.dm"
+#include "code\game\objects\items\devices\geiger_counter.dm"
+#include "code\game\objects\items\devices\glue.dm"
+#include "code\game\objects\items\devices\gps.dm"
+#include "code\game\objects\items\devices\instruments.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\multitool.dm"
+#include "code\game\objects\items\devices\paicard.dm"
+#include "code\game\objects\items\devices\pipe_painter.dm"
+#include "code\game\objects\items\devices\powersink.dm"
+#include "code\game\objects\items\devices\pressureplates.dm"
+#include "code\game\objects\items\devices\quantum_keycard.dm"
+#include "code\game\objects\items\devices\reverse_bear_trap.dm"
+#include "code\game\objects\items\devices\scanners.dm"
+#include "code\game\objects\items\devices\sensor_device.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\PDA\cart.dm"
+#include "code\game\objects\items\devices\PDA\PDA.dm"
+#include "code\game\objects\items\devices\PDA\PDA_types.dm"
+#include "code\game\objects\items\devices\PDA\radio.dm"
+#include "code\game\objects\items\devices\PDA\virus_cart.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\grenades\antigravity.dm"
+#include "code\game\objects\items\grenades\chem_grenade.dm"
+#include "code\game\objects\items\grenades\clusterbuster.dm"
+#include "code\game\objects\items\grenades\emgrenade.dm"
+#include "code\game\objects\items\grenades\flashbang.dm"
+#include "code\game\objects\items\grenades\ghettobomb.dm"
+#include "code\game\objects\items\grenades\grenade.dm"
+#include "code\game\objects\items\grenades\plastic.dm"
+#include "code\game\objects\items\grenades\smokebomb.dm"
+#include "code\game\objects\items\grenades\spawnergrenade.dm"
+#include "code\game\objects\items\grenades\syndieminibomb.dm"
+#include "code\game\objects\items\implants\implant.dm"
+#include "code\game\objects\items\implants\implant_abductor.dm"
+#include "code\game\objects\items\implants\implant_chem.dm"
+#include "code\game\objects\items\implants\implant_clown.dm"
+#include "code\game\objects\items\implants\implant_exile.dm"
+#include "code\game\objects\items\implants\implant_explosive.dm"
+#include "code\game\objects\items\implants\implant_freedom.dm"
+#include "code\game\objects\items\implants\implant_krav_maga.dm"
+#include "code\game\objects\items\implants\implant_mindshield.dm"
+#include "code\game\objects\items\implants\implant_misc.dm"
+#include "code\game\objects\items\implants\implant_radio.dm"
+#include "code\game\objects\items\implants\implant_slave.dm"
+#include "code\game\objects\items\implants\implant_spell.dm"
+#include "code\game\objects\items\implants\implant_stealth.dm"
+#include "code\game\objects\items\implants\implant_storage.dm"
+#include "code\game\objects\items\implants\implant_track.dm"
+#include "code\game\objects\items\implants\implant_uplink.dm"
+#include "code\game\objects\items\implants\implantcase.dm"
+#include "code\game\objects\items\implants\implantchair.dm"
+#include "code\game\objects\items\implants\implanter.dm"
+#include "code\game\objects\items\implants\implantpad.dm"
+#include "code\game\objects\items\melee\energy.dm"
+#include "code\game\objects\items\melee\misc.dm"
+#include "code\game\objects\items\melee\transforming.dm"
+#include "code\game\objects\items\robot\ai_upgrades.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\bscrystal.dm"
+#include "code\game\objects\items\stacks\cash.dm"
+#include "code\game\objects\items\stacks\medical.dm"
+#include "code\game\objects\items\stacks\rods.dm"
+#include "code\game\objects\items\stacks\stack.dm"
+#include "code\game\objects\items\stacks\telecrystal.dm"
+#include "code\game\objects\items\stacks\wrap.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\tile_mineral.dm"
+#include "code\game\objects\items\stacks\tiles\tile_reskinning.dm"
+#include "code\game\objects\items\stacks\tiles\tile_types.dm"
+#include "code\game\objects\items\storage\backpack.dm"
+#include "code\game\objects\items\storage\bags.dm"
+#include "code\game\objects\items\storage\belt.dm"
+#include "code\game\objects\items\storage\book.dm"
+#include "code\game\objects\items\storage\boxes.dm"
+#include "code\game\objects\items\storage\briefcase.dm"
+#include "code\game\objects\items\storage\dakis.dm"
+#include "code\game\objects\items\storage\fancy.dm"
+#include "code\game\objects\items\storage\firstaid.dm"
+#include "code\game\objects\items\storage\lockbox.dm"
+#include "code\game\objects\items\storage\secure.dm"
+#include "code\game\objects\items\storage\storage.dm"
+#include "code\game\objects\items\storage\toolbox.dm"
+#include "code\game\objects\items\storage\uplink_kits.dm"
+#include "code\game\objects\items\storage\wallets.dm"
+#include "code\game\objects\items\tanks\jetpack.dm"
+#include "code\game\objects\items\tanks\tank_types.dm"
+#include "code\game\objects\items\tanks\tanks.dm"
+#include "code\game\objects\items\tanks\watertank.dm"
+#include "code\game\objects\items\tools\crowbar.dm"
+#include "code\game\objects\items\tools\screwdriver.dm"
+#include "code\game\objects\items\tools\weldingtool.dm"
+#include "code\game\objects\items\tools\wirecutters.dm"
+#include "code\game\objects\items\tools\wrench.dm"
+#include "code\game\objects\structures\ai_core.dm"
+#include "code\game\objects\structures\aliens.dm"
+#include "code\game\objects\structures\artstuff.dm"
+#include "code\game\objects\structures\barsigns.dm"
+#include "code\game\objects\structures\bedsheet_bin.dm"
+#include "code\game\objects\structures\destructible_structures.dm"
+#include "code\game\objects\structures\displaycase.dm"
+#include "code\game\objects\structures\divine.dm"
+#include "code\game\objects\structures\door_assembly.dm"
+#include "code\game\objects\structures\door_assembly_types.dm"
+#include "code\game\objects\structures\dresser.dm"
+#include "code\game\objects\structures\electricchair.dm"
+#include "code\game\objects\structures\extinguisher.dm"
+#include "code\game\objects\structures\false_walls.dm"
+#include "code\game\objects\structures\fence.dm"
+#include "code\game\objects\structures\fireaxe.dm"
+#include "code\game\objects\structures\fireplace.dm"
+#include "code\game\objects\structures\flora.dm"
+#include "code\game\objects\structures\fluff.dm"
+#include "code\game\objects\structures\ghost_role_spawners.dm"
+#include "code\game\objects\structures\girders.dm"
+#include "code\game\objects\structures\grille.dm"
+#include "code\game\objects\structures\guillotine.dm"
+#include "code\game\objects\structures\guncase.dm"
+#include "code\game\objects\structures\headpike.dm"
+#include "code\game\objects\structures\hivebot.dm"
+#include "code\game\objects\structures\holosign.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\lattice.dm"
+#include "code\game\objects\structures\life_candle.dm"
+#include "code\game\objects\structures\loom.dm"
+#include "code\game\objects\structures\manned_turret.dm"
+#include "code\game\objects\structures\medkit.dm"
+#include "code\game\objects\structures\memorial.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\petrified_statue.dm"
+#include "code\game\objects\structures\plasticflaps.dm"
+#include "code\game\objects\structures\reflector.dm"
+#include "code\game\objects\structures\safe.dm"
+#include "code\game\objects\structures\showcase.dm"
+#include "code\game\objects\structures\spawner.dm"
+#include "code\game\objects\structures\spirit_board.dm"
+#include "code\game\objects\structures\stairs.dm"
+#include "code\game\objects\structures\statues.dm"
+#include "code\game\objects\structures\table_frames.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\traps.dm"
+#include "code\game\objects\structures\trash_piles.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\beds_chairs\alien_nest.dm"
+#include "code\game\objects\structures\beds_chairs\bed.dm"
+#include "code\game\objects\structures\beds_chairs\chair.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\closets\bodybag.dm"
+#include "code\game\objects\structures\crates_lockers\closets\cardboardbox.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\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\hydroponics.dm"
+#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm"
+#include "code\game\objects\structures\crates_lockers\closets\secure\misc.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\crates_lockers\crates\bins.dm"
+#include "code\game\objects\structures\crates_lockers\crates\critter.dm"
+#include "code\game\objects\structures\crates_lockers\crates\large.dm"
+#include "code\game\objects\structures\crates_lockers\crates\secure.dm"
+#include "code\game\objects\structures\crates_lockers\crates\wooden.dm"
+#include "code\game\objects\structures\lavaland\necropolis_tendril.dm"
+#include "code\game\objects\structures\signs\_signs.dm"
+#include "code\game\objects\structures\signs\signs_departments.dm"
+#include "code\game\objects\structures\signs\signs_maps.dm"
+#include "code\game\objects\structures\signs\signs_plaques.dm"
+#include "code\game\objects\structures\signs\signs_warning.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_construction.dm"
+#include "code\game\objects\structures\transit_tubes\transit_tube_pod.dm"
+#include "code\game\turfs\baseturf_skipover.dm"
+#include "code\game\turfs\change_turf.dm"
+#include "code\game\turfs\closed.dm"
+#include "code\game\turfs\open.dm"
+#include "code\game\turfs\turf.dm"
+#include "code\game\turfs\openspace\openspace.dm"
+#include "code\game\turfs\simulated\chasm.dm"
+#include "code\game\turfs\simulated\dirtystation.dm"
+#include "code\game\turfs\simulated\floor.dm"
+#include "code\game\turfs\simulated\lava.dm"
+#include "code\game\turfs\simulated\minerals.dm"
+#include "code\game\turfs\simulated\reebe_void.dm"
+#include "code\game\turfs\simulated\river.dm"
+#include "code\game\turfs\simulated\walls.dm"
+#include "code\game\turfs\simulated\water.dm"
+#include "code\game\turfs\simulated\floor\fancy_floor.dm"
+#include "code\game\turfs\simulated\floor\light_floor.dm"
+#include "code\game\turfs\simulated\floor\mineral_floor.dm"
+#include "code\game\turfs\simulated\floor\misc_floor.dm"
+#include "code\game\turfs\simulated\floor\plasteel_floor.dm"
+#include "code\game\turfs\simulated\floor\plating.dm"
+#include "code\game\turfs\simulated\floor\reinf_floor.dm"
+#include "code\game\turfs\simulated\floor\plating\asteroid.dm"
+#include "code\game\turfs\simulated\floor\plating\dirt.dm"
+#include "code\game\turfs\simulated\floor\plating\misc_plating.dm"
+#include "code\game\turfs\simulated\wall\mineral_walls.dm"
+#include "code\game\turfs\simulated\wall\misc_walls.dm"
+#include "code\game\turfs\simulated\wall\reinf_walls.dm"
+#include "code\game\turfs\space\space.dm"
+#include "code\game\turfs\space\transit.dm"
+#include "code\modules\admin\admin.dm"
+#include "code\modules\admin\admin_investigate.dm"
+#include "code\modules\admin\admin_ranks.dm"
+#include "code\modules\admin\admin_verbs.dm"
+#include "code\modules\admin\adminmenu.dm"
+#include "code\modules\admin\antag_panel.dm"
+#include "code\modules\admin\banjob.dm"
+#include "code\modules\admin\chat_commands.dm"
+#include "code\modules\admin\check_antagonists.dm"
+#include "code\modules\admin\create_mob.dm"
+#include "code\modules\admin\create_object.dm"
+#include "code\modules\admin\create_poll.dm"
+#include "code\modules\admin\create_turf.dm"
+#include "code\modules\admin\fun_balloon.dm"
+#include "code\modules\admin\holder2.dm"
+#include "code\modules\admin\ipintel.dm"
+#include "code\modules\admin\IsBanned.dm"
+#include "code\modules\admin\NewBan.dm"
+#include "code\modules\admin\permissionedit.dm"
+#include "code\modules\admin\player_panel.dm"
+#include "code\modules\admin\secrets.dm"
+#include "code\modules\admin\sound_emitter.dm"
+#include "code\modules\admin\sql_message_system.dm"
+#include "code\modules\admin\stickyban.dm"
+#include "code\modules\admin\topic.dm"
+#include "code\modules\admin\whitelist.dm"
+#include "code\modules\admin\DB_ban\functions.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\ak47s.dm"
+#include "code\modules\admin\verbs\atmosdebug.dm"
+#include "code\modules\admin\verbs\bluespacearty.dm"
+#include "code\modules\admin\verbs\borgpanel.dm"
+#include "code\modules\admin\verbs\BrokenInhands.dm"
+#include "code\modules\admin\verbs\cinematic.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\dice.dm"
+#include "code\modules\admin\verbs\fps.dm"
+#include "code\modules\admin\verbs\getlogs.dm"
+#include "code\modules\admin\verbs\individual_logging.dm"
+#include "code\modules\admin\verbs\machine_upgrade.dm"
+#include "code\modules\admin\verbs\manipulate_organs.dm"
+#include "code\modules\admin\verbs\map_template_loadverb.dm"
+#include "code\modules\admin\verbs\mapping.dm"
+#include "code\modules\admin\verbs\maprotation.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\panicbunker.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\reestablish_db_connection.dm"
+#include "code\modules\admin\verbs\spawnfloorcluwne.dm"
+#include "code\modules\admin\verbs\spawnobjasmob.dm"
+#include "code\modules\admin\verbs\tripAI.dm"
+#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm"
+#include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm"
+#include "code\modules\admin\verbs\SDQL2\SDQL_2_wrappers.dm"
+#include "code\modules\antagonists\_common\antag_datum.dm"
+#include "code\modules\antagonists\_common\antag_helpers.dm"
+#include "code\modules\antagonists\_common\antag_hud.dm"
+#include "code\modules\antagonists\_common\antag_spawner.dm"
+#include "code\modules\antagonists\_common\antag_team.dm"
+#include "code\modules\antagonists\abductor\abductor.dm"
+#include "code\modules\antagonists\abductor\abductee\abductee_objectives.dm"
+#include "code\modules\antagonists\abductor\equipment\abduction_gear.dm"
+#include "code\modules\antagonists\abductor\equipment\abduction_outfits.dm"
+#include "code\modules\antagonists\abductor\equipment\abduction_surgery.dm"
+#include "code\modules\antagonists\abductor\equipment\gland.dm"
+#include "code\modules\antagonists\abductor\machinery\camera.dm"
+#include "code\modules\antagonists\abductor\machinery\console.dm"
+#include "code\modules\antagonists\abductor\machinery\dispenser.dm"
+#include "code\modules\antagonists\abductor\machinery\experiment.dm"
+#include "code\modules\antagonists\abductor\machinery\pad.dm"
+#include "code\modules\antagonists\blob\blob.dm"
+#include "code\modules\antagonists\blob\blob\blob_report.dm"
+#include "code\modules\antagonists\blob\blob\overmind.dm"
+#include "code\modules\antagonists\blob\blob\powers.dm"
+#include "code\modules\antagonists\blob\blob\theblob.dm"
+#include "code\modules\antagonists\blob\blob\blobs\blob_mobs.dm"
+#include "code\modules\antagonists\blob\blob\blobs\core.dm"
+#include "code\modules\antagonists\blob\blob\blobs\factory.dm"
+#include "code\modules\antagonists\blob\blob\blobs\node.dm"
+#include "code\modules\antagonists\blob\blob\blobs\resource.dm"
+#include "code\modules\antagonists\blob\blob\blobs\shield.dm"
+#include "code\modules\antagonists\bloodsucker\bloodsucker_flaws.dm"
+#include "code\modules\antagonists\bloodsucker\bloodsucker_integration.dm"
+#include "code\modules\antagonists\bloodsucker\bloodsucker_life.dm"
+#include "code\modules\antagonists\bloodsucker\bloodsucker_objectives.dm"
+#include "code\modules\antagonists\bloodsucker\bloodsucker_powers.dm"
+#include "code\modules\antagonists\bloodsucker\bloodsucker_sunlight.dm"
+#include "code\modules\antagonists\bloodsucker\bloodsucker_ui.dm"
+#include "code\modules\antagonists\bloodsucker\datum_bloodsucker.dm"
+#include "code\modules\antagonists\bloodsucker\datum_hunter.dm"
+#include "code\modules\antagonists\bloodsucker\datum_vassal.dm"
+#include "code\modules\antagonists\bloodsucker\items\bloodsucker_organs.dm"
+#include "code\modules\antagonists\bloodsucker\items\bloodsucker_stake.dm"
+#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_coffin.dm"
+#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_crypt.dm"
+#include "code\modules\antagonists\bloodsucker\objects\bloodsucker_lair.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_brawn.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_cloak.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_feed.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_fortitude.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_gohome.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_haste.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_lunge.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_masquerade.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_mesmerize.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_trespass.dm"
+#include "code\modules\antagonists\bloodsucker\powers\bs_veil.dm"
+#include "code\modules\antagonists\bloodsucker\powers\v_recuperate.dm"
+#include "code\modules\antagonists\brainwashing\brainwashing.dm"
+#include "code\modules\antagonists\brother\brother.dm"
+#include "code\modules\antagonists\changeling\cellular_emporium.dm"
+#include "code\modules\antagonists\changeling\changeling.dm"
+#include "code\modules\antagonists\changeling\changeling_power.dm"
+#include "code\modules\antagonists\changeling\powers\absorb.dm"
+#include "code\modules\antagonists\changeling\powers\adrenaline.dm"
+#include "code\modules\antagonists\changeling\powers\augmented_eyesight.dm"
+#include "code\modules\antagonists\changeling\powers\biodegrade.dm"
+#include "code\modules\antagonists\changeling\powers\chameleon_skin.dm"
+#include "code\modules\antagonists\changeling\powers\digitalcamo.dm"
+#include "code\modules\antagonists\changeling\powers\fakedeath.dm"
+#include "code\modules\antagonists\changeling\powers\fleshmend.dm"
+#include "code\modules\antagonists\changeling\powers\headcrab.dm"
+#include "code\modules\antagonists\changeling\powers\hivemind.dm"
+#include "code\modules\antagonists\changeling\powers\humanform.dm"
+#include "code\modules\antagonists\changeling\powers\lesserform.dm"
+#include "code\modules\antagonists\changeling\powers\linglink.dm"
+#include "code\modules\antagonists\changeling\powers\mimic_voice.dm"
+#include "code\modules\antagonists\changeling\powers\mutations.dm"
+#include "code\modules\antagonists\changeling\powers\panacea.dm"
+#include "code\modules\antagonists\changeling\powers\pheromone_receptors.dm"
+#include "code\modules\antagonists\changeling\powers\regenerate.dm"
+#include "code\modules\antagonists\changeling\powers\revive.dm"
+#include "code\modules\antagonists\changeling\powers\shriek.dm"
+#include "code\modules\antagonists\changeling\powers\spiders.dm"
+#include "code\modules\antagonists\changeling\powers\strained_muscles.dm"
+#include "code\modules\antagonists\changeling\powers\tiny_prick.dm"
+#include "code\modules\antagonists\changeling\powers\transform.dm"
+#include "code\modules\antagonists\clockcult\clock_effect.dm"
+#include "code\modules\antagonists\clockcult\clock_item.dm"
+#include "code\modules\antagonists\clockcult\clock_mobs.dm"
+#include "code\modules\antagonists\clockcult\clock_scripture.dm"
+#include "code\modules\antagonists\clockcult\clock_structure.dm"
+#include "code\modules\antagonists\clockcult\clockcult.dm"
+#include "code\modules\antagonists\clockcult\clock_effects\city_of_cogs_rift.dm"
+#include "code\modules\antagonists\clockcult\clock_effects\clock_overlay.dm"
+#include "code\modules\antagonists\clockcult\clock_effects\clock_sigils.dm"
+#include "code\modules\antagonists\clockcult\clock_effects\general_markers.dm"
+#include "code\modules\antagonists\clockcult\clock_effects\servant_blocker.dm"
+#include "code\modules\antagonists\clockcult\clock_effects\spatial_gateway.dm"
+#include "code\modules\antagonists\clockcult\clock_helpers\clock_powerdrain.dm"
+#include "code\modules\antagonists\clockcult\clock_helpers\component_helpers.dm"
+#include "code\modules\antagonists\clockcult\clock_helpers\fabrication_helpers.dm"
+#include "code\modules\antagonists\clockcult\clock_helpers\hierophant_network.dm"
+#include "code\modules\antagonists\clockcult\clock_helpers\power_helpers.dm"
+#include "code\modules\antagonists\clockcult\clock_helpers\ratvarian_language.dm"
+#include "code\modules\antagonists\clockcult\clock_helpers\scripture_checks.dm"
+#include "code\modules\antagonists\clockcult\clock_helpers\slab_abilities.dm"
+#include "code\modules\antagonists\clockcult\clock_items\clock_components.dm"
+#include "code\modules\antagonists\clockcult\clock_items\clockwork_armor.dm"
+#include "code\modules\antagonists\clockcult\clock_items\clockwork_slab.dm"
+#include "code\modules\antagonists\clockcult\clock_items\clockwork_weaponry.dm"
+#include "code\modules\antagonists\clockcult\clock_items\construct_chassis.dm"
+#include "code\modules\antagonists\clockcult\clock_items\integration_cog.dm"
+#include "code\modules\antagonists\clockcult\clock_items\judicial_visor.dm"
+#include "code\modules\antagonists\clockcult\clock_items\replica_fabricator.dm"
+#include "code\modules\antagonists\clockcult\clock_items\soul_vessel.dm"
+#include "code\modules\antagonists\clockcult\clock_items\wraith_spectacles.dm"
+#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\_call_weapon.dm"
+#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_spear.dm"
+#include "code\modules\antagonists\clockcult\clock_mobs\_eminence.dm"
+#include "code\modules\antagonists\clockcult\clock_mobs\clockwork_marauder.dm"
+#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_applications.dm"
+#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_cyborg.dm"
+#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_drivers.dm"
+#include "code\modules\antagonists\clockcult\clock_scriptures\scripture_scripts.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\_trap_object.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\ark_of_the_clockwork_justicar.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\clockwork_obelisk.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\eminence_spire.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\heralds_beacon.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\mania_motor.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\ocular_warden.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\ratvar_the_clockwork_justicar.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\reflector.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\stargazer.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\taunting_trail.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\wall_gear.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\lever.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\pressure_sensor_mech.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\trap_triggers\repeater.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\traps\brass_skewer.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\traps\power_null.dm"
+#include "code\modules\antagonists\clockcult\clock_structures\traps\steam_vent.dm"
+#include "code\modules\antagonists\cult\blood_magic.dm"
+#include "code\modules\antagonists\cult\cult.dm"
+#include "code\modules\antagonists\cult\cult_comms.dm"
+#include "code\modules\antagonists\cult\cult_items.dm"
+#include "code\modules\antagonists\cult\cult_structures.dm"
+#include "code\modules\antagonists\cult\ritual.dm"
+#include "code\modules\antagonists\cult\rune_spawn_action.dm"
+#include "code\modules\antagonists\cult\runes.dm"
+#include "code\modules\antagonists\devil\devil.dm"
+#include "code\modules\antagonists\devil\devil_helpers.dm"
+#include "code\modules\antagonists\devil\imp\imp.dm"
+#include "code\modules\antagonists\devil\sintouched\objectives.dm"
+#include "code\modules\antagonists\devil\sintouched\sintouched.dm"
+#include "code\modules\antagonists\devil\true_devil\_true_devil.dm"
+#include "code\modules\antagonists\devil\true_devil\inventory.dm"
+#include "code\modules\antagonists\disease\disease_abilities.dm"
+#include "code\modules\antagonists\disease\disease_datum.dm"
+#include "code\modules\antagonists\disease\disease_disease.dm"
+#include "code\modules\antagonists\disease\disease_event.dm"
+#include "code\modules\antagonists\disease\disease_mob.dm"
+#include "code\modules\antagonists\ert\ert.dm"
+#include "code\modules\antagonists\greentext\greentext.dm"
+#include "code\modules\antagonists\greybois\greybois.dm"
+#include "code\modules\antagonists\highlander\highlander.dm"
+#include "code\modules\antagonists\monkey\monkey.dm"
+#include "code\modules\antagonists\morph\morph.dm"
+#include "code\modules\antagonists\morph\morph_antag.dm"
+#include "code\modules\antagonists\nightmare\nightmare.dm"
+#include "code\modules\antagonists\ninja\ninja.dm"
+#include "code\modules\antagonists\nukeop\clownop.dm"
+#include "code\modules\antagonists\nukeop\nukeop.dm"
+#include "code\modules\antagonists\nukeop\equipment\nuclear_challenge.dm"
+#include "code\modules\antagonists\nukeop\equipment\nuclearbomb.dm"
+#include "code\modules\antagonists\nukeop\equipment\pinpointer.dm"
+#include "code\modules\antagonists\official\official.dm"
+#include "code\modules\antagonists\overthrow\overthrow.dm"
+#include "code\modules\antagonists\overthrow\overthrow_converter.dm"
+#include "code\modules\antagonists\overthrow\overthrow_team.dm"
+#include "code\modules\antagonists\pirate\pirate.dm"
+#include "code\modules\antagonists\revenant\revenant.dm"
+#include "code\modules\antagonists\revenant\revenant_abilities.dm"
+#include "code\modules\antagonists\revenant\revenant_antag.dm"
+#include "code\modules\antagonists\revenant\revenant_blight.dm"
+#include "code\modules\antagonists\revenant\revenant_spawn_event.dm"
+#include "code\modules\antagonists\revolution\revolution.dm"
+#include "code\modules\antagonists\separatist\separatist.dm"
+#include "code\modules\antagonists\slaughter\slaughter.dm"
+#include "code\modules\antagonists\slaughter\slaughter_antag.dm"
+#include "code\modules\antagonists\slaughter\slaughterevent.dm"
+#include "code\modules\antagonists\survivalist\survivalist.dm"
+#include "code\modules\antagonists\swarmer\swarmer.dm"
+#include "code\modules\antagonists\swarmer\swarmer_event.dm"
+#include "code\modules\antagonists\traitor\datum_traitor.dm"
+#include "code\modules\antagonists\traitor\equipment\Malf_Modules.dm"
+#include "code\modules\antagonists\traitor\IAA\internal_affairs.dm"
+#include "code\modules\antagonists\valentines\heartbreaker.dm"
+#include "code\modules\antagonists\valentines\valentine.dm"
+#include "code\modules\antagonists\wishgranter\wishgranter.dm"
+#include "code\modules\antagonists\wizard\wizard.dm"
+#include "code\modules\antagonists\wizard\equipment\artefact.dm"
+#include "code\modules\antagonists\wizard\equipment\soulstone.dm"
+#include "code\modules\antagonists\wizard\equipment\spellbook.dm"
+#include "code\modules\antagonists\xeno\xeno.dm"
+#include "code\modules\assembly\assembly.dm"
+#include "code\modules\assembly\bomb.dm"
+#include "code\modules\assembly\doorcontrol.dm"
+#include "code\modules\assembly\flash.dm"
+#include "code\modules\assembly\health.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\atmospherics\multiz.dm"
+#include "code\modules\atmospherics\environmental\LINDA_fire.dm"
+#include "code\modules\atmospherics\environmental\LINDA_system.dm"
+#include "code\modules\atmospherics\environmental\LINDA_turf_tile.dm"
+#include "code\modules\atmospherics\gasmixtures\gas_mixture.dm"
+#include "code\modules\atmospherics\gasmixtures\gas_types.dm"
+#include "code\modules\atmospherics\gasmixtures\immutable_mixtures.dm"
+#include "code\modules\atmospherics\gasmixtures\reactions.dm"
+#include "code\modules\atmospherics\machinery\airalarm.dm"
+#include "code\modules\atmospherics\machinery\atmosmachinery.dm"
+#include "code\modules\atmospherics\machinery\datum_pipeline.dm"
+#include "code\modules\atmospherics\machinery\components\components_base.dm"
+#include "code\modules\atmospherics\machinery\components\binary_devices\binary_devices.dm"
+#include "code\modules\atmospherics\machinery\components\binary_devices\circulator.dm"
+#include "code\modules\atmospherics\machinery\components\binary_devices\dp_vent_pump.dm"
+#include "code\modules\atmospherics\machinery\components\binary_devices\passive_gate.dm"
+#include "code\modules\atmospherics\machinery\components\binary_devices\pump.dm"
+#include "code\modules\atmospherics\machinery\components\binary_devices\relief_valve.dm"
+#include "code\modules\atmospherics\machinery\components\binary_devices\valve.dm"
+#include "code\modules\atmospherics\machinery\components\binary_devices\volume_pump.dm"
+#include "code\modules\atmospherics\machinery\components\trinary_devices\filter.dm"
+#include "code\modules\atmospherics\machinery\components\trinary_devices\mixer.dm"
+#include "code\modules\atmospherics\machinery\components\trinary_devices\trinary_devices.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\cryo.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\heat_exchanger.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\outlet_injector.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\passive_vent.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\portables_connector.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\relief_valve.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\tank.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\thermomachine.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\unary_devices.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\vent_pump.dm"
+#include "code\modules\atmospherics\machinery\components\unary_devices\vent_scrubber.dm"
+#include "code\modules\atmospherics\machinery\other\meter.dm"
+#include "code\modules\atmospherics\machinery\other\miner.dm"
+#include "code\modules\atmospherics\machinery\pipes\layermanifold.dm"
+#include "code\modules\atmospherics\machinery\pipes\manifold.dm"
+#include "code\modules\atmospherics\machinery\pipes\manifold4w.dm"
+#include "code\modules\atmospherics\machinery\pipes\mapping.dm"
+#include "code\modules\atmospherics\machinery\pipes\pipes.dm"
+#include "code\modules\atmospherics\machinery\pipes\simple.dm"
+#include "code\modules\atmospherics\machinery\pipes\heat_exchange\he_pipes.dm"
+#include "code\modules\atmospherics\machinery\pipes\heat_exchange\junction.dm"
+#include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold.dm"
+#include "code\modules\atmospherics\machinery\pipes\heat_exchange\manifold4w.dm"
+#include "code\modules\atmospherics\machinery\pipes\heat_exchange\simple.dm"
+#include "code\modules\atmospherics\machinery\portable\canister.dm"
+#include "code\modules\atmospherics\machinery\portable\portable_atmospherics.dm"
+#include "code\modules\atmospherics\machinery\portable\pump.dm"
+#include "code\modules\atmospherics\machinery\portable\scrubber.dm"
+#include "code\modules\awaymissions\away_props.dm"
+#include "code\modules\awaymissions\bluespaceartillery.dm"
+#include "code\modules\awaymissions\capture_the_flag.dm"
+#include "code\modules\awaymissions\corpse.dm"
+#include "code\modules\awaymissions\exile.dm"
+#include "code\modules\awaymissions\gateway.dm"
+#include "code\modules\awaymissions\pamphlet.dm"
+#include "code\modules\awaymissions\signpost.dm"
+#include "code\modules\awaymissions\super_secret_room.dm"
+#include "code\modules\awaymissions\zlevel.dm"
+#include "code\modules\awaymissions\mission_code\Academy.dm"
+#include "code\modules\awaymissions\mission_code\Cabin.dm"
+#include "code\modules\awaymissions\mission_code\caves.dm"
+#include "code\modules\awaymissions\mission_code\centcomAway.dm"
+#include "code\modules\awaymissions\mission_code\challenge.dm"
+#include "code\modules\awaymissions\mission_code\moonoutpost19.dm"
+#include "code\modules\awaymissions\mission_code\murderdome.dm"
+#include "code\modules\awaymissions\mission_code\research.dm"
+#include "code\modules\awaymissions\mission_code\snowdin.dm"
+#include "code\modules\awaymissions\mission_code\spacebattle.dm"
+#include "code\modules\awaymissions\mission_code\stationCollision.dm"
+#include "code\modules\awaymissions\mission_code\undergroundoutpost45.dm"
+#include "code\modules\awaymissions\mission_code\wildwest.dm"
+#include "code\modules\bsql\includes.dm"
+#include "code\modules\buildmode\bm_mode.dm"
+#include "code\modules\buildmode\buildmode.dm"
+#include "code\modules\buildmode\buttons.dm"
+#include "code\modules\buildmode\effects\line.dm"
+#include "code\modules\buildmode\submodes\advanced.dm"
+#include "code\modules\buildmode\submodes\area_edit.dm"
+#include "code\modules\buildmode\submodes\basic.dm"
+#include "code\modules\buildmode\submodes\boom.dm"
+#include "code\modules\buildmode\submodes\copy.dm"
+#include "code\modules\buildmode\submodes\fill.dm"
+#include "code\modules\buildmode\submodes\mapgen.dm"
+#include "code\modules\buildmode\submodes\throwing.dm"
+#include "code\modules\buildmode\submodes\variable_edit.dm"
+#include "code\modules\cargo\bounty.dm"
+#include "code\modules\cargo\bounty_console.dm"
+#include "code\modules\cargo\centcom_podlauncher.dm"
+#include "code\modules\cargo\console.dm"
+#include "code\modules\cargo\export_scanner.dm"
+#include "code\modules\cargo\exports.dm"
+#include "code\modules\cargo\expressconsole.dm"
+#include "code\modules\cargo\gondolapod.dm"
+#include "code\modules\cargo\order.dm"
+#include "code\modules\cargo\packs.dm"
+#include "code\modules\cargo\supplypod.dm"
+#include "code\modules\cargo\supplypod_beacon.dm"
+#include "code\modules\cargo\bounties\assistant.dm"
+#include "code\modules\cargo\bounties\botany.dm"
+#include "code\modules\cargo\bounties\chef.dm"
+#include "code\modules\cargo\bounties\engineering.dm"
+#include "code\modules\cargo\bounties\item.dm"
+#include "code\modules\cargo\bounties\mech.dm"
+#include "code\modules\cargo\bounties\medical.dm"
+#include "code\modules\cargo\bounties\mining.dm"
+#include "code\modules\cargo\bounties\reagent.dm"
+#include "code\modules\cargo\bounties\science.dm"
+#include "code\modules\cargo\bounties\security.dm"
+#include "code\modules\cargo\bounties\slime.dm"
+#include "code\modules\cargo\bounties\special.dm"
+#include "code\modules\cargo\bounties\virus.dm"
+#include "code\modules\cargo\exports\food_wine.dm"
+#include "code\modules\cargo\exports\gear.dm"
+#include "code\modules\cargo\exports\large_objects.dm"
+#include "code\modules\cargo\exports\manifest.dm"
+#include "code\modules\cargo\exports\materials.dm"
+#include "code\modules\cargo\exports\organs_robotics.dm"
+#include "code\modules\cargo\exports\parts.dm"
+#include "code\modules\cargo\exports\seeds.dm"
+#include "code\modules\cargo\exports\sheets.dm"
+#include "code\modules\cargo\exports\tools.dm"
+#include "code\modules\cargo\exports\weapons.dm"
+#include "code\modules\cargo\packs\armory.dm"
+#include "code\modules\cargo\packs\costumes_toys.dm"
+#include "code\modules\cargo\packs\emergency.dm"
+#include "code\modules\cargo\packs\engine.dm"
+#include "code\modules\cargo\packs\engineering.dm"
+#include "code\modules\cargo\packs\livestock.dm"
+#include "code\modules\cargo\packs\materials.dm"
+#include "code\modules\cargo\packs\medical.dm"
+#include "code\modules\cargo\packs\misc.dm"
+#include "code\modules\cargo\packs\organic.dm"
+#include "code\modules\cargo\packs\science.dm"
+#include "code\modules\cargo\packs\security.dm"
+#include "code\modules\cargo\packs\service.dm"
+#include "code\modules\chatter\chatter.dm"
+#include "code\modules\client\asset_cache.dm"
+#include "code\modules\client\client_colour.dm"
+#include "code\modules\client\client_defines.dm"
+#include "code\modules\client\client_procs.dm"
+#include "code\modules\client\darkmode.dm"
+#include "code\modules\client\message.dm"
+#include "code\modules\client\player_details.dm"
+#include "code\modules\client\preferences.dm"
+#include "code\modules\client\preferences_savefile.dm"
+#include "code\modules\client\preferences_toggles.dm"
+#include "code\modules\client\preferences_vr.dm"
+#include "code\modules\client\verbs\aooc.dm"
+#include "code\modules\client\verbs\etips.dm"
+#include "code\modules\client\verbs\looc.dm"
+#include "code\modules\client\verbs\ooc.dm"
+#include "code\modules\client\verbs\ping.dm"
+#include "code\modules\client\verbs\suicide.dm"
+#include "code\modules\client\verbs\who.dm"
+#include "code\modules\clothing\chameleon.dm"
+#include "code\modules\clothing\clothing.dm"
+#include "code\modules\clothing\ears\_ears.dm"
+#include "code\modules\clothing\glasses\_glasses.dm"
+#include "code\modules\clothing\glasses\engine_goggles.dm"
+#include "code\modules\clothing\glasses\hud.dm"
+#include "code\modules\clothing\glasses\vg_glasses.dm"
+#include "code\modules\clothing\gloves\_gloves.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\ring.dm"
+#include "code\modules\clothing\gloves\vg_gloves.dm"
+#include "code\modules\clothing\head\_head.dm"
+#include "code\modules\clothing\head\beanie.dm"
+#include "code\modules\clothing\head\cit_hats.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\head\vg_hats.dm"
+#include "code\modules\clothing\masks\_masks.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\hailer.dm"
+#include "code\modules\clothing\masks\miscellaneous.dm"
+#include "code\modules\clothing\masks\vg_masks.dm"
+#include "code\modules\clothing\neck\_neck.dm"
+#include "code\modules\clothing\outfits\ert.dm"
+#include "code\modules\clothing\outfits\event.dm"
+#include "code\modules\clothing\outfits\plasmaman.dm"
+#include "code\modules\clothing\outfits\standard.dm"
+#include "code\modules\clothing\outfits\vr.dm"
+#include "code\modules\clothing\outfits\vv_outfit.dm"
+#include "code\modules\clothing\shoes\_shoes.dm"
+#include "code\modules\clothing\shoes\bananashoes.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\shoes\taeclowndo.dm"
+#include "code\modules\clothing\shoes\vg_shoes.dm"
+#include "code\modules\clothing\spacesuits\_spacesuits.dm"
+#include "code\modules\clothing\spacesuits\chronosuit.dm"
+#include "code\modules\clothing\spacesuits\hardsuit.dm"
+#include "code\modules\clothing\spacesuits\miscellaneous.dm"
+#include "code\modules\clothing\spacesuits\plasmamen.dm"
+#include "code\modules\clothing\spacesuits\syndi.dm"
+#include "code\modules\clothing\spacesuits\vg_spess.dm"
+#include "code\modules\clothing\suits\_suits.dm"
+#include "code\modules\clothing\suits\armor.dm"
+#include "code\modules\clothing\suits\bio.dm"
+#include "code\modules\clothing\suits\cloaks.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\reactive_armour.dm"
+#include "code\modules\clothing\suits\toggles.dm"
+#include "code\modules\clothing\suits\utility.dm"
+#include "code\modules\clothing\suits\vg_suits.dm"
+#include "code\modules\clothing\suits\wiz_robe.dm"
+#include "code\modules\clothing\under\_under.dm"
+#include "code\modules\clothing\under\accessories.dm"
+#include "code\modules\clothing\under\color.dm"
+#include "code\modules\clothing\under\miscellaneous.dm"
+#include "code\modules\clothing\under\pants.dm"
+#include "code\modules\clothing\under\shorts.dm"
+#include "code\modules\clothing\under\syndicate.dm"
+#include "code\modules\clothing\under\trek.dm"
+#include "code\modules\clothing\under\vg_under.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\clothing\under\jobs\Plasmaman\civilian_service.dm"
+#include "code\modules\clothing\under\jobs\Plasmaman\engineering.dm"
+#include "code\modules\clothing\under\jobs\Plasmaman\medsci.dm"
+#include "code\modules\clothing\under\jobs\Plasmaman\security.dm"
+#include "code\modules\crafting\craft.dm"
+#include "code\modules\crafting\guncrafting.dm"
+#include "code\modules\crafting\recipes.dm"
+#include "code\modules\crafting\recipes\recipes_clothing.dm"
+#include "code\modules\crafting\recipes\recipes_misc.dm"
+#include "code\modules\crafting\recipes\recipes_primal.dm"
+#include "code\modules\crafting\recipes\recipes_robot.dm"
+#include "code\modules\crafting\recipes\recipes_weapon_and_ammo.dm"
+#include "code\modules\detectivework\detective_work.dm"
+#include "code\modules\detectivework\evidence.dm"
+#include "code\modules\detectivework\scanner.dm"
+#include "code\modules\emoji\emoji_parse.dm"
+#include "code\modules\error_handler\error_handler.dm"
+#include "code\modules\error_handler\error_viewer.dm"
+#include "code\modules\events\_event.dm"
+#include "code\modules\events\abductor.dm"
+#include "code\modules\events\alien_infestation.dm"
+#include "code\modules\events\anomaly.dm"
+#include "code\modules\events\anomaly_bluespace.dm"
+#include "code\modules\events\anomaly_flux.dm"
+#include "code\modules\events\anomaly_grav.dm"
+#include "code\modules\events\anomaly_pyro.dm"
+#include "code\modules\events\anomaly_vortex.dm"
+#include "code\modules\events\aurora_aquilae.dm"
+#include "code\modules\events\aurora_caelus.dm"
+#include "code\modules\events\blob.dm"
+#include "code\modules\events\brand_intelligence.dm"
+#include "code\modules\events\bureaucratic_error.dm"
+#include "code\modules\events\camerafailure.dm"
+#include "code\modules\events\carp_migration.dm"
+#include "code\modules\events\carpteam.dm"
+#include "code\modules\events\communications_blackout.dm"
+#include "code\modules\events\devil.dm"
+#include "code\modules\events\disease_outbreak.dm"
+#include "code\modules\events\dust.dm"
+#include "code\modules\events\electrical_storm.dm"
+#include "code\modules\events\false_alarm.dm"
+#include "code\modules\events\floorcluwne.dm"
+#include "code\modules\events\ghost_role.dm"
+#include "code\modules\events\grid_check.dm"
+#include "code\modules\events\heart_attack.dm"
+#include "code\modules\events\high_priority_bounty.dm"
+#include "code\modules\events\immovable_rod.dm"
+#include "code\modules\events\ion_storm.dm"
+#include "code\modules\events\major_dust.dm"
+#include "code\modules\events\mass_hallucination.dm"
+#include "code\modules\events\meateor_wave.dm"
+#include "code\modules\events\meteor_wave.dm"
+#include "code\modules\events\mice_migration.dm"
+#include "code\modules\events\nightmare.dm"
+#include "code\modules\events\operative.dm"
+#include "code\modules\events\pirates.dm"
+#include "code\modules\events\portal_storm.dm"
+#include "code\modules\events\prison_break.dm"
+#include "code\modules\events\processor_overload.dm"
+#include "code\modules\events\radiation_storm.dm"
+#include "code\modules\events\sentience.dm"
+#include "code\modules\events\shuttle_loan.dm"
+#include "code\modules\events\spacevine.dm"
+#include "code\modules\events\spider_infestation.dm"
+#include "code\modules\events\spontaneous_appendicitis.dm"
+#include "code\modules\events\vent_clog.dm"
+#include "code\modules\events\wormholes.dm"
+#include "code\modules\events\holiday\halloween.dm"
+#include "code\modules\events\holiday\vday.dm"
+#include "code\modules\events\holiday\xmas.dm"
+#include "code\modules\events\wizard\aid.dm"
+#include "code\modules\events\wizard\blobies.dm"
+#include "code\modules\events\wizard\curseditems.dm"
+#include "code\modules\events\wizard\departmentrevolt.dm"
+#include "code\modules\events\wizard\fakeexplosion.dm"
+#include "code\modules\events\wizard\ghost.dm"
+#include "code\modules\events\wizard\greentext.dm"
+#include "code\modules\events\wizard\imposter.dm"
+#include "code\modules\events\wizard\invincible.dm"
+#include "code\modules\events\wizard\lava.dm"
+#include "code\modules\events\wizard\magicarp.dm"
+#include "code\modules\events\wizard\petsplosion.dm"
+#include "code\modules\events\wizard\race.dm"
+#include "code\modules\events\wizard\rpgloot.dm"
+#include "code\modules\events\wizard\shuffle.dm"
+#include "code\modules\events\wizard\summons.dm"
+#include "code\modules\fields\fields.dm"
+#include "code\modules\fields\gravity.dm"
+#include "code\modules\fields\peaceborg_dampener.dm"
+#include "code\modules\fields\timestop.dm"
+#include "code\modules\fields\turf_objects.dm"
+#include "code\modules\flufftext\Dreaming.dm"
+#include "code\modules\flufftext\Hallucination.dm"
+#include "code\modules\food_and_drinks\autobottler.dm"
+#include "code\modules\food_and_drinks\food.dm"
+#include "code\modules\food_and_drinks\pizzabox.dm"
+#include "code\modules\food_and_drinks\drinks\drinks.dm"
+#include "code\modules\food_and_drinks\drinks\drinks\bottle.dm"
+#include "code\modules\food_and_drinks\drinks\drinks\drinkingglass.dm"
+#include "code\modules\food_and_drinks\food\condiment.dm"
+#include "code\modules\food_and_drinks\food\customizables.dm"
+#include "code\modules\food_and_drinks\food\snacks.dm"
+#include "code\modules\food_and_drinks\food\snacks_bread.dm"
+#include "code\modules\food_and_drinks\food\snacks_burgers.dm"
+#include "code\modules\food_and_drinks\food\snacks_cake.dm"
+#include "code\modules\food_and_drinks\food\snacks_egg.dm"
+#include "code\modules\food_and_drinks\food\snacks_frozen.dm"
+#include "code\modules\food_and_drinks\food\snacks_meat.dm"
+#include "code\modules\food_and_drinks\food\snacks_other.dm"
+#include "code\modules\food_and_drinks\food\snacks_pastry.dm"
+#include "code\modules\food_and_drinks\food\snacks_pie.dm"
+#include "code\modules\food_and_drinks\food\snacks_pizza.dm"
+#include "code\modules\food_and_drinks\food\snacks_salad.dm"
+#include "code\modules\food_and_drinks\food\snacks_sandwichtoast.dm"
+#include "code\modules\food_and_drinks\food\snacks_soup.dm"
+#include "code\modules\food_and_drinks\food\snacks_spaghetti.dm"
+#include "code\modules\food_and_drinks\food\snacks_sushi.dm"
+#include "code\modules\food_and_drinks\food\snacks_vend.dm"
+#include "code\modules\food_and_drinks\food\snacks\dough.dm"
+#include "code\modules\food_and_drinks\food\snacks\meat.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\deep_fryer.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\food_cart.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\gibber.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\grill.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\icecream_vat.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\microwave.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\monkeyrecycler.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\processor.dm"
+#include "code\modules\food_and_drinks\kitchen_machinery\smartfridge.dm"
+#include "code\modules\food_and_drinks\recipes\drinks_recipes.dm"
+#include "code\modules\food_and_drinks\recipes\food_mixtures.dm"
+#include "code\modules\food_and_drinks\recipes\processor_recipes.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_bread.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_burger.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_cake.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_egg.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_frozen.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_meat.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_misc.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pastry.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pie.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_pizza.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_salad.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sandwich.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sushi.dm"
+#include "code\modules\games\cas.dm"
+#include "code\modules\goonchat\browserOutput.dm"
+#include "code\modules\goonchat\jsErrorHandler.dm"
+#include "code\modules\holiday\easter.dm"
+#include "code\modules\holiday\holidays.dm"
+#include "code\modules\holiday\halloween\bartholomew.dm"
+#include "code\modules\holiday\halloween\jacqueen.dm"
+#include "code\modules\holodeck\area_copy.dm"
+#include "code\modules\holodeck\computer.dm"
+#include "code\modules\holodeck\holo_effect.dm"
+#include "code\modules\holodeck\items.dm"
+#include "code\modules\holodeck\mobs.dm"
+#include "code\modules\holodeck\turfs.dm"
+#include "code\modules\hydroponics\biogenerator.dm"
+#include "code\modules\hydroponics\fermenting_barrel.dm"
+#include "code\modules\hydroponics\gene_modder.dm"
+#include "code\modules\hydroponics\grown.dm"
+#include "code\modules\hydroponics\growninedible.dm"
+#include "code\modules\hydroponics\hydroitemdefines.dm"
+#include "code\modules\hydroponics\hydroponics.dm"
+#include "code\modules\hydroponics\plant_genes.dm"
+#include "code\modules\hydroponics\sample.dm"
+#include "code\modules\hydroponics\seed_extractor.dm"
+#include "code\modules\hydroponics\seeds.dm"
+#include "code\modules\hydroponics\beekeeping\beebox.dm"
+#include "code\modules\hydroponics\beekeeping\beekeeper_suit.dm"
+#include "code\modules\hydroponics\beekeeping\honey_frame.dm"
+#include "code\modules\hydroponics\beekeeping\honeycomb.dm"
+#include "code\modules\hydroponics\grown\ambrosia.dm"
+#include "code\modules\hydroponics\grown\apple.dm"
+#include "code\modules\hydroponics\grown\banana.dm"
+#include "code\modules\hydroponics\grown\beans.dm"
+#include "code\modules\hydroponics\grown\berries.dm"
+#include "code\modules\hydroponics\grown\cannabis.dm"
+#include "code\modules\hydroponics\grown\cereals.dm"
+#include "code\modules\hydroponics\grown\chili.dm"
+#include "code\modules\hydroponics\grown\citrus.dm"
+#include "code\modules\hydroponics\grown\cocoa_vanilla.dm"
+#include "code\modules\hydroponics\grown\corn.dm"
+#include "code\modules\hydroponics\grown\cotton.dm"
+#include "code\modules\hydroponics\grown\eggplant.dm"
+#include "code\modules\hydroponics\grown\flowers.dm"
+#include "code\modules\hydroponics\grown\garlic.dm"
+#include "code\modules\hydroponics\grown\grass_carpet.dm"
+#include "code\modules\hydroponics\grown\kudzu.dm"
+#include "code\modules\hydroponics\grown\melon.dm"
+#include "code\modules\hydroponics\grown\misc.dm"
+#include "code\modules\hydroponics\grown\mushrooms.dm"
+#include "code\modules\hydroponics\grown\nettle.dm"
+#include "code\modules\hydroponics\grown\onion.dm"
+#include "code\modules\hydroponics\grown\peach.dm"
+#include "code\modules\hydroponics\grown\peanuts.dm"
+#include "code\modules\hydroponics\grown\pineapple.dm"
+#include "code\modules\hydroponics\grown\potato.dm"
+#include "code\modules\hydroponics\grown\pumpkin.dm"
+#include "code\modules\hydroponics\grown\random.dm"
+#include "code\modules\hydroponics\grown\replicapod.dm"
+#include "code\modules\hydroponics\grown\root.dm"
+#include "code\modules\hydroponics\grown\tea_coffee.dm"
+#include "code\modules\hydroponics\grown\tobacco.dm"
+#include "code\modules\hydroponics\grown\tomato.dm"
+#include "code\modules\hydroponics\grown\towercap.dm"
+#include "code\modules\integrated_electronics\_defines.dm"
+#include "code\modules\integrated_electronics\core\analyzer.dm"
+#include "code\modules\integrated_electronics\core\assemblies.dm"
+#include "code\modules\integrated_electronics\core\debugger.dm"
+#include "code\modules\integrated_electronics\core\detailer.dm"
+#include "code\modules\integrated_electronics\core\helpers.dm"
+#include "code\modules\integrated_electronics\core\integrated_circuit.dm"
+#include "code\modules\integrated_electronics\core\pins.dm"
+#include "code\modules\integrated_electronics\core\printer.dm"
+#include "code\modules\integrated_electronics\core\saved_circuits.dm"
+#include "code\modules\integrated_electronics\core\wirer.dm"
+#include "code\modules\integrated_electronics\core\special_pins\boolean_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\char_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\color_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\dir_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\index_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\list_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\number_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\ref_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\selfref_pin.dm"
+#include "code\modules\integrated_electronics\core\special_pins\string_pin.dm"
+#include "code\modules\integrated_electronics\passive\passive.dm"
+#include "code\modules\integrated_electronics\passive\power.dm"
+#include "code\modules\integrated_electronics\subtypes\access.dm"
+#include "code\modules\integrated_electronics\subtypes\arithmetic.dm"
+#include "code\modules\integrated_electronics\subtypes\atmospherics.dm"
+#include "code\modules\integrated_electronics\subtypes\converters.dm"
+#include "code\modules\integrated_electronics\subtypes\data_transfer.dm"
+#include "code\modules\integrated_electronics\subtypes\input.dm"
+#include "code\modules\integrated_electronics\subtypes\lists.dm"
+#include "code\modules\integrated_electronics\subtypes\logic.dm"
+#include "code\modules\integrated_electronics\subtypes\manipulation.dm"
+#include "code\modules\integrated_electronics\subtypes\memory.dm"
+#include "code\modules\integrated_electronics\subtypes\output.dm"
+#include "code\modules\integrated_electronics\subtypes\power.dm"
+#include "code\modules\integrated_electronics\subtypes\reagents.dm"
+#include "code\modules\integrated_electronics\subtypes\smart.dm"
+#include "code\modules\integrated_electronics\subtypes\text.dm"
+#include "code\modules\integrated_electronics\subtypes\time.dm"
+#include "code\modules\integrated_electronics\subtypes\trig.dm"
+#include "code\modules\integrated_electronics\subtypes\weaponized.dm"
+#include "code\modules\jobs\access.dm"
+#include "code\modules\jobs\job_exp.dm"
+#include "code\modules\jobs\jobs.dm"
+#include "code\modules\jobs\job_types\assistant.dm"
+#include "code\modules\jobs\job_types\captain.dm"
+#include "code\modules\jobs\job_types\cargo_service.dm"
+#include "code\modules\jobs\job_types\civilian.dm"
+#include "code\modules\jobs\job_types\civilian_chaplain.dm"
+#include "code\modules\jobs\job_types\engineering.dm"
+#include "code\modules\jobs\job_types\job.dm"
+#include "code\modules\jobs\job_types\job_alt_titles.dm"
+#include "code\modules\jobs\job_types\medical.dm"
+#include "code\modules\jobs\job_types\science.dm"
+#include "code\modules\jobs\job_types\security.dm"
+#include "code\modules\jobs\job_types\silicon.dm"
+#include "code\modules\jobs\map_changes\map_changes.dm"
+#include "code\modules\keybindings\bindings_admin.dm"
+#include "code\modules\keybindings\bindings_atom.dm"
+#include "code\modules\keybindings\bindings_carbon.dm"
+#include "code\modules\keybindings\bindings_client.dm"
+#include "code\modules\keybindings\bindings_human.dm"
+#include "code\modules\keybindings\bindings_living.dm"
+#include "code\modules\keybindings\bindings_mob.dm"
+#include "code\modules\keybindings\bindings_robot.dm"
+#include "code\modules\keybindings\focus.dm"
+#include "code\modules\keybindings\setup.dm"
+#include "code\modules\language\aphasia.dm"
+#include "code\modules\language\beachbum.dm"
+#include "code\modules\language\codespeak.dm"
+#include "code\modules\language\common.dm"
+#include "code\modules\language\draconic.dm"
+#include "code\modules\language\drone.dm"
+#include "code\modules\language\language.dm"
+#include "code\modules\language\language_holder.dm"
+#include "code\modules\language\language_menu.dm"
+#include "code\modules\language\machine.dm"
+#include "code\modules\language\monkey.dm"
+#include "code\modules\language\mushroom.dm"
+#include "code\modules\language\narsian.dm"
+#include "code\modules\language\ratvarian.dm"
+#include "code\modules\language\slime.dm"
+#include "code\modules\language\swarmer.dm"
+#include "code\modules\language\vampiric.dm"
+#include "code\modules\language\xenocommon.dm"
+#include "code\modules\library\lib_codex_gigas.dm"
+#include "code\modules\library\lib_items.dm"
+#include "code\modules\library\lib_machines.dm"
+#include "code\modules\library\random_books.dm"
+#include "code\modules\library\soapstone.dm"
+#include "code\modules\lighting\lighting_area.dm"
+#include "code\modules\lighting\lighting_atom.dm"
+#include "code\modules\lighting\lighting_corner.dm"
+#include "code\modules\lighting\lighting_object.dm"
+#include "code\modules\lighting\lighting_setup.dm"
+#include "code\modules\lighting\lighting_source.dm"
+#include "code\modules\lighting\lighting_turf.dm"
+#include "code\modules\mapping\dmm_suite.dm"
+#include "code\modules\mapping\map_template.dm"
+#include "code\modules\mapping\mapping_helpers.dm"
+#include "code\modules\mapping\preloader.dm"
+#include "code\modules\mapping\reader.dm"
+#include "code\modules\mapping\ruins.dm"
+#include "code\modules\mapping\verify.dm"
+#include "code\modules\mapping\space_management\multiz_helpers.dm"
+#include "code\modules\mapping\space_management\space_level.dm"
+#include "code\modules\mapping\space_management\space_reservation.dm"
+#include "code\modules\mapping\space_management\space_transition.dm"
+#include "code\modules\mapping\space_management\traits.dm"
+#include "code\modules\mapping\space_management\zlevel_manager.dm"
+#include "code\modules\mining\abandoned_crates.dm"
+#include "code\modules\mining\aux_base.dm"
+#include "code\modules\mining\aux_base_camera.dm"
+#include "code\modules\mining\fulton.dm"
+#include "code\modules\mining\machine_processing.dm"
+#include "code\modules\mining\machine_redemption.dm"
+#include "code\modules\mining\machine_silo.dm"
+#include "code\modules\mining\machine_stacking.dm"
+#include "code\modules\mining\machine_unloading.dm"
+#include "code\modules\mining\machine_vending.dm"
+#include "code\modules\mining\mine_items.dm"
+#include "code\modules\mining\minebot.dm"
+#include "code\modules\mining\mint.dm"
+#include "code\modules\mining\money_bag.dm"
+#include "code\modules\mining\ores_coins.dm"
+#include "code\modules\mining\satchel_ore_boxdm.dm"
+#include "code\modules\mining\shelters.dm"
+#include "code\modules\mining\equipment\explorer_gear.dm"
+#include "code\modules\mining\equipment\goliath_hide.dm"
+#include "code\modules\mining\equipment\kinetic_crusher.dm"
+#include "code\modules\mining\equipment\lazarus_injector.dm"
+#include "code\modules\mining\equipment\marker_beacons.dm"
+#include "code\modules\mining\equipment\mineral_scanner.dm"
+#include "code\modules\mining\equipment\mining_tools.dm"
+#include "code\modules\mining\equipment\regenerative_core.dm"
+#include "code\modules\mining\equipment\resonator.dm"
+#include "code\modules\mining\equipment\survival_pod.dm"
+#include "code\modules\mining\equipment\vendor_items.dm"
+#include "code\modules\mining\equipment\wormhole_jaunter.dm"
+#include "code\modules\mining\laborcamp\laborshuttle.dm"
+#include "code\modules\mining\laborcamp\laborstacker.dm"
+#include "code\modules\mining\lavaland\ash_flora.dm"
+#include "code\modules\mining\lavaland\necropolis_chests.dm"
+#include "code\modules\mining\lavaland\ruins\gym.dm"
+#include "code\modules\mob\death.dm"
+#include "code\modules\mob\emote.dm"
+#include "code\modules\mob\inventory.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_helpers.dm"
+#include "code\modules\mob\mob_movement.dm"
+#include "code\modules\mob\mob_movespeed.dm"
+#include "code\modules\mob\mob_transformation_simple.dm"
+#include "code\modules\mob\say.dm"
+#include "code\modules\mob\say_vr.dm"
+#include "code\modules\mob\status_procs.dm"
+#include "code\modules\mob\transform_procs.dm"
+#include "code\modules\mob\typing_indicator.dm"
+#include "code\modules\mob\update_icons.dm"
+#include "code\modules\mob\camera\camera.dm"
+#include "code\modules\mob\dead\dead.dm"
+#include "code\modules\mob\dead\new_player\login.dm"
+#include "code\modules\mob\dead\new_player\logout.dm"
+#include "code\modules\mob\dead\new_player\new_player.dm"
+#include "code\modules\mob\dead\new_player\poll.dm"
+#include "code\modules\mob\dead\new_player\preferences_setup.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\_sprite_accessories.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\body_markings.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\caps.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\ears.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\frills.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\hair_face.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\hair_head.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\horns.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\legs.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\moth_fluff.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\moth_wings.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\pines.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\snouts.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\socks.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\tails.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\undershirt.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\underwear.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\wings.dm"
+#include "code\modules\mob\dead\observer\login.dm"
+#include "code\modules\mob\dead\observer\logout.dm"
+#include "code\modules\mob\dead\observer\notificationprefs.dm"
+#include "code\modules\mob\dead\observer\observer.dm"
+#include "code\modules\mob\dead\observer\observer_movement.dm"
+#include "code\modules\mob\dead\observer\say.dm"
+#include "code\modules\mob\living\blood.dm"
+#include "code\modules\mob\living\bloodcrawl.dm"
+#include "code\modules\mob\living\damage_procs.dm"
+#include "code\modules\mob\living\death.dm"
+#include "code\modules\mob\living\emote.dm"
+#include "code\modules\mob\living\life.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\living_movement.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\status_procs.dm"
+#include "code\modules\mob\living\taste.dm"
+#include "code\modules\mob\living\ventcrawling.dm"
+#include "code\modules\mob\living\brain\brain.dm"
+#include "code\modules\mob\living\brain\brain_item.dm"
+#include "code\modules\mob\living\brain\death.dm"
+#include "code\modules\mob\living\brain\emote.dm"
+#include "code\modules\mob\living\brain\life.dm"
+#include "code\modules\mob\living\brain\MMI.dm"
+#include "code\modules\mob\living\brain\posibrain.dm"
+#include "code\modules\mob\living\brain\say.dm"
+#include "code\modules\mob\living\brain\status_procs.dm"
+#include "code\modules\mob\living\carbon\carbon.dm"
+#include "code\modules\mob\living\carbon\carbon_defense.dm"
+#include "code\modules\mob\living\carbon\carbon_defines.dm"
+#include "code\modules\mob\living\carbon\carbon_movement.dm"
+#include "code\modules\mob\living\carbon\damage_procs.dm"
+#include "code\modules\mob\living\carbon\death.dm"
+#include "code\modules\mob\living\carbon\emote.dm"
+#include "code\modules\mob\living\carbon\examine.dm"
+#include "code\modules\mob\living\carbon\give.dm"
+#include "code\modules\mob\living\carbon\inventory.dm"
+#include "code\modules\mob\living\carbon\life.dm"
+#include "code\modules\mob\living\carbon\say.dm"
+#include "code\modules\mob\living\carbon\status_procs.dm"
+#include "code\modules\mob\living\carbon\update_icons.dm"
+#include "code\modules\mob\living\carbon\alien\alien.dm"
+#include "code\modules\mob\living\carbon\alien\alien_defense.dm"
+#include "code\modules\mob\living\carbon\alien\damage_procs.dm"
+#include "code\modules\mob\living\carbon\alien\death.dm"
+#include "code\modules\mob\living\carbon\alien\emote.dm"
+#include "code\modules\mob\living\carbon\alien\life.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\organs.dm"
+#include "code\modules\mob\living\carbon\alien\say.dm"
+#include "code\modules\mob\living\carbon\alien\screen.dm"
+#include "code\modules\mob\living\carbon\alien\status_procs.dm"
+#include "code\modules\mob\living\carbon\alien\update_icons.dm"
+#include "code\modules\mob\living\carbon\alien\humanoid\alien_powers.dm"
+#include "code\modules\mob\living\carbon\alien\humanoid\death.dm"
+#include "code\modules\mob\living\carbon\alien\humanoid\humanoid.dm"
+#include "code\modules\mob\living\carbon\alien\humanoid\humanoid_defense.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\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\praetorian.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\inventory.dm"
+#include "code\modules\mob\living\carbon\alien\larva\larva.dm"
+#include "code\modules\mob\living\carbon\alien\larva\larva_defense.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\human\damage_procs.dm"
+#include "code\modules\mob\living\carbon\human\death.dm"
+#include "code\modules\mob\living\carbon\human\dummy.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\examine_vr.dm"
+#include "code\modules\mob\living\carbon\human\human.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_helpers.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\physiology.dm"
+#include "code\modules\mob\living\carbon\human\say.dm"
+#include "code\modules\mob\living\carbon\human\species.dm"
+#include "code\modules\mob\living\carbon\human\status_procs.dm"
+#include "code\modules\mob\living\carbon\human\typing_indicator.dm"
+#include "code\modules\mob\living\carbon\human\update_icons.dm"
+#include "code\modules\mob\living\carbon\human\species_types\abductors.dm"
+#include "code\modules\mob\living\carbon\human\species_types\android.dm"
+#include "code\modules\mob\living\carbon\human\species_types\angel.dm"
+#include "code\modules\mob\living\carbon\human\species_types\corporate.dm"
+#include "code\modules\mob\living\carbon\human\species_types\dullahan.dm"
+#include "code\modules\mob\living\carbon\human\species_types\felinid.dm"
+#include "code\modules\mob\living\carbon\human\species_types\flypeople.dm"
+#include "code\modules\mob\living\carbon\human\species_types\golems.dm"
+#include "code\modules\mob\living\carbon\human\species_types\humans.dm"
+#include "code\modules\mob\living\carbon\human\species_types\jellypeople.dm"
+#include "code\modules\mob\living\carbon\human\species_types\lizardpeople.dm"
+#include "code\modules\mob\living\carbon\human\species_types\mothmen.dm"
+#include "code\modules\mob\living\carbon\human\species_types\mushpeople.dm"
+#include "code\modules\mob\living\carbon\human\species_types\plasmamen.dm"
+#include "code\modules\mob\living\carbon\human\species_types\podpeople.dm"
+#include "code\modules\mob\living\carbon\human\species_types\shadowpeople.dm"
+#include "code\modules\mob\living\carbon\human\species_types\skeletons.dm"
+#include "code\modules\mob\living\carbon\human\species_types\synths.dm"
+#include "code\modules\mob\living\carbon\human\species_types\vampire.dm"
+#include "code\modules\mob\living\carbon\human\species_types\zombies.dm"
+#include "code\modules\mob\living\carbon\monkey\combat.dm"
+#include "code\modules\mob\living\carbon\monkey\death.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\monkey.dm"
+#include "code\modules\mob\living\carbon\monkey\monkey_defense.dm"
+#include "code\modules\mob\living\carbon\monkey\punpun.dm"
+#include "code\modules\mob\living\carbon\monkey\update_icons.dm"
+#include "code\modules\mob\living\silicon\damage_procs.dm"
+#include "code\modules\mob\living\silicon\death.dm"
+#include "code\modules\mob\living\silicon\examine.dm"
+#include "code\modules\mob\living\silicon\laws.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\silicon_defense.dm"
+#include "code\modules\mob\living\silicon\silicon_movement.dm"
+#include "code\modules\mob\living\silicon\ai\ai.dm"
+#include "code\modules\mob\living\silicon\ai\ai_defense.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\multicam.dm"
+#include "code\modules\mob\living\silicon\ai\say.dm"
+#include "code\modules\mob\living\silicon\ai\vox_sounds.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\pai\death.dm"
+#include "code\modules\mob\living\silicon\pai\pai.dm"
+#include "code\modules\mob\living\silicon\pai\pai_defense.dm"
+#include "code\modules\mob\living\silicon\pai\pai_shell.dm"
+#include "code\modules\mob\living\silicon\pai\personality.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\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\robot.dm"
+#include "code\modules\mob\living\silicon\robot\robot_defense.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\say.dm"
+#include "code\modules\mob\living\simple_animal\animal_defense.dm"
+#include "code\modules\mob\living\simple_animal\astral.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\damage_procs.dm"
+#include "code\modules\mob\living\simple_animal\parrot.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\simple_animal_vr.dm"
+#include "code\modules\mob\living\simple_animal\status_procs.dm"
+#include "code\modules\mob\living\simple_animal\bot\bot.dm"
+#include "code\modules\mob\living\simple_animal\bot\cleanbot.dm"
+#include "code\modules\mob\living\simple_animal\bot\construction.dm"
+#include "code\modules\mob\living\simple_animal\bot\ed209bot.dm"
+#include "code\modules\mob\living\simple_animal\bot\firebot.dm"
+#include "code\modules\mob\living\simple_animal\bot\floorbot.dm"
+#include "code\modules\mob\living\simple_animal\bot\honkbot.dm"
+#include "code\modules\mob\living\simple_animal\bot\medbot.dm"
+#include "code\modules\mob\living\simple_animal\bot\mulebot.dm"
+#include "code\modules\mob\living\simple_animal\bot\secbot.dm"
+#include "code\modules\mob\living\simple_animal\bot\SuperBeepsky.dm"
+#include "code\modules\mob\living\simple_animal\friendly\butterfly.dm"
+#include "code\modules\mob\living\simple_animal\friendly\cat.dm"
+#include "code\modules\mob\living\simple_animal\friendly\cockroach.dm"
+#include "code\modules\mob\living\simple_animal\friendly\crab.dm"
+#include "code\modules\mob\living\simple_animal\friendly\dog.dm"
+#include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm"
+#include "code\modules\mob\living\simple_animal\friendly\fox.dm"
+#include "code\modules\mob\living\simple_animal\friendly\gondola.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\panda.dm"
+#include "code\modules\mob\living\simple_animal\friendly\penguin.dm"
+#include "code\modules\mob\living\simple_animal\friendly\pet.dm"
+#include "code\modules\mob\living\simple_animal\friendly\sloth.dm"
+#include "code\modules\mob\living\simple_animal\friendly\snake.dm"
+#include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm"
+#include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm"
+#include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm"
+#include "code\modules\mob\living\simple_animal\friendly\drone\interaction.dm"
+#include "code\modules\mob\living\simple_animal\friendly\drone\inventory.dm"
+#include "code\modules\mob\living\simple_animal\friendly\drone\say.dm"
+#include "code\modules\mob\living\simple_animal\friendly\drone\verbs.dm"
+#include "code\modules\mob\living\simple_animal\friendly\drone\visuals_icons.dm"
+#include "code\modules\mob\living\simple_animal\guardian\guardian.dm"
+#include "code\modules\mob\living\simple_animal\guardian\guardiannaming.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\assassin.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\charger.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\dextrous.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\explosive.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\fire.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\lightning.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\protector.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\ranged.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\standard.dm"
+#include "code\modules\mob\living\simple_animal\guardian\types\support.dm"
+#include "code\modules\mob\living\simple_animal\hostile\alien.dm"
+#include "code\modules\mob\living\simple_animal\hostile\bear.dm"
+#include "code\modules\mob\living\simple_animal\hostile\bees.dm"
+#include "code\modules\mob\living\simple_animal\hostile\carp.dm"
+#include "code\modules\mob\living\simple_animal\hostile\cat_butcher.dm"
+#include "code\modules\mob\living\simple_animal\hostile\eyeballs.dm"
+#include "code\modules\mob\living\simple_animal\hostile\faithless.dm"
+#include "code\modules\mob\living\simple_animal\hostile\floor_cluwne.dm"
+#include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm"
+#include "code\modules\mob\living\simple_animal\hostile\goose.dm"
+#include "code\modules\mob\living\simple_animal\hostile\headcrab.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\illusion.dm"
+#include "code\modules\mob\living\simple_animal\hostile\killertomato.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mecha_pilot.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mimic.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mushroom.dm"
+#include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm"
+#include "code\modules\mob\living\simple_animal\hostile\netherworld.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\sharks.dm"
+#include "code\modules\mob\living\simple_animal\hostile\skeleton.dm"
+#include "code\modules\mob\living\simple_animal\hostile\statue.dm"
+#include "code\modules\mob\living\simple_animal\hostile\stickman.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\venus_human_trap.dm"
+#include "code\modules\mob\living\simple_animal\hostile\wizard.dm"
+#include "code\modules\mob\living\simple_animal\hostile\wumborian_fugu.dm"
+#include "code\modules\mob\living\simple_animal\hostile\zombie.dm"
+#include "code\modules\mob\living\simple_animal\hostile\bosses\boss.dm"
+#include "code\modules\mob\living\simple_animal\hostile\bosses\paperwizard.dm"
+#include "code\modules\mob\living\simple_animal\hostile\gorilla\emotes.dm"
+#include "code\modules\mob\living\simple_animal\hostile\gorilla\gorilla.dm"
+#include "code\modules\mob\living\simple_animal\hostile\gorilla\visuals_icons.dm"
+#include "code\modules\mob\living\simple_animal\hostile\jungle\_jungle_mobs.dm"
+#include "code\modules\mob\living\simple_animal\hostile\jungle\leaper.dm"
+#include "code\modules\mob\living\simple_animal\hostile\jungle\mega_arachnid.dm"
+#include "code\modules\mob\living\simple_animal\hostile\jungle\mook.dm"
+#include "code\modules\mob\living\simple_animal\hostile\jungle\seedling.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\blood_drunk_miner.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\bubblegum.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\colossus.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\dragon_vore.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\drake.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\hierophant.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm"
+#include "code\modules\mob\living\simple_animal\hostile\megafauna\swarmer.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\basilisk.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\curse_blob.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goldgrub.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\goliath.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\gutlunch.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\hivelord.dm"
+#include "code\modules\mob\living\simple_animal\hostile\mining_mobs\mining_mobs.dm"
+#include "code\modules\mob\living\simple_animal\hostile\retaliate\bat.dm"
+#include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm"
+#include "code\modules\mob\living\simple_animal\hostile\retaliate\frog.dm"
+#include "code\modules\mob\living\simple_animal\hostile\retaliate\ghost.dm"
+#include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm"
+#include "code\modules\mob\living\simple_animal\hostile\retaliate\spaceman.dm"
+#include "code\modules\mob\living\simple_animal\slime\death.dm"
+#include "code\modules\mob\living\simple_animal\slime\emote.dm"
+#include "code\modules\mob\living\simple_animal\slime\life.dm"
+#include "code\modules\mob\living\simple_animal\slime\powers.dm"
+#include "code\modules\mob\living\simple_animal\slime\say.dm"
+#include "code\modules\mob\living\simple_animal\slime\slime.dm"
+#include "code\modules\mob\living\simple_animal\slime\subtypes.dm"
+#include "code\modules\modular_computers\laptop_vendor.dm"
+#include "code\modules\modular_computers\computers\item\computer.dm"
+#include "code\modules\modular_computers\computers\item\computer_components.dm"
+#include "code\modules\modular_computers\computers\item\computer_damage.dm"
+#include "code\modules\modular_computers\computers\item\computer_power.dm"
+#include "code\modules\modular_computers\computers\item\computer_ui.dm"
+#include "code\modules\modular_computers\computers\item\laptop.dm"
+#include "code\modules\modular_computers\computers\item\laptop_presets.dm"
+#include "code\modules\modular_computers\computers\item\processor.dm"
+#include "code\modules\modular_computers\computers\item\tablet.dm"
+#include "code\modules\modular_computers\computers\item\tablet_presets.dm"
+#include "code\modules\modular_computers\computers\machinery\console_presets.dm"
+#include "code\modules\modular_computers\computers\machinery\modular_computer.dm"
+#include "code\modules\modular_computers\computers\machinery\modular_console.dm"
+#include "code\modules\modular_computers\file_system\computer_file.dm"
+#include "code\modules\modular_computers\file_system\data.dm"
+#include "code\modules\modular_computers\file_system\program.dm"
+#include "code\modules\modular_computers\file_system\program_events.dm"
+#include "code\modules\modular_computers\file_system\programs\airestorer.dm"
+#include "code\modules\modular_computers\file_system\programs\alarm.dm"
+#include "code\modules\modular_computers\file_system\programs\card.dm"
+#include "code\modules\modular_computers\file_system\programs\configurator.dm"
+#include "code\modules\modular_computers\file_system\programs\file_browser.dm"
+#include "code\modules\modular_computers\file_system\programs\ntdownloader.dm"
+#include "code\modules\modular_computers\file_system\programs\ntmonitor.dm"
+#include "code\modules\modular_computers\file_system\programs\ntnrc_client.dm"
+#include "code\modules\modular_computers\file_system\programs\nttransfer.dm"
+#include "code\modules\modular_computers\file_system\programs\powermonitor.dm"
+#include "code\modules\modular_computers\file_system\programs\sm_monitor.dm"
+#include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm"
+#include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm"
+#include "code\modules\modular_computers\hardware\_hardware.dm"
+#include "code\modules\modular_computers\hardware\ai_slot.dm"
+#include "code\modules\modular_computers\hardware\battery_module.dm"
+#include "code\modules\modular_computers\hardware\card_slot.dm"
+#include "code\modules\modular_computers\hardware\CPU.dm"
+#include "code\modules\modular_computers\hardware\hard_drive.dm"
+#include "code\modules\modular_computers\hardware\network_card.dm"
+#include "code\modules\modular_computers\hardware\portable_disk.dm"
+#include "code\modules\modular_computers\hardware\printer.dm"
+#include "code\modules\modular_computers\hardware\recharger.dm"
+#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm"
+#include "code\modules\ninja\__ninjaDefines.dm"
+#include "code\modules\ninja\energy_katana.dm"
+#include "code\modules\ninja\ninja_event.dm"
+#include "code\modules\ninja\outfit.dm"
+#include "code\modules\ninja\suit\gloves.dm"
+#include "code\modules\ninja\suit\head.dm"
+#include "code\modules\ninja\suit\mask.dm"
+#include "code\modules\ninja\suit\ninjaDrainAct.dm"
+#include "code\modules\ninja\suit\shoes.dm"
+#include "code\modules\ninja\suit\suit.dm"
+#include "code\modules\ninja\suit\suit_attackby.dm"
+#include "code\modules\ninja\suit\suit_initialisation.dm"
+#include "code\modules\ninja\suit\suit_process.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\energy_net_nets.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\ninja_adrenaline.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\ninja_cost_check.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\ninja_empulse.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\ninja_net.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\ninja_smoke.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\ninja_stars.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\ninja_stealth.dm"
+#include "code\modules\ninja\suit\n_suit_verbs\ninja_sword_recall.dm"
+#include "code\modules\NTNet\netdata.dm"
+#include "code\modules\NTNet\network.dm"
+#include "code\modules\NTNet\relays.dm"
+#include "code\modules\NTNet\services\_service.dm"
+#include "code\modules\oracle_ui\assets.dm"
+#include "code\modules\oracle_ui\hookup_procs.dm"
+#include "code\modules\oracle_ui\oracle_ui.dm"
+#include "code\modules\oracle_ui\themed.dm"
+#include "code\modules\paperwork\clipboard.dm"
+#include "code\modules\paperwork\contract.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_cutter.dm"
+#include "code\modules\paperwork\paper_premade.dm"
+#include "code\modules\paperwork\paperbin.dm"
+#include "code\modules\paperwork\paperplane.dm"
+#include "code\modules\paperwork\pen.dm"
+#include "code\modules\paperwork\photocopier.dm"
+#include "code\modules\paperwork\stamps.dm"
+#include "code\modules\photography\_pictures.dm"
+#include "code\modules\photography\camera\camera.dm"
+#include "code\modules\photography\camera\camera_image_capturing.dm"
+#include "code\modules\photography\camera\film.dm"
+#include "code\modules\photography\camera\other.dm"
+#include "code\modules\photography\camera\silicon_camera.dm"
+#include "code\modules\photography\photos\album.dm"
+#include "code\modules\photography\photos\frame.dm"
+#include "code\modules\photography\photos\photo.dm"
+#include "code\modules\pool\pool_controller.dm"
+#include "code\modules\pool\pool_drain.dm"
+#include "code\modules\pool\pool_effects.dm"
+#include "code\modules\pool\pool_main.dm"
+#include "code\modules\pool\pool_noodles.dm"
+#include "code\modules\pool\pool_structures.dm"
+#include "code\modules\pool\pool_wires.dm"
+#include "code\modules\power\apc.dm"
+#include "code\modules\power\cable.dm"
+#include "code\modules\power\cell.dm"
+#include "code\modules\power\floodlight.dm"
+#include "code\modules\power\generator.dm"
+#include "code\modules\power\gravitygenerator.dm"
+#include "code\modules\power\lighting.dm"
+#include "code\modules\power\monitor.dm"
+#include "code\modules\power\multiz.dm"
+#include "code\modules\power\port_gen.dm"
+#include "code\modules\power\power.dm"
+#include "code\modules\power\powernet.dm"
+#include "code\modules\power\rtg.dm"
+#include "code\modules\power\smes.dm"
+#include "code\modules\power\solar.dm"
+#include "code\modules\power\terminal.dm"
+#include "code\modules\power\tracker.dm"
+#include "code\modules\power\turbine.dm"
+#include "code\modules\power\antimatter\containment_jar.dm"
+#include "code\modules\power\antimatter\control.dm"
+#include "code\modules\power\antimatter\shielding.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\narsie.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_control.dm"
+#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm"
+#include "code\modules\power\supermatter\supermatter.dm"
+#include "code\modules\power\tesla\coil.dm"
+#include "code\modules\power\tesla\energy_ball.dm"
+#include "code\modules\power\tesla\generator.dm"
+#include "code\modules\procedural_mapping\mapGenerator.dm"
+#include "code\modules\procedural_mapping\mapGeneratorModule.dm"
+#include "code\modules\procedural_mapping\mapGeneratorObj.dm"
+#include "code\modules\procedural_mapping\mapGeneratorReadme.dm"
+#include "code\modules\procedural_mapping\mapGeneratorModules\helpers.dm"
+#include "code\modules\procedural_mapping\mapGeneratorModules\nature.dm"
+#include "code\modules\procedural_mapping\mapGenerators\asteroid.dm"
+#include "code\modules\procedural_mapping\mapGenerators\cellular.dm"
+#include "code\modules\procedural_mapping\mapGenerators\cult.dm"
+#include "code\modules\procedural_mapping\mapGenerators\lava_river.dm"
+#include "code\modules\procedural_mapping\mapGenerators\lavaland.dm"
+#include "code\modules\procedural_mapping\mapGenerators\nature.dm"
+#include "code\modules\procedural_mapping\mapGenerators\repair.dm"
+#include "code\modules\procedural_mapping\mapGenerators\shuttle.dm"
+#include "code\modules\procedural_mapping\mapGenerators\syndicate.dm"
+#include "code\modules\projectiles\gun.dm"
+#include "code\modules\projectiles\pins.dm"
+#include "code\modules\projectiles\projectile.dm"
+#include "code\modules\projectiles\ammunition\_ammunition.dm"
+#include "code\modules\projectiles\ammunition\_firing.dm"
+#include "code\modules\projectiles\ammunition\ballistic\lmg.dm"
+#include "code\modules\projectiles\ammunition\ballistic\pistol.dm"
+#include "code\modules\projectiles\ammunition\ballistic\revolver.dm"
+#include "code\modules\projectiles\ammunition\ballistic\rifle.dm"
+#include "code\modules\projectiles\ammunition\ballistic\shotgun.dm"
+#include "code\modules\projectiles\ammunition\ballistic\smg.dm"
+#include "code\modules\projectiles\ammunition\ballistic\sniper.dm"
+#include "code\modules\projectiles\ammunition\caseless\_caseless.dm"
+#include "code\modules\projectiles\ammunition\caseless\foam.dm"
+#include "code\modules\projectiles\ammunition\caseless\misc.dm"
+#include "code\modules\projectiles\ammunition\caseless\rocket.dm"
+#include "code\modules\projectiles\ammunition\energy\_energy.dm"
+#include "code\modules\projectiles\ammunition\energy\ebow.dm"
+#include "code\modules\projectiles\ammunition\energy\gravity.dm"
+#include "code\modules\projectiles\ammunition\energy\laser.dm"
+#include "code\modules\projectiles\ammunition\energy\lmg.dm"
+#include "code\modules\projectiles\ammunition\energy\plasma.dm"
+#include "code\modules\projectiles\ammunition\energy\plasma_cit.dm"
+#include "code\modules\projectiles\ammunition\energy\portal.dm"
+#include "code\modules\projectiles\ammunition\energy\special.dm"
+#include "code\modules\projectiles\ammunition\energy\stun.dm"
+#include "code\modules\projectiles\ammunition\special\magic.dm"
+#include "code\modules\projectiles\ammunition\special\syringe.dm"
+#include "code\modules\projectiles\boxes_magazines\_box_magazine.dm"
+#include "code\modules\projectiles\boxes_magazines\ammo_boxes.dm"
+#include "code\modules\projectiles\boxes_magazines\external\grenade.dm"
+#include "code\modules\projectiles\boxes_magazines\external\lmg.dm"
+#include "code\modules\projectiles\boxes_magazines\external\pistol.dm"
+#include "code\modules\projectiles\boxes_magazines\external\rechargable.dm"
+#include "code\modules\projectiles\boxes_magazines\external\rifle.dm"
+#include "code\modules\projectiles\boxes_magazines\external\shotgun.dm"
+#include "code\modules\projectiles\boxes_magazines\external\smg.dm"
+#include "code\modules\projectiles\boxes_magazines\external\sniper.dm"
+#include "code\modules\projectiles\boxes_magazines\external\toy.dm"
+#include "code\modules\projectiles\boxes_magazines\internal\_cylinder.dm"
+#include "code\modules\projectiles\boxes_magazines\internal\_internal.dm"
+#include "code\modules\projectiles\boxes_magazines\internal\grenade.dm"
+#include "code\modules\projectiles\boxes_magazines\internal\misc.dm"
+#include "code\modules\projectiles\boxes_magazines\internal\revolver.dm"
+#include "code\modules\projectiles\boxes_magazines\internal\rifle.dm"
+#include "code\modules\projectiles\boxes_magazines\internal\shotgun.dm"
+#include "code\modules\projectiles\boxes_magazines\internal\toy.dm"
+#include "code\modules\projectiles\guns\ballistic.dm"
+#include "code\modules\projectiles\guns\energy.dm"
+#include "code\modules\projectiles\guns\magic.dm"
+#include "code\modules\projectiles\guns\ballistic\automatic.dm"
+#include "code\modules\projectiles\guns\ballistic\laser_gatling.dm"
+#include "code\modules\projectiles\guns\ballistic\launchers.dm"
+#include "code\modules\projectiles\guns\ballistic\pistol.dm"
+#include "code\modules\projectiles\guns\ballistic\revolver.dm"
+#include "code\modules\projectiles\guns\ballistic\shotgun.dm"
+#include "code\modules\projectiles\guns\ballistic\toy.dm"
+#include "code\modules\projectiles\guns\energy\dueling.dm"
+#include "code\modules\projectiles\guns\energy\energy_gun.dm"
+#include "code\modules\projectiles\guns\energy\kinetic_accelerator.dm"
+#include "code\modules\projectiles\guns\energy\laser.dm"
+#include "code\modules\projectiles\guns\energy\megabuster.dm"
+#include "code\modules\projectiles\guns\energy\mounted.dm"
+#include "code\modules\projectiles\guns\energy\plasma_cit.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\magic\staff.dm"
+#include "code\modules\projectiles\guns\magic\wand.dm"
+#include "code\modules\projectiles\guns\misc\beam_rifle.dm"
+#include "code\modules\projectiles\guns\misc\blastcannon.dm"
+#include "code\modules\projectiles\guns\misc\chem_gun.dm"
+#include "code\modules\projectiles\guns\misc\grenade_launcher.dm"
+#include "code\modules\projectiles\guns\misc\medbeam.dm"
+#include "code\modules\projectiles\guns\misc\syringe_gun.dm"
+#include "code\modules\projectiles\projectile\beams.dm"
+#include "code\modules\projectiles\projectile\bullets.dm"
+#include "code\modules\projectiles\projectile\magic.dm"
+#include "code\modules\projectiles\projectile\megabuster.dm"
+#include "code\modules\projectiles\projectile\plasma.dm"
+#include "code\modules\projectiles\projectile\bullets\_incendiary.dm"
+#include "code\modules\projectiles\projectile\bullets\dart_syringe.dm"
+#include "code\modules\projectiles\projectile\bullets\dnainjector.dm"
+#include "code\modules\projectiles\projectile\bullets\grenade.dm"
+#include "code\modules\projectiles\projectile\bullets\lmg.dm"
+#include "code\modules\projectiles\projectile\bullets\pistol.dm"
+#include "code\modules\projectiles\projectile\bullets\revolver.dm"
+#include "code\modules\projectiles\projectile\bullets\rifle.dm"
+#include "code\modules\projectiles\projectile\bullets\shotgun.dm"
+#include "code\modules\projectiles\projectile\bullets\smg.dm"
+#include "code\modules\projectiles\projectile\bullets\sniper.dm"
+#include "code\modules\projectiles\projectile\bullets\special.dm"
+#include "code\modules\projectiles\projectile\energy\_energy.dm"
+#include "code\modules\projectiles\projectile\energy\ebow.dm"
+#include "code\modules\projectiles\projectile\energy\misc.dm"
+#include "code\modules\projectiles\projectile\energy\net_snare.dm"
+#include "code\modules\projectiles\projectile\energy\nuclear_particle.dm"
+#include "code\modules\projectiles\projectile\energy\stun.dm"
+#include "code\modules\projectiles\projectile\energy\tesla.dm"
+#include "code\modules\projectiles\projectile\magic\spellcard.dm"
+#include "code\modules\projectiles\projectile\reusable\_reusable.dm"
+#include "code\modules\projectiles\projectile\reusable\foam_dart.dm"
+#include "code\modules\projectiles\projectile\reusable\magspear.dm"
+#include "code\modules\projectiles\projectile\special\curse.dm"
+#include "code\modules\projectiles\projectile\special\floral.dm"
+#include "code\modules\projectiles\projectile\special\gravity.dm"
+#include "code\modules\projectiles\projectile\special\hallucination.dm"
+#include "code\modules\projectiles\projectile\special\ion.dm"
+#include "code\modules\projectiles\projectile\special\meteor.dm"
+#include "code\modules\projectiles\projectile\special\mindflayer.dm"
+#include "code\modules\projectiles\projectile\special\neurotoxin.dm"
+#include "code\modules\projectiles\projectile\special\plasma.dm"
+#include "code\modules\projectiles\projectile\special\rocket.dm"
+#include "code\modules\projectiles\projectile\special\temperature.dm"
+#include "code\modules\projectiles\projectile\special\wormhole.dm"
+#include "code\modules\reagents\chem_splash.dm"
+#include "code\modules\reagents\reagent_containers.dm"
+#include "code\modules\reagents\reagent_dispenser.dm"
+#include "code\modules\reagents\chemistry\colors.dm"
+#include "code\modules\reagents\chemistry\holder.dm"
+#include "code\modules\reagents\chemistry\reagents.dm"
+#include "code\modules\reagents\chemistry\recipes.dm"
+#include "code\modules\reagents\chemistry\machinery\chem_dispenser.dm"
+#include "code\modules\reagents\chemistry\machinery\chem_heater.dm"
+#include "code\modules\reagents\chemistry\machinery\chem_master.dm"
+#include "code\modules\reagents\chemistry\machinery\chem_synthesizer.dm"
+#include "code\modules\reagents\chemistry\machinery\pandemic.dm"
+#include "code\modules\reagents\chemistry\machinery\reagentgrinder.dm"
+#include "code\modules\reagents\chemistry\machinery\smoke_machine.dm"
+#include "code\modules\reagents\chemistry\reagents\alcohol_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\blob_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\drink_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\drug_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\food_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\impure_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\medicine_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\other_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\pyrotechnic_reagents.dm"
+#include "code\modules\reagents\chemistry\reagents\toxin_reagents.dm"
+#include "code\modules\reagents\chemistry\recipes\drugs.dm"
+#include "code\modules\reagents\chemistry\recipes\medicine.dm"
+#include "code\modules\reagents\chemistry\recipes\others.dm"
+#include "code\modules\reagents\chemistry\recipes\pyrotechnics.dm"
+#include "code\modules\reagents\chemistry\recipes\slime_extracts.dm"
+#include "code\modules\reagents\chemistry\recipes\special.dm"
+#include "code\modules\reagents\chemistry\recipes\toxins.dm"
+#include "code\modules\reagents\reagent_containers\blood_pack.dm"
+#include "code\modules\reagents\reagent_containers\borghydro.dm"
+#include "code\modules\reagents\reagent_containers\bottle.dm"
+#include "code\modules\reagents\reagent_containers\chem_pack.dm"
+#include "code\modules\reagents\reagent_containers\Chemical_tongue.dm"
+#include "code\modules\reagents\reagent_containers\dropper.dm"
+#include "code\modules\reagents\reagent_containers\glass.dm"
+#include "code\modules\reagents\reagent_containers\hypospray.dm"
+#include "code\modules\reagents\reagent_containers\hypovial.dm"
+#include "code\modules\reagents\reagent_containers\medspray.dm"
+#include "code\modules\reagents\reagent_containers\patch.dm"
+#include "code\modules\reagents\reagent_containers\pill.dm"
+#include "code\modules\reagents\reagent_containers\rags.dm"
+#include "code\modules\reagents\reagent_containers\sleeper_buffer.dm"
+#include "code\modules\reagents\reagent_containers\spray.dm"
+#include "code\modules\reagents\reagent_containers\syringes.dm"
+#include "code\modules\recycling\conveyor2.dm"
+#include "code\modules\recycling\sortingmachinery.dm"
+#include "code\modules\recycling\disposal\bin.dm"
+#include "code\modules\recycling\disposal\construction.dm"
+#include "code\modules\recycling\disposal\eject.dm"
+#include "code\modules\recycling\disposal\holder.dm"
+#include "code\modules\recycling\disposal\multiz.dm"
+#include "code\modules\recycling\disposal\outlet.dm"
+#include "code\modules\recycling\disposal\pipe.dm"
+#include "code\modules\recycling\disposal\pipe_sorting.dm"
+#include "code\modules\research\designs.dm"
+#include "code\modules\research\destructive_analyzer.dm"
+#include "code\modules\research\experimentor.dm"
+#include "code\modules\research\rdconsole.dm"
+#include "code\modules\research\rdmachines.dm"
+#include "code\modules\research\research_disk.dm"
+#include "code\modules\research\server.dm"
+#include "code\modules\research\stock_parts.dm"
+#include "code\modules\research\designs\AI_module_designs.dm"
+#include "code\modules\research\designs\autobotter_designs.dm"
+#include "code\modules\research\designs\biogenerator_designs.dm"
+#include "code\modules\research\designs\bluespace_designs.dm"
+#include "code\modules\research\designs\computer_part_designs.dm"
+#include "code\modules\research\designs\electronics_designs.dm"
+#include "code\modules\research\designs\equipment_designs.dm"
+#include "code\modules\research\designs\limbgrower_designs.dm"
+#include "code\modules\research\designs\mecha_designs.dm"
+#include "code\modules\research\designs\mechfabricator_designs.dm"
+#include "code\modules\research\designs\medical_designs.dm"
+#include "code\modules\research\designs\mining_designs.dm"
+#include "code\modules\research\designs\misc_designs.dm"
+#include "code\modules\research\designs\nanite_designs.dm"
+#include "code\modules\research\designs\power_designs.dm"
+#include "code\modules\research\designs\smelting_designs.dm"
+#include "code\modules\research\designs\stock_parts_designs.dm"
+#include "code\modules\research\designs\telecomms_designs.dm"
+#include "code\modules\research\designs\weapon_designs.dm"
+#include "code\modules\research\designs\autolathe_desings\autolathe_designs_construction.dm"
+#include "code\modules\research\designs\autolathe_desings\autolathe_designs_electronics.dm"
+#include "code\modules\research\designs\autolathe_desings\autolathe_designs_medical_and_dinnerware.dm"
+#include "code\modules\research\designs\autolathe_desings\autolathe_designs_sec_and_hacked.dm"
+#include "code\modules\research\designs\autolathe_desings\autolathe_designs_tcomms_and_misc.dm"
+#include "code\modules\research\designs\autolathe_desings\autolathe_designs_tools.dm"
+#include "code\modules\research\designs\comp_board_designs\comp_board_designs_all_misc.dm"
+#include "code\modules\research\designs\comp_board_designs\comp_board_designs_cargo .dm"
+#include "code\modules\research\designs\comp_board_designs\comp_board_designs_engi.dm"
+#include "code\modules\research\designs\comp_board_designs\comp_board_designs_medical.dm"
+#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sci.dm"
+#include "code\modules\research\designs\comp_board_designs\comp_board_designs_sec.dm"
+#include "code\modules\research\designs\machine_desings\machine_designs_all_misc.dm"
+#include "code\modules\research\designs\machine_desings\machine_designs_cargo.dm"
+#include "code\modules\research\designs\machine_desings\machine_designs_engi.dm"
+#include "code\modules\research\designs\machine_desings\machine_designs_medical.dm"
+#include "code\modules\research\designs\machine_desings\machine_designs_sci.dm"
+#include "code\modules\research\designs\machine_desings\machine_designs_service.dm"
+#include "code\modules\research\machinery\_production.dm"
+#include "code\modules\research\machinery\circuit_imprinter.dm"
+#include "code\modules\research\machinery\departmental_circuit_imprinter.dm"
+#include "code\modules\research\machinery\departmental_protolathe.dm"
+#include "code\modules\research\machinery\departmental_techfab.dm"
+#include "code\modules\research\machinery\protolathe.dm"
+#include "code\modules\research\machinery\techfab.dm"
+#include "code\modules\research\nanites\nanite_chamber.dm"
+#include "code\modules\research\nanites\nanite_chamber_computer.dm"
+#include "code\modules\research\nanites\nanite_cloud_controller.dm"
+#include "code\modules\research\nanites\nanite_hijacker.dm"
+#include "code\modules\research\nanites\nanite_misc_items.dm"
+#include "code\modules\research\nanites\nanite_program_hub.dm"
+#include "code\modules\research\nanites\nanite_programmer.dm"
+#include "code\modules\research\nanites\nanite_programs.dm"
+#include "code\modules\research\nanites\nanite_remote.dm"
+#include "code\modules\research\nanites\program_disks.dm"
+#include "code\modules\research\nanites\public_chamber.dm"
+#include "code\modules\research\nanites\nanite_programs\buffing.dm"
+#include "code\modules\research\nanites\nanite_programs\healing.dm"
+#include "code\modules\research\nanites\nanite_programs\rogue.dm"
+#include "code\modules\research\nanites\nanite_programs\sensor.dm"
+#include "code\modules\research\nanites\nanite_programs\suppression.dm"
+#include "code\modules\research\nanites\nanite_programs\utility.dm"
+#include "code\modules\research\nanites\nanite_programs\weapon.dm"
+#include "code\modules\research\techweb\__techweb_helpers.dm"
+#include "code\modules\research\techweb\_techweb.dm"
+#include "code\modules\research\techweb\_techweb_node.dm"
+#include "code\modules\research\techweb\all_nodes.dm"
+#include "code\modules\research\xenoarch\artifact.dm"
+#include "code\modules\research\xenoarch\artifact_list.dm"
+#include "code\modules\research\xenoarch\strange_rock.dm"
+#include "code\modules\research\xenoarch\tools.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\amauri.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\gelthi.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\jurlmah.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\nofruit.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\shand.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\surik.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\telriis.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\thaadra.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\vale.dm"
+#include "code\modules\research\xenoarch\xenobotany\grown\vaporsac.dm"
+#include "code\modules\research\xenobiology\xenobio_camera.dm"
+#include "code\modules\research\xenobiology\xenobiology.dm"
+#include "code\modules\research\xenobiology\crossbreeding\__corecross.dm"
+#include "code\modules\research\xenobiology\crossbreeding\_clothing.dm"
+#include "code\modules\research\xenobiology\crossbreeding\_misc.dm"
+#include "code\modules\research\xenobiology\crossbreeding\_mobs.dm"
+#include "code\modules\research\xenobiology\crossbreeding\_status_effects.dm"
+#include "code\modules\research\xenobiology\crossbreeding\_weapons.dm"
+#include "code\modules\research\xenobiology\crossbreeding\burning.dm"
+#include "code\modules\research\xenobiology\crossbreeding\charged.dm"
+#include "code\modules\research\xenobiology\crossbreeding\chilling.dm"
+#include "code\modules\research\xenobiology\crossbreeding\consuming.dm"
+#include "code\modules\research\xenobiology\crossbreeding\industrial.dm"
+#include "code\modules\research\xenobiology\crossbreeding\prismatic.dm"
+#include "code\modules\research\xenobiology\crossbreeding\recurring.dm"
+#include "code\modules\research\xenobiology\crossbreeding\regenerative.dm"
+#include "code\modules\research\xenobiology\crossbreeding\reproductive.dm"
+#include "code\modules\research\xenobiology\crossbreeding\selfsustaining.dm"
+#include "code\modules\research\xenobiology\crossbreeding\stabilized.dm"
+#include "code\modules\ruins\lavaland_ruin_code.dm"
+#include "code\modules\ruins\lavalandruin_code\biodome_clown_planet.dm"
+#include "code\modules\ruins\lavalandruin_code\pizzaparty.dm"
+#include "code\modules\ruins\lavalandruin_code\puzzle.dm"
+#include "code\modules\ruins\lavalandruin_code\sloth.dm"
+#include "code\modules\ruins\lavalandruin_code\surface.dm"
+#include "code\modules\ruins\lavalandruin_code\syndicate_base.dm"
+#include "code\modules\ruins\objects_and_mobs\ash_walker_den.dm"
+#include "code\modules\ruins\objects_and_mobs\necropolis_gate.dm"
+#include "code\modules\ruins\objects_and_mobs\sin_ruins.dm"
+#include "code\modules\ruins\spaceruin_code\asteroid4.dm"
+#include "code\modules\ruins\spaceruin_code\bigderelict1.dm"
+#include "code\modules\ruins\spaceruin_code\caravanambush.dm"
+#include "code\modules\ruins\spaceruin_code\cloning_lab.dm"
+#include "code\modules\ruins\spaceruin_code\crashedclownship.dm"
+#include "code\modules\ruins\spaceruin_code\crashedship.dm"
+#include "code\modules\ruins\spaceruin_code\deepstorage.dm"
+#include "code\modules\ruins\spaceruin_code\DJstation.dm"
+#include "code\modules\ruins\spaceruin_code\hilbertshotel.dm"
+#include "code\modules\ruins\spaceruin_code\listeningstation.dm"
+#include "code\modules\ruins\spaceruin_code\miracle.dm"
+#include "code\modules\ruins\spaceruin_code\oldstation.dm"
+#include "code\modules\ruins\spaceruin_code\originalcontent.dm"
+#include "code\modules\ruins\spaceruin_code\spacehotel.dm"
+#include "code\modules\ruins\spaceruin_code\TheDerelict.dm"
+#include "code\modules\ruins\spaceruin_code\whiteshipruin_box.dm"
+#include "code\modules\security_levels\keycard_authentication.dm"
+#include "code\modules\security_levels\security_levels.dm"
+#include "code\modules\shuttle\arrivals.dm"
+#include "code\modules\shuttle\assault_pod.dm"
+#include "code\modules\shuttle\computer.dm"
+#include "code\modules\shuttle\docking.dm"
+#include "code\modules\shuttle\elevator.dm"
+#include "code\modules\shuttle\emergency.dm"
+#include "code\modules\shuttle\ferry.dm"
+#include "code\modules\shuttle\manipulator.dm"
+#include "code\modules\shuttle\monastery.dm"
+#include "code\modules\shuttle\navigation_computer.dm"
+#include "code\modules\shuttle\on_move.dm"
+#include "code\modules\shuttle\ripple.dm"
+#include "code\modules\shuttle\shuttle.dm"
+#include "code\modules\shuttle\shuttle_rotate.dm"
+#include "code\modules\shuttle\special.dm"
+#include "code\modules\shuttle\supply.dm"
+#include "code\modules\shuttle\syndicate.dm"
+#include "code\modules\shuttle\white_ship.dm"
+#include "code\modules\spells\spell.dm"
+#include "code\modules\spells\spell_types\adminbussed.dm"
+#include "code\modules\spells\spell_types\aimed.dm"
+#include "code\modules\spells\spell_types\area_teleport.dm"
+#include "code\modules\spells\spell_types\barnyard.dm"
+#include "code\modules\spells\spell_types\bloodcrawl.dm"
+#include "code\modules\spells\spell_types\charge.dm"
+#include "code\modules\spells\spell_types\conjure.dm"
+#include "code\modules\spells\spell_types\construct_spells.dm"
+#include "code\modules\spells\spell_types\devil.dm"
+#include "code\modules\spells\spell_types\devil_boons.dm"
+#include "code\modules\spells\spell_types\dumbfire.dm"
+#include "code\modules\spells\spell_types\emplosion.dm"
+#include "code\modules\spells\spell_types\ethereal_jaunt.dm"
+#include "code\modules\spells\spell_types\explosion.dm"
+#include "code\modules\spells\spell_types\forcewall.dm"
+#include "code\modules\spells\spell_types\genetic.dm"
+#include "code\modules\spells\spell_types\godhand.dm"
+#include "code\modules\spells\spell_types\infinite_guns.dm"
+#include "code\modules\spells\spell_types\inflict_handler.dm"
+#include "code\modules\spells\spell_types\knock.dm"
+#include "code\modules\spells\spell_types\lichdom.dm"
+#include "code\modules\spells\spell_types\lightning.dm"
+#include "code\modules\spells\spell_types\mime.dm"
+#include "code\modules\spells\spell_types\mind_transfer.dm"
+#include "code\modules\spells\spell_types\projectile.dm"
+#include "code\modules\spells\spell_types\rightandwrong.dm"
+#include "code\modules\spells\spell_types\rod_form.dm"
+#include "code\modules\spells\spell_types\santa.dm"
+#include "code\modules\spells\spell_types\shadow_walk.dm"
+#include "code\modules\spells\spell_types\shapeshift.dm"
+#include "code\modules\spells\spell_types\spacetime_distortion.dm"
+#include "code\modules\spells\spell_types\summonitem.dm"
+#include "code\modules\spells\spell_types\taeclowndo.dm"
+#include "code\modules\spells\spell_types\telepathy.dm"
+#include "code\modules\spells\spell_types\the_traps.dm"
+#include "code\modules\spells\spell_types\touch_attacks.dm"
+#include "code\modules\spells\spell_types\trigger.dm"
+#include "code\modules\spells\spell_types\turf_teleport.dm"
+#include "code\modules\spells\spell_types\voice_of_god.dm"
+#include "code\modules\spells\spell_types\wizard.dm"
+#include "code\modules\station_goals\bsa.dm"
+#include "code\modules\station_goals\dna_vault.dm"
+#include "code\modules\station_goals\shield.dm"
+#include "code\modules\station_goals\station_goal.dm"
+#include "code\modules\surgery\amputation.dm"
+#include "code\modules\surgery\brain_surgery.dm"
+#include "code\modules\surgery\breast_augmentation.dm"
+#include "code\modules\surgery\cavity_implant.dm"
+#include "code\modules\surgery\core_removal.dm"
+#include "code\modules\surgery\coronary_bypass.dm"
+#include "code\modules\surgery\dental_implant.dm"
+#include "code\modules\surgery\embalming.dm"
+#include "code\modules\surgery\experimental_dissection.dm"
+#include "code\modules\surgery\eye_surgery.dm"
+#include "code\modules\surgery\graft_synthtissue.dm"
+#include "code\modules\surgery\helpers.dm"
+#include "code\modules\surgery\implant_removal.dm"
+#include "code\modules\surgery\limb_augmentation.dm"
+#include "code\modules\surgery\lipoplasty.dm"
+#include "code\modules\surgery\lobectomy.dm"
+#include "code\modules\surgery\mechanic_steps.dm"
+#include "code\modules\surgery\nutcracker.dm"
+#include "code\modules\surgery\organ_manipulation.dm"
+#include "code\modules\surgery\organic_steps.dm"
+#include "code\modules\surgery\penis_augmentation.dm"
+#include "code\modules\surgery\plastic_surgery.dm"
+#include "code\modules\surgery\prosthetic_replacement.dm"
+#include "code\modules\surgery\remove_embedded_object.dm"
+#include "code\modules\surgery\surgery.dm"
+#include "code\modules\surgery\surgery_step.dm"
+#include "code\modules\surgery\tools.dm"
+#include "code\modules\surgery\advanced\brainwashing.dm"
+#include "code\modules\surgery\advanced\lobotomy.dm"
+#include "code\modules\surgery\advanced\necrotic_revival.dm"
+#include "code\modules\surgery\advanced\pacification.dm"
+#include "code\modules\surgery\advanced\reconstruction.dm"
+#include "code\modules\surgery\advanced\revival.dm"
+#include "code\modules\surgery\advanced\toxichealing.dm"
+#include "code\modules\surgery\advanced\viral_bonding.dm"
+#include "code\modules\surgery\advanced\bioware\bioware.dm"
+#include "code\modules\surgery\advanced\bioware\bioware_surgery.dm"
+#include "code\modules\surgery\advanced\bioware\ligament_hook.dm"
+#include "code\modules\surgery\advanced\bioware\ligament_reinforcement.dm"
+#include "code\modules\surgery\advanced\bioware\muscled_veins.dm"
+#include "code\modules\surgery\advanced\bioware\nerve_grounding.dm"
+#include "code\modules\surgery\advanced\bioware\nerve_splicing.dm"
+#include "code\modules\surgery\advanced\bioware\vein_threading.dm"
+#include "code\modules\surgery\bodyparts\bodyparts.dm"
+#include "code\modules\surgery\bodyparts\broken.dm"
+#include "code\modules\surgery\bodyparts\dismemberment.dm"
+#include "code\modules\surgery\bodyparts\head.dm"
+#include "code\modules\surgery\bodyparts\helpers.dm"
+#include "code\modules\surgery\bodyparts\robot_bodyparts.dm"
+#include "code\modules\surgery\organs\appendix.dm"
+#include "code\modules\surgery\organs\augments_arms.dm"
+#include "code\modules\surgery\organs\augments_chest.dm"
+#include "code\modules\surgery\organs\augments_eyes.dm"
+#include "code\modules\surgery\organs\augments_internal.dm"
+#include "code\modules\surgery\organs\autosurgeon.dm"
+#include "code\modules\surgery\organs\ears.dm"
+#include "code\modules\surgery\organs\eyes.dm"
+#include "code\modules\surgery\organs\heart.dm"
+#include "code\modules\surgery\organs\helpers.dm"
+#include "code\modules\surgery\organs\liver.dm"
+#include "code\modules\surgery\organs\lungs.dm"
+#include "code\modules\surgery\organs\organ_internal.dm"
+#include "code\modules\surgery\organs\stomach.dm"
+#include "code\modules\surgery\organs\tails.dm"
+#include "code\modules\surgery\organs\tongue.dm"
+#include "code\modules\surgery\organs\vocal_cords.dm"
+#include "code\modules\tgs\includes.dm"
+#include "code\modules\tgui\external.dm"
+#include "code\modules\tgui\states.dm"
+#include "code\modules\tgui\subsystem.dm"
+#include "code\modules\tgui\tgui.dm"
+#include "code\modules\tgui\states\admin.dm"
+#include "code\modules\tgui\states\always.dm"
+#include "code\modules\tgui\states\conscious.dm"
+#include "code\modules\tgui\states\contained.dm"
+#include "code\modules\tgui\states\deep_inventory.dm"
+#include "code\modules\tgui\states\default.dm"
+#include "code\modules\tgui\states\hands.dm"
+#include "code\modules\tgui\states\human_adjacent.dm"
+#include "code\modules\tgui\states\inventory.dm"
+#include "code\modules\tgui\states\language_menu.dm"
+#include "code\modules\tgui\states\not_incapacitated.dm"
+#include "code\modules\tgui\states\notcontained.dm"
+#include "code\modules\tgui\states\observer.dm"
+#include "code\modules\tgui\states\physical.dm"
+#include "code\modules\tgui\states\self.dm"
+#include "code\modules\tgui\states\zlevel.dm"
+#include "code\modules\tooltip\tooltip.dm"
+#include "code\modules\unit_tests\_unit_tests.dm"
+#include "code\modules\uplink\uplink_devices.dm"
+#include "code\modules\uplink\uplink_items.dm"
+#include "code\modules\uplink\uplink_purchase_log.dm"
+#include "code\modules\vehicles\_vehicle.dm"
+#include "code\modules\vehicles\atv.dm"
+#include "code\modules\vehicles\bicycle.dm"
+#include "code\modules\vehicles\lavaboat.dm"
+#include "code\modules\vehicles\motorized_wheelchair.dm"
+#include "code\modules\vehicles\pimpin_ride.dm"
+#include "code\modules\vehicles\ridden.dm"
+#include "code\modules\vehicles\scooter.dm"
+#include "code\modules\vehicles\sealed.dm"
+#include "code\modules\vehicles\secway.dm"
+#include "code\modules\vehicles\speedbike.dm"
+#include "code\modules\vehicles\vehicle_actions.dm"
+#include "code\modules\vehicles\vehicle_key.dm"
+#include "code\modules\vehicles\wheelchair.dm"
+#include "code\modules\vehicles\cars\car.dm"
+#include "code\modules\vehicles\cars\clowncar.dm"
+#include "code\modules\vending\_vending.dm"
+#include "code\modules\vending\assist.dm"
+#include "code\modules\vending\autodrobe.dm"
+#include "code\modules\vending\boozeomat.dm"
+#include "code\modules\vending\cartridge.dm"
+#include "code\modules\vending\cigarette.dm"
+#include "code\modules\vending\clothesmate.dm"
+#include "code\modules\vending\coffee.dm"
+#include "code\modules\vending\cola.dm"
+#include "code\modules\vending\drinnerware.dm"
+#include "code\modules\vending\engineering.dm"
+#include "code\modules\vending\engivend.dm"
+#include "code\modules\vending\games.dm"
+#include "code\modules\vending\liberation.dm"
+#include "code\modules\vending\liberation_toy.dm"
+#include "code\modules\vending\magivend.dm"
+#include "code\modules\vending\medical.dm"
+#include "code\modules\vending\medical_wall.dm"
+#include "code\modules\vending\megaseed.dm"
+#include "code\modules\vending\nutrimax.dm"
+#include "code\modules\vending\plasmaresearch.dm"
+#include "code\modules\vending\robotics.dm"
+#include "code\modules\vending\security.dm"
+#include "code\modules\vending\snack.dm"
+#include "code\modules\vending\sovietsoda.dm"
+#include "code\modules\vending\sustenance.dm"
+#include "code\modules\vending\toys.dm"
+#include "code\modules\vending\wardrobes.dm"
+#include "code\modules\vending\youtool.dm"
+#include "code\modules\VR\vr_human.dm"
+#include "code\modules\VR\vr_sleeper.dm"
+#include "code\modules\zombie\items.dm"
+#include "code\modules\zombie\organs.dm"
+#include "hyperstation\code\datums\elements\holder_micro.dm"
+#include "hyperstation\code\datums\ruins\lavaland.dm"
+#include "hyperstation\code\datums\traits\good.dm"
+#include "hyperstation\code\datums\traits\neutral.dm"
+#include "hyperstation\code\game\objects\structures\ghost_role_spawners.dm"
+#include "hyperstation\code\gamemode\traitor_lewd.dm"
+#include "hyperstation\code\gamemode\traitor_thief.dm"
+#include "hyperstation\code\gamemode\werewolf\werewolf.dm"
+#include "hyperstation\code\mobs\carrion.dm"
+#include "hyperstation\code\mobs\hugbot.dm"
+#include "hyperstation\code\mobs\mimic.dm"
+#include "hyperstation\code\mobs\werewolf.dm"
+#include "hyperstation\code\modules\traits.dm"
+#include "hyperstation\code\modules\antagonists\werewolf\werewolf.dm"
+#include "hyperstation\code\modules\client\loadout\glasses.dm"
+#include "hyperstation\code\modules\clothing\head.dm"
+#include "hyperstation\code\modules\clothing\glasses\polychromic_glasses.dm"
+#include "hyperstation\code\modules\clothing\spacesuits\hardsuit.dm"
+#include "hyperstation\code\modules\clothing\suits\misc.dm"
+#include "hyperstation\code\modules\crafting\bounties.dm"
+#include "hyperstation\code\modules\crafting\recipes.dm"
+#include "hyperstation\code\modules\integrated_electronics\input.dm"
+#include "hyperstation\code\modules\mob\mob_helpers.dm"
+#include "hyperstation\code\modules\patreon\patreon.dm"
+#include "hyperstation\code\modules\resize\resizing.dm"
+#include "hyperstation\code\modules\resize\sizechems.dm"
+#include "hyperstation\code\modules\resize\sizegun.dm"
+#include "hyperstation\code\obj\bluespace sewing kit.dm"
+#include "hyperstation\code\obj\condom.dm"
+#include "hyperstation\code\obj\decal.dm"
+#include "hyperstation\code\obj\fluff.dm"
+#include "hyperstation\code\obj\kinkyclothes.dm"
+#include "hyperstation\code\obj\leash.dm"
+#include "hyperstation\code\obj\lunaritems.dm"
+#include "hyperstation\code\obj\milking machine.dm"
+#include "hyperstation\code\obj\plushes.dm"
+#include "hyperstation\code\obj\pregnancytester.dm"
+#include "hyperstation\code\obj\rewards.dm"
+#include "hyperstation\code\obj\rope.dm"
+#include "hyperstation\code\obj\sounding.dm"
+#include "interface\interface.dm"
+#include "interface\menu.dm"
+#include "interface\stylesheet.dm"
+#include "interface\skin.dmf"
+#include "modular_citadel\code\init.dm"
+#include "modular_citadel\code\__HELPERS\list2list.dm"
+#include "modular_citadel\code\__HELPERS\lists.dm"
+#include "modular_citadel\code\__HELPERS\mobs.dm"
+#include "modular_citadel\code\_globalvars\lists\mobs.dm"
+#include "modular_citadel\code\_onclick\click.dm"
+#include "modular_citadel\code\_onclick\item_attack.dm"
+#include "modular_citadel\code\_onclick\other_mobs.dm"
+#include "modular_citadel\code\_onclick\hud\screen_objects.dm"
+#include "modular_citadel\code\_onclick\hud\sprint.dm"
+#include "modular_citadel\code\_onclick\hud\stamina.dm"
+#include "modular_citadel\code\controllers\configuration\entries\general.dm"
+#include "modular_citadel\code\controllers\subsystem\job.dm"
+#include "modular_citadel\code\datums\components\material_container.dm"
+#include "modular_citadel\code\datums\components\phantomthief.dm"
+#include "modular_citadel\code\datums\components\souldeath.dm"
+#include "modular_citadel\code\datums\mood_events\chem_events.dm"
+#include "modular_citadel\code\datums\mood_events\generic_negative_events.dm"
+#include "modular_citadel\code\datums\mood_events\generic_positive_events.dm"
+#include "modular_citadel\code\datums\mood_events\moodular.dm"
+#include "modular_citadel\code\datums\mutations\hulk.dm"
+#include "modular_citadel\code\datums\status_effects\chems.dm"
+#include "modular_citadel\code\datums\status_effects\debuffs.dm"
+#include "modular_citadel\code\datums\traits\negative.dm"
+#include "modular_citadel\code\datums\traits\neutral.dm"
+#include "modular_citadel\code\datums\wires\airlock.dm"
+#include "modular_citadel\code\datums\wires\autoylathe.dm"
+#include "modular_citadel\code\game\area\cit_areas.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\dominator.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\dominator_countdown.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\gang.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\gang_datums.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\gang_decals.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\gang_hud.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\gang_items.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\gang_pen.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\gangs.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\gangtool.dm"
+#include "modular_citadel\code\game\gamemodes\gangs\implant_gang.dm"
+#include "modular_citadel\code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm"
+#include "modular_citadel\code\game\gamemodes\revolution\revolution.dm"
+#include "modular_citadel\code\game\machinery\cryopod.dm"
+#include "modular_citadel\code\game\machinery\displaycases.dm"
+#include "modular_citadel\code\game\machinery\Sleeper.dm"
+#include "modular_citadel\code\game\machinery\toylathe.dm"
+#include "modular_citadel\code\game\machinery\vending.dm"
+#include "modular_citadel\code\game\machinery\wishgranter.dm"
+#include "modular_citadel\code\game\machinery\doors\airlock.dm"
+#include "modular_citadel\code\game\machinery\doors\airlock_types.dm"
+#include "modular_citadel\code\game\objects\cit_screenshake.dm"
+#include "modular_citadel\code\game\objects\items.dm"
+#include "modular_citadel\code\game\objects\tools.dm"
+#include "modular_citadel\code\game\objects\effects\spawner\spawners.dm"
+#include "modular_citadel\code\game\objects\effects\temporary_visuals\souldeath.dm"
+#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\impact.dm"
+#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\muzzle.dm"
+#include "modular_citadel\code\game\objects\effects\temporary_visuals\projectiles\tracer.dm"
+#include "modular_citadel\code\game\objects\items\balls.dm"
+#include "modular_citadel\code\game\objects\items\boombox.dm"
+#include "modular_citadel\code\game\objects\items\holy_weapons.dm"
+#include "modular_citadel\code\game\objects\items\honk.dm"
+#include "modular_citadel\code\game\objects\items\meat.dm"
+#include "modular_citadel\code\game\objects\items\stunsword.dm"
+#include "modular_citadel\code\game\objects\items\vending_items.dm"
+#include "modular_citadel\code\game\objects\items\circuitboards\machine_circuitboards.dm"
+#include "modular_citadel\code\game\objects\items\devices\aicard.dm"
+#include "modular_citadel\code\game\objects\items\devices\radio\encryptionkey.dm"
+#include "modular_citadel\code\game\objects\items\devices\radio\headset.dm"
+#include "modular_citadel\code\game\objects\items\devices\radio\shockcollar.dm"
+#include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm"
+#include "modular_citadel\code\game\objects\items\melee\misc.dm"
+#include "modular_citadel\code\game\objects\items\robot\robot_upgrades.dm"
+#include "modular_citadel\code\game\objects\items\storage\firstaid.dm"
+#include "modular_citadel\code\game\objects\structures\tables_racks.dm"
+#include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm"
+#include "modular_citadel\code\game\objects\structures\beds_chairs\sofa.dm"
+#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\fitness.dm"
+#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\wardrobe.dm"
+#include "modular_citadel\code\game\objects\structures\crates_lockers\closets\secure\citadel_lockers.dm"
+#include "modular_citadel\code\game\turfs\cit_turfs.dm"
+#include "modular_citadel\code\modules\admin\chat_commands.dm"
+#include "modular_citadel\code\modules\admin\holder2.dm"
+#include "modular_citadel\code\modules\admin\secrets.dm"
+#include "modular_citadel\code\modules\arousal\arousal.dm"
+#include "modular_citadel\code\modules\arousal\organs\breasts.dm"
+#include "modular_citadel\code\modules\arousal\organs\eggsack.dm"
+#include "modular_citadel\code\modules\arousal\organs\genitals.dm"
+#include "modular_citadel\code\modules\arousal\organs\genitals_sprite_accessories.dm"
+#include "modular_citadel\code\modules\arousal\organs\ovipositor.dm"
+#include "modular_citadel\code\modules\arousal\organs\penis.dm"
+#include "modular_citadel\code\modules\arousal\organs\testicles.dm"
+#include "modular_citadel\code\modules\arousal\organs\vagina.dm"
+#include "modular_citadel\code\modules\arousal\organs\womb.dm"
+#include "modular_citadel\code\modules\arousal\toys\dildos.dm"
+#include "modular_citadel\code\modules\awaymissions\citadel_ghostrole_spawners.dm"
+#include "modular_citadel\code\modules\cargo\console.dm"
+#include "modular_citadel\code\modules\client\client_defines.dm"
+#include "modular_citadel\code\modules\client\client_procs.dm"
+#include "modular_citadel\code\modules\client\preferences.dm"
+#include "modular_citadel\code\modules\client\preferences_savefile.dm"
+#include "modular_citadel\code\modules\client\preferences_toggles.dm"
+#include "modular_citadel\code\modules\client\loadout\__donator.dm"
+#include "modular_citadel\code\modules\client\loadout\_medical.dm"
+#include "modular_citadel\code\modules\client\loadout\_security.dm"
+#include "modular_citadel\code\modules\client\loadout\_service.dm"
+#include "modular_citadel\code\modules\client\loadout\backpack.dm"
+#include "modular_citadel\code\modules\client\loadout\glasses.dm"
+#include "modular_citadel\code\modules\client\loadout\gloves.dm"
+#include "modular_citadel\code\modules\client\loadout\hands.dm"
+#include "modular_citadel\code\modules\client\loadout\head.dm"
+#include "modular_citadel\code\modules\client\loadout\loadout.dm"
+#include "modular_citadel\code\modules\client\loadout\mask.dm"
+#include "modular_citadel\code\modules\client\loadout\neck.dm"
+#include "modular_citadel\code\modules\client\loadout\shoes.dm"
+#include "modular_citadel\code\modules\client\loadout\suit.dm"
+#include "modular_citadel\code\modules\client\loadout\uniform.dm"
+#include "modular_citadel\code\modules\client\verbs\who.dm"
+#include "modular_citadel\code\modules\clothing\clothing.dm"
+#include "modular_citadel\code\modules\clothing\neck.dm"
+#include "modular_citadel\code\modules\clothing\glasses\phantomthief.dm"
+#include "modular_citadel\code\modules\clothing\head\head.dm"
+#include "modular_citadel\code\modules\clothing\spacesuits\cydonian_armor.dm"
+#include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm"
+#include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm"
+#include "modular_citadel\code\modules\clothing\suits\polychromic_suit.dm"
+#include "modular_citadel\code\modules\clothing\suits\suits.dm"
+#include "modular_citadel\code\modules\clothing\under\polychromic_clothes.dm"
+#include "modular_citadel\code\modules\clothing\under\trek_under.dm"
+#include "modular_citadel\code\modules\clothing\under\turtlenecks.dm"
+#include "modular_citadel\code\modules\clothing\under\under.dm"
+#include "modular_citadel\code\modules\crafting\recipes.dm"
+#include "modular_citadel\code\modules\custom_loadout\custom_items.dm"
+#include "modular_citadel\code\modules\custom_loadout\load_to_mob.dm"
+#include "modular_citadel\code\modules\custom_loadout\read_from_file.dm"
+#include "modular_citadel\code\modules\events\blob.dm"
+#include "modular_citadel\code\modules\events\wizard\magicarp.dm"
+#include "modular_citadel\code\modules\food_and_drinks\snacks\meat.dm"
+#include "modular_citadel\code\modules\integrated_electronics\subtypes\manipulation.dm"
+#include "modular_citadel\code\modules\jobs\dresscode_values.dm"
+#include "modular_citadel\code\modules\keybindings\bindings_carbon.dm"
+#include "modular_citadel\code\modules\keybindings\bindings_human.dm"
+#include "modular_citadel\code\modules\keybindings\bindings_robot.dm"
+#include "modular_citadel\code\modules\mentor\follow.dm"
+#include "modular_citadel\code\modules\mentor\mentor.dm"
+#include "modular_citadel\code\modules\mentor\mentor_memo.dm"
+#include "modular_citadel\code\modules\mentor\mentor_verbs.dm"
+#include "modular_citadel\code\modules\mentor\mentorhelp.dm"
+#include "modular_citadel\code\modules\mentor\mentorpm.dm"
+#include "modular_citadel\code\modules\mentor\mentorsay.dm"
+#include "modular_citadel\code\modules\mining\mining_ruins.dm"
+#include "modular_citadel\code\modules\mob\cit_emotes.dm"
+#include "modular_citadel\code\modules\mob\mob.dm"
+#include "modular_citadel\code\modules\mob\dead\new_player\sprite_accessories.dm"
+#include "modular_citadel\code\modules\mob\living\damage_procs.dm"
+#include "modular_citadel\code\modules\mob\living\living.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\carbon.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\life.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\reindex_screams.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\human.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\life.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\species.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\furrypeople.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\ipc.dm"
+#include "modular_citadel\code\modules\mob\living\carbon\human\species_types\jellypeople.dm"
+#include "modular_citadel\code\modules\mob\living\silicon\robot\dogborg_equipment.dm"
+#include "modular_citadel\code\modules\mob\living\silicon\robot\robot.dm"
+#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm"
+#include "modular_citadel\code\modules\mob\living\silicon\robot\robot_movement.dm"
+#include "modular_citadel\code\modules\mob\living\simple_animal\banana_spider.dm"
+#include "modular_citadel\code\modules\mob\living\simple_animal\kiwi.dm"
+#include "modular_citadel\code\modules\mob\living\simple_animal\simplemob_vore_values.dm"
+#include "modular_citadel\code\modules\power\lighting.dm"
+#include "modular_citadel\code\modules\projectiles\gun.dm"
+#include "modular_citadel\code\modules\projectiles\ammunition\caseless.dm"
+#include "modular_citadel\code\modules\projectiles\ammunition\ballistic\smg\smg.dm"
+#include "modular_citadel\code\modules\projectiles\boxes_magazines\ammo_boxes.dm"
+#include "modular_citadel\code\modules\projectiles\boxes_magazines\external\pistol.dm"
+#include "modular_citadel\code\modules\projectiles\boxes_magazines\external\smg\smg.dm"
+#include "modular_citadel\code\modules\projectiles\bullets\bullets\smg.dm"
+#include "modular_citadel\code\modules\projectiles\guns\pumpenergy.dm"
+#include "modular_citadel\code\modules\projectiles\guns\toys.dm"
+#include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm"
+#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm"
+#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm"
+#include "modular_citadel\code\modules\projectiles\guns\ballistic\revolver.dm"
+#include "modular_citadel\code\modules\projectiles\guns\ballistic\rifles.dm"
+#include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm"
+#include "modular_citadel\code\modules\projectiles\guns\energy\energy_gun.dm"
+#include "modular_citadel\code\modules\projectiles\guns\energy\laser.dm"
+#include "modular_citadel\code\modules\projectiles\projectiles\reusable.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\reagents\astrogen.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\reagents\eigentstasium.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\reagents\enlargement.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\reagents\fermi_reagents.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\reagents\healing.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\reagents\MKUltra.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\reagents\other_reagents.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\reagents\SDGF.dm"
+#include "modular_citadel\code\modules\reagents\chemistry\recipes\fermi.dm"
+#include "modular_citadel\code\modules\reagents\objects\clothes.dm"
+#include "modular_citadel\code\modules\reagents\objects\items.dm"
+#include "modular_citadel\code\modules\reagents\reagents\cit_reagents.dm"
+#include "modular_citadel\code\modules\recycling\disposal\bin.dm"
+#include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm"
+#include "modular_citadel\code\modules\research\designs\machine_designs.dm"
+#include "modular_citadel\code\modules\research\designs\xenobio_designs.dm"
+#include "modular_citadel\code\modules\research\techweb\_techweb.dm"
+#include "modular_citadel\code\modules\research\xenobiology\xenobio_camera.dm"
+#include "modular_citadel\code\modules\vehicles\secway.dm"
+#include "modular_citadel\code\modules\vore\hook-defs_vr.dm"
+#include "modular_citadel\code\modules\vore\persistence.dm"
+#include "modular_citadel\code\modules\vore\trycatch_vr.dm"
+#include "modular_citadel\code\modules\vore\eating\belly_dat_vr.dm"
+#include "modular_citadel\code\modules\vore\eating\belly_obj_vr.dm"
+#include "modular_citadel\code\modules\vore\eating\bellymodes_vr.dm"
+#include "modular_citadel\code\modules\vore\eating\digest_act_vr.dm"
+#include "modular_citadel\code\modules\vore\eating\living_vr.dm"
+#include "modular_citadel\code\modules\vore\eating\vore_vr.dm"
+#include "modular_citadel\code\modules\vore\eating\voreitems.dm"
+#include "modular_citadel\code\modules\vore\eating\vorepanel_vr.dm"
+#include "modular_citadel\interface\skin.dmf"
+#include "yogstation\code\modules\power\energyharvester.dm"
+// END_INCLUDE