diff --git a/baystation12.dme b/baystation12.dme
index ca75948dfff..6bf05b97b90 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -759,6 +759,7 @@
#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\fireaxe_cabinet.dm"
#include "code\game\objects\structures\flora.dm"
#include "code\game\objects\structures\girders.dm"
#include "code\game\objects\structures\grille.dm"
@@ -791,7 +792,6 @@
#include "code\game\objects\structures\crates_lockers\largecrate.dm"
#include "code\game\objects\structures\crates_lockers\closets\coffin.dm"
#include "code\game\objects\structures\crates_lockers\closets\crittercrate.dm"
-#include "code\game\objects\structures\crates_lockers\closets\fireaxe.dm"
#include "code\game\objects\structures\crates_lockers\closets\fitness.dm"
#include "code\game\objects\structures\crates_lockers\closets\gimmick.dm"
#include "code\game\objects\structures\crates_lockers\closets\job_closets.dm"
diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
deleted file mode 100644
index 13a567ca758..00000000000
--- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
+++ /dev/null
@@ -1,215 +0,0 @@
-//I still dont think this should be a closet but whatever
-/obj/structure/closet/fireaxecabinet
- name = "fire axe cabinet"
- desc = "There is small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if."
- var/obj/item/weapon/material/twohanded/fireaxe/fireaxe
- icon_state = "fireaxe1000"
- icon_closed = "fireaxe1000"
- icon_opened = "fireaxe1100"
- anchored = 1
- density = 0
- var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri
- opened = 1
- var/hitstaken = 0
- var/locked = 1
- var/smashed = 0
-
- New()
- ..()
- fireaxe = new /obj/item/weapon/material/twohanded/fireaxe(src)
-
- attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri
- //..() //That's very useful, Erro
-
- // This could stand to be put further in, made better, etc. but fuck you. Fuck whoever
- // wrote this code. Fuck everything about this object. I hope you step on a Lego.
- user.setClickCooldown(10)
- // Seriously why the fuck is this even a closet aghasjdhasd I hate you
-
- var/hasaxe = 0 //gonna come in handy later~ // FUCK YOUR TILDES.
- if(fireaxe)
- hasaxe = 1
-
- if (isrobot(usr) || src.locked)
- if(istype(O, /obj/item/device/multitool))
- user << "Resetting circuitry..."
- playsound(user, 'sound/machines/lockreset.ogg', 50, 1)
- if(do_after(user, 20))
- src.locked = 0
- user << " You disable the locking modules."
- update_icon()
- return
- else if(istype(O, /obj/item/weapon))
- var/obj/item/weapon/W = O
- if(src.smashed || src.localopened)
- if(localopened)
- localopened = 0
- icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
- return
- else
- playsound(user, 'sound/effects/Glasshit.ogg', 100, 1) //We don't want this playing every time
- if(W.force < 15)
- user << "The cabinet's protective glass glances off the hit."
- else
- src.hitstaken++
- if(src.hitstaken == 4)
- playsound(user, 'sound/effects/Glassbr3.ogg', 100, 1) //Break cabinet, receive goodies. Cabinet's fucked for life after that.
- src.smashed = 1
- src.locked = 0
- src.localopened = 1
- update_icon()
- return
- if (istype(O, /obj/item/weapon/material/twohanded/fireaxe) && src.localopened)
- if(!fireaxe)
- if(O:wielded)
- user << "Unwield the axe first."
- return
- fireaxe = O
- user.remove_from_mob(O)
- src.contents += O
- user << "You place the fire axe back in the [src.name]."
- update_icon()
- else
- if(src.smashed)
- return
- else
- localopened = !localopened
- if(localopened)
- icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
- else
- icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
- else
- if(src.smashed)
- return
- if(istype(O, /obj/item/device/multitool))
- if(localopened)
- localopened = 0
- icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
- return
- else
- user << "Resetting circuitry..."
- sleep(50)
- src.locked = 1
- user << "You re-enable the locking modules."
- playsound(user, 'sound/machines/lockenable.ogg', 50, 1)
- if(do_after(user,20))
- src.locked = 1
- user << " You re-enable the locking modules."
- return
- else
- localopened = !localopened
- if(localopened)
- icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
- else
- icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
-
-
-
-
- attack_hand(mob/user as mob)
-
- var/hasaxe = 0
- if(fireaxe)
- hasaxe = 1
-
- if(src.locked)
- user <<"The cabinet won't budge!"
- return
- if(localopened)
- if(fireaxe)
- user.put_in_hands(fireaxe)
- fireaxe = null
- user << "You take the fire axe from the [name]."
- src.add_fingerprint(user)
- update_icon()
- else
- if(src.smashed)
- return
- else
- localopened = !localopened
- if(localopened)
- src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
- else
- src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
-
- else
- localopened = !localopened //I'm pretty sure we don't need an if(src.smashed) in here. In case I'm wrong and it fucks up teh cabinet, **MARKER**. -Agouri
- if(localopened)
- src.icon_state = text("fireaxe[][][][]opening",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
- else
- src.icon_state = text("fireaxe[][][][]closing",hasaxe,src.localopened,src.hitstaken,src.smashed)
- spawn(10) update_icon()
-
- attack_tk(mob/user as mob)
- if(localopened && fireaxe)
- fireaxe.forceMove(loc)
- user << "You telekinetically remove the fire axe."
- fireaxe = null
- update_icon()
- return
- attack_hand(user)
-
- verb/toggle_openness() //nice name, huh? HUH?! -Erro //YEAH -Agouri
- set name = "Open/Close"
- set category = "Object"
-
- if (isrobot(usr) || src.locked || src.smashed)
- if(src.locked)
- usr << "The cabinet won't budge!"
- else if(src.smashed)
- usr << "The protective glass is broken!"
- return
-
- localopened = !localopened
- update_icon()
-
- verb/remove_fire_axe()
- set name = "Remove Fire Axe"
- set category = "Object"
-
- if (isrobot(usr))
- return
-
- if (localopened)
- if(fireaxe)
- usr.put_in_hands(fireaxe)
- fireaxe = null
- usr << "You take the Fire axe from the [name]."
- else
- usr << "The [src.name] is empty."
- else
- usr << "The [src.name] is closed."
- update_icon()
-
- attack_ai(mob/user as mob)
- if(src.smashed)
- user << "The security of the cabinet is compromised."
- return
- else
- locked = !locked
- if(locked)
- user << "Cabinet locked."
- else
- user << "Cabinet unlocked."
- return
-
- update_icon() //Template: fireaxe[has fireaxe][is opened][hits taken][is smashed]. If you want the opening or closing animations, add "opening" or "closing" right after the numbers
- var/hasaxe = 0
- if(fireaxe)
- hasaxe = 1
- icon_state = text("fireaxe[][][][]",hasaxe,src.localopened,src.hitstaken,src.smashed)
-
- open()
- return
-
- close()
- return
diff --git a/code/game/objects/structures/fireaxe_cabinet.dm b/code/game/objects/structures/fireaxe_cabinet.dm
new file mode 100644
index 00000000000..a19693f5ab9
--- /dev/null
+++ b/code/game/objects/structures/fireaxe_cabinet.dm
@@ -0,0 +1,135 @@
+/obj/structure/fireaxecabinet
+ name = "fire axe cabinet"
+ desc = "There is small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if."
+ icon_state = "fireaxe"
+ anchored = 1
+ density = 0
+
+ var/damage_threshold = 15
+ var/open
+ var/unlocked
+ var/shattered
+ var/obj/item/weapon/material/twohanded/fireaxe/fireaxe
+
+/obj/structure/fireaxecabinet/attack_generic(var/mob/user, var/damage, var/attack_verb, var/wallbreaker)
+ user.do_attack_animation(src)
+ playsound(user, 'sound/effects/Glasshit.ogg', 50, 1)
+ visible_message("[user] [attack_verb] \the [src]!")
+ if(damage_threshold > damage)
+ user << "Your strike is deflected by the reinforced glass!"
+ return
+ if(shattered)
+ return
+ shattered = 1
+ unlocked = 1
+ open = 1
+ playsound(user, 'sound/effects/Glassbr3.ogg', 100, 1)
+ update_icon()
+
+/obj/structure/fireaxecabinet/update_icon()
+ overlays.Cut()
+ if(fireaxe)
+ overlays += image(icon, "fireaxe_item")
+ if(shattered)
+ overlays += image(icon, "fireaxe_window_broken")
+ else if(!open)
+ overlays += image(icon, "fireaxe_window")
+
+/obj/structure/fireaxecabinet/New()
+ ..()
+ fireaxe = new(src)
+ update_icon()
+
+/obj/structure/fireaxecabinet/attack_ai(var/mob/user)
+ toggle_lock(user)
+
+/obj/structure/fireaxecabinet/attack_hand(var/mob/user)
+ if(!unlocked)
+ user << "\The [src] is locked."
+ return
+ toggle_open(user)
+
+/obj/structure/fireaxecabinet/MouseDrop(over_object, src_location, over_location)
+ if(over_object == usr)
+ var/mob/user = over_object
+ if(!istype(user))
+ return
+
+ if(!open)
+ user << "\The [src] is closed."
+ return
+
+ if(!fireaxe)
+ user << "\The [src] is empty."
+ return
+
+ fireaxe.forceMove(get_turf(user))
+ user.put_in_hands(fireaxe)
+ fireaxe = null
+ update_icon()
+
+ return
+
+/obj/structure/fireaxecabinet/Destroy()
+ if(fireaxe)
+ fireaxe.forceMove(get_turf(src))
+ fireaxe = null
+ return ..()
+
+/obj/structure/fireaxecabinet/attackby(var/obj/item/O, var/mob/user)
+
+ if(istype(O, /obj/item/device/multitool))
+ toggle_lock(user)
+ return
+
+ if(istype(O, /obj/item/weapon/material/twohanded/fireaxe))
+ if(open)
+ if(fireaxe)
+ user << "There is already \a [fireaxe] inside \the [src]."
+ else if(user.unEquip(O))
+ O.forceMove(src)
+ fireaxe = O
+ user << "You place \the [fireaxe] into \the [src]."
+ update_icon()
+ return
+
+ if(O.force)
+ user.setClickCooldown(10)
+ attack_generic(user, O.force, "bashes")
+ return
+
+ return ..()
+
+/obj/structure/fireaxecabinet/proc/toggle_open(var/mob/user)
+ if(shattered)
+ open = 1
+ unlocked = 1
+ else
+ user.setClickCooldown(10)
+ open = !open
+ user << "You [open ? "open" : "close"] \the [src]."
+ update_icon()
+
+/obj/structure/fireaxecabinet/proc/toggle_lock(var/mob/user)
+
+
+ if(open)
+ return
+
+ if(shattered)
+ open = 1
+ unlocked = 1
+ else
+ user.setClickCooldown(10)
+ user << "You begin [unlocked ? "enabling" : "disabling"] \the [src]'s maglock."
+
+ if(!do_after(user, 20))
+ return
+
+ if(shattered) return
+
+ unlocked = !unlocked
+ playsound(user, 'sound/machines/lockreset.ogg', 50, 1)
+ user << "You [unlocked ? "disable" : "enable"] the maglock."
+
+ update_icon()
diff --git a/html/changelogs/Zuhayr-fireaxes.yml b/html/changelogs/Zuhayr-fireaxes.yml
new file mode 100644
index 00000000000..3bb84e570e0
--- /dev/null
+++ b/html/changelogs/Zuhayr-fireaxes.yml
@@ -0,0 +1,4 @@
+author: Zuhayr
+delete-after: True
+changes:
+ - tweak: "Rewrote fireaxe cabinets. Click with a multitool to unlock or loc, click with a hand to open or close, smash with anything that does damage, and drag onto your icon to remove the fireaxe."
diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi
index e42f9d97ab9..68fc22f81d1 100644
Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ
diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi
index 214428603e3..3f4d1406dac 100644
Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ
diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm
index ff8893e80bd..11a5b7102e2 100644
--- a/maps/exodus-1.dmm
+++ b/maps/exodus-1.dmm
@@ -2647,7 +2647,7 @@
"aYU" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/corner/blue,/turf/simulated/floor/tiled,/area/bridge)
"aYV" = (/obj/machinery/light,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/newscaster{pixel_y = -28},/obj/effect/floor_decal/corner/blue{dir = 10},/turf/simulated/floor/tiled,/area/bridge)
"aYW" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 10},/turf/simulated/floor/tiled,/area/bridge)
-"aYX" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/command{c_tag = "Bridge Center"; dir = 1},/obj/effect/floor_decal/corner/blue{dir = 10},/turf/simulated/floor/tiled,/area/bridge)
+"aYX" = (/obj/structure/fireaxecabinet{pixel_y = -32},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/camera/network/command{c_tag = "Bridge Center"; dir = 1},/obj/effect/floor_decal/corner/blue{dir = 10},/turf/simulated/floor/tiled,/area/bridge)
"aYY" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/corner/blue{dir = 10},/turf/simulated/floor/tiled,/area/bridge)
"aYZ" = (/obj/machinery/light,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/effect/floor_decal/corner/blue{dir = 10},/turf/simulated/floor/tiled,/area/bridge)
"aZa" = (/obj/machinery/button/remote/blast_door{id = "bridge blast"; name = "Bridge Blast Door Control"; pixel_x = 6; pixel_y = -24; req_access = list(19)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light_switch{pixel_x = -5; pixel_y = -23},/obj/effect/floor_decal/corner/blue{dir = 10},/turf/simulated/floor/tiled,/area/bridge)
@@ -4704,7 +4704,7 @@
"bMx" = (/obj/effect/landmark/start{name = "Paramedic"},/obj/item/weapon/stool/padded,/obj/item/device/radio/intercom{dir = 2; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bMy" = (/obj/structure/closet/secure_closet/medical1,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/random/medical,/obj/item/device/radio/intercom/department/medbay{pixel_y = -22},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bMz" = (/obj/machinery/button/remote/blast_door{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access = list(5)},/obj/effect/landmark/start{name = "Paramedic"},/obj/machinery/camera/network/medbay{c_tag = "Medbay EMT Storage"; dir = 1},/obj/item/weapon/stool/padded,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
-"bMA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/fireaxecabinet{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
+"bMA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/fireaxecabinet{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bMB" = (/obj/item/device/radio/intercom{dir = 4; pixel_x = 22},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/corner/paleblue{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/medbay)
"bMC" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/photocopier/faxmachine{department = "CMO's Office"},/obj/structure/table/glass,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bMD" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
@@ -5696,6 +5696,7 @@
"cfB" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/engineering/engine_room)
"cfC" = (/obj/machinery/airlock_sensor/airlock_interior{id_tag = "eng_al_int_snsr"; master_tag = "engine_room_airlock"; pixel_y = 22; req_access = list(10)},/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room)
"cfD" = (/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/construction)
+"cfE" = (/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/clothing/glasses/welding,/obj/structure/fireaxecabinet{pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cfF" = (/obj/structure/sign/pods,/turf/simulated/wall/r_wall,/area/engineering/engine_eva)
"cfG" = (/obj/random/tech_supply,/obj/random/tech_supply,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/construction)
"cfH" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/atmos_control)
@@ -6201,7 +6202,6 @@
"cpK" = (/obj/structure/table/standard,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/item/device/pipe_painter,/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmos RC"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cpL" = (/obj/structure/dispenser,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cpM" = (/obj/item/weapon/wrench,/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = 32},/obj/machinery/cell_charger,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Northeast"},/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cpN" = (/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/obj/item/clothing/glasses/welding,/obj/structure/closet/fireaxecabinet{pixel_y = 32},/obj/machinery/light{dir = 1},/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cpO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cpP" = (/obj/machinery/newscaster{pixel_y = 30},/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/belt/utility/atmostech,/obj/item/weapon/storage/belt/utility/atmostech,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cpQ" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Atmospherics"; name = "Atmospherics"},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -7484,7 +7484,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgEclXcmDcmjcgEcmtcmDcEgcgEcmtcmDcEgcgEaaaaafcmQcgUcgUchfchfcmscejcmvcmucmxbRqcmAcmycmBcmBcmEcmCcmBcmFcIycbFcmIcmHcmKcmJcjrcmLcmLcmMclrcmNcmPcmOcmOciAcibcmScoybRRciGcmUciScmVcmXcmWciGcmYcnacmZciUcnbcndcnccjccneciUclLclMclNcnlcnfcnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnhcnjcnicdScdScnHcntcnNcdScdScdScdScoucntcnNcdScdScnvcnocnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbOaafaafaafaaaaafcnxaafcnxaafcKAaafcpfaafcKAaafcpfaafaafaaacejcnqcnpchfchfcnrcnDcowcovcnycnmcnscnzcnzcnAcnzcnGcnBcoxcnGcnJcnFcnCcnIcnMcnOcnOcnOcnOcnLcnKcnRcnRcnRcgscgscgscgsbSgciGcnQcnScmVcnUcnTciGcmYcnacnWciUcnYcnZcnccoccoaciUclLclMclNcoecodcofclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcogcojcohcwlcokconcolcomcoocoqcopcdOaapaafaafaafaafaaaaaaaaabSYaaaaaaaaaaafcoscqscosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcptcpBcpAcpGcpCcpIcpHcpGcpScpZcpHcqtcqdcqxcqwcnycnycnycnycnycnycnycnycozcotcoBcoAcoCcqycoEcoDcJkcnGcoHcoGcoIcnGcoKcoJcoLcnOcoNcoMcoPcoOcoRcoQcpjcpbcpbcpkcpncpncpjcrvciGciGcpccoSciGciGciGcoTcnacoUciUciUciUcoVcphciUciUclLcpiclNcoXcoWcoXclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcoYcoZcoYcpdcpacpgcpecomcomcplcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaacpmaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcqDcppcpocprcpqcpucpscpwcpvcpycpxcpDcpzcpEcpucpJcpFcpLcpKcpNcpMcpPcpOcpRcpQcpUcpTcpVcqLcpXcpWcpYcqNcqbcqacqccqOcoKcqecqfcnOcoRcoRcoRcoRcoRcqgcpjcqPcqPcqPcpncpncpjbTFbPxciGcqicqhcqkcqjciGcqlcnacqmciUcqncqpcqocqqciUclMclLcpiclNcqucqrcqzclNaaaaaaaaaaaaaaaaaacqvcqRcrkcrgcqvaafaaaaaaaaaaaacdOcoYcoYcoYcoicqAcqCcqBcqFcqEcqHcqGcqIcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacqJaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcqDcppcpocprcpqcpucpscpwcpvcpycpxcpDcpzcpEcpucpJcpFcpLcpKcfEcpMcpPcpOcpRcpQcpUcpTcpVcqLcpXcpWcpYcqNcqbcqacqccqOcoKcqecqfcnOcoRcoRcoRcoRcoRcqgcpjcqPcqPcqPcpncpncpjbTFbPxciGcqicqhcqkcqjciGcqlcnacqmciUcqncqpcqocqqciUclMclLcpiclNcqucqrcqzclNaaaaaaaaaaaaaaaaaacqvcqRcrkcrgcqvaafaaaaaaaaaaaacdOcoYcoYcoYcoicqAcqCcqBcqFcqEcqHcqGcqIcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacqJaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcrUcqMcqKcqScqQcpucqTcpucqUcqMcqTcpucqUcqMcpucpucpucpucpucqVcpucpucpucqXcqWcqZcqYcracqLcrccrbcrdcrVcrfcrecrhcsgcoKcqecricnOcrjcoRcoRcrlcoRcrmcpjcrIcrKcrJcrKcrLcpjbTFcrqciGcrocrncrrcrpcrtcrscrwcrucrycrxcrAcrzcrBciUcrEcrFcrGcrHcqvcrCcqvcrHaaaaaaaafaaaaaaaaacqvcrDcrNcrMcqvaafaafaaaaaaaaacdOcomcomcomcomcrOcpgcrQcrQcrQcnjcrQcrRcdOaaaaaaaaaaaaaaacrPcrPcrPcbOaafaafaafaafcrSaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcqDcpucqYcpucqYcpucqTcpucrTcrXcrWcrXcrZcrXcrXcsbcsacpucpucsdcsccsccsccsfcsecshcshcsicqLcskcsjcsmcnGcsocsncspcnGcsscsrcstcsqcsvcsucszcswcoRcsAcpjcsxcrKcsycrKcsBcpjbTFcfxciGcsDcsCcsFcsEciGcfYcufcfYciUcsGcsJcsHcsKbTkcsIcrGcrGcqvcsMcsLcsNcqvcqvcqvcqvcqvcqvcqvcqvcsOcsQcsPcqvcqvcqvcrHaaaaaacdOcogcojcohcslcsRcqCcrQcrQcrQcnjcrQcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaacsTaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacqDcpucqYcpucsUcsWcsVcsZcsYctacrWcrXctbcrXcrXctdctcctfctecticthctkctjctjctlcqYcqYctmctgctnctocnzcnGctscnGcnGcnGctucttcstcvnctxcvtctBctycoRctCcpjcvOcrKcsycrKcvRcpjctvctwciGciGctDciGciGciGciBclMbTlciUciUciUctEciUciUcsIcrGaaacqvctHctGctIctFctKctJctMctLctOctNcqvcuVctPcuVcqvctQctRcqvaafaafcdOcoYcoYcoYctScpactUctTctWctVctXcrQctZcdOcdOcdOcdOaaaaaacrPaaacuacuacuacuacuaaafcsTaafcuacuacuacuacuaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa