From 1ae49ef90596e08ff59bbac3845a6196ed548237 Mon Sep 17 00:00:00 2001 From: Varlaisvea <125837828+Varlaisvea@users.noreply.github.com> Date: Thu, 9 Mar 2023 02:55:54 +0000 Subject: [PATCH 1/7] the little construction pr --- code/__defines/materials.dm | 1 + code/datums/autolathe/engineering.dm | 4 + code/game/machinery/computer/arcade.dm | 2 + code/game/machinery/doors/airlock.dm | 1490 ++++++++ code/game/machinery/frame.dm | 11 + .../objects/items/stacks/tiles/tile_types.dm | 83 +- .../items/weapons/circuitboards/frame.dm | 6 + code/game/objects/structures/lattice.dm | 5 +- code/game/objects/structures/window.dm | 709 ++++ .../materials/materials/organic/grass.dm | 31 + polaris.dme | 3357 +++++++++++++++++ 11 files changed, 5697 insertions(+), 2 deletions(-) create mode 100644 code/modules/materials/materials/organic/grass.dm create mode 100644 polaris.dme diff --git a/code/__defines/materials.dm b/code/__defines/materials.dm index 97f30e5247..0e24246954 100644 --- a/code/__defines/materials.dm +++ b/code/__defines/materials.dm @@ -56,6 +56,7 @@ #define MAT_DEUTERIUM "deuterium" #define MAT_CONCRETE "concrete" #define MAT_PLASTEELREBAR "plasteel rebar" +#define MAT_GRASS "grass" #define DEFAULT_TABLE_MATERIAL MAT_PLASTIC diff --git a/code/datums/autolathe/engineering.dm b/code/datums/autolathe/engineering.dm index e2ff93b797..228f0d5428 100644 --- a/code/datums/autolathe/engineering.dm +++ b/code/datums/autolathe/engineering.dm @@ -78,6 +78,10 @@ name = "request console electronics" path =/obj/item/weapon/circuitboard/request +/datum/category_item/autolathe/engineering/electrochromic + name = "electrochromic window control electronics" + path =/obj/item/circuitboard/electrochromic + /datum/category_item/autolathe/engineering/pipelayer name = "pipe layer electronics" path =/obj/item/weapon/circuitboard/pipelayer diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 016a96c723..dd9a4d7886 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1337,3 +1337,5 @@ O = T to_chat(user, "You turn in 2 tickets to the [src] and claim a prize!") return + else + ..() //You can now actually deconstruct these. \ No newline at end of file diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index f8590dabbc..c02329eb55 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD //VOREStation Edit - Redone a lot of airlock things: /* - Specific department maintenance doors @@ -1576,3 +1577,1492 @@ About the new airlock wires panel: qdel(src) return TRUE return FALSE +======= +/* +- Specific department maintenance doors +- Named doors properly according to type +- Gave them default access levels with the access constants +- Improper'd all of the names in the new() +*/ + +/obj/machinery/door/airlock + name = "Airlock" + icon = 'icons/obj/doors/Doorint.dmi' + icon_state = "door_closed" + power_channel = ENVIRON + + explosion_resistance = 10 + var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. + var/hackProof = 0 // if 1, this door can't be hacked by the AI + var/electrified_until = 0 //World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. + var/main_power_lost_until = 0 //World time when main power is restored. + var/backup_power_lost_until = -1 //World time when backup power is restored. + var/has_beeped = 0 //If 1, will not beep on failed closing attempt. Resets when door closes. + var/spawnPowerRestoreRunning = 0 + var/welded = null + var/locked = 0 + var/lights = 1 // bolt lights show by default + var/aiDisabledIdScanner = 0 + var/aiHacking = 0 + var/obj/machinery/door/airlock/closeOther = null + var/closeOtherId = null + var/lockdownbyai = 0 + autoclose = 1 + var/assembly_type = /obj/structure/door_assembly + var/mineral = null + var/justzap = 0 + var/safe = 1 + normalspeed = 1 + var/obj/item/airlock_electronics/electronics = null + var/hasShocked = 0 //Prevents multiple shocks from happening + var/secured_wires = 0 + var/datum/wires/airlock/wires = null + + var/open_sound_powered = 'sound/machines/door/covert1o.ogg' + var/open_sound_unpowered = 'sound/machines/door/airlockforced.ogg' + var/close_sound_powered = 'sound/machines/door/covert1c.ogg' + var/legacy_open_powered = 'sound/machines/door/old_airlock.ogg' + var/legacy_close_powered = 'sound/machines/door/old_airlockclose.ogg' + var/department_open_powered = null + var/department_close_powered = null + var/denied_sound = 'sound/machines/deniedbeep.ogg' + var/bolt_up_sound = 'sound/machines/door/boltsup.ogg' + var/bolt_down_sound = 'sound/machines/door/boltsdown.ogg' + +/obj/machinery/door/airlock/attack_generic(var/mob/living/user, var/damage) + if(stat & (BROKEN|NOPOWER)) + if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) + if(src.locked || src.welded) + visible_message("\The [user] begins breaking into \the [src] internals!") + user.set_AI_busy(TRUE) // If the mob doesn't have an AI attached, this won't do anything. + if(do_after(user,10 SECONDS,src)) + src.locked = 0 + src.welded = 0 + update_icon() + open(1) + if(prob(25)) + src.shock(user, 100) + user.set_AI_busy(FALSE) + else if(src.density) + visible_message("\The [user] forces \the [src] open!") + open(1) + else + visible_message("\The [user] forces \the [src] closed!") + close(1) + else + visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") + return + ..() + +/obj/machinery/door/airlock/attack_alien(var/mob/user) //Familiar, right? Doors. -Mechoid + if(istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/X = user + if(istype(X.species, /datum/species/xenos)) + if(src.locked || src.welded) + visible_message("\The [user] begins digging into \the [src] internals!") + src.do_animate("deny") + if(do_after(user,5 SECONDS,src)) + visible_message("\The [user] forces \the [src] open, sparks flying from its electronics!") + src.do_animate("spark") + playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) + src.locked = 0 + src.welded = 0 + update_icon() + open(1) + src.emag_act() + else if(src.density) + visible_message("\The [user] begins forcing \the [src] open!") + if(do_after(user, 5 SECONDS,src)) + playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) + visible_message("\The [user] forces \the [src] open!") + open(1) + else + visible_message("\The [user] forces \the [src] closed!") + close(1) + else + src.do_animate("deny") + visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") + return + ..() + +/obj/machinery/door/airlock/get_material() + if(mineral) + return get_material_by_name(mineral) + return get_material_by_name(DEFAULT_WALL_MATERIAL) + +/obj/machinery/door/airlock/command + name = "Command Airlock" + icon = 'icons/obj/doors/Doorcom.dmi' + req_one_access = list(access_heads) + assembly_type = /obj/structure/door_assembly/door_assembly_com + department_open_powered = 'sound/machines/door/cmd3o.ogg' + department_close_powered = 'sound/machines/door/cmd3c.ogg' + +/obj/machinery/door/airlock/security + name = "Security Airlock" + icon = 'icons/obj/doors/Doorsec.dmi' + req_one_access = list(access_security) + assembly_type = /obj/structure/door_assembly/door_assembly_sec + department_open_powered = 'sound/machines/door/sec1o.ogg' + department_close_powered = 'sound/machines/door/sec1c.ogg' + +/obj/machinery/door/airlock/engineering + name = "Engineering Airlock" + icon = 'icons/obj/doors/Dooreng.dmi' + req_one_access = list(access_engine) + assembly_type = /obj/structure/door_assembly/door_assembly_eng + department_open_powered = 'sound/machines/door/eng1o.ogg' + department_close_powered = 'sound/machines/door/eng1c.ogg' + +/obj/machinery/door/airlock/engineeringatmos + name = "Atmospherics Airlock" + icon = 'icons/obj/doors/Doorengatmos.dmi' + req_one_access = list(access_atmospherics) + assembly_type = /obj/structure/door_assembly/door_assembly_eat + department_open_powered = 'sound/machines/door/eng1o.ogg' + department_close_powered = 'sound/machines/door/eng1c.ogg' + +/obj/machinery/door/airlock/medical + name = "Medical Airlock" + icon = 'icons/obj/doors/Doormed.dmi' + req_one_access = list(access_medical) + assembly_type = /obj/structure/door_assembly/door_assembly_med + department_open_powered = 'sound/machines/door/med1o.ogg' + department_close_powered = 'sound/machines/door/med1c.ogg' + +/obj/machinery/door/airlock/maintenance + name = "Maintenance Access" + icon = 'icons/obj/doors/Doormaint.dmi' + assembly_type = /obj/structure/door_assembly/door_assembly_mai + open_sound_powered = 'sound/machines/door/door2o.ogg' + close_sound_powered = 'sound/machines/door/door2c.ogg' + +/obj/machinery/door/airlock/maintenance/cargo + icon = 'icons/obj/doors/Doormaint_cargo.dmi' + req_one_access = list(access_cargo) + department_open_powered = 'sound/machines/door/door2o.ogg' + department_close_powered = 'sound/machines/door/door2c.ogg' + +/obj/machinery/door/airlock/maintenance/command + icon = 'icons/obj/doors/Doormaint_command.dmi' + req_one_access = list(access_heads) + +/obj/machinery/door/airlock/maintenance/common + icon = 'icons/obj/doors/Doormaint_common.dmi' + open_sound_powered = 'sound/machines/door/hall3o.ogg' + close_sound_powered = 'sound/machines/door/hall3c.ogg' + +/obj/machinery/door/airlock/maintenance/engi + icon = 'icons/obj/doors/Doormaint_engi.dmi' + req_one_access = list(access_engine) + +/obj/machinery/door/airlock/maintenance/int + icon = 'icons/obj/doors/Doormaint_int.dmi' + +/obj/machinery/door/airlock/maintenance/medical + icon = 'icons/obj/doors/Doormaint_med.dmi' + req_one_access = list(access_medical) + +/obj/machinery/door/airlock/maintenance/rnd + icon = 'icons/obj/doors/Doormaint_rnd.dmi' + req_one_access = list(access_research) + +/obj/machinery/door/airlock/maintenance/sec + icon = 'icons/obj/doors/Doormaint_sec.dmi' + req_one_access = list(access_security) + +/obj/machinery/door/airlock/external + name = "External Airlock" + icon = 'icons/obj/doors/Doorext.dmi' + assembly_type = /obj/structure/door_assembly/door_assembly_ext + open_sound_powered = 'sound/machines/door/space1o.ogg' + close_sound_powered = 'sound/machines/door/space1c.ogg' + +/obj/machinery/door/airlock/external/white + icon = 'icons/obj/doors/Doorextwhite.dmi' + +/obj/machinery/door/airlock/external/glass/bolted + icon_state = "door_locked" // So it looks visibly bolted in map editor + locked = 1 + +// For convenience in making docking ports: one that is pre-bolted with frequency set! +/obj/machinery/door/airlock/external/glass/bolted/cycling + frequency = 1379 + +/obj/machinery/door/airlock/glass_external + name = "External Airlock" + icon = 'icons/obj/doors/Doorextglass.dmi' + assembly_type = /obj/structure/door_assembly/door_assembly_ext + opacity = 0 + glass = 1 + req_one_access = list(access_external_airlocks) + open_sound_powered = 'sound/machines/door/space1o.ogg' + close_sound_powered = 'sound/machines/door/space1c.ogg' + +/obj/machinery/door/airlock/glass + name = "Glass Airlock" + icon = 'icons/obj/doors/Doorglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + open_sound_powered = 'sound/machines/door/hall1o.ogg' + close_sound_powered = 'sound/machines/door/hall1c.ogg' + legacy_open_powered = 'sound/machines/door/windowdoor.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + glass = 1 + +/obj/machinery/door/airlock/centcom + name = "Centcom Airlock" + icon = 'icons/obj/doors/Doorele.dmi' + req_one_access = list(access_cent_general) + opacity = 1 + open_sound_powered = 'sound/machines/door/cmd3o.ogg' + close_sound_powered = 'sound/machines/door/cmd3c.ogg' + +/obj/machinery/door/airlock/glass_centcom + name = "Airlock" + icon = 'icons/obj/doors/Dooreleglass.dmi' + opacity = 0 + glass = 1 + open_sound_powered = 'sound/machines/door/cmd3o.ogg' + close_sound_powered = 'sound/machines/door/cmd3c.ogg' + +/obj/machinery/door/airlock/vault + name = "Vault" + icon = 'icons/obj/doors/vault.dmi' + explosion_resistance = 20 + opacity = 1 + secured_wires = 1 + assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity //Until somebody makes better sprites. + req_one_access = list(access_heads_vault) + open_sound_powered = 'sound/machines/door/vault1o.ogg' + close_sound_powered = 'sound/machines/door/vault1c.ogg' + +/obj/machinery/door/airlock/vault/bolted + icon_state = "door_locked" + locked = 1 + +/obj/machinery/door/airlock/freezer + name = "Freezer Airlock" + icon = 'icons/obj/doors/Doorfreezer.dmi' + opacity = 1 + assembly_type = /obj/structure/door_assembly/door_assembly_fre + +/obj/machinery/door/airlock/hatch + name = "Airtight Hatch" + icon = 'icons/obj/doors/Doorhatchele.dmi' + explosion_resistance = 20 + opacity = 1 + assembly_type = /obj/structure/door_assembly/door_assembly_hatch + req_one_access = list(access_maint_tunnels) + open_sound_powered = 'sound/machines/door/hatchopen.ogg' + close_sound_powered = 'sound/machines/door/hatchclose.ogg' + open_sound_unpowered = 'sound/machines/door/hatchforced.ogg' + +/obj/machinery/door/airlock/maintenance_hatch + name = "Maintenance Hatch" + icon = 'icons/obj/doors/Doorhatchmaint2.dmi' + explosion_resistance = 20 + opacity = 1 + assembly_type = /obj/structure/door_assembly/door_assembly_mhatch + req_one_access = list(access_maint_tunnels) + open_sound_powered = 'sound/machines/door/hatchopen.ogg' + close_sound_powered = 'sound/machines/door/hatchclose.ogg' + open_sound_unpowered = 'sound/machines/door/hatchforced.ogg' + +/obj/machinery/door/airlock/glass_command + name = "Command Airlock" + icon = 'icons/obj/doors/Doorcomglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_com + glass = 1 + req_one_access = list(access_heads) + department_open_powered = 'sound/machines/door/cmd1o.ogg' + department_close_powered = 'sound/machines/door/cmd1c.ogg' + +/obj/machinery/door/airlock/glass_engineering + name = "Engineering Airlock" + icon = 'icons/obj/doors/Doorengglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_eng + glass = 1 + req_one_access = list(access_engine) + department_open_powered = 'sound/machines/door/eng1o.ogg' + department_close_powered = 'sound/machines/door/eng1c.ogg' + +/obj/machinery/door/airlock/glass_engineeringatmos + name = "Atmospherics Airlock" + icon = 'icons/obj/doors/Doorengatmoglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_eat + glass = 1 + req_one_access = list(access_atmospherics) + department_open_powered = 'sound/machines/door/eng1o.ogg' + department_close_powered = 'sound/machines/door/eng1c.ogg' + +/obj/machinery/door/airlock/glass_security + name = "Security Airlock" + icon = 'icons/obj/doors/Doorsecglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_sec + glass = 1 + req_one_access = list(access_security) + department_open_powered = 'sound/machines/door/sec1o.ogg' + department_close_powered = 'sound/machines/door/sec1c.ogg' + +/obj/machinery/door/airlock/glass_medical + name = "Medical Airlock" + icon = 'icons/obj/doors/Doormedglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_med + glass = 1 + req_one_access = list(access_medical) + department_open_powered = 'sound/machines/door/med1o.ogg' + department_close_powered = 'sound/machines/door/med1c.ogg' + +/obj/machinery/door/airlock/mining + name = "Mining Airlock" + icon = 'icons/obj/doors/Doormining.dmi' + assembly_type = /obj/structure/door_assembly/door_assembly_min + req_one_access = list(access_mining) + department_open_powered = 'sound/machines/door/cgo1o.ogg' + department_close_powered = 'sound/machines/door/cgo1c.ogg' + +/obj/machinery/door/airlock/atmos + name = "Atmospherics Airlock" + icon = 'icons/obj/doors/Dooratmo.dmi' + assembly_type = /obj/structure/door_assembly/door_assembly_atmo + req_one_access = list(access_atmospherics) + department_open_powered = 'sound/machines/door/eng1o.ogg' + department_close_powered = 'sound/machines/door/eng1c.ogg' + +/obj/machinery/door/airlock/research + name = "Research Airlock" + icon = 'icons/obj/doors/Doorresearch.dmi' + assembly_type = /obj/structure/door_assembly/door_assembly_research + department_open_powered = 'sound/machines/door/sci1o.ogg' + department_close_powered = 'sound/machines/door/sci1c.ogg' + +/obj/machinery/door/airlock/glass_research + name = "Research Airlock" + icon = 'icons/obj/doors/Doorresearchglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_research + glass = 1 + req_one_access = list(access_research) + department_open_powered = 'sound/machines/door/sci1o.ogg' + department_close_powered = 'sound/machines/door/sci1c.ogg' + +/obj/machinery/door/airlock/glass_mining + name = "Mining Airlock" + icon = 'icons/obj/doors/Doorminingglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_min + glass = 1 + req_one_access = list(access_mining) + department_open_powered = 'sound/machines/door/cgo1o.ogg' + department_close_powered = 'sound/machines/door/cgo1c.ogg' + +/obj/machinery/door/airlock/glass_atmos + name = "Atmospherics Airlock" + icon = 'icons/obj/doors/Dooratmoglass.dmi' + hitsound = 'sound/effects/Glasshit.ogg' + maxhealth = 300 + explosion_resistance = 5 + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_atmo + glass = 1 + req_one_access = list(access_atmospherics) + department_open_powered = 'sound/machines/door/eng1o.ogg' + department_close_powered = 'sound/machines/door/eng1c.ogg' + +/obj/machinery/door/airlock/gold + name = "Gold Airlock" + icon = 'icons/obj/doors/Doorgold.dmi' + mineral = "gold" + +/obj/machinery/door/airlock/silver + name = "Silver Airlock" + icon = 'icons/obj/doors/Doorsilver.dmi' + mineral = "silver" + +/obj/machinery/door/airlock/diamond + name = "Diamond Airlock" + icon = 'icons/obj/doors/Doordiamond.dmi' + mineral = "diamond" + +/obj/machinery/door/airlock/uranium + name = "Uranium Airlock" + desc = "And they said I was crazy." + icon = 'icons/obj/doors/Dooruranium.dmi' + mineral = "uranium" + var/last_event = 0 + var/rad_power = 7.5 + +/obj/machinery/door/airlock/process() + // Deliberate no call to parent. + if(main_power_lost_until > 0 && world.time >= main_power_lost_until) + regainMainPower() + + if(backup_power_lost_until > 0 && world.time >= backup_power_lost_until) + regainBackupPower() + + else if(electrified_until > 0 && world.time >= electrified_until) + electrify(0) + + if (..() == PROCESS_KILL && !(main_power_lost_until > 0 || backup_power_lost_until > 0 || electrified_until > 0)) + . = PROCESS_KILL + +/obj/machinery/door/airlock/uranium/process() + if(world.time > last_event+20) + if(prob(50)) + SSradiation.radiate(src, rad_power) + last_event = world.time + ..() + +/obj/machinery/door/airlock/phoron + name = "Phoron Airlock" + desc = "No way this can end badly." + icon = 'icons/obj/doors/Doorphoron.dmi' + mineral = "phoron" + +/obj/machinery/door/airlock/phoron/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + PhoronBurn(exposed_temperature) + +/obj/machinery/door/airlock/phoron/proc/ignite(exposed_temperature) + if(exposed_temperature > 300) + PhoronBurn(exposed_temperature) + +/obj/machinery/door/airlock/phoron/proc/PhoronBurn(temperature) + for(var/turf/simulated/floor/target_tile in range(2,loc)) + target_tile.assume_gas("phoron", 35, 400+T0C) + spawn (0) target_tile.hotspot_expose(temperature, 400) + for(var/turf/simulated/wall/W in range(3,src)) + W.burn((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame + for(var/obj/machinery/door/airlock/phoron/D in range(3,src)) + D.ignite(temperature/4) + new/obj/structure/door_assembly( src.loc ) + qdel(src) + +/obj/machinery/door/airlock/sandstone + name = "Sandstone Airlock" + icon = 'icons/obj/doors/Doorsand.dmi' + mineral = "sandstone" + +/obj/machinery/door/airlock/science + name = "Research Airlock" + icon = 'icons/obj/doors/Doorsci.dmi' + assembly_type = /obj/structure/door_assembly/door_assembly_science + req_one_access = list(access_research) + department_open_powered = 'sound/machines/door/sci1o.ogg' + department_close_powered = 'sound/machines/door/sci1c.ogg' + +/obj/machinery/door/airlock/glass_science + name = "Glass Airlocks" + icon = 'icons/obj/doors/Doorsciglass.dmi' + opacity = 0 + assembly_type = /obj/structure/door_assembly/door_assembly_science + glass = 1 + req_one_access = list(access_research) + department_open_powered = 'sound/machines/door/sci1o.ogg' + department_close_powered = 'sound/machines/door/sci1c.ogg' + +/obj/machinery/door/airlock/highsecurity + name = "Secure Airlock" + icon = 'icons/obj/doors/hightechsecurity.dmi' + explosion_resistance = 20 + secured_wires = 1 + assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity + req_one_access = list(access_heads_vault) + open_sound_powered = 'sound/machines/door/secure1o.ogg' + close_sound_powered = 'sound/machines/door/secure1c.ogg' + +/obj/machinery/door/airlock/voidcraft + name = "voidcraft hatch" + desc = "It's an extra resilient airlock intended for spacefaring vessels." + icon = 'icons/obj/doors/shuttledoors.dmi' + explosion_resistance = 20 + opacity = 0 + glass = 1 + assembly_type = /obj/structure/door_assembly/door_assembly_voidcraft + open_sound_powered = 'sound/machines/door/shuttle1o.ogg' + close_sound_powered = 'sound/machines/door/shuttle1c.ogg' + +// Airlock opens from top-bottom instead of left-right. +/obj/machinery/door/airlock/voidcraft/vertical + icon = 'icons/obj/doors/shuttledoors_vertical.dmi' + assembly_type = /obj/structure/door_assembly/door_assembly_voidcraft/vertical + open_sound_powered = 'sound/machines/door/shuttle1o.ogg' + close_sound_powered = 'sound/machines/door/shuttle1c.ogg' + + +/datum/category_item/catalogue/anomalous/precursor_a/alien_airlock + name = "Precursor Alpha Object - Doors" + desc = "This object appears to be used in order to restrict or allow access to \ + rooms based on its physical state. In other words, a door. \ + Despite being designed and created by unknown ancient alien hands, this door has \ + a large number of similarities to the conventional airlock, such as being driven by \ + electricity, opening and closing by physically moving, and being air tight. \ + It also operates by responding to signals through internal electrical conduits. \ + These characteristics make it possible for one with experience with a multitool \ + to manipulate the door.\ +

\ + The symbol on the door does not match any living species' patterns, giving further \ + implications that this door is very old, and yet it remains operational after \ + thousands of years. It is unknown if that is due to superb construction, or \ + unseen autonomous maintenance having been performed." + value = CATALOGUER_REWARD_EASY + +/obj/machinery/door/airlock/alien + name = "alien airlock" + desc = "You're fairly sure this is a door." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_airlock) + icon = 'icons/obj/doors/Dooralien.dmi' + explosion_resistance = 20 + secured_wires = TRUE + hackProof = TRUE + assembly_type = /obj/structure/door_assembly/door_assembly_alien + req_one_access = list(access_alien) + +/obj/machinery/door/airlock/alien/locked + icon_state = "door_locked" + locked = TRUE + +/obj/machinery/door/airlock/alien/public // Entry to UFO. + req_one_access = list() + normalspeed = FALSE // So it closes faster and hopefully keeps the warm air inside. + +/* +About the new airlock wires panel: +* An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires. +* one wire from the ID scanner. Sending a pulse through this flashes the red light on the door (if the door has power). If you cut this wire, the door will stop recognizing valid IDs. (If the door has 0000 access, it still opens and closes, though) +* two wires for power. Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be open, but bolts-raising will not work. Cutting these wires may electrocute the user. +* one wire for door bolts. Sending a pulse through this drops door bolts (whether the door is powered or not) or raises them (if it is). Cutting this wire also drops the door bolts, and mending it does not raise them. If the wire is cut, trying to raise the door bolts will not work. +* two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user. +* one wire for opening the door. Sending a pulse through this while the door has power makes it open the door if no access is required. +* one wire for AI control. Sending a pulse through this blocks AI control for a second or so (which is enough to see the AI control light on the panel dialog go off and back on again). Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all. +* one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. (Currently it is also STAYING electrified until someone mends the wire) +* one wire for controling door safetys. When active, door does not close on someone. When cut, door will ruin someone's shit. When pulsed, door will immedately ruin someone's shit. +* one wire for controlling door speed. When active, dor closes at normal rate. When cut, door does not close manually. When pulsed, door attempts to close every tick. +*/ + + + +/obj/machinery/door/airlock/bumpopen(mob/living/user as mob) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite + if(!issilicon(usr)) + if(src.isElectrified()) + if(!src.justzap) + if(src.shock(user, 100)) + src.justzap = 1 + spawn (10) + src.justzap = 0 + return + else /*if(src.justzap)*/ + return + ..(user) + +/obj/machinery/door/airlock/proc/isElectrified() + if(src.electrified_until != 0) + return 1 + return 0 + +/obj/machinery/door/airlock/proc/canAIControl() + return ((src.aiControlDisabled!=1) && (!src.isAllPowerLoss())); + +/obj/machinery/door/airlock/proc/canAIHack() + return ((src.aiControlDisabled==1) && (!hackProof) && (!src.isAllPowerLoss())); + +/obj/machinery/door/airlock/proc/arePowerSystemsOn() + if (stat & (NOPOWER|BROKEN)) + return 0 + return (src.main_power_lost_until==0 || src.backup_power_lost_until==0) + +/obj/machinery/door/airlock/requiresID() + return !(wires.is_cut(WIRE_IDSCAN) || aiDisabledIdScanner) + +/obj/machinery/door/airlock/proc/isAllPowerLoss() + if(stat & (NOPOWER|BROKEN)) + return 1 + if(mainPowerCablesCut() && backupPowerCablesCut()) + return 1 + return 0 + +/obj/machinery/door/airlock/proc/mainPowerCablesCut() + return wires.is_cut(WIRE_MAIN_POWER1) || wires.is_cut(WIRE_MAIN_POWER2) + +/obj/machinery/door/airlock/proc/backupPowerCablesCut() + return wires.is_cut(WIRE_BACKUP_POWER1) || wires.is_cut(WIRE_BACKUP_POWER2) + +/obj/machinery/door/airlock/proc/loseMainPower() + main_power_lost_until = mainPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) + + // If backup power is permanently disabled then activate in 10 seconds if possible, otherwise it's already enabled or a timer is already running + if(backup_power_lost_until == -1 && !backupPowerCablesCut()) + backup_power_lost_until = world.time + SecondsToTicks(10) + + if(main_power_lost_until > 0 || backup_power_lost_until > 0) + START_MACHINE_PROCESSING(src) + + // Disable electricity if required + if(electrified_until && isAllPowerLoss()) + electrify(0) + + update_icon() + +/obj/machinery/door/airlock/proc/loseBackupPower() + backup_power_lost_until = backupPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) + + if(backup_power_lost_until > 0) + START_MACHINE_PROCESSING(src) + + // Disable electricity if required + if(electrified_until && isAllPowerLoss()) + electrify(0) + + update_icon() + +/obj/machinery/door/airlock/proc/regainMainPower() + if(!mainPowerCablesCut()) + main_power_lost_until = 0 + // If backup power is currently active then disable, otherwise let it count down and disable itself later + if(!backup_power_lost_until) + backup_power_lost_until = -1 + + update_icon() + +/obj/machinery/door/airlock/proc/regainBackupPower() + if(!backupPowerCablesCut()) + // Restore backup power only if main power is offline, otherwise permanently disable + backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0 + + update_icon() + +/obj/machinery/door/airlock/proc/electrify(var/duration, var/feedback = 0) + var/message = "" + if(wires.is_cut(WIRE_ELECTRIFY) && arePowerSystemsOn()) + message = text("The electrification wire is cut - Door permanently electrified.") + src.electrified_until = -1 + else if(duration && !arePowerSystemsOn()) + message = text("The door is unpowered - Cannot electrify the door.") + src.electrified_until = 0 + else if(!duration && electrified_until != 0) + message = "The door is now un-electrified." + src.electrified_until = 0 + else if(duration) //electrify door for the given duration seconds + if(usr) + shockedby += text("\[[time_stamp()]\] - [usr](ckey:[usr.ckey])") + add_attack_logs(usr,name,"Electrified a door") + else + shockedby += text("\[[time_stamp()]\] - EMP)") + message = "The door is now electrified [duration == -1 ? "permanently" : "for [duration] second\s"]." + src.electrified_until = duration == -1 ? -1 : world.time + SecondsToTicks(duration) + + if(electrified_until > 0) + START_MACHINE_PROCESSING(src) + + if(feedback && message) + to_chat(usr,message) + +/obj/machinery/door/airlock/proc/set_idscan(var/activate, var/feedback = 0) + var/message = "" + if(wires.is_cut(WIRE_IDSCAN)) + message = "The IdScan wire is cut - IdScan feature permanently disabled." + else if(activate && src.aiDisabledIdScanner) + src.aiDisabledIdScanner = 0 + message = "IdScan feature has been enabled." + else if(!activate && !src.aiDisabledIdScanner) + src.aiDisabledIdScanner = 1 + message = "IdScan feature has been disabled." + + if(feedback && message) + to_chat(usr,message) + +/obj/machinery/door/airlock/proc/set_safeties(var/activate, var/feedback = 0) + var/message = "" + // Safeties! We don't need no stinking safeties! + if (wires.is_cut(WIRE_SAFETY)) + message = text("The safety wire is cut - Cannot enable safeties.") + else if (!activate && src.safe) + safe = 0 + else if (activate && !src.safe) + safe = 1 + + if(feedback && message) + to_chat(usr,message) + +// shock user with probability prb (if all connections & power are working) +// returns 1 if shocked, 0 otherwise +// The preceding comment was borrowed from the grille's shock script +/obj/machinery/door/airlock/shock(mob/living/user, prb) + if(!arePowerSystemsOn()) + return 0 + if(hasShocked) + return 0 //Already shocked someone recently? + if(..()) + hasShocked = 1 + sleep(10) + hasShocked = 0 + return 1 + else + return 0 + + +/obj/machinery/door/airlock/update_icon() + cut_overlays() + if(density) + if(locked && lights && src.arePowerSystemsOn()) + icon_state = "door_locked" + else + icon_state = "door_closed" + if(p_open || welded) + cut_overlays() + if(p_open) + add_overlay("panel_open") + if (!(stat & NOPOWER)) + if(stat & BROKEN) + add_overlay("sparks_broken") + else if (health < maxhealth * 3/4) + add_overlay("sparks_damaged") + if(welded) + add_overlay("welded") + else if (health < maxhealth * 3/4 && !(stat & NOPOWER)) + add_overlay("sparks_damaged") + else + icon_state = "door_open" + if((stat & BROKEN) && !(stat & NOPOWER)) + add_overlay("sparks_open") + return + +/obj/machinery/door/airlock/do_animate(animation) + switch(animation) + if("opening") + cut_overlay() + if(p_open) + spawn(2) // The only work around that works. Downside is that the door will be gone for a millisecond. + flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking + update_icon() + else + flick("door_opening", src)//[stat ? "_stat":] + update_icon() + if("closing") + cut_overlay() + if(p_open) + spawn(2) + flick("o_door_closing", src) + update_icon() + else + flick("door_closing", src) + update_icon() + if("spark") + if(density) + flick("door_spark", src) + if("deny") + if(density && src.arePowerSystemsOn()) + flick("door_deny", src) + playsound(src, denied_sound, 50, 0, 3) + return + +/obj/machinery/door/airlock/attack_ai(mob/user as mob) + tgui_interact(user) + +/obj/machinery/door/airlock/attack_ghost(mob/user) + tgui_interact(user) + +/obj/machinery/door/airlock/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "AiAirlock", name) + ui.open() + return TRUE + +/obj/machinery/door/airlock/tgui_data(mob/user) + var/list/data = list() + + var/list/power = list() + power["main"] = main_power_lost_until > 0 ? 0 : 2 + power["main_timeleft"] = round(main_power_lost_until > 0 ? max(main_power_lost_until - world.time, 0) / 10 : main_power_lost_until, 1) + power["backup"] = backup_power_lost_until > 0 ? 0 : 2 + power["backup_timeleft"] = round(backup_power_lost_until > 0 ? max(backup_power_lost_until - world.time, 0) / 10 : backup_power_lost_until, 1) + data["power"] = power + + data["shock"] = (electrified_until == 0) ? 2 : 0 + data["shock_timeleft"] = round(electrified_until > 0 ? max(electrified_until - world.time, 0) / 10 : electrified_until, 1) + data["id_scanner"] = !aiDisabledIdScanner + data["locked"] = locked // bolted + data["lights"] = lights // bolt lights + data["safe"] = safe // safeties + data["speed"] = normalspeed // safe speed + data["welded"] = welded // welded + data["opened"] = !density // opened + + var/list/wire = list() + wire["main_1"] = !wires.is_cut(WIRE_MAIN_POWER1) + wire["main_2"] = !wires.is_cut(WIRE_MAIN_POWER2) + wire["backup_1"] = !wires.is_cut(WIRE_BACKUP_POWER1) + wire["backup_2"] = !wires.is_cut(WIRE_BACKUP_POWER2) + wire["shock"] = !wires.is_cut(WIRE_ELECTRIFY) + wire["id_scanner"] = !wires.is_cut(WIRE_IDSCAN) + wire["bolts"] = !wires.is_cut(WIRE_DOOR_BOLTS) + wire["lights"] = !wires.is_cut(WIRE_BOLT_LIGHT) + wire["safe"] = !wires.is_cut(WIRE_SAFETY) + wire["timing"] = !wires.is_cut(WIRE_SPEED) + + data["wires"] = wire + return data + +/obj/machinery/door/airlock/proc/hack(mob/user as mob) + if(src.aiHacking==0) + src.aiHacking=1 + spawn(20) + //TODO: Make this take a minute + to_chat(user, "Airlock AI control has been blocked. Beginning fault-detection.") + sleep(50) + if(src.canAIControl()) + to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") + src.aiHacking=0 + return + else if(!src.canAIHack(user)) + to_chat(user, "We've lost our connection! Unable to hack airlock.") + src.aiHacking=0 + return + to_chat(user, "Fault confirmed: airlock control wire disabled or cut.") + sleep(20) + to_chat(user, "Attempting to hack into airlock. This may take some time.") + sleep(200) + if(src.canAIControl()) + to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") + src.aiHacking=0 + return + else if(!src.canAIHack(user)) + to_chat(user, "We've lost our connection! Unable to hack airlock.") + src.aiHacking=0 + return + to_chat(user, "Upload access confirmed. Loading control program into airlock software.") + sleep(170) + if(src.canAIControl()) + to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") + src.aiHacking=0 + return + else if(!src.canAIHack(user)) + to_chat(user, "We've lost our connection! Unable to hack airlock.") + src.aiHacking=0 + return + to_chat(user, "Transfer complete. Forcing airlock to execute program.") + sleep(50) + //disable blocked control + src.aiControlDisabled = 2 + to_chat(user, "Receiving control information from airlock.") + sleep(10) + //bring up airlock dialog + src.aiHacking = 0 + if (user) + src.attack_ai(user) + +/obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target) + if (src.isElectrified()) + if (istype(mover, /obj/item)) + var/obj/item/i = mover + if (i.matter && (DEFAULT_WALL_MATERIAL in i.matter) && i.matter[DEFAULT_WALL_MATERIAL] > 0) + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(5, 1, src) + s.start() + return ..() + +/obj/machinery/door/airlock/attack_hand(mob/user as mob) + if(!istype(usr, /mob/living/silicon)) + if(src.isElectrified()) + if(src.shock(user, 100)) + return + + if(istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/X = user + if(istype(X.species, /datum/species/xenos)) + src.attack_alien(user) + return + + if(src.p_open) + user.set_machine(src) + wires.Interact(user) + else + ..(user) + return + +/obj/machinery/door/airlock/tgui_act(action, params) + if(..()) + return TRUE + if(!user_allowed(usr)) + return TRUE + + switch(action) + if("disrupt-main") + if(!main_power_lost_until) + loseMainPower() + update_icon() + else + to_chat(usr, "Main power is already offline.") + . = TRUE + if("disrupt-backup") + if(!backup_power_lost_until) + loseBackupPower() + update_icon() + else + to_chat(usr, "Backup power is already offline.") + . = TRUE + if("shock-restore") + electrify(0, 1) + . = TRUE + if("shock-temp") + electrify(30, 1) + . = TRUE + if("shock-perm") + electrify(-1, 1) + . = TRUE + if("idscan-toggle") + set_idscan(aiDisabledIdScanner, 1) + . = TRUE + // if("emergency-toggle") + // toggle_emergency(usr) + // . = TRUE + if("bolt-toggle") + toggle_bolt(usr) + . = TRUE + if("light-toggle") + if(wires.is_cut(WIRE_BOLT_LIGHT)) + to_chat(usr, "The bolt lights wire is cut - The door bolt lights are permanently disabled.") + return + lights = !lights + update_icon() + . = TRUE + if("safe-toggle") + set_safeties(!safe, 1) + . = TRUE + if("speed-toggle") + if(wires.is_cut(WIRE_SPEED)) + to_chat(usr, "The timing wire is cut - Cannot alter timing.") + return + normalspeed = !normalspeed + . = TRUE + if("open-close") + user_toggle_open(usr) + . = TRUE + + update_icon() + return 1 + +/obj/machinery/door/airlock/proc/user_allowed(mob/user) + var/allowed = (issilicon(user) && canAIControl(user)) + if(!allowed && isobserver(user)) + var/mob/observer/dead/D = user + if(D.can_admin_interact()) + allowed = TRUE + return allowed + +/obj/machinery/door/airlock/proc/toggle_bolt(mob/user) + if(!user_allowed(user)) + return + if(wires.is_cut(WIRE_DOOR_BOLTS)) + to_chat(user, "The door bolt drop wire is cut - you can't toggle the door bolts.") + return + if(locked) + if(!arePowerSystemsOn()) + to_chat(user, "The door has no power - you can't raise the door bolts.") + else + unlock() + to_chat(user, "The door bolts have been raised.") + // log_combat(user, src, "unbolted") + else + lock() + to_chat(user, "The door bolts have been dropped.") + // log_combat(user, src, "bolted") + +/obj/machinery/door/airlock/proc/user_toggle_open(mob/user) + if(!user_allowed(user)) + return + if(welded) + to_chat(user, text("The airlock has been welded shut!")) + else if(locked) + to_chat(user, text("The door bolts are down!")) + else if(!density) + close() + else + open() + +/obj/machinery/door/airlock/proc/can_remove_electronics() + return src.p_open && (operating < 0 || (!operating && welded && !src.arePowerSystemsOn() && density && (!src.locked || (stat & BROKEN)))) + +/obj/machinery/door/airlock/attackby(obj/item/C, mob/user as mob) + //to_world("airlock attackby src [src] obj [C] mob [user]") + if(!istype(usr, /mob/living/silicon)) + if(src.isElectrified()) + if(src.shock(user, 75)) + return + if(istype(C, /obj/item/taperoll)) + return + + src.add_fingerprint(user) + if(istype(C, /mob/living)) + ..() + return + if(!repairing && istype(C, /obj/item/weldingtool) && !( src.operating > 0 ) && src.density) + var/obj/item/weldingtool/W = C + if(W.remove_fuel(0,user)) + if(!src.welded) + src.welded = 1 + else + src.welded = null + playsound(src, C.usesound, 75, 1) + src.update_icon() + return + else + return + else if(C.is_screwdriver()) //we don't want screwdrivers to toggle the door, so... + if (src.p_open) + if (stat & BROKEN) + to_chat(usr, "The panel is broken and cannot be closed.") + else //close the panel, do the sound, update the icon, but don't toggle the door + src.p_open = FALSE + playsound(src, C.usesound, 50, 1) + src.update_icon() + return + else //open the panel, do the sound, update the icon, open the wires menu but don't toggle the door + src.p_open = TRUE + playsound(src, C.usesound, 50, 1) + src.update_icon() + return src.attack_hand(user) + else if(C.is_wirecutter()) + return src.attack_hand(user) + else if(istype(C, /obj/item/multitool)) + return src.attack_hand(user) + else if(istype(C, /obj/item/assembly/signaler)) + return src.attack_hand(user) + else if(istype(C, /obj/item/pai_cable)) // -- TLE + var/obj/item/pai_cable/cable = C + cable.plugin(src, user) + else if(!repairing && C.is_crowbar()) + if(can_remove_electronics()) + playsound(src, C.usesound, 75, 1) + user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.") + if(do_after(user,40 * C.toolspeed)) + to_chat(user, "You removed the airlock electronics!") + + var/obj/structure/door_assembly/da = new assembly_type(src.loc) + if (istype(da, /obj/structure/door_assembly/multi_tile)) + da.set_dir(src.dir) + + da.anchored = 1 + if(mineral) + da.glass = mineral + //else if(glass) + else if(glass && !da.glass) + da.glass = 1 + da.state = 1 + da.created_name = src.name + da.update_state() + + if(operating == -1 || (stat & BROKEN)) + new /obj/item/circuitboard/broken(src.loc) + operating = 0 + else + if (!electronics) create_electronics() + + electronics.loc = src.loc + electronics = null + + qdel(src) + return + else if(arePowerSystemsOn()) + to_chat(user, "The airlock's motors resist your efforts to force it.") + else if(locked) + to_chat(user, "The airlock's bolts prevent it from being forced.") + else + if(density) + spawn(0) open(1) + else + spawn(0) close(1) + + // Check if we're using a crowbar or armblade, and if the airlock's unpowered for whatever reason (off, broken, etc). + if((C.pry == 1) && !arePowerSystemsOn()) + if(locked) + to_chat(user, "The airlock's bolts prevent it from being forced.") + else if( !welded && !operating ) + if(istype(C, /obj/item/material/twohanded/fireaxe)) // If this is a fireaxe, make sure it's held in two hands. + var/obj/item/material/twohanded/fireaxe/F = C + if(!F.wielded) + to_chat(user, "You need to be wielding \the [F] to do that.") + return + // At this point, it's an armblade or a fireaxe that passed the wielded test, let's try to open it. + if(density) + spawn(0) + open(1) + else + spawn(0) + close(1) + else + ..() + return + +/obj/machinery/door/airlock/phoron/attackby(C as obj, mob/user as mob) + if(C) + ignite(is_hot(C)) + ..() + +/obj/machinery/door/airlock/set_broken() + src.p_open = TRUE + stat |= BROKEN + if (secured_wires) + lock() + for (var/mob/O in viewers(src, null)) + if ((O.client && !( O.blinded ))) + O.show_message("[src.name]'s control panel bursts open, sparks spewing out!") + playsound(src.loc, 'sound/machines/airlock_break.ogg', 100, 1) + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(5, 1, src) + s.start() + + update_icon() + return + +/obj/machinery/door/airlock/open(var/forced=0) + if(!can_open(forced)) + return 0 + use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people + + //if the door is unpowered then it doesn't make sense to hear the woosh of a pneumatic actuator + for(var/P in player_list) + var/mob/M = P + if(!M || !M.client) + continue + var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds) + var/department_door_sounds = M.client.is_preference_enabled(/datum/client_preference/department_door_sounds) + var/sound + var/volume + if(old_sounds) // Do we have old sounds enabled? Play these even if we have department door sounds enabled. + if(arePowerSystemsOn()) + sound = legacy_open_powered + volume = 50 + else + sound = open_sound_unpowered + volume = 75 + else if(!old_sounds && department_door_sounds && src.department_open_powered) // Else, we have old sounds disabled, the door has per-department door sounds, and we have chosen to play department door sounds, use these. + if(arePowerSystemsOn()) + sound = department_open_powered + volume = 50 + else + sound = open_sound_unpowered + volume = 75 + else // Else, play these. + if(arePowerSystemsOn()) + sound = open_sound_powered + volume = 50 + else + sound = open_sound_unpowered + volume = 75 + + var/turf/T = get_turf(M) + var/distance = get_dist(T, get_turf(src)) + if(distance <= world.view * 2) + if(T && T.z == get_z(src)) + M.playsound_local(get_turf(src), sound, volume, 1, null, 0, TRUE, sound(sound), volume_channel = VOLUME_CHANNEL_DOORS) + + if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density) + src.closeOther.close() + return ..() + +/obj/machinery/door/airlock/can_open(var/forced=0) + if(!forced) + if(!arePowerSystemsOn() || wires.is_cut(WIRE_OPEN_DOOR)) + return 0 + + if(locked || welded) + return 0 + return ..() + +/obj/machinery/door/airlock/can_close(var/forced=0) + if(locked || welded) + return 0 + + if(!forced) + //despite the name, this wire is for general door control. + if(!arePowerSystemsOn() || wires.is_cut(WIRE_OPEN_DOOR)) + return 0 + + return ..() + +/atom/movable/proc/blocks_airlock() + return density + +/obj/machinery/door/blocks_airlock() + return 0 + +/obj/machinery/mech_sensor/blocks_airlock() + return 0 + +/mob/living/blocks_airlock() + return 1 + +/atom/movable/proc/airlock_crush(var/crush_damage) + return 0 + +/obj/machinery/portable_atmospherics/canister/airlock_crush(var/crush_damage) + . = ..() + health -= crush_damage + healthcheck() + +/obj/effect/energy_field/airlock_crush(var/crush_damage) + adjust_strength(crush_damage) + +/obj/structure/closet/airlock_crush(var/crush_damage) + ..() + damage(crush_damage) + for(var/atom/movable/AM in src) + AM.airlock_crush() + return 1 + +/mob/living/airlock_crush(var/crush_damage) + . = ..() + adjustBruteLoss(crush_damage) + SetStunned(5) + SetWeakened(5) + var/turf/T = get_turf(src) + T.add_blood(src) + return 1 + +/mob/living/carbon/airlock_crush(var/crush_damage) + . = ..() + if(can_feel_pain()) + emote("scream") + +/mob/living/silicon/robot/airlock_crush(var/crush_damage) + adjustBruteLoss(crush_damage) + return 0 + +/obj/machinery/door/airlock/close(var/forced=0) + if(!can_close(forced)) + return 0 + + if(safe) + for(var/turf/turf in locs) + for(var/atom/movable/AM in turf) + if(AM.blocks_airlock()) + if(!has_beeped) + playsound(src, 'sound/machines/buzz-two.ogg', 50, 0) + has_beeped = 1 + close_door_at = world.time + 6 + return + + for(var/turf/turf in locs) + for(var/atom/movable/AM in turf) + if(AM.airlock_crush(DOOR_CRUSH_DAMAGE)) + take_damage(DOOR_CRUSH_DAMAGE) + + use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people + has_beeped = 0 + for(var/P in player_list) + var/mob/M = P + if(!M || !M.client) + continue + var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds) + var/department_door_sounds = M.client.is_preference_enabled(/datum/client_preference/department_door_sounds) + var/sound + var/volume + if(old_sounds) + if(arePowerSystemsOn()) + sound = legacy_close_powered + volume = 50 + else + sound = open_sound_unpowered + volume = 75 + else if(!old_sounds && department_door_sounds && src.department_close_powered) // Else, we have old sounds disabled, the door has per-department door sounds, and we have chosen to play department door sounds, use these. + if(arePowerSystemsOn()) + sound = department_close_powered + volume = 50 + else + sound = open_sound_unpowered + volume = 75 + else + if(arePowerSystemsOn()) + sound = close_sound_powered + volume = 50 + else + sound = open_sound_unpowered + volume = 75 + + var/turf/T = get_turf(M) + var/distance = get_dist(T, get_turf(src)) + if(distance <= world.view * 2) + if(T && T.z == get_z(src)) + M.playsound_local(get_turf(src), sound, volume, 1, null, 0, TRUE, sound(sound), volume_channel = VOLUME_CHANNEL_DOORS) + for(var/turf/turf in locs) + var/obj/structure/window/killthis = (locate(/obj/structure/window) in turf) + if(killthis) + killthis.ex_act(2)//Smashin windows + return ..() + +/obj/machinery/door/airlock/proc/lock(var/forced=0) + if(locked) + return 0 + + if (operating && !forced) return 0 + + src.locked = 1 + playsound(src, bolt_down_sound, 30, 0, 3, volume_channel = VOLUME_CHANNEL_DOORS) + for(var/mob/M in range(1,src)) + M.show_message("You hear a click from the bottom of the door.", 2) + update_icon() + return 1 + +/obj/machinery/door/airlock/proc/unlock(var/forced=0) + if(!src.locked) + return + + if (!forced) + if(operating || !src.arePowerSystemsOn() || wires.is_cut(WIRE_DOOR_BOLTS)) return + + src.locked = 0 + playsound(src, bolt_up_sound, 30, 0, 3, volume_channel = VOLUME_CHANNEL_DOORS) + for(var/mob/M in range(1,src)) + M.show_message("You hear a click from the bottom of the door.", 2) + update_icon() + return 1 + +/obj/machinery/door/airlock/allowed(mob/M) + if(locked) + return 0 + return ..(M) + +/obj/machinery/door/airlock/Initialize(var/ml, var/obj/structure/door_assembly/assembly=null) + + if(src.closeOtherId != null) + for (var/obj/machinery/door/airlock/A in machines) + if(A.closeOtherId == src.closeOtherId && A != src) + src.closeOther = A + break + name = "\improper [name]" + + . = ..() + + //if assembly is given, create the new door from the assembly + if (assembly && istype(assembly)) + assembly_type = assembly.type + + electronics = assembly.electronics + electronics.loc = src + + //update the door's access to match the electronics' + secured_wires = electronics.secure + if(electronics.one_access) + LAZYCLEARLIST(req_access) + req_one_access = src.electronics.conf_access + else + LAZYCLEARLIST(req_one_access) + req_access = src.electronics.conf_access + + //get the name from the assembly + if(assembly.created_name) + name = assembly.created_name + else + name = "[istext(assembly.glass) ? "[assembly.glass] airlock" : assembly.base_name]" + + //get the dir from the assembly + set_dir(assembly.dir) + + //wires + var/turf/T = get_turf(src) + if(T && (T.z in using_map.admin_levels)) + secured_wires = 1 + if (secured_wires) + wires = new/datum/wires/airlock/secure(src) + else + wires = new/datum/wires/airlock(src) + + if(frequency) + set_frequency(frequency) + update_icon() + +/obj/machinery/door/airlock/Destroy() + qdel(wires) + wires = null + return ..() + +// Most doors will never be deconstructed over the course of a round, +// so as an optimization defer the creation of electronics until +// the airlock is deconstructed +/obj/machinery/door/airlock/proc/create_electronics() + //create new electronics + if (secured_wires) + src.electronics = new/obj/item/airlock_electronics/secure( src.loc ) + else + src.electronics = new/obj/item/airlock_electronics( src.loc ) + + //update the electronics to match the door's access + if(LAZYLEN(req_access)) + electronics.conf_access = req_access + else if (LAZYLEN(req_one_access)) + electronics.conf_access = req_one_access + electronics.one_access = 1 + +/obj/machinery/door/airlock/emp_act(var/severity) + if(prob(40/severity)) + var/duration = world.time + SecondsToTicks(30 / severity) + if(duration > electrified_until) + electrify(duration) + ..() + +/obj/machinery/door/airlock/power_change() //putting this is obj/machinery/door itself makes non-airlock doors turn invisible for some reason + ..() + if(stat & NOPOWER) + // If we lost power, disable electrification + // Keeping door lights on, runs on internal battery or something. + electrified_until = 0 + update_icon() + +/obj/machinery/door/airlock/proc/prison_open() + if(arePowerSystemsOn()) + src.unlock() + src.open() + src.lock() + return + + +/obj/machinery/door/airlock/rcd_values(mob/living/user, obj/item/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + // Old RCD code made it cost 10 units to decon an airlock. + // Now the new one costs ten "sheets". + return list( + RCD_VALUE_MODE = RCD_DECONSTRUCT, + RCD_VALUE_DELAY = 5 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 10 + ) + return FALSE + +/obj/machinery/door/airlock/rcd_act(mob/living/user, obj/item/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + to_chat(user, span("notice", "You deconstruct \the [src].")) + qdel(src) + return TRUE + return FALSE +>>>>>>> 6b909477bca... the little construction pr (#9002) diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index c3fa1701fd..786e7f39c1 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -202,11 +202,22 @@ frame_class = FRAME_CLASS_MACHINE frame_size = 3 +<<<<<<< HEAD /datum/frame/frame_types/injector_maker name = "Ready-to-Use Medicine 3000" frame_class = FRAME_CLASS_MACHINE circuit = /obj/machinery/atmospheric_field_generator frame_size = 3 +======= +/datum/frame/frame_types/electrochromic_button + name = "Electrochromic Window Button" + frame_class = FRAME_CLASS_ALARM + frame_size = 1 + frame_style = FRAME_STYLE_WALL + x_offset = 24 + y_offset = 24 + +>>>>>>> 6b909477bca... the little construction pr (#9002) ////////////////////////////// // Frame Object (Structure) diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index e5fedd49cc..5af1e32ea1 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -20,9 +20,50 @@ drop_sound = 'sound/items/drop/axe.ogg' pickup_sound = 'sound/items/pickup/axe.ogg' +//crafting / welding vars + var/datum/material/material //*sigh* i guess this is how we're doing this. + var/craftable = FALSE //set to TRUE for tiles you can craft stuff from directly, like grass + var/can_weld = FALSE //set to TRUE for tiles you can reforge into their components via welding, like metal + var/welds_into = /obj/item/stack/material/steel //what you get from the welding. defaults to steel. + var/default_type = DEFAULT_WALL_MATERIAL + + + /obj/item/stack/tile/Initialize() . = ..() randpixel_xy() + if(craftable) + material = get_material_by_name("[default_type]") + if(!material) + return INITIALIZE_HINT_QDEL + if(material) //sanity check + recipes = material.get_recipes() + stacktype = material.stack_type + +/obj/item/stack/tile/attackby(obj/item/W as obj, mob/user as mob) + if (istype(W, /obj/item/weldingtool)) + var/obj/item/weldingtool/WT = W + + if(can_weld == FALSE) + to_chat("You can't reform these into their original components.") + return + + if(get_amount() < 4) + to_chat(user, "You need at least four tiles to do this.") + return + + if(WT.remove_fuel(0,user)) + new welds_into(usr.loc) + usr.update_icon() + visible_message("\The [src] is shaped by [user.name] with the welding tool.","You hear welding.") + var/obj/item/stack/tile/T = src + src = null + var/replace = (user.get_inactive_hand()==T) + T.use(4) + if (!T && replace) + user.put_in_hands(welds_into) + return TRUE + return ..() /* * Grass @@ -32,6 +73,7 @@ singular_name = "grass floor tile" desc = "A patch of grass like they often use on golf courses." icon_state = "tile_grass" + default_type = "grass" force = 1.0 throwforce = 1.0 throw_speed = 5 @@ -41,6 +83,7 @@ no_variants = FALSE drop_sound = 'sound/items/drop/herb.ogg' pickup_sound = 'sound/items/pickup/herb.ogg' + craftable = TRUE /* * Wood @@ -187,6 +230,7 @@ throw_speed = 5 throw_range = 20 no_variants = FALSE + can_weld = TRUE /obj/item/stack/tile/floor/red name = "red floor tile" @@ -217,21 +261,36 @@ name = "steel floor tile" singular_name = "steel floor tile" icon_state = "tile_steel" +<<<<<<< HEAD matter = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT / 4) +======= + matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4) + welds_into = /obj/item/stack/material/plasteel +>>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/steel name = "steel floor tile" singular_name = "steel floor tile" icon_state = "tile_steel" +<<<<<<< HEAD matter = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT / 4) +======= + matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4) + welds_into = /obj/item/stack/material/plasteel +>>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/white name = "white floor tile" singular_name = "white floor tile" icon_state = "tile_white" +<<<<<<< HEAD matter = list(MAT_PLASTIC = SHEET_MATERIAL_AMOUNT / 4) +======= + matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4) + welds_into = /obj/item/stack/material/plastic +>>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/yellow @@ -245,14 +304,24 @@ name = "dark floor tile" singular_name = "dark floor tile" icon_state = "tile_steel" +<<<<<<< HEAD matter = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT / 4) +======= + matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4) + welds_into = /obj/item/stack/material/plasteel +>>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/freezer name = "freezer floor tile" singular_name = "freezer floor tile" icon_state = "tile_freezer" +<<<<<<< HEAD matter = list(MAT_PLASTIC = SHEET_MATERIAL_AMOUNT / 4) +======= + matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4) + welds_into = /obj/item/stack/material/plastic +>>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/cyborg @@ -264,6 +333,7 @@ charge_costs = list(250) stacktype = /obj/item/stack/tile/floor build_type = /obj/item/stack/tile/floor + can_weld = FALSE //we're not going there /obj/item/stack/tile/linoleum name = "linoleum" @@ -276,6 +346,7 @@ throw_range = 20 flags = 0 no_variants = FALSE + can_weld = FALSE /obj/item/stack/tile/wmarble name = "light marble tile" @@ -288,6 +359,8 @@ throw_range = 20 flags = 0 no_variants = FALSE + can_weld = TRUE + welds_into = /obj/item/stack/material/marble /obj/item/stack/tile/bmarble name = "dark marble tile" @@ -300,12 +373,15 @@ throw_range = 20 flags = 0 no_variants = FALSE + can_weld = TRUE + welds_into = /obj/item/stack/material/marble /obj/item/stack/tile/roofing name = "roofing" singular_name = "roofing" desc = "A section of roofing material. You can use it to repair the ceiling, or expand it." icon_state = "techtile_grid" + can_weld = FALSE //roofing can also be made from wood, so let's not open that can of worms today /obj/item/stack/tile/roofing/cyborg name = "roofing synthesizer" @@ -313,4 +389,9 @@ uses_charge = 1 charge_costs = list(250) stacktype = /obj/item/stack/tile/roofing - build_type = /obj/item/stack/tile/roofing \ No newline at end of file +<<<<<<< HEAD + build_type = /obj/item/stack/tile/roofing +======= + build_type = /obj/item/stack/tile/roofing + can_weld = FALSE +>>>>>>> 6b909477bca... the little construction pr (#9002) diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index 000cd011f6..ef1e041fb7 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -74,6 +74,12 @@ board_type = new /datum/frame/frame_types/geiger matter = list(MAT_STEEL = 50, MAT_GLASS = 50) +/obj/item/circuitboard/electrochromic + name = T_BOARD("electrochromic button") + build_path = /obj/machinery/button/windowtint + board_type = new /datum/frame/frame_types/electrochromic_button + matter = list(MAT_STEEL = 50, "glass" = 50) + //Computer /obj/item/weapon/circuitboard/holopad diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 30999cd3d6..d5fcf7e8d1 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -69,9 +69,12 @@ return if (istype(C, /obj/item/stack/rods)) var/obj/item/stack/rods/R = C - if(R.use(2)) + if(R.get_amount() < 2) + to_chat(user, "You need at least two rods to form a catwalk here.") + else to_chat(user, "You start connecting \the [R.name] to \the [src.name] ...") if(do_after(user, 5 SECONDS)) + R.use(2) //2023-02-27 bugfix to prevent rods being used without catwalk creation src.alpha = 0 // Note: I don't know why this is set, Eris did it, just trusting for now. ~Leshana new /obj/structure/catwalk(src.loc) qdel(src) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index fa9d9dc2a0..04d8b44d99 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD /obj/structure/window name = "window" desc = "A window." @@ -695,3 +696,711 @@ qdel(src) return TRUE return FALSE +======= +/obj/structure/window + name = "window" + desc = "A window." + icon = 'icons/obj/structures.dmi' + density = 1 + can_atmos_pass = ATMOS_PASS_PROC + w_class = ITEMSIZE_NORMAL + + layer = WINDOW_LAYER + pressure_resistance = 4*ONE_ATMOSPHERE + anchored = 1.0 + atom_flags = ATOM_HAS_TRANSITION_PRIORITY + var/maxhealth = 14.0 + var/maximal_heat = T0C + 100 // Maximal heat before this window begins taking damage from fire + var/damage_per_fire_tick = 2.0 // Amount of damage per fire tick. Regular windows are not fireproof so they might as well break quickly. + var/health + var/force_threshold = 0 + var/ini_dir = null + var/state = 2 + var/reinf = 0 + var/basestate + var/shardtype = /obj/item/material/shard + var/glasstype = null // Set this in subtypes. Null is assumed strange or otherwise impossible to dismantle, such as for shuttle glass. + var/silicate = 0 // number of units of silicate + var/fulltile = FALSE // Set to true on full-tile variants. + +/obj/structure/window/examine(mob/user) + . = ..() + + if(health == maxhealth) + . += "It looks fully intact." + else + var/perc = health / maxhealth + if(perc > 0.75) + . += "It has a few cracks." + else if(perc > 0.5) + . += "It looks slightly damaged." + else if(perc > 0.25) + . += "It looks moderately damaged." + else + . += "It looks heavily damaged." + if(silicate) + if (silicate < 30) + . += "It has a thin layer of silicate." + else if (silicate < 70) + . += "It is covered in silicate." + else + . += "There is a thick layer of silicate covering it." + +/obj/structure/window/examine_icon() + return icon(icon=initial(icon),icon_state=initial(icon_state)) + +/obj/structure/window/take_damage(var/damage = 0, var/sound_effect = 1) + var/initialhealth = health + + if(silicate) + damage = damage * (1 - silicate / 200) + + health = max(0, health - damage) + + if(health <= 0) + shatter() + else + if(sound_effect) + playsound(src, 'sound/effects/Glasshit.ogg', 100, 1) + if(health < maxhealth / 4 && initialhealth >= maxhealth / 4) + visible_message("[src] looks like it's about to shatter!" ) + update_icon() + else if(health < maxhealth / 2 && initialhealth >= maxhealth / 2) + visible_message("[src] looks seriously damaged!" ) + update_icon() + else if(health < maxhealth * 3/4 && initialhealth >= maxhealth * 3/4) + visible_message("Cracks begin to appear in [src]!" ) + update_icon() + return + +/obj/structure/window/proc/apply_silicate(var/amount) + if(health < maxhealth) // Mend the damage + health = min(health + amount * 3, maxhealth) + if(health == maxhealth) + visible_message("[src] looks fully repaired." ) + else // Reinforce + silicate = min(silicate + amount, 100) + updateSilicate() + +/obj/structure/window/proc/updateSilicate() + cut_overlays() + update_icon() + + var/image/img = image(src) + img.color = "#ffffff" + img.alpha = silicate * 255 / 100 + add_overlay(img) + +/obj/structure/window/proc/shatter(var/display_message = 1) + playsound(src, "shatter", 70, 1) + if(display_message) + visible_message("[src] shatters!") + new shardtype(loc) + if(reinf) + new /obj/item/stack/rods(loc) + if(is_fulltile()) + new shardtype(loc) //todo pooling? + if(reinf) + new /obj/item/stack/rods(loc) + qdel(src) + return + + +/obj/structure/window/bullet_act(var/obj/item/projectile/Proj) + + var/proj_damage = Proj.get_structure_damage() + if(!proj_damage) return + + ..() + take_damage(proj_damage) + return + + +/obj/structure/window/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + shatter(0) + return + if(3.0) + if(prob(50)) + shatter(0) + return + +/obj/structure/window/blob_act() + take_damage(50) + +/obj/structure/window/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return TRUE + if(is_fulltile()) + return FALSE //full tile window, you can't move into it! + if((get_dir(loc, target) & dir) || (get_dir(mover, target) == turn(dir, 180))) + return !density + else + return TRUE + +/obj/structure/window/CanZASPass(turf/T, is_zone) + if(is_fulltile() || get_dir(T, loc) == turn(dir, 180)) // Make sure we're handling the border correctly. + return !anchored // If it's anchored, it'll block air. + return TRUE // Don't stop airflow from the other sides. + +/obj/structure/window/CheckExit(atom/movable/O as mob|obj, target as turf) + if(istype(O) && O.checkpass(PASSGLASS)) + return 1 + if(get_dir(O.loc, target) == dir) + return 0 + return 1 + +/obj/structure/window/hitby(AM as mob|obj) + ..() + visible_message("[src] was hit by [AM].") + var/tforce = 0 + if(ismob(AM)) + tforce = 40 + else if(isobj(AM)) + var/obj/item/I = AM + tforce = I.throwforce + if(reinf) tforce *= 0.25 + if(health - tforce <= 7 && !reinf) + anchored = 0 + update_verbs() + update_nearby_icons() + step(src, get_dir(AM, src)) + take_damage(tforce) + +/obj/structure/window/attack_tk(mob/user as mob) + user.visible_message("Something knocks on [src].") + playsound(src, 'sound/effects/Glasshit.ogg', 50, 1) + +/obj/structure/window/attack_hand(mob/user as mob) + user.setClickCooldown(user.get_attack_speed()) + if(HULK in user.mutations) + user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) + user.visible_message("[user] smashes through [src]!") + user.do_attack_animation(src) + shatter() + + else if (usr.a_intent == I_HURT) + + if (istype(usr,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = usr + if(H.species.can_shred(H)) + attack_generic(H,25) + return + + playsound(src, 'sound/effects/glassknock.ogg', 80, 1) + user.do_attack_animation(src) + usr.visible_message("\The [usr] bangs against \the [src]!", + "You bang against \the [src]!", + "You hear a banging sound.") + else + playsound(src, 'sound/effects/glassknock.ogg', 80, 1) + usr.visible_message("[usr.name] knocks on the [src.name].", + "You knock on the [src.name].", + "You hear a knocking sound.") + return + +/obj/structure/window/attack_generic(var/mob/user, var/damage) + user.setClickCooldown(user.get_attack_speed()) + if(!damage) + return + if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) + visible_message("[user] smashes into [src]!") + if(reinf) + damage = damage / 2 + take_damage(damage) + else + visible_message("\The [user] bonks \the [src] harmlessly.") + user.do_attack_animation(src) + return 1 + +/obj/structure/window/attackby(obj/item/W as obj, mob/user as mob) + if(!istype(W)) return//I really wish I did not need this + + // Fixing. + if(istype(W, /obj/item/weldingtool) && user.a_intent == I_HELP) + var/obj/item/weldingtool/WT = W + if(health < maxhealth) + if(WT.remove_fuel(1 ,user)) + to_chat(user, "You begin repairing [src]...") + playsound(src, WT.usesound, 50, 1) + if(do_after(user, 40 * WT.toolspeed, target = src)) + health = maxhealth + // playsound(src, 'sound/items/Welder.ogg', 50, 1) + update_icon() + to_chat(user, "You repair [src].") + else + to_chat(user, "[src] is already in good condition!") + return + + // Slamming. + if (istype(W, /obj/item/grab) && get_dist(src,user)<2) + var/obj/item/grab/G = W + if(istype(G.affecting,/mob/living)) + var/mob/living/M = G.affecting + var/state = G.state + qdel(W) //gotta delete it here because if window breaks, it won't get deleted + switch (state) + if(1) + M.visible_message("[user] slams [M] against \the [src]!") + M.apply_damage(7) + hit(10) + if(2) + M.visible_message("[user] bashes [M] against \the [src]!") + if (prob(50)) + M.Weaken(1) + M.apply_damage(10) + hit(25) + if(3) + M.visible_message("[user] crushes [M] against \the [src]!") + M.Weaken(5) + M.apply_damage(20) + hit(50) + return + + if(W.item_flags & NOBLUDGEON) return + + if(W.is_screwdriver()) + if(reinf && state >= 1) + state = 3 - state + update_nearby_icons() + playsound(src, W.usesound, 75, 1) + to_chat(user, "You have [state == 1 ? "un" : ""]fastened the window [state ? "from" : "to"] the frame.") + else if(reinf && state == 0) + anchored = !anchored + update_nearby_icons() + update_verbs() + playsound(src, W.usesound, 75, 1) + to_chat(user, "You have [anchored ? "" : "un"]fastened the frame [anchored ? "to" : "from"] the floor.") + else if(!reinf) + anchored = !anchored + update_nearby_icons() + update_verbs() + playsound(src, W.usesound, 75, 1) + to_chat(user, "You have [anchored ? "" : "un"]fastened the window [anchored ? "to" : "from"] the floor.") + else if(W.is_crowbar() && reinf && state <= 1) + state = 1 - state + playsound(src, W.usesound, 75, 1) + to_chat(user, "You have pried the window [state ? "into" : "out of"] the frame.") + else if(W.is_wrench() && !anchored && (!state || !reinf)) + if(!glasstype) + to_chat(user, "You're not sure how to dismantle \the [src] properly.") + else + playsound(src, W.usesound, 75, 1) + visible_message("[user] dismantles \the [src].") + var/obj/item/stack/material/mats = new glasstype(loc) + if(is_fulltile()) + mats.amount = 4 + qdel(src) + else if(istype(W, /obj/item/stack/cable_coil) && reinf && state == 0 && !istype(src, /obj/structure/window/reinforced/polarized)) + var/obj/item/stack/cable_coil/C = W + if (C.use(1)) + playsound(src, 'sound/effects/sparks1.ogg', 75, 1) + user.visible_message( \ + "\The [user] begins to wire \the [src] for electrochromic tinting.", \ + "You begin to wire \the [src] for electrochromic tinting.", \ + "You hear sparks.") + if(do_after(user, 20 * C.toolspeed, src) && state == 0) + playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) + var/obj/structure/window/reinforced/polarized/P = new(loc, dir) + if(is_fulltile()) + P.fulltile = TRUE + P.icon_state = "fwindow" + P.maxhealth = maxhealth + P.health = health + P.state = state + P.anchored = anchored + qdel(src) + else if(istype(W,/obj/item/frame) && anchored) + var/obj/item/frame/F = W + F.try_build(src, user) + else + user.setClickCooldown(user.get_attack_speed(W)) + if(W.damtype == BRUTE || W.damtype == BURN) + user.do_attack_animation(src) + hit(W.force) + if(health <= 7) + anchored = 0 + update_nearby_icons() + step(src, get_dir(user, src)) + else + playsound(src, 'sound/effects/Glasshit.ogg', 75, 1) + ..() + return + +/obj/structure/window/proc/hit(var/damage, var/sound_effect = 1) + if(damage < force_threshold || force_threshold < 0) + return + if(reinf) damage *= 0.5 + take_damage(damage) + return + + +/obj/structure/window/verb/rotate_counterclockwise() + set name = "Rotate Window Counterclockwise" + set category = "Object" + set src in oview(1) + + if(usr.incapacitated()) + return 0 + + if(is_fulltile()) + return 0 + + if(anchored) + to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") + return 0 + + update_nearby_tiles(need_rebuild=1) //Compel updates before + src.set_dir(turn(src.dir, 90)) + updateSilicate() + update_nearby_tiles(need_rebuild=1) + return + + +/obj/structure/window/verb/rotate_clockwise() + set name = "Rotate Window Clockwise" + set category = "Object" + set src in oview(1) + + if(usr.incapacitated()) + return 0 + + if(is_fulltile()) + return 0 + + if(anchored) + to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") + return 0 + + update_nearby_tiles(need_rebuild=1) //Compel updates before + src.set_dir(turn(src.dir, 270)) + updateSilicate() + update_nearby_tiles(need_rebuild=1) + return + +/obj/structure/window/Initialize(var/ml, start_dir=null, constructed=0) + . = ..() + + if (start_dir) + set_dir(start_dir) + + //player-constructed windows + if (constructed) + anchored = 0 + state = 0 + update_verbs() + + health = maxhealth + + ini_dir = dir + + update_nearby_tiles(need_rebuild=1) + update_nearby_icons() + + for(var/obj/structure/table/T in view(src, 1)) + T.update_connections() + T.update_icon() + +/obj/structure/window/Destroy() + density = 0 + update_nearby_tiles() + var/turf/location = loc + . = ..() + for(var/obj/structure/window/W in orange(location, 1)) + W.update_icon() + for(var/obj/structure/table/T in view(location, 1)) + T.update_connections() + T.update_icon() + +/obj/structure/window/Move() + var/ini_dir = dir + update_nearby_tiles(need_rebuild=1) + var/oldloc = loc + . = ..() + set_dir(ini_dir) + update_nearby_tiles(need_rebuild=1) + if(loc != oldloc) + for(var/obj/structure/table/T in view(oldloc, 1) | view(loc, 1)) + T.update_connections() + T.update_icon() + +//checks if this window is full-tile one +/obj/structure/window/proc/is_fulltile() + return fulltile + +/obj/structure/window/is_between_turfs(var/turf/origin, var/turf/target) + if(fulltile) + return TRUE + return ..() + +//This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc! +/obj/structure/window/proc/update_nearby_icons() + update_icon() + for(var/obj/structure/window/W in orange(src, 1)) + W.update_icon() + +//Updates the availabiliy of the rotation verbs +/obj/structure/window/proc/update_verbs() + if(anchored || is_fulltile()) + verbs -= /obj/structure/window/verb/rotate_counterclockwise + verbs -= /obj/structure/window/verb/rotate_clockwise + else if(!is_fulltile()) + verbs += /obj/structure/window/verb/rotate_counterclockwise + verbs += /obj/structure/window/verb/rotate_clockwise + +//merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm) +/obj/structure/window/update_icon() + //A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong. + //this way it will only update full-tile ones + cut_overlays() + if(!is_fulltile()) + // Rotate the sprite somewhat so non-fulltiled windows can be seen as needing repair. + var/full_tilt_degrees = 15 + var/tilt_to_apply = abs((health / maxhealth) - 1) + if(tilt_to_apply && prob(50)) + tilt_to_apply = -tilt_to_apply + adjust_rotation(LERP(0, full_tilt_degrees, tilt_to_apply)) + + icon_state = "[basestate]" + return + var/list/dirs = list() + if(anchored) + for(var/obj/structure/window/W in orange(src,1)) + if(W.anchored && W.density && W.glasstype == src.glasstype && W.is_fulltile()) //Only counts anchored, not-destroyed fill-tile windows. + dirs += get_dir(src, W) + + var/list/connections = dirs_to_corner_states(dirs) + + icon_state = "" + var/list/add = list() + for(var/i = 1 to 4) + var/image/image = image(icon, "[basestate][connections[i]]", dir = 1<<(i-1)) + add += image + add_overlay(add) + + // Damage overlays. + var/ratio = health / maxhealth + ratio = CEILING(ratio * 4, 1) * 25 + + if(ratio > 75) + return + add_overlay(image(icon, "damage[ratio]", layer = layer + 0.1)) + + return + +/obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > maximal_heat) + hit(damage_per_fire_tick, 0) + ..() + + + +/obj/structure/window/basic + desc = "It looks thin and flimsy. A few knocks with... almost anything, really should shatter it." + icon_state = "window" + basestate = "window" + glasstype = /obj/item/stack/material/glass + maximal_heat = T0C + 100 + damage_per_fire_tick = 2.0 + maxhealth = 12.0 + force_threshold = 3 + +/obj/structure/window/basic/full + icon_state = "window-full" + maxhealth = 24 + fulltile = TRUE + +/obj/structure/window/phoronbasic + name = "phoron window" + desc = "A borosilicate alloy window. It seems to be quite strong." + basestate = "phoronwindow" + icon_state = "phoronwindow" + shardtype = /obj/item/material/shard/phoron + glasstype = /obj/item/stack/material/glass/phoronglass + maximal_heat = T0C + 2000 + damage_per_fire_tick = 1.0 + maxhealth = 40.0 + force_threshold = 5 + +/obj/structure/window/phoronbasic/full + icon_state = "phoronwindow-full" + maxhealth = 80 + fulltile = TRUE + +/obj/structure/window/phoronreinforced + name = "reinforced borosilicate window" + desc = "A borosilicate alloy window, with rods supporting it. It seems to be very strong." + basestate = "phoronrwindow" + icon_state = "phoronrwindow" + shardtype = /obj/item/material/shard/phoron + glasstype = /obj/item/stack/material/glass/phoronrglass + reinf = 1 + maximal_heat = T0C + 4000 + damage_per_fire_tick = 1.0 // This should last for 80 fire ticks if the window is not damaged at all. The idea is that borosilicate windows have something like ablative layer that protects them for a while. + maxhealth = 80.0 + force_threshold = 10 + +/obj/structure/window/phoronreinforced/full + icon_state = "phoronrwindow-full" + maxhealth = 160 + fulltile = TRUE + +/obj/structure/window/reinforced + name = "reinforced window" + desc = "It looks rather strong. Might take a few good hits to shatter it." + icon_state = "rwindow" + basestate = "rwindow" + maxhealth = 40.0 + reinf = 1 + maximal_heat = T0C + 750 + damage_per_fire_tick = 2.0 + glasstype = /obj/item/stack/material/glass/reinforced + force_threshold = 6 + +/obj/structure/window/reinforced/full + icon_state = "rwindow-full" + maxhealth = 80 + fulltile = TRUE + +/obj/structure/window/reinforced/tinted + name = "tinted window" + desc = "It looks rather strong and opaque. Might take a few good hits to shatter it." + icon_state = "twindow" + basestate = "twindow" + opacity = 1 + +/obj/structure/window/reinforced/tinted/frosted + name = "frosted window" + desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window." + icon_state = "fwindow" + basestate = "fwindow" + maxhealth = 30 + force_threshold = 5 + +/obj/structure/window/shuttle + name = "shuttle window" + desc = "It looks rather strong. Might take a few good hits to shatter it." + icon = 'icons/obj/podwindows.dmi' + icon_state = "window" + basestate = "window" + maxhealth = 40 + reinf = 1 + basestate = "w" + dir = 5 + force_threshold = 7 + +/obj/structure/window/reinforced/polarized + name = "electrochromic window" + desc = "Adjusts its tint with voltage. Might take a few good hits to shatter it." + var/id + +/obj/structure/window/reinforced/polarized/full + icon_state = "rwindow-full" + maxhealth = 80 + fulltile = TRUE + +/obj/structure/window/reinforced/polarized/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/multitool) && !anchored) // Only allow programming if unanchored! + var/obj/item/multitool/MT = W + // First check if they have a windowtint button buffered + if(istype(MT.connectable, /obj/machinery/button/windowtint)) + var/obj/machinery/button/windowtint/buffered_button = MT.connectable + src.id = buffered_button.id + to_chat(user, "\The [src] is linked to \the [buffered_button] with ID '[id]'.") + return TRUE + // Otherwise fall back to asking them... and remind them what the current ID is. + if(id) + to_chat(user, "The window's current ID is [id].") + var/t = sanitizeSafe(input(user, "Enter the new ID for the window.", src.name, null), MAX_NAME_LEN) + if(t && in_range(src, user)) + src.id = t + to_chat(user, "The new ID of \the [src] is '[id]'.") + return TRUE + . = ..() + +/obj/structure/window/reinforced/polarized/proc/toggle() + if(opacity) + animate(src, color="#FFFFFF", time=5) + set_opacity(0) + else + animate(src, color="#222222", time=5) + set_opacity(1) + + + +/obj/machinery/button/windowtint + name = "window tint control" + icon = 'icons/obj/power.dmi' + icon_state = "light0" + desc = "A remote control switch for polarized windows." + var/range = 7 + circuit = /obj/item/circuitboard/electrochromic + +/obj/machinery/button/windowtint/attack_hand(mob/user as mob) + if(..()) + return 1 + + toggle_tint() + +/obj/machinery/button/windowtint/proc/toggle_tint() + use_power(5) + + active = !active + update_icon() + + for(var/obj/structure/window/reinforced/polarized/W in range(src,range)) + if (W.id == src.id || !W.id) + spawn(0) + W.toggle() + return + +/obj/machinery/button/windowtint/power_change() + ..() + if(active && !powered(power_channel)) + toggle_tint() + +/obj/machinery/button/windowtint/update_icon() + icon_state = "light[active]" + +/obj/machinery/button/windowtint/attackby(obj/item/W as obj, mob/user as mob) + if(default_deconstruction_screwdriver(user, W)) + return + else if(alarm_deconstruction_wirecutters(user, W)) + return + else if(istype(W, /obj/item/multitool)) + var/obj/item/multitool/MT = W + if(!id) + // If no ID is set yet (newly built button?) let them select an ID for first-time use! + var/t = sanitizeSafe(input(user, "Enter an ID for \the [src].", src.name, null), MAX_NAME_LEN) + if(t && in_range(src, user)) + src.id = t + to_chat(user, "The new ID of \the [src] is '[id]'. To reset this, rebuild the control.") + if(id) + // It already has an ID (or they just set one), buffer it for copying to windows. + to_chat(user, "You store \the [src] ID ('[id]') in \the [MT]'s buffer!") + MT.connectable = src + MT.update_icon() + return TRUE + . = ..() + +/obj/structure/window/rcd_values(mob/living/user, obj/item/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + return list( + RCD_VALUE_MODE = RCD_DECONSTRUCT, + RCD_VALUE_DELAY = 5 SECONDS, + RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 5 + ) + +/obj/structure/window/rcd_act(mob/living/user, obj/item/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_DECONSTRUCT) + to_chat(user, span("notice", "You deconstruct \the [src].")) + qdel(src) + return TRUE + return FALSE +>>>>>>> 6b909477bca... the little construction pr (#9002) diff --git a/code/modules/materials/materials/organic/grass.dm b/code/modules/materials/materials/organic/grass.dm new file mode 100644 index 0000000000..4f2af4541e --- /dev/null +++ b/code/modules/materials/materials/organic/grass.dm @@ -0,0 +1,31 @@ +/datum/material/grass + name = MAT_GRASS + display_name = "grass" + stack_type = /obj/item/stack/tile/grass + ignition_point = T0C+300 + melting_point = T0C+300 + protectiveness = 0 + conductive = 0 + integrity = 10 + supply_conversion_value = 1 + +/datum/material/grass/generate_recipes() + recipes = list( + new /datum/stack_recipe_list("bushes and flowers",list( + new /datum/stack_recipe("bush", /obj/structure/flora/ausbushes, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("reed bush", /obj/structure/flora/ausbushes/reedbush, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("leafy bush", /obj/structure/flora/ausbushes/leafybush, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("pale bush", /obj/structure/flora/ausbushes/palebush, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("stalky bush", /obj/structure/flora/ausbushes/stalkybush, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("grassy bush", /obj/structure/flora/ausbushes/grassybush, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("ferny bush", /obj/structure/flora/ausbushes/fernybush, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("sunny bush", /obj/structure/flora/ausbushes/sunnybush, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("pointy bush", /obj/structure/flora/ausbushes/pointybush, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("lavender grass", /obj/structure/flora/ausbushes/lavendergrass, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("yellow-and-white flowers", /obj/structure/flora/ausbushes/ywflowers, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("blue-and-red flowers", /obj/structure/flora/ausbushes/brflowers, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("pink-and-purple flowers", /obj/structure/flora/ausbushes/ppflowers, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("sparse grass", /obj/structure/flora/ausbushes/sparsegrass, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]"), + new /datum/stack_recipe("full grass", /obj/structure/flora/ausbushes/fullgrass, 3, one_per_turf = 0, on_floor = 1, recycle_material = "[name]") + )) + ) \ No newline at end of file diff --git a/polaris.dme b/polaris.dme new file mode 100644 index 0000000000..fdc64f9104 --- /dev/null +++ b/polaris.dme @@ -0,0 +1,3357 @@ +// DM Environment file for baystation12.dme. +// All manual changes should be made outside the BEGIN_ and END_ blocks. +// New source code should be placed in .dm files: choose File/New --> Code File. +// BEGIN_INTERNALS +// END_INTERNALS +// BEGIN_FILE_DIR +#define FILE_DIR . +// END_FILE_DIR +// BEGIN_PREFERENCES +#define DEBUG +// END_PREFERENCES +// BEGIN_INCLUDE +#include "code\__spaceman_dmm.dm" +#include "code\_macros.dm" +#include "code\_map_tests.dm" +#include "code\_unit_tests.dm" +#include "code\global.dm" +#include "code\global_init.dm" +#include "code\hub.dm" +#include "code\names.dm" +#include "code\stylesheet.dm" +#include "code\world.dm" +#include "code\__datastructures\globals.dm" +#include "code\__defines\_compile_options.dm" +#include "code\__defines\_lists.dm" +#include "code\__defines\_planes+layers.dm" +#include "code\__defines\_protect.dm" +#include "code\__defines\_tick.dm" +#include "code\__defines\admin.dm" +#include "code\__defines\ai.dm" +#include "code\__defines\appearance.dm" +#include "code\__defines\atc.dm" +#include "code\__defines\atmos.dm" +#include "code\__defines\callbacks.dm" +#include "code\__defines\chemistry.dm" +#include "code\__defines\color.dm" +#include "code\__defines\construction.dm" +#include "code\__defines\crafting.dm" +#include "code\__defines\damage_organs.dm" +#include "code\__defines\dna.dm" +#include "code\__defines\events.dm" +#include "code\__defines\flags.dm" +#include "code\__defines\gamemode.dm" +#include "code\__defines\holomap.dm" +#include "code\__defines\hoses.dm" +#include "code\__defines\input.dm" +#include "code\__defines\integrated_circuits.dm" +#include "code\__defines\inventory_sizes.dm" +#include "code\__defines\is_helpers.dm" +#include "code\__defines\items_clothing.dm" +#include "code\__defines\lighting.dm" +#include "code\__defines\machinery.dm" +#include "code\__defines\map.dm" +#include "code\__defines\materials.dm" +#include "code\__defines\math.dm" +#include "code\__defines\math_physics.dm" +#include "code\__defines\MC.dm" +#include "code\__defines\misc.dm" +#include "code\__defines\mobs.dm" +#include "code\__defines\movement.dm" +#include "code\__defines\objects.dm" +#include "code\__defines\overmap.dm" +#include "code\__defines\pda.dm" +#include "code\__defines\planets.dm" +#include "code\__defines\preferences.dm" +#include "code\__defines\process_scheduler.dm" +#include "code\__defines\qdel.dm" +#include "code\__defines\research.dm" +#include "code\__defines\rust_g.dm" +#include "code\__defines\shuttle.dm" +#include "code\__defines\sound.dm" +#include "code\__defines\species_languages.dm" +#include "code\__defines\sqlite_defines.dm" +#include "code\__defines\subsystems.dm" +#include "code\__defines\supply.dm" +#include "code\__defines\targeting.dm" +#include "code\__defines\tgui.dm" +#include "code\__defines\tools.dm" +#include "code\__defines\turfs.dm" +#include "code\__defines\typeids.dm" +#include "code\__defines\unit_tests.dm" +#include "code\__defines\vote.dm" +#include "code\__defines\vv.dm" +#include "code\__defines\webhooks.dm" +#include "code\__defines\wires.dm" +#include "code\__defines\xenoarcheaology.dm" +#include "code\__defines\ZAS.dm" +#include "code\__defines\dcs\flags.dm" +#include "code\__defines\dcs\helpers.dm" +#include "code\__defines\dcs\signals.dm" +#include "code\_global_vars\bitfields.dm" +#include "code\_global_vars\misc.dm" +#include "code\_global_vars\mobs.dm" +#include "code\_global_vars\sensitive.dm" +#include "code\_global_vars\lists\mapping.dm" +#include "code\_global_vars\lists\misc.dm" +#include "code\_global_vars\lists\species.dm" +#include "code\_helpers\_global_objects.dm" +#include "code\_helpers\_lists.dm" +#include "code\_helpers\atmospherics.dm" +#include "code\_helpers\atom_movables.dm" +#include "code\_helpers\client.dm" +#include "code\_helpers\events.dm" +#include "code\_helpers\files.dm" +#include "code\_helpers\game.dm" +#include "code\_helpers\global_lists.dm" +#include "code\_helpers\icons.dm" +#include "code\_helpers\image.dm" +#include "code\_helpers\logging.dm" +#include "code\_helpers\matrices.dm" +#include "code\_helpers\mobs.dm" +#include "code\_helpers\names.dm" +#include "code\_helpers\sanitize_values.dm" +#include "code\_helpers\storage.dm" +#include "code\_helpers\string_lists.dm" +#include "code\_helpers\text.dm" +#include "code\_helpers\time.dm" +#include "code\_helpers\turfs.dm" +#include "code\_helpers\type2type.dm" +#include "code\_helpers\unsorted.dm" +#include "code\_helpers\view.dm" +#include "code\_helpers\visual_filters.dm" +#include "code\_helpers\sorts\__main.dm" +#include "code\_helpers\sorts\comparators.dm" +#include "code\_helpers\sorts\TimSort.dm" +#include "code\_onclick\_defines.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\rig.dm" +#include "code\_onclick\telekinesis.dm" +#include "code\_onclick\hud\_defines.dm" +#include "code\_onclick\hud\ability_screen_objects.dm" +#include "code\_onclick\hud\action.dm" +#include "code\_onclick\hud\ai.dm" +#include "code\_onclick\hud\alert.dm" +#include "code\_onclick\hud\alien_larva.dm" +#include "code\_onclick\hud\fullscreen.dm" +#include "code\_onclick\hud\ghost.dm" +#include "code\_onclick\hud\gun_mode.dm" +#include "code\_onclick\hud\hud.dm" +#include "code\_onclick\hud\human.dm" +#include "code\_onclick\hud\map_popups.dm" +#include "code\_onclick\hud\minihud.dm" +#include "code\_onclick\hud\minihud_mapper.dm" +#include "code\_onclick\hud\minihud_rigmech.dm" +#include "code\_onclick\hud\movable_screen_objects.dm" +#include "code\_onclick\hud\picture_in_picture.dm" +#include "code\_onclick\hud\radial.dm" +#include "code\_onclick\hud\radial_persistent.dm" +#include "code\_onclick\hud\robot.dm" +#include "code\_onclick\hud\screen_objects.dm" +#include "code\_onclick\hud\skybox.dm" +#include "code\_onclick\hud\spell_screen_objects.dm" +#include "code\ATMOSPHERICS\_atmos_setup.dm" +#include "code\ATMOSPHERICS\_atmospherics_helpers.dm" +#include "code\ATMOSPHERICS\atmospherics.dm" +#include "code\ATMOSPHERICS\datum_pipe_network.dm" +#include "code\ATMOSPHERICS\datum_pipeline.dm" +#include "code\ATMOSPHERICS\components\portables_connector.dm" +#include "code\ATMOSPHERICS\components\shutoff.dm" +#include "code\ATMOSPHERICS\components\tvalve.dm" +#include "code\ATMOSPHERICS\components\valve.dm" +#include "code\ATMOSPHERICS\components\binary_devices\binary_atmos_base.dm" +#include "code\ATMOSPHERICS\components\binary_devices\circulator.dm" +#include "code\ATMOSPHERICS\components\binary_devices\dp_vent_pump.dm" +#include "code\ATMOSPHERICS\components\binary_devices\passive_gate.dm" +#include "code\ATMOSPHERICS\components\binary_devices\pump.dm" +#include "code\ATMOSPHERICS\components\binary_devices\volume_pump.dm" +#include "code\ATMOSPHERICS\components\omni_devices\_omni_extras.dm" +#include "code\ATMOSPHERICS\components\omni_devices\filter.dm" +#include "code\ATMOSPHERICS\components\omni_devices\mixer.dm" +#include "code\ATMOSPHERICS\components\omni_devices\omni_base.dm" +#include "code\ATMOSPHERICS\components\trinary_devices\filter.dm" +#include "code\ATMOSPHERICS\components\trinary_devices\mixer.dm" +#include "code\ATMOSPHERICS\components\trinary_devices\trinary_base.dm" +#include "code\ATMOSPHERICS\components\unary\cold_sink.dm" +#include "code\ATMOSPHERICS\components\unary\heat_exchanger.dm" +#include "code\ATMOSPHERICS\components\unary\heat_source.dm" +#include "code\ATMOSPHERICS\components\unary\outlet_injector.dm" +#include "code\ATMOSPHERICS\components\unary\unary_base.dm" +#include "code\ATMOSPHERICS\components\unary\vent_pump.dm" +#include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm" +#include "code\ATMOSPHERICS\pipes\cap.dm" +#include "code\ATMOSPHERICS\pipes\he_pipes.dm" +#include "code\ATMOSPHERICS\pipes\manifold.dm" +#include "code\ATMOSPHERICS\pipes\manifold4w.dm" +#include "code\ATMOSPHERICS\pipes\pipe_base.dm" +#include "code\ATMOSPHERICS\pipes\simple.dm" +#include "code\ATMOSPHERICS\pipes\tank.dm" +#include "code\ATMOSPHERICS\pipes\universal.dm" +#include "code\ATMOSPHERICS\pipes\vent.dm" +#include "code\controllers\autotransfer.dm" +#include "code\controllers\communications.dm" +#include "code\controllers\configuration.dm" +#include "code\controllers\controller.dm" +#include "code\controllers\emergency_shuttle_controller.dm" +#include "code\controllers\failsafe.dm" +#include "code\controllers\globals.dm" +#include "code\controllers\hooks-defs.dm" +#include "code\controllers\hooks.dm" +#include "code\controllers\master.dm" +#include "code\controllers\master_controller.dm" +#include "code\controllers\subsystem.dm" +#include "code\controllers\verbs.dm" +#include "code\controllers\observer_listener\atom\observer.dm" +#include "code\controllers\subsystems\ai.dm" +#include "code\controllers\subsystems\aifast.dm" +#include "code\controllers\subsystems\air.dm" +#include "code\controllers\subsystems\airflow.dm" +#include "code\controllers\subsystems\alarm.dm" +#include "code\controllers\subsystems\antag.dm" +#include "code\controllers\subsystems\assets.dm" +#include "code\controllers\subsystems\atoms.dm" +#include "code\controllers\subsystems\character_setup.dm" +#include "code\controllers\subsystems\chat.dm" +#include "code\controllers\subsystems\chemistry.dm" +#include "code\controllers\subsystems\circuits.dm" +#include "code\controllers\subsystems\dcs.dm" +#include "code\controllers\subsystems\events.dm" +#include "code\controllers\subsystems\events2.dm" +#include "code\controllers\subsystems\game_master.dm" +#include "code\controllers\subsystems\garbage.dm" +#include "code\controllers\subsystems\holomaps.dm" +#include "code\controllers\subsystems\inactivity.dm" +#include "code\controllers\subsystems\init_misc_early.dm" +#include "code\controllers\subsystems\input.dm" +#include "code\controllers\subsystems\job.dm" +#include "code\controllers\subsystems\lighting.dm" +#include "code\controllers\subsystems\machines.dm" +#include "code\controllers\subsystems\mapping.dm" +#include "code\controllers\subsystems\misc_slow.dm" +#include "code\controllers\subsystems\mobs.dm" +#include "code\controllers\subsystems\nanoui.dm" +#include "code\controllers\subsystems\nightshift.dm" +#include "code\controllers\subsystems\open_space.dm" +#include "code\controllers\subsystems\orbits.dm" +#include "code\controllers\subsystems\overlays.dm" +#include "code\controllers\subsystems\persistence.dm" +#include "code\controllers\subsystems\planets.dm" +#include "code\controllers\subsystems\radiation.dm" +#include "code\controllers\subsystems\shuttles.dm" +#include "code\controllers\subsystems\skybox.dm" +#include "code\controllers\subsystems\sqlite.dm" +#include "code\controllers\subsystems\sun.dm" +#include "code\controllers\subsystems\supply.dm" +#include "code\controllers\subsystems\tgui.dm" +#include "code\controllers\subsystems\ticker.dm" +#include "code\controllers\subsystems\time_track.dm" +#include "code\controllers\subsystems\timer.dm" +#include "code\controllers\subsystems\typing.dm" +#include "code\controllers\subsystems\vote.dm" +#include "code\controllers\subsystems\webhooks.dm" +#include "code\controllers\subsystems\xenoarch.dm" +#include "code\controllers\subsystems\processing\fastprocess.dm" +#include "code\controllers\subsystems\processing\obj.dm" +#include "code\controllers\subsystems\processing\processing.dm" +#include "code\controllers\subsystems\processing\projectiles.dm" +#include "code\controllers\subsystems\processing\turfs.dm" +#include "code\core\atom\Transform.dm" +#include "code\core\datum\IsAbstract.dm" +#include "code\core\image\Transform.dm" +#include "code\core\matrix\Transform.dm" +#include "code\datums\ai_law_sets.dm" +#include "code\datums\ai_laws.dm" +#include "code\datums\beam.dm" +#include "code\datums\browser.dm" +#include "code\datums\callback.dm" +#include "code\datums\category.dm" +#include "code\datums\chat_message.dm" +#include "code\datums\datacore.dm" +#include "code\datums\datum.dm" +#include "code\datums\datumvars.dm" +#include "code\datums\EPv2.dm" +#include "code\datums\ghost_query.dm" +#include "code\datums\hierarchy.dm" +#include "code\datums\mind.dm" +#include "code\datums\mixed.dm" +#include "code\datums\modules.dm" +#include "code\datums\move_intent.dm" +#include "code\datums\mutable_appearance.dm" +#include "code\datums\orbit.dm" +#include "code\datums\organs.dm" +#include "code\datums\position_point_vector.dm" +#include "code\datums\progressbar.dm" +#include "code\datums\riding.dm" +#include "code\datums\soul_link.dm" +#include "code\datums\sun.dm" +#include "code\datums\weakref.dm" +#include "code\datums\audio\_audio.dm" +#include "code\datums\audio\_tracks.dm" +#include "code\datums\audio\jukebox.dm" +#include "code\datums\autolathe\arms.dm" +#include "code\datums\autolathe\autolathe.dm" +#include "code\datums\autolathe\devices.dm" +#include "code\datums\autolathe\engineering.dm" +#include "code\datums\autolathe\general.dm" +#include "code\datums\autolathe\materials.dm" +#include "code\datums\autolathe\medical.dm" +#include "code\datums\autolathe\tools.dm" +#include "code\datums\components\_component.dm" +#include "code\datums\components\crafting\crafting.dm" +#include "code\datums\components\crafting\crafting_external.dm" +#include "code\datums\components\crafting\recipes.dm" +#include "code\datums\components\crafting\tool_quality.dm" +#include "code\datums\components\crafting\recipes\archery.dm" +#include "code\datums\elements\_element.dm" +#include "code\datums\game_masters\_common.dm" +#include "code\datums\game_masters\default.dm" +#include "code\datums\game_masters\other_game_masters.dm" +#include "code\datums\helper_datums\construction_datum.dm" +#include "code\datums\helper_datums\events.dm" +#include "code\datums\helper_datums\getrev.dm" +#include "code\datums\helper_datums\teleport.dm" +#include "code\datums\helper_datums\topic_input.dm" +#include "code\datums\licenses\license.dm" +#include "code\datums\locations\locations.dm" +#include "code\datums\locations\nyx.dm" +#include "code\datums\locations\qerrvallis.dm" +#include "code\datums\locations\s_randarr.dm" +#include "code\datums\locations\sol.dm" +#include "code\datums\locations\tau_ceti.dm" +#include "code\datums\locations\uueoa_esa.dm" +#include "code\datums\locations\vir.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\sequence.dm" +#include "code\datums\looping_sounds\weather_sounds.dm" +#include "code\datums\managed_browsers\_managed_browser.dm" +#include "code\datums\managed_browsers\changelingevolution.dm" +#include "code\datums\managed_browsers\feedback_form.dm" +#include "code\datums\managed_browsers\feedback_viewer.dm" +#include "code\datums\observation\_debug.dm" +#include "code\datums\observation\_defines.dm" +#include "code\datums\observation\destroyed.dm" +#include "code\datums\observation\dir_set.dm" +#include "code\datums\observation\equipped.dm" +#include "code\datums\observation\helpers.dm" +#include "code\datums\observation\logged_in.dm" +#include "code\datums\observation\moved.dm" +#include "code\datums\observation\observation.dm" +#include "code\datums\observation\power_change.dm" +#include "code\datums\observation\shuttle_added.dm" +#include "code\datums\observation\shuttle_moved.dm" +#include "code\datums\observation\stat_set.dm" +#include "code\datums\observation\turf_changed.dm" +#include "code\datums\observation\turf_enterexit.dm" +#include "code\datums\observation\unequipped.dm" +#include "code\datums\observation\z_moved.dm" +#include "code\datums\observation\~cleanup.dm" +#include "code\datums\outfits\_defines.dm" +#include "code\datums\outfits\horror_killers.dm" +#include "code\datums\outfits\misc.dm" +#include "code\datums\outfits\nanotrasen.dm" +#include "code\datums\outfits\outfit.dm" +#include "code\datums\outfits\pirates.dm" +#include "code\datums\outfits\spec_op.dm" +#include "code\datums\outfits\tournament.dm" +#include "code\datums\outfits\vox.dm" +#include "code\datums\outfits\wizardry.dm" +#include "code\datums\outfits\costumes\costume.dm" +#include "code\datums\outfits\costumes\halloween.dm" +#include "code\datums\outfits\jobs\cargo.dm" +#include "code\datums\outfits\jobs\civilian.dm" +#include "code\datums\outfits\jobs\command.dm" +#include "code\datums\outfits\jobs\engineering.dm" +#include "code\datums\outfits\jobs\job.dm" +#include "code\datums\outfits\jobs\medical.dm" +#include "code\datums\outfits\jobs\misc.dm" +#include "code\datums\outfits\jobs\science.dm" +#include "code\datums\outfits\jobs\security.dm" +#include "code\datums\outfits\military\fleet.dm" +#include "code\datums\outfits\military\marines.dm" +#include "code\datums\outfits\military\military.dm" +#include "code\datums\outfits\military\sifguard.dm" +#include "code\datums\repositories\ammomaterial.dm" +#include "code\datums\repositories\cameras.dm" +#include "code\datums\repositories\crew.dm" +#include "code\datums\repositories\decls.dm" +#include "code\datums\repositories\repository.dm" +#include "code\datums\repositories\unique.dm" +#include "code\datums\roundstats\_defines_local.dm" +#include "code\datums\roundstats\departmentgoal.dm" +#include "code\datums\roundstats\roundstats.dm" +#include "code\datums\supplypacks\atmospherics.dm" +#include "code\datums\supplypacks\contraband.dm" +#include "code\datums\supplypacks\costumes.dm" +#include "code\datums\supplypacks\engineering.dm" +#include "code\datums\supplypacks\hospitality.dm" +#include "code\datums\supplypacks\hydroponics.dm" +#include "code\datums\supplypacks\materials.dm" +#include "code\datums\supplypacks\medical.dm" +#include "code\datums\supplypacks\misc.dm" +#include "code\datums\supplypacks\munitions.dm" +#include "code\datums\supplypacks\recreation.dm" +#include "code\datums\supplypacks\robotics.dm" +#include "code\datums\supplypacks\science.dm" +#include "code\datums\supplypacks\security.dm" +#include "code\datums\supplypacks\supply.dm" +#include "code\datums\supplypacks\supplypacks.dm" +#include "code\datums\supplypacks\voidsuits.dm" +#include "code\datums\underwear\bottom.dm" +#include "code\datums\underwear\socks.dm" +#include "code\datums\underwear\top.dm" +#include "code\datums\underwear\undershirts.dm" +#include "code\datums\underwear\underwear.dm" +#include "code\datums\uplink\ammunition.dm" +#include "code\datums\uplink\announcements.dm" +#include "code\datums\uplink\armor.dm" +#include "code\datums\uplink\backup.dm" +#include "code\datums\uplink\badassery.dm" +#include "code\datums\uplink\grenades.dm" +#include "code\datums\uplink\hardsuit_modules.dm" +#include "code\datums\uplink\implants.dm" +#include "code\datums\uplink\medical.dm" +#include "code\datums\uplink\resources.dm" +#include "code\datums\uplink\stealth_items.dm" +#include "code\datums\uplink\stealthy_weapons.dm" +#include "code\datums\uplink\telecrystals.dm" +#include "code\datums\uplink\tools.dm" +#include "code\datums\uplink\uplink_categories.dm" +#include "code\datums\uplink\uplink_items.dm" +#include "code\datums\uplink\visible_weapons.dm" +#include "code\datums\vending\stored_item.dm" +#include "code\datums\vending\vending.dm" +#include "code\datums\wires\airlock.dm" +#include "code\datums\wires\alarm.dm" +#include "code\datums\wires\apc.dm" +#include "code\datums\wires\autolathe.dm" +#include "code\datums\wires\camera.dm" +#include "code\datums\wires\explosive.dm" +#include "code\datums\wires\grid_checker.dm" +#include "code\datums\wires\jukebox.dm" +#include "code\datums\wires\particle_accelerator.dm" +#include "code\datums\wires\radio.dm" +#include "code\datums\wires\robot.dm" +#include "code\datums\wires\seedstorage.dm" +#include "code\datums\wires\smartfridge.dm" +#include "code\datums\wires\smes.dm" +#include "code\datums\wires\suit_storage_unit.dm" +#include "code\datums\wires\tesla_coil.dm" +#include "code\datums\wires\vending.dm" +#include "code\datums\wires\wires.dm" +#include "code\defines\gases.dm" +#include "code\defines\obj.dm" +#include "code\defines\obj\weapon.dm" +#include "code\defines\procs\announce.dm" +#include "code\defines\procs\AStar.dm" +#include "code\defines\procs\dbcore.dm" +#include "code\defines\procs\radio.dm" +#include "code\defines\procs\statistics.dm" +#include "code\game\atoms.dm" +#include "code\game\atoms_movable.dm" +#include "code\game\base_turf.dm" +#include "code\game\periodic_news.dm" +#include "code\game\response_team.dm" +#include "code\game\shuttle_engines.dm" +#include "code\game\skincmd.dm" +#include "code\game\sound.dm" +#include "code\game\trader_visit.dm" +#include "code\game\world.dm" +#include "code\game\area\ai_monitored.dm" +#include "code\game\area\areas.dm" +#include "code\game\area\asteroid_areas.dm" +#include "code\game\area\Space Station 13 areas.dm" +#include "code\game\area\ss13_deprecated_areas.dm" +#include "code\game\dna\dna2.dm" +#include "code\game\dna\dna2_domutcheck.dm" +#include "code\game\dna\dna2_helpers.dm" +#include "code\game\dna\dna_modifier.dm" +#include "code\game\dna\genes\disabilities.dm" +#include "code\game\dna\genes\gene.dm" +#include "code\game\dna\genes\powers.dm" +#include "code\game\gamemodes\events.dm" +#include "code\game\gamemodes\game_mode.dm" +#include "code\game\gamemodes\game_mode_latespawn.dm" +#include "code\game\gamemodes\objective.dm" +#include "code\game\gamemodes\setupgame.dm" +#include "code\game\gamemodes\calamity\calamity.dm" +#include "code\game\gamemodes\changeling\absorbed_dna.dm" +#include "code\game\gamemodes\changeling\changeling.dm" +#include "code\game\gamemodes\changeling\changeling_evolutiontree.dm" +#include "code\game\gamemodes\changeling\changeling_powers.dm" +#include "code\game\gamemodes\changeling\generic_equip_procs.dm" +#include "code\game\gamemodes\changeling\modularchangling.dm" +#include "code\game\gamemodes\changeling\powers\absorb.dm" +#include "code\game\gamemodes\changeling\powers\armblade.dm" +#include "code\game\gamemodes\changeling\powers\armor.dm" +#include "code\game\gamemodes\changeling\powers\augmented_eyesight.dm" +#include "code\game\gamemodes\changeling\powers\bioelectrogenesis.dm" +#include "code\game\gamemodes\changeling\powers\blind_sting.dm" +#include "code\game\gamemodes\changeling\powers\boost_range.dm" +#include "code\game\gamemodes\changeling\powers\cryo_sting.dm" +#include "code\game\gamemodes\changeling\powers\darkvision.dm" +#include "code\game\gamemodes\changeling\powers\deaf_sting.dm" +#include "code\game\gamemodes\changeling\powers\delayed_toxin_sting.dm" +#include "code\game\gamemodes\changeling\powers\digital_camo.dm" +#include "code\game\gamemodes\changeling\powers\electric_lockpick.dm" +#include "code\game\gamemodes\changeling\powers\endoarmor.dm" +#include "code\game\gamemodes\changeling\powers\enfeebling_string.dm" +#include "code\game\gamemodes\changeling\powers\engorged_glands.dm" +#include "code\game\gamemodes\changeling\powers\enrage.dm" +#include "code\game\gamemodes\changeling\powers\epinephrine_overdose.dm" +#include "code\game\gamemodes\changeling\powers\escape_restraints.dm" +#include "code\game\gamemodes\changeling\powers\extract_dna_sting.dm" +#include "code\game\gamemodes\changeling\powers\fabricate_clothing.dm" +#include "code\game\gamemodes\changeling\powers\fake_death.dm" +#include "code\game\gamemodes\changeling\powers\fleshmend.dm" +#include "code\game\gamemodes\changeling\powers\hivemind.dm" +#include "code\game\gamemodes\changeling\powers\mimic_voice.dm" +#include "code\game\gamemodes\changeling\powers\panacea.dm" +#include "code\game\gamemodes\changeling\powers\rapid_regen.dm" +#include "code\game\gamemodes\changeling\powers\recursive_enhancement.dm" +#include "code\game\gamemodes\changeling\powers\respec.dm" +#include "code\game\gamemodes\changeling\powers\revive.dm" +#include "code\game\gamemodes\changeling\powers\self_respiration.dm" +#include "code\game\gamemodes\changeling\powers\shriek.dm" +#include "code\game\gamemodes\changeling\powers\silence_sting.dm" +#include "code\game\gamemodes\changeling\powers\transform.dm" +#include "code\game\gamemodes\changeling\powers\visible_camouflage.dm" +#include "code\game\gamemodes\cult\construct_spells.dm" +#include "code\game\gamemodes\cult\cult.dm" +#include "code\game\gamemodes\cult\cult_items.dm" +#include "code\game\gamemodes\cult\cult_structures.dm" +#include "code\game\gamemodes\cult\hell_universe.dm" +#include "code\game\gamemodes\cult\narsie.dm" +#include "code\game\gamemodes\cult\ritual.dm" +#include "code\game\gamemodes\cult\runes.dm" +#include "code\game\gamemodes\cult\soulstone.dm" +#include "code\game\gamemodes\cult\talisman.dm" +#include "code\game\gamemodes\cult\cultify\mob.dm" +#include "code\game\gamemodes\cult\cultify\obj.dm" +#include "code\game\gamemodes\cult\cultify\turf.dm" +#include "code\game\gamemodes\endgame\endgame.dm" +#include "code\game\gamemodes\endgame\supermatter_cascade\blob.dm" +#include "code\game\gamemodes\endgame\supermatter_cascade\portal.dm" +#include "code\game\gamemodes\endgame\supermatter_cascade\universe.dm" +#include "code\game\gamemodes\events\black_hole.dm" +#include "code\game\gamemodes\events\clang.dm" +#include "code\game\gamemodes\events\dust.dm" +#include "code\game\gamemodes\events\power_failure.dm" +#include "code\game\gamemodes\events\wormholes.dm" +#include "code\game\gamemodes\events\holidays\Christmas.dm" +#include "code\game\gamemodes\events\holidays\Holidays.dm" +#include "code\game\gamemodes\events\holidays\Other.dm" +#include "code\game\gamemodes\extended\extended.dm" +#include "code\game\gamemodes\heist\heist.dm" +#include "code\game\gamemodes\infiltrator\infiltrator.dm" +#include "code\game\gamemodes\malfunction\malf_hardware.dm" +#include "code\game\gamemodes\malfunction\malf_research.dm" +#include "code\game\gamemodes\malfunction\malf_research_ability.dm" +#include "code\game\gamemodes\malfunction\malfunction.dm" +#include "code\game\gamemodes\malfunction\newmalf_ability_trees\HARDWARE.dm" +#include "code\game\gamemodes\malfunction\newmalf_ability_trees\HELPERS.dm" +#include "code\game\gamemodes\malfunction\newmalf_ability_trees\tree_interdiction.dm" +#include "code\game\gamemodes\malfunction\newmalf_ability_trees\tree_manipulation.dm" +#include "code\game\gamemodes\malfunction\newmalf_ability_trees\tree_networking.dm" +#include "code\game\gamemodes\meteor\meteor.dm" +#include "code\game\gamemodes\meteor\meteors.dm" +#include "code\game\gamemodes\mixed\conflux.dm" +#include "code\game\gamemodes\mixed\infestation.dm" +#include "code\game\gamemodes\mixed\intrigue.dm" +#include "code\game\gamemodes\mixed\lizard.dm" +#include "code\game\gamemodes\mixed\mercrenegade.dm" +#include "code\game\gamemodes\mixed\mercwiz.dm" +#include "code\game\gamemodes\mixed\paranoia.dm" +#include "code\game\gamemodes\mixed\traitorling.dm" +#include "code\game\gamemodes\mixed\traitorrenegade.dm" +#include "code\game\gamemodes\mixed\uprising.dm" +#include "code\game\gamemodes\mixed\visitors.dm" +#include "code\game\gamemodes\ninja\ninja.dm" +#include "code\game\gamemodes\nuclear\nuclear.dm" +#include "code\game\gamemodes\nuclear\pinpointer.dm" +#include "code\game\gamemodes\revolution\revolution.dm" +#include "code\game\gamemodes\technomancer\catalog.dm" +#include "code\game\gamemodes\technomancer\clothing.dm" +#include "code\game\gamemodes\technomancer\core_obj.dm" +#include "code\game\gamemodes\technomancer\equipment.dm" +#include "code\game\gamemodes\technomancer\instability.dm" +#include "code\game\gamemodes\technomancer\spell_objs.dm" +#include "code\game\gamemodes\technomancer\spell_objs_helpers.dm" +#include "code\game\gamemodes\technomancer\technomancer.dm" +#include "code\game\gamemodes\technomancer\assistance\assistance.dm" +#include "code\game\gamemodes\technomancer\devices\boots_of_speed.dm" +#include "code\game\gamemodes\technomancer\devices\disposable_teleporter.dm" +#include "code\game\gamemodes\technomancer\devices\gloves_of_regen.dm" +#include "code\game\gamemodes\technomancer\devices\hypos.dm" +#include "code\game\gamemodes\technomancer\devices\implants.dm" +#include "code\game\gamemodes\technomancer\devices\shield_armor.dm" +#include "code\game\gamemodes\technomancer\devices\tesla_armor.dm" +#include "code\game\gamemodes\technomancer\spells\abjuration.dm" +#include "code\game\gamemodes\technomancer\spells\apportation.dm" +#include "code\game\gamemodes\technomancer\spells\audible_deception.dm" +#include "code\game\gamemodes\technomancer\spells\blink.dm" +#include "code\game\gamemodes\technomancer\spells\chroma.dm" +#include "code\game\gamemodes\technomancer\spells\condensation.dm" +#include "code\game\gamemodes\technomancer\spells\control.dm" +#include "code\game\gamemodes\technomancer\spells\dispel.dm" +#include "code\game\gamemodes\technomancer\spells\energy_siphon.dm" +#include "code\game\gamemodes\technomancer\spells\flame_tongue.dm" +#include "code\game\gamemodes\technomancer\spells\gambit.dm" +#include "code\game\gamemodes\technomancer\spells\illusion.dm" +#include "code\game\gamemodes\technomancer\spells\instability_tap.dm" +#include "code\game\gamemodes\technomancer\spells\mark_recall.dm" +#include "code\game\gamemodes\technomancer\spells\mend_organs.dm" +#include "code\game\gamemodes\technomancer\spells\oxygenate.dm" +#include "code\game\gamemodes\technomancer\spells\passwall.dm" +#include "code\game\gamemodes\technomancer\spells\phase_shift.dm" +#include "code\game\gamemodes\technomancer\spells\radiance.dm" +#include "code\game\gamemodes\technomancer\spells\reflect.dm" +#include "code\game\gamemodes\technomancer\spells\resurrect.dm" +#include "code\game\gamemodes\technomancer\spells\shared_burden.dm" +#include "code\game\gamemodes\technomancer\spells\shield.dm" +#include "code\game\gamemodes\technomancer\spells\targeting_matrix.dm" +#include "code\game\gamemodes\technomancer\spells\track.dm" +#include "code\game\gamemodes\technomancer\spells\warp_strike.dm" +#include "code\game\gamemodes\technomancer\spells\aura\aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\biomed_aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\fire_aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\frost_aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\shock_aura.dm" +#include "code\game\gamemodes\technomancer\spells\aura\unstable_aura.dm" +#include "code\game\gamemodes\technomancer\spells\modifier\corona.dm" +#include "code\game\gamemodes\technomancer\spells\modifier\haste.dm" +#include "code\game\gamemodes\technomancer\spells\modifier\mend_all.dm" +#include "code\game\gamemodes\technomancer\spells\modifier\mend_life.dm" +#include "code\game\gamemodes\technomancer\spells\modifier\mend_synthetic.dm" +#include "code\game\gamemodes\technomancer\spells\modifier\modifier.dm" +#include "code\game\gamemodes\technomancer\spells\modifier\purify.dm" +#include "code\game\gamemodes\technomancer\spells\modifier\repel_missiles.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\beam.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\chain_lightning.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\force_missile.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\ionic_bolt.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\lesser_chain_lightning.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\lightning.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\overload.dm" +#include "code\game\gamemodes\technomancer\spells\projectile\projectile.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\darkness.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\destablize.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\fire_blast.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\pulsar.dm" +#include "code\game\gamemodes\technomancer\spells\spawner\spawner.dm" +#include "code\game\gamemodes\technomancer\spells\summon\summon.dm" +#include "code\game\gamemodes\technomancer\spells\summon\summon_creature.dm" +#include "code\game\gamemodes\technomancer\spells\summon\summon_ward.dm" +#include "code\game\gamemodes\traitor\traitor.dm" +#include "code\game\gamemodes\wizard\wizard.dm" +#include "code\game\jobs\_access_defs.dm" +#include "code\game\jobs\access.dm" +#include "code\game\jobs\access_datum.dm" +#include "code\game\jobs\job_controller.dm" +#include "code\game\jobs\jobs.dm" +#include "code\game\jobs\job\_alt_title.dm" +#include "code\game\jobs\job\assistant.dm" +#include "code\game\jobs\job\captain.dm" +#include "code\game\jobs\job\civilian.dm" +#include "code\game\jobs\job\civilian_chaplain.dm" +#include "code\game\jobs\job\department.dm" +#include "code\game\jobs\job\engineering.dm" +#include "code\game\jobs\job\job.dm" +#include "code\game\jobs\job\medical.dm" +#include "code\game\jobs\job\science.dm" +#include "code\game\jobs\job\security.dm" +#include "code\game\jobs\job\silicon.dm" +#include "code\game\machinery\adv_med.dm" +#include "code\game\machinery\ai_slipper.dm" +#include "code\game\machinery\air_alarm.dm" +#include "code\game\machinery\atm_ret_field.dm" +#include "code\game\machinery\atmo_control.dm" +#include "code\game\machinery\autolathe.dm" +#include "code\game\machinery\Beacon.dm" +#include "code\game\machinery\biogenerator.dm" +#include "code\game\machinery\bioprinter.dm" +#include "code\game\machinery\buttons.dm" +#include "code\game\machinery\CableLayer.dm" +#include "code\game\machinery\cell_charger.dm" +#include "code\game\machinery\cloning.dm" +#include "code\game\machinery\cryo.dm" +#include "code\game\machinery\cryopod.dm" +#include "code\game\machinery\deployable.dm" +#include "code\game\machinery\door_control.dm" +#include "code\game\machinery\doppler_array.dm" +#include "code\game\machinery\exonet_node.dm" +#include "code\game\machinery\fire_alarm.dm" +#include "code\game\machinery\flasher.dm" +#include "code\game\machinery\floodlight.dm" +#include "code\game\machinery\floor_light.dm" +#include "code\game\machinery\floorlayer.dm" +#include "code\game\machinery\frame.dm" +#include "code\game\machinery\hologram.dm" +#include "code\game\machinery\holosign.dm" +#include "code\game\machinery\igniter.dm" +#include "code\game\machinery\iv_drip.dm" +#include "code\game\machinery\jukebox.dm" +#include "code\game\machinery\lightswitch.dm" +#include "code\game\machinery\machinery.dm" +#include "code\game\machinery\machinery_power.dm" +#include "code\game\machinery\magnet.dm" +#include "code\game\machinery\mass_driver.dm" +#include "code\game\machinery\navbeacon.dm" +#include "code\game\machinery\neonsign.dm" +#include "code\game\machinery\newscaster.dm" +#include "code\game\machinery\nuclear_bomb.dm" +#include "code\game\machinery\OpTable.dm" +#include "code\game\machinery\overview.dm" +#include "code\game\machinery\oxygen_pump.dm" +#include "code\game\machinery\pda_multicaster.dm" +#include "code\game\machinery\pointdefense.dm" +#include "code\game\machinery\portable_turret.dm" +#include "code\game\machinery\recharger.dm" +#include "code\game\machinery\rechargestation.dm" +#include "code\game\machinery\requests_console.dm" +#include "code\game\machinery\robot_fabricator.dm" +#include "code\game\machinery\seed_extractor.dm" +#include "code\game\machinery\Sleeper.dm" +#include "code\game\machinery\spaceheater.dm" +#include "code\game\machinery\status_display.dm" +#include "code\game\machinery\status_display_ai.dm" +#include "code\game\machinery\suit_storage_unit.dm" +#include "code\game\machinery\supply_display.dm" +#include "code\game\machinery\supplybeacon.dm" +#include "code\game\machinery\syndicatebeacon.dm" +#include "code\game\machinery\teleporter.dm" +#include "code\game\machinery\transportpod.dm" +#include "code\game\machinery\turret_control.dm" +#include "code\game\machinery\wall_frames.dm" +#include "code\game\machinery\washing_machine.dm" +#include "code\game\machinery\wishgranter.dm" +#include "code\game\machinery\atmoalter\area_atmos_computer.dm" +#include "code\game\machinery\atmoalter\canister.dm" +#include "code\game\machinery\atmoalter\clamp.dm" +#include "code\game\machinery\atmoalter\meter.dm" +#include "code\game\machinery\atmoalter\portable_atmospherics.dm" +#include "code\game\machinery\atmoalter\pump.dm" +#include "code\game\machinery\atmoalter\scrubber.dm" +#include "code\game\machinery\camera\camera.dm" +#include "code\game\machinery\camera\camera_assembly.dm" +#include "code\game\machinery\camera\motion.dm" +#include "code\game\machinery\camera\presets.dm" +#include "code\game\machinery\camera\tracking.dm" +#include "code\game\machinery\computer\ai_core.dm" +#include "code\game\machinery\computer\aifixer.dm" +#include "code\game\machinery\computer\arcade.dm" +#include "code\game\machinery\computer\atmos_alert.dm" +#include "code\game\machinery\computer\atmos_control.dm" +#include "code\game\machinery\computer\camera.dm" +#include "code\game\machinery\computer\card.dm" +#include "code\game\machinery\computer\cloning.dm" +#include "code\game\machinery\computer\communications.dm" +#include "code\game\machinery\computer\computer.dm" +#include "code\game\machinery\computer\crew.dm" +#include "code\game\machinery\computer\guestpass.dm" +#include "code\game\machinery\computer\law.dm" +#include "code\game\machinery\computer\medical.dm" +#include "code\game\machinery\computer\message.dm" +#include "code\game\machinery\computer\Operating.dm" +#include "code\game\machinery\computer\pod.dm" +#include "code\game\machinery\computer\prisoner.dm" +#include "code\game\machinery\computer\prisonshuttle.dm" +#include "code\game\machinery\computer\RCON_Console.dm" +#include "code\game\machinery\computer\robot.dm" +#include "code\game\machinery\computer\security.dm" +#include "code\game\machinery\computer\shutoff_monitor.dm" +#include "code\game\machinery\computer\shuttle.dm" +#include "code\game\machinery\computer\skills.dm" +#include "code\game\machinery\computer\specops_shuttle.dm" +#include "code\game\machinery\computer\station_alert.dm" +#include "code\game\machinery\computer\supply.dm" +#include "code\game\machinery\computer\syndicate_specops_shuttle.dm" +#include "code\game\machinery\doors\airlock.dm" +#include "code\game\machinery\doors\airlock_control.dm" +#include "code\game\machinery\doors\airlock_electronics.dm" +#include "code\game\machinery\doors\alarmlock.dm" +#include "code\game\machinery\doors\blast_door.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\firedoor_assembly.dm" +#include "code\game\machinery\doors\multi_tile.dm" +#include "code\game\machinery\doors\unpowered.dm" +#include "code\game\machinery\doors\windowdoor.dm" +#include "code\game\machinery\embedded_controller\airlock_controllers.dm" +#include "code\game\machinery\embedded_controller\airlock_docking_controller.dm" +#include "code\game\machinery\embedded_controller\airlock_docking_controller_multi.dm" +#include "code\game\machinery\embedded_controller\airlock_program.dm" +#include "code\game\machinery\embedded_controller\docking_program.dm" +#include "code\game\machinery\embedded_controller\docking_program_multi.dm" +#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" +#include "code\game\machinery\embedded_controller\embedded_program_base.dm" +#include "code\game\machinery\embedded_controller\mapping_helpers.dm" +#include "code\game\machinery\embedded_controller\simple_docking_controller.dm" +#include "code\game\machinery\pipe\construction.dm" +#include "code\game\machinery\pipe\pipe_dispenser.dm" +#include "code\game\machinery\pipe\pipe_recipes.dm" +#include "code\game\machinery\pipe\pipelayer.dm" +#include "code\game\machinery\telecomms\broadcaster.dm" +#include "code\game\machinery\telecomms\logbrowser.dm" +#include "code\game\machinery\telecomms\machine_interactions.dm" +#include "code\game\machinery\telecomms\presets.dm" +#include "code\game\machinery\telecomms\telecommunications.dm" +#include "code\game\machinery\telecomms\telemonitor.dm" +#include "code\game\machinery\telecomms\traffic_control.dm" +#include "code\game\machinery\virtual_reality\ar_console.dm" +#include "code\game\machinery\virtual_reality\vr_console.dm" +#include "code\game\magic\Uristrunes.dm" +#include "code\game\mecha\mech_bay.dm" +#include "code\game\mecha\mech_fabricator.dm" +#include "code\game\mecha\mech_prosthetics.dm" +#include "code\game\mecha\mech_sensor.dm" +#include "code\game\mecha\mecha.dm" +#include "code\game\mecha\mecha_actions.dm" +#include "code\game\mecha\mecha_appearance.dm" +#include "code\game\mecha\mecha_construction_paths.dm" +#include "code\game\mecha\mecha_control_console.dm" +#include "code\game\mecha\mecha_helpers.dm" +#include "code\game\mecha\mecha_parts.dm" +#include "code\game\mecha\mecha_wreckage.dm" +#include "code\game\mecha\combat\combat.dm" +#include "code\game\mecha\combat\durand.dm" +#include "code\game\mecha\combat\fighter.dm" +#include "code\game\mecha\combat\gorilla.dm" +#include "code\game\mecha\combat\gygax.dm" +#include "code\game\mecha\combat\marauder.dm" +#include "code\game\mecha\combat\phazon.dm" +#include "code\game\mecha\components\_component.dm" +#include "code\game\mecha\components\actuators.dm" +#include "code\game\mecha\components\armor.dm" +#include "code\game\mecha\components\electrical.dm" +#include "code\game\mecha\components\hull.dm" +#include "code\game\mecha\components\lifesupport.dm" +#include "code\game\mecha\equipment\mecha_equipment.dm" +#include "code\game\mecha\equipment\mecha_equipment_dynamicprocs.dm" +#include "code\game\mecha\equipment\tools\armor_melee.dm" +#include "code\game\mecha\equipment\tools\armor_ranged.dm" +#include "code\game\mecha\equipment\tools\cable_layer.dm" +#include "code\game\mecha\equipment\tools\catapult.dm" +#include "code\game\mecha\equipment\tools\clamp.dm" +#include "code\game\mecha\equipment\tools\cloak.dm" +#include "code\game\mecha\equipment\tools\drill.dm" +#include "code\game\mecha\equipment\tools\energy_relay.dm" +#include "code\game\mecha\equipment\tools\extinguisher.dm" +#include "code\game\mecha\equipment\tools\generator.dm" +#include "code\game\mecha\equipment\tools\hardpoint_actuator.dm" +#include "code\game\mecha\equipment\tools\inflatables.dm" +#include "code\game\mecha\equipment\tools\jetpack.dm" +#include "code\game\mecha\equipment\tools\jumpjet.dm" +#include "code\game\mecha\equipment\tools\orescanner.dm" +#include "code\game\mecha\equipment\tools\passenger.dm" +#include "code\game\mecha\equipment\tools\powertool.dm" +#include "code\game\mecha\equipment\tools\rcd.dm" +#include "code\game\mecha\equipment\tools\repair_droid.dm" +#include "code\game\mecha\equipment\tools\running_board.dm" +#include "code\game\mecha\equipment\tools\shield.dm" +#include "code\game\mecha\equipment\tools\shield_omni.dm" +#include "code\game\mecha\equipment\tools\sleeper.dm" +#include "code\game\mecha\equipment\tools\speedboost.dm" +#include "code\game\mecha\equipment\tools\syringe_gun.dm" +#include "code\game\mecha\equipment\tools\teleporter.dm" +#include "code\game\mecha\equipment\tools\tools.dm" +#include "code\game\mecha\equipment\tools\weldinglaser.dm" +#include "code\game\mecha\equipment\tools\wormhole.dm" +#include "code\game\mecha\equipment\weapons\honk.dm" +#include "code\game\mecha\equipment\weapons\weapons.dm" +#include "code\game\mecha\equipment\weapons\ballistic\automatic.dm" +#include "code\game\mecha\equipment\weapons\ballistic\ballistic.dm" +#include "code\game\mecha\equipment\weapons\ballistic\mortar.dm" +#include "code\game\mecha\equipment\weapons\ballistic\shotgun.dm" +#include "code\game\mecha\equipment\weapons\defense\shocker.dm" +#include "code\game\mecha\equipment\weapons\energy\energy.dm" +#include "code\game\mecha\equipment\weapons\energy\ion.dm" +#include "code\game\mecha\equipment\weapons\energy\laser.dm" +#include "code\game\mecha\equipment\weapons\energy\phased.dm" +#include "code\game\mecha\equipment\weapons\energy\pulse.dm" +#include "code\game\mecha\equipment\weapons\energy\stun.dm" +#include "code\game\mecha\equipment\weapons\explosive\grenade.dm" +#include "code\game\mecha\equipment\weapons\explosive\missile.dm" +#include "code\game\mecha\equipment\weapons\fire\flamethrower.dm" +#include "code\game\mecha\equipment\weapons\fire\incendiary.dm" +#include "code\game\mecha\medical\medical.dm" +#include "code\game\mecha\medical\odysseus.dm" +#include "code\game\mecha\medical\serenity.dm" +#include "code\game\mecha\space\hoverpod.dm" +#include "code\game\mecha\space\shuttle.dm" +#include "code\game\mecha\working\ripley.dm" +#include "code\game\mecha\working\working.dm" +#include "code\game\objects\banners.dm" +#include "code\game\objects\buckling.dm" +#include "code\game\objects\empulse.dm" +#include "code\game\objects\explosion.dm" +#include "code\game\objects\explosion_recursive.dm" +#include "code\game\objects\items.dm" +#include "code\game\objects\objs.dm" +#include "code\game\objects\structures.dm" +#include "code\game\objects\weapons.dm" +#include "code\game\objects\effects\bump_teleporter.dm" +#include "code\game\objects\effects\glowshroom.dm" +#include "code\game\objects\effects\item_pickup_ghost.dm" +#include "code\game\objects\effects\landmarks.dm" +#include "code\game\objects\effects\misc.dm" +#include "code\game\objects\effects\overlays.dm" +#include "code\game\objects\effects\portals.dm" +#include "code\game\objects\effects\spiders.dm" +#include "code\game\objects\effects\step_triggers.dm" +#include "code\game\objects\effects\zone_divider.dm" +#include "code\game\objects\effects\alien\aliens.dm" +#include "code\game\objects\effects\chem\chemsmoke.dm" +#include "code\game\objects\effects\chem\coating.dm" +#include "code\game\objects\effects\chem\foam.dm" +#include "code\game\objects\effects\chem\water.dm" +#include "code\game\objects\effects\decals\cleanable.dm" +#include "code\game\objects\effects\decals\crayon.dm" +#include "code\game\objects\effects\decals\misc.dm" +#include "code\game\objects\effects\decals\remains.dm" +#include "code\game\objects\effects\decals\warning_stripes.dm" +#include "code\game\objects\effects\decals\Cleanable\aliens.dm" +#include "code\game\objects\effects\decals\Cleanable\fuel.dm" +#include "code\game\objects\effects\decals\Cleanable\humans.dm" +#include "code\game\objects\effects\decals\Cleanable\misc.dm" +#include "code\game\objects\effects\decals\Cleanable\robots.dm" +#include "code\game\objects\effects\decals\Cleanable\tracks.dm" +#include "code\game\objects\effects\decals\posters\bs12.dm" +#include "code\game\objects\effects\decals\posters\polarisposters.dm" +#include "code\game\objects\effects\decals\posters\posters.dm" +#include "code\game\objects\effects\map_effects\beam_point.dm" +#include "code\game\objects\effects\map_effects\effect_emitter.dm" +#include "code\game\objects\effects\map_effects\map_effects.dm" +#include "code\game\objects\effects\map_effects\perma_light.dm" +#include "code\game\objects\effects\map_effects\portal.dm" +#include "code\game\objects\effects\map_effects\radiation_emitter.dm" +#include "code\game\objects\effects\map_effects\screen_shaker.dm" +#include "code\game\objects\effects\map_effects\sound_emitter.dm" +#include "code\game\objects\effects\prop\columnblast.dm" +#include "code\game\objects\effects\prop\snake.dm" +#include "code\game\objects\effects\spawners\bombspawner.dm" +#include "code\game\objects\effects\spawners\gibs.dm" +#include "code\game\objects\effects\spawners\graffiti.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\antag_spawners.dm" +#include "code\game\objects\items\apc_frame.dm" +#include "code\game\objects\items\bells.dm" +#include "code\game\objects\items\blueprints.dm" +#include "code\game\objects\items\bodybag.dm" +#include "code\game\objects\items\contraband.dm" +#include "code\game\objects\items\crayons.dm" +#include "code\game\objects\items\glassjar.dm" +#include "code\game\objects\items\gunbox.dm" +#include "code\game\objects\items\magazine.dm" +#include "code\game\objects\items\paintkit.dm" +#include "code\game\objects\items\poi_items.dm" +#include "code\game\objects\items\robobag.dm" +#include "code\game\objects\items\shooting_range.dm" +#include "code\game\objects\items\tailoring.dm" +#include "code\game\objects\items\trash.dm" +#include "code\game\objects\items\trash_material.dm" +#include "code\game\objects\items\uav.dm" +#include "code\game\objects\items\devices\ai_detector.dm" +#include "code\game\objects\items\devices\aicard.dm" +#include "code\game\objects\items\devices\binoculars.dm" +#include "code\game\objects\items\devices\chameleonproj.dm" +#include "code\game\objects\items\devices\debugger.dm" +#include "code\game\objects\items\devices\defib.dm" +#include "code\game\objects\items\devices\flash.dm" +#include "code\game\objects\items\devices\flashlight.dm" +#include "code\game\objects\items\devices\floor_painter.dm" +#include "code\game\objects\items\devices\geiger.dm" +#include "code\game\objects\items\devices\gps.dm" +#include "code\game\objects\items\devices\hacktool.dm" +#include "code\game\objects\items\devices\holowarrant.dm" +#include "code\game\objects\items\devices\laserpointer.dm" +#include "code\game\objects\items\devices\lightreplacer.dm" +#include "code\game\objects\items\devices\megaphone.dm" +#include "code\game\objects\items\devices\modkit.dm" +#include "code\game\objects\items\devices\multitool.dm" +#include "code\game\objects\items\devices\paicard.dm" +#include "code\game\objects\items\devices\pipe_painter.dm" +#include "code\game\objects\items\devices\powersink.dm" +#include "code\game\objects\items\devices\scanners.dm" +#include "code\game\objects\items\devices\spy_bug.dm" +#include "code\game\objects\items\devices\suit_cooling.dm" +#include "code\game\objects\items\devices\t_scanner.dm" +#include "code\game\objects\items\devices\taperecorder.dm" +#include "code\game\objects\items\devices\text_to_speech.dm" +#include "code\game\objects\items\devices\traitordevices.dm" +#include "code\game\objects\items\devices\transfer_valve.dm" +#include "code\game\objects\items\devices\translator.dm" +#include "code\game\objects\items\devices\tvcamera.dm" +#include "code\game\objects\items\devices\uplink.dm" +#include "code\game\objects\items\devices\uplink_random_lists.dm" +#include "code\game\objects\items\devices\violin.dm" +#include "code\game\objects\items\devices\whistle.dm" +#include "code\game\objects\items\devices\communicator\communicator.dm" +#include "code\game\objects\items\devices\communicator\helper.dm" +#include "code\game\objects\items\devices\communicator\integrated.dm" +#include "code\game\objects\items\devices\communicator\messaging.dm" +#include "code\game\objects\items\devices\communicator\phone.dm" +#include "code\game\objects\items\devices\communicator\UI.dm" +#include "code\game\objects\items\devices\radio\beacon.dm" +#include "code\game\objects\items\devices\radio\electropack.dm" +#include "code\game\objects\items\devices\radio\encryptionkey.dm" +#include "code\game\objects\items\devices\radio\headset.dm" +#include "code\game\objects\items\devices\radio\intercom.dm" +#include "code\game\objects\items\devices\radio\jammer.dm" +#include "code\game\objects\items\devices\radio\radio.dm" +#include "code\game\objects\items\devices\radio\radiopack.dm" +#include "code\game\objects\items\mines\_mine.dm" +#include "code\game\objects\items\mines\_mine_payload.dm" +#include "code\game\objects\items\mines\mine_assembly.dm" +#include "code\game\objects\items\mines\mine_dnascamble.dm" +#include "code\game\objects\items\mines\mine_emp.dm" +#include "code\game\objects\items\mines\mine_frag.dm" +#include "code\game\objects\items\mines\mine_incendiary.dm" +#include "code\game\objects\items\mines\mine_kick.dm" +#include "code\game\objects\items\mines\mine_napalm.dm" +#include "code\game\objects\items\mines\mine_sleeping.dm" +#include "code\game\objects\items\mines\mine_stun.dm" +#include "code\game\objects\items\mines\mine_training.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\marker_beacons.dm" +#include "code\game\objects\items\stacks\matter_synth.dm" +#include "code\game\objects\items\stacks\medical.dm" +#include "code\game\objects\items\stacks\nanopaste.dm" +#include "code\game\objects\items\stacks\sandbags.dm" +#include "code\game\objects\items\stacks\stack.dm" +#include "code\game\objects\items\stacks\telecrystal.dm" +#include "code\game\objects\items\stacks\tickets.dm" +#include "code\game\objects\items\stacks\tiles\fifty_spawner_tiles.dm" +#include "code\game\objects\items\stacks\tiles\tile_types.dm" +#include "code\game\objects\items\toys\godfigures.dm" +#include "code\game\objects\items\toys\mech_toys.dm" +#include "code\game\objects\items\toys\toys.dm" +#include "code\game\objects\items\weapons\AI_modules.dm" +#include "code\game\objects\items\weapons\augment_items.dm" +#include "code\game\objects\items\weapons\autopsy.dm" +#include "code\game\objects\items\weapons\bones.dm" +#include "code\game\objects\items\weapons\candle.dm" +#include "code\game\objects\items\weapons\canes.dm" +#include "code\game\objects\items\weapons\chewables.dm" +#include "code\game\objects\items\weapons\cigs_lighters.dm" +#include "code\game\objects\items\weapons\clown_items.dm" +#include "code\game\objects\items\weapons\cosmetics.dm" +#include "code\game\objects\items\weapons\dna_injector.dm" +#include "code\game\objects\items\weapons\ecigs.dm" +#include "code\game\objects\items\weapons\explosives.dm" +#include "code\game\objects\items\weapons\extinguisher.dm" +#include "code\game\objects\items\weapons\flamethrower.dm" +#include "code\game\objects\items\weapons\gift_wrappaper.dm" +#include "code\game\objects\items\weapons\handcuffs.dm" +#include "code\game\objects\items\weapons\improvised_components.dm" +#include "code\game\objects\items\weapons\manuals.dm" +#include "code\game\objects\items\weapons\mop.dm" +#include "code\game\objects\items\weapons\mop_deploy.dm" +#include "code\game\objects\items\weapons\paint.dm" +#include "code\game\objects\items\weapons\paiwire.dm" +#include "code\game\objects\items\weapons\policetape.dm" +#include "code\game\objects\items\weapons\RCD.dm" +#include "code\game\objects\items\weapons\RPD.dm" +#include "code\game\objects\items\weapons\RSF.dm" +#include "code\game\objects\items\weapons\scrolls.dm" +#include "code\game\objects\items\weapons\shields.dm" +#include "code\game\objects\items\weapons\stunbaton.dm" +#include "code\game\objects\items\weapons\surgery_tools.dm" +#include "code\game\objects\items\weapons\swords_axes_etc.dm" +#include "code\game\objects\items\weapons\syndie.dm" +#include "code\game\objects\items\weapons\tape.dm" +#include "code\game\objects\items\weapons\teleportation.dm" +#include "code\game\objects\items\weapons\towels.dm" +#include "code\game\objects\items\weapons\traps.dm" +#include "code\game\objects\items\weapons\trays.dm" +#include "code\game\objects\items\weapons\weaponry.dm" +#include "code\game\objects\items\weapons\weldbackpack.dm" +#include "code\game\objects\items\weapons\circuitboards\broken.dm" +#include "code\game\objects\items\weapons\circuitboards\circuitboard.dm" +#include "code\game\objects\items\weapons\circuitboards\frame.dm" +#include "code\game\objects\items\weapons\circuitboards\mecha.dm" +#include "code\game\objects\items\weapons\circuitboards\other.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\air_management.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\camera_monitor.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\computer.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\research.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\shuttle.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\supply.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\telecomms.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\biogenerator.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\cloning.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\engineering.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\fluidpump.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\jukebox.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\kitchen_appliances.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\mech_recharger.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\papershredder.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\power.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\recharge_station.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\research.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\shieldgen.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\ships.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\telecomms.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\unary_atmos.dm" +#include "code\game\objects\items\weapons\grenades\anti_photon_grenade.dm" +#include "code\game\objects\items\weapons\grenades\chem_grenade.dm" +#include "code\game\objects\items\weapons\grenades\concussion.dm" +#include "code\game\objects\items\weapons\grenades\emgrenade.dm" +#include "code\game\objects\items\weapons\grenades\explosive.dm" +#include "code\game\objects\items\weapons\grenades\flashbang.dm" +#include "code\game\objects\items\weapons\grenades\grenade.dm" +#include "code\game\objects\items\weapons\grenades\projectile.dm" +#include "code\game\objects\items\weapons\grenades\smokebomb.dm" +#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" +#include "code\game\objects\items\weapons\grenades\supermatter.dm" +#include "code\game\objects\items\weapons\id cards\cards.dm" +#include "code\game\objects\items\weapons\id cards\id_stacks.dm" +#include "code\game\objects\items\weapons\id cards\station_ids.dm" +#include "code\game\objects\items\weapons\id cards\syndicate_ids.dm" +#include "code\game\objects\items\weapons\implants\implant.dm" +#include "code\game\objects\items\weapons\implants\implantaugment.dm" +#include "code\game\objects\items\weapons\implants\implantcase.dm" +#include "code\game\objects\items\weapons\implants\implantchair.dm" +#include "code\game\objects\items\weapons\implants\implantcircuits.dm" +#include "code\game\objects\items\weapons\implants\implantdud.dm" +#include "code\game\objects\items\weapons\implants\implanter.dm" +#include "code\game\objects\items\weapons\implants\implantfreedom.dm" +#include "code\game\objects\items\weapons\implants\implantlanguage.dm" +#include "code\game\objects\items\weapons\implants\implantpad.dm" +#include "code\game\objects\items\weapons\implants\implantrestrainingbolt.dm" +#include "code\game\objects\items\weapons\implants\implantuplink.dm" +#include "code\game\objects\items\weapons\implants\neuralbasic.dm" +#include "code\game\objects\items\weapons\material\ashtray.dm" +#include "code\game\objects\items\weapons\material\bats.dm" +#include "code\game\objects\items\weapons\material\chainsaw.dm" +#include "code\game\objects\items\weapons\material\foam.dm" +#include "code\game\objects\items\weapons\material\gravemarker.dm" +#include "code\game\objects\items\weapons\material\kitchen.dm" +#include "code\game\objects\items\weapons\material\knives.dm" +#include "code\game\objects\items\weapons\material\material_armor.dm" +#include "code\game\objects\items\weapons\material\material_weapons.dm" +#include "code\game\objects\items\weapons\material\misc.dm" +#include "code\game\objects\items\weapons\material\shards.dm" +#include "code\game\objects\items\weapons\material\swords.dm" +#include "code\game\objects\items\weapons\material\thrown.dm" +#include "code\game\objects\items\weapons\material\twohanded.dm" +#include "code\game\objects\items\weapons\material\whetstone.dm" +#include "code\game\objects\items\weapons\melee\deflect.dm" +#include "code\game\objects\items\weapons\melee\energy.dm" +#include "code\game\objects\items\weapons\melee\misc.dm" +#include "code\game\objects\items\weapons\storage\backpack.dm" +#include "code\game\objects\items\weapons\storage\bags.dm" +#include "code\game\objects\items\weapons\storage\belt.dm" +#include "code\game\objects\items\weapons\storage\bible.dm" +#include "code\game\objects\items\weapons\storage\boxes.dm" +#include "code\game\objects\items\weapons\storage\briefcase.dm" +#include "code\game\objects\items\weapons\storage\fancy.dm" +#include "code\game\objects\items\weapons\storage\firstaid.dm" +#include "code\game\objects\items\weapons\storage\internal.dm" +#include "code\game\objects\items\weapons\storage\laundry_basket.dm" +#include "code\game\objects\items\weapons\storage\lockbox.dm" +#include "code\game\objects\items\weapons\storage\misc.dm" +#include "code\game\objects\items\weapons\storage\mre.dm" +#include "code\game\objects\items\weapons\storage\quickdraw.dm" +#include "code\game\objects\items\weapons\storage\secure.dm" +#include "code\game\objects\items\weapons\storage\storage.dm" +#include "code\game\objects\items\weapons\storage\toolbox.dm" +#include "code\game\objects\items\weapons\storage\uplink_kits.dm" +#include "code\game\objects\items\weapons\storage\wallets.dm" +#include "code\game\objects\items\weapons\storage\bags\ore.dm" +#include "code\game\objects\items\weapons\tanks\jetpack.dm" +#include "code\game\objects\items\weapons\tanks\tank_types.dm" +#include "code\game\objects\items\weapons\tanks\tanks.dm" +#include "code\game\objects\items\weapons\tools\crowbar.dm" +#include "code\game\objects\items\weapons\tools\screwdriver.dm" +#include "code\game\objects\items\weapons\tools\weldingtool.dm" +#include "code\game\objects\items\weapons\tools\wirecutters.dm" +#include "code\game\objects\items\weapons\tools\wrench.dm" +#include "code\game\objects\random\_random.dm" +#include "code\game\objects\random\anomalous.dm" +#include "code\game\objects\random\guns_and_ammo.dm" +#include "code\game\objects\random\maintenance.dm" +#include "code\game\objects\random\mapping.dm" +#include "code\game\objects\random\mechs.dm" +#include "code\game\objects\random\misc.dm" +#include "code\game\objects\random\mob.dm" +#include "code\game\objects\random\spacesuits.dm" +#include "code\game\objects\random\unidentified\medicine.dm" +#include "code\game\objects\structures\animal_den.dm" +#include "code\game\objects\structures\barricades.dm" +#include "code\game\objects\structures\barsign.dm" +#include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\bonfire.dm" +#include "code\game\objects\structures\catwalk.dm" +#include "code\game\objects\structures\cliff.dm" +#include "code\game\objects\structures\coathanger.dm" +#include "code\game\objects\structures\curtains.dm" +#include "code\game\objects\structures\displaycase.dm" +#include "code\game\objects\structures\dogbed.dm" +#include "code\game\objects\structures\door_assembly.dm" +#include "code\game\objects\structures\electricchair.dm" +#include "code\game\objects\structures\extinguisher.dm" +#include "code\game\objects\structures\fence.dm" +#include "code\game\objects\structures\fireaxe.dm" +#include "code\game\objects\structures\fitness.dm" +#include "code\game\objects\structures\girders.dm" +#include "code\game\objects\structures\gravemarker.dm" +#include "code\game\objects\structures\grille.dm" +#include "code\game\objects\structures\handrail.dm" +#include "code\game\objects\structures\holoplant.dm" +#include "code\game\objects\structures\inflatable.dm" +#include "code\game\objects\structures\janicart.dm" +#include "code\game\objects\structures\kitchen_spike.dm" +#include "code\game\objects\structures\lattice.dm" +#include "code\game\objects\structures\ledges.dm" +#include "code\game\objects\structures\lightpost.dm" +#include "code\game\objects\structures\loot_piles.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\plasticflaps.dm" +#include "code\game\objects\structures\railing.dm" +#include "code\game\objects\structures\safe.dm" +#include "code\game\objects\structures\salvageable.dm" +#include "code\game\objects\structures\signs.dm" +#include "code\game\objects\structures\simple_doors.dm" +#include "code\game\objects\structures\snowman.dm" +#include "code\game\objects\structures\stasis_cage.dm" +#include "code\game\objects\structures\tank_dispenser.dm" +#include "code\game\objects\structures\target_stake.dm" +#include "code\game\objects\structures\transit_tubes.dm" +#include "code\game\objects\structures\under_wardrobe.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\window_spawner.dm" +#include "code\game\objects\structures\crates_lockers\__closets.dm" +#include "code\game\objects\structures\crates_lockers\_closets_appearance_definitions.dm" +#include "code\game\objects\structures\crates_lockers\crates.dm" +#include "code\game\objects\structures\crates_lockers\largecrate.dm" +#include "code\game\objects\structures\crates_lockers\vehiclecage.dm" +#include "code\game\objects\structures\crates_lockers\closets\coffin.dm" +#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" +#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" +#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" +#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" +#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" +#include "code\game\objects\structures\crates_lockers\closets\statue.dm" +#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" +#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\walllocker.dm" +#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" +#include "code\game\objects\structures\flora\flora.dm" +#include "code\game\objects\structures\flora\grass.dm" +#include "code\game\objects\structures\flora\trees.dm" +#include "code\game\objects\structures\ghost_pods\ghost_pods.dm" +#include "code\game\objects\structures\ghost_pods\human.dm" +#include "code\game\objects\structures\ghost_pods\mysterious.dm" +#include "code\game\objects\structures\ghost_pods\silicon.dm" +#include "code\game\objects\structures\props\alien_props.dm" +#include "code\game\objects\structures\props\beam_prism.dm" +#include "code\game\objects\structures\props\billboard.dm" +#include "code\game\objects\structures\props\blackbox.dm" +#include "code\game\objects\structures\props\esoteric.dm" +#include "code\game\objects\structures\props\fake_ai.dm" +#include "code\game\objects\structures\props\fences.dm" +#include "code\game\objects\structures\props\machines.dm" +#include "code\game\objects\structures\props\nest.dm" +#include "code\game\objects\structures\props\projectile_lock.dm" +#include "code\game\objects\structures\props\prop.dm" +#include "code\game\objects\structures\props\puzzledoor.dm" +#include "code\game\objects\structures\props\rocks.dm" +#include "code\game\objects\structures\props\statue.dm" +#include "code\game\objects\structures\props\swarm.dm" +#include "code\game\objects\structures\props\transmitter.dm" +#include "code\game\objects\structures\props\warfare.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\stools.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm" +#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair_item.dm" +#include "code\game\turfs\simulated.dm" +#include "code\game\turfs\turf.dm" +#include "code\game\turfs\turf_changing.dm" +#include "code\game\turfs\turf_flick_animations.dm" +#include "code\game\turfs\unsimulated.dm" +#include "code\game\turfs\flooring\flooring.dm" +#include "code\game\turfs\flooring\flooring_decals.dm" +#include "code\game\turfs\flooring\flooring_premade.dm" +#include "code\game\turfs\initialization\init.dm" +#include "code\game\turfs\initialization\maintenance.dm" +#include "code\game\turfs\simulated\floor.dm" +#include "code\game\turfs\simulated\floor_acts.dm" +#include "code\game\turfs\simulated\floor_attackby.dm" +#include "code\game\turfs\simulated\floor_damage.dm" +#include "code\game\turfs\simulated\floor_icon.dm" +#include "code\game\turfs\simulated\floor_static.dm" +#include "code\game\turfs\simulated\floor_types.dm" +#include "code\game\turfs\simulated\floor_types_eris.dm" +#include "code\game\turfs\simulated\lava.dm" +#include "code\game\turfs\simulated\wall_attacks.dm" +#include "code\game\turfs\simulated\wall_icon.dm" +#include "code\game\turfs\simulated\wall_types.dm" +#include "code\game\turfs\simulated\walls.dm" +#include "code\game\turfs\simulated\water.dm" +#include "code\game\turfs\simulated\dungeon\floor.dm" +#include "code\game\turfs\simulated\dungeon\wall.dm" +#include "code\game\turfs\simulated\outdoors\dirt.dm" +#include "code\game\turfs\simulated\outdoors\grass.dm" +#include "code\game\turfs\simulated\outdoors\grass_random.dm" +#include "code\game\turfs\simulated\outdoors\outdoors.dm" +#include "code\game\turfs\simulated\outdoors\outdoors_attackby.dm" +#include "code\game\turfs\simulated\outdoors\sidewalk.dm" +#include "code\game\turfs\simulated\outdoors\sky.dm" +#include "code\game\turfs\simulated\outdoors\snow.dm" +#include "code\game\turfs\snow\snow.dm" +#include "code\game\turfs\space\cracked_asteroid.dm" +#include "code\game\turfs\space\space.dm" +#include "code\game\turfs\space\transit.dm" +#include "code\game\turfs\unsimulated\beach.dm" +#include "code\game\turfs\unsimulated\floor.dm" +#include "code\game\turfs\unsimulated\planetary.dm" +#include "code\game\turfs\unsimulated\shuttle.dm" +#include "code\game\turfs\unsimulated\walls.dm" +#include "code\game\verbs\suicide.dm" +#include "code\js\byjax.dm" +#include "code\js\menus.dm" +#include "code\modules\admin\admin.dm" +#include "code\modules\admin\admin_attack_log.dm" +#include "code\modules\admin\admin_investigate.dm" +#include "code\modules\admin\admin_memo.dm" +#include "code\modules\admin\admin_ranks.dm" +#include "code\modules\admin\admin_secrets.dm" +#include "code\modules\admin\admin_tools.dm" +#include "code\modules\admin\admin_verb_lists.dm" +#include "code\modules\admin\admin_verbs.dm" +#include "code\modules\admin\banjob.dm" +#include "code\modules\admin\create_mob.dm" +#include "code\modules\admin\create_object.dm" +#include "code\modules\admin\create_turf.dm" +#include "code\modules\admin\fix_player_notes_listing.dm" +#include "code\modules\admin\holder2.dm" +#include "code\modules\admin\IsBanned.dm" +#include "code\modules\admin\map_capture.dm" +#include "code\modules\admin\NewBan.dm" +#include "code\modules\admin\news.dm" +#include "code\modules\admin\persistence.dm" +#include "code\modules\admin\player_notes.dm" +#include "code\modules\admin\player_panel.dm" +#include "code\modules\admin\topic.dm" +#include "code\modules\admin\ToRban.dm" +#include "code\modules\admin\callproc\callproc.dm" +#include "code\modules\admin\DB ban\functions.dm" +#include "code\modules\admin\permissionverbs\permissionedit.dm" +#include "code\modules\admin\secrets\admin_secrets\admin_logs.dm" +#include "code\modules\admin\secrets\admin_secrets\alter_narsie.dm" +#include "code\modules\admin\secrets\admin_secrets\bombing_list.dm" +#include "code\modules\admin\secrets\admin_secrets\jump_shuttle.dm" +#include "code\modules\admin\secrets\admin_secrets\launch_shuttle.dm" +#include "code\modules\admin\secrets\admin_secrets\launch_shuttle_forced.dm" +#include "code\modules\admin\secrets\admin_secrets\list_dna.dm" +#include "code\modules\admin\secrets\admin_secrets\list_fingerprints.dm" +#include "code\modules\admin\secrets\admin_secrets\move_shuttle.dm" +#include "code\modules\admin\secrets\admin_secrets\prison_warp.dm" +#include "code\modules\admin\secrets\admin_secrets\show_ai_laws.dm" +#include "code\modules\admin\secrets\admin_secrets\show_crew_manifest.dm" +#include "code\modules\admin\secrets\admin_secrets\show_game_mode.dm" +#include "code\modules\admin\secrets\admin_secrets\show_law_changes.dm" +#include "code\modules\admin\secrets\admin_secrets\show_signalers.dm" +#include "code\modules\admin\secrets\admin_secrets\traitors_and_objectives.dm" +#include "code\modules\admin\secrets\final_solutions\summon_narsie.dm" +#include "code\modules\admin\secrets\final_solutions\supermatter_cascade.dm" +#include "code\modules\admin\secrets\fun_secrets\break_all_lights.dm" +#include "code\modules\admin\secrets\fun_secrets\break_some_lights.dm" +#include "code\modules\admin\secrets\fun_secrets\fix_all_lights.dm" +#include "code\modules\admin\secrets\fun_secrets\ghost_mode.dm" +#include "code\modules\admin\secrets\fun_secrets\paintball_mode.dm" +#include "code\modules\admin\secrets\fun_secrets\power_all_smes.dm" +#include "code\modules\admin\secrets\fun_secrets\power_failure_begin.dm" +#include "code\modules\admin\secrets\fun_secrets\power_failure_end.dm" +#include "code\modules\admin\secrets\fun_secrets\remove_all_clothing.dm" +#include "code\modules\admin\secrets\fun_secrets\remove_internal_clothing.dm" +#include "code\modules\admin\secrets\fun_secrets\send_strike_team.dm" +#include "code\modules\admin\secrets\fun_secrets\toggle_bomb_cap.dm" +#include "code\modules\admin\secrets\fun_secrets\triple_ai_mode.dm" +#include "code\modules\admin\secrets\fun_secrets\turn_humans_into_corgies.dm" +#include "code\modules\admin\secrets\fun_secrets\turn_humans_into_monkeys.dm" +#include "code\modules\admin\secrets\random_events\gravity.dm" +#include "code\modules\admin\secrets\random_events\trigger_cordical_borer_infestation.dm" +#include "code\modules\admin\secrets\random_events\trigger_xenomorph_infestation.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\antag-ooc.dm" +#include "code\modules\admin\verbs\atmosdebug.dm" +#include "code\modules\admin\verbs\BrokenInhands.dm" +#include "code\modules\admin\verbs\buildmode.dm" +#include "code\modules\admin\verbs\change_appearance.dm" +#include "code\modules\admin\verbs\check_customitem_activity.dm" +#include "code\modules\admin\verbs\cinematic.dm" +#include "code\modules\admin\verbs\custom_event.dm" +#include "code\modules\admin\verbs\dbcon_fix.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\grief_fixers.dm" +#include "code\modules\admin\verbs\lightning_strike.dm" +#include "code\modules\admin\verbs\map_template_loadverb.dm" +#include "code\modules\admin\verbs\mapping.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\smite.dm" +#include "code\modules\admin\verbs\striketeam.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\admin\view_variables\admin_delete.dm" +#include "code\modules\admin\view_variables\debug_variables.dm" +#include "code\modules\admin\view_variables\get_variables.dm" +#include "code\modules\admin\view_variables\helpers.dm" +#include "code\modules\admin\view_variables\mass_edit_variables.dm" +#include "code\modules\admin\view_variables\modify_variables.dm" +#include "code\modules\admin\view_variables\topic.dm" +#include "code\modules\admin\view_variables\topic_list.dm" +#include "code\modules\admin\view_variables\view_variables.dm" +#include "code\modules\admin\view_variables\view_variables_global.dm" +#include "code\modules\ai\_defines.dm" +#include "code\modules\ai\ai_holder.dm" +#include "code\modules\ai\ai_holder_combat.dm" +#include "code\modules\ai\ai_holder_combat_unseen.dm" +#include "code\modules\ai\ai_holder_communication.dm" +#include "code\modules\ai\ai_holder_cooperation.dm" +#include "code\modules\ai\ai_holder_debug.dm" +#include "code\modules\ai\ai_holder_disabled.dm" +#include "code\modules\ai\ai_holder_fleeing.dm" +#include "code\modules\ai\ai_holder_follow.dm" +#include "code\modules\ai\ai_holder_movement.dm" +#include "code\modules\ai\ai_holder_pathfinding.dm" +#include "code\modules\ai\ai_holder_targeting.dm" +#include "code\modules\ai\interfaces.dm" +#include "code\modules\ai\say_list.dm" +#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai.dm" +#include "code\modules\ai\ai_holder_subtypes\slime_xenobio_ai.dm" +#include "code\modules\ai\ai_holder_subtypes\xeno_alien_ai.dm" +#include "code\modules\alarm\alarm.dm" +#include "code\modules\alarm\alarm_handler.dm" +#include "code\modules\alarm\atmosphere_alarm.dm" +#include "code\modules\alarm\camera_alarm.dm" +#include "code\modules\alarm\fire_alarm.dm" +#include "code\modules\alarm\motion_alarm.dm" +#include "code\modules\alarm\power_alarm.dm" +#include "code\modules\antagonist\antagonist.dm" +#include "code\modules\antagonist\antagonist_add.dm" +#include "code\modules\antagonist\antagonist_create.dm" +#include "code\modules\antagonist\antagonist_equip.dm" +#include "code\modules\antagonist\antagonist_factions.dm" +#include "code\modules\antagonist\antagonist_helpers.dm" +#include "code\modules\antagonist\antagonist_objectives.dm" +#include "code\modules\antagonist\antagonist_panel.dm" +#include "code\modules\antagonist\antagonist_place.dm" +#include "code\modules\antagonist\antagonist_print.dm" +#include "code\modules\antagonist\antagonist_update.dm" +#include "code\modules\antagonist\alien\borer.dm" +#include "code\modules\antagonist\alien\xenomorph.dm" +#include "code\modules\antagonist\outsider\commando.dm" +#include "code\modules\antagonist\outsider\deathsquad.dm" +#include "code\modules\antagonist\outsider\ert.dm" +#include "code\modules\antagonist\outsider\mercenary.dm" +#include "code\modules\antagonist\outsider\ninja.dm" +#include "code\modules\antagonist\outsider\raider.dm" +#include "code\modules\antagonist\outsider\technomancer.dm" +#include "code\modules\antagonist\outsider\trader.dm" +#include "code\modules\antagonist\outsider\wizard.dm" +#include "code\modules\antagonist\station\changeling.dm" +#include "code\modules\antagonist\station\cultist.dm" +#include "code\modules\antagonist\station\infiltrator.dm" +#include "code\modules\antagonist\station\loyalist.dm" +#include "code\modules\antagonist\station\renegade.dm" +#include "code\modules\antagonist\station\revolutionary.dm" +#include "code\modules\antagonist\station\rogue_ai.dm" +#include "code\modules\antagonist\station\stowaway.dm" +#include "code\modules\antagonist\station\thug.dm" +#include "code\modules\antagonist\station\traitor.dm" +#include "code\modules\artifice\cursedform.dm" +#include "code\modules\artifice\deadringer.dm" +#include "code\modules\artifice\telecube.dm" +#include "code\modules\assembly\assembly.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\asset_cache\asset_cache.dm" +#include "code\modules\asset_cache\asset_cache_client.dm" +#include "code\modules\asset_cache\asset_cache_item.dm" +#include "code\modules\asset_cache\asset_list.dm" +#include "code\modules\asset_cache\asset_list_items.dm" +#include "code\modules\awaymissions\bluespaceartillery.dm" +#include "code\modules\awaymissions\corpse.dm" +#include "code\modules\awaymissions\exile.dm" +#include "code\modules\awaymissions\gateway.dm" +#include "code\modules\awaymissions\loot.dm" +#include "code\modules\awaymissions\pamphlet.dm" +#include "code\modules\awaymissions\trigger.dm" +#include "code\modules\awaymissions\zlevel.dm" +#include "code\modules\blob2\_defines.dm" +#include "code\modules\blob2\blobs\base_blob.dm" +#include "code\modules\blob2\blobs\core.dm" +#include "code\modules\blob2\blobs\factory.dm" +#include "code\modules\blob2\blobs\node.dm" +#include "code\modules\blob2\blobs\normal.dm" +#include "code\modules\blob2\blobs\resource.dm" +#include "code\modules\blob2\blobs\shield.dm" +#include "code\modules\blob2\overmind\overmind.dm" +#include "code\modules\blob2\overmind\powers.dm" +#include "code\modules\blob2\overmind\types.dm" +#include "code\modules\blob2\overmind\types\barnacle.dm" +#include "code\modules\blob2\overmind\types\blazing_oil.dm" +#include "code\modules\blob2\overmind\types\classic.dm" +#include "code\modules\blob2\overmind\types\cryogenic_goo.dm" +#include "code\modules\blob2\overmind\types\ectoplasmic_horror.dm" +#include "code\modules\blob2\overmind\types\electromagnetic_web.dm" +#include "code\modules\blob2\overmind\types\energized_jelly.dm" +#include "code\modules\blob2\overmind\types\explosive_lattice.dm" +#include "code\modules\blob2\overmind\types\fabrication_swarm.dm" +#include "code\modules\blob2\overmind\types\fulminant_organism.dm" +#include "code\modules\blob2\overmind\types\fungal_bloom.dm" +#include "code\modules\blob2\overmind\types\grey_goo.dm" +#include "code\modules\blob2\overmind\types\pressurized_slime.dm" +#include "code\modules\blob2\overmind\types\radioactive_ooze.dm" +#include "code\modules\blob2\overmind\types\ravenous_macrophage.dm" +#include "code\modules\blob2\overmind\types\reactive_spines.dm" +#include "code\modules\blob2\overmind\types\roiling_mold.dm" +#include "code\modules\blob2\overmind\types\shifting_fragments.dm" +#include "code\modules\blob2\overmind\types\synchronous_mesh.dm" +#include "code\modules\blob2\overmind\types\volatile_alluvium.dm" +#include "code\modules\busy_space\air_traffic.dm" +#include "code\modules\busy_space\locations.dm" +#include "code\modules\busy_space\loremaster.dm" +#include "code\modules\busy_space\missions.dm" +#include "code\modules\busy_space\organizations.dm" +#include "code\modules\busy_space\systems.dm" +#include "code\modules\catalogue\atoms.dm" +#include "code\modules\catalogue\catalogue_data.dm" +#include "code\modules\catalogue\cataloguer.dm" +#include "code\modules\catalogue\cataloguer_visuals.dm" +#include "code\modules\client\client defines.dm" +#include "code\modules\client\client procs.dm" +#include "code\modules\client\movement.dm" +#include "code\modules\client\preferences.dm" +#include "code\modules\client\preferences_factions.dm" +#include "code\modules\client\preferences_savefile.dm" +#include "code\modules\client\preferences_spawnpoints.dm" +#include "code\modules\client\preferences_toggle_procs.dm" +#include "code\modules\client\spam_prevention.dm" +#include "code\modules\client\ui_style.dm" +#include "code\modules\client\preference_setup\_defines.dm" +#include "code\modules\client\preference_setup\preference_setup.dm" +#include "code\modules\client\preference_setup\antagonism\01_basic.dm" +#include "code\modules\client\preference_setup\antagonism\02_candidacy.dm" +#include "code\modules\client\preference_setup\general\01_basic.dm" +#include "code\modules\client\preference_setup\general\02_language.dm" +#include "code\modules\client\preference_setup\general\03_body.dm" +#include "code\modules\client\preference_setup\general\04_equipment.dm" +#include "code\modules\client\preference_setup\general\05_background.dm" +#include "code\modules\client\preference_setup\general\06_flavor.dm" +#include "code\modules\client\preference_setup\global\01_ui.dm" +#include "code\modules\client\preference_setup\global\02_settings.dm" +#include "code\modules\client\preference_setup\global\03_pai.dm" +#include "code\modules\client\preference_setup\global\setting_datums.dm" +#include "code\modules\client\preference_setup\loadout\gear_tweaks.dm" +#include "code\modules\client\preference_setup\loadout\loadout.dm" +#include "code\modules\client\preference_setup\loadout\loadout_accessories.dm" +#include "code\modules\client\preference_setup\loadout\loadout_contraband.dm" +#include "code\modules\client\preference_setup\loadout\loadout_cosmetics.dm" +#include "code\modules\client\preference_setup\loadout\loadout_cyberware.dm" +#include "code\modules\client\preference_setup\loadout\loadout_ears.dm" +#include "code\modules\client\preference_setup\loadout\loadout_eyes.dm" +#include "code\modules\client\preference_setup\loadout\loadout_general.dm" +#include "code\modules\client\preference_setup\loadout\loadout_gloves.dm" +#include "code\modules\client\preference_setup\loadout\loadout_head.dm" +#include "code\modules\client\preference_setup\loadout\loadout_mask.dm" +#include "code\modules\client\preference_setup\loadout\loadout_shoes.dm" +#include "code\modules\client\preference_setup\loadout\loadout_smoking.dm" +#include "code\modules\client\preference_setup\loadout\loadout_suit.dm" +#include "code\modules\client\preference_setup\loadout\loadout_uniform.dm" +#include "code\modules\client\preference_setup\loadout\loadout_utility.dm" +#include "code\modules\client\preference_setup\loadout\loadout_xeno.dm" +#include "code\modules\client\preference_setup\occupation\occupation.dm" +#include "code\modules\client\preference_setup\skills\skills.dm" +#include "code\modules\client\preference_setup\traits\trait_defines.dm" +#include "code\modules\client\preference_setup\traits\traits.dm" +#include "code\modules\client\preference_setup\volume_sliders\01_volume.dm" +#include "code\modules\client\verbs\advanced_who.dm" +#include "code\modules\client\verbs\ignore.dm" +#include "code\modules\client\verbs\ooc.dm" +#include "code\modules\client\verbs\ping.dm" +#include "code\modules\client\verbs\who.dm" +#include "code\modules\clothing\chameleon.dm" +#include "code\modules\clothing\clothing.dm" +#include "code\modules\clothing\clothing_accessories.dm" +#include "code\modules\clothing\clothing_icons.dm" +#include "code\modules\clothing\ears\earrings.dm" +#include "code\modules\clothing\ears\ears.dm" +#include "code\modules\clothing\ears\headphones.dm" +#include "code\modules\clothing\glasses\glasses.dm" +#include "code\modules\clothing\glasses\hud.dm" +#include "code\modules\clothing\gloves\antagonist.dm" +#include "code\modules\clothing\gloves\arm_guards.dm" +#include "code\modules\clothing\gloves\boxing.dm" +#include "code\modules\clothing\gloves\color.dm" +#include "code\modules\clothing\gloves\gauntlets.dm" +#include "code\modules\clothing\gloves\miscellaneous.dm" +#include "code\modules\clothing\head\collectable.dm" +#include "code\modules\clothing\head\flowercrowns.dm" +#include "code\modules\clothing\head\hardhat.dm" +#include "code\modules\clothing\head\helmet.dm" +#include "code\modules\clothing\head\hood.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\pilot_helmet.dm" +#include "code\modules\clothing\head\soft_caps.dm" +#include "code\modules\clothing\head\solgov.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\voice.dm" +#include "code\modules\clothing\rings\material.dm" +#include "code\modules\clothing\rings\rings.dm" +#include "code\modules\clothing\shoes\boots.dm" +#include "code\modules\clothing\shoes\colour.dm" +#include "code\modules\clothing\shoes\leg_guards.dm" +#include "code\modules\clothing\shoes\magboots.dm" +#include "code\modules\clothing\shoes\miscellaneous.dm" +#include "code\modules\clothing\shoes\xeno\teshari.dm" +#include "code\modules\clothing\spacesuits\alien.dm" +#include "code\modules\clothing\spacesuits\breaches.dm" +#include "code\modules\clothing\spacesuits\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\spacesuits.dm" +#include "code\modules\clothing\spacesuits\syndi.dm" +#include "code\modules\clothing\spacesuits\rig\rig.dm" +#include "code\modules\clothing\spacesuits\rig\rig_attackby.dm" +#include "code\modules\clothing\spacesuits\rig\rig_pieces.dm" +#include "code\modules\clothing\spacesuits\rig\rig_tgui.dm" +#include "code\modules\clothing\spacesuits\rig\rig_verbs.dm" +#include "code\modules\clothing\spacesuits\rig\rig_wiring.dm" +#include "code\modules\clothing\spacesuits\rig\modules\modules.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\ai_container.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\chem_dispenser.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\cleaner_launcher.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\cloak.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\datajack.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\device.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\electrowarfare.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\grenade_launcher.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\inhand_fabricator.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\jetpack.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\metalfoam_launcher.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\powersink.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\self_destruct.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\sprinter.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\teleporter.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\vision.dm" +#include "code\modules\clothing\spacesuits\rig\modules\specific\voice.dm" +#include "code\modules\clothing\spacesuits\rig\suits\alien.dm" +#include "code\modules\clothing\spacesuits\rig\suits\combat.dm" +#include "code\modules\clothing\spacesuits\rig\suits\ert.dm" +#include "code\modules\clothing\spacesuits\rig\suits\light.dm" +#include "code\modules\clothing\spacesuits\rig\suits\merc.dm" +#include "code\modules\clothing\spacesuits\rig\suits\pmc.dm" +#include "code\modules\clothing\spacesuits\rig\suits\robotics.dm" +#include "code\modules\clothing\spacesuits\rig\suits\station.dm" +#include "code\modules\clothing\spacesuits\void\event.dm" +#include "code\modules\clothing\spacesuits\void\merc.dm" +#include "code\modules\clothing\spacesuits\void\misc.dm" +#include "code\modules\clothing\spacesuits\void\station.dm" +#include "code\modules\clothing\spacesuits\void\void.dm" +#include "code\modules\clothing\spacesuits\void\wizard.dm" +#include "code\modules\clothing\spacesuits\void\zaddat.dm" +#include "code\modules\clothing\suits\armor.dm" +#include "code\modules\clothing\suits\bio.dm" +#include "code\modules\clothing\suits\hooded.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\solgov.dm" +#include "code\modules\clothing\suits\storage.dm" +#include "code\modules\clothing\suits\utility.dm" +#include "code\modules\clothing\suits\wiz_robe.dm" +#include "code\modules\clothing\suits\aliens\tajara.dm" +#include "code\modules\clothing\suits\aliens\teshari.dm" +#include "code\modules\clothing\suits\aliens\unathi.dm" +#include "code\modules\clothing\suits\aliens\vox.dm" +#include "code\modules\clothing\under\color.dm" +#include "code\modules\clothing\under\costume.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\solgov.dm" +#include "code\modules\clothing\under\syndicate.dm" +#include "code\modules\clothing\under\accessories\accessory.dm" +#include "code\modules\clothing\under\accessories\armband.dm" +#include "code\modules\clothing\under\accessories\armor.dm" +#include "code\modules\clothing\under\accessories\badges.dm" +#include "code\modules\clothing\under\accessories\clothing.dm" +#include "code\modules\clothing\under\accessories\holster.dm" +#include "code\modules\clothing\under\accessories\lockets.dm" +#include "code\modules\clothing\under\accessories\permits.dm" +#include "code\modules\clothing\under\accessories\storage.dm" +#include "code\modules\clothing\under\accessories\torch.dm" +#include "code\modules\clothing\under\accessories\crafted\poncho.dm" +#include "code\modules\clothing\under\accessories\temperature\poncho.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\xenos\teshari.dm" +#include "code\modules\clothing\under\xenos\vox.dm" +#include "code\modules\compass\_compass.dm" +#include "code\modules\compass\compass_holder.dm" +#include "code\modules\compass\compass_waypoint.dm" +#include "code\modules\compass\~compass.dm" +#include "code\modules\customitems\item_spawning.dm" +#include "code\modules\detectivework\footprints.dm" +#include "code\modules\detectivework\forensics.dm" +#include "code\modules\detectivework\microscope\dnascanner.dm" +#include "code\modules\detectivework\microscope\microscope.dm" +#include "code\modules\detectivework\tools\crimekit.dm" +#include "code\modules\detectivework\tools\evidencebag.dm" +#include "code\modules\detectivework\tools\luminol.dm" +#include "code\modules\detectivework\tools\rag.dm" +#include "code\modules\detectivework\tools\sample_kits.dm" +#include "code\modules\detectivework\tools\scanner.dm" +#include "code\modules\detectivework\tools\storage.dm" +#include "code\modules\detectivework\tools\swabs.dm" +#include "code\modules\detectivework\tools\uvlight.dm" +#include "code\modules\economy\Accounts.dm" +#include "code\modules\economy\Accounts_DB.dm" +#include "code\modules\economy\ATM.dm" +#include "code\modules\economy\cash.dm" +#include "code\modules\economy\cash_register.dm" +#include "code\modules\economy\coins.dm" +#include "code\modules\economy\economy_misc.dm" +#include "code\modules\economy\EFTPOS.dm" +#include "code\modules\economy\Events.dm" +#include "code\modules\economy\Events_Mundane.dm" +#include "code\modules\economy\lorenews.dm" +#include "code\modules\economy\mint.dm" +#include "code\modules\economy\money_bag.dm" +#include "code\modules\economy\price_list.dm" +#include "code\modules\economy\retail_scanner.dm" +#include "code\modules\economy\TradeDestinations.dm" +#include "code\modules\economy\vending.dm" +#include "code\modules\economy\vending_machines.dm" +#include "code\modules\effects\vfx\_effect_system.dm" +#include "code\modules\effects\vfx\explosion.dm" +#include "code\modules\effects\vfx\explosion_particles.dm" +#include "code\modules\effects\vfx\ion_trail.dm" +#include "code\modules\effects\vfx\smoke.dm" +#include "code\modules\effects\vfx\sparks.dm" +#include "code\modules\effects\vfx\steam.dm" +#include "code\modules\emotes\emote_define.dm" +#include "code\modules\emotes\emote_mob.dm" +#include "code\modules\emotes\definitions\_mob.dm" +#include "code\modules\emotes\definitions\_species.dm" +#include "code\modules\emotes\definitions\audible.dm" +#include "code\modules\emotes\definitions\audible_cough.dm" +#include "code\modules\emotes\definitions\audible_scream.dm" +#include "code\modules\emotes\definitions\audible_slap.dm" +#include "code\modules\emotes\definitions\audible_snap.dm" +#include "code\modules\emotes\definitions\audible_sneeze.dm" +#include "code\modules\emotes\definitions\audible_whistle.dm" +#include "code\modules\emotes\definitions\exertion.dm" +#include "code\modules\emotes\definitions\human.dm" +#include "code\modules\emotes\definitions\slimes.dm" +#include "code\modules\emotes\definitions\synthetics.dm" +#include "code\modules\emotes\definitions\visible.dm" +#include "code\modules\emotes\definitions\visible_animated.dm" +#include "code\modules\emotes\definitions\visible_vomit.dm" +#include "code\modules\error_handler\_defines.dm" +#include "code\modules\error_handler\error_handler.dm" +#include "code\modules\error_handler\error_viewer.dm" +#include "code\modules\error_handler\~defines.dm" +#include "code\modules\events\apc_damage.dm" +#include "code\modules\events\atmos_leak.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\camera_damage.dm" +#include "code\modules\events\canister_leak.dm" +#include "code\modules\events\carp_migration.dm" +#include "code\modules\events\comms_blackout.dm" +#include "code\modules\events\communications_blackout.dm" +#include "code\modules\events\dust.dm" +#include "code\modules\events\electrical_storm.dm" +#include "code\modules\events\event.dm" +#include "code\modules\events\event_container.dm" +#include "code\modules\events\event_dynamic.dm" +#include "code\modules\events\event_manager.dm" +#include "code\modules\events\gravity.dm" +#include "code\modules\events\grid_check.dm" +#include "code\modules\events\infestation.dm" +#include "code\modules\events\ion_storm.dm" +#include "code\modules\events\meteors.dm" +#include "code\modules\events\money_hacker.dm" +#include "code\modules\events\money_lotto.dm" +#include "code\modules\events\money_spam.dm" +#include "code\modules\events\prison_break.dm" +#include "code\modules\events\radiation_storm.dm" +#include "code\modules\events\random_antagonist.dm" +#include "code\modules\events\rogue_drones.dm" +#include "code\modules\events\shipping_error.dm" +#include "code\modules\events\solar_storm.dm" +#include "code\modules\events\space_ninja.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\wallrot.dm" +#include "code\modules\examine\examine.dm" +#include "code\modules\examine\stat_icons.dm" +#include "code\modules\examine\descriptions\armor.dm" +#include "code\modules\examine\descriptions\atmospherics.dm" +#include "code\modules\examine\descriptions\containers.dm" +#include "code\modules\examine\descriptions\devices.dm" +#include "code\modules\examine\descriptions\engineering.dm" +#include "code\modules\examine\descriptions\machines.dm" +#include "code\modules\examine\descriptions\medical.dm" +#include "code\modules\examine\descriptions\mobs.dm" +#include "code\modules\examine\descriptions\paperwork.dm" +#include "code\modules\examine\descriptions\stacks.dm" +#include "code\modules\examine\descriptions\structures.dm" +#include "code\modules\examine\descriptions\telecomms.dm" +#include "code\modules\examine\descriptions\turfs.dm" +#include "code\modules\examine\descriptions\weapons.dm" +#include "code\modules\ext_scripts\irc.dm" +#include "code\modules\ext_scripts\python.dm" +#include "code\modules\fishing\fishing.dm" +#include "code\modules\fishing\fishing_net.dm" +#include "code\modules\fishing\fishing_rod.dm" +#include "code\modules\flufftext\Dreaming.dm" +#include "code\modules\flufftext\Hallucination.dm" +#include "code\modules\flufftext\look_up.dm" +#include "code\modules\food\food.dm" +#include "code\modules\food\recipe.dm" +#include "code\modules\food\recipe_dump.dm" +#include "code\modules\food\recipes_fryer.dm" +#include "code\modules\food\recipes_grill.dm" +#include "code\modules\food\recipes_microwave.dm" +#include "code\modules\food\recipes_oven.dm" +#include "code\modules\food\drinkingglass\drinkingglass.dm" +#include "code\modules\food\drinkingglass\extras.dm" +#include "code\modules\food\drinkingglass\glass_boxes.dm" +#include "code\modules\food\drinkingglass\glass_types.dm" +#include "code\modules\food\drinkingglass\metaglass.dm" +#include "code\modules\food\drinkingglass\mugs.dm" +#include "code\modules\food\drinkingglass\shaker.dm" +#include "code\modules\food\food\cans.dm" +#include "code\modules\food\food\condiment.dm" +#include "code\modules\food\food\drinks.dm" +#include "code\modules\food\food\lunch.dm" +#include "code\modules\food\food\sandwich.dm" +#include "code\modules\food\food\snacks.dm" +#include "code\modules\food\food\thecake.dm" +#include "code\modules\food\food\drinks\bottle.dm" +#include "code\modules\food\food\drinks\cup.dm" +#include "code\modules\food\food\drinks\drinkingglass.dm" +#include "code\modules\food\food\drinks\jar.dm" +#include "code\modules\food\food\drinks\bottle\robot.dm" +#include "code\modules\food\food\snacks\meat.dm" +#include "code\modules\food\glass\bottle.dm" +#include "code\modules\food\glass\bottle\robot.dm" +#include "code\modules\food\kitchen\gibber.dm" +#include "code\modules\food\kitchen\icecream.dm" +#include "code\modules\food\kitchen\microwave.dm" +#include "code\modules\food\kitchen\cooking_machines\_appliance.dm" +#include "code\modules\food\kitchen\cooking_machines\_cooker.dm" +#include "code\modules\food\kitchen\cooking_machines\_cooker_output.dm" +#include "code\modules\food\kitchen\cooking_machines\_mixer.dm" +#include "code\modules\food\kitchen\cooking_machines\candy.dm" +#include "code\modules\food\kitchen\cooking_machines\cereal.dm" +#include "code\modules\food\kitchen\cooking_machines\container.dm" +#include "code\modules\food\kitchen\cooking_machines\fryer.dm" +#include "code\modules\food\kitchen\cooking_machines\grill.dm" +#include "code\modules\food\kitchen\cooking_machines\oven.dm" +#include "code\modules\food\kitchen\smartfridge\drying_rack.dm" +#include "code\modules\food\kitchen\smartfridge\engineering.dm" +#include "code\modules\food\kitchen\smartfridge\hydroponics.dm" +#include "code\modules\food\kitchen\smartfridge\medical.dm" +#include "code\modules\food\kitchen\smartfridge\smartfridge.dm" +#include "code\modules\gamemaster\defines.dm" +#include "code\modules\gamemaster\event2\event.dm" +#include "code\modules\gamemaster\event2\meta.dm" +#include "code\modules\gamemaster\event2\events\ghost_pod_spawner.dm" +#include "code\modules\gamemaster\event2\events\mob_spawning.dm" +#include "code\modules\gamemaster\event2\events\cargo\shipping_error.dm" +#include "code\modules\gamemaster\event2\events\command\manifest_malfunction.dm" +#include "code\modules\gamemaster\event2\events\command\money_hacker.dm" +#include "code\modules\gamemaster\event2\events\command\raise_funds.dm" +#include "code\modules\gamemaster\event2\events\engineering\airlock_failure.dm" +#include "code\modules\gamemaster\event2\events\engineering\blob.dm" +#include "code\modules\gamemaster\event2\events\engineering\brand_intelligence.dm" +#include "code\modules\gamemaster\event2\events\engineering\camera_damage.dm" +#include "code\modules\gamemaster\event2\events\engineering\canister_leak.dm" +#include "code\modules\gamemaster\event2\events\engineering\dust.dm" +#include "code\modules\gamemaster\event2\events\engineering\gas_leak.dm" +#include "code\modules\gamemaster\event2\events\engineering\grid_check.dm" +#include "code\modules\gamemaster\event2\events\engineering\space_meteor_defense.dm" +#include "code\modules\gamemaster\event2\events\engineering\spacevine.dm" +#include "code\modules\gamemaster\event2\events\engineering\wallrot.dm" +#include "code\modules\gamemaster\event2\events\engineering\window_break.dm" +#include "code\modules\gamemaster\event2\events\everyone\comms_blackout.dm" +#include "code\modules\gamemaster\event2\events\everyone\electrical_fault.dm" +#include "code\modules\gamemaster\event2\events\everyone\gravity.dm" +#include "code\modules\gamemaster\event2\events\everyone\infestation.dm" +#include "code\modules\gamemaster\event2\events\everyone\pda_spam.dm" +#include "code\modules\gamemaster\event2\events\everyone\radiation_storm.dm" +#include "code\modules\gamemaster\event2\events\everyone\random_antag.dm" +#include "code\modules\gamemaster\event2\events\everyone\solar_storm.dm" +#include "code\modules\gamemaster\event2\events\everyone\sudden_weather_shift.dm" +#include "code\modules\gamemaster\event2\events\legacy\legacy.dm" +#include "code\modules\gamemaster\event2\events\medical\appendicitis.dm" +#include "code\modules\gamemaster\event2\events\medical\virus.dm" +#include "code\modules\gamemaster\event2\events\security\carp_migration.dm" +#include "code\modules\gamemaster\event2\events\security\drill_announcement.dm" +#include "code\modules\gamemaster\event2\events\security\prison_break.dm" +#include "code\modules\gamemaster\event2\events\security\rogue_drones.dm" +#include "code\modules\gamemaster\event2\events\security\security_advisement.dm" +#include "code\modules\gamemaster\event2\events\security\spider_infestation.dm" +#include "code\modules\gamemaster\event2\events\security\stowaway.dm" +#include "code\modules\gamemaster\event2\events\security\surprise_carp.dm" +#include "code\modules\gamemaster\event2\events\security\swarm_boarder.dm" +#include "code\modules\gamemaster\event2\events\synthetic\ion_storm.dm" +#include "code\modules\games\cah.dm" +#include "code\modules\games\cah_black_cards.dm" +#include "code\modules\games\cah_white_cards.dm" +#include "code\modules\games\cardemon.dm" +#include "code\modules\games\cards.dm" +#include "code\modules\games\dice.dm" +#include "code\modules\games\spaceball_cards.dm" +#include "code\modules\games\tarot.dm" +#include "code\modules\genetics\side_effects.dm" +#include "code\modules\ghosttrap\trap.dm" +#include "code\modules\holodeck\HolodeckControl.dm" +#include "code\modules\holodeck\HolodeckObjects.dm" +#include "code\modules\holodeck\HolodeckPrograms.dm" +#include "code\modules\holomap\generate_holomap.dm" +#include "code\modules\holomap\holomap_area.dm" +#include "code\modules\holomap\holomap_datum.dm" +#include "code\modules\holomap\mapper.dm" +#include "code\modules\holomap\station_holomap.dm" +#include "code\modules\hydroponics\_hydro_setup.dm" +#include "code\modules\hydroponics\grown.dm" +#include "code\modules\hydroponics\grown_inedible.dm" +#include "code\modules\hydroponics\grown_predefined.dm" +#include "code\modules\hydroponics\grown_sif.dm" +#include "code\modules\hydroponics\seed.dm" +#include "code\modules\hydroponics\seed_controller.dm" +#include "code\modules\hydroponics\seed_gene_mut.dm" +#include "code\modules\hydroponics\seed_machines.dm" +#include "code\modules\hydroponics\seed_mobs.dm" +#include "code\modules\hydroponics\seed_packets.dm" +#include "code\modules\hydroponics\seed_storage.dm" +#include "code\modules\hydroponics\beekeeping\beehive.dm" +#include "code\modules\hydroponics\seedtypes\amauri.dm" +#include "code\modules\hydroponics\seedtypes\ambrosia.dm" +#include "code\modules\hydroponics\seedtypes\apples.dm" +#include "code\modules\hydroponics\seedtypes\banana.dm" +#include "code\modules\hydroponics\seedtypes\berries.dm" +#include "code\modules\hydroponics\seedtypes\cabbage.dm" +#include "code\modules\hydroponics\seedtypes\carrots.dm" +#include "code\modules\hydroponics\seedtypes\celery.dm" +#include "code\modules\hydroponics\seedtypes\cherries.dm" +#include "code\modules\hydroponics\seedtypes\chili.dm" +#include "code\modules\hydroponics\seedtypes\citrus.dm" +#include "code\modules\hydroponics\seedtypes\cocoa.dm" +#include "code\modules\hydroponics\seedtypes\corn.dm" +#include "code\modules\hydroponics\seedtypes\diona.dm" +#include "code\modules\hydroponics\seedtypes\durian.dm" +#include "code\modules\hydroponics\seedtypes\dyn.dm" +#include "code\modules\hydroponics\seedtypes\eggplant.dm" +#include "code\modules\hydroponics\seedtypes\eki.dm" +#include "code\modules\hydroponics\seedtypes\flowers.dm" +#include "code\modules\hydroponics\seedtypes\gelthi.dm" +#include "code\modules\hydroponics\seedtypes\grapes.dm" +#include "code\modules\hydroponics\seedtypes\grass.dm" +#include "code\modules\hydroponics\seedtypes\guali.dm" +#include "code\modules\hydroponics\seedtypes\guami.dm" +#include "code\modules\hydroponics\seedtypes\jurlmah.dm" +#include "code\modules\hydroponics\seedtypes\kirani.dm" +#include "code\modules\hydroponics\seedtypes\kudzu.dm" +#include "code\modules\hydroponics\seedtypes\lettuce.dm" +#include "code\modules\hydroponics\seedtypes\malanitear.dm" +#include "code\modules\hydroponics\seedtypes\mushrooms.dm" +#include "code\modules\hydroponics\seedtypes\nettles.dm" +#include "code\modules\hydroponics\seedtypes\nutmeg.dm" +#include "code\modules\hydroponics\seedtypes\onion.dm" +#include "code\modules\hydroponics\seedtypes\peanuts.dm" +#include "code\modules\hydroponics\seedtypes\pineapple.dm" +#include "code\modules\hydroponics\seedtypes\potato.dm" +#include "code\modules\hydroponics\seedtypes\pumpkin.dm" +#include "code\modules\hydroponics\seedtypes\qalozyn.dm" +#include "code\modules\hydroponics\seedtypes\qazal.dm" +#include "code\modules\hydroponics\seedtypes\qlort.dm" +#include "code\modules\hydroponics\seedtypes\rhubarb.dm" +#include "code\modules\hydroponics\seedtypes\rice.dm" +#include "code\modules\hydroponics\seedtypes\selemhand.dm" +#include "code\modules\hydroponics\seedtypes\soybean.dm" +#include "code\modules\hydroponics\seedtypes\sugarcane.dm" +#include "code\modules\hydroponics\seedtypes\surik.dm" +#include "code\modules\hydroponics\seedtypes\telriis.dm" +#include "code\modules\hydroponics\seedtypes\thaadra.dm" +#include "code\modules\hydroponics\seedtypes\tobacco.dm" +#include "code\modules\hydroponics\seedtypes\tomatoes.dm" +#include "code\modules\hydroponics\seedtypes\vale.dm" +#include "code\modules\hydroponics\seedtypes\vanilla.dm" +#include "code\modules\hydroponics\seedtypes\wabback.dm" +#include "code\modules\hydroponics\seedtypes\watermelon.dm" +#include "code\modules\hydroponics\seedtypes\weeds.dm" +#include "code\modules\hydroponics\seedtypes\wheat.dm" +#include "code\modules\hydroponics\seedtypes\whitebeets.dm" +#include "code\modules\hydroponics\seedtypes\wurmwoad.dm" +#include "code\modules\hydroponics\seedtypes\xeno.dm" +#include "code\modules\hydroponics\spreading\spreading.dm" +#include "code\modules\hydroponics\spreading\spreading_growth.dm" +#include "code\modules\hydroponics\spreading\spreading_response.dm" +#include "code\modules\hydroponics\trays\tray.dm" +#include "code\modules\hydroponics\trays\tray_process.dm" +#include "code\modules\hydroponics\trays\tray_reagents.dm" +#include "code\modules\hydroponics\trays\tray_soil.dm" +#include "code\modules\hydroponics\trays\tray_tools.dm" +#include "code\modules\hydroponics\trays\tray_update_icons.dm" +#include "code\modules\identification\identification.dm" +#include "code\modules\identification\item_procs.dm" +#include "code\modules\integrated_electronics\_defines.dm" +#include "code\modules\integrated_electronics\core\assemblies.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\tools.dm" +#include "code\modules\integrated_electronics\core\assemblies\clothing.dm" +#include "code\modules\integrated_electronics\core\assemblies\device.dm" +#include "code\modules\integrated_electronics\core\assemblies\generic.dm" +#include "code\modules\integrated_electronics\core\assemblies\implant.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\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\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\arithmetic.dm" +#include "code\modules\integrated_electronics\subtypes\built_in.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\time.dm" +#include "code\modules\integrated_electronics\subtypes\trig.dm" +#include "code\modules\integrated_electronics\~defines\~defines.dm" +#include "code\modules\keybindings\bindings_atom.dm" +#include "code\modules\keybindings\bindings_movekeys.dm" +#include "code\modules\keybindings\setup.dm" +#include "code\modules\library\lib_items.dm" +#include "code\modules\library\lib_machines.dm" +#include "code\modules\library\lib_readme.dm" +#include "code\modules\library\hardcode_library\_library.dm" +#include "code\modules\library\hardcode_library\fiction\APsychonaut.dm" +#include "code\modules\library\hardcode_library\fiction\battlefieldcommander.dm" +#include "code\modules\library\hardcode_library\fiction\PortedBooks.dm" +#include "code\modules\library\hardcode_library\fiction\schnayy.dm" +#include "code\modules\library\hardcode_library\non-fiction\PortedBooks.dm" +#include "code\modules\library\hardcode_library\reference\PortedBooks.dm" +#include "code\modules\library\hardcode_library\reference\Schnayy.dm" +#include "code\modules\library\hardcode_library\religious\PortedBooks.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_overlay.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\looking_glass\lg_area.dm" +#include "code\modules\looking_glass\lg_console.dm" +#include "code\modules\looking_glass\lg_imageholder.dm" +#include "code\modules\looking_glass\lg_turfs.dm" +#include "code\modules\lore_codex\codex.dm" +#include "code\modules\lore_codex\codex_tree.dm" +#include "code\modules\lore_codex\pages.dm" +#include "code\modules\lore_codex\legal_code_data\corporate_regulations.dm" +#include "code\modules\lore_codex\legal_code_data\main.dm" +#include "code\modules\lore_codex\legal_code_data\sif_law.dm" +#include "code\modules\lore_codex\legal_code_data\sop.dm" +#include "code\modules\lore_codex\lore_data\important_locations.dm" +#include "code\modules\lore_codex\lore_data\main.dm" +#include "code\modules\lore_codex\lore_data\orgs.dm" +#include "code\modules\lore_codex\lore_data\political_parties.dm" +#include "code\modules\lore_codex\lore_data\species.dm" +#include "code\modules\lore_codex\news_data\main.dm" +#include "code\modules\lore_codex\robutt_data\bybrand.dm" +#include "code\modules\lore_codex\robutt_data\main_robutts.dm" +#include "code\modules\lore_codex\robutt_data\more.dm" +#include "code\modules\maps\tg\dmm_suite.dm" +#include "code\modules\maps\tg\map_template.dm" +#include "code\modules\maps\tg\reader.dm" +#include "code\modules\materials\fifty_spawner.dm" +#include "code\modules\materials\fifty_spawner_mats.dm" +#include "code\modules\materials\material_synth.dm" +#include "code\modules\materials\materials\_materials.dm" +#include "code\modules\materials\materials\alien_alloy.dm" +#include "code\modules\materials\materials\cult.dm" +#include "code\modules\materials\materials\gems.dm" +#include "code\modules\materials\materials\glass.dm" +#include "code\modules\materials\materials\holographic.dm" +#include "code\modules\materials\materials\plastic.dm" +#include "code\modules\materials\materials\snow.dm" +#include "code\modules\materials\materials\stone.dm" +#include "code\modules\materials\materials\supermatter.dm" +#include "code\modules\materials\materials\metals\hull.dm" +#include "code\modules\materials\materials\metals\metals.dm" +#include "code\modules\materials\materials\metals\plasteel.dm" +#include "code\modules\materials\materials\metals\steel.dm" +#include "code\modules\materials\materials\organic\animal_products.dm" +#include "code\modules\materials\materials\organic\cloth.dm" +#include "code\modules\materials\materials\organic\grass.dm" +#include "code\modules\materials\materials\organic\leather.dm" +#include "code\modules\materials\materials\organic\resin.dm" +#include "code\modules\materials\materials\organic\wood.dm" +#include "code\modules\materials\sheets\_sheets.dm" +#include "code\modules\materials\sheets\gems.dm" +#include "code\modules\materials\sheets\glass.dm" +#include "code\modules\materials\sheets\plastic.dm" +#include "code\modules\materials\sheets\snow.dm" +#include "code\modules\materials\sheets\stone.dm" +#include "code\modules\materials\sheets\supermatter.dm" +#include "code\modules\materials\sheets\metals\hull.dm" +#include "code\modules\materials\sheets\metals\metal.dm" +#include "code\modules\materials\sheets\metals\rods.dm" +#include "code\modules\materials\sheets\organic\animal_products.dm" +#include "code\modules\materials\sheets\organic\resin.dm" +#include "code\modules\materials\sheets\organic\textiles.dm" +#include "code\modules\materials\sheets\organic\wood.dm" +#include "code\modules\materials\sheets\organic\tanning\hide.dm" +#include "code\modules\materials\sheets\organic\tanning\hide_hairless.dm" +#include "code\modules\materials\sheets\organic\tanning\leather_wet.dm" +#include "code\modules\materials\sheets\organic\tanning\tanning_rack.dm" +#include "code\modules\metric\activity.dm" +#include "code\modules\metric\count.dm" +#include "code\modules\metric\department.dm" +#include "code\modules\metric\metric.dm" +#include "code\modules\mining\abandonedcrates.dm" +#include "code\modules\mining\alloys.dm" +#include "code\modules\mining\fulton.dm" +#include "code\modules\mining\mine_items.dm" +#include "code\modules\mining\mine_outcrops.dm" +#include "code\modules\mining\mine_turfs.dm" +#include "code\modules\mining\mineral_effect.dm" +#include "code\modules\mining\ore.dm" +#include "code\modules\mining\ore_box.dm" +#include "code\modules\mining\ore_datum.dm" +#include "code\modules\mining\drilling\drill.dm" +#include "code\modules\mining\drilling\scanner.dm" +#include "code\modules\mining\machinery\machine_input_output_plates.dm" +#include "code\modules\mining\machinery\machine_processing.dm" +#include "code\modules\mining\machinery\machine_stacking.dm" +#include "code\modules\mining\machinery\machine_unloading.dm" +#include "code\modules\mining\ore_redemption_machine\construction.dm" +#include "code\modules\mining\ore_redemption_machine\equipment_vendor.dm" +#include "code\modules\mining\ore_redemption_machine\mine_point_items.dm" +#include "code\modules\mining\ore_redemption_machine\survey_vendor.dm" +#include "code\modules\mob\animations.dm" +#include "code\modules\mob\death.dm" +#include "code\modules\mob\emote.dm" +#include "code\modules\mob\gender.dm" +#include "code\modules\mob\hear_say.dm" +#include "code\modules\mob\holder.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_grab.dm" +#include "code\modules\mob\mob_grab_specials.dm" +#include "code\modules\mob\mob_helpers.dm" +#include "code\modules\mob\mob_movement.dm" +#include "code\modules\mob\mob_planes.dm" +#include "code\modules\mob\mob_transformation_simple.dm" +#include "code\modules\mob\say.dm" +#include "code\modules\mob\skillset.dm" +#include "code\modules\mob\transform_procs.dm" +#include "code\modules\mob\update_icons.dm" +#include "code\modules\mob\_modifiers\aura.dm" +#include "code\modules\mob\_modifiers\changeling.dm" +#include "code\modules\mob\_modifiers\cloning.dm" +#include "code\modules\mob\_modifiers\feysight.dm" +#include "code\modules\mob\_modifiers\fire.dm" +#include "code\modules\mob\_modifiers\medical.dm" +#include "code\modules\mob\_modifiers\modifiers.dm" +#include "code\modules\mob\_modifiers\modifiers_misc.dm" +#include "code\modules\mob\_modifiers\traits.dm" +#include "code\modules\mob\_modifiers\traits_phobias.dm" +#include "code\modules\mob\_modifiers\unholy.dm" +#include "code\modules\mob\dead\corpse.dm" +#include "code\modules\mob\dead\death.dm" +#include "code\modules\mob\dead\observer\login.dm" +#include "code\modules\mob\dead\observer\logout.dm" +#include "code\modules\mob\dead\observer\observer.dm" +#include "code\modules\mob\dead\observer\say.dm" +#include "code\modules\mob\freelook\chunk.dm" +#include "code\modules\mob\freelook\eye.dm" +#include "code\modules\mob\freelook\life.dm" +#include "code\modules\mob\freelook\update_triggers.dm" +#include "code\modules\mob\freelook\visualnet.dm" +#include "code\modules\mob\freelook\ai\cameranet.dm" +#include "code\modules\mob\freelook\ai\chunk.dm" +#include "code\modules\mob\freelook\ai\eye.dm" +#include "code\modules\mob\freelook\ai\update_triggers.dm" +#include "code\modules\mob\freelook\mask\chunk.dm" +#include "code\modules\mob\freelook\mask\cultnet.dm" +#include "code\modules\mob\freelook\mask\eye.dm" +#include "code\modules\mob\freelook\mask\update_triggers.dm" +#include "code\modules\mob\language\generic.dm" +#include "code\modules\mob\language\language.dm" +#include "code\modules\mob\language\monkey.dm" +#include "code\modules\mob\language\outsider.dm" +#include "code\modules\mob\language\station.dm" +#include "code\modules\mob\language\synthetic.dm" +#include "code\modules\mob\living\autohiss.dm" +#include "code\modules\mob\living\butchering.dm" +#include "code\modules\mob\living\damage_procs.dm" +#include "code\modules\mob\living\death.dm" +#include "code\modules\mob\living\default_language.dm" +#include "code\modules\mob\living\inventory.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\living_powers.dm" +#include "code\modules\mob\living\login.dm" +#include "code\modules\mob\living\logout.dm" +#include "code\modules\mob\living\organs.dm" +#include "code\modules\mob\living\riding.dm" +#include "code\modules\mob\living\say.dm" +#include "code\modules\mob\living\status_indicators.dm" +#include "code\modules\mob\living\bot\bot.dm" +#include "code\modules\mob\living\bot\cleanbot.dm" +#include "code\modules\mob\living\bot\ed209bot.dm" +#include "code\modules\mob\living\bot\edCLNbot.dm" +#include "code\modules\mob\living\bot\farmbot.dm" +#include "code\modules\mob\living\bot\floorbot.dm" +#include "code\modules\mob\living\bot\medbot.dm" +#include "code\modules\mob\living\bot\mulebot.dm" +#include "code\modules\mob\living\bot\secbot.dm" +#include "code\modules\mob\living\bot\SLed209bot.dm" +#include "code\modules\mob\living\carbon\breathe.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_powers.dm" +#include "code\modules\mob\living\carbon\give.dm" +#include "code\modules\mob\living\carbon\resist.dm" +#include "code\modules\mob\living\carbon\shock.dm" +#include "code\modules\mob\living\carbon\taste.dm" +#include "code\modules\mob\living\carbon\viruses.dm" +#include "code\modules\mob\living\carbon\brain\brain.dm" +#include "code\modules\mob\living\carbon\brain\death.dm" +#include "code\modules\mob\living\carbon\brain\emote.dm" +#include "code\modules\mob\living\carbon\brain\life.dm" +#include "code\modules\mob\living\carbon\brain\login.dm" +#include "code\modules\mob\living\carbon\brain\MMI.dm" +#include "code\modules\mob\living\carbon\brain\say.dm" +#include "code\modules\mob\living\carbon\human\appearance.dm" +#include "code\modules\mob\living\carbon\human\death.dm" +#include "code\modules\mob\living\carbon\human\emote.dm" +#include "code\modules\mob\living\carbon\human\examine.dm" +#include "code\modules\mob\living\carbon\human\gradient.dm" +#include "code\modules\mob\living\carbon\human\human.dm" +#include "code\modules\mob\living\carbon\human\human_attackhand.dm" +#include "code\modules\mob\living\carbon\human\human_damage.dm" +#include "code\modules\mob\living\carbon\human\human_defense.dm" +#include "code\modules\mob\living\carbon\human\human_defines.dm" +#include "code\modules\mob\living\carbon\human\human_helpers.dm" +#include "code\modules\mob\living\carbon\human\human_modular_limbs.dm" +#include "code\modules\mob\living\carbon\human\human_movement.dm" +#include "code\modules\mob\living\carbon\human\human_organs.dm" +#include "code\modules\mob\living\carbon\human\human_powers.dm" +#include "code\modules\mob\living\carbon\human\human_resist.dm" +#include "code\modules\mob\living\carbon\human\human_species.dm" +#include "code\modules\mob\living\carbon\human\inventory.dm" +#include "code\modules\mob\living\carbon\human\life.dm" +#include "code\modules\mob\living\carbon\human\login.dm" +#include "code\modules\mob\living\carbon\human\logout.dm" +#include "code\modules\mob\living\carbon\human\MedicalSideEffects.dm" +#include "code\modules\mob\living\carbon\human\npcs.dm" +#include "code\modules\mob\living\carbon\human\say.dm" +#include "code\modules\mob\living\carbon\human\stripping.dm" +#include "code\modules\mob\living\carbon\human\unarmed_attack.dm" +#include "code\modules\mob\living\carbon\human\update_icons.dm" +#include "code\modules\mob\living\carbon\human\ai_controlled\ai_controlled.dm" +#include "code\modules\mob\living\carbon\human\descriptors\_descriptors.dm" +#include "code\modules\mob\living\carbon\human\descriptors\descriptors_generic.dm" +#include "code\modules\mob\living\carbon\human\descriptors\descriptors_skrell.dm" +#include "code\modules\mob\living\carbon\human\descriptors\descriptors_vox.dm" +#include "code\modules\mob\living\carbon\human\species\species.dm" +#include "code\modules\mob\living\carbon\human\species\species_adjust.dm" +#include "code\modules\mob\living\carbon\human\species\species_attack.dm" +#include "code\modules\mob\living\carbon\human\species\species_getters.dm" +#include "code\modules\mob\living\carbon\human\species\species_helpers.dm" +#include "code\modules\mob\living\carbon\human\species\species_hud.dm" +#include "code\modules\mob\living\carbon\human\species\species_shapeshift.dm" +#include "code\modules\mob\living\carbon\human\species\outsider\event.dm" +#include "code\modules\mob\living\carbon\human\species\outsider\replicant.dm" +#include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm" +#include "code\modules\mob\living\carbon\human\species\outsider\skeleton.dm" +#include "code\modules\mob\living\carbon\human\species\outsider\vox.dm" +#include "code\modules\mob\living\carbon\human\species\station\golem.dm" +#include "code\modules\mob\living\carbon\human\species\station\human_subspecies.dm" +#include "code\modules\mob\living\carbon\human\species\station\monkey.dm" +#include "code\modules\mob\living\carbon\human\species\station\prometheans.dm" +#include "code\modules\mob\living\carbon\human\species\station\station.dm" +#include "code\modules\mob\living\carbon\human\species\station\teshari.dm" +#include "code\modules\mob\living\carbon\human\species\virtual_reality\avatar.dm" +#include "code\modules\mob\living\carbon\human\species\virtual_reality\opaque_form.dm" +#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_powers.dm" +#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_species.dm" +#include "code\modules\mob\living\carbon\human\species\xenomorphs\xenomorphs.dm" +#include "code\modules\mob\living\carbon\nymph\diona.dm" +#include "code\modules\mob\living\carbon\nymph\diona_attacks.dm" +#include "code\modules\mob\living\carbon\nymph\diona_powers.dm" +#include "code\modules\mob\living\carbon\nymph\life.dm" +#include "code\modules\mob\living\carbon\nymph\progression.dm" +#include "code\modules\mob\living\carbon\nymph\say_understands.dm" +#include "code\modules\mob\living\carbon\nymph\update_icons.dm" +#include "code\modules\mob\living\silicon\death.dm" +#include "code\modules\mob\living\silicon\emote.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\subystems.dm" +#include "code\modules\mob\living\silicon\ai\ai.dm" +#include "code\modules\mob\living\silicon\ai\ai_movement.dm" +#include "code\modules\mob\living\silicon\ai\ai_remote_control.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\icons.dm" +#include "code\modules\mob\living\silicon\ai\latejoin.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\malf.dm" +#include "code\modules\mob\living\silicon\ai\multicam.dm" +#include "code\modules\mob\living\silicon\decoy\death.dm" +#include "code\modules\mob\living\silicon\decoy\decoy.dm" +#include "code\modules\mob\living\silicon\decoy\life.dm" +#include "code\modules\mob\living\silicon\pai\admin.dm" +#include "code\modules\mob\living\silicon\pai\death.dm" +#include "code\modules\mob\living\silicon\pai\examine.dm" +#include "code\modules\mob\living\silicon\pai\life.dm" +#include "code\modules\mob\living\silicon\pai\pai.dm" +#include "code\modules\mob\living\silicon\pai\personality.dm" +#include "code\modules\mob\living\silicon\pai\recruit.dm" +#include "code\modules\mob\living\silicon\pai\say.dm" +#include "code\modules\mob\living\silicon\pai\software.dm" +#include "code\modules\mob\living\silicon\pai\software_modules.dm" +#include "code\modules\mob\living\silicon\robot\analyzer.dm" +#include "code\modules\mob\living\silicon\robot\component.dm" +#include "code\modules\mob\living\silicon\robot\custom_sprites.dm" +#include "code\modules\mob\living\silicon\robot\death.dm" +#include "code\modules\mob\living\silicon\robot\emote.dm" +#include "code\modules\mob\living\silicon\robot\examine.dm" +#include "code\modules\mob\living\silicon\robot\inventory.dm" +#include "code\modules\mob\living\silicon\robot\laws.dm" +#include "code\modules\mob\living\silicon\robot\life.dm" +#include "code\modules\mob\living\silicon\robot\login.dm" +#include "code\modules\mob\living\silicon\robot\photos.dm" +#include "code\modules\mob\living\silicon\robot\robot.dm" +#include "code\modules\mob\living\silicon\robot\robot_damage.dm" +#include "code\modules\mob\living\silicon\robot\robot_items.dm" +#include "code\modules\mob\living\silicon\robot\robot_movement.dm" +#include "code\modules\mob\living\silicon\robot\robot_remote_control.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" +#include "code\modules\mob\living\silicon\robot\drone\drone_say.dm" +#include "code\modules\mob\living\silicon\robot\drone\swarm.dm" +#include "code\modules\mob\living\silicon\robot\drone\swarm_abilities.dm" +#include "code\modules\mob\living\silicon\robot\drone\swarm_items.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules\event.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules\station.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules\swarm.dm" +#include "code\modules\mob\living\silicon\robot\robot_modules\syndicate.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\gravekeeper.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\lost_drone.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\syndicate.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\_thinktank.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_icon.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_interactions.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_module.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_storage.dm" +#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_subtypes.dm" +#include "code\modules\mob\living\simple_mob\appearance.dm" +#include "code\modules\mob\living\simple_mob\butchering.dm" +#include "code\modules\mob\living\simple_mob\combat.dm" +#include "code\modules\mob\living\simple_mob\defense.dm" +#include "code\modules\mob\living\simple_mob\hands.dm" +#include "code\modules\mob\living\simple_mob\harvesting.dm" +#include "code\modules\mob\living\simple_mob\healing.dm" +#include "code\modules\mob\living\simple_mob\life.dm" +#include "code\modules\mob\living\simple_mob\on_click.dm" +#include "code\modules\mob\living\simple_mob\simple_hud.dm" +#include "code\modules\mob\living\simple_mob\simple_mob.dm" +#include "code\modules\mob\living\simple_mob\taming.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\_animal_harness.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\animal.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_captive.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_powers.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\chicken.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\cow.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\goat.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\_giant_spider.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\carrier.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\electric.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\frost.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\hunter.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\lurker.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\nurse.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\pepper.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\phorogenic.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\thermic.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\tunneler.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\webslinger.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\crab.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\fish.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\lizard.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\misc.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\mouse.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\passive.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\penguin.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\possum.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\bird.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\cat.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\dog.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\karik.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\parrot.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\diyaab.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\duck.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\frostfly.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\glitterfly.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\hare.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\hooligan_crab.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\kururak.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\leech.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\moth.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\pillbug.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\racoon.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\savik.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\shantak.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\sif.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\siffet.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_ai.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_emotes.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_harness.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_hatchling.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_interaction.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_misc.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_trained.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\alien.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\bats.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\bear.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\space.dm" +#include "code\modules\mob\living\simple_mob\subtypes\animal\space\worm.dm" +#include "code\modules\mob\living\simple_mob\subtypes\blob\blob.dm" +#include "code\modules\mob\living\simple_mob\subtypes\blob\spore.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\clown.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\russian.dm" +#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm" +#include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\golem.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mechanical.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\viscerator.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\drones\combat_drone.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\drones\mining_drone.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\hivebot.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\ranged_damage.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\support.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\tank.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\adv_dark_gygax.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\combat_mecha.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\durand.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\gygax.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\hoverpod.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\marauder.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\mecha.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\odysseus.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\phazon.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\ripley.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\ward\monitor_ward.dm" +#include "code\modules\mob\living\simple_mob\subtypes\mechanical\ward\ward.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\creature.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\faithless.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\_construct.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\artificer.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\harvester.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\juggernaut.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\shade.dm" +#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\wraith.dm" +#include "code\modules\mob\living\simple_mob\subtypes\plant\tomato.dm" +#include "code\modules\mob\living\simple_mob\subtypes\plant\tree.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\slime.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\feral\feral.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\combat.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\consumption.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\defense.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\discipline.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\subtypes.dm" +#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\xenobio.dm" +#include "code\modules\mob\living\voice\voice.dm" +#include "code\modules\mob\new_player\login.dm" +#include "code\modules\mob\new_player\logout.dm" +#include "code\modules\mob\new_player\new_player.dm" +#include "code\modules\mob\new_player\news.dm" +#include "code\modules\mob\new_player\poll.dm" +#include "code\modules\mob\new_player\preferences_setup.dm" +#include "code\modules\mob\new_player\skill.dm" +#include "code\modules\mob\new_player\sprite_accessories.dm" +#include "code\modules\mob\new_player\sprite_accessories_ear.dm" +#include "code\modules\mob\new_player\sprite_accessories_extra.dm" +#include "code\modules\mob\new_player\sprite_accessories_tail.dm" +#include "code\modules\mob\new_player\sprite_accessories_wing.dm" +#include "code\modules\modular_computers\laptop_vendor.dm" +#include "code\modules\modular_computers\computers\modular_computer\core.dm" +#include "code\modules\modular_computers\computers\modular_computer\damage.dm" +#include "code\modules\modular_computers\computers\modular_computer\hardware.dm" +#include "code\modules\modular_computers\computers\modular_computer\interaction.dm" +#include "code\modules\modular_computers\computers\modular_computer\power.dm" +#include "code\modules\modular_computers\computers\modular_computer\ui.dm" +#include "code\modules\modular_computers\computers\modular_computer\variables.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_console.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_laptop.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_tablet.dm" +#include "code\modules\modular_computers\computers\subtypes\dev_telescreen.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_console.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_laptop.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_tablet.dm" +#include "code\modules\modular_computers\computers\subtypes\preset_telescreen.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\news_article.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\antagonist\access_decrypter.dm" +#include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm" +#include "code\modules\modular_computers\file_system\programs\antagonist\hacked_camera.dm" +#include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm" +#include "code\modules\modular_computers\file_system\programs\command\card.dm" +#include "code\modules\modular_computers\file_system\programs\command\comm.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\alarm_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\atmos_control.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\power_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\rcon_console.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\shutoff_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\engineering\supermatter_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\generic\camera.dm" +#include "code\modules\modular_computers\file_system\programs\generic\configurator.dm" +#include "code\modules\modular_computers\file_system\programs\generic\email_client.dm" +#include "code\modules\modular_computers\file_system\programs\generic\file_browser.dm" +#include "code\modules\modular_computers\file_system\programs\generic\game.dm" +#include "code\modules\modular_computers\file_system\programs\generic\news_browser.dm" +#include "code\modules\modular_computers\file_system\programs\generic\ntdownloader.dm" +#include "code\modules\modular_computers\file_system\programs\generic\ntnrc_client.dm" +#include "code\modules\modular_computers\file_system\programs\generic\nttransfer.dm" +#include "code\modules\modular_computers\file_system\programs\generic\uav.dm" +#include "code\modules\modular_computers\file_system\programs\generic\wordprocessor.dm" +#include "code\modules\modular_computers\file_system\programs\medical\suit_sensors.dm" +#include "code\modules\modular_computers\file_system\programs\research\email_administration.dm" +#include "code\modules\modular_computers\file_system\programs\research\ntmonitor.dm" +#include "code\modules\modular_computers\file_system\programs\security\alarm_monitor.dm" +#include "code\modules\modular_computers\file_system\programs\security\digitalwarrant.dm" +#include "code\modules\modular_computers\file_system\programs\ships\navigation.dm" +#include "code\modules\modular_computers\hardware\_hardware.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\hard_drive.dm" +#include "code\modules\modular_computers\hardware\nano_printer.dm" +#include "code\modules\modular_computers\hardware\network_card.dm" +#include "code\modules\modular_computers\hardware\portable_hard_drive.dm" +#include "code\modules\modular_computers\hardware\processor_unit.dm" +#include "code\modules\modular_computers\hardware\tesla_link.dm" +#include "code\modules\modular_computers\NTNet\NTNet.dm" +#include "code\modules\modular_computers\NTNet\NTNet_relay.dm" +#include "code\modules\modular_computers\NTNet\emails\email_account.dm" +#include "code\modules\modular_computers\NTNet\emails\email_message.dm" +#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" +#include "code\modules\multi-tile\multi-tile.dm" +#include "code\modules\multiz\_stubs.dm" +#include "code\modules\multiz\basic.dm" +#include "code\modules\multiz\hoist.dm" +#include "code\modules\multiz\ladders.dm" +#include "code\modules\multiz\movement.dm" +#include "code\modules\multiz\pipes.dm" +#include "code\modules\multiz\stairs.dm" +#include "code\modules\multiz\turf.dm" +#include "code\modules\multiz\zshadow.dm" +#include "code\modules\nano\nanoexternal.dm" +#include "code\modules\nano\nanomanager.dm" +#include "code\modules\nano\nanomapgen.dm" +#include "code\modules\nano\nanoui.dm" +#include "code\modules\nano\interaction\admin.dm" +#include "code\modules\nano\interaction\base.dm" +#include "code\modules\nano\interaction\conscious.dm" +#include "code\modules\nano\interaction\contained.dm" +#include "code\modules\nano\interaction\default.dm" +#include "code\modules\nano\interaction\interactive.dm" +#include "code\modules\nano\interaction\inventory.dm" +#include "code\modules\nano\interaction\inventory_deep.dm" +#include "code\modules\nano\interaction\outside.dm" +#include "code\modules\nano\interaction\physical.dm" +#include "code\modules\nano\interaction\remote.dm" +#include "code\modules\nano\interaction\self.dm" +#include "code\modules\nano\interaction\zlevel.dm" +#include "code\modules\nano\modules\nano_module.dm" +#include "code\modules\news\news_init.dm" +#include "code\modules\news\newspaper.dm" +#include "code\modules\news\newspaper_layout.dm" +#include "code\modules\organs\blood.dm" +#include "code\modules\organs\misc.dm" +#include "code\modules\organs\organ.dm" +#include "code\modules\organs\organ_external.dm" +#include "code\modules\organs\organ_icon.dm" +#include "code\modules\organs\organ_stump.dm" +#include "code\modules\organs\pain.dm" +#include "code\modules\organs\robolimbs.dm" +#include "code\modules\organs\robolimbs_custom.dm" +#include "code\modules\organs\wound.dm" +#include "code\modules\organs\internal\_organ_internal.dm" +#include "code\modules\organs\internal\appendix.dm" +#include "code\modules\organs\internal\augment.dm" +#include "code\modules\organs\internal\brain.dm" +#include "code\modules\organs\internal\eyes.dm" +#include "code\modules\organs\internal\heart.dm" +#include "code\modules\organs\internal\intestine.dm" +#include "code\modules\organs\internal\kidneys.dm" +#include "code\modules\organs\internal\liver.dm" +#include "code\modules\organs\internal\lungs.dm" +#include "code\modules\organs\internal\spleen.dm" +#include "code\modules\organs\internal\stomach.dm" +#include "code\modules\organs\internal\voicebox.dm" +#include "code\modules\organs\internal\augment\armmounted.dm" +#include "code\modules\organs\internal\augment\bio.dm" +#include "code\modules\organs\internal\robotic\diagnostic.dm" +#include "code\modules\organs\internal\robotic\heatsink.dm" +#include "code\modules\organs\internal\robotic\robotic.dm" +#include "code\modules\organs\subtypes\diona.dm" +#include "code\modules\organs\subtypes\indestructible.dm" +#include "code\modules\organs\subtypes\machine.dm" +#include "code\modules\organs\subtypes\neaera.dm" +#include "code\modules\organs\subtypes\replicant.dm" +#include "code\modules\organs\subtypes\skrell.dm" +#include "code\modules\organs\subtypes\slime.dm" +#include "code\modules\organs\subtypes\standard.dm" +#include "code\modules\organs\subtypes\tajaran.dm" +#include "code\modules\organs\subtypes\unathi.dm" +#include "code\modules\organs\subtypes\unbreakable.dm" +#include "code\modules\organs\subtypes\unseverable.dm" +#include "code\modules\organs\subtypes\vox.dm" +#include "code\modules\organs\subtypes\xenos.dm" +#include "code\modules\overmap\helpers.dm" +#include "code\modules\overmap\overmap_object.dm" +#include "code\modules\overmap\overmap_planet.dm" +#include "code\modules\overmap\overmap_shuttle.dm" +#include "code\modules\overmap\sectors.dm" +#include "code\modules\overmap\spacetravel.dm" +#include "code\modules\overmap\turfs.dm" +#include "code\modules\overmap\events\event_handler.dm" +#include "code\modules\overmap\events\generation.dm" +#include "code\modules\overmap\events\overmap_event.dm" +#include "code\modules\overmap\ships\landable.dm" +#include "code\modules\overmap\ships\ship.dm" +#include "code\modules\overmap\ships\computers\computer_shims.dm" +#include "code\modules\overmap\ships\computers\engine_control.dm" +#include "code\modules\overmap\ships\computers\helm.dm" +#include "code\modules\overmap\ships\computers\sensors.dm" +#include "code\modules\overmap\ships\computers\ship.dm" +#include "code\modules\overmap\ships\computers\shuttle.dm" +#include "code\modules\overmap\ships\engines\engine.dm" +#include "code\modules\overmap\ships\engines\gas_thruster.dm" +#include "code\modules\overmap\ships\engines\ion_thruster.dm" +#include "code\modules\paperwork\adminpaper.dm" +#include "code\modules\paperwork\carbonpaper.dm" +#include "code\modules\paperwork\clipboard.dm" +#include "code\modules\paperwork\faxmachine.dm" +#include "code\modules\paperwork\filingcabinet.dm" +#include "code\modules\paperwork\folders.dm" +#include "code\modules\paperwork\handlabeler.dm" +#include "code\modules\paperwork\paper.dm" +#include "code\modules\paperwork\paper_bundle.dm" +#include "code\modules\paperwork\paper_sticky.dm" +#include "code\modules\paperwork\paperbin.dm" +#include "code\modules\paperwork\paperplane.dm" +#include "code\modules\paperwork\papershredder.dm" +#include "code\modules\paperwork\pen.dm" +#include "code\modules\paperwork\photocopier.dm" +#include "code\modules\paperwork\photography.dm" +#include "code\modules\paperwork\silicon_photography.dm" +#include "code\modules\paperwork\stamps.dm" +#include "code\modules\pda\ai.dm" +#include "code\modules\pda\app.dm" +#include "code\modules\pda\cart.dm" +#include "code\modules\pda\cart_apps.dm" +#include "code\modules\pda\core_apps.dm" +#include "code\modules\pda\messenger.dm" +#include "code\modules\pda\messenger_plugins.dm" +#include "code\modules\pda\pda.dm" +#include "code\modules\pda\pda_subtypes.dm" +#include "code\modules\pda\pda_tgui.dm" +#include "code\modules\pda\radio.dm" +#include "code\modules\pda\utilities.dm" +#include "code\modules\persistence\filth.dm" +#include "code\modules\persistence\graffiti.dm" +#include "code\modules\persistence\noticeboard.dm" +#include "code\modules\persistence\datum\persistence_datum.dm" +#include "code\modules\persistence\effects\filth.dm" +#include "code\modules\persistence\effects\graffiti.dm" +#include "code\modules\persistence\effects\paper.dm" +#include "code\modules\persistence\effects\paper_sticky.dm" +#include "code\modules\persistence\effects\trash.dm" +#include "code\modules\persistence\storage\smartfridge.dm" +#include "code\modules\persistence\storage\storage.dm" +#include "code\modules\planet\planet.dm" +#include "code\modules\planet\sif.dm" +#include "code\modules\planet\time.dm" +#include "code\modules\planet\weather.dm" +#include "code\modules\power\apc.dm" +#include "code\modules\power\batteryrack.dm" +#include "code\modules\power\breaker_box.dm" +#include "code\modules\power\cable.dm" +#include "code\modules\power\cable_ender.dm" +#include "code\modules\power\cable_heavyduty.dm" +#include "code\modules\power\cell.dm" +#include "code\modules\power\debug_items.dm" +#include "code\modules\power\generator.dm" +#include "code\modules\power\gravitygenerator.dm" +#include "code\modules\power\grid_checker.dm" +#include "code\modules\power\lighting.dm" +#include "code\modules\power\port_gen.dm" +#include "code\modules\power\power.dm" +#include "code\modules\power\powernet.dm" +#include "code\modules\power\smes.dm" +#include "code\modules\power\smes_construction.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\cells\device_cells.dm" +#include "code\modules\power\cells\esoteric_cells.dm" +#include "code\modules\power\cells\power_cells.dm" +#include "code\modules\power\fusion\_setup.dm" +#include "code\modules\power\fusion\fusion_circuits.dm" +#include "code\modules\power\fusion\fusion_particle_catcher.dm" +#include "code\modules\power\fusion\fusion_reactions.dm" +#include "code\modules\power\fusion\magpower.dm" +#include "code\modules\power\fusion\core\_core.dm" +#include "code\modules\power\fusion\core\core_control.dm" +#include "code\modules\power\fusion\core\core_field.dm" +#include "code\modules\power\fusion\fuel_assembly\fuel_assembly.dm" +#include "code\modules\power\fusion\fuel_assembly\fuel_compressor.dm" +#include "code\modules\power\fusion\fuel_assembly\fuel_control.dm" +#include "code\modules\power\fusion\fuel_assembly\fuel_injector.dm" +#include "code\modules\power\fusion\gyrotron\gyrotron.dm" +#include "code\modules\power\fusion\gyrotron\gyrotron_control.dm" +#include "code\modules\power\sensors\powernet_sensor.dm" +#include "code\modules\power\sensors\sensor_monitoring.dm" +#include "code\modules\power\singularity\act.dm" +#include "code\modules\power\singularity\collector.dm" +#include "code\modules\power\singularity\containment_field.dm" +#include "code\modules\power\singularity\emitter.dm" +#include "code\modules\power\singularity\field_generator.dm" +#include "code\modules\power\singularity\generator.dm" +#include "code\modules\power\singularity\investigate.dm" +#include "code\modules\power\singularity\singularity.dm" +#include "code\modules\power\singularity\particle_accelerator\particle.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_chamber.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_control.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_power.dm" +#include "code\modules\power\singularity\particle_accelerator\particle_smasher.dm" +#include "code\modules\power\supermatter\setup_supermatter.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\power\tesla\telsa_construction.dm" +#include "code\modules\power\tesla\tesla_act.dm" +#include "code\modules\projectiles\ammunition.dm" +#include "code\modules\projectiles\broken.dm" +#include "code\modules\projectiles\dnalocking.dm" +#include "code\modules\projectiles\gun.dm" +#include "code\modules\projectiles\projectile.dm" +#include "code\modules\projectiles\ammunition\magazines.dm" +#include "code\modules\projectiles\ammunition\magnetic.dm" +#include "code\modules\projectiles\ammunition\rounds.dm" +#include "code\modules\projectiles\ammunition\smartmag.dm" +#include "code\modules\projectiles\brokenguns\energy.dm" +#include "code\modules\projectiles\brokenguns\launcher.dm" +#include "code\modules\projectiles\brokenguns\magnetic.dm" +#include "code\modules\projectiles\brokenguns\projectile.dm" +#include "code\modules\projectiles\guns\energy.dm" +#include "code\modules\projectiles\guns\launcher.dm" +#include "code\modules\projectiles\guns\magic.dm" +#include "code\modules\projectiles\guns\modular_guns.dm" +#include "code\modules\projectiles\guns\projectile.dm" +#include "code\modules\projectiles\guns\vox.dm" +#include "code\modules\projectiles\guns\energy\hooklauncher.dm" +#include "code\modules\projectiles\guns\energy\laser.dm" +#include "code\modules\projectiles\guns\energy\nuclear.dm" +#include "code\modules\projectiles\guns\energy\phase.dm" +#include "code\modules\projectiles\guns\energy\pulse.dm" +#include "code\modules\projectiles\guns\energy\special.dm" +#include "code\modules\projectiles\guns\energy\stun.dm" +#include "code\modules\projectiles\guns\energy\temperature.dm" +#include "code\modules\projectiles\guns\launcher\bows.dm" +#include "code\modules\projectiles\guns\launcher\crossbow.dm" +#include "code\modules\projectiles\guns\launcher\grenade_launcher.dm" +#include "code\modules\projectiles\guns\launcher\pneumatic.dm" +#include "code\modules\projectiles\guns\launcher\rocket.dm" +#include "code\modules\projectiles\guns\launcher\syringe_gun.dm" +#include "code\modules\projectiles\guns\magic\fireball.dm" +#include "code\modules\projectiles\guns\magnetic\bore.dm" +#include "code\modules\projectiles\guns\magnetic\gasthrower.dm" +#include "code\modules\projectiles\guns\magnetic\magnetic.dm" +#include "code\modules\projectiles\guns\magnetic\magnetic_construction.dm" +#include "code\modules\projectiles\guns\magnetic\magnetic_railgun.dm" +#include "code\modules\projectiles\guns\projectile\automatic.dm" +#include "code\modules\projectiles\guns\projectile\boltaction.dm" +#include "code\modules\projectiles\guns\projectile\caseless.dm" +#include "code\modules\projectiles\guns\projectile\contender.dm" +#include "code\modules\projectiles\guns\projectile\dartgun.dm" +#include "code\modules\projectiles\guns\projectile\pistol.dm" +#include "code\modules\projectiles\guns\projectile\revolver.dm" +#include "code\modules\projectiles\guns\projectile\semiauto.dm" +#include "code\modules\projectiles\guns\projectile\shotgun.dm" +#include "code\modules\projectiles\guns\projectile\sniper.dm" +#include "code\modules\projectiles\guns\projectile\toy.dm" +#include "code\modules\projectiles\guns\projectile\sniper\collapsible_sniper.dm" +#include "code\modules\projectiles\projectile\arc.dm" +#include "code\modules\projectiles\projectile\beams.dm" +#include "code\modules\projectiles\projectile\blob.dm" +#include "code\modules\projectiles\projectile\bullets.dm" +#include "code\modules\projectiles\projectile\change.dm" +#include "code\modules\projectiles\projectile\energy.dm" +#include "code\modules\projectiles\projectile\explosive.dm" +#include "code\modules\projectiles\projectile\force.dm" +#include "code\modules\projectiles\projectile\hook.dm" +#include "code\modules\projectiles\projectile\magic.dm" +#include "code\modules\projectiles\projectile\magnetic.dm" +#include "code\modules\projectiles\projectile\pellets.dm" +#include "code\modules\projectiles\projectile\scatter.dm" +#include "code\modules\projectiles\projectile\special.dm" +#include "code\modules\projectiles\projectile\trace.dm" +#include "code\modules\projectiles\targeting\targeting_client.dm" +#include "code\modules\projectiles\targeting\targeting_gun.dm" +#include "code\modules\projectiles\targeting\targeting_mob.dm" +#include "code\modules\projectiles\targeting\targeting_overlay.dm" +#include "code\modules\projectiles\targeting\targeting_triggers.dm" +#include "code\modules\radiation\radiation.dm" +#include "code\modules\random_map\_random_map_setup.dm" +#include "code\modules\random_map\random_map.dm" +#include "code\modules\random_map\random_map_verbs.dm" +#include "code\modules\random_map\automata\automata.dm" +#include "code\modules\random_map\automata\caves.dm" +#include "code\modules\random_map\building\building.dm" +#include "code\modules\random_map\drop\drop_types.dm" +#include "code\modules\random_map\drop\droppod.dm" +#include "code\modules\random_map\drop\droppod_doors.dm" +#include "code\modules\random_map\drop\supply.dm" +#include "code\modules\random_map\mazes\maze.dm" +#include "code\modules\random_map\mazes\maze_cell.dm" +#include "code\modules\random_map\meteor\meteor.dm" +#include "code\modules\random_map\noise\desert.dm" +#include "code\modules\random_map\noise\noise.dm" +#include "code\modules\random_map\noise\ore.dm" +#include "code\modules\random_map\noise\tundra.dm" +#include "code\modules\reagents\Chemistry-Colours.dm" +#include "code\modules\reagents\Chemistry-Logging.dm" +#include "code\modules\reagents\Chemistry-Metabolism.dm" +#include "code\modules\reagents\holder\distilling.dm" +#include "code\modules\reagents\holder\holder.dm" +#include "code\modules\reagents\hoses\connector.dm" +#include "code\modules\reagents\hoses\hose.dm" +#include "code\modules\reagents\hoses\hose_connector.dm" +#include "code\modules\reagents\machinery\chem_master.dm" +#include "code\modules\reagents\machinery\chemalyzer.dm" +#include "code\modules\reagents\machinery\distillery.dm" +#include "code\modules\reagents\machinery\grinder.dm" +#include "code\modules\reagents\machinery\pump.dm" +#include "code\modules\reagents\machinery\dispenser\_defines.dm" +#include "code\modules\reagents\machinery\dispenser\cartridge.dm" +#include "code\modules\reagents\machinery\dispenser\cartridge_presets.dm" +#include "code\modules\reagents\machinery\dispenser\cartridge_spawn.dm" +#include "code\modules\reagents\machinery\dispenser\dispenser2.dm" +#include "code\modules\reagents\machinery\dispenser\dispenser2_energy.dm" +#include "code\modules\reagents\machinery\dispenser\dispenser_presets.dm" +#include "code\modules\reagents\machinery\dispenser\reagent_tank.dm" +#include "code\modules\reagents\machinery\dispenser\supply.dm" +#include "code\modules\reagents\reactions\_reactions.dm" +#include "code\modules\reagents\reactions\distilling\distilling.dm" +#include "code\modules\reagents\reactions\fusion\fusion.dm" +#include "code\modules\reagents\reactions\instant\drinks.dm" +#include "code\modules\reagents\reactions\instant\food.dm" +#include "code\modules\reagents\reactions\instant\instant.dm" +#include "code\modules\reagents\reactions\instant\vox.dm" +#include "code\modules\reagents\reagent_containers\_reagent_containers.dm" +#include "code\modules\reagents\reagent_containers\blood_pack.dm" +#include "code\modules\reagents\reagent_containers\borghypo.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\patch.dm" +#include "code\modules\reagents\reagent_containers\pill.dm" +#include "code\modules\reagents\reagent_containers\spray.dm" +#include "code\modules\reagents\reagent_containers\syringes.dm" +#include "code\modules\reagents\reagent_containers\unidentified_hypospray.dm" +#include "code\modules\reagents\reagents\_helpers.dm" +#include "code\modules\reagents\reagents\_reagents.dm" +#include "code\modules\reagents\reagents\core.dm" +#include "code\modules\reagents\reagents\dispenser.dm" +#include "code\modules\reagents\reagents\drugs.dm" +#include "code\modules\reagents\reagents\food_drinks.dm" +#include "code\modules\reagents\reagents\medicine.dm" +#include "code\modules\reagents\reagents\modifiers.dm" +#include "code\modules\reagents\reagents\other.dm" +#include "code\modules\reagents\reagents\toxins.dm" +#include "code\modules\reagents\reagents\vox.dm" +#include "code\modules\recycling\conveyor2.dm" +#include "code\modules\recycling\disposal-construction.dm" +#include "code\modules\recycling\disposal.dm" +#include "code\modules\recycling\sortingmachinery.dm" +#include "code\modules\research\circuitprinter.dm" +#include "code\modules\research\designs.dm" +#include "code\modules\research\destructive_analyzer.dm" +#include "code\modules\research\mechfab_designs.dm" +#include "code\modules\research\message_server.dm" +#include "code\modules\research\prosfab_designs.dm" +#include "code\modules\research\protolathe.dm" +#include "code\modules\research\rdconsole.dm" +#include "code\modules\research\rdmachines.dm" +#include "code\modules\research\research.dm" +#include "code\modules\research\server.dm" +#include "code\modules\research\designs\ai_holders.dm" +#include "code\modules\research\designs\bag_of_holding.dm" +#include "code\modules\research\designs\beakers.dm" +#include "code\modules\research\designs\bio_devices.dm" +#include "code\modules\research\designs\circuit_assembly.dm" +#include "code\modules\research\designs\engineering.dm" +#include "code\modules\research\designs\HUDs.dm" +#include "code\modules\research\designs\implants.dm" +#include "code\modules\research\designs\locator_devices.dm" +#include "code\modules\research\designs\medical.dm" +#include "code\modules\research\designs\mining_toys.dm" +#include "code\modules\research\designs\misc.dm" +#include "code\modules\research\designs\modular_computer.dm" +#include "code\modules\research\designs\pdas.dm" +#include "code\modules\research\designs\power_cells.dm" +#include "code\modules\research\designs\precursor.dm" +#include "code\modules\research\designs\stock_parts.dm" +#include "code\modules\research\designs\subspace_parts.dm" +#include "code\modules\research\designs\tech_disks.dm" +#include "code\modules\research\designs\weapons.dm" +#include "code\modules\research\designs\xenoarch_toys.dm" +#include "code\modules\research\designs\xenobio_toys.dm" +#include "code\modules\research\designs\circuits\ai_modules.dm" +#include "code\modules\research\designs\circuits\circuits.dm" +#include "code\modules\research\designs\circuits\disks.dm" +#include "code\modules\scripting\Errors.dm" +#include "code\modules\scripting\IDE.dm" +#include "code\modules\scripting\Options.dm" +#include "code\modules\scripting\stack.dm" +#include "code\modules\scripting\AST\AST Nodes.dm" +#include "code\modules\scripting\AST\Blocks.dm" +#include "code\modules\scripting\AST\Statements.dm" +#include "code\modules\scripting\AST\Operators\Binary Operators.dm" +#include "code\modules\scripting\AST\Operators\Unary Operators.dm" +#include "code\modules\scripting\Implementations\_Logic.dm" +#include "code\modules\scripting\Implementations\Telecomms.dm" +#include "code\modules\scripting\Interpreter\Evaluation.dm" +#include "code\modules\scripting\Interpreter\Interaction.dm" +#include "code\modules\scripting\Interpreter\Interpreter.dm" +#include "code\modules\scripting\Interpreter\Scope.dm" +#include "code\modules\scripting\Parser\Expressions.dm" +#include "code\modules\scripting\Parser\Keywords.dm" +#include "code\modules\scripting\Parser\Parser.dm" +#include "code\modules\scripting\Scanner\Scanner.dm" +#include "code\modules\scripting\Scanner\Tokens.dm" +#include "code\modules\security levels\keycard authentication.dm" +#include "code\modules\security levels\security levels.dm" +#include "code\modules\shieldgen\directional_shield.dm" +#include "code\modules\shieldgen\emergency_shield.dm" +#include "code\modules\shieldgen\energy_field.dm" +#include "code\modules\shieldgen\handheld_defuser.dm" +#include "code\modules\shieldgen\sheldwallgen.dm" +#include "code\modules\shieldgen\shield_capacitor.dm" +#include "code\modules\shieldgen\shield_diffuser.dm" +#include "code\modules\shieldgen\shield_gen.dm" +#include "code\modules\shieldgen\shield_gen_external.dm" +#include "code\modules\shuttles\antagonist.dm" +#include "code\modules\shuttles\departmental.dm" +#include "code\modules\shuttles\escape_pods.dm" +#include "code\modules\shuttles\landmarks.dm" +#include "code\modules\shuttles\shuttle.dm" +#include "code\modules\shuttles\shuttle_arrivals.dm" +#include "code\modules\shuttles\shuttle_autodock.dm" +#include "code\modules\shuttles\shuttle_console.dm" +#include "code\modules\shuttles\shuttle_console_multi.dm" +#include "code\modules\shuttles\shuttle_emergency.dm" +#include "code\modules\shuttles\shuttle_ferry.dm" +#include "code\modules\shuttles\shuttle_specops.dm" +#include "code\modules\shuttles\shuttle_supply.dm" +#include "code\modules\shuttles\shuttles_multi.dm" +#include "code\modules\shuttles\shuttles_web.dm" +#include "code\modules\shuttles\web_datums.dm" +#include "code\modules\spells\artifacts.dm" +#include "code\modules\spells\construct_spells.dm" +#include "code\modules\spells\no_clothes.dm" +#include "code\modules\spells\spell_code.dm" +#include "code\modules\spells\spell_projectile.dm" +#include "code\modules\spells\spellbook.dm" +#include "code\modules\spells\spells.dm" +#include "code\modules\spells\aoe_turf\aoe_turf.dm" +#include "code\modules\spells\aoe_turf\blink.dm" +#include "code\modules\spells\aoe_turf\charge.dm" +#include "code\modules\spells\aoe_turf\disable_tech.dm" +#include "code\modules\spells\aoe_turf\knock.dm" +#include "code\modules\spells\aoe_turf\smoke.dm" +#include "code\modules\spells\aoe_turf\summons.dm" +#include "code\modules\spells\aoe_turf\conjure\conjure.dm" +#include "code\modules\spells\aoe_turf\conjure\construct.dm" +#include "code\modules\spells\aoe_turf\conjure\forcewall.dm" +#include "code\modules\spells\general\area_teleport.dm" +#include "code\modules\spells\general\rune_write.dm" +#include "code\modules\spells\targeted\ethereal_jaunt.dm" +#include "code\modules\spells\targeted\genetic.dm" +#include "code\modules\spells\targeted\harvest.dm" +#include "code\modules\spells\targeted\mind_transfer.dm" +#include "code\modules\spells\targeted\shift.dm" +#include "code\modules\spells\targeted\subjugate.dm" +#include "code\modules\spells\targeted\targeted.dm" +#include "code\modules\spells\targeted\equip\equip.dm" +#include "code\modules\spells\targeted\equip\horsemask.dm" +#include "code\modules\spells\targeted\projectile\dumbfire.dm" +#include "code\modules\spells\targeted\projectile\fireball.dm" +#include "code\modules\spells\targeted\projectile\magic_missile.dm" +#include "code\modules\spells\targeted\projectile\projectile.dm" +#include "code\modules\surgery\_defines.dm" +#include "code\modules\surgery\bones.dm" +#include "code\modules\surgery\encased.dm" +#include "code\modules\surgery\external_repair.dm" +#include "code\modules\surgery\face.dm" +#include "code\modules\surgery\generic.dm" +#include "code\modules\surgery\implant.dm" +#include "code\modules\surgery\limb_reattach.dm" +#include "code\modules\surgery\neck.dm" +#include "code\modules\surgery\organs_internal.dm" +#include "code\modules\surgery\other.dm" +#include "code\modules\surgery\robotics.dm" +#include "code\modules\surgery\surgery.dm" +#include "code\modules\surgery\~defines.dm" +#include "code\modules\tables\bench.dm" +#include "code\modules\tables\flipping.dm" +#include "code\modules\tables\interactions.dm" +#include "code\modules\tables\presets.dm" +#include "code\modules\tables\rack.dm" +#include "code\modules\tables\tables.dm" +#include "code\modules\tension\tension.dm" +#include "code\modules\tgui\external.dm" +#include "code\modules\tgui\modal.dm" +#include "code\modules\tgui\states.dm" +#include "code\modules\tgui\tgui.dm" +#include "code\modules\tgui\tgui_window.dm" +#include "code\modules\tgui\modules\_base.dm" +#include "code\modules\tgui\modules\alarm.dm" +#include "code\modules\tgui\modules\appearance_changer.dm" +#include "code\modules\tgui\modules\atmos_control.dm" +#include "code\modules\tgui\modules\camera.dm" +#include "code\modules\tgui\modules\communications.dm" +#include "code\modules\tgui\modules\crew_monitor.dm" +#include "code\modules\tgui\modules\gyrotron_control.dm" +#include "code\modules\tgui\modules\law_manager.dm" +#include "code\modules\tgui\modules\overmap.dm" +#include "code\modules\tgui\modules\power_monitor.dm" +#include "code\modules\tgui\modules\rcon.dm" +#include "code\modules\tgui\modules\rustcore_monitor.dm" +#include "code\modules\tgui\modules\rustfuel_control.dm" +#include "code\modules\tgui\modules\shutoff_monitor.dm" +#include "code\modules\tgui\modules\supermatter_monitor.dm" +#include "code\modules\tgui\modules\ntos-only\cardmod.dm" +#include "code\modules\tgui\modules\ntos-only\configurator.dm" +#include "code\modules\tgui\modules\ntos-only\email.dm" +#include "code\modules\tgui\modules\ntos-only\uav.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\not_incapacitated.dm" +#include "code\modules\tgui\states\notcontained.dm" +#include "code\modules\tgui\states\ntos.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\turbolift\_turbolift.dm" +#include "code\modules\turbolift\turbolift.dm" +#include "code\modules\turbolift\turbolift_areas.dm" +#include "code\modules\turbolift\turbolift_console.dm" +#include "code\modules\turbolift\turbolift_door.dm" +#include "code\modules\turbolift\turbolift_floor.dm" +#include "code\modules\turbolift\turbolift_map.dm" +#include "code\modules\turbolift\turbolift_turfs.dm" +#include "code\modules\vchat\vchat_client.dm" +#include "code\modules\vchat\vchat_db.dm" +#include "code\modules\vehicles\bike.dm" +#include "code\modules\vehicles\boat.dm" +#include "code\modules\vehicles\cargo_train.dm" +#include "code\modules\vehicles\construction.dm" +#include "code\modules\vehicles\quad.dm" +#include "code\modules\vehicles\snowmobile.dm" +#include "code\modules\vehicles\train.dm" +#include "code\modules\vehicles\vehicle.dm" +#include "code\modules\ventcrawl\ventcrawl.dm" +#include "code\modules\ventcrawl\ventcrawl_atmospherics.dm" +#include "code\modules\ventcrawl\ventcrawl_multiz.dm" +#include "code\modules\ventcrawl\ventcrawl_verb.dm" +#include "code\modules\virus2\admin.dm" +#include "code\modules\virus2\analyser.dm" +#include "code\modules\virus2\antibodies.dm" +#include "code\modules\virus2\centrifuge.dm" +#include "code\modules\virus2\curer.dm" +#include "code\modules\virus2\disease2.dm" +#include "code\modules\virus2\diseasesplicer.dm" +#include "code\modules\virus2\dishincubator.dm" +#include "code\modules\virus2\effect.dm" +#include "code\modules\virus2\helpers.dm" +#include "code\modules\virus2\isolator.dm" +#include "code\modules\virus2\items_devices.dm" +#include "code\modules\webhooks\_webhook.dm" +#include "code\modules\webhooks\webhook_ahelp2discord.dm" +#include "code\modules\webhooks\webhook_custom_event.dm" +#include "code\modules\webhooks\webhook_fax2discord.dm" +#include "code\modules\webhooks\webhook_roundend.dm" +#include "code\modules\webhooks\webhook_roundprep.dm" +#include "code\modules\webhooks\webhook_roundstart.dm" +#include "code\modules\whitelist\admin_ops.dm" +#include "code\modules\whitelist\legacy.dm" +#include "code\modules\whitelist\phony_paths.dm" +#include "code\modules\whitelist\whitelist.dm" +#include "code\modules\xenoarcheaology\anomaly_container.dm" +#include "code\modules\xenoarcheaology\boulder.dm" +#include "code\modules\xenoarcheaology\effect.dm" +#include "code\modules\xenoarcheaology\effect_master.dm" +#include "code\modules\xenoarcheaology\manuals.dm" +#include "code\modules\xenoarcheaology\misc.dm" +#include "code\modules\xenoarcheaology\sampling.dm" +#include "code\modules\xenoarcheaology\artifacts\artifact.dm" +#include "code\modules\xenoarcheaology\artifacts\artifact_find.dm" +#include "code\modules\xenoarcheaology\artifacts\autocloner.dm" +#include "code\modules\xenoarcheaology\artifacts\crystal.dm" +#include "code\modules\xenoarcheaology\artifacts\gigadrill.dm" +#include "code\modules\xenoarcheaology\artifacts\replicator.dm" +#include "code\modules\xenoarcheaology\artifacts\predefined\_predefined.dm" +#include "code\modules\xenoarcheaology\artifacts\predefined\hungry_statue.dm" +#include "code\modules\xenoarcheaology\effects\animate_anomaly.dm" +#include "code\modules\xenoarcheaology\effects\badfeeling.dm" +#include "code\modules\xenoarcheaology\effects\berserk.dm" +#include "code\modules\xenoarcheaology\effects\blast_shielding.dm" +#include "code\modules\xenoarcheaology\effects\cannibal.dm" +#include "code\modules\xenoarcheaology\effects\cellcharge.dm" +#include "code\modules\xenoarcheaology\effects\celldrain.dm" +#include "code\modules\xenoarcheaology\effects\cold.dm" +#include "code\modules\xenoarcheaology\effects\electric_field.dm" +#include "code\modules\xenoarcheaology\effects\emp.dm" +#include "code\modules\xenoarcheaology\effects\extinguisher.dm" +#include "code\modules\xenoarcheaology\effects\faraday.dm" +#include "code\modules\xenoarcheaology\effects\feysight.dm" +#include "code\modules\xenoarcheaology\effects\forcefield.dm" +#include "code\modules\xenoarcheaology\effects\fortify.dm" +#include "code\modules\xenoarcheaology\effects\gaia.dm" +#include "code\modules\xenoarcheaology\effects\gasco2.dm" +#include "code\modules\xenoarcheaology\effects\gasnitro.dm" +#include "code\modules\xenoarcheaology\effects\gasoxy.dm" +#include "code\modules\xenoarcheaology\effects\gasphoron.dm" +#include "code\modules\xenoarcheaology\effects\gassleeping.dm" +#include "code\modules\xenoarcheaology\effects\goodfeeling.dm" +#include "code\modules\xenoarcheaology\effects\gravitational_waves.dm" +#include "code\modules\xenoarcheaology\effects\heal.dm" +#include "code\modules\xenoarcheaology\effects\heat.dm" +#include "code\modules\xenoarcheaology\effects\hurt.dm" +#include "code\modules\xenoarcheaology\effects\indiscriminate_spines.dm" +#include "code\modules\xenoarcheaology\effects\lifedrain.dm" +#include "code\modules\xenoarcheaology\effects\lifesteal.dm" +#include "code\modules\xenoarcheaology\effects\noxious.dm" +#include "code\modules\xenoarcheaology\effects\poltergeist.dm" +#include "code\modules\xenoarcheaology\effects\radiate.dm" +#include "code\modules\xenoarcheaology\effects\resurrect.dm" +#include "code\modules\xenoarcheaology\effects\roboheal.dm" +#include "code\modules\xenoarcheaology\effects\robohurt.dm" +#include "code\modules\xenoarcheaology\effects\sleepy.dm" +#include "code\modules\xenoarcheaology\effects\sprinting.dm" +#include "code\modules\xenoarcheaology\effects\stun.dm" +#include "code\modules\xenoarcheaology\effects\sweating_reagents.dm" +#include "code\modules\xenoarcheaology\effects\teleport.dm" +#include "code\modules\xenoarcheaology\effects\tesla.dm" +#include "code\modules\xenoarcheaology\effects\vampire.dm" +#include "code\modules\xenoarcheaology\finds\eguns.dm" +#include "code\modules\xenoarcheaology\finds\find_spawning.dm" +#include "code\modules\xenoarcheaology\finds\finds.dm" +#include "code\modules\xenoarcheaology\finds\finds_defines.dm" +#include "code\modules\xenoarcheaology\finds\fossils.dm" +#include "code\modules\xenoarcheaology\finds\misc.dm" +#include "code\modules\xenoarcheaology\finds\special.dm" +#include "code\modules\xenoarcheaology\finds\talking.dm" +#include "code\modules\xenoarcheaology\tools\ano_device_battery.dm" +#include "code\modules\xenoarcheaology\tools\artifact_analyser.dm" +#include "code\modules\xenoarcheaology\tools\artifact_harvester.dm" +#include "code\modules\xenoarcheaology\tools\artifact_scanner.dm" +#include "code\modules\xenoarcheaology\tools\coolant_tank.dm" +#include "code\modules\xenoarcheaology\tools\equipment.dm" +#include "code\modules\xenoarcheaology\tools\geosample_scanner.dm" +#include "code\modules\xenoarcheaology\tools\suspension_generator.dm" +#include "code\modules\xenoarcheaology\tools\tools.dm" +#include "code\modules\xenoarcheaology\tools\tools_pickaxe.dm" +#include "code\modules\xenobio\items\extracts.dm" +#include "code\modules\xenobio\items\slime_objects.dm" +#include "code\modules\xenobio\items\slimepotions.dm" +#include "code\modules\xenobio\items\weapons.dm" +#include "code\modules\xenobio\machinery\processor.dm" +#include "code\modules\xgm\xgm_gas_data.dm" +#include "code\modules\xgm\xgm_gas_mixture.dm" +#include "code\unit_tests\decl_tests.dm" +#include "code\unit_tests\language_tests.dm" +#include "code\unit_tests\loadout_tests.dm" +#include "code\unit_tests\map_tests.dm" +#include "code\unit_tests\mob_tests.dm" +#include "code\unit_tests\music_test.dm" +#include "code\unit_tests\recipe_tests.dm" +#include "code\unit_tests\research_tests.dm" +#include "code\unit_tests\sqlite_tests.dm" +#include "code\unit_tests\subsystem_tests.dm" +#include "code\unit_tests\unit_test.dm" +#include "code\unit_tests\zas_tests.dm" +#include "code\unit_tests\integrated_circuits\arithmetic.dm" +#include "code\unit_tests\integrated_circuits\circuits.dm" +#include "code\unit_tests\integrated_circuits\converter.dm" +#include "code\unit_tests\integrated_circuits\logic.dm" +#include "code\unit_tests\integrated_circuits\trig.dm" +#include "code\ZAS\Airflow.dm" +#include "code\ZAS\Atom.dm" +#include "code\ZAS\Connection.dm" +#include "code\ZAS\ConnectionGroup.dm" +#include "code\ZAS\ConnectionManager.dm" +#include "code\ZAS\Controller.dm" +#include "code\ZAS\Debug.dm" +#include "code\ZAS\Diagnostic.dm" +#include "code\ZAS\Fire.dm" +#include "code\ZAS\Phoron.dm" +#include "code\ZAS\Turf.dm" +#include "code\ZAS\Variable Settings.dm" +#include "code\ZAS\Zone.dm" +#include "interface\interface.dm" +#include "interface\skin.dmf" +#include "maps\cynosure\cynosure.dm" +#include "maps\submaps\_helpers.dm" +#include "maps\submaps\poi_landmark.dm" +#include "maps\submaps\engine_submaps\engine_areas.dm" +#include "maps\submaps\engine_submaps\southern_cross\_engine_submaps.dm" +#include "maps\submaps\space_submaps\space.dm" +#include "maps\submaps\space_submaps\vox_derelict\vox_derelict.dm" +#include "maps\submaps\surface_submaps\mountains\mountains.dm" +#include "maps\submaps\surface_submaps\mountains\mountains_areas.dm" +#include "maps\submaps\surface_submaps\plains\plains.dm" +#include "maps\submaps\surface_submaps\plains\plains_areas.dm" +#include "maps\submaps\surface_submaps\wilderness\wilderness.dm" +#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" +#include "maps\~map_system\maps.dm" +// END_INCLUDE From 4669496f3af2fbe50f8e8ab113a9b7cd134427ce Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Fri, 7 Jul 2023 16:47:35 +1000 Subject: [PATCH 2/7] Update airlock.dm --- code/game/machinery/doors/airlock.dm | 1825 +++----------------------- 1 file changed, 169 insertions(+), 1656 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c02329eb55..e182c3845c 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1,1583 +1,4 @@ -<<<<<<< HEAD -//VOREStation Edit - Redone a lot of airlock things: -/* -- Specific department maintenance doors -- Named doors properly according to type -- Gave them default access levels with the access constants -- Improper'd all of the names in the new() -*/ - -/obj/machinery/door/airlock - name = "Airlock" - icon = 'icons/obj/doors/Doorint.dmi' - icon_state = "door_closed" - power_channel = ENVIRON - - explosion_resistance = 10 - - // Doors do their own stuff - bullet_vulnerability = 0 - - blocks_emissive = EMISSIVE_BLOCK_GENERIC // Not quite as nice as /tg/'s custom masks. We should make those sometime - - var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. - var/hackProof = 0 // if 1, this door can't be hacked by the AI - var/electrified_until = 0 //World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. - var/main_power_lost_until = 0 //World time when main power is restored. - var/backup_power_lost_until = -1 //World time when backup power is restored. - var/has_beeped = 0 //If 1, will not beep on failed closing attempt. Resets when door closes. - var/spawnPowerRestoreRunning = 0 - var/welded = null - var/locked = 0 - var/lights = 1 // bolt lights show by default - var/aiDisabledIdScanner = 0 - var/aiHacking = 0 - var/obj/machinery/door/airlock/closeOther = null - var/closeOtherId = null - var/lockdownbyai = 0 - autoclose = 1 - var/assembly_type = /obj/structure/door_assembly - var/mineral = null - var/justzap = 0 - var/safe = 1 - normalspeed = 1 - var/obj/item/weapon/airlock_electronics/electronics = null - var/hasShocked = 0 //Prevents multiple shocks from happening - var/secured_wires = 0 - var/security_level = 1 //VOREStation Addition - acts as a multiplier on the time required to hack an airlock with a hacktool - var/datum/wires/airlock/wires = null - - var/open_sound_powered = 'sound/machines/door/covert1o.ogg' - var/open_sound_unpowered = 'sound/machines/door/airlockforced.ogg' - var/close_sound_powered = 'sound/machines/door/covert1c.ogg' - var/legacy_open_powered = 'sound/machines/door/old_airlock.ogg' - var/legacy_close_powered = 'sound/machines/door/old_airlockclose.ogg' - var/department_open_powered = null - var/department_close_powered = null - var/denied_sound = 'sound/machines/deniedbeep.ogg' - var/bolt_up_sound = 'sound/machines/door/boltsup.ogg' - var/bolt_down_sound = 'sound/machines/door/boltsdown.ogg' - var/knock_sound = 'sound/machines/2beeplow.ogg' - var/knock_hammer_sound = 'sound/weapons/sonic_jackhammer.ogg' - var/knock_unpowered_sound = 'sound/machines/door/knock_glass.ogg' - -/obj/machinery/door/airlock/attack_generic(var/mob/living/user, var/damage) - if(stat & (BROKEN|NOPOWER)) - if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) - if(src.locked || src.welded) - visible_message("\The [user] begins breaking into \the [src] internals!") - user.set_AI_busy(TRUE) // If the mob doesn't have an AI attached, this won't do anything. - if(do_after(user,10 SECONDS,src)) - src.locked = 0 - src.welded = 0 - update_icon() - open(1) - if(prob(25)) - src.shock(user, 100) - user.set_AI_busy(FALSE) - else if(src.density) - visible_message("\The [user] forces \the [src] open!") - open(1) - else - visible_message("\The [user] forces \the [src] closed!") - close(1) - else - visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") - return - ..() - -/obj/machinery/door/airlock/attack_alien(var/mob/user) //Familiar, right? Doors. -Mechoid - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/X = user - if(istype(X.species, /datum/species/xenos)) - if(src.locked || src.welded) - visible_message("\The [user] begins tearing into \the [src] internals!") - src.do_animate("deny") - if(do_after(user,15 SECONDS,src)) - visible_message("\The [user] tears \the [src] open, sparks flying from its electronics!") - src.do_animate("spark") - playsound(src, 'sound/machines/door/airlock_tear_apart.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) - src.locked = 0 - src.welded = 0 - update_icon() - open(1) - src.set_broken() //These aren't emags, these be CLAWS - else if(src.density) - visible_message("\The [user] begins forcing \the [src] open!") - if(do_after(user, 5 SECONDS,src)) - playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) - visible_message("\The [user] forces \the [src] open!") - open(1) - else - visible_message("\The [user] forces \the [src] closed!") - close(1) - else - src.do_animate("deny") - visible_message("\The [user] strains fruitlessly to force \the [src] [density ? "open" : "closed"].") - return - ..() - -/obj/machinery/door/airlock/get_material() - if(mineral) - return get_material_by_name(mineral) - return get_material_by_name(MAT_STEEL) - -/obj/machinery/door/airlock/command - name = "Command Airlock" - icon = 'icons/obj/doors/Doorcom.dmi' - req_one_access = list(access_heads) - assembly_type = /obj/structure/door_assembly/door_assembly_com - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/cmd3o.ogg' - department_close_powered = 'sound/machines/door/cmd3c.ogg' - security_level = 3 //VOREStation Addition - -/obj/machinery/door/airlock/security - name = "Security Airlock" - icon = 'icons/obj/doors/Doorsec.dmi' - req_one_access = list(access_security) - assembly_type = /obj/structure/door_assembly/door_assembly_sec - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/sec1o.ogg' - department_close_powered = 'sound/machines/door/sec1c.ogg' - security_level = 2 //VOREStation Addition - -/obj/machinery/door/airlock/engineering - name = "Engineering Airlock" - icon = 'icons/obj/doors/Dooreng.dmi' - req_one_access = list(access_engine) - assembly_type = /obj/structure/door_assembly/door_assembly_eng - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/eng1o.ogg' - department_close_powered = 'sound/machines/door/eng1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/engineeringatmos - name = "Atmospherics Airlock" - icon = 'icons/obj/doors/Doorengatmos.dmi' - req_one_access = list(access_atmospherics) - assembly_type = /obj/structure/door_assembly/door_assembly_eat - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/eng1o.ogg' - department_close_powered = 'sound/machines/door/eng1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/medical - name = "Medical Airlock" - icon = 'icons/obj/doors/Doormed.dmi' - req_one_access = list(access_medical) - assembly_type = /obj/structure/door_assembly/door_assembly_med - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/med1o.ogg' - department_close_powered = 'sound/machines/door/med1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/maintenance - name = "Maintenance Access" - icon = 'icons/obj/doors/Doormaint.dmi' - //req_one_access = list(access_maint_tunnels) //VOREStation Edit - Maintenance is open access - assembly_type = /obj/structure/door_assembly/door_assembly_mai - open_sound_powered = 'sound/machines/door/door2o.ogg' - close_sound_powered = 'sound/machines/door/door2c.ogg' - -/obj/machinery/door/airlock/maintenance/cargo - icon = 'icons/obj/doors/Doormaint_cargo.dmi' - req_one_access = list(access_cargo) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/door2o.ogg' - department_close_powered = 'sound/machines/door/door2c.ogg' - -/obj/machinery/door/airlock/maintenance/command - icon = 'icons/obj/doors/Doormaint_command.dmi' - req_one_access = list(access_heads) - -/obj/machinery/door/airlock/maintenance/common - icon = 'icons/obj/doors/Doormaint_common.dmi' - open_sound_powered = 'sound/machines/door/hall3o.ogg' - close_sound_powered = 'sound/machines/door/hall3c.ogg' - -/obj/machinery/door/airlock/maintenance/engi - icon = 'icons/obj/doors/Doormaint_engi.dmi' - req_one_access = list(access_engine) - -/obj/machinery/door/airlock/maintenance/int - icon = 'icons/obj/doors/Doormaint_int.dmi' - -/obj/machinery/door/airlock/maintenance/medical - icon = 'icons/obj/doors/Doormaint_med.dmi' - req_one_access = list(access_medical) - -/obj/machinery/door/airlock/maintenance/rnd - icon = 'icons/obj/doors/Doormaint_rnd.dmi' - req_one_access = list(access_research) - -/obj/machinery/door/airlock/maintenance/sec - icon = 'icons/obj/doors/Doormaint_sec.dmi' - req_one_access = list(access_security) - -/obj/machinery/door/airlock/external - name = "External Airlock" - icon = 'icons/obj/doors/Doorext.dmi' - assembly_type = /obj/structure/door_assembly/door_assembly_ext - open_sound_powered = 'sound/machines/door/space1o.ogg' - close_sound_powered = 'sound/machines/door/space1c.ogg' - -/obj/machinery/door/airlock/external/bolted - icon_state = "door_locked" // So it looks visibly bolted in map editor - locked = 1 - -// For convenience in making docking ports: one that is pre-bolted with frequency set! -/obj/machinery/door/airlock/external/bolted/cycling - frequency = 1379 - -/obj/machinery/door/airlock/glass_external - name = "External Airlock" - icon = 'icons/obj/doors/Doorextglass.dmi' - assembly_type = /obj/structure/door_assembly/door_assembly_ext - opacity = 0 - glass = 1 - req_one_access = list(access_external_airlocks) - open_sound_powered = 'sound/machines/door/space1o.ogg' - close_sound_powered = 'sound/machines/door/space1c.ogg' - -/obj/machinery/door/airlock/glass - name = "Glass Airlock" - icon = 'icons/obj/doors/Doorglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - open_sound_powered = 'sound/machines/door/hall1o.ogg' - close_sound_powered = 'sound/machines/door/hall1c.ogg' - legacy_open_powered = 'sound/machines/door/windowdoor.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - glass = 1 - -/obj/machinery/door/airlock/centcom - name = "Centcom Airlock" - icon = 'icons/obj/doors/Doorele.dmi' - req_one_access = list(access_cent_general) - opacity = 1 - open_sound_powered = 'sound/machines/door/cmd3o.ogg' - close_sound_powered = 'sound/machines/door/cmd3c.ogg' - security_level = 100 //VOREStation Addition - -/obj/machinery/door/airlock/glass_centcom - name = "Airlock" - icon = 'icons/obj/doors/Dooreleglass.dmi' - opacity = 0 - glass = 1 - open_sound_powered = 'sound/machines/door/cmd3o.ogg' - close_sound_powered = 'sound/machines/door/cmd3c.ogg' - security_level = 100 //VOREStation Addition - -/obj/machinery/door/airlock/vault - name = "Vault" - icon = 'icons/obj/doors/vault.dmi' - explosion_resistance = 20 - opacity = 1 - secured_wires = 1 - assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity //Until somebody makes better sprites. - req_one_access = list(access_heads_vault) - open_sound_powered = 'sound/machines/door/vault1o.ogg' - close_sound_powered = 'sound/machines/door/vault1c.ogg' - security_level = 5 //VOREStation Addition - -/obj/machinery/door/airlock/vault/bolted - icon_state = "door_locked" - locked = 1 - -/obj/machinery/door/airlock/freezer - name = "Freezer Airlock" - icon = 'icons/obj/doors/Doorfreezer.dmi' - opacity = 1 - assembly_type = /obj/structure/door_assembly/door_assembly_fre - -/obj/machinery/door/airlock/hatch - name = "Airtight Hatch" - icon = 'icons/obj/doors/Doorhatchele.dmi' - explosion_resistance = 20 - opacity = 1 - assembly_type = /obj/structure/door_assembly/door_assembly_hatch - req_one_access = list(access_maint_tunnels) - open_sound_powered = 'sound/machines/door/hatchopen.ogg' - close_sound_powered = 'sound/machines/door/hatchclose.ogg' - open_sound_unpowered = 'sound/machines/door/hatchforced.ogg' - -/obj/machinery/door/airlock/maintenance_hatch - name = "Maintenance Hatch" - icon = 'icons/obj/doors/Doorhatchmaint2.dmi' - explosion_resistance = 20 - opacity = 1 - assembly_type = /obj/structure/door_assembly/door_assembly_mhatch - req_one_access = list(access_maint_tunnels) - open_sound_powered = 'sound/machines/door/hatchopen.ogg' - close_sound_powered = 'sound/machines/door/hatchclose.ogg' - open_sound_unpowered = 'sound/machines/door/hatchforced.ogg' - -/obj/machinery/door/airlock/glass_command - name = "Command Airlock" - icon = 'icons/obj/doors/Doorcomglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_com - glass = 1 - req_one_access = list(access_heads) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/cmd1o.ogg' - department_close_powered = 'sound/machines/door/cmd1c.ogg' - security_level = 3 //VOREStation Addition - -/obj/machinery/door/airlock/glass_engineering - name = "Engineering Airlock" - icon = 'icons/obj/doors/Doorengglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_eng - glass = 1 - req_one_access = list(access_engine) - department_open_powered = 'sound/machines/door/eng1o.ogg' - department_close_powered = 'sound/machines/door/eng1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/glass_engineeringatmos - name = "Atmospherics Airlock" - icon = 'icons/obj/doors/Doorengatmoglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_eat - glass = 1 - req_one_access = list(access_atmospherics) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/eng1o.ogg' - department_close_powered = 'sound/machines/door/eng1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/glass_security - name = "Security Airlock" - icon = 'icons/obj/doors/Doorsecglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_sec - glass = 1 - req_one_access = list(access_security) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/sec1o.ogg' - department_close_powered = 'sound/machines/door/sec1c.ogg' - security_level = 2 //VOREStation Addition - -/obj/machinery/door/airlock/glass_medical - name = "Medical Airlock" - icon = 'icons/obj/doors/Doormedglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_med - glass = 1 - req_one_access = list(access_medical) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/med1o.ogg' - department_close_powered = 'sound/machines/door/med1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/mining - name = "Mining Airlock" - icon = 'icons/obj/doors/Doormining.dmi' - assembly_type = /obj/structure/door_assembly/door_assembly_min - req_one_access = list(access_mining) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/cgo1o.ogg' - department_close_powered = 'sound/machines/door/cgo1c.ogg' - -/obj/machinery/door/airlock/atmos - name = "Atmospherics Airlock" - icon = 'icons/obj/doors/Dooratmo.dmi' - assembly_type = /obj/structure/door_assembly/door_assembly_atmo - req_one_access = list(access_atmospherics) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/eng1o.ogg' - department_close_powered = 'sound/machines/door/eng1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/research - name = "Research Airlock" - icon = 'icons/obj/doors/Doorresearch.dmi' - assembly_type = /obj/structure/door_assembly/door_assembly_research - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/sci1o.ogg' - department_close_powered = 'sound/machines/door/sci1c.ogg' - security_level = 2 //VOREStation Addition - -/obj/machinery/door/airlock/glass_research - name = "Research Airlock" - icon = 'icons/obj/doors/Doorresearchglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_research - glass = 1 - req_one_access = list(access_research) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/sci1o.ogg' - department_close_powered = 'sound/machines/door/sci1c.ogg' - security_level = 2 //VOREStation Addition - -/obj/machinery/door/airlock/glass_mining - name = "Mining Airlock" - icon = 'icons/obj/doors/Doorminingglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_min - glass = 1 - req_one_access = list(access_mining) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/cgo1o.ogg' - department_close_powered = 'sound/machines/door/cgo1c.ogg' - -/obj/machinery/door/airlock/glass_atmos - name = "Atmospherics Airlock" - icon = 'icons/obj/doors/Dooratmoglass.dmi' - hitsound = 'sound/effects/Glasshit.ogg' - maxhealth = 300 - explosion_resistance = 5 - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_atmo - glass = 1 - req_one_access = list(access_atmospherics) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/eng1o.ogg' - department_close_powered = 'sound/machines/door/eng1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/gold - name = "Gold Airlock" - icon = 'icons/obj/doors/Doorgold.dmi' - mineral = "gold" - -/obj/machinery/door/airlock/silver - name = "Silver Airlock" - icon = 'icons/obj/doors/Doorsilver.dmi' - mineral = "silver" - -/obj/machinery/door/airlock/diamond - name = "Diamond Airlock" - icon = 'icons/obj/doors/Doordiamond.dmi' - mineral = "diamond" - -/obj/machinery/door/airlock/uranium - name = "Uranium Airlock" - desc = "And they said I was crazy." - icon = 'icons/obj/doors/Dooruranium.dmi' - mineral = "uranium" - var/last_event = 0 - var/rad_power = 7.5 - -/obj/machinery/door/airlock/process() - // Deliberate no call to parent. - if(main_power_lost_until > 0 && world.time >= main_power_lost_until) - regainMainPower() - - if(backup_power_lost_until > 0 && world.time >= backup_power_lost_until) - regainBackupPower() - - else if(electrified_until > 0 && world.time >= electrified_until) - electrify(0) - - if (..() == PROCESS_KILL && !(main_power_lost_until > 0 || backup_power_lost_until > 0 || electrified_until > 0)) - . = PROCESS_KILL - -/obj/machinery/door/airlock/uranium/process() - if(world.time > last_event+20) - if(prob(50)) - SSradiation.radiate(src, rad_power) - last_event = world.time - ..() - -/obj/machinery/door/airlock/phoron - name = "Phoron Airlock" - desc = "No way this can end badly." - icon = 'icons/obj/doors/Doorphoron.dmi' - mineral = "phoron" - -/obj/machinery/door/airlock/phoron/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > 300) - PhoronBurn(exposed_temperature) - -/obj/machinery/door/airlock/phoron/proc/ignite(exposed_temperature) - if(exposed_temperature > 300) - PhoronBurn(exposed_temperature) - -/obj/machinery/door/airlock/phoron/proc/PhoronBurn(temperature) - for(var/turf/simulated/floor/target_tile in range(2,loc)) - target_tile.assume_gas("phoron", 35, 400+T0C) - spawn (0) target_tile.hotspot_expose(temperature, 400) - for(var/turf/simulated/wall/W in range(3,src)) - W.burn((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame - for(var/obj/machinery/door/airlock/phoron/D in range(3,src)) - D.ignite(temperature/4) - new/obj/structure/door_assembly( src.loc ) - qdel(src) - -/obj/machinery/door/airlock/sandstone - name = "Sandstone Airlock" - icon = 'icons/obj/doors/Doorsand.dmi' - mineral = "sandstone" - -/obj/machinery/door/airlock/science - name = "Research Airlock" - icon = 'icons/obj/doors/Doorsci.dmi' - assembly_type = /obj/structure/door_assembly/door_assembly_science - req_one_access = list(access_research) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/sci1o.ogg' - department_close_powered = 'sound/machines/door/sci1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/glass_science - name = "Glass Airlocks" - icon = 'icons/obj/doors/Doorsciglass.dmi' - opacity = 0 - assembly_type = /obj/structure/door_assembly/door_assembly_science - glass = 1 - req_one_access = list(access_research) - open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. - department_open_powered = 'sound/machines/door/sci1o.ogg' - department_close_powered = 'sound/machines/door/sci1c.ogg' - security_level = 1.5 //VOREStation Addition - -/obj/machinery/door/airlock/highsecurity - name = "Secure Airlock" - icon = 'icons/obj/doors/hightechsecurity.dmi' - explosion_resistance = 20 - secured_wires = 1 - assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity - req_one_access = list(access_heads_vault) - open_sound_powered = 'sound/machines/door/secure1o.ogg' - close_sound_powered = 'sound/machines/door/secure1c.ogg' - security_level = 4 //VOREStation Addition - -/obj/machinery/door/airlock/voidcraft - name = "voidcraft hatch" - desc = "It's an extra resilient airlock intended for spacefaring vessels." - icon = 'icons/obj/doors/shuttledoors.dmi' - explosion_resistance = 20 - opacity = 0 - glass = 1 - assembly_type = /obj/structure/door_assembly/door_assembly_voidcraft - open_sound_powered = 'sound/machines/door/shuttle1o.ogg' - close_sound_powered = 'sound/machines/door/shuttle1c.ogg' - -// Airlock opens from top-bottom instead of left-right. -/obj/machinery/door/airlock/voidcraft/vertical - icon = 'icons/obj/doors/shuttledoors_vertical.dmi' - assembly_type = /obj/structure/door_assembly/door_assembly_voidcraft/vertical - open_sound_powered = 'sound/machines/door/shuttle1o.ogg' - close_sound_powered = 'sound/machines/door/shuttle1c.ogg' - - -/datum/category_item/catalogue/anomalous/precursor_a/alien_airlock - name = "Precursor Alpha Object - Doors" - desc = "This object appears to be used in order to restrict or allow access to \ - rooms based on its physical state. In other words, a door. \ - Despite being designed and created by unknown ancient alien hands, this door has \ - a large number of similarities to the conventional airlock, such as being driven by \ - electricity, opening and closing by physically moving, and being air tight. \ - It also operates by responding to signals through internal electrical conduits. \ - These characteristics make it possible for one with experience with a multitool \ - to manipulate the door.\ -

\ - The symbol on the door does not match any living species' patterns, giving further \ - implications that this door is very old, and yet it remains operational after \ - thousands of years. It is unknown if that is due to superb construction, or \ - unseen autonomous maintenance having been performed." - value = CATALOGUER_REWARD_EASY - -/obj/machinery/door/airlock/alien - name = "alien airlock" - desc = "You're fairly sure this is a door." - catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_airlock) - icon = 'icons/obj/doors/Dooralien.dmi' - explosion_resistance = 20 - secured_wires = TRUE - hackProof = TRUE - assembly_type = /obj/structure/door_assembly/door_assembly_alien - req_one_access = list(access_alien) - security_level = 100 //VOREStation Addition - -/obj/machinery/door/airlock/alien/locked - icon_state = "door_locked" - locked = TRUE - -/obj/machinery/door/airlock/alien/public // Entry to UFO. - req_one_access = list() - normalspeed = FALSE // So it closes faster and hopefully keeps the warm air inside. - hackProof = TRUE //VOREStation Edit - No borgos - -/* -About the new airlock wires panel: -* An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires. -* one wire from the ID scanner. Sending a pulse through this flashes the red light on the door (if the door has power). If you cut this wire, the door will stop recognizing valid IDs. (If the door has 0000 access, it still opens and closes, though) -* two wires for power. Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter). Cutting either one disables the main door power, but unless backup power is also cut, the backup power re-powers the door in 10 seconds. While unpowered, the door may be open, but bolts-raising will not work. Cutting these wires may electrocute the user. -* one wire for door bolts. Sending a pulse through this drops door bolts (whether the door is powered or not) or raises them (if it is). Cutting this wire also drops the door bolts, and mending it does not raise them. If the wire is cut, trying to raise the door bolts will not work. -* two wires for backup power. Sending a pulse through either one causes a breaker to trip, but this does not disable it unless main power is down too (in which case it is disabled for 1 minute or however long it takes main power to come back, whichever is shorter). Cutting either one disables the backup door power (allowing it to be crowbarred open, but disabling bolts-raising), but may electocute the user. -* one wire for opening the door. Sending a pulse through this while the door has power makes it open the door if no access is required. -* one wire for AI control. Sending a pulse through this blocks AI control for a second or so (which is enough to see the AI control light on the panel dialog go off and back on again). Cutting this prevents the AI from controlling the door unless it has hacked the door through the power connection (which takes about a minute). If both main and backup power are cut, as well as this wire, then the AI cannot operate or hack the door at all. -* one wire for electrifying the door. Sending a pulse through this electrifies the door for 30 seconds. Cutting this wire electrifies the door, so that the next person to touch the door without insulated gloves gets electrocuted. (Currently it is also STAYING electrified until someone mends the wire) -* one wire for controling door safetys. When active, door does not close on someone. When cut, door will ruin someone's shit. When pulsed, door will immedately ruin someone's shit. -* one wire for controlling door speed. When active, dor closes at normal rate. When cut, door does not close manually. When pulsed, door attempts to close every tick. -*/ - - - -/obj/machinery/door/airlock/bumpopen(mob/living/user as mob) //Airlocks now zap you when you 'bump' them open when they're electrified. --NeoFite - if(!issilicon(usr)) - if(src.isElectrified()) - if(!src.justzap) - if(src.shock(user, 100)) - src.justzap = 1 - spawn (10) - src.justzap = 0 - return - else /*if(src.justzap)*/ - return - else if(user.hallucination > 50 && prob(10) && src.operating == 0) - to_chat(user, "You feel a powerful shock course through your body!") - user.halloss += 10 - user.stunned += 10 - return - ..(user) - -/obj/machinery/door/airlock/proc/isElectrified() - if(src.electrified_until != 0) - return 1 - return 0 - -/obj/machinery/door/airlock/proc/canAIControl() - return ((src.aiControlDisabled!=1) && (!src.isAllPowerLoss())); - -/obj/machinery/door/airlock/proc/canAIHack() - return ((src.aiControlDisabled==1) && (!hackProof) && (!src.isAllPowerLoss())); - -/obj/machinery/door/airlock/proc/arePowerSystemsOn() - if (stat & (NOPOWER|BROKEN)) - return 0 - return (src.main_power_lost_until==0 || src.backup_power_lost_until==0) - -/obj/machinery/door/airlock/requiresID() - return !(wires.is_cut(WIRE_IDSCAN) || aiDisabledIdScanner) - -/obj/machinery/door/airlock/proc/isAllPowerLoss() - if(stat & (NOPOWER|BROKEN)) - return 1 - if(mainPowerCablesCut() && backupPowerCablesCut()) - return 1 - return 0 - -/obj/machinery/door/airlock/proc/mainPowerCablesCut() - return wires.is_cut(WIRE_MAIN_POWER1) || wires.is_cut(WIRE_MAIN_POWER2) - -/obj/machinery/door/airlock/proc/backupPowerCablesCut() - return wires.is_cut(WIRE_BACKUP_POWER1) || wires.is_cut(WIRE_BACKUP_POWER2) - -/obj/machinery/door/airlock/proc/loseMainPower() - main_power_lost_until = mainPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) - - // If backup power is permanently disabled then activate in 10 seconds if possible, otherwise it's already enabled or a timer is already running - if(backup_power_lost_until == -1 && !backupPowerCablesCut()) - backup_power_lost_until = world.time + SecondsToTicks(10) - - if(main_power_lost_until > 0 || backup_power_lost_until > 0) - START_MACHINE_PROCESSING(src) - - // Disable electricity if required - if(electrified_until && isAllPowerLoss()) - electrify(0) - - update_icon() - -/obj/machinery/door/airlock/proc/loseBackupPower() - backup_power_lost_until = backupPowerCablesCut() ? -1 : world.time + SecondsToTicks(60) - - if(backup_power_lost_until > 0) - START_MACHINE_PROCESSING(src) - - // Disable electricity if required - if(electrified_until && isAllPowerLoss()) - electrify(0) - - update_icon() - -/obj/machinery/door/airlock/proc/regainMainPower() - if(!mainPowerCablesCut()) - main_power_lost_until = 0 - // If backup power is currently active then disable, otherwise let it count down and disable itself later - if(!backup_power_lost_until) - backup_power_lost_until = -1 - - update_icon() - -/obj/machinery/door/airlock/proc/regainBackupPower() - if(!backupPowerCablesCut()) - // Restore backup power only if main power is offline, otherwise permanently disable - backup_power_lost_until = main_power_lost_until == 0 ? -1 : 0 - - update_icon() - -/obj/machinery/door/airlock/proc/electrify(var/duration, var/feedback = 0) - var/message = "" - if(wires.is_cut(WIRE_ELECTRIFY) && arePowerSystemsOn()) - message = text("The electrification wire is cut - Door permanently electrified.") - src.electrified_until = -1 - else if(duration && !arePowerSystemsOn()) - message = text("The door is unpowered - Cannot electrify the door.") - src.electrified_until = 0 - else if(!duration && electrified_until != 0) - message = "The door is now un-electrified." - src.electrified_until = 0 - else if(duration) //electrify door for the given duration seconds - if(usr) - shockedby += text("\[[time_stamp()]\] - [usr](ckey:[usr.ckey])") - add_attack_logs(usr,name,"Electrified a door") - else - shockedby += text("\[[time_stamp()]\] - EMP)") - message = "The door is now electrified [duration == -1 ? "permanently" : "for [duration] second\s"]." - src.electrified_until = duration == -1 ? -1 : world.time + SecondsToTicks(duration) - - if(electrified_until > 0) - START_MACHINE_PROCESSING(src) - - if(feedback && message) - to_chat(usr,message) - -/obj/machinery/door/airlock/proc/set_idscan(var/activate, var/feedback = 0) - var/message = "" - if(wires.is_cut(WIRE_IDSCAN)) - message = "The IdScan wire is cut - IdScan feature permanently disabled." - else if(activate && src.aiDisabledIdScanner) - src.aiDisabledIdScanner = 0 - message = "IdScan feature has been enabled." - else if(!activate && !src.aiDisabledIdScanner) - src.aiDisabledIdScanner = 1 - message = "IdScan feature has been disabled." - - if(feedback && message) - to_chat(usr,message) - -/obj/machinery/door/airlock/proc/set_safeties(var/activate, var/feedback = 0) - var/message = "" - // Safeties! We don't need no stinking safeties! - if (wires.is_cut(WIRE_SAFETY)) - message = text("The safety wire is cut - Cannot enable safeties.") - else if (!activate && src.safe) - safe = 0 - else if (activate && !src.safe) - safe = 1 - - if(feedback && message) - to_chat(usr,message) - -// shock user with probability prb (if all connections & power are working) -// returns 1 if shocked, 0 otherwise -// The preceding comment was borrowed from the grille's shock script -/obj/machinery/door/airlock/shock(mob/user, prb) - if(!arePowerSystemsOn()) - return 0 - if(hasShocked) - return 0 //Already shocked someone recently? - if(..()) - hasShocked = 1 - sleep(10) - hasShocked = 0 - return 1 - else - return 0 - - -/obj/machinery/door/airlock/update_icon() - cut_overlays() - if(density) - if(locked && lights && src.arePowerSystemsOn()) - icon_state = "door_locked" - else - icon_state = "door_closed" - if(p_open || welded) - if(p_open) - add_overlay("panel_open") - if (!(stat & NOPOWER)) - if(stat & BROKEN) - add_overlay("sparks_broken") - else if (health < maxhealth * 3/4) - add_overlay("sparks_damaged") - if(welded) - add_overlay("welded") - else if (health < maxhealth * 3/4 && !(stat & NOPOWER)) - add_overlay("sparks_damaged") - else - icon_state = "door_open" - if((stat & BROKEN) && !(stat & NOPOWER)) - add_overlay("sparks_open") - return - -/obj/machinery/door/airlock/do_animate(animation) - switch(animation) - if("opening") - cut_overlay() - if(p_open) - flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking - update_icon() - else - flick("door_opening", src)//[stat ? "_stat":] - update_icon() - if("closing") - cut_overlay() - if(p_open) - flick("o_door_closing", src) - update_icon() - else - flick("door_closing", src) - update_icon() - if("spark") - if(density) - flick("door_spark", src) - if("deny") - if(density && src.arePowerSystemsOn()) - flick("door_deny", src) - playsound(src, denied_sound, 50, 0, 3) - return - -/obj/machinery/door/airlock/attack_ai(mob/user as mob) - tgui_interact(user) - -/obj/machinery/door/airlock/attack_ghost(mob/user) - tgui_interact(user) - -/obj/machinery/door/airlock/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui, datum/tgui_state/custom_state) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "AiAirlock", name) - ui.open() - if(custom_state) - ui.set_state(custom_state) - return TRUE - -/obj/machinery/door/airlock/tgui_data(mob/user) - var/list/data = list() - - var/list/power = list() - power["main"] = main_power_lost_until > 0 ? 0 : 2 - power["main_timeleft"] = round(main_power_lost_until > 0 ? max(main_power_lost_until - world.time, 0) / 10 : main_power_lost_until, 1) - power["backup"] = backup_power_lost_until > 0 ? 0 : 2 - power["backup_timeleft"] = round(backup_power_lost_until > 0 ? max(backup_power_lost_until - world.time, 0) / 10 : backup_power_lost_until, 1) - data["power"] = power - - data["shock"] = (electrified_until == 0) ? 2 : 0 - data["shock_timeleft"] = round(electrified_until > 0 ? max(electrified_until - world.time, 0) / 10 : electrified_until, 1) - data["id_scanner"] = !aiDisabledIdScanner - data["locked"] = locked // bolted - data["lights"] = lights // bolt lights - data["safe"] = safe // safeties - data["speed"] = normalspeed // safe speed - data["welded"] = welded // welded - data["opened"] = !density // opened - - var/list/wire = list() - wire["main_1"] = !wires.is_cut(WIRE_MAIN_POWER1) - wire["main_2"] = !wires.is_cut(WIRE_MAIN_POWER2) - wire["backup_1"] = !wires.is_cut(WIRE_BACKUP_POWER1) - wire["backup_2"] = !wires.is_cut(WIRE_BACKUP_POWER2) - wire["shock"] = !wires.is_cut(WIRE_ELECTRIFY) - wire["id_scanner"] = !wires.is_cut(WIRE_IDSCAN) - wire["bolts"] = !wires.is_cut(WIRE_DOOR_BOLTS) - wire["lights"] = !wires.is_cut(WIRE_BOLT_LIGHT) - wire["safe"] = !wires.is_cut(WIRE_SAFETY) - wire["timing"] = !wires.is_cut(WIRE_SPEED) - - data["wires"] = wire - return data - -/obj/machinery/door/airlock/proc/hack(mob/user as mob) - if(src.aiHacking==0) - src.aiHacking=1 - spawn(20) - //TODO: Make this take a minute - to_chat(user, "Airlock AI control has been blocked. Beginning fault-detection.") - sleep(50) - if(src.canAIControl()) - to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") - src.aiHacking=0 - return - else if(!src.canAIHack(user)) - to_chat(user, "We've lost our connection! Unable to hack airlock.") - src.aiHacking=0 - return - to_chat(user, "Fault confirmed: airlock control wire disabled or cut.") - sleep(20) - to_chat(user, "Attempting to hack into airlock. This may take some time.") - sleep(200) - if(src.canAIControl()) - to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") - src.aiHacking=0 - return - else if(!src.canAIHack(user)) - to_chat(user, "We've lost our connection! Unable to hack airlock.") - src.aiHacking=0 - return - to_chat(user, "Upload access confirmed. Loading control program into airlock software.") - sleep(170) - if(src.canAIControl()) - to_chat(user, "Alert cancelled. Airlock control has been restored without our assistance.") - src.aiHacking=0 - return - else if(!src.canAIHack(user)) - to_chat(user, "We've lost our connection! Unable to hack airlock.") - src.aiHacking=0 - return - to_chat(user, "Transfer complete. Forcing airlock to execute program.") - sleep(50) - //disable blocked control - src.aiControlDisabled = 2 - to_chat(user, "Receiving control information from airlock.") - sleep(10) - //bring up airlock dialog - src.aiHacking = 0 - if (user) - src.attack_ai(user) - -/obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target) - if (src.isElectrified()) - if (istype(mover, /obj/item)) - var/obj/item/i = mover - if (i.matter && (MAT_STEEL in i.matter) && i.matter[MAT_STEEL] > 0) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - return ..() - -/obj/machinery/door/airlock/attack_hand(mob/user as mob) - if(!istype(usr, /mob/living/silicon)) - if(src.isElectrified()) - if(src.shock(user, 100)) - return - - if(istype(user, /mob/living/carbon/human)) - var/mob/living/carbon/human/X = user - if(istype(X.species, /datum/species/xenos)) - src.attack_alien(user) - return - - if(src.p_open) - user.set_machine(src) - wires.Interact(user) - else - ..(user) - return - -/obj/machinery/door/airlock/AltClick(mob/user as mob) - . = ..() - user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) - if(!Adjacent(user)) - return - else if(user.a_intent == I_HURT) - src.visible_message("[user] hammers on \the [src]!", "Someone hammers loudly on \the [src]!") - src.add_fingerprint(user) - if(icon_state == "door_closed" && arePowerSystemsOn()) - flick("door_deny", src) - playsound(src, knock_hammer_sound, 50, 0, 3) - else if(arePowerSystemsOn() && user.a_intent == I_HELP) - src.visible_message("[user] presses the door bell on \the [src].", "\The [src]'s bell rings.") - src.add_fingerprint(user) - if(icon_state == "door_closed") - flick("door_deny", src) - playsound(src, knock_sound, 50, 0, 3) - else if(user.a_intent == I_HELP) - src.visible_message("[user] knocks on \the [src].", "Someone knocks on \the [src].") - src.add_fingerprint(user) - playsound(src, knock_unpowered_sound, 50, 0, 3) - return - -/obj/machinery/door/airlock/tgui_act(action, params) - if(..()) - return TRUE - if(!user_allowed(usr)) - return TRUE - - switch(action) - if("disrupt-main") - if(!main_power_lost_until) - loseMainPower() - update_icon() - else - to_chat(usr, "Main power is already offline.") - . = TRUE - if("disrupt-backup") - if(!backup_power_lost_until) - loseBackupPower() - update_icon() - else - to_chat(usr, "Backup power is already offline.") - . = TRUE - if("shock-restore") - electrify(0, 1) - . = TRUE - if("shock-temp") - electrify(30, 1) - . = TRUE - if("shock-perm") - electrify(-1, 1) - . = TRUE - if("idscan-toggle") - set_idscan(aiDisabledIdScanner, 1) - . = TRUE - // if("emergency-toggle") - // toggle_emergency(usr) - // . = TRUE - if("bolt-toggle") - toggle_bolt(usr) - . = TRUE - if("light-toggle") - if(wires.is_cut(WIRE_BOLT_LIGHT)) - to_chat(usr, "The bolt lights wire is cut - The door bolt lights are permanently disabled.") - return - lights = !lights - update_icon() - . = TRUE - if("safe-toggle") - set_safeties(!safe, 1) - . = TRUE - if("speed-toggle") - if(wires.is_cut(WIRE_SPEED)) - to_chat(usr, "The timing wire is cut - Cannot alter timing.") - return - normalspeed = !normalspeed - . = TRUE - if("open-close") - user_toggle_open(usr) - . = TRUE - - update_icon() - return 1 - -/obj/machinery/door/airlock/proc/user_allowed(mob/user) - var/allowed = (issilicon(user) && canAIControl(user)) - if(!allowed && isobserver(user)) - var/mob/observer/dead/D = user - if(D.can_admin_interact()) - allowed = TRUE - return allowed - -/obj/machinery/door/airlock/proc/toggle_bolt(mob/user) - if(!user_allowed(user)) - return - if(wires.is_cut(WIRE_DOOR_BOLTS)) - to_chat(user, "The door bolt drop wire is cut - you can't toggle the door bolts.") - return - if(locked) - if(!arePowerSystemsOn()) - to_chat(user, "The door has no power - you can't raise the door bolts.") - else - unlock() - to_chat(user, "The door bolts have been raised.") - // log_combat(user, src, "unbolted") - else - lock() - to_chat(user, "The door bolts have been dropped.") - // log_combat(user, src, "bolted") - -/obj/machinery/door/airlock/proc/user_toggle_open(mob/user) - if(!user_allowed(user)) - return - if(welded) - to_chat(user, text("The airlock has been welded shut!")) - else if(locked) - to_chat(user, text("The door bolts are down!")) - else if(!density) - close() - else - open() - -/obj/machinery/door/airlock/proc/can_remove_electronics() - return src.p_open && (operating < 0 || (!operating && welded && !src.arePowerSystemsOn() && density && (!src.locked || (stat & BROKEN)))) - -/obj/machinery/door/airlock/attackby(obj/item/C, mob/user as mob) - //to_world("airlock attackby src [src] obj [C] mob [user]") - if(!istype(usr, /mob/living/silicon)) - if(src.isElectrified()) - if(src.shock(user, 75)) - return - if(istype(C, /obj/item/taperoll)) - return - - src.add_fingerprint(user) - if (attempt_vr(src,"attackby_vr",list(C, user))) return - if(istype(C, /mob/living)) - ..() - return - if(!repairing && istype(C, /obj/item/weapon/weldingtool) && !( src.operating > 0 ) && src.density) - var/obj/item/weapon/weldingtool/W = C - if(W.remove_fuel(0,user)) - if(!src.welded) - src.welded = 1 - else - src.welded = null - playsound(src, C.usesound, 75, 1) - src.update_icon() - return - else - return - else if(C.is_screwdriver()) - if (src.p_open) - if (stat & BROKEN) - to_chat(usr, "The panel is broken and cannot be closed.") - else - src.p_open = 0 - playsound(src, C.usesound, 50, 1) - else - src.p_open = 1 - playsound(src, C.usesound, 50, 1) - src.update_icon() - else if(C.is_wirecutter()) - return src.attack_hand(user) - else if(istype(C, /obj/item/device/multitool)) - return src.attack_hand(user) - else if(istype(C, /obj/item/device/assembly/signaler)) - return src.attack_hand(user) - else if(istype(C, /obj/item/weapon/pai_cable)) // -- TLE - var/obj/item/weapon/pai_cable/cable = C - cable.plugin(src, user) - else if(!repairing && C.is_crowbar()) - if(can_remove_electronics()) - playsound(src, C.usesound, 75, 1) - user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.") - if(do_after(user,40 * C.toolspeed)) - to_chat(user, "You removed the airlock electronics!") - - var/obj/structure/door_assembly/da = new assembly_type(src.loc) - if (istype(da, /obj/structure/door_assembly/multi_tile)) - da.set_dir(src.dir) - - da.anchored = TRUE - if(mineral) - da.glass = mineral - //else if(glass) - else if(glass && !da.glass) - da.glass = 1 - da.state = 1 - da.created_name = src.name - da.update_state() - - if(operating == -1 || (stat & BROKEN)) - new /obj/item/weapon/circuitboard/broken(src.loc) - operating = 0 - else - if (!electronics) create_electronics() - - electronics.loc = src.loc - electronics = null - - qdel(src) - return - else if(arePowerSystemsOn()) - to_chat(user, "The airlock's motors resist your efforts to force it.") - else if(locked) - to_chat(user, "The airlock's bolts prevent it from being forced.") - else - if(density) - spawn(0) open(1) - else - spawn(0) close(1) - - // Check if we're using a crowbar or armblade, and if the airlock's unpowered for whatever reason (off, broken, etc). - else if(istype(C, /obj/item/weapon)) - var/obj/item/weapon/W = C - if((W.pry == 1) && !arePowerSystemsOn()) - if(locked) - to_chat(user, "The airlock's bolts prevent it from being forced.") - else if( !welded && !operating ) - if(istype(C, /obj/item/weapon/material/twohanded/fireaxe)) // If this is a fireaxe, make sure it's held in two hands. - var/obj/item/weapon/material/twohanded/fireaxe/F = C - if(!F.wielded) - to_chat(user, "You need to be wielding \the [F] to do that.") - return - // At this point, it's an armblade or a fireaxe that passed the wielded test, let's try to open it. - if(density) - spawn(0) - open(1) - else - spawn(0) - close(1) - else - ..() - else - ..() - return - -/obj/machinery/door/airlock/phoron/attackby(C as obj, mob/user as mob) - if(C) - ignite(is_hot(C)) - ..() - -/obj/machinery/door/airlock/set_broken() - src.p_open = 1 - stat |= BROKEN - if (secured_wires) - lock() - for (var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message("[src.name]'s control panel bursts open, sparks spewing out!") - - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - - update_icon() - return - -/obj/machinery/door/airlock/open(var/forced=0) - if(!can_open(forced)) - return 0 - use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people - - //if the door is unpowered then it doesn't make sense to hear the woosh of a pneumatic actuator - for(var/mob/M as anything in player_list) - if(!M || !M.client) - continue - var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds) - var/department_door_sounds = M.client.is_preference_enabled(/datum/client_preference/department_door_sounds) - var/sound - var/volume - if(old_sounds) // Do we have old sounds enabled? Play these even if we have department door sounds enabled. - if(arePowerSystemsOn()) - sound = legacy_open_powered - volume = 50 - else - sound = open_sound_unpowered - volume = 75 - else if(!old_sounds && department_door_sounds && src.department_open_powered) // Else, we have old sounds disabled, the door has per-department door sounds, and we have chosen to play department door sounds, use these. - if(arePowerSystemsOn()) - sound = department_open_powered - volume = 50 - else - sound = open_sound_unpowered - volume = 75 - else // Else, play these. - if(arePowerSystemsOn()) - sound = open_sound_powered - volume = 50 - else - sound = open_sound_unpowered - volume = 75 - - var/turf/T = get_turf(M) - var/distance = get_dist(T, get_turf(src)) - if(distance <= world.view * 2) - if(T && T.z == get_z(src)) - M.playsound_local(get_turf(src), sound, volume, 1, null, 0, TRUE, sound(sound), volume_channel = VOLUME_CHANNEL_DOORS) - - if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density) - src.closeOther.close() - return ..() - -/obj/machinery/door/airlock/can_open(var/forced=0) - if(!forced) - if(!arePowerSystemsOn() || wires.is_cut(WIRE_OPEN_DOOR)) - return 0 - - if(locked || welded) - return 0 - return ..() - -/obj/machinery/door/airlock/can_close(var/forced=0) - if(locked || welded) - return 0 - - if(!forced) - //despite the name, this wire is for general door control. - if(!arePowerSystemsOn() || wires.is_cut(WIRE_OPEN_DOOR)) - return 0 - - return ..() - -/atom/movable/proc/blocks_airlock() - return density - -/obj/machinery/door/blocks_airlock() - return 0 - -/obj/machinery/mech_sensor/blocks_airlock() - return 0 - -/mob/living/blocks_airlock() - return 1 - -/atom/movable/proc/airlock_crush(var/crush_damage) - return 0 - -/obj/machinery/portable_atmospherics/canister/airlock_crush(var/crush_damage) - . = ..() - health -= crush_damage - healthcheck() - -/obj/effect/energy_field/airlock_crush(var/crush_damage) - adjust_strength(crush_damage) - -/obj/structure/closet/airlock_crush(var/crush_damage) - ..() - damage(crush_damage) - for(var/atom/movable/AM in src) - AM.airlock_crush() - return 1 - -/mob/living/airlock_crush(var/crush_damage) - . = ..() - adjustBruteLoss(crush_damage) - SetStunned(5) - SetWeakened(5) - var/turf/T = get_turf(src) - T.add_blood(src) - return 1 - -/mob/living/carbon/airlock_crush(var/crush_damage) - . = ..() - if(can_feel_pain()) - emote("scream") - -/mob/living/silicon/robot/airlock_crush(var/crush_damage) - adjustBruteLoss(crush_damage) - return 0 - -/obj/machinery/door/airlock/close(var/forced=0) - if(!can_close(forced)) - return 0 - - if(safe) - for(var/turf/turf in locs) - for(var/atom/movable/AM in turf) - if(AM.blocks_airlock()) - if(!has_beeped) - playsound(src, 'sound/machines/buzz-two.ogg', 50, 0) - has_beeped = 1 - autoclose_in(6) - return - - for(var/turf/turf in locs) - for(var/atom/movable/AM in turf) - if(AM.airlock_crush(DOOR_CRUSH_DAMAGE)) - take_damage(DOOR_CRUSH_DAMAGE) - - use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people - has_beeped = 0 - for(var/mob/M as anything in player_list) - if(!M || !M.client) - continue - var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds) - var/department_door_sounds = M.client.is_preference_enabled(/datum/client_preference/department_door_sounds) - var/sound - var/volume - if(old_sounds) - if(arePowerSystemsOn()) - sound = legacy_close_powered - volume = 50 - else - sound = open_sound_unpowered - volume = 75 - else if(!old_sounds && department_door_sounds && src.department_close_powered) // Else, we have old sounds disabled, the door has per-department door sounds, and we have chosen to play department door sounds, use these. - if(arePowerSystemsOn()) - sound = department_close_powered - volume = 50 - else - sound = open_sound_unpowered - volume = 75 - else - if(arePowerSystemsOn()) - sound = close_sound_powered - volume = 50 - else - sound = open_sound_unpowered - volume = 75 - - var/turf/T = get_turf(M) - var/distance = get_dist(T, get_turf(src)) - if(distance <= world.view * 2) - if(T && T.z == get_z(src)) - M.playsound_local(get_turf(src), sound, volume, 1, null, 0, TRUE, sound(sound), volume_channel = VOLUME_CHANNEL_DOORS) - for(var/turf/turf in locs) - var/obj/structure/window/killthis = (locate(/obj/structure/window) in turf) - if(killthis) - killthis.ex_act(2)//Smashin windows - return ..() - -/obj/machinery/door/airlock/proc/lock(var/forced=0) - if(locked) - return 0 - - if (operating && !forced) return 0 - - src.locked = 1 - playsound(src, bolt_down_sound, 30, 0, 3, volume_channel = VOLUME_CHANNEL_DOORS) - for(var/mob/M in range(1,src)) - M.show_message("You hear a click from the bottom of the door.", 2) - update_icon() - return 1 - -/obj/machinery/door/airlock/proc/unlock(var/forced=0) - if(!src.locked) - return - - if (!forced) - if(operating || !src.arePowerSystemsOn() || wires.is_cut(WIRE_DOOR_BOLTS)) return - - src.locked = 0 - playsound(src, bolt_up_sound, 30, 0, 3, volume_channel = VOLUME_CHANNEL_DOORS) - for(var/mob/M in range(1,src)) - M.show_message("You hear a click from the bottom of the door.", 2) - update_icon() - return 1 - -/obj/machinery/door/airlock/allowed(mob/M) - if(locked) - return 0 - return ..(M) - -/obj/machinery/door/airlock/New(var/newloc, var/obj/structure/door_assembly/assembly=null) - ..() - - //if assembly is given, create the new door from the assembly - if (assembly && istype(assembly)) - assembly_type = assembly.type - - electronics = assembly.electronics - electronics.loc = src - - //update the door's access to match the electronics' - secured_wires = electronics.secure - if(electronics.one_access) - LAZYCLEARLIST(req_access) - req_one_access = src.electronics.conf_access - else - LAZYCLEARLIST(req_one_access) - req_access = src.electronics.conf_access - - //get the name from the assembly - if(assembly.created_name) - name = assembly.created_name - else - name = "[istext(assembly.glass) ? "[assembly.glass] airlock" : assembly.base_name]" - - //get the dir from the assembly - set_dir(assembly.dir) - - //wires - var/turf/T = get_turf(newloc) - if(T && (T.z in using_map.admin_levels)) - secured_wires = 1 - if (secured_wires) - wires = new/datum/wires/airlock/secure(src) - else - wires = new/datum/wires/airlock(src) - -/obj/machinery/door/airlock/Initialize() - if(src.closeOtherId != null) - for (var/obj/machinery/door/airlock/A in machines) - if(A.closeOtherId == src.closeOtherId && A != src) - src.closeOther = A - break - name = "\improper [name]" - . = ..() - -/obj/machinery/door/airlock/Destroy() - qdel(wires) - wires = null - return ..() - -// Most doors will never be deconstructed over the course of a round, -// so as an optimization defer the creation of electronics until -// the airlock is deconstructed -/obj/machinery/door/airlock/proc/create_electronics() - //create new electronics - if (secured_wires) - src.electronics = new/obj/item/weapon/airlock_electronics/secure( src.loc ) - else - src.electronics = new/obj/item/weapon/airlock_electronics( src.loc ) - - //update the electronics to match the door's access - if(LAZYLEN(req_access)) - electronics.conf_access = req_access - else if (LAZYLEN(req_one_access)) - electronics.conf_access = req_one_access - electronics.one_access = 1 - -/obj/machinery/door/airlock/emp_act(var/severity) - if(prob(40/severity)) - var/duration = world.time + SecondsToTicks(30 / severity) - if(duration > electrified_until) - electrify(duration) - ..() - -/obj/machinery/door/airlock/power_change() //putting this is obj/machinery/door itself makes non-airlock doors turn invisible for some reason - ..() - if(stat & NOPOWER) - // If we lost power, disable electrification - // Keeping door lights on, runs on internal battery or something. - electrified_until = 0 - update_icon() - -/obj/machinery/door/airlock/proc/prison_open() - if(arePowerSystemsOn()) - src.unlock() - src.open() - src.lock() - return - - -/obj/machinery/door/airlock/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) - switch(passed_mode) - if(RCD_DECONSTRUCT) - // Old RCD code made it cost 10 units to decon an airlock. - // Now the new one costs ten "sheets". - return list( - RCD_VALUE_MODE = RCD_DECONSTRUCT, - RCD_VALUE_DELAY = 5 SECONDS, - RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 10 - ) - return FALSE - -/obj/machinery/door/airlock/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) - switch(passed_mode) - if(RCD_DECONSTRUCT) - to_chat(user, span("notice", "You deconstruct \the [src].")) - qdel(src) - return TRUE - return FALSE -======= +//VOREStation Edit - Redone a lot of airlock things: /* - Specific department maintenance doors - Named doors properly according to type @@ -1592,6 +13,12 @@ About the new airlock wires panel: power_channel = ENVIRON explosion_resistance = 10 + + // Doors do their own stuff + bullet_vulnerability = 0 + + blocks_emissive = EMISSIVE_BLOCK_GENERIC // Not quite as nice as /tg/'s custom masks. We should make those sometime + var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in. var/hackProof = 0 // if 1, this door can't be hacked by the AI var/electrified_until = 0 //World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it. @@ -1613,9 +40,10 @@ About the new airlock wires panel: var/justzap = 0 var/safe = 1 normalspeed = 1 - var/obj/item/airlock_electronics/electronics = null + var/obj/item/weapon/airlock_electronics/electronics = null var/hasShocked = 0 //Prevents multiple shocks from happening var/secured_wires = 0 + var/security_level = 1 //VOREStation Addition - acts as a multiplier on the time required to hack an airlock with a hacktool var/datum/wires/airlock/wires = null var/open_sound_powered = 'sound/machines/door/covert1o.ogg' @@ -1628,6 +56,9 @@ About the new airlock wires panel: var/denied_sound = 'sound/machines/deniedbeep.ogg' var/bolt_up_sound = 'sound/machines/door/boltsup.ogg' var/bolt_down_sound = 'sound/machines/door/boltsdown.ogg' + var/knock_sound = 'sound/machines/2beeplow.ogg' + var/knock_hammer_sound = 'sound/weapons/sonic_jackhammer.ogg' + var/knock_unpowered_sound = 'sound/machines/door/knock_glass.ogg' /obj/machinery/door/airlock/attack_generic(var/mob/living/user, var/damage) if(stat & (BROKEN|NOPOWER)) @@ -1659,17 +90,17 @@ About the new airlock wires panel: var/mob/living/carbon/human/X = user if(istype(X.species, /datum/species/xenos)) if(src.locked || src.welded) - visible_message("\The [user] begins digging into \the [src] internals!") + visible_message("\The [user] begins tearing into \the [src] internals!") src.do_animate("deny") - if(do_after(user,5 SECONDS,src)) - visible_message("\The [user] forces \the [src] open, sparks flying from its electronics!") + if(do_after(user,15 SECONDS,src)) + visible_message("\The [user] tears \the [src] open, sparks flying from its electronics!") src.do_animate("spark") - playsound(src, 'sound/machines/door/airlock_creaking.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) + playsound(src, 'sound/machines/door/airlock_tear_apart.ogg', 100, 1, volume_channel = VOLUME_CHANNEL_DOORS) src.locked = 0 src.welded = 0 update_icon() open(1) - src.emag_act() + src.set_broken() //These aren't emags, these be CLAWS else if(src.density) visible_message("\The [user] begins forcing \the [src] open!") if(do_after(user, 5 SECONDS,src)) @@ -1688,51 +119,67 @@ About the new airlock wires panel: /obj/machinery/door/airlock/get_material() if(mineral) return get_material_by_name(mineral) - return get_material_by_name(DEFAULT_WALL_MATERIAL) + return get_material_by_name(MAT_STEEL) /obj/machinery/door/airlock/command name = "Command Airlock" icon = 'icons/obj/doors/Doorcom.dmi' req_one_access = list(access_heads) assembly_type = /obj/structure/door_assembly/door_assembly_com + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/cmd3o.ogg' department_close_powered = 'sound/machines/door/cmd3c.ogg' + security_level = 3 //VOREStation Addition /obj/machinery/door/airlock/security name = "Security Airlock" icon = 'icons/obj/doors/Doorsec.dmi' req_one_access = list(access_security) assembly_type = /obj/structure/door_assembly/door_assembly_sec + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/sec1o.ogg' department_close_powered = 'sound/machines/door/sec1c.ogg' + security_level = 2 //VOREStation Addition /obj/machinery/door/airlock/engineering name = "Engineering Airlock" icon = 'icons/obj/doors/Dooreng.dmi' req_one_access = list(access_engine) assembly_type = /obj/structure/door_assembly/door_assembly_eng + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/eng1o.ogg' department_close_powered = 'sound/machines/door/eng1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/engineeringatmos name = "Atmospherics Airlock" icon = 'icons/obj/doors/Doorengatmos.dmi' req_one_access = list(access_atmospherics) assembly_type = /obj/structure/door_assembly/door_assembly_eat + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/eng1o.ogg' department_close_powered = 'sound/machines/door/eng1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/medical name = "Medical Airlock" icon = 'icons/obj/doors/Doormed.dmi' req_one_access = list(access_medical) assembly_type = /obj/structure/door_assembly/door_assembly_med + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/med1o.ogg' department_close_powered = 'sound/machines/door/med1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/maintenance name = "Maintenance Access" icon = 'icons/obj/doors/Doormaint.dmi' + //req_one_access = list(access_maint_tunnels) //VOREStation Edit - Maintenance is open access assembly_type = /obj/structure/door_assembly/door_assembly_mai open_sound_powered = 'sound/machines/door/door2o.ogg' close_sound_powered = 'sound/machines/door/door2c.ogg' @@ -1740,6 +187,8 @@ About the new airlock wires panel: /obj/machinery/door/airlock/maintenance/cargo icon = 'icons/obj/doors/Doormaint_cargo.dmi' req_one_access = list(access_cargo) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/door2o.ogg' department_close_powered = 'sound/machines/door/door2c.ogg' @@ -1778,15 +227,12 @@ About the new airlock wires panel: open_sound_powered = 'sound/machines/door/space1o.ogg' close_sound_powered = 'sound/machines/door/space1c.ogg' -/obj/machinery/door/airlock/external/white - icon = 'icons/obj/doors/Doorextwhite.dmi' - -/obj/machinery/door/airlock/external/glass/bolted +/obj/machinery/door/airlock/external/bolted icon_state = "door_locked" // So it looks visibly bolted in map editor locked = 1 // For convenience in making docking ports: one that is pre-bolted with frequency set! -/obj/machinery/door/airlock/external/glass/bolted/cycling +/obj/machinery/door/airlock/external/bolted/cycling frequency = 1379 /obj/machinery/door/airlock/glass_external @@ -1818,6 +264,7 @@ About the new airlock wires panel: opacity = 1 open_sound_powered = 'sound/machines/door/cmd3o.ogg' close_sound_powered = 'sound/machines/door/cmd3c.ogg' + security_level = 100 //VOREStation Addition /obj/machinery/door/airlock/glass_centcom name = "Airlock" @@ -1826,6 +273,7 @@ About the new airlock wires panel: glass = 1 open_sound_powered = 'sound/machines/door/cmd3o.ogg' close_sound_powered = 'sound/machines/door/cmd3c.ogg' + security_level = 100 //VOREStation Addition /obj/machinery/door/airlock/vault name = "Vault" @@ -1837,6 +285,7 @@ About the new airlock wires panel: req_one_access = list(access_heads_vault) open_sound_powered = 'sound/machines/door/vault1o.ogg' close_sound_powered = 'sound/machines/door/vault1c.ogg' + security_level = 5 //VOREStation Addition /obj/machinery/door/airlock/vault/bolted icon_state = "door_locked" @@ -1880,8 +329,11 @@ About the new airlock wires panel: assembly_type = /obj/structure/door_assembly/door_assembly_com glass = 1 req_one_access = list(access_heads) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/cmd1o.ogg' department_close_powered = 'sound/machines/door/cmd1c.ogg' + security_level = 3 //VOREStation Addition /obj/machinery/door/airlock/glass_engineering name = "Engineering Airlock" @@ -1895,6 +347,7 @@ About the new airlock wires panel: req_one_access = list(access_engine) department_open_powered = 'sound/machines/door/eng1o.ogg' department_close_powered = 'sound/machines/door/eng1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/glass_engineeringatmos name = "Atmospherics Airlock" @@ -1906,8 +359,11 @@ About the new airlock wires panel: assembly_type = /obj/structure/door_assembly/door_assembly_eat glass = 1 req_one_access = list(access_atmospherics) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/eng1o.ogg' department_close_powered = 'sound/machines/door/eng1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/glass_security name = "Security Airlock" @@ -1919,8 +375,11 @@ About the new airlock wires panel: assembly_type = /obj/structure/door_assembly/door_assembly_sec glass = 1 req_one_access = list(access_security) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/sec1o.ogg' department_close_powered = 'sound/machines/door/sec1c.ogg' + security_level = 2 //VOREStation Addition /obj/machinery/door/airlock/glass_medical name = "Medical Airlock" @@ -1932,14 +391,19 @@ About the new airlock wires panel: assembly_type = /obj/structure/door_assembly/door_assembly_med glass = 1 req_one_access = list(access_medical) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/med1o.ogg' department_close_powered = 'sound/machines/door/med1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/mining name = "Mining Airlock" icon = 'icons/obj/doors/Doormining.dmi' assembly_type = /obj/structure/door_assembly/door_assembly_min req_one_access = list(access_mining) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/cgo1o.ogg' department_close_powered = 'sound/machines/door/cgo1c.ogg' @@ -1948,15 +412,21 @@ About the new airlock wires panel: icon = 'icons/obj/doors/Dooratmo.dmi' assembly_type = /obj/structure/door_assembly/door_assembly_atmo req_one_access = list(access_atmospherics) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/eng1o.ogg' department_close_powered = 'sound/machines/door/eng1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/research name = "Research Airlock" icon = 'icons/obj/doors/Doorresearch.dmi' assembly_type = /obj/structure/door_assembly/door_assembly_research + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/sci1o.ogg' department_close_powered = 'sound/machines/door/sci1c.ogg' + security_level = 2 //VOREStation Addition /obj/machinery/door/airlock/glass_research name = "Research Airlock" @@ -1968,8 +438,11 @@ About the new airlock wires panel: assembly_type = /obj/structure/door_assembly/door_assembly_research glass = 1 req_one_access = list(access_research) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/sci1o.ogg' department_close_powered = 'sound/machines/door/sci1c.ogg' + security_level = 2 //VOREStation Addition /obj/machinery/door/airlock/glass_mining name = "Mining Airlock" @@ -1981,6 +454,8 @@ About the new airlock wires panel: assembly_type = /obj/structure/door_assembly/door_assembly_min glass = 1 req_one_access = list(access_mining) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/cgo1o.ogg' department_close_powered = 'sound/machines/door/cgo1c.ogg' @@ -1994,8 +469,11 @@ About the new airlock wires panel: assembly_type = /obj/structure/door_assembly/door_assembly_atmo glass = 1 req_one_access = list(access_atmospherics) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/eng1o.ogg' department_close_powered = 'sound/machines/door/eng1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/gold name = "Gold Airlock" @@ -2076,8 +554,11 @@ About the new airlock wires panel: icon = 'icons/obj/doors/Doorsci.dmi' assembly_type = /obj/structure/door_assembly/door_assembly_science req_one_access = list(access_research) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/sci1o.ogg' department_close_powered = 'sound/machines/door/sci1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/glass_science name = "Glass Airlocks" @@ -2086,8 +567,11 @@ About the new airlock wires panel: assembly_type = /obj/structure/door_assembly/door_assembly_science glass = 1 req_one_access = list(access_research) + open_sound_powered = 'sound/machines/door/hall1o.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. + close_sound_powered = 'sound/machines/door/hall1c.ogg' // VOREStation Edit: Default door sounds for fancy, department-off. department_open_powered = 'sound/machines/door/sci1o.ogg' department_close_powered = 'sound/machines/door/sci1c.ogg' + security_level = 1.5 //VOREStation Addition /obj/machinery/door/airlock/highsecurity name = "Secure Airlock" @@ -2098,6 +582,7 @@ About the new airlock wires panel: req_one_access = list(access_heads_vault) open_sound_powered = 'sound/machines/door/secure1o.ogg' close_sound_powered = 'sound/machines/door/secure1c.ogg' + security_level = 4 //VOREStation Addition /obj/machinery/door/airlock/voidcraft name = "voidcraft hatch" @@ -2145,6 +630,7 @@ About the new airlock wires panel: hackProof = TRUE assembly_type = /obj/structure/door_assembly/door_assembly_alien req_one_access = list(access_alien) + security_level = 100 //VOREStation Addition /obj/machinery/door/airlock/alien/locked icon_state = "door_locked" @@ -2153,6 +639,7 @@ About the new airlock wires panel: /obj/machinery/door/airlock/alien/public // Entry to UFO. req_one_access = list() normalspeed = FALSE // So it closes faster and hopefully keeps the warm air inside. + hackProof = TRUE //VOREStation Edit - No borgos /* About the new airlock wires panel: @@ -2181,6 +668,11 @@ About the new airlock wires panel: return else /*if(src.justzap)*/ return + else if(user.hallucination > 50 && prob(10) && src.operating == 0) + to_chat(user, "You feel a powerful shock course through your body!") + user.halloss += 10 + user.stunned += 10 + return ..(user) /obj/machinery/door/airlock/proc/isElectrified() @@ -2315,7 +807,7 @@ About the new airlock wires panel: // shock user with probability prb (if all connections & power are working) // returns 1 if shocked, 0 otherwise // The preceding comment was borrowed from the grille's shock script -/obj/machinery/door/airlock/shock(mob/living/user, prb) +/obj/machinery/door/airlock/shock(mob/user, prb) if(!arePowerSystemsOn()) return 0 if(hasShocked) @@ -2337,7 +829,6 @@ About the new airlock wires panel: else icon_state = "door_closed" if(p_open || welded) - cut_overlays() if(p_open) add_overlay("panel_open") if (!(stat & NOPOWER)) @@ -2360,18 +851,16 @@ About the new airlock wires panel: if("opening") cut_overlay() if(p_open) - spawn(2) // The only work around that works. Downside is that the door will be gone for a millisecond. - flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking - update_icon() + flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking + update_icon() else flick("door_opening", src)//[stat ? "_stat":] update_icon() if("closing") cut_overlay() if(p_open) - spawn(2) - flick("o_door_closing", src) - update_icon() + flick("o_door_closing", src) + update_icon() else flick("door_closing", src) update_icon() @@ -2390,11 +879,13 @@ About the new airlock wires panel: /obj/machinery/door/airlock/attack_ghost(mob/user) tgui_interact(user) -/obj/machinery/door/airlock/tgui_interact(mob/user, datum/tgui/ui) +/obj/machinery/door/airlock/tgui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui, datum/tgui_state/custom_state) ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "AiAirlock", name) ui.open() + if(custom_state) + ui.set_state(custom_state) return TRUE /obj/machinery/door/airlock/tgui_data(mob/user) @@ -2484,8 +975,8 @@ About the new airlock wires panel: if (src.isElectrified()) if (istype(mover, /obj/item)) var/obj/item/i = mover - if (i.matter && (DEFAULT_WALL_MATERIAL in i.matter) && i.matter[DEFAULT_WALL_MATERIAL] > 0) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + if (i.matter && (MAT_STEEL in i.matter) && i.matter[MAT_STEEL] > 0) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() return ..() @@ -2509,6 +1000,29 @@ About the new airlock wires panel: ..(user) return +/obj/machinery/door/airlock/AltClick(mob/user as mob) + . = ..() + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + if(!Adjacent(user)) + return + else if(user.a_intent == I_HURT) + src.visible_message("[user] hammers on \the [src]!", "Someone hammers loudly on \the [src]!") + src.add_fingerprint(user) + if(icon_state == "door_closed" && arePowerSystemsOn()) + flick("door_deny", src) + playsound(src, knock_hammer_sound, 50, 0, 3) + else if(arePowerSystemsOn() && user.a_intent == I_HELP) + src.visible_message("[user] presses the door bell on \the [src].", "\The [src]'s bell rings.") + src.add_fingerprint(user) + if(icon_state == "door_closed") + flick("door_deny", src) + playsound(src, knock_sound, 50, 0, 3) + else if(user.a_intent == I_HELP) + src.visible_message("[user] knocks on \the [src].", "Someone knocks on \the [src].") + src.add_fingerprint(user) + playsound(src, knock_unpowered_sound, 50, 0, 3) + return + /obj/machinery/door/airlock/tgui_act(action, params) if(..()) return TRUE @@ -2622,11 +1136,12 @@ About the new airlock wires panel: return src.add_fingerprint(user) + if (attempt_vr(src,"attackby_vr",list(C, user))) return if(istype(C, /mob/living)) ..() return - if(!repairing && istype(C, /obj/item/weldingtool) && !( src.operating > 0 ) && src.density) - var/obj/item/weldingtool/W = C + if(!repairing && istype(C, /obj/item/weapon/weldingtool) && !( src.operating > 0 ) && src.density) + var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(0,user)) if(!src.welded) src.welded = 1 @@ -2637,28 +1152,28 @@ About the new airlock wires panel: return else return - else if(C.is_screwdriver()) //we don't want screwdrivers to toggle the door, so... + else if(C.is_screwdriver()) if (src.p_open) if (stat & BROKEN) to_chat(usr, "The panel is broken and cannot be closed.") - else //close the panel, do the sound, update the icon, but don't toggle the door + else src.p_open = FALSE playsound(src, C.usesound, 50, 1) src.update_icon() return - else //open the panel, do the sound, update the icon, open the wires menu but don't toggle the door + else src.p_open = TRUE playsound(src, C.usesound, 50, 1) src.update_icon() return src.attack_hand(user) else if(C.is_wirecutter()) return src.attack_hand(user) - else if(istype(C, /obj/item/multitool)) + else if(istype(C, /obj/item/device/multitool)) return src.attack_hand(user) - else if(istype(C, /obj/item/assembly/signaler)) + else if(istype(C, /obj/item/device/assembly/signaler)) return src.attack_hand(user) - else if(istype(C, /obj/item/pai_cable)) // -- TLE - var/obj/item/pai_cable/cable = C + else if(istype(C, /obj/item/weapon/pai_cable)) // -- TLE + var/obj/item/weapon/pai_cable/cable = C cable.plugin(src, user) else if(!repairing && C.is_crowbar()) if(can_remove_electronics()) @@ -2671,7 +1186,7 @@ About the new airlock wires panel: if (istype(da, /obj/structure/door_assembly/multi_tile)) da.set_dir(src.dir) - da.anchored = 1 + da.anchored = TRUE if(mineral) da.glass = mineral //else if(glass) @@ -2682,7 +1197,7 @@ About the new airlock wires panel: da.update_state() if(operating == -1 || (stat & BROKEN)) - new /obj/item/circuitboard/broken(src.loc) + new /obj/item/weapon/circuitboard/broken(src.loc) operating = 0 else if (!electronics) create_electronics() @@ -2703,22 +1218,26 @@ About the new airlock wires panel: spawn(0) close(1) // Check if we're using a crowbar or armblade, and if the airlock's unpowered for whatever reason (off, broken, etc). - if((C.pry == 1) && !arePowerSystemsOn()) - if(locked) - to_chat(user, "The airlock's bolts prevent it from being forced.") - else if( !welded && !operating ) - if(istype(C, /obj/item/material/twohanded/fireaxe)) // If this is a fireaxe, make sure it's held in two hands. - var/obj/item/material/twohanded/fireaxe/F = C - if(!F.wielded) - to_chat(user, "You need to be wielding \the [F] to do that.") - return - // At this point, it's an armblade or a fireaxe that passed the wielded test, let's try to open it. - if(density) - spawn(0) - open(1) - else - spawn(0) - close(1) + else if(istype(C, /obj/item/weapon)) + var/obj/item/weapon/W = C + if((W.pry == 1) && !arePowerSystemsOn()) + if(locked) + to_chat(user, "The airlock's bolts prevent it from being forced.") + else if( !welded && !operating ) + if(istype(C, /obj/item/weapon/material/twohanded/fireaxe)) // If this is a fireaxe, make sure it's held in two hands. + var/obj/item/weapon/material/twohanded/fireaxe/F = C + if(!F.wielded) + to_chat(user, "You need to be wielding \the [F] to do that.") + return + // At this point, it's an armblade or a fireaxe that passed the wielded test, let's try to open it. + if(density) + spawn(0) + open(1) + else + spawn(0) + close(1) + else + ..() else ..() return @@ -2736,8 +1255,8 @@ About the new airlock wires panel: for (var/mob/O in viewers(src, null)) if ((O.client && !( O.blinded ))) O.show_message("[src.name]'s control panel bursts open, sparks spewing out!") - playsound(src.loc, 'sound/machines/airlock_break.ogg', 100, 1) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(5, 1, src) s.start() @@ -2750,8 +1269,7 @@ About the new airlock wires panel: use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people //if the door is unpowered then it doesn't make sense to hear the woosh of a pneumatic actuator - for(var/P in player_list) - var/mob/M = P + for(var/mob/M as anything in player_list) if(!M || !M.client) continue var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds) @@ -2869,7 +1387,7 @@ About the new airlock wires panel: if(!has_beeped) playsound(src, 'sound/machines/buzz-two.ogg', 50, 0) has_beeped = 1 - close_door_at = world.time + 6 + autoclose_in(6) return for(var/turf/turf in locs) @@ -2879,8 +1397,7 @@ About the new airlock wires panel: use_power(360) //360 W seems much more appropriate for an actuator moving an industrial door capable of crushing people has_beeped = 0 - for(var/P in player_list) - var/mob/M = P + for(var/mob/M as anything in player_list) if(!M || !M.client) continue var/old_sounds = M.client.is_preference_enabled(/datum/client_preference/old_door_sounds) @@ -2952,16 +1469,8 @@ About the new airlock wires panel: return 0 return ..(M) -/obj/machinery/door/airlock/Initialize(var/ml, var/obj/structure/door_assembly/assembly=null) - - if(src.closeOtherId != null) - for (var/obj/machinery/door/airlock/A in machines) - if(A.closeOtherId == src.closeOtherId && A != src) - src.closeOther = A - break - name = "\improper [name]" - - . = ..() +/obj/machinery/door/airlock/New(var/newloc, var/obj/structure/door_assembly/assembly=null) + ..() //if assembly is given, create the new door from the assembly if (assembly && istype(assembly)) @@ -2989,7 +1498,7 @@ About the new airlock wires panel: set_dir(assembly.dir) //wires - var/turf/T = get_turf(src) + var/turf/T = get_turf(newloc) if(T && (T.z in using_map.admin_levels)) secured_wires = 1 if (secured_wires) @@ -2997,9 +1506,14 @@ About the new airlock wires panel: else wires = new/datum/wires/airlock(src) - if(frequency) - set_frequency(frequency) - update_icon() +/obj/machinery/door/airlock/Initialize() + if(src.closeOtherId != null) + for (var/obj/machinery/door/airlock/A in machines) + if(A.closeOtherId == src.closeOtherId && A != src) + src.closeOther = A + break + name = "\improper [name]" + . = ..() /obj/machinery/door/airlock/Destroy() qdel(wires) @@ -3012,9 +1526,9 @@ About the new airlock wires panel: /obj/machinery/door/airlock/proc/create_electronics() //create new electronics if (secured_wires) - src.electronics = new/obj/item/airlock_electronics/secure( src.loc ) + src.electronics = new/obj/item/weapon/airlock_electronics/secure( src.loc ) else - src.electronics = new/obj/item/airlock_electronics( src.loc ) + src.electronics = new/obj/item/weapon/airlock_electronics( src.loc ) //update the electronics to match the door's access if(LAZYLEN(req_access)) @@ -3046,7 +1560,7 @@ About the new airlock wires panel: return -/obj/machinery/door/airlock/rcd_values(mob/living/user, obj/item/rcd/the_rcd, passed_mode) +/obj/machinery/door/airlock/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_DECONSTRUCT) // Old RCD code made it cost 10 units to decon an airlock. @@ -3058,11 +1572,10 @@ About the new airlock wires panel: ) return FALSE -/obj/machinery/door/airlock/rcd_act(mob/living/user, obj/item/rcd/the_rcd, passed_mode) +/obj/machinery/door/airlock/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_DECONSTRUCT) to_chat(user, span("notice", "You deconstruct \the [src].")) qdel(src) return TRUE return FALSE ->>>>>>> 6b909477bca... the little construction pr (#9002) From ca288aa2b28681080312869d43272e4556ec0478 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Fri, 7 Jul 2023 16:50:43 +1000 Subject: [PATCH 3/7] Update frame.dm --- code/game/machinery/frame.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm index 786e7f39c1..43fd737eaf 100644 --- a/code/game/machinery/frame.dm +++ b/code/game/machinery/frame.dm @@ -202,13 +202,12 @@ frame_class = FRAME_CLASS_MACHINE frame_size = 3 -<<<<<<< HEAD /datum/frame/frame_types/injector_maker name = "Ready-to-Use Medicine 3000" frame_class = FRAME_CLASS_MACHINE circuit = /obj/machinery/atmospheric_field_generator frame_size = 3 -======= + /datum/frame/frame_types/electrochromic_button name = "Electrochromic Window Button" frame_class = FRAME_CLASS_ALARM @@ -217,8 +216,6 @@ x_offset = 24 y_offset = 24 ->>>>>>> 6b909477bca... the little construction pr (#9002) - ////////////////////////////// // Frame Object (Structure) ////////////////////////////// From 6c136a427e92ab98e7714812874d3f0af010d2b3 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Fri, 7 Jul 2023 16:52:55 +1000 Subject: [PATCH 4/7] Update tile_types.dm --- .../objects/items/stacks/tiles/tile_types.dm | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 5af1e32ea1..28ff940097 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -261,36 +261,24 @@ name = "steel floor tile" singular_name = "steel floor tile" icon_state = "tile_steel" -<<<<<<< HEAD matter = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT / 4) -======= - matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4) welds_into = /obj/item/stack/material/plasteel ->>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/steel name = "steel floor tile" singular_name = "steel floor tile" icon_state = "tile_steel" -<<<<<<< HEAD matter = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT / 4) -======= - matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4) welds_into = /obj/item/stack/material/plasteel ->>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/white name = "white floor tile" singular_name = "white floor tile" icon_state = "tile_white" -<<<<<<< HEAD matter = list(MAT_PLASTIC = SHEET_MATERIAL_AMOUNT / 4) -======= - matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4) welds_into = /obj/item/stack/material/plastic ->>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/yellow @@ -304,24 +292,16 @@ name = "dark floor tile" singular_name = "dark floor tile" icon_state = "tile_steel" -<<<<<<< HEAD matter = list(MAT_PLASTEEL = SHEET_MATERIAL_AMOUNT / 4) -======= - matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4) welds_into = /obj/item/stack/material/plasteel ->>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/freezer name = "freezer floor tile" singular_name = "freezer floor tile" icon_state = "tile_freezer" -<<<<<<< HEAD matter = list(MAT_PLASTIC = SHEET_MATERIAL_AMOUNT / 4) -======= - matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4) welds_into = /obj/item/stack/material/plastic ->>>>>>> 6b909477bca... the little construction pr (#9002) no_variants = FALSE /obj/item/stack/tile/floor/cyborg @@ -389,9 +369,5 @@ uses_charge = 1 charge_costs = list(250) stacktype = /obj/item/stack/tile/roofing -<<<<<<< HEAD - build_type = /obj/item/stack/tile/roofing -======= build_type = /obj/item/stack/tile/roofing can_weld = FALSE ->>>>>>> 6b909477bca... the little construction pr (#9002) From b5ba32b75e819a830a38ed516b2ed1de27e654c1 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Fri, 7 Jul 2023 17:03:12 +1000 Subject: [PATCH 5/7] Update window.dm --- code/game/objects/structures/window.dm | 812 ++----------------------- 1 file changed, 55 insertions(+), 757 deletions(-) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 04d8b44d99..3c91dd3374 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -1,714 +1,15 @@ -<<<<<<< HEAD -/obj/structure/window - name = "window" - desc = "A window." - icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons - density = TRUE - can_atmos_pass = ATMOS_PASS_PROC - w_class = ITEMSIZE_NORMAL - - layer = WINDOW_LAYER - pressure_resistance = 4*ONE_ATMOSPHERE - anchored = TRUE - flags = ON_BORDER - var/maxhealth = 14.0 - var/maximal_heat = T0C + 100 // Maximal heat before this window begins taking damage from fire - var/damage_per_fire_tick = 2.0 // Amount of damage per fire tick. Regular windows are not fireproof so they might as well break quickly. - var/health - var/force_threshold = 0 - var/ini_dir = null - var/state = 2 - var/reinf = 0 - var/basestate - var/shardtype = /obj/item/weapon/material/shard - var/glasstype = null // Set this in subtypes. Null is assumed strange or otherwise impossible to dismantle, such as for shuttle glass. - var/silicate = 0 // number of units of silicate - var/fulltile = FALSE // Set to true on full-tile variants. - -/obj/structure/window/examine(mob/user) - . = ..() - - if(health == maxhealth) - . += "It looks fully intact." - else - var/perc = health / maxhealth - if(perc > 0.75) - . += "It has a few cracks." - else if(perc > 0.5) - . += "It looks slightly damaged." - else if(perc > 0.25) - . += "It looks moderately damaged." - else - . += "It looks heavily damaged." - if(silicate) - if (silicate < 30) - . += "It has a thin layer of silicate." - else if (silicate < 70) - . += "It is covered in silicate." - else - . += "There is a thick layer of silicate covering it." - -/obj/structure/window/examine_icon() - return icon(icon=initial(icon),icon_state=initial(icon_state)) - -/obj/structure/window/take_damage(var/damage = 0, var/sound_effect = 1) - var/initialhealth = health - - if(silicate) - damage = damage * (1 - silicate / 200) - - health = max(0, health - damage) - - if(health <= 0) - shatter() - else - if(sound_effect) - playsound(src, 'sound/effects/Glasshit.ogg', 100, 1) - if(health < maxhealth / 4 && initialhealth >= maxhealth / 4) - visible_message("[src] looks like it's about to shatter!" ) - update_icon() - else if(health < maxhealth / 2 && initialhealth >= maxhealth / 2) - visible_message("[src] looks seriously damaged!" ) - update_icon() - else if(health < maxhealth * 3/4 && initialhealth >= maxhealth * 3/4) - visible_message("Cracks begin to appear in [src]!" ) - update_icon() - return - -/obj/structure/window/proc/apply_silicate(var/amount) - if(health < maxhealth) // Mend the damage - health = min(health + amount * 3, maxhealth) - if(health == maxhealth) - visible_message("[src] looks fully repaired." ) - else // Reinforce - silicate = min(silicate + amount, 100) - updateSilicate() - -/obj/structure/window/proc/updateSilicate() - cut_overlays() - update_icon() - - var/image/img = image(src) - img.color = "#ffffff" - img.alpha = silicate * 255 / 100 - add_overlay(img) - -/obj/structure/window/proc/shatter(var/display_message = 1) - playsound(src, "shatter", 70, 1) - if(display_message) - visible_message("[src] shatters!") - new shardtype(loc) - if(reinf) - new /obj/item/stack/rods(loc) - if(is_fulltile()) - new shardtype(loc) //todo pooling? - if(reinf) - new /obj/item/stack/rods(loc) - qdel(src) - return - - -/obj/structure/window/bullet_act(var/obj/item/projectile/Proj) - - var/proj_damage = Proj.get_structure_damage() - if(!proj_damage) return - - ..() - take_damage(proj_damage) - return - - -/obj/structure/window/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - shatter(0) - return - if(3.0) - if(prob(50)) - shatter(0) - return - -/obj/structure/window/blob_act() - take_damage(50) - -/obj/structure/window/CanPass(atom/movable/mover, turf/target) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return TRUE - if(is_fulltile()) - return FALSE //full tile window, you can't move into it! - if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir - return !density - else - return TRUE - -/obj/structure/window/Uncross(atom/movable/mover, turf/target) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return TRUE - if(get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir - return !density - else - return TRUE - -/obj/structure/window/CanZASPass(turf/T, is_zone) - if(is_fulltile() || get_dir(T, loc) == turn(dir, 180)) // Make sure we're handling the border correctly. - return !anchored // If it's anchored, it'll block air. - return TRUE // Don't stop airflow from the other sides. - -/obj/structure/window/hitby(AM as mob|obj) - ..() - visible_message("[src] was hit by [AM].") - var/tforce = 0 - if(ismob(AM)) - tforce = 40 - else if(isobj(AM)) - var/obj/item/I = AM - tforce = I.throwforce - if(reinf) tforce *= 0.25 - if(health - tforce <= 7 && !reinf) - anchored = FALSE - update_verbs() - update_nearby_icons() - step(src, get_dir(AM, src)) - take_damage(tforce) - -/obj/structure/window/attack_tk(mob/user as mob) - user.visible_message("Something knocks on [src].") - playsound(src, 'sound/effects/Glasshit.ogg', 50, 1) - -/obj/structure/window/attack_hand(mob/user as mob) - user.setClickCooldown(user.get_attack_speed()) - if(HULK in user.mutations) - user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) - user.visible_message("[user] smashes through [src]!") - user.do_attack_animation(src) - shatter() - - else if (usr.a_intent == I_HURT) - - if (istype(usr,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = usr - if(H.species.can_shred(H)) - attack_generic(H,25) - return - - playsound(src, 'sound/effects/glassknock.ogg', 80, 1) - user.do_attack_animation(src) - usr.visible_message("\The [usr] bangs against \the [src]!", - "You bang against \the [src]!", - "You hear a banging sound.") - else - playsound(src, 'sound/effects/glassknock.ogg', 80, 1) - usr.visible_message("[usr.name] knocks on the [src.name].", - "You knock on the [src.name].", - "You hear a knocking sound.") - return - -/obj/structure/window/attack_generic(var/mob/user, var/damage) - user.setClickCooldown(user.get_attack_speed()) - if(!damage) - return - if(damage >= STRUCTURE_MIN_DAMAGE_THRESHOLD) - visible_message("[user] smashes into [src]!") - if(reinf) - damage = damage / 2 - take_damage(damage) - else - visible_message("\The [user] bonks \the [src] harmlessly.") - user.do_attack_animation(src) - return 1 - -/obj/structure/window/attackby(obj/item/W as obj, mob/user as mob) - if(!istype(W)) return//I really wish I did not need this - - // Fixing. - if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP) - var/obj/item/weapon/weldingtool/WT = W - if(health < maxhealth) - if(WT.remove_fuel(1 ,user)) - to_chat(user, "You begin repairing [src]...") - playsound(src, WT.usesound, 50, 1) - if(do_after(user, 40 * WT.toolspeed, target = src)) - health = maxhealth - // playsound(src, 'sound/items/Welder.ogg', 50, 1) - update_icon() - to_chat(user, "You repair [src].") - else - to_chat(user, "[src] is already in good condition!") - return - - // Slamming. - if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2) - var/obj/item/weapon/grab/G = W - if(istype(G.affecting,/mob/living)) - var/mob/living/M = G.affecting - var/state = G.state - qdel(W) //gotta delete it here because if window breaks, it won't get deleted - switch (state) - if(1) - M.visible_message("[user] slams [M] against \the [src]!") - M.apply_damage(7) - hit(10) - if(2) - M.visible_message("[user] bashes [M] against \the [src]!") - if (prob(50)) - M.Weaken(1) - M.apply_damage(10) - hit(25) - if(3) - M.visible_message("[user] crushes [M] against \the [src]!") - M.Weaken(5) - M.apply_damage(20) - hit(50) - return - - if(W.flags & NOBLUDGEON) return - - if(W.is_screwdriver()) - if(reinf && state >= 1) - state = 3 - state - update_nearby_icons() - playsound(src, W.usesound, 75, 1) - to_chat(user, "You have [state == 1 ? "un" : ""]fastened the window [state ? "from" : "to"] the frame.") - else if(reinf && state == 0) - anchored = !anchored - update_nearby_tiles(need_rebuild=1) - update_nearby_icons() - update_verbs() - playsound(src, W.usesound, 75, 1) - to_chat(user, "You have [anchored ? "" : "un"]fastened the frame [anchored ? "to" : "from"] the floor.") - else if(!reinf) - anchored = !anchored - update_nearby_tiles(need_rebuild=1) - update_nearby_icons() - update_verbs() - playsound(src, W.usesound, 75, 1) - to_chat(user, "You have [anchored ? "" : "un"]fastened the window [anchored ? "to" : "from"] the floor.") - else if(W.is_crowbar() && reinf && state <= 1) - state = 1 - state - playsound(src, W.usesound, 75, 1) - to_chat(user, "You have pried the window [state ? "into" : "out of"] the frame.") - else if(W.is_wrench() && !anchored && (!state || !reinf)) - if(!glasstype) - to_chat(user, "You're not sure how to dismantle \the [src] properly.") - else - playsound(src, W.usesound, 75, 1) - visible_message("[user] dismantles \the [src].") - var/obj/item/stack/material/mats = new glasstype(loc) - if(is_fulltile()) - mats.set_amount(4) - qdel(src) - else if(istype(W, /obj/item/stack/cable_coil) && reinf && state == 0 && !istype(src, /obj/structure/window/reinforced/polarized)) - var/obj/item/stack/cable_coil/C = W - if (C.use(1)) - playsound(src, 'sound/effects/sparks1.ogg', 75, 1) - user.visible_message( \ - "\The [user] begins to wire \the [src] for electrochromic tinting.", \ - "You begin to wire \the [src] for electrochromic tinting.", \ - "You hear sparks.") - if(do_after(user, 20 * C.toolspeed, src) && state == 0) - playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) - var/obj/structure/window/reinforced/polarized/P = new(loc, dir) - if(is_fulltile()) - P.fulltile = TRUE - P.icon_state = "fwindow" - P.maxhealth = maxhealth - P.health = health - P.state = state - P.anchored = anchored - qdel(src) - else if(istype(W,/obj/item/frame) && anchored) - var/obj/item/frame/F = W - F.try_build(src, user) - else - user.setClickCooldown(user.get_attack_speed(W)) - if(W.damtype == BRUTE || W.damtype == BURN) - user.do_attack_animation(src) - hit(W.force) - if(health <= 7) - anchored = FALSE - update_nearby_icons() - step(src, get_dir(user, src)) - else - playsound(src, 'sound/effects/Glasshit.ogg', 75, 1) - ..() - return - -/obj/structure/window/proc/hit(var/damage, var/sound_effect = 1) - if(damage < force_threshold || force_threshold < 0) - return - if(reinf) damage *= 0.5 - take_damage(damage) - return - - -/obj/structure/window/verb/rotate_counterclockwise() - set name = "Rotate Window Counterclockwise" - set category = "Object" - set src in oview(1) - - if(usr.incapacitated()) - return 0 - - if(is_fulltile()) - return 0 - - if(anchored) - to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") - return 0 - - update_nearby_tiles(need_rebuild=1) //Compel updates before - src.set_dir(turn(src.dir, 90)) - updateSilicate() - update_nearby_tiles(need_rebuild=1) - return - - -/obj/structure/window/verb/rotate_clockwise() - set name = "Rotate Window Clockwise" - set category = "Object" - set src in oview(1) - - if(usr.incapacitated()) - return 0 - - if(is_fulltile()) - return 0 - - if(anchored) - to_chat(usr, "It is fastened to the floor therefore you can't rotate it!") - return 0 - - update_nearby_tiles(need_rebuild=1) //Compel updates before - src.set_dir(turn(src.dir, 270)) - updateSilicate() - update_nearby_tiles(need_rebuild=1) - return - -/obj/structure/window/New(Loc, start_dir=null, constructed=0) - ..() - - if (start_dir) - set_dir(start_dir) - - //player-constructed windows - if (constructed) - anchored = FALSE - state = 0 - update_verbs() - - health = maxhealth - - ini_dir = dir - - update_nearby_tiles(need_rebuild=1) - update_nearby_icons() - - -/obj/structure/window/Destroy() - density = FALSE - update_nearby_tiles() - var/turf/location = loc - . = ..() - for(var/obj/structure/window/W in orange(location, 1)) - W.update_icon() - -/obj/structure/window/Move() - var/ini_dir = dir - update_nearby_tiles(need_rebuild=1) - . = ..() - set_dir(ini_dir) - update_nearby_tiles(need_rebuild=1) - -//checks if this window is full-tile one -/obj/structure/window/proc/is_fulltile() - return fulltile - -/obj/structure/window/is_between_turfs(var/turf/origin, var/turf/target) - if(is_fulltile()) - return TRUE - return ..() - -//This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc! -/obj/structure/window/proc/update_nearby_icons() - update_icon() - for(var/obj/structure/window/W in orange(src, 1)) - W.update_icon() - -//Updates the availabiliy of the rotation verbs -/obj/structure/window/proc/update_verbs() - if(anchored || is_fulltile()) - verbs -= /obj/structure/window/verb/rotate_counterclockwise - verbs -= /obj/structure/window/verb/rotate_clockwise - else if(!is_fulltile()) - verbs += /obj/structure/window/verb/rotate_counterclockwise - verbs += /obj/structure/window/verb/rotate_clockwise - -//merges adjacent full-tile windows into one (blatant ripoff from game/smoothwall.dm) -/obj/structure/window/update_icon() - //A little cludge here, since I don't know how it will work with slim windows. Most likely VERY wrong. - //this way it will only update full-tile ones - cut_overlays() - if(!is_fulltile()) - // Rotate the sprite somewhat so non-fulltiled windows can be seen as needing repair. - var/full_tilt_degrees = 15 - var/tilt_to_apply = abs((health / maxhealth) - 1) - if(tilt_to_apply && prob(50)) - tilt_to_apply = -tilt_to_apply - adjust_rotation(LERP(0, full_tilt_degrees, tilt_to_apply)) - - icon_state = "[basestate]" - return - else - flags = 0 // Removes ON_BORDER and OPPOSITE_OPACITY - var/list/dirs = list() - if(anchored) - for(var/obj/structure/window/W in orange(src,1)) - if(W.anchored && W.density && W.glasstype == src.glasstype && W.is_fulltile()) //Only counts anchored, not-destroyed fill-tile windows. - dirs += get_dir(src, W) - - var/list/connections = dirs_to_corner_states(dirs) - - icon_state = "" - for(var/i = 1 to 4) - var/image/I = image(icon, "[basestate][connections[i]]", dir = 1<<(i-1)) - add_overlay(I) - - // Damage overlays. - var/ratio = health / maxhealth - ratio = CEILING(ratio * 4, 1) * 25 - - if(ratio > 75) - return - var/image/I = image(icon, "damage[ratio]", layer = layer + 0.1) - add_overlay(I) - - return - -/obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > maximal_heat) - hit(damage_per_fire_tick, 0) - ..() - - - -/obj/structure/window/basic - desc = "It looks thin and flimsy. A few knocks with... almost anything, really should shatter it." - icon_state = "window" - basestate = "window" - glasstype = /obj/item/stack/material/glass - maximal_heat = T0C + 100 - damage_per_fire_tick = 2.0 - maxhealth = 12.0 - force_threshold = 3 - -/obj/structure/window/basic/full - icon_state = "window-full" - maxhealth = 24 - fulltile = TRUE - flags = 0 - -/obj/structure/window/phoronbasic - name = "phoron window" - desc = "A borosilicate alloy window. It seems to be quite strong." - basestate = "phoronwindow" - icon_state = "phoronwindow" - shardtype = /obj/item/weapon/material/shard/phoron - glasstype = /obj/item/stack/material/glass/phoronglass - maximal_heat = T0C + 2000 - damage_per_fire_tick = 1.0 - maxhealth = 40.0 - force_threshold = 5 - -/obj/structure/window/phoronbasic/full - icon_state = "phoronwindow-full" - maxhealth = 80 - fulltile = TRUE - flags = 0 - -/obj/structure/window/phoronreinforced - name = "reinforced borosilicate window" - desc = "A borosilicate alloy window, with rods supporting it. It seems to be very strong." - basestate = "phoronrwindow" - icon_state = "phoronrwindow" - shardtype = /obj/item/weapon/material/shard/phoron - glasstype = /obj/item/stack/material/glass/phoronrglass - reinf = 1 - maximal_heat = T0C + 4000 - damage_per_fire_tick = 1.0 // This should last for 80 fire ticks if the window is not damaged at all. The idea is that borosilicate windows have something like ablative layer that protects them for a while. - maxhealth = 80.0 - force_threshold = 10 - -/obj/structure/window/phoronreinforced/full - icon_state = "phoronrwindow-full" - maxhealth = 160 - fulltile = TRUE - flags = 0 - -/obj/structure/window/reinforced - name = "reinforced window" - desc = "It looks rather strong. Might take a few good hits to shatter it." - icon_state = "rwindow" - basestate = "rwindow" - maxhealth = 40.0 - reinf = 1 - maximal_heat = T0C + 750 - damage_per_fire_tick = 2.0 - glasstype = /obj/item/stack/material/glass/reinforced - force_threshold = 6 - -/obj/structure/window/reinforced/full - icon_state = "rwindow-full" - maxhealth = 80 - fulltile = TRUE - flags = 0 - -/obj/structure/window/reinforced/tinted - name = "tinted window" - desc = "It looks rather strong and opaque. Might take a few good hits to shatter it." - icon_state = "twindow" - basestate = "twindow" - opacity = 1 - -/obj/structure/window/reinforced/tinted/frosted - name = "frosted window" - desc = "It looks rather strong and frosted over. Looks like it might take a few less hits then a normal reinforced window." - icon_state = "fwindow" - basestate = "fwindow" - maxhealth = 30 - force_threshold = 5 - -/obj/structure/window/shuttle - name = "shuttle window" - desc = "It looks rather strong. Might take a few good hits to shatter it." - icon = 'icons/obj/podwindows.dmi' - icon_state = "window" - basestate = "window" - maxhealth = 40 - reinf = 1 - basestate = "w" - dir = 5 - force_threshold = 7 - -/obj/structure/window/reinforced/polarized - name = "electrochromic window" - desc = "Adjusts its tint with voltage. Might take a few good hits to shatter it." - var/id - -/obj/structure/window/reinforced/polarized/full - icon_state = "rwindow-full" - maxhealth = 80 - fulltile = TRUE - flags = 0 - -/obj/structure/window/reinforced/polarized/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/device/multitool) && !anchored) // Only allow programming if unanchored! - var/obj/item/device/multitool/MT = W - // First check if they have a windowtint button buffered - if(istype(MT.connectable, /obj/machinery/button/windowtint)) - var/obj/machinery/button/windowtint/buffered_button = MT.connectable - src.id = buffered_button.id - to_chat(user, "\The [src] is linked to \the [buffered_button].") - return TRUE - // Otherwise fall back to asking them - var/t = sanitizeSafe(tgui_input_text(user, "Enter the ID for the window.", src.name, null, MAX_NAME_LEN), MAX_NAME_LEN) - if (!t && user.get_active_hand() != W && in_range(src, user)) - src.id = t - to_chat(user, "The new ID of \the [src] is [id]") - return TRUE - . = ..() - -/obj/structure/window/reinforced/polarized/proc/toggle() - if(opacity) - animate(src, color="#FFFFFF", time=5) - set_opacity(0) - else - animate(src, color="#222222", time=5) - set_opacity(1) - var/turf/T = get_turf(src) - T.recalculate_directional_opacity() - -/obj/machinery/button/windowtint - name = "window tint control" - icon = 'icons/obj/stationobjs_vr.dmi' // VOREStation Edit - New icons - icon_state = "light0" - desc = "A remote control switch for polarized windows." - var/range = 7 - -/obj/machinery/button/windowtint/attack_hand(mob/user as mob) - if(..()) - return 1 - - toggle_tint() - -/obj/machinery/button/windowtint/proc/toggle_tint() - use_power(5) - - active = !active - update_icon() - - for(var/obj/structure/window/reinforced/polarized/W in range(src,range)) - if (W.id == src.id || !W.id) - spawn(0) - W.toggle() - return - -/obj/machinery/button/windowtint/power_change() - ..() - if(active && !powered(power_channel)) - toggle_tint() - -/obj/machinery/button/windowtint/update_icon() - icon_state = "light[active]" - -/obj/machinery/button/windowtint/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/MT = W - if(!id) - // If no ID is set yet (newly built button?) let them select an ID for first-time use! - var/t = sanitizeSafe(tgui_input_text(user, "Enter an ID for \the [src].", src.name, null, MAX_NAME_LEN), MAX_NAME_LEN) - if (t && user.get_active_hand() != W && in_range(src, user)) - src.id = t - to_chat(user, "The new ID of \the [src] is [id]") - if(id) - // It already has an ID (or they just set one), buffer it for copying to windows. - to_chat(user, "You store \the [src] in \the [MT]'s buffer!") - MT.connectable = src - MT.update_icon() - return TRUE - . = ..() - -/obj/structure/window/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) - switch(passed_mode) - if(RCD_DECONSTRUCT) - return list( - RCD_VALUE_MODE = RCD_DECONSTRUCT, - RCD_VALUE_DELAY = 5 SECONDS, - RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 5 - ) - -/obj/structure/window/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) - switch(passed_mode) - if(RCD_DECONSTRUCT) - to_chat(user, span("notice", "You deconstruct \the [src].")) - qdel(src) - return TRUE - return FALSE -======= /obj/structure/window name = "window" desc = "A window." - icon = 'icons/obj/structures.dmi' - density = 1 + icon = 'icons/obj/structures_vr.dmi' // VOREStation Edit - New icons + density = TRUE can_atmos_pass = ATMOS_PASS_PROC w_class = ITEMSIZE_NORMAL layer = WINDOW_LAYER pressure_resistance = 4*ONE_ATMOSPHERE - anchored = 1.0 - atom_flags = ATOM_HAS_TRANSITION_PRIORITY + anchored = TRUE + flags = ON_BORDER var/maxhealth = 14.0 var/maximal_heat = T0C + 100 // Maximal heat before this window begins taking damage from fire var/damage_per_fire_tick = 2.0 // Amount of damage per fire tick. Regular windows are not fireproof so they might as well break quickly. @@ -718,7 +19,7 @@ var/state = 2 var/reinf = 0 var/basestate - var/shardtype = /obj/item/material/shard + var/shardtype = /obj/item/weapon/material/shard var/glasstype = null // Set this in subtypes. Null is assumed strange or otherwise impossible to dismantle, such as for shuttle glass. var/silicate = 0 // number of units of silicate var/fulltile = FALSE // Set to true on full-tile variants. @@ -837,7 +138,15 @@ return TRUE if(is_fulltile()) return FALSE //full tile window, you can't move into it! - if((get_dir(loc, target) & dir) || (get_dir(mover, target) == turn(dir, 180))) + if(get_dir(mover, target) == reverse_dir[dir]) // From elsewhere to here, can't move against our dir + return !density + else + return TRUE + +/obj/structure/window/Uncross(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return TRUE + if(get_dir(mover, target) == dir) // From here to elsewhere, can't move in our dir return !density else return TRUE @@ -847,13 +156,6 @@ return !anchored // If it's anchored, it'll block air. return TRUE // Don't stop airflow from the other sides. -/obj/structure/window/CheckExit(atom/movable/O as mob|obj, target as turf) - if(istype(O) && O.checkpass(PASSGLASS)) - return 1 - if(get_dir(O.loc, target) == dir) - return 0 - return 1 - /obj/structure/window/hitby(AM as mob|obj) ..() visible_message("[src] was hit by [AM].") @@ -865,7 +167,7 @@ tforce = I.throwforce if(reinf) tforce *= 0.25 if(health - tforce <= 7 && !reinf) - anchored = 0 + anchored = FALSE update_verbs() update_nearby_icons() step(src, get_dir(AM, src)) @@ -913,7 +215,7 @@ damage = damage / 2 take_damage(damage) else - visible_message("\The [user] bonks \the [src] harmlessly.") + visible_message("\The [user] bonks \the [src] harmlessly.") user.do_attack_animation(src) return 1 @@ -921,8 +223,8 @@ if(!istype(W)) return//I really wish I did not need this // Fixing. - if(istype(W, /obj/item/weldingtool) && user.a_intent == I_HELP) - var/obj/item/weldingtool/WT = W + if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == I_HELP) + var/obj/item/weapon/weldingtool/WT = W if(health < maxhealth) if(WT.remove_fuel(1 ,user)) to_chat(user, "You begin repairing [src]...") @@ -937,8 +239,8 @@ return // Slamming. - if (istype(W, /obj/item/grab) && get_dist(src,user)<2) - var/obj/item/grab/G = W + if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2) + var/obj/item/weapon/grab/G = W if(istype(G.affecting,/mob/living)) var/mob/living/M = G.affecting var/state = G.state @@ -961,7 +263,7 @@ hit(50) return - if(W.item_flags & NOBLUDGEON) return + if(W.flags & NOBLUDGEON) return if(W.is_screwdriver()) if(reinf && state >= 1) @@ -971,12 +273,14 @@ to_chat(user, "You have [state == 1 ? "un" : ""]fastened the window [state ? "from" : "to"] the frame.") else if(reinf && state == 0) anchored = !anchored + update_nearby_tiles(need_rebuild=1) update_nearby_icons() update_verbs() playsound(src, W.usesound, 75, 1) to_chat(user, "You have [anchored ? "" : "un"]fastened the frame [anchored ? "to" : "from"] the floor.") else if(!reinf) anchored = !anchored + update_nearby_tiles(need_rebuild=1) update_nearby_icons() update_verbs() playsound(src, W.usesound, 75, 1) @@ -993,14 +297,14 @@ visible_message("[user] dismantles \the [src].") var/obj/item/stack/material/mats = new glasstype(loc) if(is_fulltile()) - mats.amount = 4 + mats.set_amount(4) qdel(src) else if(istype(W, /obj/item/stack/cable_coil) && reinf && state == 0 && !istype(src, /obj/structure/window/reinforced/polarized)) var/obj/item/stack/cable_coil/C = W if (C.use(1)) playsound(src, 'sound/effects/sparks1.ogg', 75, 1) user.visible_message( \ - "\The [user] begins to wire \the [src] for electrochromic tinting.", \ + "\The [user] begins to wire \the [src] for electrochromic tinting.", \ "You begin to wire \the [src] for electrochromic tinting.", \ "You hear sparks.") if(do_after(user, 20 * C.toolspeed, src) && state == 0) @@ -1023,7 +327,7 @@ user.do_attack_animation(src) hit(W.force) if(health <= 7) - anchored = 0 + anchored = FALSE update_nearby_icons() step(src, get_dir(user, src)) else @@ -1082,15 +386,15 @@ update_nearby_tiles(need_rebuild=1) return -/obj/structure/window/Initialize(var/ml, start_dir=null, constructed=0) - . = ..() +/obj/structure/window/New(Loc, start_dir=null, constructed=0) + ..() if (start_dir) set_dir(start_dir) //player-constructed windows if (constructed) - anchored = 0 + anchored = FALSE state = 0 update_verbs() @@ -1101,39 +405,28 @@ update_nearby_tiles(need_rebuild=1) update_nearby_icons() - for(var/obj/structure/table/T in view(src, 1)) - T.update_connections() - T.update_icon() /obj/structure/window/Destroy() - density = 0 + density = FALSE update_nearby_tiles() var/turf/location = loc . = ..() for(var/obj/structure/window/W in orange(location, 1)) W.update_icon() - for(var/obj/structure/table/T in view(location, 1)) - T.update_connections() - T.update_icon() /obj/structure/window/Move() var/ini_dir = dir update_nearby_tiles(need_rebuild=1) - var/oldloc = loc . = ..() set_dir(ini_dir) update_nearby_tiles(need_rebuild=1) - if(loc != oldloc) - for(var/obj/structure/table/T in view(oldloc, 1) | view(loc, 1)) - T.update_connections() - T.update_icon() //checks if this window is full-tile one /obj/structure/window/proc/is_fulltile() return fulltile /obj/structure/window/is_between_turfs(var/turf/origin, var/turf/target) - if(fulltile) + if(is_fulltile()) return TRUE return ..() @@ -1167,6 +460,8 @@ icon_state = "[basestate]" return + else + flags = 0 // Removes ON_BORDER and OPPOSITE_OPACITY var/list/dirs = list() if(anchored) for(var/obj/structure/window/W in orange(src,1)) @@ -1176,11 +471,9 @@ var/list/connections = dirs_to_corner_states(dirs) icon_state = "" - var/list/add = list() for(var/i = 1 to 4) - var/image/image = image(icon, "[basestate][connections[i]]", dir = 1<<(i-1)) - add += image - add_overlay(add) + var/image/I = image(icon, "[basestate][connections[i]]", dir = 1<<(i-1)) + add_overlay(I) // Damage overlays. var/ratio = health / maxhealth @@ -1188,7 +481,8 @@ if(ratio > 75) return - add_overlay(image(icon, "damage[ratio]", layer = layer + 0.1)) + var/image/I = image(icon, "damage[ratio]", layer = layer + 0.1) + add_overlay(I) return @@ -1213,13 +507,14 @@ icon_state = "window-full" maxhealth = 24 fulltile = TRUE + flags = 0 /obj/structure/window/phoronbasic name = "phoron window" desc = "A borosilicate alloy window. It seems to be quite strong." basestate = "phoronwindow" icon_state = "phoronwindow" - shardtype = /obj/item/material/shard/phoron + shardtype = /obj/item/weapon/material/shard/phoron glasstype = /obj/item/stack/material/glass/phoronglass maximal_heat = T0C + 2000 damage_per_fire_tick = 1.0 @@ -1230,13 +525,14 @@ icon_state = "phoronwindow-full" maxhealth = 80 fulltile = TRUE + flags = 0 /obj/structure/window/phoronreinforced name = "reinforced borosilicate window" desc = "A borosilicate alloy window, with rods supporting it. It seems to be very strong." basestate = "phoronrwindow" icon_state = "phoronrwindow" - shardtype = /obj/item/material/shard/phoron + shardtype = /obj/item/weapon/material/shard/phoron glasstype = /obj/item/stack/material/glass/phoronrglass reinf = 1 maximal_heat = T0C + 4000 @@ -1248,6 +544,7 @@ icon_state = "phoronrwindow-full" maxhealth = 160 fulltile = TRUE + flags = 0 /obj/structure/window/reinforced name = "reinforced window" @@ -1265,6 +562,7 @@ icon_state = "rwindow-full" maxhealth = 80 fulltile = TRUE + flags = 0 /obj/structure/window/reinforced/tinted name = "tinted window" @@ -1302,10 +600,11 @@ icon_state = "rwindow-full" maxhealth = 80 fulltile = TRUE + flags = 0 /obj/structure/window/reinforced/polarized/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/multitool) && !anchored) // Only allow programming if unanchored! - var/obj/item/multitool/MT = W + if(istype(W, /obj/item/device/multitool) && !anchored) // Only allow programming if unanchored! + var/obj/item/device/multitool/MT = W // First check if they have a windowtint button buffered if(istype(MT.connectable, /obj/machinery/button/windowtint)) var/obj/machinery/button/windowtint/buffered_button = MT.connectable @@ -1329,12 +628,12 @@ else animate(src, color="#222222", time=5) set_opacity(1) - - + var/turf/T = get_turf(src) + T.recalculate_directional_opacity() /obj/machinery/button/windowtint name = "window tint control" - icon = 'icons/obj/power.dmi' + icon = 'icons/obj/stationobjs_vr.dmi' // VOREStation Edit - New icons icon_state = "light0" desc = "A remote control switch for polarized windows." var/range = 7 @@ -1371,12 +670,12 @@ return else if(alarm_deconstruction_wirecutters(user, W)) return - else if(istype(W, /obj/item/multitool)) - var/obj/item/multitool/MT = W + else if(istype(W, /obj/item/device/multitool)) + var/obj/item/device/multitool/MT = W if(!id) // If no ID is set yet (newly built button?) let them select an ID for first-time use! - var/t = sanitizeSafe(input(user, "Enter an ID for \the [src].", src.name, null), MAX_NAME_LEN) - if(t && in_range(src, user)) + var/t = sanitizeSafe(tgui_input_text(user, "Enter an ID for \the [src].", src.name, null, MAX_NAME_LEN), MAX_NAME_LEN) + if (t && in_range(src, user)) src.id = t to_chat(user, "The new ID of \the [src] is '[id]'. To reset this, rebuild the control.") if(id) @@ -1387,7 +686,7 @@ return TRUE . = ..() -/obj/structure/window/rcd_values(mob/living/user, obj/item/rcd/the_rcd, passed_mode) +/obj/structure/window/rcd_values(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_DECONSTRUCT) return list( @@ -1396,11 +695,10 @@ RCD_VALUE_COST = RCD_SHEETS_PER_MATTER_UNIT * 5 ) -/obj/structure/window/rcd_act(mob/living/user, obj/item/rcd/the_rcd, passed_mode) +/obj/structure/window/rcd_act(mob/living/user, obj/item/weapon/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_DECONSTRUCT) to_chat(user, span("notice", "You deconstruct \the [src].")) qdel(src) return TRUE return FALSE ->>>>>>> 6b909477bca... the little construction pr (#9002) From 3261af68c78ae1d801c9f78c85af139631ac0a4b Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Fri, 7 Jul 2023 17:04:07 +1000 Subject: [PATCH 6/7] Delete polaris.dme --- polaris.dme | 3357 --------------------------------------------------- 1 file changed, 3357 deletions(-) delete mode 100644 polaris.dme diff --git a/polaris.dme b/polaris.dme deleted file mode 100644 index fdc64f9104..0000000000 --- a/polaris.dme +++ /dev/null @@ -1,3357 +0,0 @@ -// DM Environment file for baystation12.dme. -// All manual changes should be made outside the BEGIN_ and END_ blocks. -// New source code should be placed in .dm files: choose File/New --> Code File. -// BEGIN_INTERNALS -// END_INTERNALS -// BEGIN_FILE_DIR -#define FILE_DIR . -// END_FILE_DIR -// BEGIN_PREFERENCES -#define DEBUG -// END_PREFERENCES -// BEGIN_INCLUDE -#include "code\__spaceman_dmm.dm" -#include "code\_macros.dm" -#include "code\_map_tests.dm" -#include "code\_unit_tests.dm" -#include "code\global.dm" -#include "code\global_init.dm" -#include "code\hub.dm" -#include "code\names.dm" -#include "code\stylesheet.dm" -#include "code\world.dm" -#include "code\__datastructures\globals.dm" -#include "code\__defines\_compile_options.dm" -#include "code\__defines\_lists.dm" -#include "code\__defines\_planes+layers.dm" -#include "code\__defines\_protect.dm" -#include "code\__defines\_tick.dm" -#include "code\__defines\admin.dm" -#include "code\__defines\ai.dm" -#include "code\__defines\appearance.dm" -#include "code\__defines\atc.dm" -#include "code\__defines\atmos.dm" -#include "code\__defines\callbacks.dm" -#include "code\__defines\chemistry.dm" -#include "code\__defines\color.dm" -#include "code\__defines\construction.dm" -#include "code\__defines\crafting.dm" -#include "code\__defines\damage_organs.dm" -#include "code\__defines\dna.dm" -#include "code\__defines\events.dm" -#include "code\__defines\flags.dm" -#include "code\__defines\gamemode.dm" -#include "code\__defines\holomap.dm" -#include "code\__defines\hoses.dm" -#include "code\__defines\input.dm" -#include "code\__defines\integrated_circuits.dm" -#include "code\__defines\inventory_sizes.dm" -#include "code\__defines\is_helpers.dm" -#include "code\__defines\items_clothing.dm" -#include "code\__defines\lighting.dm" -#include "code\__defines\machinery.dm" -#include "code\__defines\map.dm" -#include "code\__defines\materials.dm" -#include "code\__defines\math.dm" -#include "code\__defines\math_physics.dm" -#include "code\__defines\MC.dm" -#include "code\__defines\misc.dm" -#include "code\__defines\mobs.dm" -#include "code\__defines\movement.dm" -#include "code\__defines\objects.dm" -#include "code\__defines\overmap.dm" -#include "code\__defines\pda.dm" -#include "code\__defines\planets.dm" -#include "code\__defines\preferences.dm" -#include "code\__defines\process_scheduler.dm" -#include "code\__defines\qdel.dm" -#include "code\__defines\research.dm" -#include "code\__defines\rust_g.dm" -#include "code\__defines\shuttle.dm" -#include "code\__defines\sound.dm" -#include "code\__defines\species_languages.dm" -#include "code\__defines\sqlite_defines.dm" -#include "code\__defines\subsystems.dm" -#include "code\__defines\supply.dm" -#include "code\__defines\targeting.dm" -#include "code\__defines\tgui.dm" -#include "code\__defines\tools.dm" -#include "code\__defines\turfs.dm" -#include "code\__defines\typeids.dm" -#include "code\__defines\unit_tests.dm" -#include "code\__defines\vote.dm" -#include "code\__defines\vv.dm" -#include "code\__defines\webhooks.dm" -#include "code\__defines\wires.dm" -#include "code\__defines\xenoarcheaology.dm" -#include "code\__defines\ZAS.dm" -#include "code\__defines\dcs\flags.dm" -#include "code\__defines\dcs\helpers.dm" -#include "code\__defines\dcs\signals.dm" -#include "code\_global_vars\bitfields.dm" -#include "code\_global_vars\misc.dm" -#include "code\_global_vars\mobs.dm" -#include "code\_global_vars\sensitive.dm" -#include "code\_global_vars\lists\mapping.dm" -#include "code\_global_vars\lists\misc.dm" -#include "code\_global_vars\lists\species.dm" -#include "code\_helpers\_global_objects.dm" -#include "code\_helpers\_lists.dm" -#include "code\_helpers\atmospherics.dm" -#include "code\_helpers\atom_movables.dm" -#include "code\_helpers\client.dm" -#include "code\_helpers\events.dm" -#include "code\_helpers\files.dm" -#include "code\_helpers\game.dm" -#include "code\_helpers\global_lists.dm" -#include "code\_helpers\icons.dm" -#include "code\_helpers\image.dm" -#include "code\_helpers\logging.dm" -#include "code\_helpers\matrices.dm" -#include "code\_helpers\mobs.dm" -#include "code\_helpers\names.dm" -#include "code\_helpers\sanitize_values.dm" -#include "code\_helpers\storage.dm" -#include "code\_helpers\string_lists.dm" -#include "code\_helpers\text.dm" -#include "code\_helpers\time.dm" -#include "code\_helpers\turfs.dm" -#include "code\_helpers\type2type.dm" -#include "code\_helpers\unsorted.dm" -#include "code\_helpers\view.dm" -#include "code\_helpers\visual_filters.dm" -#include "code\_helpers\sorts\__main.dm" -#include "code\_helpers\sorts\comparators.dm" -#include "code\_helpers\sorts\TimSort.dm" -#include "code\_onclick\_defines.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\rig.dm" -#include "code\_onclick\telekinesis.dm" -#include "code\_onclick\hud\_defines.dm" -#include "code\_onclick\hud\ability_screen_objects.dm" -#include "code\_onclick\hud\action.dm" -#include "code\_onclick\hud\ai.dm" -#include "code\_onclick\hud\alert.dm" -#include "code\_onclick\hud\alien_larva.dm" -#include "code\_onclick\hud\fullscreen.dm" -#include "code\_onclick\hud\ghost.dm" -#include "code\_onclick\hud\gun_mode.dm" -#include "code\_onclick\hud\hud.dm" -#include "code\_onclick\hud\human.dm" -#include "code\_onclick\hud\map_popups.dm" -#include "code\_onclick\hud\minihud.dm" -#include "code\_onclick\hud\minihud_mapper.dm" -#include "code\_onclick\hud\minihud_rigmech.dm" -#include "code\_onclick\hud\movable_screen_objects.dm" -#include "code\_onclick\hud\picture_in_picture.dm" -#include "code\_onclick\hud\radial.dm" -#include "code\_onclick\hud\radial_persistent.dm" -#include "code\_onclick\hud\robot.dm" -#include "code\_onclick\hud\screen_objects.dm" -#include "code\_onclick\hud\skybox.dm" -#include "code\_onclick\hud\spell_screen_objects.dm" -#include "code\ATMOSPHERICS\_atmos_setup.dm" -#include "code\ATMOSPHERICS\_atmospherics_helpers.dm" -#include "code\ATMOSPHERICS\atmospherics.dm" -#include "code\ATMOSPHERICS\datum_pipe_network.dm" -#include "code\ATMOSPHERICS\datum_pipeline.dm" -#include "code\ATMOSPHERICS\components\portables_connector.dm" -#include "code\ATMOSPHERICS\components\shutoff.dm" -#include "code\ATMOSPHERICS\components\tvalve.dm" -#include "code\ATMOSPHERICS\components\valve.dm" -#include "code\ATMOSPHERICS\components\binary_devices\binary_atmos_base.dm" -#include "code\ATMOSPHERICS\components\binary_devices\circulator.dm" -#include "code\ATMOSPHERICS\components\binary_devices\dp_vent_pump.dm" -#include "code\ATMOSPHERICS\components\binary_devices\passive_gate.dm" -#include "code\ATMOSPHERICS\components\binary_devices\pump.dm" -#include "code\ATMOSPHERICS\components\binary_devices\volume_pump.dm" -#include "code\ATMOSPHERICS\components\omni_devices\_omni_extras.dm" -#include "code\ATMOSPHERICS\components\omni_devices\filter.dm" -#include "code\ATMOSPHERICS\components\omni_devices\mixer.dm" -#include "code\ATMOSPHERICS\components\omni_devices\omni_base.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\filter.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\mixer.dm" -#include "code\ATMOSPHERICS\components\trinary_devices\trinary_base.dm" -#include "code\ATMOSPHERICS\components\unary\cold_sink.dm" -#include "code\ATMOSPHERICS\components\unary\heat_exchanger.dm" -#include "code\ATMOSPHERICS\components\unary\heat_source.dm" -#include "code\ATMOSPHERICS\components\unary\outlet_injector.dm" -#include "code\ATMOSPHERICS\components\unary\unary_base.dm" -#include "code\ATMOSPHERICS\components\unary\vent_pump.dm" -#include "code\ATMOSPHERICS\components\unary\vent_scrubber.dm" -#include "code\ATMOSPHERICS\pipes\cap.dm" -#include "code\ATMOSPHERICS\pipes\he_pipes.dm" -#include "code\ATMOSPHERICS\pipes\manifold.dm" -#include "code\ATMOSPHERICS\pipes\manifold4w.dm" -#include "code\ATMOSPHERICS\pipes\pipe_base.dm" -#include "code\ATMOSPHERICS\pipes\simple.dm" -#include "code\ATMOSPHERICS\pipes\tank.dm" -#include "code\ATMOSPHERICS\pipes\universal.dm" -#include "code\ATMOSPHERICS\pipes\vent.dm" -#include "code\controllers\autotransfer.dm" -#include "code\controllers\communications.dm" -#include "code\controllers\configuration.dm" -#include "code\controllers\controller.dm" -#include "code\controllers\emergency_shuttle_controller.dm" -#include "code\controllers\failsafe.dm" -#include "code\controllers\globals.dm" -#include "code\controllers\hooks-defs.dm" -#include "code\controllers\hooks.dm" -#include "code\controllers\master.dm" -#include "code\controllers\master_controller.dm" -#include "code\controllers\subsystem.dm" -#include "code\controllers\verbs.dm" -#include "code\controllers\observer_listener\atom\observer.dm" -#include "code\controllers\subsystems\ai.dm" -#include "code\controllers\subsystems\aifast.dm" -#include "code\controllers\subsystems\air.dm" -#include "code\controllers\subsystems\airflow.dm" -#include "code\controllers\subsystems\alarm.dm" -#include "code\controllers\subsystems\antag.dm" -#include "code\controllers\subsystems\assets.dm" -#include "code\controllers\subsystems\atoms.dm" -#include "code\controllers\subsystems\character_setup.dm" -#include "code\controllers\subsystems\chat.dm" -#include "code\controllers\subsystems\chemistry.dm" -#include "code\controllers\subsystems\circuits.dm" -#include "code\controllers\subsystems\dcs.dm" -#include "code\controllers\subsystems\events.dm" -#include "code\controllers\subsystems\events2.dm" -#include "code\controllers\subsystems\game_master.dm" -#include "code\controllers\subsystems\garbage.dm" -#include "code\controllers\subsystems\holomaps.dm" -#include "code\controllers\subsystems\inactivity.dm" -#include "code\controllers\subsystems\init_misc_early.dm" -#include "code\controllers\subsystems\input.dm" -#include "code\controllers\subsystems\job.dm" -#include "code\controllers\subsystems\lighting.dm" -#include "code\controllers\subsystems\machines.dm" -#include "code\controllers\subsystems\mapping.dm" -#include "code\controllers\subsystems\misc_slow.dm" -#include "code\controllers\subsystems\mobs.dm" -#include "code\controllers\subsystems\nanoui.dm" -#include "code\controllers\subsystems\nightshift.dm" -#include "code\controllers\subsystems\open_space.dm" -#include "code\controllers\subsystems\orbits.dm" -#include "code\controllers\subsystems\overlays.dm" -#include "code\controllers\subsystems\persistence.dm" -#include "code\controllers\subsystems\planets.dm" -#include "code\controllers\subsystems\radiation.dm" -#include "code\controllers\subsystems\shuttles.dm" -#include "code\controllers\subsystems\skybox.dm" -#include "code\controllers\subsystems\sqlite.dm" -#include "code\controllers\subsystems\sun.dm" -#include "code\controllers\subsystems\supply.dm" -#include "code\controllers\subsystems\tgui.dm" -#include "code\controllers\subsystems\ticker.dm" -#include "code\controllers\subsystems\time_track.dm" -#include "code\controllers\subsystems\timer.dm" -#include "code\controllers\subsystems\typing.dm" -#include "code\controllers\subsystems\vote.dm" -#include "code\controllers\subsystems\webhooks.dm" -#include "code\controllers\subsystems\xenoarch.dm" -#include "code\controllers\subsystems\processing\fastprocess.dm" -#include "code\controllers\subsystems\processing\obj.dm" -#include "code\controllers\subsystems\processing\processing.dm" -#include "code\controllers\subsystems\processing\projectiles.dm" -#include "code\controllers\subsystems\processing\turfs.dm" -#include "code\core\atom\Transform.dm" -#include "code\core\datum\IsAbstract.dm" -#include "code\core\image\Transform.dm" -#include "code\core\matrix\Transform.dm" -#include "code\datums\ai_law_sets.dm" -#include "code\datums\ai_laws.dm" -#include "code\datums\beam.dm" -#include "code\datums\browser.dm" -#include "code\datums\callback.dm" -#include "code\datums\category.dm" -#include "code\datums\chat_message.dm" -#include "code\datums\datacore.dm" -#include "code\datums\datum.dm" -#include "code\datums\datumvars.dm" -#include "code\datums\EPv2.dm" -#include "code\datums\ghost_query.dm" -#include "code\datums\hierarchy.dm" -#include "code\datums\mind.dm" -#include "code\datums\mixed.dm" -#include "code\datums\modules.dm" -#include "code\datums\move_intent.dm" -#include "code\datums\mutable_appearance.dm" -#include "code\datums\orbit.dm" -#include "code\datums\organs.dm" -#include "code\datums\position_point_vector.dm" -#include "code\datums\progressbar.dm" -#include "code\datums\riding.dm" -#include "code\datums\soul_link.dm" -#include "code\datums\sun.dm" -#include "code\datums\weakref.dm" -#include "code\datums\audio\_audio.dm" -#include "code\datums\audio\_tracks.dm" -#include "code\datums\audio\jukebox.dm" -#include "code\datums\autolathe\arms.dm" -#include "code\datums\autolathe\autolathe.dm" -#include "code\datums\autolathe\devices.dm" -#include "code\datums\autolathe\engineering.dm" -#include "code\datums\autolathe\general.dm" -#include "code\datums\autolathe\materials.dm" -#include "code\datums\autolathe\medical.dm" -#include "code\datums\autolathe\tools.dm" -#include "code\datums\components\_component.dm" -#include "code\datums\components\crafting\crafting.dm" -#include "code\datums\components\crafting\crafting_external.dm" -#include "code\datums\components\crafting\recipes.dm" -#include "code\datums\components\crafting\tool_quality.dm" -#include "code\datums\components\crafting\recipes\archery.dm" -#include "code\datums\elements\_element.dm" -#include "code\datums\game_masters\_common.dm" -#include "code\datums\game_masters\default.dm" -#include "code\datums\game_masters\other_game_masters.dm" -#include "code\datums\helper_datums\construction_datum.dm" -#include "code\datums\helper_datums\events.dm" -#include "code\datums\helper_datums\getrev.dm" -#include "code\datums\helper_datums\teleport.dm" -#include "code\datums\helper_datums\topic_input.dm" -#include "code\datums\licenses\license.dm" -#include "code\datums\locations\locations.dm" -#include "code\datums\locations\nyx.dm" -#include "code\datums\locations\qerrvallis.dm" -#include "code\datums\locations\s_randarr.dm" -#include "code\datums\locations\sol.dm" -#include "code\datums\locations\tau_ceti.dm" -#include "code\datums\locations\uueoa_esa.dm" -#include "code\datums\locations\vir.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\sequence.dm" -#include "code\datums\looping_sounds\weather_sounds.dm" -#include "code\datums\managed_browsers\_managed_browser.dm" -#include "code\datums\managed_browsers\changelingevolution.dm" -#include "code\datums\managed_browsers\feedback_form.dm" -#include "code\datums\managed_browsers\feedback_viewer.dm" -#include "code\datums\observation\_debug.dm" -#include "code\datums\observation\_defines.dm" -#include "code\datums\observation\destroyed.dm" -#include "code\datums\observation\dir_set.dm" -#include "code\datums\observation\equipped.dm" -#include "code\datums\observation\helpers.dm" -#include "code\datums\observation\logged_in.dm" -#include "code\datums\observation\moved.dm" -#include "code\datums\observation\observation.dm" -#include "code\datums\observation\power_change.dm" -#include "code\datums\observation\shuttle_added.dm" -#include "code\datums\observation\shuttle_moved.dm" -#include "code\datums\observation\stat_set.dm" -#include "code\datums\observation\turf_changed.dm" -#include "code\datums\observation\turf_enterexit.dm" -#include "code\datums\observation\unequipped.dm" -#include "code\datums\observation\z_moved.dm" -#include "code\datums\observation\~cleanup.dm" -#include "code\datums\outfits\_defines.dm" -#include "code\datums\outfits\horror_killers.dm" -#include "code\datums\outfits\misc.dm" -#include "code\datums\outfits\nanotrasen.dm" -#include "code\datums\outfits\outfit.dm" -#include "code\datums\outfits\pirates.dm" -#include "code\datums\outfits\spec_op.dm" -#include "code\datums\outfits\tournament.dm" -#include "code\datums\outfits\vox.dm" -#include "code\datums\outfits\wizardry.dm" -#include "code\datums\outfits\costumes\costume.dm" -#include "code\datums\outfits\costumes\halloween.dm" -#include "code\datums\outfits\jobs\cargo.dm" -#include "code\datums\outfits\jobs\civilian.dm" -#include "code\datums\outfits\jobs\command.dm" -#include "code\datums\outfits\jobs\engineering.dm" -#include "code\datums\outfits\jobs\job.dm" -#include "code\datums\outfits\jobs\medical.dm" -#include "code\datums\outfits\jobs\misc.dm" -#include "code\datums\outfits\jobs\science.dm" -#include "code\datums\outfits\jobs\security.dm" -#include "code\datums\outfits\military\fleet.dm" -#include "code\datums\outfits\military\marines.dm" -#include "code\datums\outfits\military\military.dm" -#include "code\datums\outfits\military\sifguard.dm" -#include "code\datums\repositories\ammomaterial.dm" -#include "code\datums\repositories\cameras.dm" -#include "code\datums\repositories\crew.dm" -#include "code\datums\repositories\decls.dm" -#include "code\datums\repositories\repository.dm" -#include "code\datums\repositories\unique.dm" -#include "code\datums\roundstats\_defines_local.dm" -#include "code\datums\roundstats\departmentgoal.dm" -#include "code\datums\roundstats\roundstats.dm" -#include "code\datums\supplypacks\atmospherics.dm" -#include "code\datums\supplypacks\contraband.dm" -#include "code\datums\supplypacks\costumes.dm" -#include "code\datums\supplypacks\engineering.dm" -#include "code\datums\supplypacks\hospitality.dm" -#include "code\datums\supplypacks\hydroponics.dm" -#include "code\datums\supplypacks\materials.dm" -#include "code\datums\supplypacks\medical.dm" -#include "code\datums\supplypacks\misc.dm" -#include "code\datums\supplypacks\munitions.dm" -#include "code\datums\supplypacks\recreation.dm" -#include "code\datums\supplypacks\robotics.dm" -#include "code\datums\supplypacks\science.dm" -#include "code\datums\supplypacks\security.dm" -#include "code\datums\supplypacks\supply.dm" -#include "code\datums\supplypacks\supplypacks.dm" -#include "code\datums\supplypacks\voidsuits.dm" -#include "code\datums\underwear\bottom.dm" -#include "code\datums\underwear\socks.dm" -#include "code\datums\underwear\top.dm" -#include "code\datums\underwear\undershirts.dm" -#include "code\datums\underwear\underwear.dm" -#include "code\datums\uplink\ammunition.dm" -#include "code\datums\uplink\announcements.dm" -#include "code\datums\uplink\armor.dm" -#include "code\datums\uplink\backup.dm" -#include "code\datums\uplink\badassery.dm" -#include "code\datums\uplink\grenades.dm" -#include "code\datums\uplink\hardsuit_modules.dm" -#include "code\datums\uplink\implants.dm" -#include "code\datums\uplink\medical.dm" -#include "code\datums\uplink\resources.dm" -#include "code\datums\uplink\stealth_items.dm" -#include "code\datums\uplink\stealthy_weapons.dm" -#include "code\datums\uplink\telecrystals.dm" -#include "code\datums\uplink\tools.dm" -#include "code\datums\uplink\uplink_categories.dm" -#include "code\datums\uplink\uplink_items.dm" -#include "code\datums\uplink\visible_weapons.dm" -#include "code\datums\vending\stored_item.dm" -#include "code\datums\vending\vending.dm" -#include "code\datums\wires\airlock.dm" -#include "code\datums\wires\alarm.dm" -#include "code\datums\wires\apc.dm" -#include "code\datums\wires\autolathe.dm" -#include "code\datums\wires\camera.dm" -#include "code\datums\wires\explosive.dm" -#include "code\datums\wires\grid_checker.dm" -#include "code\datums\wires\jukebox.dm" -#include "code\datums\wires\particle_accelerator.dm" -#include "code\datums\wires\radio.dm" -#include "code\datums\wires\robot.dm" -#include "code\datums\wires\seedstorage.dm" -#include "code\datums\wires\smartfridge.dm" -#include "code\datums\wires\smes.dm" -#include "code\datums\wires\suit_storage_unit.dm" -#include "code\datums\wires\tesla_coil.dm" -#include "code\datums\wires\vending.dm" -#include "code\datums\wires\wires.dm" -#include "code\defines\gases.dm" -#include "code\defines\obj.dm" -#include "code\defines\obj\weapon.dm" -#include "code\defines\procs\announce.dm" -#include "code\defines\procs\AStar.dm" -#include "code\defines\procs\dbcore.dm" -#include "code\defines\procs\radio.dm" -#include "code\defines\procs\statistics.dm" -#include "code\game\atoms.dm" -#include "code\game\atoms_movable.dm" -#include "code\game\base_turf.dm" -#include "code\game\periodic_news.dm" -#include "code\game\response_team.dm" -#include "code\game\shuttle_engines.dm" -#include "code\game\skincmd.dm" -#include "code\game\sound.dm" -#include "code\game\trader_visit.dm" -#include "code\game\world.dm" -#include "code\game\area\ai_monitored.dm" -#include "code\game\area\areas.dm" -#include "code\game\area\asteroid_areas.dm" -#include "code\game\area\Space Station 13 areas.dm" -#include "code\game\area\ss13_deprecated_areas.dm" -#include "code\game\dna\dna2.dm" -#include "code\game\dna\dna2_domutcheck.dm" -#include "code\game\dna\dna2_helpers.dm" -#include "code\game\dna\dna_modifier.dm" -#include "code\game\dna\genes\disabilities.dm" -#include "code\game\dna\genes\gene.dm" -#include "code\game\dna\genes\powers.dm" -#include "code\game\gamemodes\events.dm" -#include "code\game\gamemodes\game_mode.dm" -#include "code\game\gamemodes\game_mode_latespawn.dm" -#include "code\game\gamemodes\objective.dm" -#include "code\game\gamemodes\setupgame.dm" -#include "code\game\gamemodes\calamity\calamity.dm" -#include "code\game\gamemodes\changeling\absorbed_dna.dm" -#include "code\game\gamemodes\changeling\changeling.dm" -#include "code\game\gamemodes\changeling\changeling_evolutiontree.dm" -#include "code\game\gamemodes\changeling\changeling_powers.dm" -#include "code\game\gamemodes\changeling\generic_equip_procs.dm" -#include "code\game\gamemodes\changeling\modularchangling.dm" -#include "code\game\gamemodes\changeling\powers\absorb.dm" -#include "code\game\gamemodes\changeling\powers\armblade.dm" -#include "code\game\gamemodes\changeling\powers\armor.dm" -#include "code\game\gamemodes\changeling\powers\augmented_eyesight.dm" -#include "code\game\gamemodes\changeling\powers\bioelectrogenesis.dm" -#include "code\game\gamemodes\changeling\powers\blind_sting.dm" -#include "code\game\gamemodes\changeling\powers\boost_range.dm" -#include "code\game\gamemodes\changeling\powers\cryo_sting.dm" -#include "code\game\gamemodes\changeling\powers\darkvision.dm" -#include "code\game\gamemodes\changeling\powers\deaf_sting.dm" -#include "code\game\gamemodes\changeling\powers\delayed_toxin_sting.dm" -#include "code\game\gamemodes\changeling\powers\digital_camo.dm" -#include "code\game\gamemodes\changeling\powers\electric_lockpick.dm" -#include "code\game\gamemodes\changeling\powers\endoarmor.dm" -#include "code\game\gamemodes\changeling\powers\enfeebling_string.dm" -#include "code\game\gamemodes\changeling\powers\engorged_glands.dm" -#include "code\game\gamemodes\changeling\powers\enrage.dm" -#include "code\game\gamemodes\changeling\powers\epinephrine_overdose.dm" -#include "code\game\gamemodes\changeling\powers\escape_restraints.dm" -#include "code\game\gamemodes\changeling\powers\extract_dna_sting.dm" -#include "code\game\gamemodes\changeling\powers\fabricate_clothing.dm" -#include "code\game\gamemodes\changeling\powers\fake_death.dm" -#include "code\game\gamemodes\changeling\powers\fleshmend.dm" -#include "code\game\gamemodes\changeling\powers\hivemind.dm" -#include "code\game\gamemodes\changeling\powers\mimic_voice.dm" -#include "code\game\gamemodes\changeling\powers\panacea.dm" -#include "code\game\gamemodes\changeling\powers\rapid_regen.dm" -#include "code\game\gamemodes\changeling\powers\recursive_enhancement.dm" -#include "code\game\gamemodes\changeling\powers\respec.dm" -#include "code\game\gamemodes\changeling\powers\revive.dm" -#include "code\game\gamemodes\changeling\powers\self_respiration.dm" -#include "code\game\gamemodes\changeling\powers\shriek.dm" -#include "code\game\gamemodes\changeling\powers\silence_sting.dm" -#include "code\game\gamemodes\changeling\powers\transform.dm" -#include "code\game\gamemodes\changeling\powers\visible_camouflage.dm" -#include "code\game\gamemodes\cult\construct_spells.dm" -#include "code\game\gamemodes\cult\cult.dm" -#include "code\game\gamemodes\cult\cult_items.dm" -#include "code\game\gamemodes\cult\cult_structures.dm" -#include "code\game\gamemodes\cult\hell_universe.dm" -#include "code\game\gamemodes\cult\narsie.dm" -#include "code\game\gamemodes\cult\ritual.dm" -#include "code\game\gamemodes\cult\runes.dm" -#include "code\game\gamemodes\cult\soulstone.dm" -#include "code\game\gamemodes\cult\talisman.dm" -#include "code\game\gamemodes\cult\cultify\mob.dm" -#include "code\game\gamemodes\cult\cultify\obj.dm" -#include "code\game\gamemodes\cult\cultify\turf.dm" -#include "code\game\gamemodes\endgame\endgame.dm" -#include "code\game\gamemodes\endgame\supermatter_cascade\blob.dm" -#include "code\game\gamemodes\endgame\supermatter_cascade\portal.dm" -#include "code\game\gamemodes\endgame\supermatter_cascade\universe.dm" -#include "code\game\gamemodes\events\black_hole.dm" -#include "code\game\gamemodes\events\clang.dm" -#include "code\game\gamemodes\events\dust.dm" -#include "code\game\gamemodes\events\power_failure.dm" -#include "code\game\gamemodes\events\wormholes.dm" -#include "code\game\gamemodes\events\holidays\Christmas.dm" -#include "code\game\gamemodes\events\holidays\Holidays.dm" -#include "code\game\gamemodes\events\holidays\Other.dm" -#include "code\game\gamemodes\extended\extended.dm" -#include "code\game\gamemodes\heist\heist.dm" -#include "code\game\gamemodes\infiltrator\infiltrator.dm" -#include "code\game\gamemodes\malfunction\malf_hardware.dm" -#include "code\game\gamemodes\malfunction\malf_research.dm" -#include "code\game\gamemodes\malfunction\malf_research_ability.dm" -#include "code\game\gamemodes\malfunction\malfunction.dm" -#include "code\game\gamemodes\malfunction\newmalf_ability_trees\HARDWARE.dm" -#include "code\game\gamemodes\malfunction\newmalf_ability_trees\HELPERS.dm" -#include "code\game\gamemodes\malfunction\newmalf_ability_trees\tree_interdiction.dm" -#include "code\game\gamemodes\malfunction\newmalf_ability_trees\tree_manipulation.dm" -#include "code\game\gamemodes\malfunction\newmalf_ability_trees\tree_networking.dm" -#include "code\game\gamemodes\meteor\meteor.dm" -#include "code\game\gamemodes\meteor\meteors.dm" -#include "code\game\gamemodes\mixed\conflux.dm" -#include "code\game\gamemodes\mixed\infestation.dm" -#include "code\game\gamemodes\mixed\intrigue.dm" -#include "code\game\gamemodes\mixed\lizard.dm" -#include "code\game\gamemodes\mixed\mercrenegade.dm" -#include "code\game\gamemodes\mixed\mercwiz.dm" -#include "code\game\gamemodes\mixed\paranoia.dm" -#include "code\game\gamemodes\mixed\traitorling.dm" -#include "code\game\gamemodes\mixed\traitorrenegade.dm" -#include "code\game\gamemodes\mixed\uprising.dm" -#include "code\game\gamemodes\mixed\visitors.dm" -#include "code\game\gamemodes\ninja\ninja.dm" -#include "code\game\gamemodes\nuclear\nuclear.dm" -#include "code\game\gamemodes\nuclear\pinpointer.dm" -#include "code\game\gamemodes\revolution\revolution.dm" -#include "code\game\gamemodes\technomancer\catalog.dm" -#include "code\game\gamemodes\technomancer\clothing.dm" -#include "code\game\gamemodes\technomancer\core_obj.dm" -#include "code\game\gamemodes\technomancer\equipment.dm" -#include "code\game\gamemodes\technomancer\instability.dm" -#include "code\game\gamemodes\technomancer\spell_objs.dm" -#include "code\game\gamemodes\technomancer\spell_objs_helpers.dm" -#include "code\game\gamemodes\technomancer\technomancer.dm" -#include "code\game\gamemodes\technomancer\assistance\assistance.dm" -#include "code\game\gamemodes\technomancer\devices\boots_of_speed.dm" -#include "code\game\gamemodes\technomancer\devices\disposable_teleporter.dm" -#include "code\game\gamemodes\technomancer\devices\gloves_of_regen.dm" -#include "code\game\gamemodes\technomancer\devices\hypos.dm" -#include "code\game\gamemodes\technomancer\devices\implants.dm" -#include "code\game\gamemodes\technomancer\devices\shield_armor.dm" -#include "code\game\gamemodes\technomancer\devices\tesla_armor.dm" -#include "code\game\gamemodes\technomancer\spells\abjuration.dm" -#include "code\game\gamemodes\technomancer\spells\apportation.dm" -#include "code\game\gamemodes\technomancer\spells\audible_deception.dm" -#include "code\game\gamemodes\technomancer\spells\blink.dm" -#include "code\game\gamemodes\technomancer\spells\chroma.dm" -#include "code\game\gamemodes\technomancer\spells\condensation.dm" -#include "code\game\gamemodes\technomancer\spells\control.dm" -#include "code\game\gamemodes\technomancer\spells\dispel.dm" -#include "code\game\gamemodes\technomancer\spells\energy_siphon.dm" -#include "code\game\gamemodes\technomancer\spells\flame_tongue.dm" -#include "code\game\gamemodes\technomancer\spells\gambit.dm" -#include "code\game\gamemodes\technomancer\spells\illusion.dm" -#include "code\game\gamemodes\technomancer\spells\instability_tap.dm" -#include "code\game\gamemodes\technomancer\spells\mark_recall.dm" -#include "code\game\gamemodes\technomancer\spells\mend_organs.dm" -#include "code\game\gamemodes\technomancer\spells\oxygenate.dm" -#include "code\game\gamemodes\technomancer\spells\passwall.dm" -#include "code\game\gamemodes\technomancer\spells\phase_shift.dm" -#include "code\game\gamemodes\technomancer\spells\radiance.dm" -#include "code\game\gamemodes\technomancer\spells\reflect.dm" -#include "code\game\gamemodes\technomancer\spells\resurrect.dm" -#include "code\game\gamemodes\technomancer\spells\shared_burden.dm" -#include "code\game\gamemodes\technomancer\spells\shield.dm" -#include "code\game\gamemodes\technomancer\spells\targeting_matrix.dm" -#include "code\game\gamemodes\technomancer\spells\track.dm" -#include "code\game\gamemodes\technomancer\spells\warp_strike.dm" -#include "code\game\gamemodes\technomancer\spells\aura\aura.dm" -#include "code\game\gamemodes\technomancer\spells\aura\biomed_aura.dm" -#include "code\game\gamemodes\technomancer\spells\aura\fire_aura.dm" -#include "code\game\gamemodes\technomancer\spells\aura\frost_aura.dm" -#include "code\game\gamemodes\technomancer\spells\aura\shock_aura.dm" -#include "code\game\gamemodes\technomancer\spells\aura\unstable_aura.dm" -#include "code\game\gamemodes\technomancer\spells\modifier\corona.dm" -#include "code\game\gamemodes\technomancer\spells\modifier\haste.dm" -#include "code\game\gamemodes\technomancer\spells\modifier\mend_all.dm" -#include "code\game\gamemodes\technomancer\spells\modifier\mend_life.dm" -#include "code\game\gamemodes\technomancer\spells\modifier\mend_synthetic.dm" -#include "code\game\gamemodes\technomancer\spells\modifier\modifier.dm" -#include "code\game\gamemodes\technomancer\spells\modifier\purify.dm" -#include "code\game\gamemodes\technomancer\spells\modifier\repel_missiles.dm" -#include "code\game\gamemodes\technomancer\spells\projectile\beam.dm" -#include "code\game\gamemodes\technomancer\spells\projectile\chain_lightning.dm" -#include "code\game\gamemodes\technomancer\spells\projectile\force_missile.dm" -#include "code\game\gamemodes\technomancer\spells\projectile\ionic_bolt.dm" -#include "code\game\gamemodes\technomancer\spells\projectile\lesser_chain_lightning.dm" -#include "code\game\gamemodes\technomancer\spells\projectile\lightning.dm" -#include "code\game\gamemodes\technomancer\spells\projectile\overload.dm" -#include "code\game\gamemodes\technomancer\spells\projectile\projectile.dm" -#include "code\game\gamemodes\technomancer\spells\spawner\darkness.dm" -#include "code\game\gamemodes\technomancer\spells\spawner\destablize.dm" -#include "code\game\gamemodes\technomancer\spells\spawner\fire_blast.dm" -#include "code\game\gamemodes\technomancer\spells\spawner\pulsar.dm" -#include "code\game\gamemodes\technomancer\spells\spawner\spawner.dm" -#include "code\game\gamemodes\technomancer\spells\summon\summon.dm" -#include "code\game\gamemodes\technomancer\spells\summon\summon_creature.dm" -#include "code\game\gamemodes\technomancer\spells\summon\summon_ward.dm" -#include "code\game\gamemodes\traitor\traitor.dm" -#include "code\game\gamemodes\wizard\wizard.dm" -#include "code\game\jobs\_access_defs.dm" -#include "code\game\jobs\access.dm" -#include "code\game\jobs\access_datum.dm" -#include "code\game\jobs\job_controller.dm" -#include "code\game\jobs\jobs.dm" -#include "code\game\jobs\job\_alt_title.dm" -#include "code\game\jobs\job\assistant.dm" -#include "code\game\jobs\job\captain.dm" -#include "code\game\jobs\job\civilian.dm" -#include "code\game\jobs\job\civilian_chaplain.dm" -#include "code\game\jobs\job\department.dm" -#include "code\game\jobs\job\engineering.dm" -#include "code\game\jobs\job\job.dm" -#include "code\game\jobs\job\medical.dm" -#include "code\game\jobs\job\science.dm" -#include "code\game\jobs\job\security.dm" -#include "code\game\jobs\job\silicon.dm" -#include "code\game\machinery\adv_med.dm" -#include "code\game\machinery\ai_slipper.dm" -#include "code\game\machinery\air_alarm.dm" -#include "code\game\machinery\atm_ret_field.dm" -#include "code\game\machinery\atmo_control.dm" -#include "code\game\machinery\autolathe.dm" -#include "code\game\machinery\Beacon.dm" -#include "code\game\machinery\biogenerator.dm" -#include "code\game\machinery\bioprinter.dm" -#include "code\game\machinery\buttons.dm" -#include "code\game\machinery\CableLayer.dm" -#include "code\game\machinery\cell_charger.dm" -#include "code\game\machinery\cloning.dm" -#include "code\game\machinery\cryo.dm" -#include "code\game\machinery\cryopod.dm" -#include "code\game\machinery\deployable.dm" -#include "code\game\machinery\door_control.dm" -#include "code\game\machinery\doppler_array.dm" -#include "code\game\machinery\exonet_node.dm" -#include "code\game\machinery\fire_alarm.dm" -#include "code\game\machinery\flasher.dm" -#include "code\game\machinery\floodlight.dm" -#include "code\game\machinery\floor_light.dm" -#include "code\game\machinery\floorlayer.dm" -#include "code\game\machinery\frame.dm" -#include "code\game\machinery\hologram.dm" -#include "code\game\machinery\holosign.dm" -#include "code\game\machinery\igniter.dm" -#include "code\game\machinery\iv_drip.dm" -#include "code\game\machinery\jukebox.dm" -#include "code\game\machinery\lightswitch.dm" -#include "code\game\machinery\machinery.dm" -#include "code\game\machinery\machinery_power.dm" -#include "code\game\machinery\magnet.dm" -#include "code\game\machinery\mass_driver.dm" -#include "code\game\machinery\navbeacon.dm" -#include "code\game\machinery\neonsign.dm" -#include "code\game\machinery\newscaster.dm" -#include "code\game\machinery\nuclear_bomb.dm" -#include "code\game\machinery\OpTable.dm" -#include "code\game\machinery\overview.dm" -#include "code\game\machinery\oxygen_pump.dm" -#include "code\game\machinery\pda_multicaster.dm" -#include "code\game\machinery\pointdefense.dm" -#include "code\game\machinery\portable_turret.dm" -#include "code\game\machinery\recharger.dm" -#include "code\game\machinery\rechargestation.dm" -#include "code\game\machinery\requests_console.dm" -#include "code\game\machinery\robot_fabricator.dm" -#include "code\game\machinery\seed_extractor.dm" -#include "code\game\machinery\Sleeper.dm" -#include "code\game\machinery\spaceheater.dm" -#include "code\game\machinery\status_display.dm" -#include "code\game\machinery\status_display_ai.dm" -#include "code\game\machinery\suit_storage_unit.dm" -#include "code\game\machinery\supply_display.dm" -#include "code\game\machinery\supplybeacon.dm" -#include "code\game\machinery\syndicatebeacon.dm" -#include "code\game\machinery\teleporter.dm" -#include "code\game\machinery\transportpod.dm" -#include "code\game\machinery\turret_control.dm" -#include "code\game\machinery\wall_frames.dm" -#include "code\game\machinery\washing_machine.dm" -#include "code\game\machinery\wishgranter.dm" -#include "code\game\machinery\atmoalter\area_atmos_computer.dm" -#include "code\game\machinery\atmoalter\canister.dm" -#include "code\game\machinery\atmoalter\clamp.dm" -#include "code\game\machinery\atmoalter\meter.dm" -#include "code\game\machinery\atmoalter\portable_atmospherics.dm" -#include "code\game\machinery\atmoalter\pump.dm" -#include "code\game\machinery\atmoalter\scrubber.dm" -#include "code\game\machinery\camera\camera.dm" -#include "code\game\machinery\camera\camera_assembly.dm" -#include "code\game\machinery\camera\motion.dm" -#include "code\game\machinery\camera\presets.dm" -#include "code\game\machinery\camera\tracking.dm" -#include "code\game\machinery\computer\ai_core.dm" -#include "code\game\machinery\computer\aifixer.dm" -#include "code\game\machinery\computer\arcade.dm" -#include "code\game\machinery\computer\atmos_alert.dm" -#include "code\game\machinery\computer\atmos_control.dm" -#include "code\game\machinery\computer\camera.dm" -#include "code\game\machinery\computer\card.dm" -#include "code\game\machinery\computer\cloning.dm" -#include "code\game\machinery\computer\communications.dm" -#include "code\game\machinery\computer\computer.dm" -#include "code\game\machinery\computer\crew.dm" -#include "code\game\machinery\computer\guestpass.dm" -#include "code\game\machinery\computer\law.dm" -#include "code\game\machinery\computer\medical.dm" -#include "code\game\machinery\computer\message.dm" -#include "code\game\machinery\computer\Operating.dm" -#include "code\game\machinery\computer\pod.dm" -#include "code\game\machinery\computer\prisoner.dm" -#include "code\game\machinery\computer\prisonshuttle.dm" -#include "code\game\machinery\computer\RCON_Console.dm" -#include "code\game\machinery\computer\robot.dm" -#include "code\game\machinery\computer\security.dm" -#include "code\game\machinery\computer\shutoff_monitor.dm" -#include "code\game\machinery\computer\shuttle.dm" -#include "code\game\machinery\computer\skills.dm" -#include "code\game\machinery\computer\specops_shuttle.dm" -#include "code\game\machinery\computer\station_alert.dm" -#include "code\game\machinery\computer\supply.dm" -#include "code\game\machinery\computer\syndicate_specops_shuttle.dm" -#include "code\game\machinery\doors\airlock.dm" -#include "code\game\machinery\doors\airlock_control.dm" -#include "code\game\machinery\doors\airlock_electronics.dm" -#include "code\game\machinery\doors\alarmlock.dm" -#include "code\game\machinery\doors\blast_door.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\firedoor_assembly.dm" -#include "code\game\machinery\doors\multi_tile.dm" -#include "code\game\machinery\doors\unpowered.dm" -#include "code\game\machinery\doors\windowdoor.dm" -#include "code\game\machinery\embedded_controller\airlock_controllers.dm" -#include "code\game\machinery\embedded_controller\airlock_docking_controller.dm" -#include "code\game\machinery\embedded_controller\airlock_docking_controller_multi.dm" -#include "code\game\machinery\embedded_controller\airlock_program.dm" -#include "code\game\machinery\embedded_controller\docking_program.dm" -#include "code\game\machinery\embedded_controller\docking_program_multi.dm" -#include "code\game\machinery\embedded_controller\embedded_controller_base.dm" -#include "code\game\machinery\embedded_controller\embedded_program_base.dm" -#include "code\game\machinery\embedded_controller\mapping_helpers.dm" -#include "code\game\machinery\embedded_controller\simple_docking_controller.dm" -#include "code\game\machinery\pipe\construction.dm" -#include "code\game\machinery\pipe\pipe_dispenser.dm" -#include "code\game\machinery\pipe\pipe_recipes.dm" -#include "code\game\machinery\pipe\pipelayer.dm" -#include "code\game\machinery\telecomms\broadcaster.dm" -#include "code\game\machinery\telecomms\logbrowser.dm" -#include "code\game\machinery\telecomms\machine_interactions.dm" -#include "code\game\machinery\telecomms\presets.dm" -#include "code\game\machinery\telecomms\telecommunications.dm" -#include "code\game\machinery\telecomms\telemonitor.dm" -#include "code\game\machinery\telecomms\traffic_control.dm" -#include "code\game\machinery\virtual_reality\ar_console.dm" -#include "code\game\machinery\virtual_reality\vr_console.dm" -#include "code\game\magic\Uristrunes.dm" -#include "code\game\mecha\mech_bay.dm" -#include "code\game\mecha\mech_fabricator.dm" -#include "code\game\mecha\mech_prosthetics.dm" -#include "code\game\mecha\mech_sensor.dm" -#include "code\game\mecha\mecha.dm" -#include "code\game\mecha\mecha_actions.dm" -#include "code\game\mecha\mecha_appearance.dm" -#include "code\game\mecha\mecha_construction_paths.dm" -#include "code\game\mecha\mecha_control_console.dm" -#include "code\game\mecha\mecha_helpers.dm" -#include "code\game\mecha\mecha_parts.dm" -#include "code\game\mecha\mecha_wreckage.dm" -#include "code\game\mecha\combat\combat.dm" -#include "code\game\mecha\combat\durand.dm" -#include "code\game\mecha\combat\fighter.dm" -#include "code\game\mecha\combat\gorilla.dm" -#include "code\game\mecha\combat\gygax.dm" -#include "code\game\mecha\combat\marauder.dm" -#include "code\game\mecha\combat\phazon.dm" -#include "code\game\mecha\components\_component.dm" -#include "code\game\mecha\components\actuators.dm" -#include "code\game\mecha\components\armor.dm" -#include "code\game\mecha\components\electrical.dm" -#include "code\game\mecha\components\hull.dm" -#include "code\game\mecha\components\lifesupport.dm" -#include "code\game\mecha\equipment\mecha_equipment.dm" -#include "code\game\mecha\equipment\mecha_equipment_dynamicprocs.dm" -#include "code\game\mecha\equipment\tools\armor_melee.dm" -#include "code\game\mecha\equipment\tools\armor_ranged.dm" -#include "code\game\mecha\equipment\tools\cable_layer.dm" -#include "code\game\mecha\equipment\tools\catapult.dm" -#include "code\game\mecha\equipment\tools\clamp.dm" -#include "code\game\mecha\equipment\tools\cloak.dm" -#include "code\game\mecha\equipment\tools\drill.dm" -#include "code\game\mecha\equipment\tools\energy_relay.dm" -#include "code\game\mecha\equipment\tools\extinguisher.dm" -#include "code\game\mecha\equipment\tools\generator.dm" -#include "code\game\mecha\equipment\tools\hardpoint_actuator.dm" -#include "code\game\mecha\equipment\tools\inflatables.dm" -#include "code\game\mecha\equipment\tools\jetpack.dm" -#include "code\game\mecha\equipment\tools\jumpjet.dm" -#include "code\game\mecha\equipment\tools\orescanner.dm" -#include "code\game\mecha\equipment\tools\passenger.dm" -#include "code\game\mecha\equipment\tools\powertool.dm" -#include "code\game\mecha\equipment\tools\rcd.dm" -#include "code\game\mecha\equipment\tools\repair_droid.dm" -#include "code\game\mecha\equipment\tools\running_board.dm" -#include "code\game\mecha\equipment\tools\shield.dm" -#include "code\game\mecha\equipment\tools\shield_omni.dm" -#include "code\game\mecha\equipment\tools\sleeper.dm" -#include "code\game\mecha\equipment\tools\speedboost.dm" -#include "code\game\mecha\equipment\tools\syringe_gun.dm" -#include "code\game\mecha\equipment\tools\teleporter.dm" -#include "code\game\mecha\equipment\tools\tools.dm" -#include "code\game\mecha\equipment\tools\weldinglaser.dm" -#include "code\game\mecha\equipment\tools\wormhole.dm" -#include "code\game\mecha\equipment\weapons\honk.dm" -#include "code\game\mecha\equipment\weapons\weapons.dm" -#include "code\game\mecha\equipment\weapons\ballistic\automatic.dm" -#include "code\game\mecha\equipment\weapons\ballistic\ballistic.dm" -#include "code\game\mecha\equipment\weapons\ballistic\mortar.dm" -#include "code\game\mecha\equipment\weapons\ballistic\shotgun.dm" -#include "code\game\mecha\equipment\weapons\defense\shocker.dm" -#include "code\game\mecha\equipment\weapons\energy\energy.dm" -#include "code\game\mecha\equipment\weapons\energy\ion.dm" -#include "code\game\mecha\equipment\weapons\energy\laser.dm" -#include "code\game\mecha\equipment\weapons\energy\phased.dm" -#include "code\game\mecha\equipment\weapons\energy\pulse.dm" -#include "code\game\mecha\equipment\weapons\energy\stun.dm" -#include "code\game\mecha\equipment\weapons\explosive\grenade.dm" -#include "code\game\mecha\equipment\weapons\explosive\missile.dm" -#include "code\game\mecha\equipment\weapons\fire\flamethrower.dm" -#include "code\game\mecha\equipment\weapons\fire\incendiary.dm" -#include "code\game\mecha\medical\medical.dm" -#include "code\game\mecha\medical\odysseus.dm" -#include "code\game\mecha\medical\serenity.dm" -#include "code\game\mecha\space\hoverpod.dm" -#include "code\game\mecha\space\shuttle.dm" -#include "code\game\mecha\working\ripley.dm" -#include "code\game\mecha\working\working.dm" -#include "code\game\objects\banners.dm" -#include "code\game\objects\buckling.dm" -#include "code\game\objects\empulse.dm" -#include "code\game\objects\explosion.dm" -#include "code\game\objects\explosion_recursive.dm" -#include "code\game\objects\items.dm" -#include "code\game\objects\objs.dm" -#include "code\game\objects\structures.dm" -#include "code\game\objects\weapons.dm" -#include "code\game\objects\effects\bump_teleporter.dm" -#include "code\game\objects\effects\glowshroom.dm" -#include "code\game\objects\effects\item_pickup_ghost.dm" -#include "code\game\objects\effects\landmarks.dm" -#include "code\game\objects\effects\misc.dm" -#include "code\game\objects\effects\overlays.dm" -#include "code\game\objects\effects\portals.dm" -#include "code\game\objects\effects\spiders.dm" -#include "code\game\objects\effects\step_triggers.dm" -#include "code\game\objects\effects\zone_divider.dm" -#include "code\game\objects\effects\alien\aliens.dm" -#include "code\game\objects\effects\chem\chemsmoke.dm" -#include "code\game\objects\effects\chem\coating.dm" -#include "code\game\objects\effects\chem\foam.dm" -#include "code\game\objects\effects\chem\water.dm" -#include "code\game\objects\effects\decals\cleanable.dm" -#include "code\game\objects\effects\decals\crayon.dm" -#include "code\game\objects\effects\decals\misc.dm" -#include "code\game\objects\effects\decals\remains.dm" -#include "code\game\objects\effects\decals\warning_stripes.dm" -#include "code\game\objects\effects\decals\Cleanable\aliens.dm" -#include "code\game\objects\effects\decals\Cleanable\fuel.dm" -#include "code\game\objects\effects\decals\Cleanable\humans.dm" -#include "code\game\objects\effects\decals\Cleanable\misc.dm" -#include "code\game\objects\effects\decals\Cleanable\robots.dm" -#include "code\game\objects\effects\decals\Cleanable\tracks.dm" -#include "code\game\objects\effects\decals\posters\bs12.dm" -#include "code\game\objects\effects\decals\posters\polarisposters.dm" -#include "code\game\objects\effects\decals\posters\posters.dm" -#include "code\game\objects\effects\map_effects\beam_point.dm" -#include "code\game\objects\effects\map_effects\effect_emitter.dm" -#include "code\game\objects\effects\map_effects\map_effects.dm" -#include "code\game\objects\effects\map_effects\perma_light.dm" -#include "code\game\objects\effects\map_effects\portal.dm" -#include "code\game\objects\effects\map_effects\radiation_emitter.dm" -#include "code\game\objects\effects\map_effects\screen_shaker.dm" -#include "code\game\objects\effects\map_effects\sound_emitter.dm" -#include "code\game\objects\effects\prop\columnblast.dm" -#include "code\game\objects\effects\prop\snake.dm" -#include "code\game\objects\effects\spawners\bombspawner.dm" -#include "code\game\objects\effects\spawners\gibs.dm" -#include "code\game\objects\effects\spawners\graffiti.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\antag_spawners.dm" -#include "code\game\objects\items\apc_frame.dm" -#include "code\game\objects\items\bells.dm" -#include "code\game\objects\items\blueprints.dm" -#include "code\game\objects\items\bodybag.dm" -#include "code\game\objects\items\contraband.dm" -#include "code\game\objects\items\crayons.dm" -#include "code\game\objects\items\glassjar.dm" -#include "code\game\objects\items\gunbox.dm" -#include "code\game\objects\items\magazine.dm" -#include "code\game\objects\items\paintkit.dm" -#include "code\game\objects\items\poi_items.dm" -#include "code\game\objects\items\robobag.dm" -#include "code\game\objects\items\shooting_range.dm" -#include "code\game\objects\items\tailoring.dm" -#include "code\game\objects\items\trash.dm" -#include "code\game\objects\items\trash_material.dm" -#include "code\game\objects\items\uav.dm" -#include "code\game\objects\items\devices\ai_detector.dm" -#include "code\game\objects\items\devices\aicard.dm" -#include "code\game\objects\items\devices\binoculars.dm" -#include "code\game\objects\items\devices\chameleonproj.dm" -#include "code\game\objects\items\devices\debugger.dm" -#include "code\game\objects\items\devices\defib.dm" -#include "code\game\objects\items\devices\flash.dm" -#include "code\game\objects\items\devices\flashlight.dm" -#include "code\game\objects\items\devices\floor_painter.dm" -#include "code\game\objects\items\devices\geiger.dm" -#include "code\game\objects\items\devices\gps.dm" -#include "code\game\objects\items\devices\hacktool.dm" -#include "code\game\objects\items\devices\holowarrant.dm" -#include "code\game\objects\items\devices\laserpointer.dm" -#include "code\game\objects\items\devices\lightreplacer.dm" -#include "code\game\objects\items\devices\megaphone.dm" -#include "code\game\objects\items\devices\modkit.dm" -#include "code\game\objects\items\devices\multitool.dm" -#include "code\game\objects\items\devices\paicard.dm" -#include "code\game\objects\items\devices\pipe_painter.dm" -#include "code\game\objects\items\devices\powersink.dm" -#include "code\game\objects\items\devices\scanners.dm" -#include "code\game\objects\items\devices\spy_bug.dm" -#include "code\game\objects\items\devices\suit_cooling.dm" -#include "code\game\objects\items\devices\t_scanner.dm" -#include "code\game\objects\items\devices\taperecorder.dm" -#include "code\game\objects\items\devices\text_to_speech.dm" -#include "code\game\objects\items\devices\traitordevices.dm" -#include "code\game\objects\items\devices\transfer_valve.dm" -#include "code\game\objects\items\devices\translator.dm" -#include "code\game\objects\items\devices\tvcamera.dm" -#include "code\game\objects\items\devices\uplink.dm" -#include "code\game\objects\items\devices\uplink_random_lists.dm" -#include "code\game\objects\items\devices\violin.dm" -#include "code\game\objects\items\devices\whistle.dm" -#include "code\game\objects\items\devices\communicator\communicator.dm" -#include "code\game\objects\items\devices\communicator\helper.dm" -#include "code\game\objects\items\devices\communicator\integrated.dm" -#include "code\game\objects\items\devices\communicator\messaging.dm" -#include "code\game\objects\items\devices\communicator\phone.dm" -#include "code\game\objects\items\devices\communicator\UI.dm" -#include "code\game\objects\items\devices\radio\beacon.dm" -#include "code\game\objects\items\devices\radio\electropack.dm" -#include "code\game\objects\items\devices\radio\encryptionkey.dm" -#include "code\game\objects\items\devices\radio\headset.dm" -#include "code\game\objects\items\devices\radio\intercom.dm" -#include "code\game\objects\items\devices\radio\jammer.dm" -#include "code\game\objects\items\devices\radio\radio.dm" -#include "code\game\objects\items\devices\radio\radiopack.dm" -#include "code\game\objects\items\mines\_mine.dm" -#include "code\game\objects\items\mines\_mine_payload.dm" -#include "code\game\objects\items\mines\mine_assembly.dm" -#include "code\game\objects\items\mines\mine_dnascamble.dm" -#include "code\game\objects\items\mines\mine_emp.dm" -#include "code\game\objects\items\mines\mine_frag.dm" -#include "code\game\objects\items\mines\mine_incendiary.dm" -#include "code\game\objects\items\mines\mine_kick.dm" -#include "code\game\objects\items\mines\mine_napalm.dm" -#include "code\game\objects\items\mines\mine_sleeping.dm" -#include "code\game\objects\items\mines\mine_stun.dm" -#include "code\game\objects\items\mines\mine_training.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\marker_beacons.dm" -#include "code\game\objects\items\stacks\matter_synth.dm" -#include "code\game\objects\items\stacks\medical.dm" -#include "code\game\objects\items\stacks\nanopaste.dm" -#include "code\game\objects\items\stacks\sandbags.dm" -#include "code\game\objects\items\stacks\stack.dm" -#include "code\game\objects\items\stacks\telecrystal.dm" -#include "code\game\objects\items\stacks\tickets.dm" -#include "code\game\objects\items\stacks\tiles\fifty_spawner_tiles.dm" -#include "code\game\objects\items\stacks\tiles\tile_types.dm" -#include "code\game\objects\items\toys\godfigures.dm" -#include "code\game\objects\items\toys\mech_toys.dm" -#include "code\game\objects\items\toys\toys.dm" -#include "code\game\objects\items\weapons\AI_modules.dm" -#include "code\game\objects\items\weapons\augment_items.dm" -#include "code\game\objects\items\weapons\autopsy.dm" -#include "code\game\objects\items\weapons\bones.dm" -#include "code\game\objects\items\weapons\candle.dm" -#include "code\game\objects\items\weapons\canes.dm" -#include "code\game\objects\items\weapons\chewables.dm" -#include "code\game\objects\items\weapons\cigs_lighters.dm" -#include "code\game\objects\items\weapons\clown_items.dm" -#include "code\game\objects\items\weapons\cosmetics.dm" -#include "code\game\objects\items\weapons\dna_injector.dm" -#include "code\game\objects\items\weapons\ecigs.dm" -#include "code\game\objects\items\weapons\explosives.dm" -#include "code\game\objects\items\weapons\extinguisher.dm" -#include "code\game\objects\items\weapons\flamethrower.dm" -#include "code\game\objects\items\weapons\gift_wrappaper.dm" -#include "code\game\objects\items\weapons\handcuffs.dm" -#include "code\game\objects\items\weapons\improvised_components.dm" -#include "code\game\objects\items\weapons\manuals.dm" -#include "code\game\objects\items\weapons\mop.dm" -#include "code\game\objects\items\weapons\mop_deploy.dm" -#include "code\game\objects\items\weapons\paint.dm" -#include "code\game\objects\items\weapons\paiwire.dm" -#include "code\game\objects\items\weapons\policetape.dm" -#include "code\game\objects\items\weapons\RCD.dm" -#include "code\game\objects\items\weapons\RPD.dm" -#include "code\game\objects\items\weapons\RSF.dm" -#include "code\game\objects\items\weapons\scrolls.dm" -#include "code\game\objects\items\weapons\shields.dm" -#include "code\game\objects\items\weapons\stunbaton.dm" -#include "code\game\objects\items\weapons\surgery_tools.dm" -#include "code\game\objects\items\weapons\swords_axes_etc.dm" -#include "code\game\objects\items\weapons\syndie.dm" -#include "code\game\objects\items\weapons\tape.dm" -#include "code\game\objects\items\weapons\teleportation.dm" -#include "code\game\objects\items\weapons\towels.dm" -#include "code\game\objects\items\weapons\traps.dm" -#include "code\game\objects\items\weapons\trays.dm" -#include "code\game\objects\items\weapons\weaponry.dm" -#include "code\game\objects\items\weapons\weldbackpack.dm" -#include "code\game\objects\items\weapons\circuitboards\broken.dm" -#include "code\game\objects\items\weapons\circuitboards\circuitboard.dm" -#include "code\game\objects\items\weapons\circuitboards\frame.dm" -#include "code\game\objects\items\weapons\circuitboards\mecha.dm" -#include "code\game\objects\items\weapons\circuitboards\other.dm" -#include "code\game\objects\items\weapons\circuitboards\computer\air_management.dm" -#include "code\game\objects\items\weapons\circuitboards\computer\camera_monitor.dm" -#include "code\game\objects\items\weapons\circuitboards\computer\computer.dm" -#include "code\game\objects\items\weapons\circuitboards\computer\research.dm" -#include "code\game\objects\items\weapons\circuitboards\computer\shuttle.dm" -#include "code\game\objects\items\weapons\circuitboards\computer\supply.dm" -#include "code\game\objects\items\weapons\circuitboards\computer\telecomms.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\biogenerator.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\cloning.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\engineering.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\fluidpump.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\jukebox.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\kitchen_appliances.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\mech_recharger.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\mining_drill.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\pacman.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\papershredder.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\power.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\recharge_station.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\research.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\shieldgen.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\ships.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\telecomms.dm" -#include "code\game\objects\items\weapons\circuitboards\machinery\unary_atmos.dm" -#include "code\game\objects\items\weapons\grenades\anti_photon_grenade.dm" -#include "code\game\objects\items\weapons\grenades\chem_grenade.dm" -#include "code\game\objects\items\weapons\grenades\concussion.dm" -#include "code\game\objects\items\weapons\grenades\emgrenade.dm" -#include "code\game\objects\items\weapons\grenades\explosive.dm" -#include "code\game\objects\items\weapons\grenades\flashbang.dm" -#include "code\game\objects\items\weapons\grenades\grenade.dm" -#include "code\game\objects\items\weapons\grenades\projectile.dm" -#include "code\game\objects\items\weapons\grenades\smokebomb.dm" -#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" -#include "code\game\objects\items\weapons\grenades\supermatter.dm" -#include "code\game\objects\items\weapons\id cards\cards.dm" -#include "code\game\objects\items\weapons\id cards\id_stacks.dm" -#include "code\game\objects\items\weapons\id cards\station_ids.dm" -#include "code\game\objects\items\weapons\id cards\syndicate_ids.dm" -#include "code\game\objects\items\weapons\implants\implant.dm" -#include "code\game\objects\items\weapons\implants\implantaugment.dm" -#include "code\game\objects\items\weapons\implants\implantcase.dm" -#include "code\game\objects\items\weapons\implants\implantchair.dm" -#include "code\game\objects\items\weapons\implants\implantcircuits.dm" -#include "code\game\objects\items\weapons\implants\implantdud.dm" -#include "code\game\objects\items\weapons\implants\implanter.dm" -#include "code\game\objects\items\weapons\implants\implantfreedom.dm" -#include "code\game\objects\items\weapons\implants\implantlanguage.dm" -#include "code\game\objects\items\weapons\implants\implantpad.dm" -#include "code\game\objects\items\weapons\implants\implantrestrainingbolt.dm" -#include "code\game\objects\items\weapons\implants\implantuplink.dm" -#include "code\game\objects\items\weapons\implants\neuralbasic.dm" -#include "code\game\objects\items\weapons\material\ashtray.dm" -#include "code\game\objects\items\weapons\material\bats.dm" -#include "code\game\objects\items\weapons\material\chainsaw.dm" -#include "code\game\objects\items\weapons\material\foam.dm" -#include "code\game\objects\items\weapons\material\gravemarker.dm" -#include "code\game\objects\items\weapons\material\kitchen.dm" -#include "code\game\objects\items\weapons\material\knives.dm" -#include "code\game\objects\items\weapons\material\material_armor.dm" -#include "code\game\objects\items\weapons\material\material_weapons.dm" -#include "code\game\objects\items\weapons\material\misc.dm" -#include "code\game\objects\items\weapons\material\shards.dm" -#include "code\game\objects\items\weapons\material\swords.dm" -#include "code\game\objects\items\weapons\material\thrown.dm" -#include "code\game\objects\items\weapons\material\twohanded.dm" -#include "code\game\objects\items\weapons\material\whetstone.dm" -#include "code\game\objects\items\weapons\melee\deflect.dm" -#include "code\game\objects\items\weapons\melee\energy.dm" -#include "code\game\objects\items\weapons\melee\misc.dm" -#include "code\game\objects\items\weapons\storage\backpack.dm" -#include "code\game\objects\items\weapons\storage\bags.dm" -#include "code\game\objects\items\weapons\storage\belt.dm" -#include "code\game\objects\items\weapons\storage\bible.dm" -#include "code\game\objects\items\weapons\storage\boxes.dm" -#include "code\game\objects\items\weapons\storage\briefcase.dm" -#include "code\game\objects\items\weapons\storage\fancy.dm" -#include "code\game\objects\items\weapons\storage\firstaid.dm" -#include "code\game\objects\items\weapons\storage\internal.dm" -#include "code\game\objects\items\weapons\storage\laundry_basket.dm" -#include "code\game\objects\items\weapons\storage\lockbox.dm" -#include "code\game\objects\items\weapons\storage\misc.dm" -#include "code\game\objects\items\weapons\storage\mre.dm" -#include "code\game\objects\items\weapons\storage\quickdraw.dm" -#include "code\game\objects\items\weapons\storage\secure.dm" -#include "code\game\objects\items\weapons\storage\storage.dm" -#include "code\game\objects\items\weapons\storage\toolbox.dm" -#include "code\game\objects\items\weapons\storage\uplink_kits.dm" -#include "code\game\objects\items\weapons\storage\wallets.dm" -#include "code\game\objects\items\weapons\storage\bags\ore.dm" -#include "code\game\objects\items\weapons\tanks\jetpack.dm" -#include "code\game\objects\items\weapons\tanks\tank_types.dm" -#include "code\game\objects\items\weapons\tanks\tanks.dm" -#include "code\game\objects\items\weapons\tools\crowbar.dm" -#include "code\game\objects\items\weapons\tools\screwdriver.dm" -#include "code\game\objects\items\weapons\tools\weldingtool.dm" -#include "code\game\objects\items\weapons\tools\wirecutters.dm" -#include "code\game\objects\items\weapons\tools\wrench.dm" -#include "code\game\objects\random\_random.dm" -#include "code\game\objects\random\anomalous.dm" -#include "code\game\objects\random\guns_and_ammo.dm" -#include "code\game\objects\random\maintenance.dm" -#include "code\game\objects\random\mapping.dm" -#include "code\game\objects\random\mechs.dm" -#include "code\game\objects\random\misc.dm" -#include "code\game\objects\random\mob.dm" -#include "code\game\objects\random\spacesuits.dm" -#include "code\game\objects\random\unidentified\medicine.dm" -#include "code\game\objects\structures\animal_den.dm" -#include "code\game\objects\structures\barricades.dm" -#include "code\game\objects\structures\barsign.dm" -#include "code\game\objects\structures\bedsheet_bin.dm" -#include "code\game\objects\structures\bonfire.dm" -#include "code\game\objects\structures\catwalk.dm" -#include "code\game\objects\structures\cliff.dm" -#include "code\game\objects\structures\coathanger.dm" -#include "code\game\objects\structures\curtains.dm" -#include "code\game\objects\structures\displaycase.dm" -#include "code\game\objects\structures\dogbed.dm" -#include "code\game\objects\structures\door_assembly.dm" -#include "code\game\objects\structures\electricchair.dm" -#include "code\game\objects\structures\extinguisher.dm" -#include "code\game\objects\structures\fence.dm" -#include "code\game\objects\structures\fireaxe.dm" -#include "code\game\objects\structures\fitness.dm" -#include "code\game\objects\structures\girders.dm" -#include "code\game\objects\structures\gravemarker.dm" -#include "code\game\objects\structures\grille.dm" -#include "code\game\objects\structures\handrail.dm" -#include "code\game\objects\structures\holoplant.dm" -#include "code\game\objects\structures\inflatable.dm" -#include "code\game\objects\structures\janicart.dm" -#include "code\game\objects\structures\kitchen_spike.dm" -#include "code\game\objects\structures\lattice.dm" -#include "code\game\objects\structures\ledges.dm" -#include "code\game\objects\structures\lightpost.dm" -#include "code\game\objects\structures\loot_piles.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\plasticflaps.dm" -#include "code\game\objects\structures\railing.dm" -#include "code\game\objects\structures\safe.dm" -#include "code\game\objects\structures\salvageable.dm" -#include "code\game\objects\structures\signs.dm" -#include "code\game\objects\structures\simple_doors.dm" -#include "code\game\objects\structures\snowman.dm" -#include "code\game\objects\structures\stasis_cage.dm" -#include "code\game\objects\structures\tank_dispenser.dm" -#include "code\game\objects\structures\target_stake.dm" -#include "code\game\objects\structures\transit_tubes.dm" -#include "code\game\objects\structures\under_wardrobe.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\window_spawner.dm" -#include "code\game\objects\structures\crates_lockers\__closets.dm" -#include "code\game\objects\structures\crates_lockers\_closets_appearance_definitions.dm" -#include "code\game\objects\structures\crates_lockers\crates.dm" -#include "code\game\objects\structures\crates_lockers\largecrate.dm" -#include "code\game\objects\structures\crates_lockers\vehiclecage.dm" -#include "code\game\objects\structures\crates_lockers\closets\coffin.dm" -#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm" -#include "code\game\objects\structures\crates_lockers\closets\fitness.dm" -#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm" -#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\l3closet.dm" -#include "code\game\objects\structures\crates_lockers\closets\malfunction.dm" -#include "code\game\objects\structures\crates_lockers\closets\statue.dm" -#include "code\game\objects\structures\crates_lockers\closets\syndicate.dm" -#include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\walllocker.dm" -#include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\guncabinet.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\secure_closets.dm" -#include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" -#include "code\game\objects\structures\flora\flora.dm" -#include "code\game\objects\structures\flora\grass.dm" -#include "code\game\objects\structures\flora\trees.dm" -#include "code\game\objects\structures\ghost_pods\ghost_pods.dm" -#include "code\game\objects\structures\ghost_pods\human.dm" -#include "code\game\objects\structures\ghost_pods\mysterious.dm" -#include "code\game\objects\structures\ghost_pods\silicon.dm" -#include "code\game\objects\structures\props\alien_props.dm" -#include "code\game\objects\structures\props\beam_prism.dm" -#include "code\game\objects\structures\props\billboard.dm" -#include "code\game\objects\structures\props\blackbox.dm" -#include "code\game\objects\structures\props\esoteric.dm" -#include "code\game\objects\structures\props\fake_ai.dm" -#include "code\game\objects\structures\props\fences.dm" -#include "code\game\objects\structures\props\machines.dm" -#include "code\game\objects\structures\props\nest.dm" -#include "code\game\objects\structures\props\projectile_lock.dm" -#include "code\game\objects\structures\props\prop.dm" -#include "code\game\objects\structures\props\puzzledoor.dm" -#include "code\game\objects\structures\props\rocks.dm" -#include "code\game\objects\structures\props\statue.dm" -#include "code\game\objects\structures\props\swarm.dm" -#include "code\game\objects\structures\props\transmitter.dm" -#include "code\game\objects\structures\props\warfare.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\alien_nests.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\bed.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\chairs.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\stools.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair.dm" -#include "code\game\objects\structures\stool_bed_chair_nest\wheelchair_item.dm" -#include "code\game\turfs\simulated.dm" -#include "code\game\turfs\turf.dm" -#include "code\game\turfs\turf_changing.dm" -#include "code\game\turfs\turf_flick_animations.dm" -#include "code\game\turfs\unsimulated.dm" -#include "code\game\turfs\flooring\flooring.dm" -#include "code\game\turfs\flooring\flooring_decals.dm" -#include "code\game\turfs\flooring\flooring_premade.dm" -#include "code\game\turfs\initialization\init.dm" -#include "code\game\turfs\initialization\maintenance.dm" -#include "code\game\turfs\simulated\floor.dm" -#include "code\game\turfs\simulated\floor_acts.dm" -#include "code\game\turfs\simulated\floor_attackby.dm" -#include "code\game\turfs\simulated\floor_damage.dm" -#include "code\game\turfs\simulated\floor_icon.dm" -#include "code\game\turfs\simulated\floor_static.dm" -#include "code\game\turfs\simulated\floor_types.dm" -#include "code\game\turfs\simulated\floor_types_eris.dm" -#include "code\game\turfs\simulated\lava.dm" -#include "code\game\turfs\simulated\wall_attacks.dm" -#include "code\game\turfs\simulated\wall_icon.dm" -#include "code\game\turfs\simulated\wall_types.dm" -#include "code\game\turfs\simulated\walls.dm" -#include "code\game\turfs\simulated\water.dm" -#include "code\game\turfs\simulated\dungeon\floor.dm" -#include "code\game\turfs\simulated\dungeon\wall.dm" -#include "code\game\turfs\simulated\outdoors\dirt.dm" -#include "code\game\turfs\simulated\outdoors\grass.dm" -#include "code\game\turfs\simulated\outdoors\grass_random.dm" -#include "code\game\turfs\simulated\outdoors\outdoors.dm" -#include "code\game\turfs\simulated\outdoors\outdoors_attackby.dm" -#include "code\game\turfs\simulated\outdoors\sidewalk.dm" -#include "code\game\turfs\simulated\outdoors\sky.dm" -#include "code\game\turfs\simulated\outdoors\snow.dm" -#include "code\game\turfs\snow\snow.dm" -#include "code\game\turfs\space\cracked_asteroid.dm" -#include "code\game\turfs\space\space.dm" -#include "code\game\turfs\space\transit.dm" -#include "code\game\turfs\unsimulated\beach.dm" -#include "code\game\turfs\unsimulated\floor.dm" -#include "code\game\turfs\unsimulated\planetary.dm" -#include "code\game\turfs\unsimulated\shuttle.dm" -#include "code\game\turfs\unsimulated\walls.dm" -#include "code\game\verbs\suicide.dm" -#include "code\js\byjax.dm" -#include "code\js\menus.dm" -#include "code\modules\admin\admin.dm" -#include "code\modules\admin\admin_attack_log.dm" -#include "code\modules\admin\admin_investigate.dm" -#include "code\modules\admin\admin_memo.dm" -#include "code\modules\admin\admin_ranks.dm" -#include "code\modules\admin\admin_secrets.dm" -#include "code\modules\admin\admin_tools.dm" -#include "code\modules\admin\admin_verb_lists.dm" -#include "code\modules\admin\admin_verbs.dm" -#include "code\modules\admin\banjob.dm" -#include "code\modules\admin\create_mob.dm" -#include "code\modules\admin\create_object.dm" -#include "code\modules\admin\create_turf.dm" -#include "code\modules\admin\fix_player_notes_listing.dm" -#include "code\modules\admin\holder2.dm" -#include "code\modules\admin\IsBanned.dm" -#include "code\modules\admin\map_capture.dm" -#include "code\modules\admin\NewBan.dm" -#include "code\modules\admin\news.dm" -#include "code\modules\admin\persistence.dm" -#include "code\modules\admin\player_notes.dm" -#include "code\modules\admin\player_panel.dm" -#include "code\modules\admin\topic.dm" -#include "code\modules\admin\ToRban.dm" -#include "code\modules\admin\callproc\callproc.dm" -#include "code\modules\admin\DB ban\functions.dm" -#include "code\modules\admin\permissionverbs\permissionedit.dm" -#include "code\modules\admin\secrets\admin_secrets\admin_logs.dm" -#include "code\modules\admin\secrets\admin_secrets\alter_narsie.dm" -#include "code\modules\admin\secrets\admin_secrets\bombing_list.dm" -#include "code\modules\admin\secrets\admin_secrets\jump_shuttle.dm" -#include "code\modules\admin\secrets\admin_secrets\launch_shuttle.dm" -#include "code\modules\admin\secrets\admin_secrets\launch_shuttle_forced.dm" -#include "code\modules\admin\secrets\admin_secrets\list_dna.dm" -#include "code\modules\admin\secrets\admin_secrets\list_fingerprints.dm" -#include "code\modules\admin\secrets\admin_secrets\move_shuttle.dm" -#include "code\modules\admin\secrets\admin_secrets\prison_warp.dm" -#include "code\modules\admin\secrets\admin_secrets\show_ai_laws.dm" -#include "code\modules\admin\secrets\admin_secrets\show_crew_manifest.dm" -#include "code\modules\admin\secrets\admin_secrets\show_game_mode.dm" -#include "code\modules\admin\secrets\admin_secrets\show_law_changes.dm" -#include "code\modules\admin\secrets\admin_secrets\show_signalers.dm" -#include "code\modules\admin\secrets\admin_secrets\traitors_and_objectives.dm" -#include "code\modules\admin\secrets\final_solutions\summon_narsie.dm" -#include "code\modules\admin\secrets\final_solutions\supermatter_cascade.dm" -#include "code\modules\admin\secrets\fun_secrets\break_all_lights.dm" -#include "code\modules\admin\secrets\fun_secrets\break_some_lights.dm" -#include "code\modules\admin\secrets\fun_secrets\fix_all_lights.dm" -#include "code\modules\admin\secrets\fun_secrets\ghost_mode.dm" -#include "code\modules\admin\secrets\fun_secrets\paintball_mode.dm" -#include "code\modules\admin\secrets\fun_secrets\power_all_smes.dm" -#include "code\modules\admin\secrets\fun_secrets\power_failure_begin.dm" -#include "code\modules\admin\secrets\fun_secrets\power_failure_end.dm" -#include "code\modules\admin\secrets\fun_secrets\remove_all_clothing.dm" -#include "code\modules\admin\secrets\fun_secrets\remove_internal_clothing.dm" -#include "code\modules\admin\secrets\fun_secrets\send_strike_team.dm" -#include "code\modules\admin\secrets\fun_secrets\toggle_bomb_cap.dm" -#include "code\modules\admin\secrets\fun_secrets\triple_ai_mode.dm" -#include "code\modules\admin\secrets\fun_secrets\turn_humans_into_corgies.dm" -#include "code\modules\admin\secrets\fun_secrets\turn_humans_into_monkeys.dm" -#include "code\modules\admin\secrets\random_events\gravity.dm" -#include "code\modules\admin\secrets\random_events\trigger_cordical_borer_infestation.dm" -#include "code\modules\admin\secrets\random_events\trigger_xenomorph_infestation.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\antag-ooc.dm" -#include "code\modules\admin\verbs\atmosdebug.dm" -#include "code\modules\admin\verbs\BrokenInhands.dm" -#include "code\modules\admin\verbs\buildmode.dm" -#include "code\modules\admin\verbs\change_appearance.dm" -#include "code\modules\admin\verbs\check_customitem_activity.dm" -#include "code\modules\admin\verbs\cinematic.dm" -#include "code\modules\admin\verbs\custom_event.dm" -#include "code\modules\admin\verbs\dbcon_fix.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\grief_fixers.dm" -#include "code\modules\admin\verbs\lightning_strike.dm" -#include "code\modules\admin\verbs\map_template_loadverb.dm" -#include "code\modules\admin\verbs\mapping.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\smite.dm" -#include "code\modules\admin\verbs\striketeam.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\admin\view_variables\admin_delete.dm" -#include "code\modules\admin\view_variables\debug_variables.dm" -#include "code\modules\admin\view_variables\get_variables.dm" -#include "code\modules\admin\view_variables\helpers.dm" -#include "code\modules\admin\view_variables\mass_edit_variables.dm" -#include "code\modules\admin\view_variables\modify_variables.dm" -#include "code\modules\admin\view_variables\topic.dm" -#include "code\modules\admin\view_variables\topic_list.dm" -#include "code\modules\admin\view_variables\view_variables.dm" -#include "code\modules\admin\view_variables\view_variables_global.dm" -#include "code\modules\ai\_defines.dm" -#include "code\modules\ai\ai_holder.dm" -#include "code\modules\ai\ai_holder_combat.dm" -#include "code\modules\ai\ai_holder_combat_unseen.dm" -#include "code\modules\ai\ai_holder_communication.dm" -#include "code\modules\ai\ai_holder_cooperation.dm" -#include "code\modules\ai\ai_holder_debug.dm" -#include "code\modules\ai\ai_holder_disabled.dm" -#include "code\modules\ai\ai_holder_fleeing.dm" -#include "code\modules\ai\ai_holder_follow.dm" -#include "code\modules\ai\ai_holder_movement.dm" -#include "code\modules\ai\ai_holder_pathfinding.dm" -#include "code\modules\ai\ai_holder_targeting.dm" -#include "code\modules\ai\interfaces.dm" -#include "code\modules\ai\say_list.dm" -#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai.dm" -#include "code\modules\ai\ai_holder_subtypes\slime_xenobio_ai.dm" -#include "code\modules\ai\ai_holder_subtypes\xeno_alien_ai.dm" -#include "code\modules\alarm\alarm.dm" -#include "code\modules\alarm\alarm_handler.dm" -#include "code\modules\alarm\atmosphere_alarm.dm" -#include "code\modules\alarm\camera_alarm.dm" -#include "code\modules\alarm\fire_alarm.dm" -#include "code\modules\alarm\motion_alarm.dm" -#include "code\modules\alarm\power_alarm.dm" -#include "code\modules\antagonist\antagonist.dm" -#include "code\modules\antagonist\antagonist_add.dm" -#include "code\modules\antagonist\antagonist_create.dm" -#include "code\modules\antagonist\antagonist_equip.dm" -#include "code\modules\antagonist\antagonist_factions.dm" -#include "code\modules\antagonist\antagonist_helpers.dm" -#include "code\modules\antagonist\antagonist_objectives.dm" -#include "code\modules\antagonist\antagonist_panel.dm" -#include "code\modules\antagonist\antagonist_place.dm" -#include "code\modules\antagonist\antagonist_print.dm" -#include "code\modules\antagonist\antagonist_update.dm" -#include "code\modules\antagonist\alien\borer.dm" -#include "code\modules\antagonist\alien\xenomorph.dm" -#include "code\modules\antagonist\outsider\commando.dm" -#include "code\modules\antagonist\outsider\deathsquad.dm" -#include "code\modules\antagonist\outsider\ert.dm" -#include "code\modules\antagonist\outsider\mercenary.dm" -#include "code\modules\antagonist\outsider\ninja.dm" -#include "code\modules\antagonist\outsider\raider.dm" -#include "code\modules\antagonist\outsider\technomancer.dm" -#include "code\modules\antagonist\outsider\trader.dm" -#include "code\modules\antagonist\outsider\wizard.dm" -#include "code\modules\antagonist\station\changeling.dm" -#include "code\modules\antagonist\station\cultist.dm" -#include "code\modules\antagonist\station\infiltrator.dm" -#include "code\modules\antagonist\station\loyalist.dm" -#include "code\modules\antagonist\station\renegade.dm" -#include "code\modules\antagonist\station\revolutionary.dm" -#include "code\modules\antagonist\station\rogue_ai.dm" -#include "code\modules\antagonist\station\stowaway.dm" -#include "code\modules\antagonist\station\thug.dm" -#include "code\modules\antagonist\station\traitor.dm" -#include "code\modules\artifice\cursedform.dm" -#include "code\modules\artifice\deadringer.dm" -#include "code\modules\artifice\telecube.dm" -#include "code\modules\assembly\assembly.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\asset_cache\asset_cache.dm" -#include "code\modules\asset_cache\asset_cache_client.dm" -#include "code\modules\asset_cache\asset_cache_item.dm" -#include "code\modules\asset_cache\asset_list.dm" -#include "code\modules\asset_cache\asset_list_items.dm" -#include "code\modules\awaymissions\bluespaceartillery.dm" -#include "code\modules\awaymissions\corpse.dm" -#include "code\modules\awaymissions\exile.dm" -#include "code\modules\awaymissions\gateway.dm" -#include "code\modules\awaymissions\loot.dm" -#include "code\modules\awaymissions\pamphlet.dm" -#include "code\modules\awaymissions\trigger.dm" -#include "code\modules\awaymissions\zlevel.dm" -#include "code\modules\blob2\_defines.dm" -#include "code\modules\blob2\blobs\base_blob.dm" -#include "code\modules\blob2\blobs\core.dm" -#include "code\modules\blob2\blobs\factory.dm" -#include "code\modules\blob2\blobs\node.dm" -#include "code\modules\blob2\blobs\normal.dm" -#include "code\modules\blob2\blobs\resource.dm" -#include "code\modules\blob2\blobs\shield.dm" -#include "code\modules\blob2\overmind\overmind.dm" -#include "code\modules\blob2\overmind\powers.dm" -#include "code\modules\blob2\overmind\types.dm" -#include "code\modules\blob2\overmind\types\barnacle.dm" -#include "code\modules\blob2\overmind\types\blazing_oil.dm" -#include "code\modules\blob2\overmind\types\classic.dm" -#include "code\modules\blob2\overmind\types\cryogenic_goo.dm" -#include "code\modules\blob2\overmind\types\ectoplasmic_horror.dm" -#include "code\modules\blob2\overmind\types\electromagnetic_web.dm" -#include "code\modules\blob2\overmind\types\energized_jelly.dm" -#include "code\modules\blob2\overmind\types\explosive_lattice.dm" -#include "code\modules\blob2\overmind\types\fabrication_swarm.dm" -#include "code\modules\blob2\overmind\types\fulminant_organism.dm" -#include "code\modules\blob2\overmind\types\fungal_bloom.dm" -#include "code\modules\blob2\overmind\types\grey_goo.dm" -#include "code\modules\blob2\overmind\types\pressurized_slime.dm" -#include "code\modules\blob2\overmind\types\radioactive_ooze.dm" -#include "code\modules\blob2\overmind\types\ravenous_macrophage.dm" -#include "code\modules\blob2\overmind\types\reactive_spines.dm" -#include "code\modules\blob2\overmind\types\roiling_mold.dm" -#include "code\modules\blob2\overmind\types\shifting_fragments.dm" -#include "code\modules\blob2\overmind\types\synchronous_mesh.dm" -#include "code\modules\blob2\overmind\types\volatile_alluvium.dm" -#include "code\modules\busy_space\air_traffic.dm" -#include "code\modules\busy_space\locations.dm" -#include "code\modules\busy_space\loremaster.dm" -#include "code\modules\busy_space\missions.dm" -#include "code\modules\busy_space\organizations.dm" -#include "code\modules\busy_space\systems.dm" -#include "code\modules\catalogue\atoms.dm" -#include "code\modules\catalogue\catalogue_data.dm" -#include "code\modules\catalogue\cataloguer.dm" -#include "code\modules\catalogue\cataloguer_visuals.dm" -#include "code\modules\client\client defines.dm" -#include "code\modules\client\client procs.dm" -#include "code\modules\client\movement.dm" -#include "code\modules\client\preferences.dm" -#include "code\modules\client\preferences_factions.dm" -#include "code\modules\client\preferences_savefile.dm" -#include "code\modules\client\preferences_spawnpoints.dm" -#include "code\modules\client\preferences_toggle_procs.dm" -#include "code\modules\client\spam_prevention.dm" -#include "code\modules\client\ui_style.dm" -#include "code\modules\client\preference_setup\_defines.dm" -#include "code\modules\client\preference_setup\preference_setup.dm" -#include "code\modules\client\preference_setup\antagonism\01_basic.dm" -#include "code\modules\client\preference_setup\antagonism\02_candidacy.dm" -#include "code\modules\client\preference_setup\general\01_basic.dm" -#include "code\modules\client\preference_setup\general\02_language.dm" -#include "code\modules\client\preference_setup\general\03_body.dm" -#include "code\modules\client\preference_setup\general\04_equipment.dm" -#include "code\modules\client\preference_setup\general\05_background.dm" -#include "code\modules\client\preference_setup\general\06_flavor.dm" -#include "code\modules\client\preference_setup\global\01_ui.dm" -#include "code\modules\client\preference_setup\global\02_settings.dm" -#include "code\modules\client\preference_setup\global\03_pai.dm" -#include "code\modules\client\preference_setup\global\setting_datums.dm" -#include "code\modules\client\preference_setup\loadout\gear_tweaks.dm" -#include "code\modules\client\preference_setup\loadout\loadout.dm" -#include "code\modules\client\preference_setup\loadout\loadout_accessories.dm" -#include "code\modules\client\preference_setup\loadout\loadout_contraband.dm" -#include "code\modules\client\preference_setup\loadout\loadout_cosmetics.dm" -#include "code\modules\client\preference_setup\loadout\loadout_cyberware.dm" -#include "code\modules\client\preference_setup\loadout\loadout_ears.dm" -#include "code\modules\client\preference_setup\loadout\loadout_eyes.dm" -#include "code\modules\client\preference_setup\loadout\loadout_general.dm" -#include "code\modules\client\preference_setup\loadout\loadout_gloves.dm" -#include "code\modules\client\preference_setup\loadout\loadout_head.dm" -#include "code\modules\client\preference_setup\loadout\loadout_mask.dm" -#include "code\modules\client\preference_setup\loadout\loadout_shoes.dm" -#include "code\modules\client\preference_setup\loadout\loadout_smoking.dm" -#include "code\modules\client\preference_setup\loadout\loadout_suit.dm" -#include "code\modules\client\preference_setup\loadout\loadout_uniform.dm" -#include "code\modules\client\preference_setup\loadout\loadout_utility.dm" -#include "code\modules\client\preference_setup\loadout\loadout_xeno.dm" -#include "code\modules\client\preference_setup\occupation\occupation.dm" -#include "code\modules\client\preference_setup\skills\skills.dm" -#include "code\modules\client\preference_setup\traits\trait_defines.dm" -#include "code\modules\client\preference_setup\traits\traits.dm" -#include "code\modules\client\preference_setup\volume_sliders\01_volume.dm" -#include "code\modules\client\verbs\advanced_who.dm" -#include "code\modules\client\verbs\ignore.dm" -#include "code\modules\client\verbs\ooc.dm" -#include "code\modules\client\verbs\ping.dm" -#include "code\modules\client\verbs\who.dm" -#include "code\modules\clothing\chameleon.dm" -#include "code\modules\clothing\clothing.dm" -#include "code\modules\clothing\clothing_accessories.dm" -#include "code\modules\clothing\clothing_icons.dm" -#include "code\modules\clothing\ears\earrings.dm" -#include "code\modules\clothing\ears\ears.dm" -#include "code\modules\clothing\ears\headphones.dm" -#include "code\modules\clothing\glasses\glasses.dm" -#include "code\modules\clothing\glasses\hud.dm" -#include "code\modules\clothing\gloves\antagonist.dm" -#include "code\modules\clothing\gloves\arm_guards.dm" -#include "code\modules\clothing\gloves\boxing.dm" -#include "code\modules\clothing\gloves\color.dm" -#include "code\modules\clothing\gloves\gauntlets.dm" -#include "code\modules\clothing\gloves\miscellaneous.dm" -#include "code\modules\clothing\head\collectable.dm" -#include "code\modules\clothing\head\flowercrowns.dm" -#include "code\modules\clothing\head\hardhat.dm" -#include "code\modules\clothing\head\helmet.dm" -#include "code\modules\clothing\head\hood.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\pilot_helmet.dm" -#include "code\modules\clothing\head\soft_caps.dm" -#include "code\modules\clothing\head\solgov.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\voice.dm" -#include "code\modules\clothing\rings\material.dm" -#include "code\modules\clothing\rings\rings.dm" -#include "code\modules\clothing\shoes\boots.dm" -#include "code\modules\clothing\shoes\colour.dm" -#include "code\modules\clothing\shoes\leg_guards.dm" -#include "code\modules\clothing\shoes\magboots.dm" -#include "code\modules\clothing\shoes\miscellaneous.dm" -#include "code\modules\clothing\shoes\xeno\teshari.dm" -#include "code\modules\clothing\spacesuits\alien.dm" -#include "code\modules\clothing\spacesuits\breaches.dm" -#include "code\modules\clothing\spacesuits\miscellaneous.dm" -#include "code\modules\clothing\spacesuits\spacesuits.dm" -#include "code\modules\clothing\spacesuits\syndi.dm" -#include "code\modules\clothing\spacesuits\rig\rig.dm" -#include "code\modules\clothing\spacesuits\rig\rig_attackby.dm" -#include "code\modules\clothing\spacesuits\rig\rig_pieces.dm" -#include "code\modules\clothing\spacesuits\rig\rig_tgui.dm" -#include "code\modules\clothing\spacesuits\rig\rig_verbs.dm" -#include "code\modules\clothing\spacesuits\rig\rig_wiring.dm" -#include "code\modules\clothing\spacesuits\rig\modules\modules.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\ai_container.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\chem_dispenser.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\cleaner_launcher.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\cloak.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\datajack.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\device.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\electrowarfare.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\grenade_launcher.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\inhand_fabricator.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\jetpack.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\metalfoam_launcher.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\mounted_gun.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\powersink.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\self_destruct.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\sprinter.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\teleporter.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\vision.dm" -#include "code\modules\clothing\spacesuits\rig\modules\specific\voice.dm" -#include "code\modules\clothing\spacesuits\rig\suits\alien.dm" -#include "code\modules\clothing\spacesuits\rig\suits\combat.dm" -#include "code\modules\clothing\spacesuits\rig\suits\ert.dm" -#include "code\modules\clothing\spacesuits\rig\suits\light.dm" -#include "code\modules\clothing\spacesuits\rig\suits\merc.dm" -#include "code\modules\clothing\spacesuits\rig\suits\pmc.dm" -#include "code\modules\clothing\spacesuits\rig\suits\robotics.dm" -#include "code\modules\clothing\spacesuits\rig\suits\station.dm" -#include "code\modules\clothing\spacesuits\void\event.dm" -#include "code\modules\clothing\spacesuits\void\merc.dm" -#include "code\modules\clothing\spacesuits\void\misc.dm" -#include "code\modules\clothing\spacesuits\void\station.dm" -#include "code\modules\clothing\spacesuits\void\void.dm" -#include "code\modules\clothing\spacesuits\void\wizard.dm" -#include "code\modules\clothing\spacesuits\void\zaddat.dm" -#include "code\modules\clothing\suits\armor.dm" -#include "code\modules\clothing\suits\bio.dm" -#include "code\modules\clothing\suits\hooded.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\solgov.dm" -#include "code\modules\clothing\suits\storage.dm" -#include "code\modules\clothing\suits\utility.dm" -#include "code\modules\clothing\suits\wiz_robe.dm" -#include "code\modules\clothing\suits\aliens\tajara.dm" -#include "code\modules\clothing\suits\aliens\teshari.dm" -#include "code\modules\clothing\suits\aliens\unathi.dm" -#include "code\modules\clothing\suits\aliens\vox.dm" -#include "code\modules\clothing\under\color.dm" -#include "code\modules\clothing\under\costume.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\solgov.dm" -#include "code\modules\clothing\under\syndicate.dm" -#include "code\modules\clothing\under\accessories\accessory.dm" -#include "code\modules\clothing\under\accessories\armband.dm" -#include "code\modules\clothing\under\accessories\armor.dm" -#include "code\modules\clothing\under\accessories\badges.dm" -#include "code\modules\clothing\under\accessories\clothing.dm" -#include "code\modules\clothing\under\accessories\holster.dm" -#include "code\modules\clothing\under\accessories\lockets.dm" -#include "code\modules\clothing\under\accessories\permits.dm" -#include "code\modules\clothing\under\accessories\storage.dm" -#include "code\modules\clothing\under\accessories\torch.dm" -#include "code\modules\clothing\under\accessories\crafted\poncho.dm" -#include "code\modules\clothing\under\accessories\temperature\poncho.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\xenos\teshari.dm" -#include "code\modules\clothing\under\xenos\vox.dm" -#include "code\modules\compass\_compass.dm" -#include "code\modules\compass\compass_holder.dm" -#include "code\modules\compass\compass_waypoint.dm" -#include "code\modules\compass\~compass.dm" -#include "code\modules\customitems\item_spawning.dm" -#include "code\modules\detectivework\footprints.dm" -#include "code\modules\detectivework\forensics.dm" -#include "code\modules\detectivework\microscope\dnascanner.dm" -#include "code\modules\detectivework\microscope\microscope.dm" -#include "code\modules\detectivework\tools\crimekit.dm" -#include "code\modules\detectivework\tools\evidencebag.dm" -#include "code\modules\detectivework\tools\luminol.dm" -#include "code\modules\detectivework\tools\rag.dm" -#include "code\modules\detectivework\tools\sample_kits.dm" -#include "code\modules\detectivework\tools\scanner.dm" -#include "code\modules\detectivework\tools\storage.dm" -#include "code\modules\detectivework\tools\swabs.dm" -#include "code\modules\detectivework\tools\uvlight.dm" -#include "code\modules\economy\Accounts.dm" -#include "code\modules\economy\Accounts_DB.dm" -#include "code\modules\economy\ATM.dm" -#include "code\modules\economy\cash.dm" -#include "code\modules\economy\cash_register.dm" -#include "code\modules\economy\coins.dm" -#include "code\modules\economy\economy_misc.dm" -#include "code\modules\economy\EFTPOS.dm" -#include "code\modules\economy\Events.dm" -#include "code\modules\economy\Events_Mundane.dm" -#include "code\modules\economy\lorenews.dm" -#include "code\modules\economy\mint.dm" -#include "code\modules\economy\money_bag.dm" -#include "code\modules\economy\price_list.dm" -#include "code\modules\economy\retail_scanner.dm" -#include "code\modules\economy\TradeDestinations.dm" -#include "code\modules\economy\vending.dm" -#include "code\modules\economy\vending_machines.dm" -#include "code\modules\effects\vfx\_effect_system.dm" -#include "code\modules\effects\vfx\explosion.dm" -#include "code\modules\effects\vfx\explosion_particles.dm" -#include "code\modules\effects\vfx\ion_trail.dm" -#include "code\modules\effects\vfx\smoke.dm" -#include "code\modules\effects\vfx\sparks.dm" -#include "code\modules\effects\vfx\steam.dm" -#include "code\modules\emotes\emote_define.dm" -#include "code\modules\emotes\emote_mob.dm" -#include "code\modules\emotes\definitions\_mob.dm" -#include "code\modules\emotes\definitions\_species.dm" -#include "code\modules\emotes\definitions\audible.dm" -#include "code\modules\emotes\definitions\audible_cough.dm" -#include "code\modules\emotes\definitions\audible_scream.dm" -#include "code\modules\emotes\definitions\audible_slap.dm" -#include "code\modules\emotes\definitions\audible_snap.dm" -#include "code\modules\emotes\definitions\audible_sneeze.dm" -#include "code\modules\emotes\definitions\audible_whistle.dm" -#include "code\modules\emotes\definitions\exertion.dm" -#include "code\modules\emotes\definitions\human.dm" -#include "code\modules\emotes\definitions\slimes.dm" -#include "code\modules\emotes\definitions\synthetics.dm" -#include "code\modules\emotes\definitions\visible.dm" -#include "code\modules\emotes\definitions\visible_animated.dm" -#include "code\modules\emotes\definitions\visible_vomit.dm" -#include "code\modules\error_handler\_defines.dm" -#include "code\modules\error_handler\error_handler.dm" -#include "code\modules\error_handler\error_viewer.dm" -#include "code\modules\error_handler\~defines.dm" -#include "code\modules\events\apc_damage.dm" -#include "code\modules\events\atmos_leak.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\camera_damage.dm" -#include "code\modules\events\canister_leak.dm" -#include "code\modules\events\carp_migration.dm" -#include "code\modules\events\comms_blackout.dm" -#include "code\modules\events\communications_blackout.dm" -#include "code\modules\events\dust.dm" -#include "code\modules\events\electrical_storm.dm" -#include "code\modules\events\event.dm" -#include "code\modules\events\event_container.dm" -#include "code\modules\events\event_dynamic.dm" -#include "code\modules\events\event_manager.dm" -#include "code\modules\events\gravity.dm" -#include "code\modules\events\grid_check.dm" -#include "code\modules\events\infestation.dm" -#include "code\modules\events\ion_storm.dm" -#include "code\modules\events\meteors.dm" -#include "code\modules\events\money_hacker.dm" -#include "code\modules\events\money_lotto.dm" -#include "code\modules\events\money_spam.dm" -#include "code\modules\events\prison_break.dm" -#include "code\modules\events\radiation_storm.dm" -#include "code\modules\events\random_antagonist.dm" -#include "code\modules\events\rogue_drones.dm" -#include "code\modules\events\shipping_error.dm" -#include "code\modules\events\solar_storm.dm" -#include "code\modules\events\space_ninja.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\wallrot.dm" -#include "code\modules\examine\examine.dm" -#include "code\modules\examine\stat_icons.dm" -#include "code\modules\examine\descriptions\armor.dm" -#include "code\modules\examine\descriptions\atmospherics.dm" -#include "code\modules\examine\descriptions\containers.dm" -#include "code\modules\examine\descriptions\devices.dm" -#include "code\modules\examine\descriptions\engineering.dm" -#include "code\modules\examine\descriptions\machines.dm" -#include "code\modules\examine\descriptions\medical.dm" -#include "code\modules\examine\descriptions\mobs.dm" -#include "code\modules\examine\descriptions\paperwork.dm" -#include "code\modules\examine\descriptions\stacks.dm" -#include "code\modules\examine\descriptions\structures.dm" -#include "code\modules\examine\descriptions\telecomms.dm" -#include "code\modules\examine\descriptions\turfs.dm" -#include "code\modules\examine\descriptions\weapons.dm" -#include "code\modules\ext_scripts\irc.dm" -#include "code\modules\ext_scripts\python.dm" -#include "code\modules\fishing\fishing.dm" -#include "code\modules\fishing\fishing_net.dm" -#include "code\modules\fishing\fishing_rod.dm" -#include "code\modules\flufftext\Dreaming.dm" -#include "code\modules\flufftext\Hallucination.dm" -#include "code\modules\flufftext\look_up.dm" -#include "code\modules\food\food.dm" -#include "code\modules\food\recipe.dm" -#include "code\modules\food\recipe_dump.dm" -#include "code\modules\food\recipes_fryer.dm" -#include "code\modules\food\recipes_grill.dm" -#include "code\modules\food\recipes_microwave.dm" -#include "code\modules\food\recipes_oven.dm" -#include "code\modules\food\drinkingglass\drinkingglass.dm" -#include "code\modules\food\drinkingglass\extras.dm" -#include "code\modules\food\drinkingglass\glass_boxes.dm" -#include "code\modules\food\drinkingglass\glass_types.dm" -#include "code\modules\food\drinkingglass\metaglass.dm" -#include "code\modules\food\drinkingglass\mugs.dm" -#include "code\modules\food\drinkingglass\shaker.dm" -#include "code\modules\food\food\cans.dm" -#include "code\modules\food\food\condiment.dm" -#include "code\modules\food\food\drinks.dm" -#include "code\modules\food\food\lunch.dm" -#include "code\modules\food\food\sandwich.dm" -#include "code\modules\food\food\snacks.dm" -#include "code\modules\food\food\thecake.dm" -#include "code\modules\food\food\drinks\bottle.dm" -#include "code\modules\food\food\drinks\cup.dm" -#include "code\modules\food\food\drinks\drinkingglass.dm" -#include "code\modules\food\food\drinks\jar.dm" -#include "code\modules\food\food\drinks\bottle\robot.dm" -#include "code\modules\food\food\snacks\meat.dm" -#include "code\modules\food\glass\bottle.dm" -#include "code\modules\food\glass\bottle\robot.dm" -#include "code\modules\food\kitchen\gibber.dm" -#include "code\modules\food\kitchen\icecream.dm" -#include "code\modules\food\kitchen\microwave.dm" -#include "code\modules\food\kitchen\cooking_machines\_appliance.dm" -#include "code\modules\food\kitchen\cooking_machines\_cooker.dm" -#include "code\modules\food\kitchen\cooking_machines\_cooker_output.dm" -#include "code\modules\food\kitchen\cooking_machines\_mixer.dm" -#include "code\modules\food\kitchen\cooking_machines\candy.dm" -#include "code\modules\food\kitchen\cooking_machines\cereal.dm" -#include "code\modules\food\kitchen\cooking_machines\container.dm" -#include "code\modules\food\kitchen\cooking_machines\fryer.dm" -#include "code\modules\food\kitchen\cooking_machines\grill.dm" -#include "code\modules\food\kitchen\cooking_machines\oven.dm" -#include "code\modules\food\kitchen\smartfridge\drying_rack.dm" -#include "code\modules\food\kitchen\smartfridge\engineering.dm" -#include "code\modules\food\kitchen\smartfridge\hydroponics.dm" -#include "code\modules\food\kitchen\smartfridge\medical.dm" -#include "code\modules\food\kitchen\smartfridge\smartfridge.dm" -#include "code\modules\gamemaster\defines.dm" -#include "code\modules\gamemaster\event2\event.dm" -#include "code\modules\gamemaster\event2\meta.dm" -#include "code\modules\gamemaster\event2\events\ghost_pod_spawner.dm" -#include "code\modules\gamemaster\event2\events\mob_spawning.dm" -#include "code\modules\gamemaster\event2\events\cargo\shipping_error.dm" -#include "code\modules\gamemaster\event2\events\command\manifest_malfunction.dm" -#include "code\modules\gamemaster\event2\events\command\money_hacker.dm" -#include "code\modules\gamemaster\event2\events\command\raise_funds.dm" -#include "code\modules\gamemaster\event2\events\engineering\airlock_failure.dm" -#include "code\modules\gamemaster\event2\events\engineering\blob.dm" -#include "code\modules\gamemaster\event2\events\engineering\brand_intelligence.dm" -#include "code\modules\gamemaster\event2\events\engineering\camera_damage.dm" -#include "code\modules\gamemaster\event2\events\engineering\canister_leak.dm" -#include "code\modules\gamemaster\event2\events\engineering\dust.dm" -#include "code\modules\gamemaster\event2\events\engineering\gas_leak.dm" -#include "code\modules\gamemaster\event2\events\engineering\grid_check.dm" -#include "code\modules\gamemaster\event2\events\engineering\space_meteor_defense.dm" -#include "code\modules\gamemaster\event2\events\engineering\spacevine.dm" -#include "code\modules\gamemaster\event2\events\engineering\wallrot.dm" -#include "code\modules\gamemaster\event2\events\engineering\window_break.dm" -#include "code\modules\gamemaster\event2\events\everyone\comms_blackout.dm" -#include "code\modules\gamemaster\event2\events\everyone\electrical_fault.dm" -#include "code\modules\gamemaster\event2\events\everyone\gravity.dm" -#include "code\modules\gamemaster\event2\events\everyone\infestation.dm" -#include "code\modules\gamemaster\event2\events\everyone\pda_spam.dm" -#include "code\modules\gamemaster\event2\events\everyone\radiation_storm.dm" -#include "code\modules\gamemaster\event2\events\everyone\random_antag.dm" -#include "code\modules\gamemaster\event2\events\everyone\solar_storm.dm" -#include "code\modules\gamemaster\event2\events\everyone\sudden_weather_shift.dm" -#include "code\modules\gamemaster\event2\events\legacy\legacy.dm" -#include "code\modules\gamemaster\event2\events\medical\appendicitis.dm" -#include "code\modules\gamemaster\event2\events\medical\virus.dm" -#include "code\modules\gamemaster\event2\events\security\carp_migration.dm" -#include "code\modules\gamemaster\event2\events\security\drill_announcement.dm" -#include "code\modules\gamemaster\event2\events\security\prison_break.dm" -#include "code\modules\gamemaster\event2\events\security\rogue_drones.dm" -#include "code\modules\gamemaster\event2\events\security\security_advisement.dm" -#include "code\modules\gamemaster\event2\events\security\spider_infestation.dm" -#include "code\modules\gamemaster\event2\events\security\stowaway.dm" -#include "code\modules\gamemaster\event2\events\security\surprise_carp.dm" -#include "code\modules\gamemaster\event2\events\security\swarm_boarder.dm" -#include "code\modules\gamemaster\event2\events\synthetic\ion_storm.dm" -#include "code\modules\games\cah.dm" -#include "code\modules\games\cah_black_cards.dm" -#include "code\modules\games\cah_white_cards.dm" -#include "code\modules\games\cardemon.dm" -#include "code\modules\games\cards.dm" -#include "code\modules\games\dice.dm" -#include "code\modules\games\spaceball_cards.dm" -#include "code\modules\games\tarot.dm" -#include "code\modules\genetics\side_effects.dm" -#include "code\modules\ghosttrap\trap.dm" -#include "code\modules\holodeck\HolodeckControl.dm" -#include "code\modules\holodeck\HolodeckObjects.dm" -#include "code\modules\holodeck\HolodeckPrograms.dm" -#include "code\modules\holomap\generate_holomap.dm" -#include "code\modules\holomap\holomap_area.dm" -#include "code\modules\holomap\holomap_datum.dm" -#include "code\modules\holomap\mapper.dm" -#include "code\modules\holomap\station_holomap.dm" -#include "code\modules\hydroponics\_hydro_setup.dm" -#include "code\modules\hydroponics\grown.dm" -#include "code\modules\hydroponics\grown_inedible.dm" -#include "code\modules\hydroponics\grown_predefined.dm" -#include "code\modules\hydroponics\grown_sif.dm" -#include "code\modules\hydroponics\seed.dm" -#include "code\modules\hydroponics\seed_controller.dm" -#include "code\modules\hydroponics\seed_gene_mut.dm" -#include "code\modules\hydroponics\seed_machines.dm" -#include "code\modules\hydroponics\seed_mobs.dm" -#include "code\modules\hydroponics\seed_packets.dm" -#include "code\modules\hydroponics\seed_storage.dm" -#include "code\modules\hydroponics\beekeeping\beehive.dm" -#include "code\modules\hydroponics\seedtypes\amauri.dm" -#include "code\modules\hydroponics\seedtypes\ambrosia.dm" -#include "code\modules\hydroponics\seedtypes\apples.dm" -#include "code\modules\hydroponics\seedtypes\banana.dm" -#include "code\modules\hydroponics\seedtypes\berries.dm" -#include "code\modules\hydroponics\seedtypes\cabbage.dm" -#include "code\modules\hydroponics\seedtypes\carrots.dm" -#include "code\modules\hydroponics\seedtypes\celery.dm" -#include "code\modules\hydroponics\seedtypes\cherries.dm" -#include "code\modules\hydroponics\seedtypes\chili.dm" -#include "code\modules\hydroponics\seedtypes\citrus.dm" -#include "code\modules\hydroponics\seedtypes\cocoa.dm" -#include "code\modules\hydroponics\seedtypes\corn.dm" -#include "code\modules\hydroponics\seedtypes\diona.dm" -#include "code\modules\hydroponics\seedtypes\durian.dm" -#include "code\modules\hydroponics\seedtypes\dyn.dm" -#include "code\modules\hydroponics\seedtypes\eggplant.dm" -#include "code\modules\hydroponics\seedtypes\eki.dm" -#include "code\modules\hydroponics\seedtypes\flowers.dm" -#include "code\modules\hydroponics\seedtypes\gelthi.dm" -#include "code\modules\hydroponics\seedtypes\grapes.dm" -#include "code\modules\hydroponics\seedtypes\grass.dm" -#include "code\modules\hydroponics\seedtypes\guali.dm" -#include "code\modules\hydroponics\seedtypes\guami.dm" -#include "code\modules\hydroponics\seedtypes\jurlmah.dm" -#include "code\modules\hydroponics\seedtypes\kirani.dm" -#include "code\modules\hydroponics\seedtypes\kudzu.dm" -#include "code\modules\hydroponics\seedtypes\lettuce.dm" -#include "code\modules\hydroponics\seedtypes\malanitear.dm" -#include "code\modules\hydroponics\seedtypes\mushrooms.dm" -#include "code\modules\hydroponics\seedtypes\nettles.dm" -#include "code\modules\hydroponics\seedtypes\nutmeg.dm" -#include "code\modules\hydroponics\seedtypes\onion.dm" -#include "code\modules\hydroponics\seedtypes\peanuts.dm" -#include "code\modules\hydroponics\seedtypes\pineapple.dm" -#include "code\modules\hydroponics\seedtypes\potato.dm" -#include "code\modules\hydroponics\seedtypes\pumpkin.dm" -#include "code\modules\hydroponics\seedtypes\qalozyn.dm" -#include "code\modules\hydroponics\seedtypes\qazal.dm" -#include "code\modules\hydroponics\seedtypes\qlort.dm" -#include "code\modules\hydroponics\seedtypes\rhubarb.dm" -#include "code\modules\hydroponics\seedtypes\rice.dm" -#include "code\modules\hydroponics\seedtypes\selemhand.dm" -#include "code\modules\hydroponics\seedtypes\soybean.dm" -#include "code\modules\hydroponics\seedtypes\sugarcane.dm" -#include "code\modules\hydroponics\seedtypes\surik.dm" -#include "code\modules\hydroponics\seedtypes\telriis.dm" -#include "code\modules\hydroponics\seedtypes\thaadra.dm" -#include "code\modules\hydroponics\seedtypes\tobacco.dm" -#include "code\modules\hydroponics\seedtypes\tomatoes.dm" -#include "code\modules\hydroponics\seedtypes\vale.dm" -#include "code\modules\hydroponics\seedtypes\vanilla.dm" -#include "code\modules\hydroponics\seedtypes\wabback.dm" -#include "code\modules\hydroponics\seedtypes\watermelon.dm" -#include "code\modules\hydroponics\seedtypes\weeds.dm" -#include "code\modules\hydroponics\seedtypes\wheat.dm" -#include "code\modules\hydroponics\seedtypes\whitebeets.dm" -#include "code\modules\hydroponics\seedtypes\wurmwoad.dm" -#include "code\modules\hydroponics\seedtypes\xeno.dm" -#include "code\modules\hydroponics\spreading\spreading.dm" -#include "code\modules\hydroponics\spreading\spreading_growth.dm" -#include "code\modules\hydroponics\spreading\spreading_response.dm" -#include "code\modules\hydroponics\trays\tray.dm" -#include "code\modules\hydroponics\trays\tray_process.dm" -#include "code\modules\hydroponics\trays\tray_reagents.dm" -#include "code\modules\hydroponics\trays\tray_soil.dm" -#include "code\modules\hydroponics\trays\tray_tools.dm" -#include "code\modules\hydroponics\trays\tray_update_icons.dm" -#include "code\modules\identification\identification.dm" -#include "code\modules\identification\item_procs.dm" -#include "code\modules\integrated_electronics\_defines.dm" -#include "code\modules\integrated_electronics\core\assemblies.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\tools.dm" -#include "code\modules\integrated_electronics\core\assemblies\clothing.dm" -#include "code\modules\integrated_electronics\core\assemblies\device.dm" -#include "code\modules\integrated_electronics\core\assemblies\generic.dm" -#include "code\modules\integrated_electronics\core\assemblies\implant.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\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\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\arithmetic.dm" -#include "code\modules\integrated_electronics\subtypes\built_in.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\time.dm" -#include "code\modules\integrated_electronics\subtypes\trig.dm" -#include "code\modules\integrated_electronics\~defines\~defines.dm" -#include "code\modules\keybindings\bindings_atom.dm" -#include "code\modules\keybindings\bindings_movekeys.dm" -#include "code\modules\keybindings\setup.dm" -#include "code\modules\library\lib_items.dm" -#include "code\modules\library\lib_machines.dm" -#include "code\modules\library\lib_readme.dm" -#include "code\modules\library\hardcode_library\_library.dm" -#include "code\modules\library\hardcode_library\fiction\APsychonaut.dm" -#include "code\modules\library\hardcode_library\fiction\battlefieldcommander.dm" -#include "code\modules\library\hardcode_library\fiction\PortedBooks.dm" -#include "code\modules\library\hardcode_library\fiction\schnayy.dm" -#include "code\modules\library\hardcode_library\non-fiction\PortedBooks.dm" -#include "code\modules\library\hardcode_library\reference\PortedBooks.dm" -#include "code\modules\library\hardcode_library\reference\Schnayy.dm" -#include "code\modules\library\hardcode_library\religious\PortedBooks.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_overlay.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\looking_glass\lg_area.dm" -#include "code\modules\looking_glass\lg_console.dm" -#include "code\modules\looking_glass\lg_imageholder.dm" -#include "code\modules\looking_glass\lg_turfs.dm" -#include "code\modules\lore_codex\codex.dm" -#include "code\modules\lore_codex\codex_tree.dm" -#include "code\modules\lore_codex\pages.dm" -#include "code\modules\lore_codex\legal_code_data\corporate_regulations.dm" -#include "code\modules\lore_codex\legal_code_data\main.dm" -#include "code\modules\lore_codex\legal_code_data\sif_law.dm" -#include "code\modules\lore_codex\legal_code_data\sop.dm" -#include "code\modules\lore_codex\lore_data\important_locations.dm" -#include "code\modules\lore_codex\lore_data\main.dm" -#include "code\modules\lore_codex\lore_data\orgs.dm" -#include "code\modules\lore_codex\lore_data\political_parties.dm" -#include "code\modules\lore_codex\lore_data\species.dm" -#include "code\modules\lore_codex\news_data\main.dm" -#include "code\modules\lore_codex\robutt_data\bybrand.dm" -#include "code\modules\lore_codex\robutt_data\main_robutts.dm" -#include "code\modules\lore_codex\robutt_data\more.dm" -#include "code\modules\maps\tg\dmm_suite.dm" -#include "code\modules\maps\tg\map_template.dm" -#include "code\modules\maps\tg\reader.dm" -#include "code\modules\materials\fifty_spawner.dm" -#include "code\modules\materials\fifty_spawner_mats.dm" -#include "code\modules\materials\material_synth.dm" -#include "code\modules\materials\materials\_materials.dm" -#include "code\modules\materials\materials\alien_alloy.dm" -#include "code\modules\materials\materials\cult.dm" -#include "code\modules\materials\materials\gems.dm" -#include "code\modules\materials\materials\glass.dm" -#include "code\modules\materials\materials\holographic.dm" -#include "code\modules\materials\materials\plastic.dm" -#include "code\modules\materials\materials\snow.dm" -#include "code\modules\materials\materials\stone.dm" -#include "code\modules\materials\materials\supermatter.dm" -#include "code\modules\materials\materials\metals\hull.dm" -#include "code\modules\materials\materials\metals\metals.dm" -#include "code\modules\materials\materials\metals\plasteel.dm" -#include "code\modules\materials\materials\metals\steel.dm" -#include "code\modules\materials\materials\organic\animal_products.dm" -#include "code\modules\materials\materials\organic\cloth.dm" -#include "code\modules\materials\materials\organic\grass.dm" -#include "code\modules\materials\materials\organic\leather.dm" -#include "code\modules\materials\materials\organic\resin.dm" -#include "code\modules\materials\materials\organic\wood.dm" -#include "code\modules\materials\sheets\_sheets.dm" -#include "code\modules\materials\sheets\gems.dm" -#include "code\modules\materials\sheets\glass.dm" -#include "code\modules\materials\sheets\plastic.dm" -#include "code\modules\materials\sheets\snow.dm" -#include "code\modules\materials\sheets\stone.dm" -#include "code\modules\materials\sheets\supermatter.dm" -#include "code\modules\materials\sheets\metals\hull.dm" -#include "code\modules\materials\sheets\metals\metal.dm" -#include "code\modules\materials\sheets\metals\rods.dm" -#include "code\modules\materials\sheets\organic\animal_products.dm" -#include "code\modules\materials\sheets\organic\resin.dm" -#include "code\modules\materials\sheets\organic\textiles.dm" -#include "code\modules\materials\sheets\organic\wood.dm" -#include "code\modules\materials\sheets\organic\tanning\hide.dm" -#include "code\modules\materials\sheets\organic\tanning\hide_hairless.dm" -#include "code\modules\materials\sheets\organic\tanning\leather_wet.dm" -#include "code\modules\materials\sheets\organic\tanning\tanning_rack.dm" -#include "code\modules\metric\activity.dm" -#include "code\modules\metric\count.dm" -#include "code\modules\metric\department.dm" -#include "code\modules\metric\metric.dm" -#include "code\modules\mining\abandonedcrates.dm" -#include "code\modules\mining\alloys.dm" -#include "code\modules\mining\fulton.dm" -#include "code\modules\mining\mine_items.dm" -#include "code\modules\mining\mine_outcrops.dm" -#include "code\modules\mining\mine_turfs.dm" -#include "code\modules\mining\mineral_effect.dm" -#include "code\modules\mining\ore.dm" -#include "code\modules\mining\ore_box.dm" -#include "code\modules\mining\ore_datum.dm" -#include "code\modules\mining\drilling\drill.dm" -#include "code\modules\mining\drilling\scanner.dm" -#include "code\modules\mining\machinery\machine_input_output_plates.dm" -#include "code\modules\mining\machinery\machine_processing.dm" -#include "code\modules\mining\machinery\machine_stacking.dm" -#include "code\modules\mining\machinery\machine_unloading.dm" -#include "code\modules\mining\ore_redemption_machine\construction.dm" -#include "code\modules\mining\ore_redemption_machine\equipment_vendor.dm" -#include "code\modules\mining\ore_redemption_machine\mine_point_items.dm" -#include "code\modules\mining\ore_redemption_machine\survey_vendor.dm" -#include "code\modules\mob\animations.dm" -#include "code\modules\mob\death.dm" -#include "code\modules\mob\emote.dm" -#include "code\modules\mob\gender.dm" -#include "code\modules\mob\hear_say.dm" -#include "code\modules\mob\holder.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_grab.dm" -#include "code\modules\mob\mob_grab_specials.dm" -#include "code\modules\mob\mob_helpers.dm" -#include "code\modules\mob\mob_movement.dm" -#include "code\modules\mob\mob_planes.dm" -#include "code\modules\mob\mob_transformation_simple.dm" -#include "code\modules\mob\say.dm" -#include "code\modules\mob\skillset.dm" -#include "code\modules\mob\transform_procs.dm" -#include "code\modules\mob\update_icons.dm" -#include "code\modules\mob\_modifiers\aura.dm" -#include "code\modules\mob\_modifiers\changeling.dm" -#include "code\modules\mob\_modifiers\cloning.dm" -#include "code\modules\mob\_modifiers\feysight.dm" -#include "code\modules\mob\_modifiers\fire.dm" -#include "code\modules\mob\_modifiers\medical.dm" -#include "code\modules\mob\_modifiers\modifiers.dm" -#include "code\modules\mob\_modifiers\modifiers_misc.dm" -#include "code\modules\mob\_modifiers\traits.dm" -#include "code\modules\mob\_modifiers\traits_phobias.dm" -#include "code\modules\mob\_modifiers\unholy.dm" -#include "code\modules\mob\dead\corpse.dm" -#include "code\modules\mob\dead\death.dm" -#include "code\modules\mob\dead\observer\login.dm" -#include "code\modules\mob\dead\observer\logout.dm" -#include "code\modules\mob\dead\observer\observer.dm" -#include "code\modules\mob\dead\observer\say.dm" -#include "code\modules\mob\freelook\chunk.dm" -#include "code\modules\mob\freelook\eye.dm" -#include "code\modules\mob\freelook\life.dm" -#include "code\modules\mob\freelook\update_triggers.dm" -#include "code\modules\mob\freelook\visualnet.dm" -#include "code\modules\mob\freelook\ai\cameranet.dm" -#include "code\modules\mob\freelook\ai\chunk.dm" -#include "code\modules\mob\freelook\ai\eye.dm" -#include "code\modules\mob\freelook\ai\update_triggers.dm" -#include "code\modules\mob\freelook\mask\chunk.dm" -#include "code\modules\mob\freelook\mask\cultnet.dm" -#include "code\modules\mob\freelook\mask\eye.dm" -#include "code\modules\mob\freelook\mask\update_triggers.dm" -#include "code\modules\mob\language\generic.dm" -#include "code\modules\mob\language\language.dm" -#include "code\modules\mob\language\monkey.dm" -#include "code\modules\mob\language\outsider.dm" -#include "code\modules\mob\language\station.dm" -#include "code\modules\mob\language\synthetic.dm" -#include "code\modules\mob\living\autohiss.dm" -#include "code\modules\mob\living\butchering.dm" -#include "code\modules\mob\living\damage_procs.dm" -#include "code\modules\mob\living\death.dm" -#include "code\modules\mob\living\default_language.dm" -#include "code\modules\mob\living\inventory.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\living_powers.dm" -#include "code\modules\mob\living\login.dm" -#include "code\modules\mob\living\logout.dm" -#include "code\modules\mob\living\organs.dm" -#include "code\modules\mob\living\riding.dm" -#include "code\modules\mob\living\say.dm" -#include "code\modules\mob\living\status_indicators.dm" -#include "code\modules\mob\living\bot\bot.dm" -#include "code\modules\mob\living\bot\cleanbot.dm" -#include "code\modules\mob\living\bot\ed209bot.dm" -#include "code\modules\mob\living\bot\edCLNbot.dm" -#include "code\modules\mob\living\bot\farmbot.dm" -#include "code\modules\mob\living\bot\floorbot.dm" -#include "code\modules\mob\living\bot\medbot.dm" -#include "code\modules\mob\living\bot\mulebot.dm" -#include "code\modules\mob\living\bot\secbot.dm" -#include "code\modules\mob\living\bot\SLed209bot.dm" -#include "code\modules\mob\living\carbon\breathe.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_powers.dm" -#include "code\modules\mob\living\carbon\give.dm" -#include "code\modules\mob\living\carbon\resist.dm" -#include "code\modules\mob\living\carbon\shock.dm" -#include "code\modules\mob\living\carbon\taste.dm" -#include "code\modules\mob\living\carbon\viruses.dm" -#include "code\modules\mob\living\carbon\brain\brain.dm" -#include "code\modules\mob\living\carbon\brain\death.dm" -#include "code\modules\mob\living\carbon\brain\emote.dm" -#include "code\modules\mob\living\carbon\brain\life.dm" -#include "code\modules\mob\living\carbon\brain\login.dm" -#include "code\modules\mob\living\carbon\brain\MMI.dm" -#include "code\modules\mob\living\carbon\brain\say.dm" -#include "code\modules\mob\living\carbon\human\appearance.dm" -#include "code\modules\mob\living\carbon\human\death.dm" -#include "code\modules\mob\living\carbon\human\emote.dm" -#include "code\modules\mob\living\carbon\human\examine.dm" -#include "code\modules\mob\living\carbon\human\gradient.dm" -#include "code\modules\mob\living\carbon\human\human.dm" -#include "code\modules\mob\living\carbon\human\human_attackhand.dm" -#include "code\modules\mob\living\carbon\human\human_damage.dm" -#include "code\modules\mob\living\carbon\human\human_defense.dm" -#include "code\modules\mob\living\carbon\human\human_defines.dm" -#include "code\modules\mob\living\carbon\human\human_helpers.dm" -#include "code\modules\mob\living\carbon\human\human_modular_limbs.dm" -#include "code\modules\mob\living\carbon\human\human_movement.dm" -#include "code\modules\mob\living\carbon\human\human_organs.dm" -#include "code\modules\mob\living\carbon\human\human_powers.dm" -#include "code\modules\mob\living\carbon\human\human_resist.dm" -#include "code\modules\mob\living\carbon\human\human_species.dm" -#include "code\modules\mob\living\carbon\human\inventory.dm" -#include "code\modules\mob\living\carbon\human\life.dm" -#include "code\modules\mob\living\carbon\human\login.dm" -#include "code\modules\mob\living\carbon\human\logout.dm" -#include "code\modules\mob\living\carbon\human\MedicalSideEffects.dm" -#include "code\modules\mob\living\carbon\human\npcs.dm" -#include "code\modules\mob\living\carbon\human\say.dm" -#include "code\modules\mob\living\carbon\human\stripping.dm" -#include "code\modules\mob\living\carbon\human\unarmed_attack.dm" -#include "code\modules\mob\living\carbon\human\update_icons.dm" -#include "code\modules\mob\living\carbon\human\ai_controlled\ai_controlled.dm" -#include "code\modules\mob\living\carbon\human\descriptors\_descriptors.dm" -#include "code\modules\mob\living\carbon\human\descriptors\descriptors_generic.dm" -#include "code\modules\mob\living\carbon\human\descriptors\descriptors_skrell.dm" -#include "code\modules\mob\living\carbon\human\descriptors\descriptors_vox.dm" -#include "code\modules\mob\living\carbon\human\species\species.dm" -#include "code\modules\mob\living\carbon\human\species\species_adjust.dm" -#include "code\modules\mob\living\carbon\human\species\species_attack.dm" -#include "code\modules\mob\living\carbon\human\species\species_getters.dm" -#include "code\modules\mob\living\carbon\human\species\species_helpers.dm" -#include "code\modules\mob\living\carbon\human\species\species_hud.dm" -#include "code\modules\mob\living\carbon\human\species\species_shapeshift.dm" -#include "code\modules\mob\living\carbon\human\species\outsider\event.dm" -#include "code\modules\mob\living\carbon\human\species\outsider\replicant.dm" -#include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm" -#include "code\modules\mob\living\carbon\human\species\outsider\skeleton.dm" -#include "code\modules\mob\living\carbon\human\species\outsider\vox.dm" -#include "code\modules\mob\living\carbon\human\species\station\golem.dm" -#include "code\modules\mob\living\carbon\human\species\station\human_subspecies.dm" -#include "code\modules\mob\living\carbon\human\species\station\monkey.dm" -#include "code\modules\mob\living\carbon\human\species\station\prometheans.dm" -#include "code\modules\mob\living\carbon\human\species\station\station.dm" -#include "code\modules\mob\living\carbon\human\species\station\teshari.dm" -#include "code\modules\mob\living\carbon\human\species\virtual_reality\avatar.dm" -#include "code\modules\mob\living\carbon\human\species\virtual_reality\opaque_form.dm" -#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_powers.dm" -#include "code\modules\mob\living\carbon\human\species\xenomorphs\alien_species.dm" -#include "code\modules\mob\living\carbon\human\species\xenomorphs\xenomorphs.dm" -#include "code\modules\mob\living\carbon\nymph\diona.dm" -#include "code\modules\mob\living\carbon\nymph\diona_attacks.dm" -#include "code\modules\mob\living\carbon\nymph\diona_powers.dm" -#include "code\modules\mob\living\carbon\nymph\life.dm" -#include "code\modules\mob\living\carbon\nymph\progression.dm" -#include "code\modules\mob\living\carbon\nymph\say_understands.dm" -#include "code\modules\mob\living\carbon\nymph\update_icons.dm" -#include "code\modules\mob\living\silicon\death.dm" -#include "code\modules\mob\living\silicon\emote.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\subystems.dm" -#include "code\modules\mob\living\silicon\ai\ai.dm" -#include "code\modules\mob\living\silicon\ai\ai_movement.dm" -#include "code\modules\mob\living\silicon\ai\ai_remote_control.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\icons.dm" -#include "code\modules\mob\living\silicon\ai\latejoin.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\malf.dm" -#include "code\modules\mob\living\silicon\ai\multicam.dm" -#include "code\modules\mob\living\silicon\decoy\death.dm" -#include "code\modules\mob\living\silicon\decoy\decoy.dm" -#include "code\modules\mob\living\silicon\decoy\life.dm" -#include "code\modules\mob\living\silicon\pai\admin.dm" -#include "code\modules\mob\living\silicon\pai\death.dm" -#include "code\modules\mob\living\silicon\pai\examine.dm" -#include "code\modules\mob\living\silicon\pai\life.dm" -#include "code\modules\mob\living\silicon\pai\pai.dm" -#include "code\modules\mob\living\silicon\pai\personality.dm" -#include "code\modules\mob\living\silicon\pai\recruit.dm" -#include "code\modules\mob\living\silicon\pai\say.dm" -#include "code\modules\mob\living\silicon\pai\software.dm" -#include "code\modules\mob\living\silicon\pai\software_modules.dm" -#include "code\modules\mob\living\silicon\robot\analyzer.dm" -#include "code\modules\mob\living\silicon\robot\component.dm" -#include "code\modules\mob\living\silicon\robot\custom_sprites.dm" -#include "code\modules\mob\living\silicon\robot\death.dm" -#include "code\modules\mob\living\silicon\robot\emote.dm" -#include "code\modules\mob\living\silicon\robot\examine.dm" -#include "code\modules\mob\living\silicon\robot\inventory.dm" -#include "code\modules\mob\living\silicon\robot\laws.dm" -#include "code\modules\mob\living\silicon\robot\life.dm" -#include "code\modules\mob\living\silicon\robot\login.dm" -#include "code\modules\mob\living\silicon\robot\photos.dm" -#include "code\modules\mob\living\silicon\robot\robot.dm" -#include "code\modules\mob\living\silicon\robot\robot_damage.dm" -#include "code\modules\mob\living\silicon\robot\robot_items.dm" -#include "code\modules\mob\living\silicon\robot\robot_movement.dm" -#include "code\modules\mob\living\silicon\robot\robot_remote_control.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_abilities.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_console.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_damage.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm" -#include "code\modules\mob\living\silicon\robot\drone\drone_say.dm" -#include "code\modules\mob\living\silicon\robot\drone\swarm.dm" -#include "code\modules\mob\living\silicon\robot\drone\swarm_abilities.dm" -#include "code\modules\mob\living\silicon\robot\drone\swarm_items.dm" -#include "code\modules\mob\living\silicon\robot\robot_modules\event.dm" -#include "code\modules\mob\living\silicon\robot\robot_modules\station.dm" -#include "code\modules\mob\living\silicon\robot\robot_modules\swarm.dm" -#include "code\modules\mob\living\silicon\robot\robot_modules\syndicate.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\gravekeeper.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\lost_drone.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\syndicate.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\_thinktank.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_icon.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_interactions.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_module.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_storage.dm" -#include "code\modules\mob\living\silicon\robot\subtypes\thinktank\thinktank_subtypes.dm" -#include "code\modules\mob\living\simple_mob\appearance.dm" -#include "code\modules\mob\living\simple_mob\butchering.dm" -#include "code\modules\mob\living\simple_mob\combat.dm" -#include "code\modules\mob\living\simple_mob\defense.dm" -#include "code\modules\mob\living\simple_mob\hands.dm" -#include "code\modules\mob\living\simple_mob\harvesting.dm" -#include "code\modules\mob\living\simple_mob\healing.dm" -#include "code\modules\mob\living\simple_mob\life.dm" -#include "code\modules\mob\living\simple_mob\on_click.dm" -#include "code\modules\mob\living\simple_mob\simple_hud.dm" -#include "code\modules\mob\living\simple_mob\simple_mob.dm" -#include "code\modules\mob\living\simple_mob\taming.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\_animal_harness.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\animal.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_captive.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\borer\borer_powers.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\chicken.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\cow.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\farm animals\goat.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\_giant_spider.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\carrier.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\electric.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\frost.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\hunter.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\lurker.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\nurse.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\pepper.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\phorogenic.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\thermic.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\tunneler.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\giant_spider\webslinger.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\crab.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\fish.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\lizard.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\misc.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\mouse.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\passive.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\penguin.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\passive\possum.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\bird.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\cat.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\dog.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\karik.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\pets\parrot.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\diyaab.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\duck.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\frostfly.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\glitterfly.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\hare.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\hooligan_crab.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\kururak.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\leech.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\moth.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\pillbug.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\racoon.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\savik.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\shantak.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\sif.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\siffet.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_ai.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_emotes.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_harness.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_hatchling.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_interaction.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_misc.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\sif\grafadreka\grafadreka_trained.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\space\alien.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\space\bats.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\space\bear.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\space\carp.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\space\goose.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\space\space.dm" -#include "code\modules\mob\living\simple_mob\subtypes\animal\space\worm.dm" -#include "code\modules\mob\living\simple_mob\subtypes\blob\blob.dm" -#include "code\modules\mob\living\simple_mob\subtypes\blob\spore.dm" -#include "code\modules\mob\living\simple_mob\subtypes\humanoid\clown.dm" -#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid.dm" -#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm" -#include "code\modules\mob\living\simple_mob\subtypes\humanoid\russian.dm" -#include "code\modules\mob\living\simple_mob\subtypes\humanoid\mercs\mercs.dm" -#include "code\modules\mob\living\simple_mob\subtypes\illusion\illusion.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\golem.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mechanical.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\viscerator.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\drones\combat_drone.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\drones\mining_drone.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\hivebot.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\ranged_damage.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\support.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\hivebot\tank.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\adv_dark_gygax.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\combat_mecha.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\durand.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\gygax.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\hoverpod.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\marauder.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\mecha.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\odysseus.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\phazon.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\mecha\ripley.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\ward\monitor_ward.dm" -#include "code\modules\mob\living\simple_mob\subtypes\mechanical\ward\ward.dm" -#include "code\modules\mob\living\simple_mob\subtypes\occult\creature.dm" -#include "code\modules\mob\living\simple_mob\subtypes\occult\faithless.dm" -#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\_construct.dm" -#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\artificer.dm" -#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\harvester.dm" -#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\juggernaut.dm" -#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\shade.dm" -#include "code\modules\mob\living\simple_mob\subtypes\occult\constructs\wraith.dm" -#include "code\modules\mob\living\simple_mob\subtypes\plant\tomato.dm" -#include "code\modules\mob\living\simple_mob\subtypes\plant\tree.dm" -#include "code\modules\mob\living\simple_mob\subtypes\slime\slime.dm" -#include "code\modules\mob\living\simple_mob\subtypes\slime\feral\feral.dm" -#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\combat.dm" -#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\consumption.dm" -#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\defense.dm" -#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\discipline.dm" -#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\subtypes.dm" -#include "code\modules\mob\living\simple_mob\subtypes\slime\xenobio\xenobio.dm" -#include "code\modules\mob\living\voice\voice.dm" -#include "code\modules\mob\new_player\login.dm" -#include "code\modules\mob\new_player\logout.dm" -#include "code\modules\mob\new_player\new_player.dm" -#include "code\modules\mob\new_player\news.dm" -#include "code\modules\mob\new_player\poll.dm" -#include "code\modules\mob\new_player\preferences_setup.dm" -#include "code\modules\mob\new_player\skill.dm" -#include "code\modules\mob\new_player\sprite_accessories.dm" -#include "code\modules\mob\new_player\sprite_accessories_ear.dm" -#include "code\modules\mob\new_player\sprite_accessories_extra.dm" -#include "code\modules\mob\new_player\sprite_accessories_tail.dm" -#include "code\modules\mob\new_player\sprite_accessories_wing.dm" -#include "code\modules\modular_computers\laptop_vendor.dm" -#include "code\modules\modular_computers\computers\modular_computer\core.dm" -#include "code\modules\modular_computers\computers\modular_computer\damage.dm" -#include "code\modules\modular_computers\computers\modular_computer\hardware.dm" -#include "code\modules\modular_computers\computers\modular_computer\interaction.dm" -#include "code\modules\modular_computers\computers\modular_computer\power.dm" -#include "code\modules\modular_computers\computers\modular_computer\ui.dm" -#include "code\modules\modular_computers\computers\modular_computer\variables.dm" -#include "code\modules\modular_computers\computers\subtypes\dev_console.dm" -#include "code\modules\modular_computers\computers\subtypes\dev_laptop.dm" -#include "code\modules\modular_computers\computers\subtypes\dev_tablet.dm" -#include "code\modules\modular_computers\computers\subtypes\dev_telescreen.dm" -#include "code\modules\modular_computers\computers\subtypes\preset_console.dm" -#include "code\modules\modular_computers\computers\subtypes\preset_laptop.dm" -#include "code\modules\modular_computers\computers\subtypes\preset_tablet.dm" -#include "code\modules\modular_computers\computers\subtypes\preset_telescreen.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\news_article.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\antagonist\access_decrypter.dm" -#include "code\modules\modular_computers\file_system\programs\antagonist\dos.dm" -#include "code\modules\modular_computers\file_system\programs\antagonist\hacked_camera.dm" -#include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm" -#include "code\modules\modular_computers\file_system\programs\command\card.dm" -#include "code\modules\modular_computers\file_system\programs\command\comm.dm" -#include "code\modules\modular_computers\file_system\programs\engineering\alarm_monitor.dm" -#include "code\modules\modular_computers\file_system\programs\engineering\atmos_control.dm" -#include "code\modules\modular_computers\file_system\programs\engineering\power_monitor.dm" -#include "code\modules\modular_computers\file_system\programs\engineering\rcon_console.dm" -#include "code\modules\modular_computers\file_system\programs\engineering\shutoff_monitor.dm" -#include "code\modules\modular_computers\file_system\programs\engineering\supermatter_monitor.dm" -#include "code\modules\modular_computers\file_system\programs\generic\camera.dm" -#include "code\modules\modular_computers\file_system\programs\generic\configurator.dm" -#include "code\modules\modular_computers\file_system\programs\generic\email_client.dm" -#include "code\modules\modular_computers\file_system\programs\generic\file_browser.dm" -#include "code\modules\modular_computers\file_system\programs\generic\game.dm" -#include "code\modules\modular_computers\file_system\programs\generic\news_browser.dm" -#include "code\modules\modular_computers\file_system\programs\generic\ntdownloader.dm" -#include "code\modules\modular_computers\file_system\programs\generic\ntnrc_client.dm" -#include "code\modules\modular_computers\file_system\programs\generic\nttransfer.dm" -#include "code\modules\modular_computers\file_system\programs\generic\uav.dm" -#include "code\modules\modular_computers\file_system\programs\generic\wordprocessor.dm" -#include "code\modules\modular_computers\file_system\programs\medical\suit_sensors.dm" -#include "code\modules\modular_computers\file_system\programs\research\email_administration.dm" -#include "code\modules\modular_computers\file_system\programs\research\ntmonitor.dm" -#include "code\modules\modular_computers\file_system\programs\security\alarm_monitor.dm" -#include "code\modules\modular_computers\file_system\programs\security\digitalwarrant.dm" -#include "code\modules\modular_computers\file_system\programs\ships\navigation.dm" -#include "code\modules\modular_computers\hardware\_hardware.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\hard_drive.dm" -#include "code\modules\modular_computers\hardware\nano_printer.dm" -#include "code\modules\modular_computers\hardware\network_card.dm" -#include "code\modules\modular_computers\hardware\portable_hard_drive.dm" -#include "code\modules\modular_computers\hardware\processor_unit.dm" -#include "code\modules\modular_computers\hardware\tesla_link.dm" -#include "code\modules\modular_computers\NTNet\NTNet.dm" -#include "code\modules\modular_computers\NTNet\NTNet_relay.dm" -#include "code\modules\modular_computers\NTNet\emails\email_account.dm" -#include "code\modules\modular_computers\NTNet\emails\email_message.dm" -#include "code\modules\modular_computers\NTNet\NTNRC\conversation.dm" -#include "code\modules\multi-tile\multi-tile.dm" -#include "code\modules\multiz\_stubs.dm" -#include "code\modules\multiz\basic.dm" -#include "code\modules\multiz\hoist.dm" -#include "code\modules\multiz\ladders.dm" -#include "code\modules\multiz\movement.dm" -#include "code\modules\multiz\pipes.dm" -#include "code\modules\multiz\stairs.dm" -#include "code\modules\multiz\turf.dm" -#include "code\modules\multiz\zshadow.dm" -#include "code\modules\nano\nanoexternal.dm" -#include "code\modules\nano\nanomanager.dm" -#include "code\modules\nano\nanomapgen.dm" -#include "code\modules\nano\nanoui.dm" -#include "code\modules\nano\interaction\admin.dm" -#include "code\modules\nano\interaction\base.dm" -#include "code\modules\nano\interaction\conscious.dm" -#include "code\modules\nano\interaction\contained.dm" -#include "code\modules\nano\interaction\default.dm" -#include "code\modules\nano\interaction\interactive.dm" -#include "code\modules\nano\interaction\inventory.dm" -#include "code\modules\nano\interaction\inventory_deep.dm" -#include "code\modules\nano\interaction\outside.dm" -#include "code\modules\nano\interaction\physical.dm" -#include "code\modules\nano\interaction\remote.dm" -#include "code\modules\nano\interaction\self.dm" -#include "code\modules\nano\interaction\zlevel.dm" -#include "code\modules\nano\modules\nano_module.dm" -#include "code\modules\news\news_init.dm" -#include "code\modules\news\newspaper.dm" -#include "code\modules\news\newspaper_layout.dm" -#include "code\modules\organs\blood.dm" -#include "code\modules\organs\misc.dm" -#include "code\modules\organs\organ.dm" -#include "code\modules\organs\organ_external.dm" -#include "code\modules\organs\organ_icon.dm" -#include "code\modules\organs\organ_stump.dm" -#include "code\modules\organs\pain.dm" -#include "code\modules\organs\robolimbs.dm" -#include "code\modules\organs\robolimbs_custom.dm" -#include "code\modules\organs\wound.dm" -#include "code\modules\organs\internal\_organ_internal.dm" -#include "code\modules\organs\internal\appendix.dm" -#include "code\modules\organs\internal\augment.dm" -#include "code\modules\organs\internal\brain.dm" -#include "code\modules\organs\internal\eyes.dm" -#include "code\modules\organs\internal\heart.dm" -#include "code\modules\organs\internal\intestine.dm" -#include "code\modules\organs\internal\kidneys.dm" -#include "code\modules\organs\internal\liver.dm" -#include "code\modules\organs\internal\lungs.dm" -#include "code\modules\organs\internal\spleen.dm" -#include "code\modules\organs\internal\stomach.dm" -#include "code\modules\organs\internal\voicebox.dm" -#include "code\modules\organs\internal\augment\armmounted.dm" -#include "code\modules\organs\internal\augment\bio.dm" -#include "code\modules\organs\internal\robotic\diagnostic.dm" -#include "code\modules\organs\internal\robotic\heatsink.dm" -#include "code\modules\organs\internal\robotic\robotic.dm" -#include "code\modules\organs\subtypes\diona.dm" -#include "code\modules\organs\subtypes\indestructible.dm" -#include "code\modules\organs\subtypes\machine.dm" -#include "code\modules\organs\subtypes\neaera.dm" -#include "code\modules\organs\subtypes\replicant.dm" -#include "code\modules\organs\subtypes\skrell.dm" -#include "code\modules\organs\subtypes\slime.dm" -#include "code\modules\organs\subtypes\standard.dm" -#include "code\modules\organs\subtypes\tajaran.dm" -#include "code\modules\organs\subtypes\unathi.dm" -#include "code\modules\organs\subtypes\unbreakable.dm" -#include "code\modules\organs\subtypes\unseverable.dm" -#include "code\modules\organs\subtypes\vox.dm" -#include "code\modules\organs\subtypes\xenos.dm" -#include "code\modules\overmap\helpers.dm" -#include "code\modules\overmap\overmap_object.dm" -#include "code\modules\overmap\overmap_planet.dm" -#include "code\modules\overmap\overmap_shuttle.dm" -#include "code\modules\overmap\sectors.dm" -#include "code\modules\overmap\spacetravel.dm" -#include "code\modules\overmap\turfs.dm" -#include "code\modules\overmap\events\event_handler.dm" -#include "code\modules\overmap\events\generation.dm" -#include "code\modules\overmap\events\overmap_event.dm" -#include "code\modules\overmap\ships\landable.dm" -#include "code\modules\overmap\ships\ship.dm" -#include "code\modules\overmap\ships\computers\computer_shims.dm" -#include "code\modules\overmap\ships\computers\engine_control.dm" -#include "code\modules\overmap\ships\computers\helm.dm" -#include "code\modules\overmap\ships\computers\sensors.dm" -#include "code\modules\overmap\ships\computers\ship.dm" -#include "code\modules\overmap\ships\computers\shuttle.dm" -#include "code\modules\overmap\ships\engines\engine.dm" -#include "code\modules\overmap\ships\engines\gas_thruster.dm" -#include "code\modules\overmap\ships\engines\ion_thruster.dm" -#include "code\modules\paperwork\adminpaper.dm" -#include "code\modules\paperwork\carbonpaper.dm" -#include "code\modules\paperwork\clipboard.dm" -#include "code\modules\paperwork\faxmachine.dm" -#include "code\modules\paperwork\filingcabinet.dm" -#include "code\modules\paperwork\folders.dm" -#include "code\modules\paperwork\handlabeler.dm" -#include "code\modules\paperwork\paper.dm" -#include "code\modules\paperwork\paper_bundle.dm" -#include "code\modules\paperwork\paper_sticky.dm" -#include "code\modules\paperwork\paperbin.dm" -#include "code\modules\paperwork\paperplane.dm" -#include "code\modules\paperwork\papershredder.dm" -#include "code\modules\paperwork\pen.dm" -#include "code\modules\paperwork\photocopier.dm" -#include "code\modules\paperwork\photography.dm" -#include "code\modules\paperwork\silicon_photography.dm" -#include "code\modules\paperwork\stamps.dm" -#include "code\modules\pda\ai.dm" -#include "code\modules\pda\app.dm" -#include "code\modules\pda\cart.dm" -#include "code\modules\pda\cart_apps.dm" -#include "code\modules\pda\core_apps.dm" -#include "code\modules\pda\messenger.dm" -#include "code\modules\pda\messenger_plugins.dm" -#include "code\modules\pda\pda.dm" -#include "code\modules\pda\pda_subtypes.dm" -#include "code\modules\pda\pda_tgui.dm" -#include "code\modules\pda\radio.dm" -#include "code\modules\pda\utilities.dm" -#include "code\modules\persistence\filth.dm" -#include "code\modules\persistence\graffiti.dm" -#include "code\modules\persistence\noticeboard.dm" -#include "code\modules\persistence\datum\persistence_datum.dm" -#include "code\modules\persistence\effects\filth.dm" -#include "code\modules\persistence\effects\graffiti.dm" -#include "code\modules\persistence\effects\paper.dm" -#include "code\modules\persistence\effects\paper_sticky.dm" -#include "code\modules\persistence\effects\trash.dm" -#include "code\modules\persistence\storage\smartfridge.dm" -#include "code\modules\persistence\storage\storage.dm" -#include "code\modules\planet\planet.dm" -#include "code\modules\planet\sif.dm" -#include "code\modules\planet\time.dm" -#include "code\modules\planet\weather.dm" -#include "code\modules\power\apc.dm" -#include "code\modules\power\batteryrack.dm" -#include "code\modules\power\breaker_box.dm" -#include "code\modules\power\cable.dm" -#include "code\modules\power\cable_ender.dm" -#include "code\modules\power\cable_heavyduty.dm" -#include "code\modules\power\cell.dm" -#include "code\modules\power\debug_items.dm" -#include "code\modules\power\generator.dm" -#include "code\modules\power\gravitygenerator.dm" -#include "code\modules\power\grid_checker.dm" -#include "code\modules\power\lighting.dm" -#include "code\modules\power\port_gen.dm" -#include "code\modules\power\power.dm" -#include "code\modules\power\powernet.dm" -#include "code\modules\power\smes.dm" -#include "code\modules\power\smes_construction.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\cells\device_cells.dm" -#include "code\modules\power\cells\esoteric_cells.dm" -#include "code\modules\power\cells\power_cells.dm" -#include "code\modules\power\fusion\_setup.dm" -#include "code\modules\power\fusion\fusion_circuits.dm" -#include "code\modules\power\fusion\fusion_particle_catcher.dm" -#include "code\modules\power\fusion\fusion_reactions.dm" -#include "code\modules\power\fusion\magpower.dm" -#include "code\modules\power\fusion\core\_core.dm" -#include "code\modules\power\fusion\core\core_control.dm" -#include "code\modules\power\fusion\core\core_field.dm" -#include "code\modules\power\fusion\fuel_assembly\fuel_assembly.dm" -#include "code\modules\power\fusion\fuel_assembly\fuel_compressor.dm" -#include "code\modules\power\fusion\fuel_assembly\fuel_control.dm" -#include "code\modules\power\fusion\fuel_assembly\fuel_injector.dm" -#include "code\modules\power\fusion\gyrotron\gyrotron.dm" -#include "code\modules\power\fusion\gyrotron\gyrotron_control.dm" -#include "code\modules\power\sensors\powernet_sensor.dm" -#include "code\modules\power\sensors\sensor_monitoring.dm" -#include "code\modules\power\singularity\act.dm" -#include "code\modules\power\singularity\collector.dm" -#include "code\modules\power\singularity\containment_field.dm" -#include "code\modules\power\singularity\emitter.dm" -#include "code\modules\power\singularity\field_generator.dm" -#include "code\modules\power\singularity\generator.dm" -#include "code\modules\power\singularity\investigate.dm" -#include "code\modules\power\singularity\singularity.dm" -#include "code\modules\power\singularity\particle_accelerator\particle.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_chamber.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_control.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_power.dm" -#include "code\modules\power\singularity\particle_accelerator\particle_smasher.dm" -#include "code\modules\power\supermatter\setup_supermatter.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\power\tesla\telsa_construction.dm" -#include "code\modules\power\tesla\tesla_act.dm" -#include "code\modules\projectiles\ammunition.dm" -#include "code\modules\projectiles\broken.dm" -#include "code\modules\projectiles\dnalocking.dm" -#include "code\modules\projectiles\gun.dm" -#include "code\modules\projectiles\projectile.dm" -#include "code\modules\projectiles\ammunition\magazines.dm" -#include "code\modules\projectiles\ammunition\magnetic.dm" -#include "code\modules\projectiles\ammunition\rounds.dm" -#include "code\modules\projectiles\ammunition\smartmag.dm" -#include "code\modules\projectiles\brokenguns\energy.dm" -#include "code\modules\projectiles\brokenguns\launcher.dm" -#include "code\modules\projectiles\brokenguns\magnetic.dm" -#include "code\modules\projectiles\brokenguns\projectile.dm" -#include "code\modules\projectiles\guns\energy.dm" -#include "code\modules\projectiles\guns\launcher.dm" -#include "code\modules\projectiles\guns\magic.dm" -#include "code\modules\projectiles\guns\modular_guns.dm" -#include "code\modules\projectiles\guns\projectile.dm" -#include "code\modules\projectiles\guns\vox.dm" -#include "code\modules\projectiles\guns\energy\hooklauncher.dm" -#include "code\modules\projectiles\guns\energy\laser.dm" -#include "code\modules\projectiles\guns\energy\nuclear.dm" -#include "code\modules\projectiles\guns\energy\phase.dm" -#include "code\modules\projectiles\guns\energy\pulse.dm" -#include "code\modules\projectiles\guns\energy\special.dm" -#include "code\modules\projectiles\guns\energy\stun.dm" -#include "code\modules\projectiles\guns\energy\temperature.dm" -#include "code\modules\projectiles\guns\launcher\bows.dm" -#include "code\modules\projectiles\guns\launcher\crossbow.dm" -#include "code\modules\projectiles\guns\launcher\grenade_launcher.dm" -#include "code\modules\projectiles\guns\launcher\pneumatic.dm" -#include "code\modules\projectiles\guns\launcher\rocket.dm" -#include "code\modules\projectiles\guns\launcher\syringe_gun.dm" -#include "code\modules\projectiles\guns\magic\fireball.dm" -#include "code\modules\projectiles\guns\magnetic\bore.dm" -#include "code\modules\projectiles\guns\magnetic\gasthrower.dm" -#include "code\modules\projectiles\guns\magnetic\magnetic.dm" -#include "code\modules\projectiles\guns\magnetic\magnetic_construction.dm" -#include "code\modules\projectiles\guns\magnetic\magnetic_railgun.dm" -#include "code\modules\projectiles\guns\projectile\automatic.dm" -#include "code\modules\projectiles\guns\projectile\boltaction.dm" -#include "code\modules\projectiles\guns\projectile\caseless.dm" -#include "code\modules\projectiles\guns\projectile\contender.dm" -#include "code\modules\projectiles\guns\projectile\dartgun.dm" -#include "code\modules\projectiles\guns\projectile\pistol.dm" -#include "code\modules\projectiles\guns\projectile\revolver.dm" -#include "code\modules\projectiles\guns\projectile\semiauto.dm" -#include "code\modules\projectiles\guns\projectile\shotgun.dm" -#include "code\modules\projectiles\guns\projectile\sniper.dm" -#include "code\modules\projectiles\guns\projectile\toy.dm" -#include "code\modules\projectiles\guns\projectile\sniper\collapsible_sniper.dm" -#include "code\modules\projectiles\projectile\arc.dm" -#include "code\modules\projectiles\projectile\beams.dm" -#include "code\modules\projectiles\projectile\blob.dm" -#include "code\modules\projectiles\projectile\bullets.dm" -#include "code\modules\projectiles\projectile\change.dm" -#include "code\modules\projectiles\projectile\energy.dm" -#include "code\modules\projectiles\projectile\explosive.dm" -#include "code\modules\projectiles\projectile\force.dm" -#include "code\modules\projectiles\projectile\hook.dm" -#include "code\modules\projectiles\projectile\magic.dm" -#include "code\modules\projectiles\projectile\magnetic.dm" -#include "code\modules\projectiles\projectile\pellets.dm" -#include "code\modules\projectiles\projectile\scatter.dm" -#include "code\modules\projectiles\projectile\special.dm" -#include "code\modules\projectiles\projectile\trace.dm" -#include "code\modules\projectiles\targeting\targeting_client.dm" -#include "code\modules\projectiles\targeting\targeting_gun.dm" -#include "code\modules\projectiles\targeting\targeting_mob.dm" -#include "code\modules\projectiles\targeting\targeting_overlay.dm" -#include "code\modules\projectiles\targeting\targeting_triggers.dm" -#include "code\modules\radiation\radiation.dm" -#include "code\modules\random_map\_random_map_setup.dm" -#include "code\modules\random_map\random_map.dm" -#include "code\modules\random_map\random_map_verbs.dm" -#include "code\modules\random_map\automata\automata.dm" -#include "code\modules\random_map\automata\caves.dm" -#include "code\modules\random_map\building\building.dm" -#include "code\modules\random_map\drop\drop_types.dm" -#include "code\modules\random_map\drop\droppod.dm" -#include "code\modules\random_map\drop\droppod_doors.dm" -#include "code\modules\random_map\drop\supply.dm" -#include "code\modules\random_map\mazes\maze.dm" -#include "code\modules\random_map\mazes\maze_cell.dm" -#include "code\modules\random_map\meteor\meteor.dm" -#include "code\modules\random_map\noise\desert.dm" -#include "code\modules\random_map\noise\noise.dm" -#include "code\modules\random_map\noise\ore.dm" -#include "code\modules\random_map\noise\tundra.dm" -#include "code\modules\reagents\Chemistry-Colours.dm" -#include "code\modules\reagents\Chemistry-Logging.dm" -#include "code\modules\reagents\Chemistry-Metabolism.dm" -#include "code\modules\reagents\holder\distilling.dm" -#include "code\modules\reagents\holder\holder.dm" -#include "code\modules\reagents\hoses\connector.dm" -#include "code\modules\reagents\hoses\hose.dm" -#include "code\modules\reagents\hoses\hose_connector.dm" -#include "code\modules\reagents\machinery\chem_master.dm" -#include "code\modules\reagents\machinery\chemalyzer.dm" -#include "code\modules\reagents\machinery\distillery.dm" -#include "code\modules\reagents\machinery\grinder.dm" -#include "code\modules\reagents\machinery\pump.dm" -#include "code\modules\reagents\machinery\dispenser\_defines.dm" -#include "code\modules\reagents\machinery\dispenser\cartridge.dm" -#include "code\modules\reagents\machinery\dispenser\cartridge_presets.dm" -#include "code\modules\reagents\machinery\dispenser\cartridge_spawn.dm" -#include "code\modules\reagents\machinery\dispenser\dispenser2.dm" -#include "code\modules\reagents\machinery\dispenser\dispenser2_energy.dm" -#include "code\modules\reagents\machinery\dispenser\dispenser_presets.dm" -#include "code\modules\reagents\machinery\dispenser\reagent_tank.dm" -#include "code\modules\reagents\machinery\dispenser\supply.dm" -#include "code\modules\reagents\reactions\_reactions.dm" -#include "code\modules\reagents\reactions\distilling\distilling.dm" -#include "code\modules\reagents\reactions\fusion\fusion.dm" -#include "code\modules\reagents\reactions\instant\drinks.dm" -#include "code\modules\reagents\reactions\instant\food.dm" -#include "code\modules\reagents\reactions\instant\instant.dm" -#include "code\modules\reagents\reactions\instant\vox.dm" -#include "code\modules\reagents\reagent_containers\_reagent_containers.dm" -#include "code\modules\reagents\reagent_containers\blood_pack.dm" -#include "code\modules\reagents\reagent_containers\borghypo.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\patch.dm" -#include "code\modules\reagents\reagent_containers\pill.dm" -#include "code\modules\reagents\reagent_containers\spray.dm" -#include "code\modules\reagents\reagent_containers\syringes.dm" -#include "code\modules\reagents\reagent_containers\unidentified_hypospray.dm" -#include "code\modules\reagents\reagents\_helpers.dm" -#include "code\modules\reagents\reagents\_reagents.dm" -#include "code\modules\reagents\reagents\core.dm" -#include "code\modules\reagents\reagents\dispenser.dm" -#include "code\modules\reagents\reagents\drugs.dm" -#include "code\modules\reagents\reagents\food_drinks.dm" -#include "code\modules\reagents\reagents\medicine.dm" -#include "code\modules\reagents\reagents\modifiers.dm" -#include "code\modules\reagents\reagents\other.dm" -#include "code\modules\reagents\reagents\toxins.dm" -#include "code\modules\reagents\reagents\vox.dm" -#include "code\modules\recycling\conveyor2.dm" -#include "code\modules\recycling\disposal-construction.dm" -#include "code\modules\recycling\disposal.dm" -#include "code\modules\recycling\sortingmachinery.dm" -#include "code\modules\research\circuitprinter.dm" -#include "code\modules\research\designs.dm" -#include "code\modules\research\destructive_analyzer.dm" -#include "code\modules\research\mechfab_designs.dm" -#include "code\modules\research\message_server.dm" -#include "code\modules\research\prosfab_designs.dm" -#include "code\modules\research\protolathe.dm" -#include "code\modules\research\rdconsole.dm" -#include "code\modules\research\rdmachines.dm" -#include "code\modules\research\research.dm" -#include "code\modules\research\server.dm" -#include "code\modules\research\designs\ai_holders.dm" -#include "code\modules\research\designs\bag_of_holding.dm" -#include "code\modules\research\designs\beakers.dm" -#include "code\modules\research\designs\bio_devices.dm" -#include "code\modules\research\designs\circuit_assembly.dm" -#include "code\modules\research\designs\engineering.dm" -#include "code\modules\research\designs\HUDs.dm" -#include "code\modules\research\designs\implants.dm" -#include "code\modules\research\designs\locator_devices.dm" -#include "code\modules\research\designs\medical.dm" -#include "code\modules\research\designs\mining_toys.dm" -#include "code\modules\research\designs\misc.dm" -#include "code\modules\research\designs\modular_computer.dm" -#include "code\modules\research\designs\pdas.dm" -#include "code\modules\research\designs\power_cells.dm" -#include "code\modules\research\designs\precursor.dm" -#include "code\modules\research\designs\stock_parts.dm" -#include "code\modules\research\designs\subspace_parts.dm" -#include "code\modules\research\designs\tech_disks.dm" -#include "code\modules\research\designs\weapons.dm" -#include "code\modules\research\designs\xenoarch_toys.dm" -#include "code\modules\research\designs\xenobio_toys.dm" -#include "code\modules\research\designs\circuits\ai_modules.dm" -#include "code\modules\research\designs\circuits\circuits.dm" -#include "code\modules\research\designs\circuits\disks.dm" -#include "code\modules\scripting\Errors.dm" -#include "code\modules\scripting\IDE.dm" -#include "code\modules\scripting\Options.dm" -#include "code\modules\scripting\stack.dm" -#include "code\modules\scripting\AST\AST Nodes.dm" -#include "code\modules\scripting\AST\Blocks.dm" -#include "code\modules\scripting\AST\Statements.dm" -#include "code\modules\scripting\AST\Operators\Binary Operators.dm" -#include "code\modules\scripting\AST\Operators\Unary Operators.dm" -#include "code\modules\scripting\Implementations\_Logic.dm" -#include "code\modules\scripting\Implementations\Telecomms.dm" -#include "code\modules\scripting\Interpreter\Evaluation.dm" -#include "code\modules\scripting\Interpreter\Interaction.dm" -#include "code\modules\scripting\Interpreter\Interpreter.dm" -#include "code\modules\scripting\Interpreter\Scope.dm" -#include "code\modules\scripting\Parser\Expressions.dm" -#include "code\modules\scripting\Parser\Keywords.dm" -#include "code\modules\scripting\Parser\Parser.dm" -#include "code\modules\scripting\Scanner\Scanner.dm" -#include "code\modules\scripting\Scanner\Tokens.dm" -#include "code\modules\security levels\keycard authentication.dm" -#include "code\modules\security levels\security levels.dm" -#include "code\modules\shieldgen\directional_shield.dm" -#include "code\modules\shieldgen\emergency_shield.dm" -#include "code\modules\shieldgen\energy_field.dm" -#include "code\modules\shieldgen\handheld_defuser.dm" -#include "code\modules\shieldgen\sheldwallgen.dm" -#include "code\modules\shieldgen\shield_capacitor.dm" -#include "code\modules\shieldgen\shield_diffuser.dm" -#include "code\modules\shieldgen\shield_gen.dm" -#include "code\modules\shieldgen\shield_gen_external.dm" -#include "code\modules\shuttles\antagonist.dm" -#include "code\modules\shuttles\departmental.dm" -#include "code\modules\shuttles\escape_pods.dm" -#include "code\modules\shuttles\landmarks.dm" -#include "code\modules\shuttles\shuttle.dm" -#include "code\modules\shuttles\shuttle_arrivals.dm" -#include "code\modules\shuttles\shuttle_autodock.dm" -#include "code\modules\shuttles\shuttle_console.dm" -#include "code\modules\shuttles\shuttle_console_multi.dm" -#include "code\modules\shuttles\shuttle_emergency.dm" -#include "code\modules\shuttles\shuttle_ferry.dm" -#include "code\modules\shuttles\shuttle_specops.dm" -#include "code\modules\shuttles\shuttle_supply.dm" -#include "code\modules\shuttles\shuttles_multi.dm" -#include "code\modules\shuttles\shuttles_web.dm" -#include "code\modules\shuttles\web_datums.dm" -#include "code\modules\spells\artifacts.dm" -#include "code\modules\spells\construct_spells.dm" -#include "code\modules\spells\no_clothes.dm" -#include "code\modules\spells\spell_code.dm" -#include "code\modules\spells\spell_projectile.dm" -#include "code\modules\spells\spellbook.dm" -#include "code\modules\spells\spells.dm" -#include "code\modules\spells\aoe_turf\aoe_turf.dm" -#include "code\modules\spells\aoe_turf\blink.dm" -#include "code\modules\spells\aoe_turf\charge.dm" -#include "code\modules\spells\aoe_turf\disable_tech.dm" -#include "code\modules\spells\aoe_turf\knock.dm" -#include "code\modules\spells\aoe_turf\smoke.dm" -#include "code\modules\spells\aoe_turf\summons.dm" -#include "code\modules\spells\aoe_turf\conjure\conjure.dm" -#include "code\modules\spells\aoe_turf\conjure\construct.dm" -#include "code\modules\spells\aoe_turf\conjure\forcewall.dm" -#include "code\modules\spells\general\area_teleport.dm" -#include "code\modules\spells\general\rune_write.dm" -#include "code\modules\spells\targeted\ethereal_jaunt.dm" -#include "code\modules\spells\targeted\genetic.dm" -#include "code\modules\spells\targeted\harvest.dm" -#include "code\modules\spells\targeted\mind_transfer.dm" -#include "code\modules\spells\targeted\shift.dm" -#include "code\modules\spells\targeted\subjugate.dm" -#include "code\modules\spells\targeted\targeted.dm" -#include "code\modules\spells\targeted\equip\equip.dm" -#include "code\modules\spells\targeted\equip\horsemask.dm" -#include "code\modules\spells\targeted\projectile\dumbfire.dm" -#include "code\modules\spells\targeted\projectile\fireball.dm" -#include "code\modules\spells\targeted\projectile\magic_missile.dm" -#include "code\modules\spells\targeted\projectile\projectile.dm" -#include "code\modules\surgery\_defines.dm" -#include "code\modules\surgery\bones.dm" -#include "code\modules\surgery\encased.dm" -#include "code\modules\surgery\external_repair.dm" -#include "code\modules\surgery\face.dm" -#include "code\modules\surgery\generic.dm" -#include "code\modules\surgery\implant.dm" -#include "code\modules\surgery\limb_reattach.dm" -#include "code\modules\surgery\neck.dm" -#include "code\modules\surgery\organs_internal.dm" -#include "code\modules\surgery\other.dm" -#include "code\modules\surgery\robotics.dm" -#include "code\modules\surgery\surgery.dm" -#include "code\modules\surgery\~defines.dm" -#include "code\modules\tables\bench.dm" -#include "code\modules\tables\flipping.dm" -#include "code\modules\tables\interactions.dm" -#include "code\modules\tables\presets.dm" -#include "code\modules\tables\rack.dm" -#include "code\modules\tables\tables.dm" -#include "code\modules\tension\tension.dm" -#include "code\modules\tgui\external.dm" -#include "code\modules\tgui\modal.dm" -#include "code\modules\tgui\states.dm" -#include "code\modules\tgui\tgui.dm" -#include "code\modules\tgui\tgui_window.dm" -#include "code\modules\tgui\modules\_base.dm" -#include "code\modules\tgui\modules\alarm.dm" -#include "code\modules\tgui\modules\appearance_changer.dm" -#include "code\modules\tgui\modules\atmos_control.dm" -#include "code\modules\tgui\modules\camera.dm" -#include "code\modules\tgui\modules\communications.dm" -#include "code\modules\tgui\modules\crew_monitor.dm" -#include "code\modules\tgui\modules\gyrotron_control.dm" -#include "code\modules\tgui\modules\law_manager.dm" -#include "code\modules\tgui\modules\overmap.dm" -#include "code\modules\tgui\modules\power_monitor.dm" -#include "code\modules\tgui\modules\rcon.dm" -#include "code\modules\tgui\modules\rustcore_monitor.dm" -#include "code\modules\tgui\modules\rustfuel_control.dm" -#include "code\modules\tgui\modules\shutoff_monitor.dm" -#include "code\modules\tgui\modules\supermatter_monitor.dm" -#include "code\modules\tgui\modules\ntos-only\cardmod.dm" -#include "code\modules\tgui\modules\ntos-only\configurator.dm" -#include "code\modules\tgui\modules\ntos-only\email.dm" -#include "code\modules\tgui\modules\ntos-only\uav.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\not_incapacitated.dm" -#include "code\modules\tgui\states\notcontained.dm" -#include "code\modules\tgui\states\ntos.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\turbolift\_turbolift.dm" -#include "code\modules\turbolift\turbolift.dm" -#include "code\modules\turbolift\turbolift_areas.dm" -#include "code\modules\turbolift\turbolift_console.dm" -#include "code\modules\turbolift\turbolift_door.dm" -#include "code\modules\turbolift\turbolift_floor.dm" -#include "code\modules\turbolift\turbolift_map.dm" -#include "code\modules\turbolift\turbolift_turfs.dm" -#include "code\modules\vchat\vchat_client.dm" -#include "code\modules\vchat\vchat_db.dm" -#include "code\modules\vehicles\bike.dm" -#include "code\modules\vehicles\boat.dm" -#include "code\modules\vehicles\cargo_train.dm" -#include "code\modules\vehicles\construction.dm" -#include "code\modules\vehicles\quad.dm" -#include "code\modules\vehicles\snowmobile.dm" -#include "code\modules\vehicles\train.dm" -#include "code\modules\vehicles\vehicle.dm" -#include "code\modules\ventcrawl\ventcrawl.dm" -#include "code\modules\ventcrawl\ventcrawl_atmospherics.dm" -#include "code\modules\ventcrawl\ventcrawl_multiz.dm" -#include "code\modules\ventcrawl\ventcrawl_verb.dm" -#include "code\modules\virus2\admin.dm" -#include "code\modules\virus2\analyser.dm" -#include "code\modules\virus2\antibodies.dm" -#include "code\modules\virus2\centrifuge.dm" -#include "code\modules\virus2\curer.dm" -#include "code\modules\virus2\disease2.dm" -#include "code\modules\virus2\diseasesplicer.dm" -#include "code\modules\virus2\dishincubator.dm" -#include "code\modules\virus2\effect.dm" -#include "code\modules\virus2\helpers.dm" -#include "code\modules\virus2\isolator.dm" -#include "code\modules\virus2\items_devices.dm" -#include "code\modules\webhooks\_webhook.dm" -#include "code\modules\webhooks\webhook_ahelp2discord.dm" -#include "code\modules\webhooks\webhook_custom_event.dm" -#include "code\modules\webhooks\webhook_fax2discord.dm" -#include "code\modules\webhooks\webhook_roundend.dm" -#include "code\modules\webhooks\webhook_roundprep.dm" -#include "code\modules\webhooks\webhook_roundstart.dm" -#include "code\modules\whitelist\admin_ops.dm" -#include "code\modules\whitelist\legacy.dm" -#include "code\modules\whitelist\phony_paths.dm" -#include "code\modules\whitelist\whitelist.dm" -#include "code\modules\xenoarcheaology\anomaly_container.dm" -#include "code\modules\xenoarcheaology\boulder.dm" -#include "code\modules\xenoarcheaology\effect.dm" -#include "code\modules\xenoarcheaology\effect_master.dm" -#include "code\modules\xenoarcheaology\manuals.dm" -#include "code\modules\xenoarcheaology\misc.dm" -#include "code\modules\xenoarcheaology\sampling.dm" -#include "code\modules\xenoarcheaology\artifacts\artifact.dm" -#include "code\modules\xenoarcheaology\artifacts\artifact_find.dm" -#include "code\modules\xenoarcheaology\artifacts\autocloner.dm" -#include "code\modules\xenoarcheaology\artifacts\crystal.dm" -#include "code\modules\xenoarcheaology\artifacts\gigadrill.dm" -#include "code\modules\xenoarcheaology\artifacts\replicator.dm" -#include "code\modules\xenoarcheaology\artifacts\predefined\_predefined.dm" -#include "code\modules\xenoarcheaology\artifacts\predefined\hungry_statue.dm" -#include "code\modules\xenoarcheaology\effects\animate_anomaly.dm" -#include "code\modules\xenoarcheaology\effects\badfeeling.dm" -#include "code\modules\xenoarcheaology\effects\berserk.dm" -#include "code\modules\xenoarcheaology\effects\blast_shielding.dm" -#include "code\modules\xenoarcheaology\effects\cannibal.dm" -#include "code\modules\xenoarcheaology\effects\cellcharge.dm" -#include "code\modules\xenoarcheaology\effects\celldrain.dm" -#include "code\modules\xenoarcheaology\effects\cold.dm" -#include "code\modules\xenoarcheaology\effects\electric_field.dm" -#include "code\modules\xenoarcheaology\effects\emp.dm" -#include "code\modules\xenoarcheaology\effects\extinguisher.dm" -#include "code\modules\xenoarcheaology\effects\faraday.dm" -#include "code\modules\xenoarcheaology\effects\feysight.dm" -#include "code\modules\xenoarcheaology\effects\forcefield.dm" -#include "code\modules\xenoarcheaology\effects\fortify.dm" -#include "code\modules\xenoarcheaology\effects\gaia.dm" -#include "code\modules\xenoarcheaology\effects\gasco2.dm" -#include "code\modules\xenoarcheaology\effects\gasnitro.dm" -#include "code\modules\xenoarcheaology\effects\gasoxy.dm" -#include "code\modules\xenoarcheaology\effects\gasphoron.dm" -#include "code\modules\xenoarcheaology\effects\gassleeping.dm" -#include "code\modules\xenoarcheaology\effects\goodfeeling.dm" -#include "code\modules\xenoarcheaology\effects\gravitational_waves.dm" -#include "code\modules\xenoarcheaology\effects\heal.dm" -#include "code\modules\xenoarcheaology\effects\heat.dm" -#include "code\modules\xenoarcheaology\effects\hurt.dm" -#include "code\modules\xenoarcheaology\effects\indiscriminate_spines.dm" -#include "code\modules\xenoarcheaology\effects\lifedrain.dm" -#include "code\modules\xenoarcheaology\effects\lifesteal.dm" -#include "code\modules\xenoarcheaology\effects\noxious.dm" -#include "code\modules\xenoarcheaology\effects\poltergeist.dm" -#include "code\modules\xenoarcheaology\effects\radiate.dm" -#include "code\modules\xenoarcheaology\effects\resurrect.dm" -#include "code\modules\xenoarcheaology\effects\roboheal.dm" -#include "code\modules\xenoarcheaology\effects\robohurt.dm" -#include "code\modules\xenoarcheaology\effects\sleepy.dm" -#include "code\modules\xenoarcheaology\effects\sprinting.dm" -#include "code\modules\xenoarcheaology\effects\stun.dm" -#include "code\modules\xenoarcheaology\effects\sweating_reagents.dm" -#include "code\modules\xenoarcheaology\effects\teleport.dm" -#include "code\modules\xenoarcheaology\effects\tesla.dm" -#include "code\modules\xenoarcheaology\effects\vampire.dm" -#include "code\modules\xenoarcheaology\finds\eguns.dm" -#include "code\modules\xenoarcheaology\finds\find_spawning.dm" -#include "code\modules\xenoarcheaology\finds\finds.dm" -#include "code\modules\xenoarcheaology\finds\finds_defines.dm" -#include "code\modules\xenoarcheaology\finds\fossils.dm" -#include "code\modules\xenoarcheaology\finds\misc.dm" -#include "code\modules\xenoarcheaology\finds\special.dm" -#include "code\modules\xenoarcheaology\finds\talking.dm" -#include "code\modules\xenoarcheaology\tools\ano_device_battery.dm" -#include "code\modules\xenoarcheaology\tools\artifact_analyser.dm" -#include "code\modules\xenoarcheaology\tools\artifact_harvester.dm" -#include "code\modules\xenoarcheaology\tools\artifact_scanner.dm" -#include "code\modules\xenoarcheaology\tools\coolant_tank.dm" -#include "code\modules\xenoarcheaology\tools\equipment.dm" -#include "code\modules\xenoarcheaology\tools\geosample_scanner.dm" -#include "code\modules\xenoarcheaology\tools\suspension_generator.dm" -#include "code\modules\xenoarcheaology\tools\tools.dm" -#include "code\modules\xenoarcheaology\tools\tools_pickaxe.dm" -#include "code\modules\xenobio\items\extracts.dm" -#include "code\modules\xenobio\items\slime_objects.dm" -#include "code\modules\xenobio\items\slimepotions.dm" -#include "code\modules\xenobio\items\weapons.dm" -#include "code\modules\xenobio\machinery\processor.dm" -#include "code\modules\xgm\xgm_gas_data.dm" -#include "code\modules\xgm\xgm_gas_mixture.dm" -#include "code\unit_tests\decl_tests.dm" -#include "code\unit_tests\language_tests.dm" -#include "code\unit_tests\loadout_tests.dm" -#include "code\unit_tests\map_tests.dm" -#include "code\unit_tests\mob_tests.dm" -#include "code\unit_tests\music_test.dm" -#include "code\unit_tests\recipe_tests.dm" -#include "code\unit_tests\research_tests.dm" -#include "code\unit_tests\sqlite_tests.dm" -#include "code\unit_tests\subsystem_tests.dm" -#include "code\unit_tests\unit_test.dm" -#include "code\unit_tests\zas_tests.dm" -#include "code\unit_tests\integrated_circuits\arithmetic.dm" -#include "code\unit_tests\integrated_circuits\circuits.dm" -#include "code\unit_tests\integrated_circuits\converter.dm" -#include "code\unit_tests\integrated_circuits\logic.dm" -#include "code\unit_tests\integrated_circuits\trig.dm" -#include "code\ZAS\Airflow.dm" -#include "code\ZAS\Atom.dm" -#include "code\ZAS\Connection.dm" -#include "code\ZAS\ConnectionGroup.dm" -#include "code\ZAS\ConnectionManager.dm" -#include "code\ZAS\Controller.dm" -#include "code\ZAS\Debug.dm" -#include "code\ZAS\Diagnostic.dm" -#include "code\ZAS\Fire.dm" -#include "code\ZAS\Phoron.dm" -#include "code\ZAS\Turf.dm" -#include "code\ZAS\Variable Settings.dm" -#include "code\ZAS\Zone.dm" -#include "interface\interface.dm" -#include "interface\skin.dmf" -#include "maps\cynosure\cynosure.dm" -#include "maps\submaps\_helpers.dm" -#include "maps\submaps\poi_landmark.dm" -#include "maps\submaps\engine_submaps\engine_areas.dm" -#include "maps\submaps\engine_submaps\southern_cross\_engine_submaps.dm" -#include "maps\submaps\space_submaps\space.dm" -#include "maps\submaps\space_submaps\vox_derelict\vox_derelict.dm" -#include "maps\submaps\surface_submaps\mountains\mountains.dm" -#include "maps\submaps\surface_submaps\mountains\mountains_areas.dm" -#include "maps\submaps\surface_submaps\plains\plains.dm" -#include "maps\submaps\surface_submaps\plains\plains_areas.dm" -#include "maps\submaps\surface_submaps\wilderness\wilderness.dm" -#include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" -#include "maps\~map_system\maps.dm" -// END_INCLUDE From 63e9a069be1e2d24a58d26138822e2b23004ad36 Mon Sep 17 00:00:00 2001 From: Heroman Date: Fri, 7 Jul 2023 17:17:49 +1000 Subject: [PATCH 7/7] Compatibility fixes --- code/datums/autolathe/engineering.dm | 2 +- .../objects/items/stacks/tiles/tile_types.dm | 4 ++-- .../items/weapons/circuitboards/frame.dm | 2 +- code/game/objects/structures/window.dm | 2 +- icons/obj/stock_parts.dmi | Bin 97716 -> 98309 bytes icons/obj/stock_parts_vr.dmi | Bin 67987 -> 68678 bytes vorestation.dme | 1 + 7 files changed, 6 insertions(+), 5 deletions(-) diff --git a/code/datums/autolathe/engineering.dm b/code/datums/autolathe/engineering.dm index 228f0d5428..78b7da1e8e 100644 --- a/code/datums/autolathe/engineering.dm +++ b/code/datums/autolathe/engineering.dm @@ -80,7 +80,7 @@ /datum/category_item/autolathe/engineering/electrochromic name = "electrochromic window control electronics" - path =/obj/item/circuitboard/electrochromic + path =/obj/item/weapon/circuitboard/electrochromic /datum/category_item/autolathe/engineering/pipelayer name = "pipe layer electronics" diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 28ff940097..6f97f72e3d 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -41,8 +41,8 @@ stacktype = material.stack_type /obj/item/stack/tile/attackby(obj/item/W as obj, mob/user as mob) - if (istype(W, /obj/item/weldingtool)) - var/obj/item/weldingtool/WT = W + if (istype(W, /obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W if(can_weld == FALSE) to_chat("You can't reform these into their original components.") diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index ef1e041fb7..c9bed28a5e 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -74,7 +74,7 @@ board_type = new /datum/frame/frame_types/geiger matter = list(MAT_STEEL = 50, MAT_GLASS = 50) -/obj/item/circuitboard/electrochromic +/obj/item/weapon/circuitboard/electrochromic name = T_BOARD("electrochromic button") build_path = /obj/machinery/button/windowtint board_type = new /datum/frame/frame_types/electrochromic_button diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 3c91dd3374..35e7a339af 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -637,7 +637,7 @@ icon_state = "light0" desc = "A remote control switch for polarized windows." var/range = 7 - circuit = /obj/item/circuitboard/electrochromic + circuit = /obj/item/weapon/circuitboard/electrochromic /obj/machinery/button/windowtint/attack_hand(mob/user as mob) if(..()) diff --git a/icons/obj/stock_parts.dmi b/icons/obj/stock_parts.dmi index 1f58fb93302c23afeb5ed1b9a6ff1d2886135b97..30baa36e3cd27e89bb957a839644a98a5cfd95b2 100644 GIT binary patch delta 11565 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 delta 10968 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 VB;|dITtSGRyo}2GDk;<8{|CDgb{+r# diff --git a/icons/obj/stock_parts_vr.dmi b/icons/obj/stock_parts_vr.dmi index 7b078871a729f1550ccb95c0774ef644cad7c40f..8e48a4c0a30001c81235039749cb0bf3f5c5cff0 100644 GIT binary patch delta 23846 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ฌ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