diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index ff4b08f844..6c5e49c3cf 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -14,17 +14,69 @@
var/throwforce = 1
var/list/attack_verb = list() //Used in attackby() to say how something was attacked "[x] has been [z.attack_verb] by [y] with [z]"
- proc/handle_internal_lifeform(mob/lifeform_inside_me, breath_request)
- //Return: (NONSTANDARD)
- // null if object handles breathing logic for lifeform
- // datum/air_group to tell lifeform to process using that breath return
- //DEFAULT: Take air from turf to give to have mob process
- if(breath_request>0)
- return remove_air(breath_request)
- else
- return null
+/obj/proc/handle_internal_lifeform(mob/lifeform_inside_me, breath_request)
+ //Return: (NONSTANDARD)
+ // null if object handles breathing logic for lifeform
+ // datum/air_group to tell lifeform to process using that breath return
+ //DEFAULT: Take air from turf to give to have mob process
+ if(breath_request>0)
+ return remove_air(breath_request)
+ else
+ return null
- proc/initialize()
+/obj/proc/initialize()
+ return
+
+/obj/proc/updateUsrDialog()
+ var/list/nearby = viewers(1, src)
+ for(var/mob/M in nearby)
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot))
+ if (!(usr in nearby))
+ if (usr.client && usr.machine==src) // && M.machine == src is omitted because if we triggered this by using the dialog, it doesn't matter if our machine changed in between triggering it and this - the dialog is probably still supposed to refresh.
+ src.attack_ai(usr)
+
+ // check for TK users
+ //AutoUpdateTK(src)
+ if (istype(usr, /mob/living/carbon/human))
+ if(istype(usr.l_hand, /obj/item/tk_grab) || istype(usr.r_hand, /obj/item/tk_grab/))
+ if(!(usr in nearby))
+ if(usr.client && usr.machine==src)
+ src.attack_hand(usr)
+
+/obj/proc/updateDialog()
+ var/list/nearby = viewers(1, src)
+ for(var/mob/M in nearby)
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ AutoUpdateAI(src)
+ //AutoUpdateTK(src)
+
+/obj/proc/update_icon()
+ return
+
+/obj/item/proc/updateSelfDialog()
+ var/mob/M = src.loc
+ if(istype(M) && M.client && M.machine == src)
+ src.attack_self(M)
+
+
+/obj/proc/alter_health()
+ return 1
+
+/obj/proc/hide(h)
+ return
+
+
+/obj/proc/hear_talk(mob/M as mob, text)
+/*
+ var/mob/mo = locate(/mob) in src
+ if(mo)
+ var/rendered = "[M.name]: [text]"
+ mo.show_message(rendered, 2)
+ */
+ return
/obj/structure/signpost
icon = 'icons/obj/stationobjs.dmi'
diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm
new file mode 100644
index 0000000000..8300a0f744
--- /dev/null
+++ b/code/game/objects/effects/decals/crayon.dm
@@ -0,0 +1,35 @@
+/obj/effect/decal/cleanable/crayon
+ name = "rune"
+ desc = "A rune drawn in crayon."
+ icon = 'icons/obj/rune.dmi'
+ layer = 2.1
+ anchored = 1
+
+
+ examine()
+ set src in view(2)
+ ..()
+ return
+
+
+ New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune")
+ ..()
+ loc = location
+
+ name = type
+ desc = "A [type] drawn in crayon."
+
+ switch(type)
+ if("rune")
+ type = "rune[rand(1,6)]"
+ if("graffiti")
+ type = pick("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa")
+
+ var/icon/mainOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]",2.1)
+ var/icon/shadeOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]s",2.1)
+
+ mainOverlay.Blend(main,ICON_ADD)
+ shadeOverlay.Blend(shade,ICON_ADD)
+
+ overlays += mainOverlay
+ overlays += shadeOverlay
\ No newline at end of file
diff --git a/code/game/objects/bodybag.dm b/code/game/objects/items/bodybag.dm
similarity index 100%
rename from code/game/objects/bodybag.dm
rename to code/game/objects/items/bodybag.dm
diff --git a/code/game/objects/toys.dm b/code/game/objects/items/crayons.dm
similarity index 59%
rename from code/game/objects/toys.dm
rename to code/game/objects/items/crayons.dm
index b460bfef90..27b38ac5f0 100644
--- a/code/game/objects/toys.dm
+++ b/code/game/objects/items/crayons.dm
@@ -1,34 +1,3 @@
-/*--------
-//CONTAINS
-CRAYONS
---------*/
-/obj/item/weapon/storage/crayonbox/New()
- ..()
- new /obj/item/toy/crayon/red(src)
- new /obj/item/toy/crayon/orange(src)
- new /obj/item/toy/crayon/yellow(src)
- new /obj/item/toy/crayon/green(src)
- new /obj/item/toy/crayon/blue(src)
- new /obj/item/toy/crayon/purple(src)
- update_icon()
-
-/obj/item/weapon/storage/crayonbox/update_icon()
- overlays = list() //resets list
- overlays += image('icons/obj/crayons.dmi',"crayonbox")
- for(var/obj/item/toy/crayon/crayon in contents)
- overlays += image('icons/obj/crayons.dmi',crayon.colourName)
-
-/obj/item/weapon/storage/crayonbox/attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W,/obj/item/toy/crayon))
- switch(W:colourName)
- if("mime")
- usr << "This crayon is too sad to be contained in this box."
- return
- if("rainbow")
- usr << "This crayon is too powerful to be contained in this box."
- return
- ..()
-
/obj/item/toy/crayon/red
icon_state = "crayonred"
colour = "#DA0000"
@@ -127,40 +96,4 @@ CRAYONS
user << "\red You ate your crayon!"
del(src)
else
- ..()
-
-/obj/effect/decal/cleanable/crayon
- name = "rune"
- desc = "A rune drawn in crayon."
- icon = 'icons/obj/rune.dmi'
- layer = 2.1
- anchored = 1
-
-
- examine()
- set src in view(2)
- ..()
- return
-
-
- New(location,main = "#FFFFFF",shade = "#000000",var/type = "rune")
- ..()
- loc = location
-
- name = type
- desc = "A [type] drawn in crayon."
-
- switch(type)
- if("rune")
- type = "rune[rand(1,6)]"
- if("graffiti")
- type = pick("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa")
-
- var/icon/mainOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]",2.1)
- var/icon/shadeOverlay = new/icon('icons/effects/crayondecal.dmi',"[type]s",2.1)
-
- mainOverlay.Blend(main,ICON_ADD)
- shadeOverlay.Blend(shade,ICON_ADD)
-
- overlays += mainOverlay
- overlays += shadeOverlay
\ No newline at end of file
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
similarity index 100%
rename from code/game/objects/devices/PDA/PDA.dm
rename to code/game/objects/items/devices/PDA/PDA.dm
diff --git a/code/game/objects/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
similarity index 100%
rename from code/game/objects/devices/PDA/cart.dm
rename to code/game/objects/items/devices/PDA/cart.dm
diff --git a/code/game/objects/devices/PDA/chatroom.dm b/code/game/objects/items/devices/PDA/chatroom.dm
similarity index 100%
rename from code/game/objects/devices/PDA/chatroom.dm
rename to code/game/objects/items/devices/PDA/chatroom.dm
diff --git a/code/game/objects/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm
similarity index 100%
rename from code/game/objects/devices/PDA/radio.dm
rename to code/game/objects/items/devices/PDA/radio.dm
diff --git a/code/game/objects/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
similarity index 100%
rename from code/game/objects/devices/aicard.dm
rename to code/game/objects/items/devices/aicard.dm
diff --git a/code/game/objects/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm
similarity index 100%
rename from code/game/objects/devices/chameleonproj.dm
rename to code/game/objects/items/devices/chameleonproj.dm
diff --git a/code/game/objects/devices/flash.dm b/code/game/objects/items/devices/flash.dm
similarity index 100%
rename from code/game/objects/devices/flash.dm
rename to code/game/objects/items/devices/flash.dm
diff --git a/code/game/objects/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
similarity index 100%
rename from code/game/objects/devices/flashlight.dm
rename to code/game/objects/items/devices/flashlight.dm
diff --git a/code/game/objects/devices/infra_sensor.dm b/code/game/objects/items/devices/infra_sensor.dm
similarity index 100%
rename from code/game/objects/devices/infra_sensor.dm
rename to code/game/objects/items/devices/infra_sensor.dm
diff --git a/code/game/objects/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
similarity index 100%
rename from code/game/objects/devices/lightreplacer.dm
rename to code/game/objects/items/devices/lightreplacer.dm
diff --git a/code/game/objects/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm
similarity index 100%
rename from code/game/objects/devices/multitool.dm
rename to code/game/objects/items/devices/multitool.dm
diff --git a/code/game/objects/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
similarity index 100%
rename from code/game/objects/devices/paicard.dm
rename to code/game/objects/items/devices/paicard.dm
diff --git a/code/game/objects/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
similarity index 100%
rename from code/game/objects/devices/powersink.dm
rename to code/game/objects/items/devices/powersink.dm
diff --git a/code/game/objects/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm
similarity index 100%
rename from code/game/objects/radio/beacon.dm
rename to code/game/objects/items/devices/radio/beacon.dm
diff --git a/code/game/objects/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
similarity index 100%
rename from code/game/objects/radio/electropack.dm
rename to code/game/objects/items/devices/radio/electropack.dm
diff --git a/code/game/objects/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm
similarity index 100%
rename from code/game/objects/radio/encryptionkey.dm
rename to code/game/objects/items/devices/radio/encryptionkey.dm
diff --git a/code/game/objects/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
similarity index 100%
rename from code/game/objects/radio/headset.dm
rename to code/game/objects/items/devices/radio/headset.dm
diff --git a/code/game/objects/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
similarity index 100%
rename from code/game/objects/radio/intercom.dm
rename to code/game/objects/items/devices/radio/intercom.dm
diff --git a/code/game/objects/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
similarity index 100%
rename from code/game/objects/radio/radio.dm
rename to code/game/objects/items/devices/radio/radio.dm
diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
similarity index 100%
rename from code/game/objects/devices/scanners.dm
rename to code/game/objects/items/devices/scanners.dm
diff --git a/code/game/objects/devices/shields.dm b/code/game/objects/items/devices/shields.dm
similarity index 100%
rename from code/game/objects/devices/shields.dm
rename to code/game/objects/items/devices/shields.dm
diff --git a/code/game/objects/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
similarity index 100%
rename from code/game/objects/devices/taperecorder.dm
rename to code/game/objects/items/devices/taperecorder.dm
diff --git a/code/game/objects/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
similarity index 100%
rename from code/game/objects/devices/traitordevices.dm
rename to code/game/objects/items/devices/traitordevices.dm
diff --git a/code/game/objects/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
similarity index 100%
rename from code/game/objects/devices/transfer_valve.dm
rename to code/game/objects/items/devices/transfer_valve.dm
diff --git a/code/game/objects/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm
similarity index 100%
rename from code/game/objects/devices/uplinks.dm
rename to code/game/objects/items/devices/uplinks.dm
diff --git a/code/game/objects/shooting_range.dm b/code/game/objects/items/shooting_range.dm
similarity index 100%
rename from code/game/objects/shooting_range.dm
rename to code/game/objects/items/shooting_range.dm
diff --git a/code/game/objects/stacks/glass.dm b/code/game/objects/items/stacks/glass.dm
similarity index 100%
rename from code/game/objects/stacks/glass.dm
rename to code/game/objects/items/stacks/glass.dm
diff --git a/code/game/objects/stacks/metal.dm b/code/game/objects/items/stacks/metal.dm
similarity index 100%
rename from code/game/objects/stacks/metal.dm
rename to code/game/objects/items/stacks/metal.dm
diff --git a/code/game/objects/stacks/minerals.dm b/code/game/objects/items/stacks/minerals.dm
similarity index 100%
rename from code/game/objects/stacks/minerals.dm
rename to code/game/objects/items/stacks/minerals.dm
diff --git a/code/game/objects/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
similarity index 100%
rename from code/game/objects/stacks/stack.dm
rename to code/game/objects/items/stacks/stack.dm
diff --git a/code/game/objects/stacks/wood.dm b/code/game/objects/items/stacks/wood.dm
similarity index 100%
rename from code/game/objects/stacks/wood.dm
rename to code/game/objects/items/stacks/wood.dm
diff --git a/code/game/objects/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
similarity index 100%
rename from code/game/objects/grenades/chem_grenade.dm
rename to code/game/objects/items/weapons/grenades/chem_grenade.dm
diff --git a/code/game/objects/grenades/emgrenade.dm b/code/game/objects/items/weapons/grenades/emgrenade.dm
similarity index 100%
rename from code/game/objects/grenades/emgrenade.dm
rename to code/game/objects/items/weapons/grenades/emgrenade.dm
diff --git a/code/game/objects/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
similarity index 100%
rename from code/game/objects/grenades/flashbang.dm
rename to code/game/objects/items/weapons/grenades/flashbang.dm
diff --git a/code/game/objects/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
similarity index 100%
rename from code/game/objects/grenades/grenade.dm
rename to code/game/objects/items/weapons/grenades/grenade.dm
diff --git a/code/game/objects/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm
similarity index 100%
rename from code/game/objects/grenades/smokebomb.dm
rename to code/game/objects/items/weapons/grenades/smokebomb.dm
diff --git a/code/game/objects/grenades/spawnergrenade.dm b/code/game/objects/items/weapons/grenades/spawnergrenade.dm
similarity index 100%
rename from code/game/objects/grenades/spawnergrenade.dm
rename to code/game/objects/items/weapons/grenades/spawnergrenade.dm
diff --git a/code/game/objects/secstorage/sbriefcase.dm b/code/game/objects/items/weapons/secstorage/sbriefcase.dm
similarity index 100%
rename from code/game/objects/secstorage/sbriefcase.dm
rename to code/game/objects/items/weapons/secstorage/sbriefcase.dm
diff --git a/code/game/objects/secstorage/secstorage.dm b/code/game/objects/items/weapons/secstorage/secstorage.dm
similarity index 100%
rename from code/game/objects/secstorage/secstorage.dm
rename to code/game/objects/items/weapons/secstorage/secstorage.dm
diff --git a/code/game/objects/secstorage/ssafe.dm b/code/game/objects/items/weapons/secstorage/ssafe.dm
similarity index 100%
rename from code/game/objects/secstorage/ssafe.dm
rename to code/game/objects/items/weapons/secstorage/ssafe.dm
diff --git a/code/game/objects/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm
similarity index 100%
rename from code/game/objects/storage/backpack.dm
rename to code/game/objects/items/weapons/storage/backpack.dm
diff --git a/code/game/objects/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
similarity index 100%
rename from code/game/objects/storage/belt.dm
rename to code/game/objects/items/weapons/storage/belt.dm
diff --git a/code/game/objects/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm
similarity index 100%
rename from code/game/objects/storage/bible.dm
rename to code/game/objects/items/weapons/storage/bible.dm
diff --git a/code/game/objects/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm
similarity index 100%
rename from code/game/objects/storage/briefcase.dm
rename to code/game/objects/items/weapons/storage/briefcase.dm
diff --git a/code/game/objects/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
similarity index 100%
rename from code/game/objects/storage/fancy.dm
rename to code/game/objects/items/weapons/storage/fancy.dm
diff --git a/code/game/objects/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm
similarity index 100%
rename from code/game/objects/storage/firstaid.dm
rename to code/game/objects/items/weapons/storage/firstaid.dm
diff --git a/code/game/objects/storage/kit.dm b/code/game/objects/items/weapons/storage/kit.dm
similarity index 100%
rename from code/game/objects/storage/kit.dm
rename to code/game/objects/items/weapons/storage/kit.dm
diff --git a/code/game/objects/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm
similarity index 100%
rename from code/game/objects/storage/lockbox.dm
rename to code/game/objects/items/weapons/storage/lockbox.dm
diff --git a/code/game/objects/storage/misc.dm b/code/game/objects/items/weapons/storage/misc.dm
similarity index 61%
rename from code/game/objects/storage/misc.dm
rename to code/game/objects/items/weapons/storage/misc.dm
index 82b0a5aafd..4020ca1614 100644
--- a/code/game/objects/storage/misc.dm
+++ b/code/game/objects/items/weapons/storage/misc.dm
@@ -3,6 +3,7 @@
* Monkey Cube Box
* Candle Packs
* Snap Pop Box
+ * Crayon Box
*/
/*
@@ -69,4 +70,35 @@
W.icon_state = "match_lit"
processing_objects.Add(W)
W.update_icon()
- return
\ No newline at end of file
+ return
+
+/*
+ * Crayon Box
+ */
+
+/obj/item/weapon/storage/crayonbox/New()
+ ..()
+ new /obj/item/toy/crayon/red(src)
+ new /obj/item/toy/crayon/orange(src)
+ new /obj/item/toy/crayon/yellow(src)
+ new /obj/item/toy/crayon/green(src)
+ new /obj/item/toy/crayon/blue(src)
+ new /obj/item/toy/crayon/purple(src)
+ update_icon()
+
+/obj/item/weapon/storage/crayonbox/update_icon()
+ overlays = list() //resets list
+ overlays += image('icons/obj/crayons.dmi',"crayonbox")
+ for(var/obj/item/toy/crayon/crayon in contents)
+ overlays += image('icons/obj/crayons.dmi',crayon.colourName)
+
+/obj/item/weapon/storage/crayonbox/attackby(obj/item/W as obj, mob/user as mob)
+ if(istype(W,/obj/item/toy/crayon))
+ switch(W:colourName)
+ if("mime")
+ usr << "This crayon is too sad to be contained in this box."
+ return
+ if("rainbow")
+ usr << "This crayon is too powerful to be contained in this box."
+ return
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
similarity index 100%
rename from code/game/objects/storage/storage.dm
rename to code/game/objects/items/weapons/storage/storage.dm
diff --git a/code/game/objects/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm
similarity index 100%
rename from code/game/objects/storage/toolbox.dm
rename to code/game/objects/items/weapons/storage/toolbox.dm
diff --git a/code/game/objects/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
similarity index 100%
rename from code/game/objects/storage/uplink_kits.dm
rename to code/game/objects/items/weapons/storage/uplink_kits.dm
diff --git a/code/game/objects/tanks/emergency.dm b/code/game/objects/items/weapons/tanks/emergency.dm
similarity index 100%
rename from code/game/objects/tanks/emergency.dm
rename to code/game/objects/items/weapons/tanks/emergency.dm
diff --git a/code/game/objects/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm
similarity index 100%
rename from code/game/objects/tanks/jetpack.dm
rename to code/game/objects/items/weapons/tanks/jetpack.dm
diff --git a/code/game/objects/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
similarity index 100%
rename from code/game/objects/tanks/tank_types.dm
rename to code/game/objects/items/weapons/tanks/tank_types.dm
diff --git a/code/game/objects/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
similarity index 100%
rename from code/game/objects/tanks/tanks.dm
rename to code/game/objects/items/weapons/tanks/tanks.dm
diff --git a/code/game/objects/object_procs.dm b/code/game/objects/object_procs.dm
deleted file mode 100644
index f57f6ce93a..0000000000
--- a/code/game/objects/object_procs.dm
+++ /dev/null
@@ -1,50 +0,0 @@
-/obj/proc/updateUsrDialog()
- var/list/nearby = viewers(1, src)
- for(var/mob/M in nearby)
- if ((M.client && M.machine == src))
- src.attack_hand(M)
- if (istype(usr, /mob/living/silicon/ai) || istype(usr, /mob/living/silicon/robot))
- if (!(usr in nearby))
- if (usr.client && usr.machine==src) // && M.machine == src is omitted because if we triggered this by using the dialog, it doesn't matter if our machine changed in between triggering it and this - the dialog is probably still supposed to refresh.
- src.attack_ai(usr)
-
- // check for TK users
- //AutoUpdateTK(src)
- if (istype(usr, /mob/living/carbon/human))
- if(istype(usr.l_hand, /obj/item/tk_grab) || istype(usr.r_hand, /obj/item/tk_grab/))
- if(!(usr in nearby))
- if(usr.client && usr.machine==src)
- src.attack_hand(usr)
-
-/obj/proc/updateDialog()
- var/list/nearby = viewers(1, src)
- for(var/mob/M in nearby)
- if ((M.client && M.machine == src))
- src.attack_hand(M)
- AutoUpdateAI(src)
- //AutoUpdateTK(src)
-
-/obj/proc/update_icon()
- return
-
-/obj/item/proc/updateSelfDialog()
- var/mob/M = src.loc
- if(istype(M) && M.client && M.machine == src)
- src.attack_self(M)
-
-
-/obj/proc/alter_health()
- return 1
-
-/obj/proc/hide(h)
- return
-
-
-/obj/proc/hear_talk(mob/M as mob, text)
-/*
- var/mob/mo = locate(/mob) in src
- if(mo)
- var/rendered = "[M.name]: [text]"
- mo.show_message(rendered, 2)
- */
- return
\ No newline at end of file
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 33e4e4b961..594c95b6c8 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -22,620 +22,7 @@ obj/structure/meteorhit(obj/O as obj)
-/obj/structure/girder
- icon_state = "girder"
- anchored = 1
- density = 1
- layer = 2
- var/state = 0
- attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench) && state == 0)
- if(anchored && !istype(src,/obj/structure/girder/displaced))
- playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user << "\blue Now disassembling the girder"
- if(do_after(user,40))
- if(!src) return
- user << "\blue You dissasembled the girder!"
- new /obj/item/stack/sheet/metal(get_turf(src))
- del(src)
- else if(!anchored)
- playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user << "\blue Now securing the girder"
- if(get_turf(user, 40))
- user << "\blue You secured the girder!"
- new/obj/structure/girder( src.loc )
- del(src)
- else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
- user << "\blue Now slicing apart the girder"
- if(do_after(user,30))
- if(!src) return
- user << "\blue You slice apart the girder!"
- new /obj/item/stack/sheet/metal(get_turf(src))
- del(src)
- else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
- user << "\blue You drill through the girder!"
- new /obj/item/stack/sheet/metal(get_turf(src))
- del(src)
- else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced))
- playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
- user << "\blue Now unsecuring support struts"
- if(do_after(user,40))
- if(!src) return
- user << "\blue You unsecured the support struts!"
- state = 1
-
- else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1)
- playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
- user << "\blue Now removing support struts"
- if(do_after(user,40))
- if(!src) return
- user << "\blue You removed the support struts!"
- new/obj/structure/girder( src.loc )
- del(src)
-
- else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored )
- playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user << "\blue Now dislodging the girder"
- if(do_after(user, 40))
- if(!src) return
- user << "\blue You dislodged the girder!"
- new/obj/structure/girder/displaced( src.loc )
- del(src)
-
- else if(istype(W, /obj/item/stack/sheet))
-
- var/obj/item/stack/sheet/S = W
- switch(S.type)
-
- if(/obj/item/stack/sheet/metal)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall (src.loc)
- else
- if(S.amount < 2) return ..()
- user << "\blue Now adding plating..."
- if (do_after(user,40))
- if(!src || !S || S.amount < 2) return
- S.use(2)
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithWall()
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
-
- if(/obj/item/stack/sheet/plasteel)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falserwall (src.loc)
- else
- if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code...
- if(S.amount < 1) return ..()
- user << "\blue Now finalising reinforced wall."
- if(do_after(user, 50))
- if(!src || !S || S.amount < 1) return
- S.use(1)
- user << "\blue Wall fully reinforced!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithRWall()
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
- else
- if(S.amount < 1) return ..()
- user << "\blue Now reinforcing girders"
- if (do_after(user,60))
- if(!src || !S || S.amount < 1) return
- S.use(1)
- user << "\blue Girders reinforced!"
- new/obj/structure/girder/reinforced( src.loc )
- del(src)
- return
-
- if(/obj/item/stack/sheet/gold)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall/gold (src.loc)
- else
- if(S.amount < 2) return ..()
- user << "\blue Now adding plating..."
- if (do_after(user,40))
- if(!src || !S || S.amount < 2) return
- S.use(2)
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithMineralWall("gold")
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
-
- if(/obj/item/stack/sheet/silver)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall/silver (src.loc)
- else
- if(S.amount < 2) return ..()
- user << "\blue Now adding plating..."
- if (do_after(user,40))
- if(!src || !S || S.amount < 2) return
- S.use(2)
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithMineralWall("silver")
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
-
- if(/obj/item/stack/sheet/diamond)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall/diamond (src.loc)
- else
- if(S.amount < 2) return ..()
- user << "\blue Now adding plating..."
- if (do_after(user,40))
- if(!src || !S || S.amount < 2) return
- S.use(2)
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithMineralWall("diamond")
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
-
- if(/obj/item/stack/sheet/uranium)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall/uranium (src.loc)
- else
- if(S.amount < 2) return ..()
- user << "\blue Now adding plating..."
- if (do_after(user,40))
- if(!src || !S || S.amount < 2) return
- S.use(2)
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithMineralWall("uranium")
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
-
- if(/obj/item/stack/sheet/plasma)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall/plasma (src.loc)
- else
- if(S.amount < 2) return ..()
- user << "\blue Now adding plating..."
- if (do_after(user,40))
- if(!src || !S || S.amount < 2) return
- S.use(2)
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithMineralWall("plasma")
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
-
- if(/obj/item/stack/sheet/clown)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall/clown (src.loc)
- else
- if(S.amount < 2) return ..()
- user << "\blue Now adding plating..."
- if (do_after(user,40))
- if(!src || !S || S.amount < 2) return
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithMineralWall("clown")
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
-
- if(/obj/item/stack/sheet/sandstone)
- if(!anchored)
- if(S.amount < 2) return
- S.use(2)
- user << "\blue You create a false wall! Push on it to open or close the passage."
- new /obj/structure/falsewall/sandstone (src.loc)
- else
- if(S.amount < 2) return ..()
- user << "\blue Now adding plating..."
- if (do_after(user,40))
- if(!src || !S || S.amount < 2) return
- S.use(2)
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithMineralWall("sandstone")
- for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
- P.layer = 1
- for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
- if(X) X.add_hiddenprint(usr)
- del(src)
- return
-
- add_hiddenprint(usr)
- del(src)
-
- else if(istype(W, /obj/item/pipe))
- var/obj/item/pipe/P = W
- if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
- user.drop_item()
- P.loc = src.loc
- user << "\blue You fit the pipe into the [src]!"
- else
- ..()
-
-
- blob_act()
- if(prob(40))
- del(src)
-
-
- ex_act(severity)
- switch(severity)
- if(1.0)
- del(src)
- return
- if(2.0)
- if (prob(30))
- var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
- new remains(loc)
- del(src)
- return
- if(3.0)
- if (prob(5))
- var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
- new remains(loc)
- del(src)
- return
- else
- return
-
-/obj/structure/girder/displaced
- icon_state = "displaced"
- anchored = 0
-
-/obj/structure/girder/reinforced
- icon_state = "reinforced"
- state = 2
-
-/obj/structure/cultgirder
- icon= 'icons/obj/cult.dmi'
- icon_state= "cultgirder"
- anchored = 1
- density = 1
- layer = 2
-
- attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
- playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user << "\blue Now disassembling the girder"
- if(do_after(user,40))
- user << "\blue You dissasembled the girder!"
- new /obj/effect/decal/remains/human(get_turf(src))
- del(src)
-
- else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
- user << "\blue Now slicing apart the girder"
- if(do_after(user,30))
- user << "\blue You slice apart the girder!"
- new /obj/effect/decal/remains/human(get_turf(src))
- del(src)
-
- else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
- user << "\blue You drill through the girder!"
- new /obj/effect/decal/remains/human(get_turf(src))
- del(src)
-
- blob_act()
- if(prob(40))
- del(src)
-
-
- ex_act(severity)
- switch(severity)
- if(1.0)
- del(src)
- return
- if(2.0)
- if (prob(30))
- new /obj/effect/decal/remains/human(loc)
- del(src)
- return
- if(3.0)
- if (prob(5))
- new /obj/effect/decal/remains/human(loc)
- del(src)
- return
- else
- return
-
-// LATTICE
-
-
-/obj/structure/lattice/blob_act()
- del(src)
- return
-
-/obj/structure/lattice/ex_act(severity)
- switch(severity)
- if(1.0)
- del(src)
- return
- if(2.0)
- del(src)
- return
- if(3.0)
- return
- else
- return
-
-/obj/structure/lattice/attackby(obj/item/C as obj, mob/user as mob)
-
- if (istype(C, /obj/item/stack/tile/plasteel))
- var/turf/T = get_turf(src)
- T.attackby(C, user) //BubbleWrap - hand this off to the underlying turf instead
- return
- if (istype(C, /obj/item/weapon/weldingtool))
- var/obj/item/weapon/weldingtool/WT = C
- if(WT.remove_fuel(0, user))
- user << "\blue Slicing lattice joints ..."
- new /obj/item/stack/rods(src.loc)
- del(src)
-
- return
-
-/obj/structure/falsewall
- var/mineral = "metal"
-
-/obj/structure/falserwall
- var/mineral = "metal"
-
-/obj/structure/falsewall/gold
- mineral = "gold"
-
-/obj/structure/falsewall/silver
- mineral = "silver"
-
-/obj/structure/falsewall/diamond
- mineral = "diamond"
-
-/obj/structure/falsewall/uranium
- mineral = "uranium"
- var/active = null
- var/last_event = 0
-
-/obj/structure/falsewall/plasma
- mineral = "plasma"
-
-/obj/structure/falsewall/clown
- mineral = "clown"
-
-/obj/structure/falsewall/sandstone
- mineral = "sandstone"
-
-/*/obj/structure/falsewall/wood
- mineral = "wood"*/
-
-/obj/structure/falsewall/attack_hand(mob/user as mob)
- if(density)
- // Open wall
- icon_state = "[mineral]fwall_open"
- flick("[mineral]fwall_opening", src)
- sleep(15)
- src.density = 0
- SetOpacity(0)
- else
- flick("[mineral]fwall_closing", src)
- icon_state = "[mineral]0"
- sleep(15)
- src.density = 1
- SetOpacity(1)
- src.relativewall()
-
-/obj/structure/falsewall/uranium/attack_hand(mob/user as mob)
- radiate()
- ..()
-
-/obj/structure/falsewall/update_icon()//Calling icon_update will refresh the smoothwalls if it's closed, otherwise it will make sure the icon is correct if it's open
- ..()
- if(density)
- icon_state = "[mineral]0"
- src.relativewall()
- else
- icon_state = "[mineral]fwall_open"
-
-/obj/structure/falsewall/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
- var/turf/T = get_turf(src)
- user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.")
- if(!mineral)
- T.ReplaceWithWall()
- else
- T.ReplaceWithMineralWall(mineral)
- del(src)
-
- if( istype(W, /obj/item/weapon/weldingtool) )
- var/obj/item/weapon/weldingtool/WT = W
- if( WT:welding )
- var/turf/T = get_turf(src)
- if(!mineral)
- T.ReplaceWithWall()
- else
- T.ReplaceWithMineralWall(mineral)
- if(mineral != "plasma")//Stupid shit keeps me from pushing the attackby() to plasma walls -Sieve
- T = get_turf(src)
- T.attackby(W,user)
- del(src)
-
- else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
- var/turf/T = get_turf(src)
- if(!mineral)
- T.ReplaceWithWall()
- else
- T.ReplaceWithMineralWall(mineral)
- if(mineral != "plasma")
- T = get_turf(src)
- T.attackby(W,user)
- del(src)
-
- //DRILLING
- else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
- var/turf/T = get_turf(src)
- if(!mineral)
- T.ReplaceWithWall()
- else
- T.ReplaceWithMineralWall(mineral)
- T = get_turf(src)
- T.attackby(W,user)
- del(src)
-
- else if( istype(W, /obj/item/weapon/melee/energy/blade) )
- var/turf/T = get_turf(src)
- if(!mineral)
- T.ReplaceWithWall()
- else
- T.ReplaceWithMineralWall(mineral)
- if(mineral != "plasma")
- T = get_turf(src)
- T.attackby(W,user)
- del(src)
- /*
-
- var/turf/T = get_turf(user)
- user << "\blue Now adding plating..."
- sleep(40)
- if (get_turf(user) == T)
- user << "\blue You added the plating!"
- var/turf/Tsrc = get_turf(src)
- Tsrc.ReplaceWithWall()
-
- */
-
-/obj/structure/falsewall/uranium/attackby(obj/item/weapon/W as obj, mob/user as mob)
- radiate()
- ..()
-
-/obj/structure/falsewall/update_icon()//Calling icon_update will refresh the smoothwalls if it's closed, otherwise it will make sure the icon is correct if it's open
- ..()
- if(density)
- icon_state = "[mineral]0"
- src.relativewall()
- else
- icon_state = "[mineral]fwall_open"
-
-/obj/structure/falserwall/
- attack_hand(mob/user as mob)
- if(density)
- // Open wall
- icon_state = "frwall_open"
- flick("frwall_opening", src)
- sleep(15)
- density = 0
- SetOpacity(0)
- else
- icon_state = "r_wall"
- flick("frwall_closing", src)
- sleep(15)
- density = 1
- SetOpacity(1)
- relativewall()
-
-
- attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
- var/turf/T = get_turf(src)
- user.visible_message("[user] tightens some bolts on the r wall.", "You tighten the bolts on the wall.")
- T.ReplaceWithWall() //Intentionally makes a regular wall instead of an r-wall (no cheap r-walls for you).
- del(src)
-
- if( istype(W, /obj/item/weapon/weldingtool) )
- var/obj/item/weapon/weldingtool/WT = W
- if( WT.remove_fuel(0,user) )
- var/turf/T = get_turf(src)
- T.ReplaceWithWall()
- T = get_turf(src)
- T.attackby(W,user)
- del(src)
-
- else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
- var/turf/T = get_turf(src)
- T.ReplaceWithWall()
- T = get_turf(src)
- T.attackby(W,user)
- del(src)
-
- //DRILLING
- else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
- var/turf/T = get_turf(src)
- T.ReplaceWithWall()
- T = get_turf(src)
- T.attackby(W,user)
- del(src)
-
- else if( istype(W, /obj/item/weapon/melee/energy/blade) )
- var/turf/T = get_turf(src)
- T.ReplaceWithWall()
- T = get_turf(src)
- T.attackby(W,user)
- del(src)
-
-/obj/structure/falsewall/uranium/proc/radiate()
- if(!active)
- if(world.time > last_event+15)
- active = 1
- for(var/mob/living/L in range(3,src))
- L.apply_effect(12,IRRADIATE,0)
- for(var/turf/simulated/wall/mineral/T in range(3,src))
- if(T.mineral == "uranium")
- T.radiate()
- last_event = world.time
- active = null
- return
- return
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
new file mode 100644
index 0000000000..62a509c00b
--- /dev/null
+++ b/code/game/objects/structures/false_walls.dm
@@ -0,0 +1,208 @@
+/obj/structure/falsewall
+ var/mineral = "metal"
+
+/obj/structure/falserwall
+ var/mineral = "metal"
+
+/obj/structure/falsewall/gold
+ mineral = "gold"
+
+/obj/structure/falsewall/silver
+ mineral = "silver"
+
+/obj/structure/falsewall/diamond
+ mineral = "diamond"
+
+/obj/structure/falsewall/uranium
+ mineral = "uranium"
+ var/active = null
+ var/last_event = 0
+
+/obj/structure/falsewall/plasma
+ mineral = "plasma"
+
+/obj/structure/falsewall/clown
+ mineral = "clown"
+
+/obj/structure/falsewall/sandstone
+ mineral = "sandstone"
+
+/*/obj/structure/falsewall/wood
+ mineral = "wood"*/
+
+/obj/structure/falsewall/attack_hand(mob/user as mob)
+ if(density)
+ // Open wall
+ icon_state = "[mineral]fwall_open"
+ flick("[mineral]fwall_opening", src)
+ sleep(15)
+ src.density = 0
+ SetOpacity(0)
+ else
+ flick("[mineral]fwall_closing", src)
+ icon_state = "[mineral]0"
+ sleep(15)
+ src.density = 1
+ SetOpacity(1)
+ src.relativewall()
+
+/obj/structure/falsewall/uranium/attack_hand(mob/user as mob)
+ radiate()
+ ..()
+
+/obj/structure/falsewall/update_icon()//Calling icon_update will refresh the smoothwalls if it's closed, otherwise it will make sure the icon is correct if it's open
+ ..()
+ if(density)
+ icon_state = "[mineral]0"
+ src.relativewall()
+ else
+ icon_state = "[mineral]fwall_open"
+
+/obj/structure/falsewall/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/screwdriver))
+ var/turf/T = get_turf(src)
+ user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.")
+ if(!mineral)
+ T.ReplaceWithWall()
+ else
+ T.ReplaceWithMineralWall(mineral)
+ del(src)
+
+ if( istype(W, /obj/item/weapon/weldingtool) )
+ var/obj/item/weapon/weldingtool/WT = W
+ if( WT:welding )
+ var/turf/T = get_turf(src)
+ if(!mineral)
+ T.ReplaceWithWall()
+ else
+ T.ReplaceWithMineralWall(mineral)
+ if(mineral != "plasma")//Stupid shit keeps me from pushing the attackby() to plasma walls -Sieve
+ T = get_turf(src)
+ T.attackby(W,user)
+ del(src)
+
+ else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
+ var/turf/T = get_turf(src)
+ if(!mineral)
+ T.ReplaceWithWall()
+ else
+ T.ReplaceWithMineralWall(mineral)
+ if(mineral != "plasma")
+ T = get_turf(src)
+ T.attackby(W,user)
+ del(src)
+
+ //DRILLING
+ else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
+ var/turf/T = get_turf(src)
+ if(!mineral)
+ T.ReplaceWithWall()
+ else
+ T.ReplaceWithMineralWall(mineral)
+ T = get_turf(src)
+ T.attackby(W,user)
+ del(src)
+
+ else if( istype(W, /obj/item/weapon/melee/energy/blade) )
+ var/turf/T = get_turf(src)
+ if(!mineral)
+ T.ReplaceWithWall()
+ else
+ T.ReplaceWithMineralWall(mineral)
+ if(mineral != "plasma")
+ T = get_turf(src)
+ T.attackby(W,user)
+ del(src)
+ /*
+
+ var/turf/T = get_turf(user)
+ user << "\blue Now adding plating..."
+ sleep(40)
+ if (get_turf(user) == T)
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithWall()
+
+ */
+
+/obj/structure/falsewall/uranium/attackby(obj/item/weapon/W as obj, mob/user as mob)
+ radiate()
+ ..()
+
+/obj/structure/falsewall/update_icon()//Calling icon_update will refresh the smoothwalls if it's closed, otherwise it will make sure the icon is correct if it's open
+ ..()
+ if(density)
+ icon_state = "[mineral]0"
+ src.relativewall()
+ else
+ icon_state = "[mineral]fwall_open"
+
+/obj/structure/falserwall/
+ attack_hand(mob/user as mob)
+ if(density)
+ // Open wall
+ icon_state = "frwall_open"
+ flick("frwall_opening", src)
+ sleep(15)
+ density = 0
+ SetOpacity(0)
+ else
+ icon_state = "r_wall"
+ flick("frwall_closing", src)
+ sleep(15)
+ density = 1
+ SetOpacity(1)
+ relativewall()
+
+
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/screwdriver))
+ var/turf/T = get_turf(src)
+ user.visible_message("[user] tightens some bolts on the r wall.", "You tighten the bolts on the wall.")
+ T.ReplaceWithWall() //Intentionally makes a regular wall instead of an r-wall (no cheap r-walls for you).
+ del(src)
+
+ if( istype(W, /obj/item/weapon/weldingtool) )
+ var/obj/item/weapon/weldingtool/WT = W
+ if( WT.remove_fuel(0,user) )
+ var/turf/T = get_turf(src)
+ T.ReplaceWithWall()
+ T = get_turf(src)
+ T.attackby(W,user)
+ del(src)
+
+ else if( istype(W, /obj/item/weapon/pickaxe/plasmacutter) )
+ var/turf/T = get_turf(src)
+ T.ReplaceWithWall()
+ T = get_turf(src)
+ T.attackby(W,user)
+ del(src)
+
+ //DRILLING
+ else if (istype(W, /obj/item/weapon/pickaxe/diamonddrill))
+ var/turf/T = get_turf(src)
+ T.ReplaceWithWall()
+ T = get_turf(src)
+ T.attackby(W,user)
+ del(src)
+
+ else if( istype(W, /obj/item/weapon/melee/energy/blade) )
+ var/turf/T = get_turf(src)
+ T.ReplaceWithWall()
+ T = get_turf(src)
+ T.attackby(W,user)
+ del(src)
+
+/obj/structure/falsewall/uranium/proc/radiate()
+ if(!active)
+ if(world.time > last_event+15)
+ active = 1
+ for(var/mob/living/L in range(3,src))
+ L.apply_effect(12,IRRADIATE,0)
+ for(var/turf/simulated/wall/mineral/T in range(3,src))
+ if(T.mineral == "uranium")
+ T.radiate()
+ last_event = world.time
+ active = null
+ return
+ return
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
new file mode 100644
index 0000000000..7d32ddb4b5
--- /dev/null
+++ b/code/game/objects/structures/girders.dm
@@ -0,0 +1,373 @@
+/obj/structure/girder
+ icon_state = "girder"
+ anchored = 1
+ density = 1
+ layer = 2
+ var/state = 0
+
+ attackby(obj/item/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/wrench) && state == 0)
+ if(anchored && !istype(src,/obj/structure/girder/displaced))
+ playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
+ user << "\blue Now disassembling the girder"
+ if(do_after(user,40))
+ if(!src) return
+ user << "\blue You dissasembled the girder!"
+ new /obj/item/stack/sheet/metal(get_turf(src))
+ del(src)
+ else if(!anchored)
+ playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
+ user << "\blue Now securing the girder"
+ if(get_turf(user, 40))
+ user << "\blue You secured the girder!"
+ new/obj/structure/girder( src.loc )
+ del(src)
+
+ else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
+ user << "\blue Now slicing apart the girder"
+ if(do_after(user,30))
+ if(!src) return
+ user << "\blue You slice apart the girder!"
+ new /obj/item/stack/sheet/metal(get_turf(src))
+ del(src)
+
+ else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
+ user << "\blue You drill through the girder!"
+ new /obj/item/stack/sheet/metal(get_turf(src))
+ del(src)
+
+ else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced))
+ playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
+ user << "\blue Now unsecuring support struts"
+ if(do_after(user,40))
+ if(!src) return
+ user << "\blue You unsecured the support struts!"
+ state = 1
+
+ else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1)
+ playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
+ user << "\blue Now removing support struts"
+ if(do_after(user,40))
+ if(!src) return
+ user << "\blue You removed the support struts!"
+ new/obj/structure/girder( src.loc )
+ del(src)
+
+ else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored )
+ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
+ user << "\blue Now dislodging the girder"
+ if(do_after(user, 40))
+ if(!src) return
+ user << "\blue You dislodged the girder!"
+ new/obj/structure/girder/displaced( src.loc )
+ del(src)
+
+ else if(istype(W, /obj/item/stack/sheet))
+
+ var/obj/item/stack/sheet/S = W
+ switch(S.type)
+
+ if(/obj/item/stack/sheet/metal)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall (src.loc)
+ else
+ if(S.amount < 2) return ..()
+ user << "\blue Now adding plating..."
+ if (do_after(user,40))
+ if(!src || !S || S.amount < 2) return
+ S.use(2)
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithWall()
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+
+ if(/obj/item/stack/sheet/plasteel)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falserwall (src.loc)
+ else
+ if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code...
+ if(S.amount < 1) return ..()
+ user << "\blue Now finalising reinforced wall."
+ if(do_after(user, 50))
+ if(!src || !S || S.amount < 1) return
+ S.use(1)
+ user << "\blue Wall fully reinforced!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithRWall()
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/r_wall/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+ else
+ if(S.amount < 1) return ..()
+ user << "\blue Now reinforcing girders"
+ if (do_after(user,60))
+ if(!src || !S || S.amount < 1) return
+ S.use(1)
+ user << "\blue Girders reinforced!"
+ new/obj/structure/girder/reinforced( src.loc )
+ del(src)
+ return
+
+ if(/obj/item/stack/sheet/gold)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall/gold (src.loc)
+ else
+ if(S.amount < 2) return ..()
+ user << "\blue Now adding plating..."
+ if (do_after(user,40))
+ if(!src || !S || S.amount < 2) return
+ S.use(2)
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithMineralWall("gold")
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+
+ if(/obj/item/stack/sheet/silver)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall/silver (src.loc)
+ else
+ if(S.amount < 2) return ..()
+ user << "\blue Now adding plating..."
+ if (do_after(user,40))
+ if(!src || !S || S.amount < 2) return
+ S.use(2)
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithMineralWall("silver")
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+
+ if(/obj/item/stack/sheet/diamond)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall/diamond (src.loc)
+ else
+ if(S.amount < 2) return ..()
+ user << "\blue Now adding plating..."
+ if (do_after(user,40))
+ if(!src || !S || S.amount < 2) return
+ S.use(2)
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithMineralWall("diamond")
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+
+ if(/obj/item/stack/sheet/uranium)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall/uranium (src.loc)
+ else
+ if(S.amount < 2) return ..()
+ user << "\blue Now adding plating..."
+ if (do_after(user,40))
+ if(!src || !S || S.amount < 2) return
+ S.use(2)
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithMineralWall("uranium")
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+
+ if(/obj/item/stack/sheet/plasma)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall/plasma (src.loc)
+ else
+ if(S.amount < 2) return ..()
+ user << "\blue Now adding plating..."
+ if (do_after(user,40))
+ if(!src || !S || S.amount < 2) return
+ S.use(2)
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithMineralWall("plasma")
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+
+ if(/obj/item/stack/sheet/clown)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall/clown (src.loc)
+ else
+ if(S.amount < 2) return ..()
+ user << "\blue Now adding plating..."
+ if (do_after(user,40))
+ if(!src || !S || S.amount < 2) return
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithMineralWall("clown")
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+
+ if(/obj/item/stack/sheet/sandstone)
+ if(!anchored)
+ if(S.amount < 2) return
+ S.use(2)
+ user << "\blue You create a false wall! Push on it to open or close the passage."
+ new /obj/structure/falsewall/sandstone (src.loc)
+ else
+ if(S.amount < 2) return ..()
+ user << "\blue Now adding plating..."
+ if (do_after(user,40))
+ if(!src || !S || S.amount < 2) return
+ S.use(2)
+ user << "\blue You added the plating!"
+ var/turf/Tsrc = get_turf(src)
+ Tsrc.ReplaceWithMineralWall("sandstone")
+ for(var/obj/machinery/atmospherics/pipe/P in Tsrc)
+ P.layer = 1
+ for(var/turf/simulated/wall/mineral/X in Tsrc.loc)
+ if(X) X.add_hiddenprint(usr)
+ del(src)
+ return
+
+ add_hiddenprint(usr)
+ del(src)
+
+ else if(istype(W, /obj/item/pipe))
+ var/obj/item/pipe/P = W
+ if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
+ user.drop_item()
+ P.loc = src.loc
+ user << "\blue You fit the pipe into the [src]!"
+ else
+ ..()
+
+
+ blob_act()
+ if(prob(40))
+ del(src)
+
+
+ ex_act(severity)
+ switch(severity)
+ if(1.0)
+ del(src)
+ return
+ if(2.0)
+ if (prob(30))
+ var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
+ new remains(loc)
+ del(src)
+ return
+ if(3.0)
+ if (prob(5))
+ var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal)
+ new remains(loc)
+ del(src)
+ return
+ else
+ return
+
+/obj/structure/girder/displaced
+ icon_state = "displaced"
+ anchored = 0
+
+/obj/structure/girder/reinforced
+ icon_state = "reinforced"
+ state = 2
+
+/obj/structure/cultgirder
+ icon= 'icons/obj/cult.dmi'
+ icon_state= "cultgirder"
+ anchored = 1
+ density = 1
+ layer = 2
+
+ attackby(obj/item/W as obj, mob/user as mob)
+ if(istype(W, /obj/item/weapon/wrench))
+ playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
+ user << "\blue Now disassembling the girder"
+ if(do_after(user,40))
+ user << "\blue You dissasembled the girder!"
+ new /obj/effect/decal/remains/human(get_turf(src))
+ del(src)
+
+ else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter))
+ user << "\blue Now slicing apart the girder"
+ if(do_after(user,30))
+ user << "\blue You slice apart the girder!"
+ new /obj/effect/decal/remains/human(get_turf(src))
+ del(src)
+
+ else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill))
+ user << "\blue You drill through the girder!"
+ new /obj/effect/decal/remains/human(get_turf(src))
+ del(src)
+
+ blob_act()
+ if(prob(40))
+ del(src)
+
+
+ ex_act(severity)
+ switch(severity)
+ if(1.0)
+ del(src)
+ return
+ if(2.0)
+ if (prob(30))
+ new /obj/effect/decal/remains/human(loc)
+ del(src)
+ return
+ if(3.0)
+ if (prob(5))
+ new /obj/effect/decal/remains/human(loc)
+ del(src)
+ return
+ else
+ return
\ No newline at end of file
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
new file mode 100644
index 0000000000..56ce8cb1e4
--- /dev/null
+++ b/code/game/objects/structures/lattice.dm
@@ -0,0 +1,31 @@
+/obj/structure/lattice/blob_act()
+ del(src)
+ return
+
+/obj/structure/lattice/ex_act(severity)
+ switch(severity)
+ if(1.0)
+ del(src)
+ return
+ if(2.0)
+ del(src)
+ return
+ if(3.0)
+ return
+ else
+ return
+
+/obj/structure/lattice/attackby(obj/item/C as obj, mob/user as mob)
+
+ if (istype(C, /obj/item/stack/tile/plasteel))
+ var/turf/T = get_turf(src)
+ T.attackby(C, user) //BubbleWrap - hand this off to the underlying turf instead
+ return
+ if (istype(C, /obj/item/weapon/weldingtool))
+ var/obj/item/weapon/weldingtool/WT = C
+ if(WT.remove_fuel(0, user))
+ user << "\blue Slicing lattice joints ..."
+ new /obj/item/stack/rods(src.loc)
+ del(src)
+
+ return
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index e5f35a760b..497d00938a 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -6,6 +6,211 @@
// BEGIN_FILE_DIR
#define FILE_DIR .
+#define FILE_DIR "code"
+#define FILE_DIR "code/ATMOSPHERICS"
+#define FILE_DIR "code/ATMOSPHERICS/components"
+#define FILE_DIR "code/ATMOSPHERICS/components/binary_devices"
+#define FILE_DIR "code/ATMOSPHERICS/components/trinary_devices"
+#define FILE_DIR "code/ATMOSPHERICS/components/unary"
+#define FILE_DIR "code/controllers"
+#define FILE_DIR "code/datums"
+#define FILE_DIR "code/datums/diseases"
+#define FILE_DIR "code/datums/helper_datums"
+#define FILE_DIR "code/datums/spells"
+#define FILE_DIR "code/defines"
+#define FILE_DIR "code/defines/area"
+#define FILE_DIR "code/defines/obj"
+#define FILE_DIR "code/defines/procs"
+#define FILE_DIR "code/defines/tanning"
+#define FILE_DIR "code/FEA"
+#define FILE_DIR "code/game"
+#define FILE_DIR "code/game/area"
+#define FILE_DIR "code/game/asteroid"
+#define FILE_DIR "code/game/gamemodes"
+#define FILE_DIR "code/game/gamemodes/blob"
+#define FILE_DIR "code/game/gamemodes/blob/blobs"
+#define FILE_DIR "code/game/gamemodes/changeling"
+#define FILE_DIR "code/game/gamemodes/cult"
+#define FILE_DIR "code/game/gamemodes/events"
+#define FILE_DIR "code/game/gamemodes/events/holidays"
+#define FILE_DIR "code/game/gamemodes/extended"
+#define FILE_DIR "code/game/gamemodes/malfunction"
+#define FILE_DIR "code/game/gamemodes/meteor"
+#define FILE_DIR "code/game/gamemodes/nuclear"
+#define FILE_DIR "code/game/gamemodes/revolution"
+#define FILE_DIR "code/game/gamemodes/sandbox"
+#define FILE_DIR "code/game/gamemodes/traitor"
+#define FILE_DIR "code/game/gamemodes/wizard"
+#define FILE_DIR "code/game/jobs"
+#define FILE_DIR "code/game/jobs/job"
+#define FILE_DIR "code/game/machinery"
+#define FILE_DIR "code/game/machinery/atmoalter"
+#define FILE_DIR "code/game/machinery/bots"
+#define FILE_DIR "code/game/machinery/computer"
+#define FILE_DIR "code/game/machinery/doors"
+#define FILE_DIR "code/game/machinery/embedded_controller"
+#define FILE_DIR "code/game/machinery/kitchen"
+#define FILE_DIR "code/game/machinery/pipe"
+#define FILE_DIR "code/game/machinery/telecomms"
+#define FILE_DIR "code/game/mecha"
+#define FILE_DIR "code/game/mecha/combat"
+#define FILE_DIR "code/game/mecha/equipment"
+#define FILE_DIR "code/game/mecha/equipment/tools"
+#define FILE_DIR "code/game/mecha/equipment/weapons"
+#define FILE_DIR "code/game/mecha/medical"
+#define FILE_DIR "code/game/mecha/working"
+#define FILE_DIR "code/game/objects"
+#define FILE_DIR "code/game/objects/effects"
+#define FILE_DIR "code/game/objects/effects/decals"
+#define FILE_DIR "code/game/objects/effects/spawners"
+#define FILE_DIR "code/game/objects/items"
+#define FILE_DIR "code/game/objects/items/devices"
+#define FILE_DIR "code/game/objects/items/devices/PDA"
+#define FILE_DIR "code/game/objects/items/devices/radio"
+#define FILE_DIR "code/game/objects/items/stacks"
+#define FILE_DIR "code/game/objects/items/weapons"
+#define FILE_DIR "code/game/objects/items/weapons/grenades"
+#define FILE_DIR "code/game/objects/items/weapons/implants"
+#define FILE_DIR "code/game/objects/items/weapons/secstorage"
+#define FILE_DIR "code/game/objects/items/weapons/storage"
+#define FILE_DIR "code/game/objects/items/weapons/tanks"
+#define FILE_DIR "code/game/objects/structures"
+#define FILE_DIR "code/game/objects/structures/crates_lockers"
+#define FILE_DIR "code/game/objects/structures/crates_lockers/closets"
+#define FILE_DIR "code/game/objects/structures/crates_lockers/closets/secure"
+#define FILE_DIR "code/game/turfs"
+#define FILE_DIR "code/game/vehicles"
+#define FILE_DIR "code/game/vehicles/airtight"
+#define FILE_DIR "code/game/verbs"
+#define FILE_DIR "code/js"
+#define FILE_DIR "code/modules"
+#define FILE_DIR "code/modules/admin"
+#define FILE_DIR "code/modules/admin/DB ban"
+#define FILE_DIR "code/modules/admin/verbs"
+#define FILE_DIR "code/modules/assembly"
+#define FILE_DIR "code/modules/client"
+#define FILE_DIR "code/modules/clothing"
+#define FILE_DIR "code/modules/clothing/glasses"
+#define FILE_DIR "code/modules/clothing/gloves"
+#define FILE_DIR "code/modules/clothing/head"
+#define FILE_DIR "code/modules/clothing/masks"
+#define FILE_DIR "code/modules/clothing/shoes"
+#define FILE_DIR "code/modules/clothing/spacesuits"
+#define FILE_DIR "code/modules/clothing/suits"
+#define FILE_DIR "code/modules/clothing/under"
+#define FILE_DIR "code/modules/clothing/under/jobs"
+#define FILE_DIR "code/modules/critters"
+#define FILE_DIR "code/modules/critters/hivebots"
+#define FILE_DIR "code/modules/detectivework"
+#define FILE_DIR "code/modules/flufftext"
+#define FILE_DIR "code/modules/food"
+#define FILE_DIR "code/modules/library"
+#define FILE_DIR "code/modules/maps"
+#define FILE_DIR "code/modules/mining"
+#define FILE_DIR "code/modules/mob"
+#define FILE_DIR "code/modules/mob/dead"
+#define FILE_DIR "code/modules/mob/dead/observer"
+#define FILE_DIR "code/modules/mob/living"
+#define FILE_DIR "code/modules/mob/living/blob"
+#define FILE_DIR "code/modules/mob/living/carbon"
+#define FILE_DIR "code/modules/mob/living/carbon/alien"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/humanoid/caste"
+#define FILE_DIR "code/modules/mob/living/carbon/alien/larva"
+#define FILE_DIR "code/modules/mob/living/carbon/brain"
+#define FILE_DIR "code/modules/mob/living/carbon/human"
+#define FILE_DIR "code/modules/mob/living/carbon/metroid"
+#define FILE_DIR "code/modules/mob/living/carbon/monkey"
+#define FILE_DIR "code/modules/mob/living/silicon"
+#define FILE_DIR "code/modules/mob/living/silicon/ai"
+#define FILE_DIR "code/modules/mob/living/silicon/ai/freelook"
+#define FILE_DIR "code/modules/mob/living/silicon/decoy"
+#define FILE_DIR "code/modules/mob/living/silicon/pai"
+#define FILE_DIR "code/modules/mob/living/silicon/robot"
+#define FILE_DIR "code/modules/mob/living/simple_animal"
+#define FILE_DIR "code/modules/mob/new_player"
+#define FILE_DIR "code/modules/mob/organ"
+#define FILE_DIR "code/modules/paperwork"
+#define FILE_DIR "code/modules/power"
+#define FILE_DIR "code/modules/power/antimatter"
+#define FILE_DIR "code/modules/power/singularity"
+#define FILE_DIR "code/modules/power/singularity/particle_accelerator"
+#define FILE_DIR "code/modules/projectiles"
+#define FILE_DIR "code/modules/projectiles/ammunition"
+#define FILE_DIR "code/modules/projectiles/guns"
+#define FILE_DIR "code/modules/projectiles/guns/energy"
+#define FILE_DIR "code/modules/projectiles/guns/projectile"
+#define FILE_DIR "code/modules/projectiles/projectile"
+#define FILE_DIR "code/modules/reagents"
+#define FILE_DIR "code/modules/reagents/reagent_containers"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/drinks/bottle"
+#define FILE_DIR "code/modules/reagents/reagent_containers/food/snacks"
+#define FILE_DIR "code/modules/reagents/reagent_containers/glass"
+#define FILE_DIR "code/modules/reagents/reagent_containers/glass/bottle"
+#define FILE_DIR "code/modules/recycling"
+#define FILE_DIR "code/modules/research"
+#define FILE_DIR "code/modules/scripting"
+#define FILE_DIR "code/modules/scripting/AST"
+#define FILE_DIR "code/modules/scripting/AST/Operators"
+#define FILE_DIR "code/modules/scripting/Implementations"
+#define FILE_DIR "code/modules/scripting/Interpreter"
+#define FILE_DIR "code/modules/scripting/Parser"
+#define FILE_DIR "code/modules/scripting/Scanner"
+#define FILE_DIR "code/modules/security levels"
+#define FILE_DIR "code/unused"
+#define FILE_DIR "code/unused/beast"
+#define FILE_DIR "code/unused/computer2"
+#define FILE_DIR "code/unused/disease2"
+#define FILE_DIR "code/unused/gamemodes"
+#define FILE_DIR "code/unused/hivebot"
+#define FILE_DIR "code/unused/mining"
+#define FILE_DIR "code/unused/optics"
+#define FILE_DIR "code/unused/pda2"
+#define FILE_DIR "code/unused/powerarmor"
+#define FILE_DIR "code/unused/spacecraft"
+#define FILE_DIR "code/WorkInProgress"
+#define FILE_DIR "code/WorkInProgress/carn"
+#define FILE_DIR "code/WorkInProgress/mapload"
+#define FILE_DIR "code/WorkInProgress/organs"
+#define FILE_DIR "code/WorkInProgress/virus2"
+#define FILE_DIR "html"
+#define FILE_DIR "icons"
+#define FILE_DIR "icons/effects"
+#define FILE_DIR "icons/mecha"
+#define FILE_DIR "icons/misc"
+#define FILE_DIR "icons/mob"
+#define FILE_DIR "icons/obj"
+#define FILE_DIR "icons/obj/assemblies"
+#define FILE_DIR "icons/obj/atmospherics"
+#define FILE_DIR "icons/obj/clothing"
+#define FILE_DIR "icons/obj/doors"
+#define FILE_DIR "icons/obj/machines"
+#define FILE_DIR "icons/obj/pipes"
+#define FILE_DIR "icons/pda_icons"
+#define FILE_DIR "icons/spideros_icons"
+#define FILE_DIR "icons/Testing"
+#define FILE_DIR "icons/turf"
+#define FILE_DIR "icons/vehicles"
+#define FILE_DIR "icons/vending_icons"
+#define FILE_DIR "interface"
+#define FILE_DIR "maps"
+#define FILE_DIR "maps/RandomZLevels"
+#define FILE_DIR "sound"
+#define FILE_DIR "sound/AI"
+#define FILE_DIR "sound/ambience"
+#define FILE_DIR "sound/effects"
+#define FILE_DIR "sound/hallucinations"
+#define FILE_DIR "sound/items"
+#define FILE_DIR "sound/machines"
+#define FILE_DIR "sound/mecha"
+#define FILE_DIR "sound/misc"
+#define FILE_DIR "sound/piano"
+#define FILE_DIR "sound/voice"
+#define FILE_DIR "sound/weapons"
+#define FILE_DIR "tools"
+#define FILE_DIR "tools/Redirector"
// END_FILE_DIR
// BEGIN_PREFERENCES
@@ -371,36 +576,13 @@
#include "code\game\mecha\working\firefighter.dm"
#include "code\game\mecha\working\ripley.dm"
#include "code\game\mecha\working\working.dm"
-#include "code\game\objects\bodybag.dm"
#include "code\game\objects\empulse.dm"
#include "code\game\objects\explosion.dm"
#include "code\game\objects\explosion_recursive.dm"
#include "code\game\objects\facehugger.dm"
#include "code\game\objects\items.dm"
-#include "code\game\objects\object_procs.dm"
-#include "code\game\objects\shooting_range.dm"
#include "code\game\objects\structures.dm"
-#include "code\game\objects\toys.dm"
#include "code\game\objects\weapons.dm"
-#include "code\game\objects\devices\aicard.dm"
-#include "code\game\objects\devices\chameleonproj.dm"
-#include "code\game\objects\devices\flash.dm"
-#include "code\game\objects\devices\flashlight.dm"
-#include "code\game\objects\devices\infra_sensor.dm"
-#include "code\game\objects\devices\lightreplacer.dm"
-#include "code\game\objects\devices\multitool.dm"
-#include "code\game\objects\devices\paicard.dm"
-#include "code\game\objects\devices\powersink.dm"
-#include "code\game\objects\devices\scanners.dm"
-#include "code\game\objects\devices\shields.dm"
-#include "code\game\objects\devices\taperecorder.dm"
-#include "code\game\objects\devices\traitordevices.dm"
-#include "code\game\objects\devices\transfer_valve.dm"
-#include "code\game\objects\devices\uplinks.dm"
-#include "code\game\objects\devices\PDA\cart.dm"
-#include "code\game\objects\devices\PDA\chatroom.dm"
-#include "code\game\objects\devices\PDA\PDA.dm"
-#include "code\game\objects\devices\PDA\radio.dm"
#include "code\game\objects\effects\aliens.dm"
#include "code\game\objects\effects\biomass.dm"
#include "code\game\objects\effects\effect_system.dm"
@@ -411,24 +593,52 @@
#include "code\game\objects\effects\signs.dm"
#include "code\game\objects\effects\decals\blood.dm"
#include "code\game\objects\effects\decals\contraband.dm"
+#include "code\game\objects\effects\decals\crayon.dm"
#include "code\game\objects\effects\spawners\bombspawner.dm"
-#include "code\game\objects\grenades\chem_grenade.dm"
-#include "code\game\objects\grenades\emgrenade.dm"
-#include "code\game\objects\grenades\flashbang.dm"
-#include "code\game\objects\grenades\grenade.dm"
-#include "code\game\objects\grenades\smokebomb.dm"
-#include "code\game\objects\grenades\spawnergrenade.dm"
#include "code\game\objects\items\apc_frame.dm"
#include "code\game\objects\items\blueprints.dm"
+#include "code\game\objects\items\bodybag.dm"
#include "code\game\objects\items\candle.dm"
+#include "code\game\objects\items\crayons.dm"
#include "code\game\objects\items\helper_procs.dm"
#include "code\game\objects\items\item.dm"
#include "code\game\objects\items\robot_items.dm"
#include "code\game\objects\items\robot_parts.dm"
#include "code\game\objects\items\robot_upgrades.dm"
#include "code\game\objects\items\shock_kit.dm"
+#include "code\game\objects\items\shooting_range.dm"
#include "code\game\objects\items\tk_grab.dm"
#include "code\game\objects\items\trash.dm"
+#include "code\game\objects\items\devices\aicard.dm"
+#include "code\game\objects\items\devices\chameleonproj.dm"
+#include "code\game\objects\items\devices\flash.dm"
+#include "code\game\objects\items\devices\flashlight.dm"
+#include "code\game\objects\items\devices\infra_sensor.dm"
+#include "code\game\objects\items\devices\lightreplacer.dm"
+#include "code\game\objects\items\devices\multitool.dm"
+#include "code\game\objects\items\devices\paicard.dm"
+#include "code\game\objects\items\devices\powersink.dm"
+#include "code\game\objects\items\devices\scanners.dm"
+#include "code\game\objects\items\devices\shields.dm"
+#include "code\game\objects\items\devices\taperecorder.dm"
+#include "code\game\objects\items\devices\traitordevices.dm"
+#include "code\game\objects\items\devices\transfer_valve.dm"
+#include "code\game\objects\items\devices\uplinks.dm"
+#include "code\game\objects\items\devices\PDA\cart.dm"
+#include "code\game\objects\items\devices\PDA\chatroom.dm"
+#include "code\game\objects\items\devices\PDA\PDA.dm"
+#include "code\game\objects\items\devices\PDA\radio.dm"
+#include "code\game\objects\items\devices\radio\beacon.dm"
+#include "code\game\objects\items\devices\radio\electropack.dm"
+#include "code\game\objects\items\devices\radio\encryptionkey.dm"
+#include "code\game\objects\items\devices\radio\headset.dm"
+#include "code\game\objects\items\devices\radio\intercom.dm"
+#include "code\game\objects\items\devices\radio\radio.dm"
+#include "code\game\objects\items\stacks\glass.dm"
+#include "code\game\objects\items\stacks\metal.dm"
+#include "code\game\objects\items\stacks\minerals.dm"
+#include "code\game\objects\items\stacks\stack.dm"
+#include "code\game\objects\items\stacks\wood.dm"
#include "code\game\objects\items\weapons\AI_modules.dm"
#include "code\game\objects\items\weapons\cameras.dm"
#include "code\game\objects\items\weapons\cards_ids.dm"
@@ -459,6 +669,12 @@
#include "code\game\objects\items\weapons\tools.dm"
#include "code\game\objects\items\weapons\twohanded.dm"
#include "code\game\objects\items\weapons\wrappingpaper.dm"
+#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
+#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
+#include "code\game\objects\items\weapons\grenades\flashbang.dm"
+#include "code\game\objects\items\weapons\grenades\grenade.dm"
+#include "code\game\objects\items\weapons\grenades\smokebomb.dm"
+#include "code\game\objects\items\weapons\grenades\spawnergrenade.dm"
#include "code\game\objects\items\weapons\implants\implant.dm"
#include "code\game\objects\items\weapons\implants\implantcase.dm"
#include "code\game\objects\items\weapons\implants\implantchair.dm"
@@ -467,40 +683,36 @@
#include "code\game\objects\items\weapons\implants\implantnanoaug.dm"
#include "code\game\objects\items\weapons\implants\implantpad.dm"
#include "code\game\objects\items\weapons\implants\implantuplink.dm"
-#include "code\game\objects\radio\beacon.dm"
-#include "code\game\objects\radio\electropack.dm"
-#include "code\game\objects\radio\encryptionkey.dm"
-#include "code\game\objects\radio\headset.dm"
-#include "code\game\objects\radio\intercom.dm"
-#include "code\game\objects\radio\radio.dm"
-#include "code\game\objects\secstorage\sbriefcase.dm"
-#include "code\game\objects\secstorage\secstorage.dm"
-#include "code\game\objects\secstorage\ssafe.dm"
-#include "code\game\objects\stacks\glass.dm"
-#include "code\game\objects\stacks\metal.dm"
-#include "code\game\objects\stacks\minerals.dm"
-#include "code\game\objects\stacks\stack.dm"
-#include "code\game\objects\stacks\wood.dm"
-#include "code\game\objects\storage\backpack.dm"
-#include "code\game\objects\storage\belt.dm"
-#include "code\game\objects\storage\bible.dm"
-#include "code\game\objects\storage\briefcase.dm"
-#include "code\game\objects\storage\fancy.dm"
-#include "code\game\objects\storage\firstaid.dm"
-#include "code\game\objects\storage\kit.dm"
-#include "code\game\objects\storage\lockbox.dm"
-#include "code\game\objects\storage\misc.dm"
-#include "code\game\objects\storage\storage.dm"
-#include "code\game\objects\storage\toolbox.dm"
-#include "code\game\objects\storage\uplink_kits.dm"
+#include "code\game\objects\items\weapons\secstorage\sbriefcase.dm"
+#include "code\game\objects\items\weapons\secstorage\secstorage.dm"
+#include "code\game\objects\items\weapons\secstorage\ssafe.dm"
+#include "code\game\objects\items\weapons\storage\backpack.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\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\kit.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\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\tanks\emergency.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\structures\aliennests.dm"
#include "code\game\objects\structures\displaycase.dm"
#include "code\game\objects\structures\door_assembly.dm"
#include "code\game\objects\structures\electricchair.dm"
+#include "code\game\objects\structures\false_walls.dm"
+#include "code\game\objects\structures\girders.dm"
#include "code\game\objects\structures\grille.dm"
#include "code\game\objects\structures\kitchen_spike.dm"
#include "code\game\objects\structures\ladders.dm"
#include "code\game\objects\structures\lamarr_cage.dm"
+#include "code\game\objects\structures\lattice.dm"
#include "code\game\objects\structures\mineral_doors.dm"
#include "code\game\objects\structures\mirror.dm"
#include "code\game\objects\structures\mop_bucket.dm"
@@ -540,10 +752,6 @@
#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\tanks\emergency.dm"
-#include "code\game\objects\tanks\jetpack.dm"
-#include "code\game\objects\tanks\tank_types.dm"
-#include "code\game\objects\tanks\tanks.dm"
#include "code\game\turfs\turf.dm"
#include "code\game\vehicles\vehicle.dm"
#include "code\game\vehicles\airtight\airtight.dm"