diff --git a/baystation12.dme b/baystation12.dme
index 2d730c95aad..aac4de0a14f 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -1118,6 +1118,7 @@
#include "code\modules\mob\living\carbon\carbon_defines.dm"
#include "code\modules\mob\living\carbon\carbon_powers.dm"
#include "code\modules\mob\living\carbon\give.dm"
+#include "code\modules\mob\living\carbon\resist.dm"
#include "code\modules\mob\living\carbon\shock.dm"
#include "code\modules\mob\living\carbon\viruses.dm"
#include "code\modules\mob\living\carbon\alien\alien.dm"
diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm
index 2bd2d0de3ca..0921d1d0aa5 100755
--- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm
@@ -54,9 +54,6 @@
air2.volume = ATMOS_DEFAULT_VOLUME_FILTER
air3.volume = ATMOS_DEFAULT_VOLUME_FILTER
- if(radio_controller)
- initialize()
-
/obj/machinery/atmospherics/trinary/filter/update_icon()
if(istype(src, /obj/machinery/atmospherics/trinary/filter/m_filter))
icon_state = "m"
diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm
index 25a219ba016..1920b8c6af2 100644
--- a/code/ATMOSPHERICS/components/unary/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm
@@ -73,9 +73,6 @@
if (!id_tag)
assign_uid()
id_tag = num2text(uid)
- if(ticker && ticker.current_state == 3)//if the game is running
- src.initialize()
- src.broadcast_status()
/obj/machinery/atmospherics/unary/vent_pump/high_volume
name = "Large Air Vent"
@@ -259,11 +256,12 @@
/obj/machinery/atmospherics/unary/vent_pump/initialize()
..()
- //some vents work his own spesial way
+ //some vents work his own special way
radio_filter_in = frequency==1439?(RADIO_FROM_AIRALARM):null
radio_filter_out = frequency==1439?(RADIO_TO_AIRALARM):null
if(frequency)
set_frequency(frequency)
+ src.broadcast_status()
/obj/machinery/atmospherics/unary/vent_pump/receive_signal(datum/signal/signal)
if(stat & (NOPOWER|BROKEN))
diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
index 9d690bad3ac..e5b6d3a8dc1 100644
--- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
@@ -42,9 +42,6 @@
if (!id_tag)
assign_uid()
id_tag = num2text(uid)
- if(ticker && ticker.current_state == 3)//if the game is running
- src.initialize()
- src.broadcast_status()
/obj/machinery/atmospherics/unary/vent_scrubber/update_icon(var/safety = 0)
if(!check_icon_cache())
@@ -121,6 +118,7 @@
radio_filter_out = frequency==initial(frequency)?(RADIO_TO_AIRALARM):null
if (frequency)
set_frequency(frequency)
+ src.broadcast_status()
/obj/machinery/atmospherics/unary/vent_scrubber/process()
..()
diff --git a/code/TriDimension/Pipes.dm b/code/TriDimension/Pipes.dm
index b1ffef17f54..c71255a34bd 100644
--- a/code/TriDimension/Pipes.dm
+++ b/code/TriDimension/Pipes.dm
@@ -45,8 +45,6 @@ obj/machinery/atmospherics/pipe/zpipe/New()
initialize_directions = EAST
if(SOUTHWEST)
initialize_directions = SOUTH
- initialize()
-
obj/machinery/atmospherics/pipe/zpipe/hide(var/i)
if(level == 1 && istype(loc, /turf/simulated))
diff --git a/code/TriDimension/Structures.dm b/code/TriDimension/Structures.dm
index e9f0f9e82fd..9224facba26 100644
--- a/code/TriDimension/Structures.dm
+++ b/code/TriDimension/Structures.dm
@@ -97,7 +97,7 @@
src.d_state = 1
if(target)
- var/obj/item/stack/rods/R = new /obj/item/stack/rods(target.loc)
+ var/obj/item/stack/rods/R = PoolOrNew(/obj/item/stack/rods, target.loc)
R.amount = 2
qdel(Target)
diff --git a/code/ZAS/Atom.dm b/code/ZAS/Atom.dm
index 6f75f4ea295..e655295f783 100644
--- a/code/ZAS/Atom.dm
+++ b/code/ZAS/Atom.dm
@@ -50,7 +50,7 @@ atom/proc/c_airblock(turf/other)
#ifdef ZASDBG
ASSERT(isturf(other))
#endif
- return !CanPass(null, other, 0, 0) + 2*!CanPass(null, other, 1.5, 1)
+ return (AIR_BLOCKED*!CanPass(null, other, 0, 0))|(ZONE_BLOCKED*!CanPass(null, other, 1.5, 1))
turf/c_airblock(turf/other)
diff --git a/code/ZAS/Controller.dm b/code/ZAS/Controller.dm
index 4614b3a1833..83d2a54ec3c 100644
--- a/code/ZAS/Controller.dm
+++ b/code/ZAS/Controller.dm
@@ -154,7 +154,18 @@ Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_coun
#ifdef ZASDBG
var/updated = 0
#endif
+
+ //defer updating of self-zone-blocked turfs until after all other turfs have been updated.
+ //this hopefully ensures that non-self-zone-blocked turfs adjacent to self-zone-blocked ones
+ //have valid zones when the self-zone-blocked turfs update.
+ var/list/deferred = list()
+
for(var/turf/T in updating)
+ //check if the turf is self-zone-blocked
+ if(T.c_airblock(T) & ZONE_BLOCKED)
+ deferred += T
+ continue
+
T.update_air_properties()
T.post_update_air_properties()
T.needs_air_update = 0
@@ -164,6 +175,15 @@ Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_coun
#endif
//sleep(1)
+ for(var/turf/T in deferred)
+ T.update_air_properties()
+ T.post_update_air_properties()
+ T.needs_air_update = 0
+ #ifdef ZASDBG
+ T.overlays -= mark
+ updated++
+ #endif
+
#ifdef ZASDBG
if(updated != updating.len)
tick_progress = "[updating.len - updated] tiles left unupdated."
@@ -307,7 +327,7 @@ Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_coun
/datum/controller/air_system/proc/mark_edge_sleeping(connection_edge/E)
#ifdef ZASDBG
- ASSERT(istype(E)
+ ASSERT(istype(E))
#endif
if(E.sleeping) return
active_edges.Remove(E)
@@ -315,7 +335,7 @@ Total Unsimulated Turfs: [world.maxx*world.maxy*world.maxz - simulated_turf_coun
/datum/controller/air_system/proc/mark_edge_active(connection_edge/E)
#ifdef ZASDBG
- ASSERT(istype(E)
+ ASSERT(istype(E))
#endif
if(!E.sleeping) return
active_edges.Add(E)
diff --git a/code/ZAS/Turf.dm b/code/ZAS/Turf.dm
index 85d47d9f6f0..331c00dd37e 100644
--- a/code/ZAS/Turf.dm
+++ b/code/ZAS/Turf.dm
@@ -1,255 +1,259 @@
-/turf/simulated/var/zone/zone
-/turf/simulated/var/open_directions
-
-/turf/var/needs_air_update = 0
-/turf/var/datum/gas_mixture/air
-
-/turf/simulated/proc/update_graphic(list/graphic_add = null, list/graphic_remove = null)
- if(graphic_add && graphic_add.len)
- overlays += graphic_add
- if(graphic_remove && graphic_remove.len)
- overlays -= graphic_remove
-
-/turf/proc/update_air_properties()
- var/block = c_airblock(src)
- if(block & AIR_BLOCKED)
- //dbg(blocked)
- return 1
-
- #ifdef ZLEVELS
- for(var/d = 1, d < 64, d *= 2)
- #else
- for(var/d = 1, d < 16, d *= 2)
- #endif
-
- var/turf/unsim = get_step(src, d)
-
- if(!unsim)
- continue
-
- block = unsim.c_airblock(src)
-
- if(block & AIR_BLOCKED)
- //unsim.dbg(air_blocked, turn(180,d))
- continue
-
- var/r_block = c_airblock(unsim)
-
- if(r_block & AIR_BLOCKED)
- continue
-
- if(istype(unsim, /turf/simulated))
-
- var/turf/simulated/sim = unsim
- if(air_master.has_valid_zone(sim))
-
- air_master.connect(sim, src)
-
-/turf/simulated/update_air_properties()
- if(zone && zone.invalid)
- c_copy_air()
- zone = null //Easier than iterating through the list at the zone.
-
- var/s_block = c_airblock(src)
- if(s_block & AIR_BLOCKED)
- #ifdef ZASDBG
- if(verbose) world << "Self-blocked."
- //dbg(blocked)
- #endif
- if(zone)
- var/zone/z = zone
- if(locate(/obj/machinery/door/airlock) in src) //Hacky, but prevents normal airlocks from rebuilding zones all the time
- z.remove(src)
- else
- z.rebuild()
-
- return 1
-
- var/previously_open = open_directions
- open_directions = 0
-
- var/list/postponed
- #ifdef ZLEVELS
- for(var/d = 1, d < 64, d *= 2)
- #else
- for(var/d = 1, d < 16, d *= 2)
- #endif
-
- var/turf/unsim = get_step(src, d)
-
- if(!unsim) //edge of map
- continue
-
- var/block = unsim.c_airblock(src)
- if(block & AIR_BLOCKED)
-
- #ifdef ZASDBG
- if(verbose) world << "[d] is blocked."
- //unsim.dbg(air_blocked, turn(180,d))
- #endif
-
- continue
-
- var/r_block = c_airblock(unsim)
- if(r_block & AIR_BLOCKED)
-
- #ifdef ZASDBG
- if(verbose) world << "[d] is blocked."
- //dbg(air_blocked, d)
- #endif
-
- //Check that our zone hasn't been cut off recently.
- //This happens when windows move or are constructed. We need to rebuild.
- if((previously_open & d) && istype(unsim, /turf/simulated))
- var/turf/simulated/sim = unsim
- if(zone && sim.zone == zone)
- zone.rebuild()
- return
-
- continue
-
- open_directions |= d
-
- if(istype(unsim, /turf/simulated))
-
- var/turf/simulated/sim = unsim
- sim.open_directions |= reverse_dir[d]
-
- if(air_master.has_valid_zone(sim))
-
- //Might have assigned a zone, since this happens for each direction.
- if(!zone)
-
- //if((block & ZONE_BLOCKED) || (r_block & ZONE_BLOCKED && !(s_block & ZONE_BLOCKED)))
- if(((block & ZONE_BLOCKED) && !(r_block & ZONE_BLOCKED)) || (r_block & ZONE_BLOCKED && !(s_block & ZONE_BLOCKED)))
- #ifdef ZASDBG
- if(verbose) world << "[d] is zone blocked."
- //dbg(zone_blocked, d)
- #endif
-
- //Postpone this tile rather than exit, since a connection can still be made.
- if(!postponed) postponed = list()
- postponed.Add(sim)
-
- else
-
- sim.zone.add(src)
-
- #ifdef ZASDBG
- dbg(assigned)
- if(verbose) world << "Added to [zone]"
- #endif
-
- else if(sim.zone != zone)
-
- #ifdef ZASDBG
- if(verbose) world << "Connecting to [sim.zone]"
- #endif
-
- air_master.connect(src, sim)
-
-
- #ifdef ZASDBG
- else if(verbose) world << "[d] has same zone."
-
- else if(verbose) world << "[d] has invalid zone."
- #endif
-
- else
-
- //Postponing connections to tiles until a zone is assured.
- if(!postponed) postponed = list()
- postponed.Add(unsim)
-
- if(!air_master.has_valid_zone(src)) //Still no zone, make a new one.
- var/zone/newzone = new/zone()
- newzone.add(src)
-
- #ifdef ZASDBG
- dbg(created)
-
- ASSERT(zone)
- #endif
-
- //At this point, a zone should have happened. If it hasn't, don't add more checks, fix the bug.
-
- for(var/turf/T in postponed)
- air_master.connect(src, T)
-
-/turf/proc/post_update_air_properties()
- if(connections) connections.update_all()
-
-/turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
- return 0
-
-/turf/proc/assume_gas(gasid, moles, temp = 0)
- return 0
-
-/turf/return_air()
- //Create gas mixture to hold data for passing
- var/datum/gas_mixture/GM = new
-
- GM.adjust_multi("oxygen", oxygen, "carbon_dioxide", carbon_dioxide, "nitrogen", nitrogen, "phoron", phoron)
- GM.temperature = temperature
-
- return GM
-
-/turf/remove_air(amount as num)
- var/datum/gas_mixture/GM = new
-
- var/sum = oxygen + carbon_dioxide + nitrogen + phoron
- if(sum>0)
- GM.gas["oxygen"] = (oxygen/sum)*amount
- GM.gas["carbon_dioxide"] = (carbon_dioxide/sum)*amount
- GM.gas["nitrogen"] = (nitrogen/sum)*amount
- GM.gas["phoron"] = (phoron/sum)*amount
-
- GM.temperature = temperature
- GM.update_values()
-
- return GM
-
-/turf/simulated/assume_air(datum/gas_mixture/giver)
- var/datum/gas_mixture/my_air = return_air()
- my_air.merge(giver)
-
-/turf/simulated/assume_gas(gasid, moles, temp = null)
- var/datum/gas_mixture/my_air = return_air()
-
- if(isnull(temp))
- my_air.adjust_gas(gasid, moles)
- else
- my_air.adjust_gas_temp(gasid, moles, temp)
-
- return 1
-
-/turf/simulated/remove_air(amount as num)
- var/datum/gas_mixture/my_air = return_air()
- return my_air.remove(amount)
-
-/turf/simulated/return_air()
- if(zone)
- if(!zone.invalid)
- air_master.mark_zone_update(zone)
- return zone.air
- else
- if(!air)
- make_air()
- c_copy_air()
- return air
- else
- if(!air)
- make_air()
- return air
-
-/turf/proc/make_air()
- air = new/datum/gas_mixture
- air.temperature = temperature
- air.adjust_multi("oxygen", oxygen, "carbon_dioxide", carbon_dioxide, "nitrogen", nitrogen, "phoron", phoron)
- air.group_multiplier = 1
- air.volume = CELL_VOLUME
-
-/turf/simulated/proc/c_copy_air()
- if(!air) air = new/datum/gas_mixture
- air.copy_from(zone.air)
- air.group_multiplier = 1
+/turf/simulated/var/zone/zone
+/turf/simulated/var/open_directions
+
+/turf/var/needs_air_update = 0
+/turf/var/datum/gas_mixture/air
+
+/turf/simulated/proc/update_graphic(list/graphic_add = null, list/graphic_remove = null)
+ if(graphic_add && graphic_add.len)
+ overlays += graphic_add
+ if(graphic_remove && graphic_remove.len)
+ overlays -= graphic_remove
+
+/turf/proc/update_air_properties()
+ var/block = c_airblock(src)
+ if(block & AIR_BLOCKED)
+ //dbg(blocked)
+ return 1
+
+ #ifdef ZLEVELS
+ for(var/d = 1, d < 64, d *= 2)
+ #else
+ for(var/d = 1, d < 16, d *= 2)
+ #endif
+
+ var/turf/unsim = get_step(src, d)
+
+ if(!unsim)
+ continue
+
+ block = unsim.c_airblock(src)
+
+ if(block & AIR_BLOCKED)
+ //unsim.dbg(air_blocked, turn(180,d))
+ continue
+
+ var/r_block = c_airblock(unsim)
+
+ if(r_block & AIR_BLOCKED)
+ continue
+
+ if(istype(unsim, /turf/simulated))
+
+ var/turf/simulated/sim = unsim
+ if(air_master.has_valid_zone(sim))
+
+ air_master.connect(sim, src)
+
+/turf/simulated/update_air_properties()
+
+ if(zone && zone.invalid)
+ c_copy_air()
+ zone = null //Easier than iterating through the list at the zone.
+
+ var/s_block = c_airblock(src)
+ if(s_block & AIR_BLOCKED)
+ #ifdef ZASDBG
+ if(verbose) world << "Self-blocked."
+ //dbg(blocked)
+ #endif
+ if(zone)
+ var/zone/z = zone
+
+ if(s_block & ZONE_BLOCKED) //Hacky, but prevents normal airlocks from rebuilding zones all the time
+ z.remove(src)
+ else
+ z.rebuild()
+
+ return 1
+
+ var/previously_open = open_directions
+ open_directions = 0
+
+ var/list/postponed
+ #ifdef ZLEVELS
+ for(var/d = 1, d < 64, d *= 2)
+ #else
+ for(var/d = 1, d < 16, d *= 2)
+ #endif
+
+ var/turf/unsim = get_step(src, d)
+
+ if(!unsim) //edge of map
+ continue
+
+ var/block = unsim.c_airblock(src)
+ if(block & AIR_BLOCKED)
+
+ #ifdef ZASDBG
+ if(verbose) world << "[d] is blocked."
+ //unsim.dbg(air_blocked, turn(180,d))
+ #endif
+
+ continue
+
+ var/r_block = c_airblock(unsim)
+ if(r_block & AIR_BLOCKED)
+
+ #ifdef ZASDBG
+ if(verbose) world << "[d] is blocked."
+ //dbg(air_blocked, d)
+ #endif
+
+ //Check that our zone hasn't been cut off recently.
+ //This happens when windows move or are constructed. We need to rebuild.
+ if((previously_open & d) && istype(unsim, /turf/simulated))
+ var/turf/simulated/sim = unsim
+ if(zone && sim.zone == zone)
+ zone.rebuild()
+ return
+
+ continue
+
+ open_directions |= d
+
+ if(istype(unsim, /turf/simulated))
+
+ var/turf/simulated/sim = unsim
+ sim.open_directions |= reverse_dir[d]
+
+ if(air_master.has_valid_zone(sim))
+
+ //Might have assigned a zone, since this happens for each direction.
+ if(!zone)
+
+ //We do not merge if
+ // they are blocking us and we are not blocking them, or if
+ // we are blocking them and not blocking ourselves - this prevents tiny zones from forming on doorways.
+ if(((block & ZONE_BLOCKED) && !(r_block & ZONE_BLOCKED)) || ((r_block & ZONE_BLOCKED) && !(s_block & ZONE_BLOCKED)))
+ #ifdef ZASDBG
+ if(verbose) world << "[d] is zone blocked."
+ //dbg(zone_blocked, d)
+ #endif
+
+ //Postpone this tile rather than exit, since a connection can still be made.
+ if(!postponed) postponed = list()
+ postponed.Add(sim)
+
+ else
+
+ sim.zone.add(src)
+
+ #ifdef ZASDBG
+ dbg(assigned)
+ if(verbose) world << "Added to [zone]"
+ #endif
+
+ else if(sim.zone != zone)
+
+ #ifdef ZASDBG
+ if(verbose) world << "Connecting to [sim.zone]"
+ #endif
+
+ air_master.connect(src, sim)
+
+
+ #ifdef ZASDBG
+ else if(verbose) world << "[d] has same zone."
+
+ else if(verbose) world << "[d] has invalid zone."
+ #endif
+
+ else
+
+ //Postponing connections to tiles until a zone is assured.
+ if(!postponed) postponed = list()
+ postponed.Add(unsim)
+
+ if(!air_master.has_valid_zone(src)) //Still no zone, make a new one.
+ var/zone/newzone = new/zone()
+ newzone.add(src)
+
+ #ifdef ZASDBG
+ dbg(created)
+
+ ASSERT(zone)
+ #endif
+
+ //At this point, a zone should have happened. If it hasn't, don't add more checks, fix the bug.
+
+ for(var/turf/T in postponed)
+ air_master.connect(src, T)
+
+/turf/proc/post_update_air_properties()
+ if(connections) connections.update_all()
+
+/turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air
+ return 0
+
+/turf/proc/assume_gas(gasid, moles, temp = 0)
+ return 0
+
+/turf/return_air()
+ //Create gas mixture to hold data for passing
+ var/datum/gas_mixture/GM = new
+
+ GM.adjust_multi("oxygen", oxygen, "carbon_dioxide", carbon_dioxide, "nitrogen", nitrogen, "phoron", phoron)
+ GM.temperature = temperature
+
+ return GM
+
+/turf/remove_air(amount as num)
+ var/datum/gas_mixture/GM = new
+
+ var/sum = oxygen + carbon_dioxide + nitrogen + phoron
+ if(sum>0)
+ GM.gas["oxygen"] = (oxygen/sum)*amount
+ GM.gas["carbon_dioxide"] = (carbon_dioxide/sum)*amount
+ GM.gas["nitrogen"] = (nitrogen/sum)*amount
+ GM.gas["phoron"] = (phoron/sum)*amount
+
+ GM.temperature = temperature
+ GM.update_values()
+
+ return GM
+
+/turf/simulated/assume_air(datum/gas_mixture/giver)
+ var/datum/gas_mixture/my_air = return_air()
+ my_air.merge(giver)
+
+/turf/simulated/assume_gas(gasid, moles, temp = null)
+ var/datum/gas_mixture/my_air = return_air()
+
+ if(isnull(temp))
+ my_air.adjust_gas(gasid, moles)
+ else
+ my_air.adjust_gas_temp(gasid, moles, temp)
+
+ return 1
+
+/turf/simulated/remove_air(amount as num)
+ var/datum/gas_mixture/my_air = return_air()
+ return my_air.remove(amount)
+
+/turf/simulated/return_air()
+ if(zone)
+ if(!zone.invalid)
+ air_master.mark_zone_update(zone)
+ return zone.air
+ else
+ if(!air)
+ make_air()
+ c_copy_air()
+ return air
+ else
+ if(!air)
+ make_air()
+ return air
+
+/turf/proc/make_air()
+ air = new/datum/gas_mixture
+ air.temperature = temperature
+ air.adjust_multi("oxygen", oxygen, "carbon_dioxide", carbon_dioxide, "nitrogen", nitrogen, "phoron", phoron)
+ air.group_multiplier = 1
+ air.volume = CELL_VOLUME
+
+/turf/simulated/proc/c_copy_air()
+ if(!air) air = new/datum/gas_mixture
+ air.copy_from(zone.air)
+ air.group_multiplier = 1
diff --git a/code/ZAS/Zone.dm b/code/ZAS/Zone.dm
index b7042191fc9..9fcddc92465 100644
--- a/code/ZAS/Zone.dm
+++ b/code/ZAS/Zone.dm
@@ -111,6 +111,13 @@ Class Procs:
#ifdef ZASDBG
T.dbg(merged)
#endif
+
+ //rebuild the old zone's edges so that the will be possesed by the new zone
+ for(var/connection_edge/E in edges)
+ if(E.contains_zone(into))
+ continue //don't need to rebuild this edge
+ for(var/turf/T in E.connecting_turfs)
+ air_master.mark_for_update(T)
/zone/proc/c_invalidate()
invalid = 1
diff --git a/code/__HELPERS/datum_pool.dm b/code/__HELPERS/datum_pool.dm
index 16594ed0483..79970faf7b6 100644
--- a/code/__HELPERS/datum_pool.dm
+++ b/code/__HELPERS/datum_pool.dm
@@ -23,24 +23,20 @@ var/global/list/GlobalPool = list()
//Either way it gets passed to new
/proc/PoolOrNew(var/get_type,var/second_arg)
- if(!get_type)
- return
-
var/datum/D
D = GetFromPool(get_type,second_arg)
if(!D)
- if(ispath(get_type))
- if(islist(second_arg))
- return new get_type (arglist(second_arg))
- else
- return new get_type (second_arg)
+ // So the GC knows we're pooling this type.
+ if(!GlobalPool[get_type])
+ GlobalPool[get_type] = list(new get_type)
+ if(islist(second_arg))
+ return new get_type (arglist(second_arg))
+ else
+ return new get_type (second_arg)
return D
/proc/GetFromPool(var/get_type,var/second_arg)
- if(!get_type)
- return 0
-
if(isnull(GlobalPool[get_type]))
return 0
@@ -75,9 +71,10 @@ var/global/list/GlobalPool = list()
D.Destroy()
D.ResetVars()
+ D.disposed = 1 //Set to stop processing while pooled
/proc/IsPooled(var/datum/D)
- if(isnull(GlobalPool[D.type]) || length(GlobalPool[D.type]) == 0)
+ if(isnull(GlobalPool[D.type]))
return 0
return 1
@@ -86,10 +83,13 @@ var/global/list/GlobalPool = list()
New(arglist(args))
else
New(args)
+ disposed = null
/atom/movable/Prepare(args)
- if(islist(args))
+ var/list/args_list = args
+ if(istype(args_list) && args_list.len)
loc = args[1]
+ else
loc = args
..()
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 8895e67c2a9..3564c5e15fc 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -927,30 +927,6 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl
refined_trg -= B
continue moving
- var/list/doors = new/list()
-
- if(toupdate.len)
- for(var/turf/simulated/T1 in toupdate)
- for(var/obj/machinery/door/D2 in T1)
- doors += D2
- /*if(T1.parent)
- air_master.groups_to_rebuild += T1.parent
- else
- air_master.tiles_to_update += T1*/
-
- if(fromupdate.len)
- for(var/turf/simulated/T2 in fromupdate)
- for(var/obj/machinery/door/D2 in T2)
- doors += D2
- /*if(T2.parent)
- air_master.groups_to_rebuild += T2.parent
- else
- air_master.tiles_to_update += T2*/
-
- for(var/obj/O in doors)
- O:update_nearby_tiles(1)
-
-
proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0)
if(!original)
diff --git a/code/controllers/Processes/garbage.dm b/code/controllers/Processes/garbage.dm
index 7180008ddbb..3743e74881a 100644
--- a/code/controllers/Processes/garbage.dm
+++ b/code/controllers/Processes/garbage.dm
@@ -18,7 +18,7 @@ var/list/delayed_garbage = list()
/datum/controller/process/garbage_collector/setup()
name = "garbage"
- schedule_interval = 6 SECONDS
+ schedule_interval = 2 SECONDS
if(!garbage_collector)
garbage_collector = src
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index e92d323062f..171080fb32d 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -185,6 +185,7 @@ var/list/gamemode_cache = list()
var/ninjas_allowed = 0
var/abandon_allowed = 1
var/ooc_allowed = 1
+ var/looc_allowed = 1
var/dooc_allowed = 1
var/dsay_allowed = 1
@@ -398,6 +399,7 @@ var/list/gamemode_cache = list()
if ("disable_ooc")
config.ooc_allowed = 0
+ config.looc_allowed = 0
if ("disable_entry")
config.enter_allowed = 0
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index aabcb3653a0..b8b8bbb9f63 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -14,6 +14,11 @@
var/moved_recently = 0
var/mob/pulledby = null
+/atom/movable/New()
+ ..()
+ if(ticker && ticker.current_state == GAME_STATE_PLAYING)
+ initialize()
+
/atom/movable/Del()
if(isnull(gcDestroyed) && loc)
testing("GC: -- [type] was deleted via del() rather than qdel() --")
@@ -33,6 +38,10 @@
..()
+
+/atom/movable/proc/initialize()
+ return
+
/atom/movable/Bump(var/atom/A, yes)
if(src.throwing)
src.throw_impact(A)
diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm
index f67bd7f1d09..68641616d8e 100644
--- a/code/game/gamemodes/gameticker.dm
+++ b/code/game/gamemodes/gameticker.dm
@@ -1,11 +1,5 @@
var/global/datum/controller/gameticker/ticker
-#define GAME_STATE_PREGAME 1
-#define GAME_STATE_SETTING_UP 2
-#define GAME_STATE_PLAYING 3
-#define GAME_STATE_FINISHED 4
-
-
/datum/controller/gameticker
var/const/restart_timeout = 600
var/current_state = GAME_STATE_PREGAME
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index acd558403fe..cd78789507e 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -118,8 +118,6 @@
pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24)
pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0
update_icon()
- if(ticker && ticker.current_state == 3)//if the game is running
- src.initialize()
return
first_run()
diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm
index 390696dfcdf..09e55720a83 100644
--- a/code/game/machinery/atmo_control.dm
+++ b/code/game/machinery/atmo_control.dm
@@ -67,12 +67,6 @@
/obj/machinery/air_sensor/initialize()
set_frequency(frequency)
-/obj/machinery/air_sensor/New()
- ..()
-
- if(radio_controller)
- set_frequency(frequency)
-
obj/machinery/air_sensor/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm
index e6df495a10b..125345c518a 100644
--- a/code/game/machinery/bots/mulebot.dm
+++ b/code/game/machinery/bots/mulebot.dm
@@ -868,8 +868,8 @@
var/turf/Tsec = get_turf(src)
new /obj/item/device/assembly/prox_sensor(Tsec)
- new /obj/item/stack/rods(Tsec)
- new /obj/item/stack/rods(Tsec)
+ PoolOrNew(/obj/item/stack/rods, Tsec)
+ PoolOrNew(/obj/item/stack/rods, Tsec)
new /obj/item/stack/cable_coil/cut(Tsec)
if (cell)
cell.loc = Tsec
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index d20d634ed77..076304694a4 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -9,12 +9,6 @@
var/circuit = null //The path to the circuit board type. If circuit==null, the computer can't be disassembled.
var/processing = 0
-/obj/machinery/computer/New()
- ..()
- if(ticker)
- initialize()
-
-
/obj/machinery/computer/initialize()
power_change()
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index c9dfe8c5f08..e49fb262836 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -264,7 +264,7 @@ for reference:
var/turf/Tsec = get_turf(src)
/* var/obj/item/stack/rods/ =*/
- new /obj/item/stack/rods(Tsec)
+ PoolOrNew(/obj/item/stack/rods, Tsec)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm
index 928dda25410..e010264d4ad 100644
--- a/code/game/machinery/door_control.dm
+++ b/code/game/machinery/door_control.dm
@@ -1,27 +1,10 @@
-#define CONTROL_POD_DOORS 0
-#define CONTROL_NORMAL_DOORS 1
-#define CONTROL_EMITTERS 2
-
-/obj/machinery/door_control
- name = "remote door-control"
- desc = "It controls doors, remotely."
+/obj/machinery/button/remote
+ name = "remote object control"
+ desc = "It controls objects, remotely."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "doorctrl0"
- desc = "A remote control-switch for a door."
power_channel = ENVIRON
- var/id = null
- var/normaldoorcontrol = CONTROL_POD_DOORS
- var/desiredstate = 0 // Zero is closed, 1 is open.
- var/specialfunctions = 1
- /*
- Bitflag, 1= open
- 2= idscan,
- 4= bolts
- 8= shock
- 16= door safties
-
- */
-
+ var/desiredstate = 0
var/exposedwires = 0
var/wires = 3
/*
@@ -34,14 +17,13 @@
idle_power_usage = 2
active_power_usage = 4
-
-/obj/machinery/door_control/attack_ai(mob/user as mob)
+/obj/machinery/button/remote/attack_ai(mob/user as mob)
if(wires & 2)
return src.attack_hand(user)
else
user << "Error, no route to host."
-/obj/machinery/door_control/attackby(obj/item/weapon/W, mob/user as mob)
+/obj/machinery/button/remote/attackby(obj/item/weapon/W, mob/user as mob)
/* For later implementation
if (istype(W, /obj/item/weapon/screwdriver))
{
@@ -64,7 +46,56 @@
playsound(src.loc, "sparks", 100, 1)
return src.attack_hand(user)
-/obj/machinery/door_control/proc/handle_door()
+/obj/machinery/button/remote/attack_hand(mob/user as mob)
+ if(..())
+ return
+
+ src.add_fingerprint(user)
+ if(stat & (NOPOWER|BROKEN))
+ return
+
+ if(!allowed(user) && (wires & 1))
+ user << "Access Denied"
+ flick("doorctrl-denied",src)
+ return
+
+ use_power(5)
+ icon_state = "doorctrl1"
+ desiredstate = !desiredstate
+ trigger()
+ spawn(15)
+ update_icon()
+
+/obj/machinery/button/remote/proc/trigger()
+ return
+
+/obj/machinery/button/remote/power_change()
+ ..()
+ update_icon()
+
+/obj/machinery/button/remote/update_icon()
+ if(stat & NOPOWER)
+ icon_state = "doorctrl-p"
+ else
+ icon_state = "doorctrl0"
+
+/*
+ Airlock remote control
+*/
+/obj/machinery/button/remote/airlock
+ name = "remote door-control"
+ desc = "It controls doors, remotely."
+
+ var/specialfunctions = 1
+ /*
+ Bitflag, 1= open
+ 2= idscan,
+ 4= bolts
+ 8= shock
+ 16= door safties
+ */
+
+/obj/machinery/button/remote/airlock/trigger()
for(var/obj/machinery/door/airlock/D in world)
if(D.id_tag == src.id)
if(specialfunctions & OPEN)
@@ -78,24 +109,31 @@
return
if(desiredstate == 1)
if(specialfunctions & IDSCAN)
- D.aiDisabledIdScanner = 1
+ D.set_idscan(0)
if(specialfunctions & BOLTS)
D.lock()
if(specialfunctions & SHOCK)
D.electrify(-1)
if(specialfunctions & SAFE)
- D.safe = 0
+ D.set_safeties(0)
else
if(specialfunctions & IDSCAN)
- D.aiDisabledIdScanner = 0
+ D.set_idscan(1)
if(specialfunctions & BOLTS)
D.unlock()
if(specialfunctions & SHOCK)
D.electrify(0)
if(specialfunctions & SAFE)
- D.safe = 1
+ D.set_safeties(1)
-/obj/machinery/door_control/proc/handle_pod()
+/*
+ Blast door remote control
+*/
+/obj/machinery/button/remote/blast_door
+ name = "remote blast door-control"
+ desc = "It controls blast doors, remotely."
+
+/obj/machinery/button/remote/blast_door/trigger()
for(var/obj/machinery/door/blast/M in world)
if(M.id == src.id)
if(M.density)
@@ -107,59 +145,32 @@
M.close()
return
-/obj/machinery/door_control/proc/handle_emitters(mob/user as mob)
+/*
+ Emitter remote control
+*/
+/obj/machinery/button/remote/emitter
+ name = "remote emitter control"
+ desc = "It controls emitters, remotely."
+
+/obj/machinery/button/remote/emitter/trigger(mob/user as mob)
for(var/obj/machinery/power/emitter/E in world)
if(E.id == src.id)
spawn(0)
E.activate(user)
return
-/obj/machinery/door_control/attack_hand(mob/user as mob)
- src.add_fingerprint(user)
- if(stat & (NOPOWER|BROKEN))
- return
-
- if(!allowed(user) && (wires & 1))
- user << "\red Access Denied"
- flick("doorctrl-denied",src)
- return
-
- use_power(5)
- icon_state = "doorctrl1"
- add_fingerprint(user)
-
- switch(normaldoorcontrol)
- if(CONTROL_NORMAL_DOORS)
- handle_door()
- if(CONTROL_POD_DOORS)
- handle_pod()
- if(CONTROL_EMITTERS)
- handle_emitters(user)
-
- desiredstate = !desiredstate
- spawn(15)
- if(!(stat & NOPOWER))
- icon_state = "doorctrl0"
-
-/obj/machinery/door_control/power_change()
- ..()
- if(stat & NOPOWER)
- icon_state = "doorctrl-p"
- else
- icon_state = "doorctrl0"
-
-/obj/machinery/button/driver
+/*
+ Mass driver remote control
+*/
+/obj/machinery/button/remote/driver
name = "mass driver button"
desc = "A remote control switch for a mass driver."
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "launcherbtt"
-/obj/machinery/button/driver/attack_hand(mob/user as mob)
- if(..())
- return
-
- use_power(5)
-
+/obj/machinery/button/remote/driver/trigger(mob/user as mob)
active = 1
- icon_state = "launcheract"
+ update_icon()
for(var/obj/machinery/door/blast/M in machines)
if (M.id == src.id)
@@ -177,11 +188,17 @@
for(var/obj/machinery/door/blast/M in machines)
if (M.id == src.id)
- spawn( 0 )
+ spawn(0)
M.close()
return
icon_state = "launcherbtt"
- active = 0
+ update_icon()
return
+
+/obj/machinery/button/remote/driver/update_icon()
+ if(!active || (stat & NOPOWER))
+ icon_state = "launcherbtt"
+ else
+ icon_state = "launcheract"
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 08c9c89ccce..76b08dba2c5 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -4,7 +4,7 @@
icon_state = "door_closed"
power_channel = ENVIRON
- explosion_resistance = 15
+ explosion_resistance = 10
var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in.
var/hackProof = 0 // if 1, this door can't be hacked by the AI
var/electrified_until = 0 //World time when the door is no longer electrified. -1 if it is permanently electrified until someone fixes it.
@@ -80,6 +80,7 @@
icon = 'icons/obj/doors/Doorglass.dmi'
hitsound = 'sound/effects/Glasshit.ogg'
maxhealth = 300
+ explosion_resistance = 5
opacity = 0
glass = 1
@@ -91,6 +92,7 @@
/obj/machinery/door/airlock/vault
name = "Vault"
icon = 'icons/obj/doors/vault.dmi'
+ explosion_resistance = 20
opacity = 1
secured_wires = 1
assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity //Until somebody makes better sprites.
@@ -108,12 +110,14 @@
/obj/machinery/door/airlock/hatch
name = "Airtight Hatch"
icon = 'icons/obj/doors/Doorhatchele.dmi'
+ explosion_resistance = 20
opacity = 1
assembly_type = /obj/structure/door_assembly/door_assembly_hatch
/obj/machinery/door/airlock/maintenance_hatch
name = "Maintenance Hatch"
icon = 'icons/obj/doors/Doorhatchmaint2.dmi'
+ explosion_resistance = 20
opacity = 1
assembly_type = /obj/structure/door_assembly/door_assembly_mhatch
@@ -122,6 +126,7 @@
icon = 'icons/obj/doors/Doorcomglass.dmi'
hitsound = 'sound/effects/Glasshit.ogg'
maxhealth = 300
+ explosion_resistance = 5
opacity = 0
assembly_type = /obj/structure/door_assembly/door_assembly_com
glass = 1
@@ -131,6 +136,7 @@
icon = 'icons/obj/doors/Doorengglass.dmi'
hitsound = 'sound/effects/Glasshit.ogg'
maxhealth = 300
+ explosion_resistance = 5
opacity = 0
assembly_type = /obj/structure/door_assembly/door_assembly_eng
glass = 1
@@ -140,6 +146,7 @@
icon = 'icons/obj/doors/Doorsecglass.dmi'
hitsound = 'sound/effects/Glasshit.ogg'
maxhealth = 300
+ explosion_resistance = 5
opacity = 0
assembly_type = /obj/structure/door_assembly/door_assembly_sec
glass = 1
@@ -149,6 +156,7 @@
icon = 'icons/obj/doors/Doormedglass.dmi'
hitsound = 'sound/effects/Glasshit.ogg'
maxhealth = 300
+ explosion_resistance = 5
opacity = 0
assembly_type = /obj/structure/door_assembly/door_assembly_med
glass = 1
@@ -173,6 +181,7 @@
icon = 'icons/obj/doors/Doorresearchglass.dmi'
hitsound = 'sound/effects/Glasshit.ogg'
maxhealth = 300
+ explosion_resistance = 5
opacity = 0
assembly_type = /obj/structure/door_assembly/door_assembly_research
glass = 1
@@ -183,6 +192,7 @@
icon = 'icons/obj/doors/Doorminingglass.dmi'
hitsound = 'sound/effects/Glasshit.ogg'
maxhealth = 300
+ explosion_resistance = 5
opacity = 0
assembly_type = /obj/structure/door_assembly/door_assembly_min
glass = 1
@@ -192,6 +202,7 @@
icon = 'icons/obj/doors/Dooratmoglass.dmi'
hitsound = 'sound/effects/Glasshit.ogg'
maxhealth = 300
+ explosion_resistance = 5
opacity = 0
assembly_type = /obj/structure/door_assembly/door_assembly_atmo
glass = 1
@@ -292,6 +303,7 @@
/obj/machinery/door/airlock/highsecurity
name = "Secure Airlock"
icon = 'icons/obj/doors/hightechsecurity.dmi'
+ explosion_resistance = 20
secured_wires = 1
assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity
@@ -421,6 +433,33 @@ About the new airlock wires panel:
if(feedback && message)
usr << message
+/obj/machinery/door/airlock/proc/set_idscan(var/activate, var/feedback = 0)
+ var/message = ""
+ if(src.isWireCut(AIRLOCK_WIRE_IDSCAN))
+ message = "The IdScan wire is cut - IdScan feature permanently disabled."
+ else if(activate && src.aiDisabledIdScanner)
+ src.aiDisabledIdScanner = 0
+ message = "IdScan feature has been enabled."
+ else if(!activate && !src.aiDisabledIdScanner)
+ src.aiDisabledIdScanner = 1
+ message = "IdScan feature has been disabled."
+
+ if(feedback && message)
+ usr << message
+
+/obj/machinery/door/airlock/proc/set_safeties(var/activate, var/feedback = 0)
+ var/message = ""
+ // Safeties! We don't need no stinking safeties!
+ if (src.isWireCut(AIRLOCK_WIRE_SAFETY))
+ message = text("The safety wire is cut - Cannot enable safeties.")
+ else if (!activate && src.safe)
+ safe = 0
+ else if (activate && !src.safe)
+ safe = 1
+
+ if(feedback && message)
+ usr << message
+
// shock user with probability prb (if all connections & power are working)
// returns 1 if shocked, 0 otherwise
// The preceding comment was borrowed from the grille's shock script
@@ -637,14 +676,7 @@ About the new airlock wires panel:
var/activate = text2num(href_list["activate"])
switch (href_list["command"])
if("idscan")
- if(src.isWireCut(AIRLOCK_WIRE_IDSCAN))
- usr << "The IdScan wire has been cut - IdScan feature permanently disabled."
- else if(activate && src.aiDisabledIdScanner)
- src.aiDisabledIdScanner = 0
- usr << "IdScan feature has been enabled."
- else if(!activate && !src.aiDisabledIdScanner)
- src.aiDisabledIdScanner = 1
- usr << "IdScan feature has been disabled."
+ set_idscan(activate, 1)
if("main_power")
if(!main_power_lost_until)
src.loseMainPower()
@@ -653,7 +685,7 @@ About the new airlock wires panel:
src.loseBackupPower()
if("bolts")
if(src.isWireCut(AIRLOCK_WIRE_DOOR_BOLTS))
- usr << "The door bolt control wire has been cut - Door bolts permanently dropped."
+ usr << "The door bolt control wire is cut - Door bolts permanently dropped."
else if(activate && src.lock())
usr << "The door bolts have been dropped."
else if(!activate && src.unlock())
@@ -672,13 +704,7 @@ About the new airlock wires panel:
else if(!activate && !density)
close()
if("safeties")
- // Safeties! We don't need no stinking safeties!
- if (src.isWireCut(AIRLOCK_WIRE_SAFETY))
- usr << text("The safety wire is cut - Cannot secure the door.")
- else if (activate && src.safe)
- safe = 0
- else if (!activate && !src.safe)
- safe = 1
+ set_safeties(!activate, 1)
if("timing")
// Door speed control
if(src.isWireCut(AIRLOCK_WIRE_SPEED))
@@ -690,7 +716,7 @@ About the new airlock wires panel:
if("lights")
// Bolt lights
if(src.isWireCut(AIRLOCK_WIRE_LIGHT))
- usr << "The bolt lights wire has been cut - The door bolt lights are permanently disabled."
+ usr << "The bolt lights wire is cut - The door bolt lights are permanently disabled."
else if (!activate && src.lights)
lights = 0
usr << "The door bolt lights have been disabled."
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index bbe3da7541f..e02be363f4e 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -164,7 +164,7 @@
switch (Proj.damage_type)
if(BRUTE)
new /obj/item/stack/sheet/metal(src.loc, 2)
- new /obj/item/stack/rods(src.loc, 3)
+ PoolOrNew(/obj/item/stack/rods, list(src.loc, 3))
if(BURN)
new /obj/effect/decal/cleanable/ash(src.loc) // Turn it to ashes!
qdel(src)
diff --git a/code/game/objects/effects/chem/chemsmoke.dm b/code/game/objects/effects/chem/chemsmoke.dm
index c6d00c3db6b..a244c2beba5 100644
--- a/code/game/objects/effects/chem/chemsmoke.dm
+++ b/code/game/objects/effects/chem/chemsmoke.dm
@@ -172,6 +172,10 @@
..(T, I, dist, spores)
/datum/effect/effect/system/smoke_spread/chem/proc/fadeOut(var/atom/A, var/frames = 16) // Fades out the smoke smoothly using it's alpha variable.
+ if(A.alpha == 0) //Handle already transparent case
+ return
+ if(frames == 0)
+ frames = 1 //We will just assume that by 0 frames, the coder meant "during one frame".
var/step = A.alpha / frames
for(var/i = 0, i < frames, i++)
A.alpha -= step
diff --git a/code/game/objects/explosion_recursive.dm b/code/game/objects/explosion_recursive.dm
index 9dc04ff6301..9b03866b988 100644
--- a/code/game/objects/explosion_recursive.dm
+++ b/code/game/objects/explosion_recursive.dm
@@ -65,7 +65,7 @@ proc/explosion_rec(turf/epicenter, power)
var/explosion_resistance
/turf/space
- explosion_resistance = 10
+ explosion_resistance = 3
/turf/simulated/floor
explosion_resistance = 1
@@ -83,10 +83,10 @@ proc/explosion_rec(turf/epicenter, power)
explosion_resistance = 1
/turf/simulated/shuttle/wall
- explosion_resistance = 5
+ explosion_resistance = 10
/turf/simulated/wall
- explosion_resistance = 5
+ explosion_resistance = 10
/turf/simulated/wall/r_wall
explosion_resistance = 25
@@ -107,24 +107,16 @@ proc/explosion_rec(turf/epicenter, power)
explosion_turfs[src] = power
var/spread_power = power - src.explosion_resistance //This is the amount of power that will be spread to the tile in the direction of the blast
- var/side_spread_power = power - 2 * src.explosion_resistance //This is the amount of power that will be spread to the side tiles
for(var/obj/O in src)
if(O.explosion_resistance)
spread_power -= O.explosion_resistance
- side_spread_power -= O.explosion_resistance
var/turf/T = get_step(src, direction)
T.explosion_spread(spread_power, direction)
T = get_step(src, turn(direction,90))
- T.explosion_spread(side_spread_power, turn(direction,90))
+ T.explosion_spread(spread_power, turn(direction,90))
T = get_step(src, turn(direction,-90))
- T.explosion_spread(side_spread_power, turn(direction,90))
-
- /*
- for(var/direction in cardinal)
- var/turf/T = get_step(src, direction)
- T.explosion_spread(spread_power)
- */
+ T.explosion_spread(spread_power, turn(direction,90))
/turf/unsimulated/explosion_spread(power)
return //So it doesn't get to the parent proc, which simulates explosions
\ No newline at end of file
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 0a7df8f3062..2c91285e084 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -58,10 +58,9 @@
icon_state = "cart-s"
access_security = 1
-/obj/item/weapon/cartridge/security/New()
+/obj/item/weapon/cartridge/security/initialize()
+ radio = new /obj/item/radio/integrated/beepsky(src)
..()
- spawn(5)
- radio = new /obj/item/radio/integrated/beepsky(src)
/obj/item/weapon/cartridge/detective
name = "\improper D.E.T.E.C.T. cartridge"
@@ -102,6 +101,7 @@
/obj/item/weapon/cartridge/signal
name = "generic signaler cartridge"
desc = "A data cartridge with an integrated radio signaler module."
+ var/qdeled = 0
/obj/item/weapon/cartridge/signal/science
name = "\improper Signal Ace 2 cartridge"
@@ -110,10 +110,9 @@
access_reagent_scanner = 1
access_atmos = 1
-/obj/item/weapon/cartridge/signal/New()
- ..()
- spawn(5)
- radio = new /obj/item/radio/integrated/signal(src)
+/obj/item/weapon/cartridge/signal/initialize()
+ radio = new /obj/item/radio/integrated/signal(src)
+ ..()
/obj/item/weapon/cartridge/signal/Destroy()
qdel(radio)
@@ -125,10 +124,9 @@
icon_state = "cart-q"
access_quartermaster = 1
-/obj/item/weapon/cartridge/quartermaster/New()
+/obj/item/weapon/cartridge/quartermaster/initialize()
+ radio = new /obj/item/radio/integrated/mule(src)
..()
- spawn(5)
- radio = new /obj/item/radio/integrated/mule(src)
/obj/item/weapon/cartridge/head
name = "\improper Easy-Record DELUXE"
@@ -143,10 +141,8 @@
access_janitor = 1
access_security = 1
-/obj/item/weapon/cartridge/hop/New()
- ..()
- spawn(5)
- radio = new /obj/item/radio/integrated/mule(src)
+/obj/item/weapon/cartridge/hop/initialize()
+ radio = new /obj/item/radio/integrated/mule(src)
/obj/item/weapon/cartridge/hos
name = "\improper R.O.B.U.S.T. DELUXE"
@@ -154,10 +150,9 @@
access_status_display = 1
access_security = 1
-/obj/item/weapon/cartridge/hos/New()
+/obj/item/weapon/cartridge/hos/initialize()
+ radio = new /obj/item/radio/integrated/beepsky(src)
..()
- spawn(5)
- radio = new /obj/item/radio/integrated/beepsky(src)
/obj/item/weapon/cartridge/ce
name = "\improper Power-On DELUXE"
@@ -180,10 +175,9 @@
access_reagent_scanner = 1
access_atmos = 1
-/obj/item/weapon/cartridge/rd/New()
+/obj/item/weapon/cartridge/rd/initialize()
+ radio = new /obj/item/radio/integrated/signal(src)
..()
- spawn(5)
- radio = new /obj/item/radio/integrated/signal(src)
/obj/item/weapon/cartridge/captain
name = "\improper Value-PAK cartridge"
diff --git a/code/game/objects/items/devices/PDA/radio.dm b/code/game/objects/items/devices/PDA/radio.dm
index 4860778d852..c4fb3855369 100644
--- a/code/game/objects/items/devices/PDA/radio.dm
+++ b/code/game/objects/items/devices/PDA/radio.dm
@@ -217,12 +217,10 @@
var/last_transmission
var/datum/radio_frequency/radio_connection
- New()
- ..()
- if(radio_controller)
- initialize()
-
initialize()
+ if(!radio_controller)
+ return
+
if (src.frequency < 1441 || src.frequency > 1489)
src.frequency = sanitize_frequency(src.frequency)
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index d03179cff82..5c979f05694 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -42,8 +42,6 @@
/obj/item/device/radio/New()
..()
wires = new(src)
- if(radio_controller)
- initialize()
/obj/item/device/radio/Destroy()
qdel(wires)
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index e0ea864eee7..92d97e3d5d0 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -92,7 +92,7 @@
/obj/machinery/shield_gen,
/obj/machinery/clonepod,
/obj/machinery/deployable,
- /obj/machinery/door_control,
+ /obj/machinery/button/remote,
/obj/machinery/porta_turret,
/obj/machinery/shieldgen,
/obj/machinery/turretid,
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index d90709d9c3f..f57ffaf84cd 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -82,7 +82,7 @@
if(ptank)
ptank.loc = T
ptank = null
- new /obj/item/stack/rods(T)
+ PoolOrNew(/obj/item/stack/rods, T)
qdel(src)
return
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 480709c34ad..edf09f6ea85 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -144,11 +144,11 @@
var/obj/structure/window/W = A
new /obj/item/weapon/shard( W.loc )
- if(W.reinf) new /obj/item/stack/rods( W.loc)
+ if(W.reinf) PoolOrNew(/obj/item/stack/rods, W.loc)
if (W.dir == SOUTHWEST)
new /obj/item/weapon/shard( W.loc )
- if(W.reinf) new /obj/item/stack/rods( W.loc)
+ if(W.reinf) PoolOrNew(/obj/item/stack/rods, W.loc)
qdel(A)
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 39b767263fc..fc6ef5b99d2 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -61,9 +61,6 @@
else
return null
-/atom/movable/proc/initialize()
- return
-
/obj/proc/updateUsrDialog()
if(in_use)
var/is_in_use = 0
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index f3cc2a4028f..5e1a551cecf 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -10,7 +10,7 @@
var/welded = 0
var/wall_mounted = 0 //never solid (You can always pass over it)
var/health = 100
- var/lastbang
+ var/breakout = 0 //if someone is currently breaking out. mutex
var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate
//then open it in a populated area to crash clients.
var/open_sound = 'sound/machines/click.ogg'
@@ -262,12 +262,6 @@
if(!src.open())
user << "It won't budge!"
- if(!lastbang)
- lastbang = 1
- for (var/mob/M in hearers(src, null))
- M << text("BANG, bang!", max(0, 5 - get_dist(src, M)))
- spawn(30)
- lastbang = 0
/obj/structure/closet/attack_hand(mob/user as mob)
src.add_fingerprint(user)
@@ -315,3 +309,64 @@
dump_contents()
spawn(1) qdel(src)
return 1
+
+/obj/structure/closet/proc/req_breakout()
+ if(breakout)
+ return 0 //Already breaking out.
+ if(opened)
+ return 0 //Door's open... wait, why are you in it's contents then?
+ if(!welded)
+ return 0 //closed but not welded...
+ return 1
+
+/obj/structure/closet/proc/mob_breakout(var/mob/living/escapee)
+ var/breakout_time = 2 //2 minutes by default
+
+ if(!req_breakout())
+ return
+
+ //okay, so the closet is either welded or locked... resist!!!
+ escapee.next_move = world.time + 100
+ escapee.last_special = world.time + 100
+ escapee << "You lean on the back of \the [src] and start pushing the door open. (this will take about [breakout_time] minutes)"
+
+ visible_message("The [src] begins to shake violently!")
+
+ breakout = 1 //can't think of a better way to do this right now.
+ for(var/i in 1 to (6*breakout_time * 2)) //minutes * 6 * 5seconds * 2
+ playsound(src.loc, 'sound/effects/grillehit.ogg', 100, 1)
+ animate_shake()
+
+ if(!do_after(escapee, 50)) //5 seconds
+ breakout = 0
+ return
+ if(!escapee || escapee.stat || escapee.loc != src)
+ breakout = 0
+ return //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened
+ //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'...
+ if(!req_breakout())
+ breakout = 0
+ return
+
+ //Well then break it!
+ breakout = 0
+ escapee << "You successfully break out!"
+ visible_message("\the [escapee] successfully broke out of \the [src]!")
+ playsound(src.loc, 'sound/effects/grillehit.ogg', 100, 1)
+ break_open()
+ animate_shake()
+
+/obj/structure/closet/proc/break_open()
+ welded = 0
+ update_icon()
+ //Do this to prevent contents from being opened into nullspace (read: bluespace)
+ if(istype(loc, /obj/structure/bigDelivery))
+ var/obj/structure/bigDelivery/BD = loc
+ BD.unwrap()
+ open()
+
+/obj/structure/closet/proc/animate_shake()
+ var/init_px = pixel_x
+ var/shake_dir = pick(-1, 1)
+ animate(src, transform=turn(matrix(), 8*shake_dir), pixel_x=init_px + 2*shake_dir, time=1)
+ animate(transform=null, pixel_x=init_px, time=6, easing=ELASTIC_EASING)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index a3b9f399281..df2985c42ea 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -132,3 +132,25 @@
overlays += "welded"
else
icon_state = icon_opened
+
+
+/obj/structure/closet/secure_closet/req_breakout()
+ if(!opened && locked) return 1
+ return ..() //It's a secure closet, but isn't locked.
+
+/obj/structure/closet/secure_closet/break_open()
+ desc += " It appears to be broken."
+ icon_state = icon_off
+ spawn()
+ flick(icon_broken, src)
+ sleep(10)
+ flick(icon_broken, src)
+ sleep(10)
+ broken = 1
+ locked = 0
+ update_icon()
+ //Do this to prevent contents from being opened into nullspace (read: bluespace)
+ if(istype(loc, /obj/structure/bigDelivery))
+ var/obj/structure/bigDelivery/BD = loc
+ BD.unwrap()
+ open()
\ No newline at end of file
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 54536dd4001..b18658d4a6c 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -8,7 +8,7 @@
flags = CONDUCT
pressure_resistance = 5*ONE_ATMOSPHERE
layer = 2.9
- explosion_resistance = 5
+ explosion_resistance = 1
var/health = 10
var/destroyed = 0
@@ -103,7 +103,7 @@
if(iswirecutter(W))
if(!shock(user, 100))
playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1)
- new /obj/item/stack/rods(loc, 2)
+ PoolOrNew(/obj/item/stack/rods, list(get_turf(src), destroyed ? 1 : 2))
qdel(src)
else if((isscrewdriver(W)) && (istype(loc, /turf/simulated) || anchored))
if(!shock(user, 90))
@@ -173,11 +173,11 @@
density = 0
destroyed = 1
update_icon()
- new /obj/item/stack/rods(loc)
+ PoolOrNew(/obj/item/stack/rods, get_turf(src))
else
if(health <= -6)
- new /obj/item/stack/rods(loc)
+ PoolOrNew(/obj/item/stack/rods, get_turf(src))
qdel(src)
return
return
@@ -221,6 +221,16 @@
spawn(1) healthcheck()
return 1
+// Used in mapping to avoid
+/obj/structure/grille/broken
+ destroyed = 1
+ icon_state = "grille-b"
+ density = 0
+ New()
+ ..()
+ health = rand(-5, -1) //In the destroyed but not utterly threshold.
+ healthcheck() //Send this to healthcheck just in case we want to do something else with it.
+
/obj/structure/grille/cult
name = "cult grille"
desc = "A matrice built out of an unknown material, with some sort of force field blocking air around it"
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index 788a6711f0e..078f4bc06bc 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -61,7 +61,7 @@
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)
+ PoolOrNew(/obj/item/stack/rods, src.loc)
qdel(src)
return
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index 0aaeb83c980..36135a775e7 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -78,7 +78,7 @@ obj/structure/windoor_assembly/Destroy()
user << "\blue You dissasembled the windoor assembly!"
new /obj/item/stack/sheet/glass/reinforced(get_turf(src), 5)
if(secure)
- new /obj/item/stack/rods(get_turf(src), 4)
+ PoolOrNew(/obj/item/stack/rods, list(get_turf(src), 4))
qdel(src)
else
user << "\blue You need more welding fuel to dissassemble the windoor assembly."
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index c6afa5e2c11..36d5bcc657f 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -88,11 +88,11 @@
index = 0
while(index < 2)
new shardtype(loc)
- if(reinf) new /obj/item/stack/rods(loc)
+ if(reinf) PoolOrNew(/obj/item/stack/rods, loc)
index++
else
new shardtype(loc)
- if(reinf) new /obj/item/stack/rods(loc)
+ if(reinf) PoolOrNew(/obj/item/stack/rods, loc)
qdel(src)
return
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 46007735c33..9541e671164 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -82,19 +82,19 @@ var/list/wood_icons = list("wood","wood-broken")
if(1.0)
src.ChangeTurf(/turf/space)
if(2.0)
- switch(pick(1,2;75,3))
+ switch(pick(40;1,40;2,3))
if (1)
- src.ReplaceWithLattice()
if(prob(33)) new /obj/item/stack/sheet/metal(src)
+ src.ReplaceWithLattice()
if(2)
src.ChangeTurf(/turf/space)
if(3)
+ if(prob(33)) new /obj/item/stack/sheet/metal(src)
if(prob(80))
src.break_tile_to_plating()
else
src.break_tile()
src.hotspot_expose(1000,CELL_VOLUME)
- if(prob(33)) new /obj/item/stack/sheet/metal(src)
if(3.0)
if (prob(50))
src.break_tile()
diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm
index e0ba3b7f4d9..b036df007ac 100644
--- a/code/game/turfs/simulated/floor_types.dm
+++ b/code/game/turfs/simulated/floor_types.dm
@@ -64,7 +64,7 @@
user << "\blue Removing rods..."
playsound(src, 'sound/items/Ratchet.ogg', 80, 1)
if(do_after(user, 30))
- new /obj/item/stack/rods(src, 2)
+ PoolOrNew(/obj/item/stack/rods, list(loc, 2))
ChangeTurf(/turf/simulated/floor)
var/turf/simulated/floor/F = src
F.make_plating()
diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm
index 102a51b2b44..0ddf0c34e7f 100644
--- a/code/game/turfs/simulated/walls_reinforced.dm
+++ b/code/game/turfs/simulated/walls_reinforced.dm
@@ -98,7 +98,7 @@
playsound(src, 'sound/items/Wirecutter.ogg', 100, 1)
src.d_state = 1
src.icon_state = "r_wall-1"
- new /obj/item/stack/rods( src )
+ PoolOrNew(/obj/item/stack/rods, src)
user << "You cut the outer grille."
return
@@ -206,7 +206,7 @@
if( d_state == 5 && user.loc == T && user.get_active_hand() == WT )
src.d_state = 6
src.icon_state = "r_wall-6"
- new /obj/item/stack/rods( src )
+ PoolOrNew(/obj/item/stack/rods, src)
user << "The support rods drop out as you cut them loose from the frame."
else
user << "You need more welding fuel to complete this task."
@@ -223,7 +223,7 @@
if( d_state == 5 && user.loc == T && user.get_active_hand() == W )
src.d_state = 6
src.icon_state = "r_wall-6"
- new /obj/item/stack/rods( src )
+ PoolOrNew(/obj/item/stack/rods, src)
user << "The support rods drop out as you cut them loose from the frame."
return
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 7353531f593..98f56361feb 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -233,12 +233,6 @@
if(S.zone) S.zone.rebuild()
if(ispath(N, /turf/simulated/floor))
- //if the old turf had a zone, connect the new turf to it as well - Cael
- //Adjusted by SkyMarshal 5/10/13 - The air master will handle the addition of the new turf.
- //if(zone)
- // zone.RemoveTurf(src)
- // if(!zone.CheckStatus())
- // zone.SetStatus(ZONE_ACTIVE)
var/turf/simulated/W = new N( locate(src.x, src.y, src.z) )
//W.Assimilate_Air()
@@ -258,7 +252,7 @@
universe.OnTurfChange(W)
if(air_master)
- air_master.mark_for_update(src)
+ air_master.mark_for_update(src) //handle the addition of the new turf.
for(var/turf/space/S in range(W,1))
S.update_starlight()
@@ -267,10 +261,6 @@
return W
else
- //if(zone)
- // zone.RemoveTurf(src)
- // if(!zone.CheckStatus())
- // zone.SetStatus(ZONE_ACTIVE)
var/turf/W = new N( locate(src.x, src.y, src.z) )
W.lighting_lumcount += old_lumcount
@@ -348,7 +338,8 @@
/turf/proc/ReplaceWithLattice()
src.ChangeTurf(/turf/space)
- new /obj/structure/lattice( locate(src.x, src.y, src.z) )
+ spawn()
+ new /obj/structure/lattice( locate(src.x, src.y, src.z) )
/turf/proc/kill_creatures(mob/U = null)//Will kill people/creatures and damage mechs./N
//Useful to batch-add creatures to the list.
diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index 92b0638b9f7..82fef02e97c 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -85,8 +85,8 @@
return
if(!holder)
- if(!config.ooc_allowed)
- src << "OOC is globally muted."
+ if(!config.looc_allowed)
+ src << "LOOC is globally muted."
return
if(!config.dooc_allowed && (mob.stat == DEAD))
usr << "OOC for dead mobs has been turned off."
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index 7b5a4558cf7..b42313261da 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -747,20 +747,43 @@ var/global/floorIsLava = 0
set category = "Server"
set desc="Globally Toggles OOC"
set name="Toggle OOC"
+
+ if(!check_rights(R_ADMIN))
+ return
+
config.ooc_allowed = !(config.ooc_allowed)
if (config.ooc_allowed)
world << "The OOC channel has been globally enabled!"
else
world << "The OOC channel has been globally disabled!"
- log_admin("[key_name(usr)] toggled OOC.")
- message_admins("[key_name_admin(usr)] toggled OOC.", 1)
+ log_and_message_admins("toggled OOC.")
feedback_add_details("admin_verb","TOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+/datum/admins/proc/togglelooc()
+ set category = "Server"
+ set desc="Globally Toggles LOOC"
+ set name="Toggle LOOC"
+
+ if(!check_rights(R_ADMIN))
+ return
+
+ config.looc_allowed = !(config.looc_allowed)
+ if (config.looc_allowed)
+ world << "The LOOC channel has been globally enabled!"
+ else
+ world << "The LOOC channel has been globally disabled!"
+ log_and_message_admins("toggled LOOC.")
+ feedback_add_details("admin_verb","TLOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
/datum/admins/proc/toggledsay()
set category = "Server"
set desc="Globally Toggles DSAY"
set name="Toggle DSAY"
+
+ if(!check_rights(R_ADMIN))
+ return
+
config.dsay_allowed = !(config.dsay_allowed)
if (config.dsay_allowed)
world << "Deadchat has been globally enabled!"
@@ -774,6 +797,10 @@ var/global/floorIsLava = 0
set category = "Server"
set desc="Toggle Dead OOC."
set name="Toggle Dead OOC"
+
+ if(!check_rights(R_ADMIN))
+ return
+
config.dooc_allowed = !( config.dooc_allowed )
log_admin("[key_name(usr)] toggled Dead OOC.")
message_admins("[key_name_admin(usr)] toggled Dead OOC.", 1)
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index f5bf7af81d7..d495bacecbf 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -58,6 +58,7 @@ var/list/admin_verbs_admin = list(
/client/proc/investigate_show, /*various admintools for investigation. Such as a singulo grief-log*/
/client/proc/secrets,
/datum/admins/proc/toggleooc, /*toggles ooc on/off for everyone*/
+ /datum/admins/proc/togglelooc, /*toggles looc on/off for everyone*/
/datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/
/datum/admins/proc/toggledsay, /*toggles dsay on/off for everyone*/
/client/proc/game_panel, /*game panel, allows to change game-mode etc*/
diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm
index 1f51b6f050b..03a1104905e 100644
--- a/code/modules/client/preferences_gear.dm
+++ b/code/modules/client/preferences_gear.dm
@@ -163,6 +163,12 @@ var/global/list/gear_datums = list()
cost = 1
slot = slot_head
+/datum/gear/wcap
+ display_name = "cap, white"
+ path = /obj/item/clothing/head/soft/mime
+ cost = 1
+ slot = slot_head
+
/datum/gear/hairflower
display_name = "hair flower pin"
path = /obj/item/clothing/head/hairflower
@@ -181,6 +187,12 @@ var/global/list/gear_datums = list()
cost = 2
slot = slot_head
+/datum/gear/rhardhat
+ display_name = "hardhat, red"
+ path = /obj/item/clothing/head/hardhat/red
+ cost = 2
+ slot = slot_head
+
/datum/gear/yhardhat
display_name = "hardhat, yellow"
path = /obj/item/clothing/head/hardhat
@@ -205,6 +217,12 @@ var/global/list/gear_datums = list()
cost = 1
slot = slot_head
+/datum/gear/tophat
+ display_name = "hat, tophat"
+ path = /obj/item/clothing/head/that
+ cost = 1
+ slot = slot_head
+
// Wig by Earthcrusher, blame him.
/datum/gear/philosopher_wig
display_name = "natural philosopher's wig"
@@ -239,12 +257,37 @@ var/global/list/gear_datums = list()
display_name = "Glasses, green"
path = /obj/item/clothing/glasses/gglasses
cost = 1
+ slot = slot_glasses
+
+/datum/gear/prescriptionhipster
+ display_name = "Glasses, hipster"
+ path = /obj/item/clothing/glasses/regular/hipster
+ cost = 1
+ slot = slot_glasses
+
+/datum/gear/prescription
+ display_name = "Glasses, prescription"
+ path = /obj/item/clothing/glasses/regular
+ cost = 1
+ slot = slot_glasses
+
+/datum/gear/monocle
+ display_name = "Monocle"
+ path = /obj/item/clothing/glasses/monocle
+ cost = 1
+ slot = slot_glasses
/datum/gear/scanning_goggles
display_name = "scanning goggles"
path = /obj/item/clothing/glasses/fluff/uzenwa_sissra_1
cost = 1
-// allowed_roles = list("Roboticist", "Scientist", "Research Director")
+ slot = slot_glasses
+
+/datum/gear/sciencegoggles
+ display_name = "Science Goggles"
+ path = /obj/item/clothing/glasses/science
+ cost = 1
+ slot = slot_glasses
/datum/gear/security
display_name = "Security HUD"
@@ -260,7 +303,7 @@ var/global/list/gear_datums = list()
slot = slot_glasses
allowed_roles = list("Security Officer","Head of Security","Warden")
-/datum/gear/prescription
+/datum/gear/prescriptionsun
display_name = "sunglasses, presciption"
path = /obj/item/clothing/glasses/sunglasses/prescription
cost = 2
@@ -276,18 +319,18 @@ var/global/list/gear_datums = list()
// Uniform slot
-/datum/gear/exec_suit
- display_name = "executive suit"
- path = /obj/item/clothing/under/suit_jacket/really_black
- slot = slot_w_uniform
- cost = 1
-
/datum/gear/blazer_blue
display_name = "blazer, blue"
path = /obj/item/clothing/under/blazer
slot = slot_w_uniform
cost = 1
+/datum/gear/cheongsam
+ display_name = "cheongsam, white"
+ path = /obj/item/clothing/under/cheongsam
+ slot = slot_w_uniform
+ cost = 1
+
/datum/gear/kilt
display_name = "kilt"
path = /obj/item/clothing/under/kilt
@@ -300,6 +343,17 @@ var/global/list/gear_datums = list()
slot = slot_w_uniform
cost = 1
+/datum/gear/blackfjumpsuit
+ display_name = "jumpsuit, female-black"
+ path = /obj/item/clothing/under/color/blackf
+ slot = slot_w_uniform
+ cost = 1
+/datum/gear/blackfjumpsuit
+ display_name = "jumpsuit, rainbow"
+ path = /obj/item/clothing/under/rainbow
+ slot = slot_w_uniform
+ cost = 1
+
/datum/gear/skirt_blue
display_name = "plaid skirt, blue"
path = /obj/item/clothing/under/dress/plaid_blue
@@ -324,6 +378,114 @@ var/global/list/gear_datums = list()
slot = slot_w_uniform
cost = 1
+/datum/gear/amishsuit
+ display_name = "suit, amish"
+ path = /obj/item/clothing/under/sl_suit
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/blacksuit
+ display_name = "suit, black"
+ path = /obj/item/clothing/under/suit_jacket
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/shinyblacksuit
+ display_name = "suit, shiny-black"
+ path = /obj/item/clothing/under/lawyer/black
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/bluesuit
+ display_name = "suit, blue"
+ path = /obj/item/clothing/under/lawyer/blue
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/burgundysuit
+ display_name = "suit, burgundy"
+ path = /obj/item/clothing/under/suit_jacket/burgundy
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/checkeredsuit
+ display_name = "suit, checkered"
+ path = /obj/item/clothing/under/suit_jacket/checkered
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/charcoalsuit
+ display_name = "suit, charcoal"
+ path = /obj/item/clothing/under/suit_jacket/charcoal
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/execsuit
+ display_name = "suit, executive"
+ path = /obj/item/clothing/under/suit_jacket/really_black
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/femaleexecsuit
+ display_name = "suit, female-executive"
+ path = /obj/item/clothing/under/suit_jacket/female
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/gentlesuit
+ display_name = "suit, gentlemen"
+ path = /obj/item/clothing/under/gentlesuit
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/navysuit
+ display_name = "suit, navy"
+ path = /obj/item/clothing/under/suit_jacket/navy
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/redsuit
+ display_name = "suit, red"
+ path = /obj/item/clothing/under/suit_jacket/red
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/redlawyer
+ display_name = "suit, lawyer-red"
+ path = /obj/item/clothing/under/lawyer/red
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/oldmansuit
+ display_name = "suit, old-man"
+ path = /obj/item/clothing/under/lawyer/oldman
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/purplesuit
+ display_name = "suit, purple"
+ path = /obj/item/clothing/under/lawyer/purpsuit
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/tansuit
+ display_name = "suit, tan"
+ path = /obj/item/clothing/under/suit_jacket/tan
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/whitesuit
+ display_name = "suit, white"
+ path = /obj/item/clothing/under/scratch
+ slot = slot_w_uniform
+ cost = 1
+
+/datum/gear/whitebluesuit
+ display_name = "suit, white-blue"
+ path = /obj/item/clothing/under/lawyer/bluesuit
+ slot = slot_w_uniform
+ cost = 1
+
/datum/gear/sundress
display_name = "sundress"
path = /obj/item/clothing/under/sundress
@@ -336,12 +498,6 @@ var/global/list/gear_datums = list()
slot = slot_w_uniform
cost = 1
-/datum/gear/cheongsam
- display_name = "cheongsam, white"
- path = /obj/item/clothing/under/cheongsam
- slot = slot_w_uniform
- cost = 1
-
/datum/gear/uniform_captain
display_name = "uniform, captain's dress"
path = /obj/item/clothing/under/dress/dress_cap
@@ -518,9 +674,9 @@ var/global/list/gear_datums = list()
cost = 2
slot = slot_wear_suit
-/datum/gear/blue_lawyer_jacket
- display_name = "suit jacket, blue"
- path = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
+/datum/gear/hazard_vest
+ display_name = "hazard vest"
+ path = /obj/item/clothing/suit/storage/hazardvest
cost = 2
slot = slot_wear_suit
@@ -548,6 +704,36 @@ var/global/list/gear_datums = list()
cost = 2
slot = slot_wear_suit
+/datum/gear/bluelabcoat
+ display_name = "labcoat, blue"
+ path = /obj/item/clothing/suit/storage/toggle/labcoat/blue
+ cost = 2
+ slot = slot_wear_suit
+
+/datum/gear/greenlabcoat
+ display_name = "labcoat, green"
+ path = /obj/item/clothing/suit/storage/toggle/labcoat/green
+ cost = 2
+ slot = slot_wear_suit
+
+/datum/gear/orangelabcoat
+ display_name = "labcoat, orange"
+ path = /obj/item/clothing/suit/storage/toggle/labcoat/orange
+ cost = 2
+ slot = slot_wear_suit
+
+/datum/gear/purplelabcoat
+ display_name = "labcoat, purple"
+ path = /obj/item/clothing/suit/storage/toggle/labcoat/purple
+ cost = 2
+ slot = slot_wear_suit
+
+/datum/gear/redlabcoat
+ display_name = "labcoat, red"
+ path = /obj/item/clothing/suit/storage/toggle/labcoat/red
+ cost = 2
+ slot = slot_wear_suit
+
/datum/gear/overalls
display_name = "overalls"
path = /obj/item/clothing/suit/apron/overalls
@@ -591,6 +777,18 @@ var/global/list/gear_datums = list()
slot = slot_wear_suit
// whitelisted = "Unathi" // You don't have a monopoly on a robe!
+/datum/gear/blue_lawyer_jacket
+ display_name = "suit jacket, blue"
+ path = /obj/item/clothing/suit/storage/toggle/lawyer/bluejacket
+ cost = 2
+ slot = slot_wear_suit
+
+/datum/gear/purple_lawyer_jacket
+ display_name = "suit jacket, purple"
+ path = /obj/item/clothing/suit/storage/lawyer/purpjacket
+ cost = 2
+ slot = slot_wear_suit
+
/datum/gear/suspenders
display_name = "suspenders"
path = /obj/item/clothing/suit/suspenders
@@ -630,18 +828,49 @@ var/global/list/gear_datums = list()
cost = 2
slot = slot_gloves
+/datum/gear/light_brown_gloves
+ display_name = "gloves, light-brown"
+ path = /obj/item/clothing/gloves/light_brown
+ cost = 2
+ slot = slot_gloves
+
/datum/gear/green_gloves
display_name = "gloves, green"
path = /obj/item/clothing/gloves/green
cost = 2
slot = slot_gloves
+/datum/gear/grey_gloves
+ display_name = "gloves, grey"
+ path = /obj/item/clothing/gloves/grey
+ cost = 2
+ slot = slot_gloves
+
+/datum/gear/latex_gloves
+ display_name = "gloves, latex"
+ path = /obj/item/clothing/gloves/latex
+ cost = 2
+ slot = slot_gloves
+
+
/datum/gear/orange_gloves
display_name = "gloves, orange"
path = /obj/item/clothing/gloves/orange
cost = 2
slot = slot_gloves
+/datum/gear/purple_gloves
+ display_name = "gloves, purple"
+ path = /obj/item/clothing/gloves/purple
+ cost = 2
+ slot = slot_gloves
+
+/datum/gear/rainbow_gloves
+ display_name = "gloves, rainbow"
+ path = /obj/item/clothing/gloves/rainbow
+ cost = 2
+ slot = slot_gloves
+
/datum/gear/red_gloves
display_name = "gloves, red"
path = /obj/item/clothing/gloves/red
@@ -728,6 +957,12 @@ var/global/list/gear_datums = list()
cost = 1
slot = slot_shoes
+/datum/gear/rainbow_shoes
+ display_name = "shoes, rainbow"
+ path = /obj/item/clothing/shoes/rainbow
+ cost = 1
+ slot = slot_shoes
+
/datum/gear/red_shoes
display_name = "shoes, red"
path = /obj/item/clothing/shoes/red
@@ -822,6 +1057,17 @@ var/global/list/gear_datums = list()
sort_category = "misc"
cost = 1
+/datum/gear/flask
+ display_name = "flask"
+ path = /obj/item/weapon/reagent_containers/food/drinks/flask/barflask
+ sort_category = "misc"
+ cost = 1
+
+/datum/gear/vacflask
+ display_name = "vacuum-flask"
+ path = /obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask
+ sort_category = "misc"
+ cost = 1
/datum/gear/blipstick
display_name = "lipstick, black"
path = /obj/item/weapon/lipstick/black
@@ -846,6 +1092,18 @@ var/global/list/gear_datums = list()
sort_category = "misc"
cost = 1
+/datum/gear/smokingpipe
+ display_name = "pipe, smoking"
+ path = /obj/item/clothing/mask/smokable/pipe
+ sort_category = "misc"
+ cost = 1
+
+/datum/gear/cornpipe
+ display_name = "pipe, corn"
+ path = /obj/item/clothing/mask/smokable/pipe/cobpipe
+ sort_category = "misc"
+ cost = 1
+
/datum/gear/matchbook
display_name = "matchbook"
path = /obj/item/weapon/storage/box/matches
@@ -858,6 +1116,12 @@ var/global/list/gear_datums = list()
sort_category = "misc"
cost = 1
+/datum/gear/zippo
+ display_name = "zippo"
+ path = /obj/item/weapon/flame/lighter/zippo
+ sort_category = "misc"
+ cost = 1
+
/*/datum/gear/combitool
display_name = "combi-tool"
path = /obj/item/weapon/combitool
@@ -865,6 +1129,12 @@ var/global/list/gear_datums = list()
// Stuff worn on the ears. Items here go in the "ears" sort_category but they must not use
// the slot_r_ear or slot_l_ear as the slot, or else players will spawn with no headset.
+/datum/gear/earmuffs
+ display_name = "earmuffs"
+ path = /obj/item/clothing/ears/earmuffs
+ cost = 1
+ sort_category = "ears"
+
/datum/gear/skrell_chain
display_name = "skrell headtail-wear, female, chain"
path = /obj/item/clothing/ears/skrell/chain
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index 08d4c4918a8..ae7b061e1ea 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -942,6 +942,13 @@
item_state = "gy_suit"
worn_state = "milohachert"
+/obj/item/clothing/under/fluff/john_saaland //GA Jumpsuit-John Saaland-Foxeye
+ name = "GA jumpsuit"
+ desc = "A tan jumpsuit, robustly constructed, with various velcro strips for name and ranking patches distributed over the torso and shoulders. Only one of these strips is in use, holding a patch with 'J. SAALAND' written on it in block lettering over the right breast pocket."
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "saaland"
+ item_state = "saaland_suit"
+ worn_state = "saaland"
/obj/item/clothing/under/fluff/kaine_kalim_2
name = "Formal Medical Uniform"
@@ -1441,3 +1448,23 @@
friend = M
break
..()
+
+///////////////////////////// Sabess - Maria's Heart-Shaped Locket ///////////////////////////////////
+
+/obj/item/weapon/fluff/mariafontaine
+ name = "Heart-Shaped Locket"
+ desc = " A silver, heart-shaped locket. It flips open to reveal two pictures, one of a young red-headed woman and one of a brunette of similar age. Small writing is etched onto the back, reading 'M+L'. Some may regard it as cheesy."
+ icon = 'icons/obj/custom_items.dmi'
+ icon_state = "mariaclosed"
+ item_state = "mariaclosed"
+
+obj/item/weapon/fluff/mariafontaine/attack_self(mob/user as mob)
+ if(src.icon_state == "mariaclosed")
+ src.icon_state = "mariaopen"
+ src.item_state = "mariaopen"
+ user << "You flip the locket open."
+
+ else
+ src.icon_state = "mariaclosed"
+ src.item_state = "mariaclosed"
+ user << "You flip the locket closed."
diff --git a/code/modules/events/spider_infestation.dm b/code/modules/events/spider_infestation.dm
index d96e4fb54c3..52c3fdf0489 100644
--- a/code/modules/events/spider_infestation.dm
+++ b/code/modules/events/spider_infestation.dm
@@ -1,14 +1,13 @@
/var/global/sent_spiders_to_station = 0
/datum/event/spider_infestation
- announceWhen = 400
-
+ announceWhen = 90
var/spawncount = 1
/datum/event/spider_infestation/setup()
- announceWhen = rand(announceWhen, announceWhen + 50)
- spawncount = rand(8, 12) //spiderlings only have a 50% chance to grow big and strong
+ announceWhen = rand(announceWhen, announceWhen + 60)
+ spawncount = rand(4 * severity, 6 * severity) //spiderlings only have a 50% chance to grow big and strong
sent_spiders_to_station = 0
/datum/event/spider_infestation/announce()
@@ -26,4 +25,4 @@
var/obj/vent = pick(vents)
new /obj/effect/spider/spiderling(vent.loc)
vents -= vent
- spawncount--
\ No newline at end of file
+ spawncount--
diff --git a/code/modules/mob/living/bot/floorbot.dm b/code/modules/mob/living/bot/floorbot.dm
index e729e3eb58c..08c5ac1c4bd 100644
--- a/code/modules/mob/living/bot/floorbot.dm
+++ b/code/modules/mob/living/bot/floorbot.dm
@@ -217,7 +217,7 @@
if(building == 1)
I = new /obj/item/stack/tile/plasteel(src)
else
- I = new /obj/item/stack/rods(src)
+ I = PoolOrNew(/obj/item/stack/rods, src)
A.attackby(I, src)
target = null
repairing = 0
diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm
new file mode 100644
index 00000000000..95ee36b1f6b
--- /dev/null
+++ b/code/modules/mob/living/carbon/resist.dm
@@ -0,0 +1,170 @@
+
+/mob/living/carbon/process_resist()
+
+ //drop && roll
+ if(on_fire)
+ fire_stacks -= 2 //reduced
+ Weaken(3)
+ spin(32,2)
+ visible_message(
+ "[src] rolls on the floor, trying to put themselves out!",
+ "You stop, drop, and roll!"
+ )
+ sleep(30)
+ if(fire_stacks <= 0)
+ visible_message(
+ "[src] has successfully extinguished themselves!",
+ "You extinguish yourself."
+ )
+ ExtinguishMob()
+ return
+
+ if(handcuffed)
+ spawn() escape_handcuffs()
+ else if(legcuffed)
+ spawn() escape_legcuffs()
+
+ ..()
+
+/mob/living/carbon/proc/escape_handcuffs()
+ if(!(last_special <= world.time)) return
+
+ next_move = world.time + 100
+ last_special = world.time + 100
+
+ if(can_break_cuffs()) //Don't want to do a lot of logic gating here.
+ break_handcuffs()
+ return
+
+ var/obj/item/weapon/handcuffs/HC = handcuffed
+
+ //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/handcuffs type
+ var/breakouttime = 1200
+ var/displaytime = 2 //Minutes to display in the "this will take X minutes."
+ //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
+ if(istype(HC))
+ breakouttime = HC.breakouttime
+ displaytime = breakouttime / 600 //Minutes
+
+ visible_message(
+ "[src] attempts to remove \the [HC]!",
+ "You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
+ )
+
+ if(do_after(src, breakouttime))
+ if(!handcuffed || buckled)
+ return
+ visible_message(
+ "[src] manages to remove \the [handcuffed]!",
+ "You successfully remove \the [handcuffed]."
+ )
+ drop_from_inventory(handcuffed)
+
+/mob/living/carbon/proc/escape_legcuffs()
+ if(!(last_special <= world.time)) return
+
+ next_move = world.time + 100
+ last_special = world.time + 100
+
+ if(can_break_cuffs()) //Don't want to do a lot of logic gating here.
+ break_legcuffs()
+ return
+
+ var/obj/item/weapon/legcuffs/HC = legcuffed
+
+ //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type
+ var/breakouttime = 1200
+ var/displaytime = 2 //Minutes to display in the "this will take X minutes."
+ //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future...
+ if(istype(HC))
+ breakouttime = HC.breakouttime
+ displaytime = breakouttime / 600 //Minutes
+
+ visible_message(
+ "[usr] attempts to remove \the [HC]!",
+ "You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
+ )
+
+ if(do_after(src, breakouttime))
+ if(!legcuffed || buckled)
+ return
+ visible_message(
+ "[src] manages to remove \the [legcuffed]!",
+ "You successfully remove \the [legcuffed]."
+ )
+
+ drop_from_inventory(legcuffed)
+ legcuffed = null
+ update_inv_legcuffed()
+
+/mob/living/carbon/proc/can_break_cuffs()
+ if(HULK in mutations)
+ return 1
+
+/mob/living/carbon/proc/break_handcuffs()
+ visible_message(
+ "[src] is trying to break \the [handcuffed]!",
+ "You attempt to break your [handcuffed.name]. (This will take around 5 seconds and you need to stand still)"
+ )
+
+ if(do_after(src, 50))
+ if(!handcuffed || buckled)
+ return
+
+ visible_message(
+ "[src] manages to break \the [handcuffed]!",
+ "You successfully break your [handcuffed.name]."
+ )
+
+ say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
+
+ del(handcuffed)
+ handcuffed = null
+ if(buckled && buckled.buckle_require_restraints)
+ buckled.unbuckle_mob()
+ update_inv_handcuffed()
+
+/mob/living/carbon/proc/break_legcuffs()
+ src << "You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)"
+ visible_message("[src] is trying to break the legcuffs!")
+
+ if(do_after(src, 50))
+ if(!legcuffed || buckled)
+ return
+
+ visible_message(
+ "[src] manages to break the legcuffs!",
+ "You successfully break your legcuffs."
+ )
+
+ say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
+
+ del(legcuffed)
+ legcuffed = null
+ update_inv_legcuffed()
+
+/mob/living/carbon/human/can_break_cuffs()
+ if(species.can_shred(src,1))
+ return 1
+ return ..()
+
+/mob/living/carbon/escape_buckle()
+ if(!buckled) return
+ if(!(last_special <= world.time)) return
+
+ if(!restrained())
+ ..()
+ else
+ next_move = world.time + 100
+ last_special = world.time + 100
+ visible_message(
+ "[usr] attempts to unbuckle themself!",
+ "You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
+ )
+
+ if(do_after(usr, 1200))
+ if(!buckled)
+ return
+ visible_message("[usr] manages to unbuckle themself!",
+ "You successfully unbuckle yourself.")
+ buckled.user_unbuckle_mob(src)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 5f620187230..d723cb5556a 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -571,284 +571,84 @@ default behaviour is:
set name = "Resist"
set category = "IC"
- if(usr.stat || !isliving(usr) || usr.next_move > world.time)
- return
+ if(can_resist())
+ next_move = world.time + 20
+ process_resist()
- usr.next_move = world.time + 20
-
- var/mob/living/L = usr
+/mob/living/proc/can_resist()
+ //need to allow !canmove, or otherwise neck grabs can't be resisted
+ //so just check weakened instead.
+ if(stat || weakened)
+ return 0
+ if(next_move > world.time)
+ return 0
+ return 1
+/mob/living/proc/process_resist()
//Getting out of someone's inventory.
- if(istype(src.loc,/obj/item/weapon/holder))
- var/obj/item/weapon/holder/H = src.loc //Get our item holder.
- var/mob/M = H.loc //Get our mob holder (if any).
-
- if(istype(M))
- M.drop_from_inventory(H)
- M << "[H] wriggles out of your grip!"
- src << "You wriggle out of [M]'s grip!"
- else if(istype(H.loc,/obj/item))
- src << "You struggle free of [H.loc]."
- H.loc = get_turf(H)
-
- if(istype(M))
- for(var/atom/A in M.contents)
- if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
- return
-
- M.status_flags &= ~PASSEMOTES
+ if(istype(src.loc, /obj/item/weapon/holder))
+ escape_inventory(src.loc)
return
- //Resisting control by an alien mind.
- if(istype(src.loc,/mob/living/simple_animal/borer))
- var/mob/living/simple_animal/borer/B = src.loc
- var/mob/living/captive_brain/H = src
-
- H << "You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)."
- B.host << "You feel the captive mind of [src] begin to resist your control."
-
- spawn(rand(200,250)+B.host.brainloss)
-
- if(!B || !B.controlling)
- return
-
- B.host.adjustBrainLoss(rand(5,10))
- H << "With an immense exertion of will, you regain control of your body!"
- B.host << "You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you."
-
- B.detatch()
-
- verbs -= /mob/living/carbon/proc/release_control
- verbs -= /mob/living/carbon/proc/punish_host
- verbs -= /mob/living/carbon/proc/spawn_larvae
-
- return
-
//resisting grabs (as if it helps anyone...)
- if ((!( L.stat ) && !( L.restrained() )))
- var/resisting = 0
- for(var/obj/O in L.requests)
- L.requests.Remove(O)
- qdel(O)
- resisting++
- for(var/obj/item/weapon/grab/G in usr.grabbed_by)
- resisting++
- switch(G.state)
- if(GRAB_PASSIVE)
- qdel(G)
- if(GRAB_AGGRESSIVE)
- if(prob(60)) //same chance of breaking the grab as disarm
- L.visible_message("[L] has broken free of [G.assailant]'s grip!")
- qdel(G)
- if(GRAB_NECK)
- //If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun.
- if (((world.time - G.assailant.l_move_time < 30 || !L.stunned) && prob(15)) || prob(3))
- L.visible_message("[L] has broken free of [G.assailant]'s headlock!")
- qdel(G)
- if(resisting)
- L.visible_message("[L] resists!")
-
+ if (!restrained())
+ resist_grab()
//unbuckling yourself
- if(L.buckled && (L.last_special <= world.time) )
- if(iscarbon(L))
- var/mob/living/carbon/C = L
- if( C.handcuffed )
- C.next_move = world.time + 100
- C.last_special = world.time + 100
- C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)"
- for(var/mob/O in viewers(L))
- O.show_message("\red [usr] attempts to unbuckle themself!", 1)
- spawn(0)
- if(do_after(usr, 1200))
- if(!C.buckled)
- return
- for(var/mob/O in viewers(C))
- O.show_message("\red [usr] manages to unbuckle themself!", 1)
- C << "\blue You successfully unbuckle yourself."
- C.buckled.user_unbuckle_mob(C)
- else
- L.buckled.user_unbuckle_mob(L)
+ if(buckled)
+ spawn() escape_buckle()
//Breaking out of a locker?
- else if( src.loc && (istype(src.loc, /obj/structure/closet)) )
- var/breakout_time = 2 //2 minutes by default
+ if( src.loc && (istype(src.loc, /obj/structure/closet)) )
+ var/obj/structure/closet/C = loc
+ spawn() C.mob_breakout(src)
- var/obj/structure/closet/C = L.loc
- if(C.opened)
- return //Door's open... wait, why are you in it's contents then?
- if(istype(L.loc, /obj/structure/closet/secure_closet))
- var/obj/structure/closet/secure_closet/SC = L.loc
- if(!SC.locked && !SC.welded)
- return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist'
- else
- if(!C.welded)
- return //closed but not welded...
- // else Meh, lets just keep it at 2 minutes for now
- // breakout_time++ //Harder to get out of welded lockers than locked lockers
+/mob/living/proc/escape_inventory(obj/item/weapon/holder/H)
+ if(H != src.loc) return
+
+ var/mob/M = H.loc //Get our mob holder (if any).
- //okay, so the closet is either welded or locked... resist!!!
- usr.next_move = world.time + 100
- L.last_special = world.time + 100
- L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)"
- for(var/mob/O in viewers(usr.loc))
- O.show_message("\red The [L.loc] begins to shake violently!", 1)
+ if(istype(M))
+ M.drop_from_inventory(H)
+ M << "[H] wriggles out of your grip!"
+ src << "You wriggle out of [M]'s grip!"
+ else if(istype(H.loc,/obj/item))
+ src << "You struggle free of [H.loc]."
+ H.loc = get_turf(H)
+ if(istype(M))
+ for(var/atom/A in M.contents)
+ if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder))
+ return
- spawn(0)
- if(do_after(usr,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds
- if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened
- return
+ M.status_flags &= ~PASSEMOTES
- //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'...
- if(istype(L.loc, /obj/structure/closet/secure_closet))
- var/obj/structure/closet/secure_closet/SC = L.loc
- if(!SC.locked && !SC.welded)
- return
- else
- if(!C.welded)
- return
+/mob/living/proc/escape_buckle()
+ if(buckled)
+ buckled.user_unbuckle_mob(src)
- //Well then break it!
- if(istype(usr.loc, /obj/structure/closet/secure_closet))
- var/obj/structure/closet/secure_closet/SC = L.loc
- SC.desc = "It appears to be broken."
- SC.icon_state = SC.icon_off
- flick(SC.icon_broken, SC)
- sleep(10)
- flick(SC.icon_broken, SC)
- sleep(10)
- SC.broken = 1
- SC.locked = 0
- SC.update_icon()
- usr << "\red You successfully break out!"
- for(var/mob/O in viewers(L.loc))
- O.show_message("\red \the [usr] successfully broke out of \the [SC]!", 1)
- if(istype(SC.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace)
- var/obj/structure/bigDelivery/BD = SC.loc
- BD.attack_hand(usr)
- SC.open()
- else
- C.welded = 0
- C.update_icon()
- usr << "\red You successfully break out!"
- for(var/mob/O in viewers(L.loc))
- O.show_message("\red \the [usr] successfully broke out of \the [C]!", 1)
- if(istype(C.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above
- var/obj/structure/bigDelivery/BD = C.loc
- BD.attack_hand(usr)
- C.open()
-
- //drop && roll or breaking out of handcuffs
- else if(iscarbon(L))
- var/mob/living/carbon/CM = L
- if(CM.on_fire && CM.canmove)
- CM.fire_stacks -= 5
- CM.Weaken(3)
- CM.spin(32,2)
- CM.visible_message("[CM] rolls on the floor, trying to put themselves out!", \
- "You stop, drop, and roll!")
- sleep(30)
- if(fire_stacks <= 0)
- CM.visible_message("[CM] has successfully extinguished themselves!", \
- "You extinguish yourself.")
- ExtinguishMob()
- return
- if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time))
- CM.next_move = world.time + 100
- CM.last_special = world.time + 100
-
- var/can_break_cuffs
- if(HULK in usr.mutations)
- can_break_cuffs = 1
- else if(istype(CM,/mob/living/carbon/human))
- var/mob/living/carbon/human/H = CM
- if(H.species.can_shred(H,1))
- can_break_cuffs = 1
-
- if(can_break_cuffs) //Don't want to do a lot of logic gating here.
- usr << "\red You attempt to break your handcuffs. (This will take around 5 seconds and you need to stand still)"
- for(var/mob/O in viewers(CM))
- O.show_message(text("\red [] is trying to break the handcuffs!", CM), 1)
- spawn(0)
- if(do_after(CM, 50))
- if(!CM.handcuffed || CM.buckled)
- return
- for(var/mob/O in viewers(CM))
- O.show_message(text("\red [] manages to break the handcuffs!", CM), 1)
- CM << "\red You successfully break your handcuffs."
- CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
- qdel(CM.handcuffed)
- CM.handcuffed = null
- if(buckled && buckled.buckle_require_restraints)
- buckled.unbuckle_mob()
- CM.update_inv_handcuffed()
- else
- var/obj/item/weapon/handcuffs/HC = CM.handcuffed
- var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/handcuffs type
- var/displaytime = 2 //Minutes to display in the "this will take X minutes."
- if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future...
- breakouttime = HC.breakouttime
- displaytime = breakouttime / 600 //Minutes
- CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
- for(var/mob/O in viewers(CM))
- O.show_message( "\red [usr] attempts to remove \the [HC]!", 1)
- spawn(0)
- if(do_after(CM, breakouttime))
- if(!CM.handcuffed || CM.buckled)
- return // time leniency for lag which also might make this whole thing pointless but the server
- for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink
- O.show_message("\red [CM] manages to remove the handcuffs!", 1)
- CM << "\blue You successfully remove \the [CM.handcuffed]."
- CM.drop_from_inventory(CM.handcuffed)
-
- else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time))
- CM.next_move = world.time + 100
- CM.last_special = world.time + 100
-
- var/can_break_cuffs
- if(HULK in usr.mutations)
- can_break_cuffs = 1
- else if(istype(CM,/mob/living/carbon/human))
- var/mob/living/carbon/human/H = CM
- if(H.species.can_shred(H,1))
- can_break_cuffs = 1
-
- if(can_break_cuffs) //Don't want to do a lot of logic gating here.
- usr << "\red You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)"
- for(var/mob/O in viewers(CM))
- O.show_message(text("\red [] is trying to break the legcuffs!", CM), 1)
- spawn(0)
- if(do_after(CM, 50))
- if(!CM.legcuffed || CM.buckled)
- return
- for(var/mob/O in viewers(CM))
- O.show_message(text("\red [] manages to break the legcuffs!", CM), 1)
- CM << "\red You successfully break your legcuffs."
- CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
- qdel(CM.legcuffed)
- CM.legcuffed = null
- CM.update_inv_legcuffed()
- else
- var/obj/item/weapon/legcuffs/HC = CM.legcuffed
- var/breakouttime = 1200 //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type
- var/displaytime = 2 //Minutes to display in the "this will take X minutes."
- if(istype(HC)) //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future...
- breakouttime = HC.breakouttime
- displaytime = breakouttime / 600 //Minutes
- CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)"
- for(var/mob/O in viewers(CM))
- O.show_message( "\red [usr] attempts to remove \the [HC]!", 1)
- spawn(0)
- if(do_after(CM, breakouttime))
- if(!CM.legcuffed || CM.buckled)
- return // time leniency for lag which also might make this whole thing pointless but the server
- for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink
- O.show_message("\red [CM] manages to remove the legcuffs!", 1)
- CM << "\blue You successfully remove \the [CM.legcuffed]."
- CM.drop_from_inventory(CM.legcuffed)
- CM.legcuffed = null
- CM.update_inv_legcuffed()
+/mob/living/proc/resist_grab()
+ var/resisting = 0
+ for(var/obj/O in requests)
+ requests.Remove(O)
+ qdel(O)
+ resisting++
+ for(var/obj/item/weapon/grab/G in grabbed_by)
+ resisting++
+ switch(G.state)
+ if(GRAB_PASSIVE)
+ qdel(G)
+ if(GRAB_AGGRESSIVE)
+ if(prob(60)) //same chance of breaking the grab as disarm
+ visible_message("[src] has broken free of [G.assailant]'s grip!")
+ qdel(G)
+ if(GRAB_NECK)
+ //If the you move when grabbing someone then it's easier for them to break free. Same if the affected mob is immune to stun.
+ if (((world.time - G.assailant.l_move_time < 30 || !stunned) && prob(15)) || prob(3))
+ visible_message("[src] has broken free of [G.assailant]'s headlock!")
+ qdel(G)
+ if(resisting)
+ visible_message("[src] resists!")
/mob/living/verb/lay_down()
set name = "Rest"
diff --git a/code/modules/mob/living/simple_animal/borer/borer_captive.dm b/code/modules/mob/living/simple_animal/borer/borer_captive.dm
index 156d3627733..c0b2999b2fe 100644
--- a/code/modules/mob/living/simple_animal/borer/borer_captive.dm
+++ b/code/modules/mob/living/simple_animal/borer/borer_captive.dm
@@ -32,4 +32,31 @@
M << "The captive mind of [src] whispers, \"[message]\""
/mob/living/captive_brain/emote(var/message)
- return
\ No newline at end of file
+ return
+
+/mob/living/captive_brain/can_resist()
+ return !(stat || next_move > world.time)
+
+/mob/living/captive_brain/process_resist()
+ //Resisting control by an alien mind.
+ if(istype(src.loc,/mob/living/simple_animal/borer))
+ var/mob/living/simple_animal/borer/B = src.loc
+ var/mob/living/captive_brain/H = src
+
+ H << "You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)."
+ B.host << "You feel the captive mind of [src] begin to resist your control."
+
+ spawn(rand(200,250)+B.host.brainloss)
+ if(!B || !B.controlling) return
+
+ B.host.adjustBrainLoss(rand(5,10))
+ H << "With an immense exertion of will, you regain control of your body!"
+ B.host << "You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you."
+ B.detatch()
+ verbs -= /mob/living/carbon/proc/release_control
+ verbs -= /mob/living/carbon/proc/punish_host
+ verbs -= /mob/living/carbon/proc/spawn_larvae
+
+ return
+
+ ..()
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index 5b207ce2a73..ad41fc28aad 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -56,7 +56,10 @@
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
- name = "[name] ([rand(1, 1000)])"
+ if(name == initial(name))
+ name = "[name] ([rand(1, 1000)])"
+ real_name = name
+
if(!body_color)
body_color = pick( list("brown","gray","white") )
icon_state = "mouse_[body_color]"
@@ -112,5 +115,10 @@
name = "Tom"
desc = "Jerry the cat is not amused."
+/mob/living/simple_animal/mouse/brown/Tom/New()
+ ..()
+ // Change my name back, don't want to be named Tom (666)
+ name = initial(name)
+
/mob/living/simple_animal/mouse/can_use_vents()
- return
\ No newline at end of file
+ return
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm
index 15b6ddc0c62..a2e9e21f75c 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm
@@ -183,16 +183,16 @@
step_to(O, get_turf(pick(view(7, src))))
//rods
- O = new /obj/item/stack/rods(src.loc)
+ O = PoolOrNew(/obj/item/stack/rods, src.loc)
step_to(O, get_turf(pick(view(7, src))))
if(prob(75))
- O = new /obj/item/stack/rods(src.loc)
+ O = PoolOrNew(/obj/item/stack/rods, src.loc)
step_to(O, get_turf(pick(view(7, src))))
if(prob(50))
- O = new /obj/item/stack/rods(src.loc)
+ O = PoolOrNew(/obj/item/stack/rods, src.loc)
step_to(O, get_turf(pick(view(7, src))))
if(prob(25))
- O = new /obj/item/stack/rods(src.loc)
+ O = PoolOrNew(/obj/item/stack/rods, src.loc)
step_to(O, get_turf(pick(view(7, src))))
//plasteel
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index 36065960dc1..73c5ee1de7b 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -103,7 +103,7 @@
affecting.loc = assailant.loc
if(state >= GRAB_NECK)
- affecting.Stun(1)
+ affecting.Stun(3)
if(isliving(affecting))
var/mob/living/L = affecting
L.adjustOxyLoss(1)
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 2bf4516b7ce..ef90f7aaff3 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -68,7 +68,7 @@
if(!new_text)
return
- free_space -= length(strip_html_properly(new_text, 0))
+ free_space -= length(strip_html_properly(new_text))
/obj/item/weapon/paper/examine(mob/user)
..()
@@ -95,15 +95,15 @@
usr << "You cut yourself on the paper."
return
var/n_name = sanitizeSafe(input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text, MAX_NAME_LEN)
-
+
// We check loc one level up, so we can rename in clipboards and such. See also: /obj/item/weapon/photo/rename()
if((loc == usr || loc.loc && loc.loc == usr) && usr.stat == 0 && n_name)
name = n_name
if(n_name != "paper")
desc = "This is a paper titled '" + name + "'."
-
+
add_fingerprint(usr)
- return
+ return
/obj/item/weapon/paper/attack_self(mob/living/user as mob)
user.examinate(src)
@@ -343,7 +343,7 @@
usr << "There isn't enough space left on \the [src] to write anything."
return
- var/t = strip_html_properly(input("Enter what you want to write:", "Write", null, null) as message)
+ var/t = sanitize(input("Enter what you want to write:", "Write", null, null) as message, free_space, extra = 0)
if(!t)
return
@@ -450,7 +450,7 @@
user << "You clip the [P.name] to [(src.name == "paper") ? "the paper" : src.name]."
src.loc = B
P.loc = B
-
+
B.pages.Add(src)
B.pages.Add(P)
B.update_icon()
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index a572d2c8e1e..6bdef2c273c 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -308,12 +308,6 @@ var/list/solars_list = list()
/obj/machinery/power/solar_control/drain_power()
return -1
-/obj/machinery/power/solar_control/New()
- ..()
- if(ticker)
- initialize()
- connect_to_network()
-
/obj/machinery/power/solar_control/Destroy()
for(var/obj/machinery/power/solar/M in connected_panels)
M.unset_control()
@@ -368,6 +362,7 @@ var/list/solars_list = list()
..()
if(!powernet) return
set_panels(cdir)
+ connect_to_network()
/obj/machinery/power/solar_control/update_icon()
if(stat & BROKEN)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index bb9c5516d9b..0349020e380 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -1,12 +1,12 @@
/*
Defines a firing mode for a gun.
-
+
burst number of shots fired when the gun is used
burst_delay tick delay between shots in a burst
fire_delay tick delay after the last shot before the gun may be used again
move_delay tick delay after the last shot before the player may move
dispersion dispersion of each shot in the burst measured in tiles per 7 tiles angle ratio
- accuracy accuracy modifier applied to each shot in tiles.
+ accuracy accuracy modifier applied to each shot in tiles.
applied on top of the base weapon accuracy.
*/
/datum/firemode
@@ -18,7 +18,7 @@
var/list/accuracy = list(0)
var/list/dispersion = list(0)
-//using a list makes defining fire modes for new guns much nicer,
+//using a list makes defining fire modes for new guns much nicer,
//however we convert the lists to datums in part so that firemodes can be VVed if necessary.
/datum/firemode/New(list/properties = null)
..()
@@ -65,7 +65,7 @@
var/sel_mode = 1 //index of the currently selected mode
var/list/firemodes = list()
var/firemode_type = /datum/firemode //for subtypes that need custom firemode data
-
+
//aiming system stuff
var/keep_aim = 1 //1 for keep shooting until aim is lowered
//0 for one bullet after tarrget moves and aim is lowered
@@ -82,7 +82,7 @@
else
for(var/i in 1 to firemodes.len)
firemodes[i] = new firemode_type(firemodes[i])
-
+
if(isnull(scoped_accuracy))
scoped_accuracy = accuracy
@@ -94,9 +94,9 @@
return 0
if(!user.IsAdvancedToolUser())
return 0
-
+
var/mob/living/M = user
-
+
if(HULK in M.mutations)
M << "Your fingers are much too large for the trigger guard!"
return 0
@@ -106,7 +106,7 @@
if(process_projectile(P, user, user, pick("l_foot", "r_foot")))
handle_post_fire(user, user)
user.visible_message(
- "[user] shoots \himself in the foot with \the [src]!",
+ "[user] shoots \himself in the foot with \the [src]!",
"You shoot yourself in the foot with \the [src]!"
)
M.drop_item()
@@ -159,7 +159,7 @@
if (world.time % 3) //to prevent spam
user << "[src] is not ready to fire again!"
return
-
+
//unpack firemode data
var/datum/firemode/firemode = firemodes[sel_mode]
var/_burst = firemode.burst
@@ -179,27 +179,27 @@
if(!projectile)
handle_click_empty(user)
break
-
+
var/acc = firemode.accuracy[min(i, firemode.accuracy.len)]
var/disp = firemode.dispersion[min(i, firemode.dispersion.len)]
process_accuracy(projectile, user, target, acc, disp)
-
- if(pointblank)
+
+ if(pointblank)
process_point_blank(projectile, user, target)
-
+
if(process_projectile(projectile, user, target, user.zone_sel.selecting, clickparams))
handle_post_fire(user, target, pointblank, reflex)
update_icon()
-
+
if(i < _burst)
sleep(_burst_delay)
-
- if(!target)
+
+ if(!(target && target.loc))
target = targloc
pointblank = 0
-
+
update_held_icon()
-
+
//update timing
user.next_move = world.time + 4
if(user.client) user.client.move_delay = world.time + _move_delay
@@ -213,7 +213,7 @@
/obj/item/weapon/gun/proc/can_hit(atom/target as mob, var/mob/living/user as mob)
if(!special_check(user))
return 2
- //just assume we can shoot through glass and stuff. No big deal, the player can just choose to not target someone
+ //just assume we can shoot through glass and stuff. No big deal, the player can just choose to not target someone
//on the other side of a window if it makes a difference. Or if they run behind a window, too bad.
return check_trajectory(target, user)
@@ -231,7 +231,7 @@
playsound(user, fire_sound, 10, 1)
else
playsound(user, fire_sound, 50, 1)
-
+
if(reflex)
user.visible_message(
"\The [user] fires \the [src][pointblank ? " point blank at \the [target]":""] by reflex!",
@@ -244,7 +244,7 @@
"You fire \the [src]!",
"You hear a [fire_sound_text]!"
)
-
+
if(recoil)
spawn()
shake_camera(user, recoil+1, recoil)
@@ -258,7 +258,7 @@
//default point blank multiplier
var/damage_mult = 1.3
-
+
//determine multiplier due to the target being grabbed
if(ismob(target))
var/mob/M = target
@@ -276,11 +276,11 @@
var/obj/item/projectile/P = projectile
if(!istype(P))
return //default behaviour only applies to true projectiles
-
+
//Accuracy modifiers
P.accuracy = accuracy + acc_mod
P.dispersion = dispersion
-
+
//accuracy bonus from aiming
if (aim_targets && (target in aim_targets))
//If you aim at someone beforehead, it'll hit more often.
@@ -293,10 +293,10 @@
var/obj/item/projectile/P = projectile
if(!istype(P))
return 0 //default behaviour only applies to true projectiles
-
+
if(params)
P.set_clickpoint(params)
-
+
//shooting while in shock
var/x_offset = 0
var/y_offset = 0
@@ -317,7 +317,7 @@
if(!ishuman(user))
return
var/mob/living/carbon/human/M = user
-
+
mouthshoot = 1
M.visible_message("\red [user] sticks their gun in their mouth, ready to pull the trigger...")
if(!do_after(user, 40))
@@ -357,7 +357,7 @@
var/zoom_offset = round(world.view * zoom_amount)
var/view_size = round(world.view + zoom_amount)
var/scoped_accuracy_mod = zoom_offset
-
+
zoom(zoom_offset, view_size)
if(zoom)
accuracy = scoped_accuracy + scoped_accuracy_mod
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 1a52045159f..8f24273eb29 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -35,7 +35,7 @@
var/accuracy = 0
var/dispersion = 0.0
-
+
var/damage = 10
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
@@ -103,7 +103,7 @@
p_x = text2num(mouse_control["icon-x"])
if(mouse_control["icon-y"])
p_y = text2num(mouse_control["icon-y"])
-
+
//randomize clickpoint a bit based on dispersion
if(dispersion)
var/radius = round((dispersion*0.443)*world.icon_size*0.8) //0.443 = sqrt(pi)/4 = 2a, where a is the side length of a square that shares the same area as a circle with diameter = dispersion
@@ -274,7 +274,7 @@
//plot the initial trajectory
setup_trajectory()
- spawn while(src)
+ spawn while(src && src.loc)
if(kill_count-- < 1)
on_impact(src.loc) //for any final impact behaviours
qdel(src)
@@ -304,8 +304,8 @@
if(!bumped && !isturf(original))
if(loc == get_turf(original))
if(!(original in permutated))
- Bump(original)
-
+ if(Bump(original))
+ return
if(!hitscan)
sleep(step_delay) //add delay between movement iterations if it's not a hitscan weapon
@@ -325,7 +325,7 @@
// plot the initial trajectory
trajectory = new()
trajectory.setup(starting, original, pixel_x, pixel_y, angle_offset=offset)
-
+
// generate this now since all visual effects the projectile makes can use it
effect_transform = new()
effect_transform.Scale(trajectory.return_hypotenuse(), 1)
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 15a1398d392..0e0da75e2a6 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -1,11 +1,11 @@
/datum/reagent
var/name = "Reagent"
var/id = "reagent"
- var/description = "A non-descript chemical."
+ var/description = "A non-descript chemical."
var/datum/reagents/holder = null
var/reagent_state = SOLID
var/list/data = null
- var/volume = 0
+ var/volume = 0
var/metabolism = REM // This would be 0.2 normally
var/ingest_met = 0
var/touch_met = 0
@@ -13,11 +13,11 @@
var/max_dose = 0
var/overdose = 0
var/scannable = 0 // Shows up on health analyzers.
- var/affects_dead = 0
+ var/affects_dead = 0
var/glass_icon_state = null
var/glass_name = null
var/glass_desc = null
- var/glass_center_of_mass = null
+ var/glass_center_of_mass = null
var/color = "#000000"
var/color_weight = 1
@@ -86,11 +86,11 @@
return data.Copy()
else if(data)
return data
- return null
+ return null
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
..()
- holder = null
+ holder = null
/* DEPRECATED - TODO: REMOVE EVERYWHERE */
@@ -102,3 +102,10 @@
/datum/reagent/proc/reaction_mob(var/mob/target)
touch_mob(target)
+
+/datum/reagent/woodpulp
+ name = "Wood Pulp"
+ id = "woodpulp"
+ description = "A mass of wood fibers."
+ reagent_state = LIQUID
+ color = "#B97A57"
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index 220bad857b7..d9b90f3de48 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -558,7 +558,6 @@
glass_name = "cup of coffee"
glass_desc = "Don't drop it, or you'll send scalding liquid and glass shards everywhere."
-
/datum/reagent/drink/coffee/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed, var/location)
..()
if(alien == IS_DIONA)
@@ -1012,7 +1011,7 @@
M.dizziness = max(0, M.dizziness - 5)
M.drowsyness = max(0, M.drowsyness - 3)
M.sleeping = max(0, M.sleeping - 2)
- if (M.bodytemperature > 310)
+ if(M.bodytemperature > 310)
M.bodytemperature = max(310, M.bodytemperature - (5 * TEMPERATURE_DAMAGE_COEFFICIENT))
M.make_jittery(5)
@@ -1363,9 +1362,9 @@
glass_name = "glass of Changeling Sting"
glass_desc = "A stingy drink."
-/datum/reagent/ethanol/classicmartini
+/datum/reagent/ethanol/martini
name = "Classic Martini"
- id = "classicmartini"
+ id = "martini"
description = "Vermouth with Gin. Not quite how 007 enjoyed it, but still delicious."
color = "#664300"
strength = 25
@@ -1562,16 +1561,16 @@
glass_center_of_mass = list("x"=15, "y"=10)
/datum/reagent/ethanol/irish_cream
- name = "Irish Cream"
- id = "irishcream"
- description = "Whiskey-imbued cream, what else would you expect from the Irish."
- color = "#664300"
- strength = 25
+ name = "Irish Cream"
+ id = "irishcream"
+ description = "Whiskey-imbued cream, what else would you expect from the Irish."
+ color = "#664300"
+ strength = 25
- glass_icon_state = "irishcreamglass"
- glass_name = "glass of Irish cream"
- glass_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?"
- glass_center_of_mass = list("x"=16, "y"=9)
+ glass_icon_state = "irishcreamglass"
+ glass_name = "glass of Irish cream"
+ glass_desc = "It's cream, mixed with whiskey. What else would you expect from the Irish?"
+ glass_center_of_mass = list("x"=16, "y"=9)
/datum/reagent/ethanol/longislandicedtea
name = "Long Island Iced Tea"
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
index 8a5396cc515..dc26aa58e31 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Medicine.dm
@@ -94,7 +94,7 @@
overdose = REAGENTS_OVERDOSE * 0.5
scannable = 1
-/datum/reagent/dexalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/location)
+/datum/reagent/dexalinp/affect_blood(var/mob/living/carbon/M, var/alien, var/removed, var/location)
if(alien == IS_VOX)
M.adjustToxLoss(removed * 9)
else if(alien != IS_DIONA)
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
index 442a75803f9..97e361e56b6 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
@@ -215,6 +215,11 @@
if(M.mind && cult.is_antagonist(M.mind) && prob(10))
cult.remove_antagonist(M.mind)
+/datum/reagent/water/holywater/touch_turf(var/turf/T)
+ if(volume >= 5)
+ T.holy = 1
+ return
+
/datum/reagent/ammonia
name = "Ammonia"
id = "ammonia"
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
index a2ec160c17c..46bf3698f22 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm
@@ -1,4 +1,5 @@
/* Toxins, poisons, venoms */
+
/datum/reagent/toxin
name = "Toxin"
id = "toxin"
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 0b4cd1a608a..eb763258326 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -15,13 +15,15 @@
var/tag_x
attack_hand(mob/user as mob)
+ unwrap()
+
+ proc/unwrap()
if(wrapped) //sometimes items can disappear. For example, bombs. --rastaf0
wrapped.loc = (get_turf(src.loc))
if(istype(wrapped, /obj/structure/closet))
var/obj/structure/closet/O = wrapped
O.welded = 0
qdel(src)
- return
attackby(obj/item/W as obj, mob/user as mob)
if(istype(W, /obj/item/device/destTagger))
diff --git a/code/modules/research/xenoarchaeology/finds/finds.dm b/code/modules/research/xenoarchaeology/finds/finds.dm
index 5855ee7d735..521da5e4aad 100644
--- a/code/modules/research/xenoarchaeology/finds/finds.dm
+++ b/code/modules/research/xenoarchaeology/finds/finds.dm
@@ -323,7 +323,7 @@
apply_material_decorations = 0
if(23)
apply_prefix = 0
- new_item = new /obj/item/stack/rods(src.loc)
+ new_item = PoolOrNew(/obj/item/stack/rods, src.loc)
apply_image_decorations = 0
apply_material_decorations = 0
if(24)
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 164f486b337..e733ad8df44 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -201,8 +201,8 @@
src.visible_message("\red [src] blows apart!", 1)
var/turf/Tsec = get_turf(src)
- new /obj/item/stack/rods(Tsec)
- new /obj/item/stack/rods(Tsec)
+ PoolOrNew(/obj/item/stack/rods, Tsec)
+ PoolOrNew(/obj/item/stack/rods, Tsec)
new /obj/item/stack/cable_coil/cut(Tsec)
if(cell)
diff --git a/code/setup.dm b/code/setup.dm
index 3d58d5fc4f7..c9c82df1a61 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -1,5 +1,10 @@
#define DEBUG
+#define GAME_STATE_PREGAME 1
+#define GAME_STATE_SETTING_UP 2
+#define GAME_STATE_PLAYING 3
+#define GAME_STATE_FINISHED 4
+
// Math constants.
#define M_E 2.71828183
#define M_PI 3.14159265
diff --git a/html/changelog.html b/html/changelog.html
index d83bfdb3d17..134f72f3061 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -26,7 +26,7 @@
Space Station 13
- Code licensed under GPLv3. Content licensed under CC BY-SA 3.0.
+ Code licensed under AGPLv3. Content licensed under CC BY-SA 3.0.
Visit our IRC channel: #bs12 on irc.sorcery.net
@@ -56,6 +56,47 @@
-->
+
02 May 2015
+
HarpyEagle updated:
+
+ - Neck-grabbing someone now stuns them properly.
+
+
PsiOmegaDelta updated:
+
+ - The spider infestation event now makes an announcement much sooner.
+ - Admins can now toggle OOC/LOOC separately.
+ - Mice are now numbered to aid admins.
+
+
Yoshax updated:
+
+ - Adds an option and verb to the AI to send emergency messages to Central, functions same as comms console option.
+ - Changes comms console to only have one level of ID require, meaning all heads of staff have what was captain access, allowing them to change alert, send emergency messages and make announcements.
+ - Adds an emergency bluespace relay machine which is mapped into teletcomms, this machine takes emergency messages and sends them to central, if one does not exist on any Z, you cannot send any emergency messages.
+ - Adds an emergency bluespace relay assembly kit orderable from cargo for when the ones on telecomms are destroyed. Assembly is required.
+ - Adds the emergency bluespace relay circuitboard to be researchable and printable in R&D, with sufficient tech levels.
+
+
+
30 April 2015
+
Yoshax updated:
+
+ - Adds more items to custom loadout, including a number of dressy suits and some other things.
+
+
+
29 April 2015
+
Daranz updated:
+
+ - Paper bundles can now have papers inserted at arbitrary points. This can be done by clicking the previous/next page links with a sheet of paper in hand.
+
+
HarpyEagle updated:
+
+ - Added new fire modes to various guns: c20r, STS-35, WT-550, Z8, L6 SAW, and double barreled shotgun. The firing modes work the same way as the egun; click on the weapon with it in your active hand to cycle between modes. Unloading these weapons now requires that you click on them with an empty hand.
+
+
PsiOmegaDelta updated:
+
+ - Portable atmospheric pumps and scrubbers now use NanoUI.
+ - Two new events which will cause damage to APCs or cameras when triggered.
+
+
28 April 2015
Jarcolr updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index dcdffbe25ec..39de465d991 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -1668,3 +1668,39 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- rscadd: Adds all the practice rounds to the autolathe.
- tweak: Adds r_walls to the back of the firing range, leaves the sides normal.
- bugfix: Fixes HoS' office door to not be CMO locked.
+2015-04-29:
+ Daranz:
+ - rscadd: Paper bundles can now have papers inserted at arbitrary points. This can
+ be done by clicking the previous/next page links with a sheet of paper in hand.
+ HarpyEagle:
+ - rscadd: 'Added new fire modes to various guns: c20r, STS-35, WT-550, Z8, L6 SAW,
+ and double barreled shotgun. The firing modes work the same way as the egun;
+ click on the weapon with it in your active hand to cycle between modes. Unloading
+ these weapons now requires that you click on them with an empty hand.'
+ PsiOmegaDelta:
+ - rscadd: Portable atmospheric pumps and scrubbers now use NanoUI.
+ - rscadd: Two new events which will cause damage to APCs or cameras when triggered.
+2015-04-30:
+ Yoshax:
+ - rscadd: Adds more items to custom loadout, including a number of dressy suits
+ and some other things.
+2015-05-02:
+ HarpyEagle:
+ - bugfix: Neck-grabbing someone now stuns them properly.
+ PsiOmegaDelta:
+ - tweak: The spider infestation event now makes an announcement much sooner.
+ - rscadd: Admins can now toggle OOC/LOOC separately.
+ - tweak: Mice are now numbered to aid admins.
+ Yoshax:
+ - rscadd: Adds an option and verb to the AI to send emergency messages to Central,
+ functions same as comms console option.
+ - tweak: Changes comms console to only have one level of ID require, meaning all
+ heads of staff have what was captain access, allowing them to change alert,
+ send emergency messages and make announcements.
+ - rscadd: Adds an emergency bluespace relay machine which is mapped into teletcomms,
+ this machine takes emergency messages and sends them to central, if one does
+ not exist on any Z, you cannot send any emergency messages.
+ - rscadd: Adds an emergency bluespace relay assembly kit orderable from cargo for
+ when the ones on telecomms are destroyed. Assembly is required.
+ - rscadd: Adds the emergency bluespace relay circuitboard to be researchable and
+ printable in R&D, with sufficient tech levels.
diff --git a/html/changelogs/Daranz-paper_functionality.yml b/html/changelogs/Daranz-paper_functionality.yml
deleted file mode 100644
index 5bdb81041ee..00000000000
--- a/html/changelogs/Daranz-paper_functionality.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: Daranz
-delete-after: True
-
-changes:
- - rscadd: "Paper bundles can now have papers inserted at arbitrary points. This can be done by clicking the previous/next page links with a sheet of paper in hand."
\ No newline at end of file
diff --git a/html/changelogs/HarpyEagle-PR-8971.yml b/html/changelogs/HarpyEagle-PR-8971.yml
deleted file mode 100644
index 0bfc556d727..00000000000
--- a/html/changelogs/HarpyEagle-PR-8971.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-# Your name.
-author: HarpyEagle
-
-# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
-delete-after: True
-
-# Any changes you've made. See valid prefix list above.
-# INDENT WITH TWO SPACES. NOT TABS. SPACES.
-# SCREW THIS UP AND IT WON'T WORK.
-# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
-# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
-changes:
- - rscadd: "Added new fire modes to various guns: c20r, STS-35, WT-550, Z8, L6 SAW, and double barreled shotgun. The firing modes work the same way as the egun; click on the weapon with it in your active hand to cycle between modes. Unloading these weapons now requires that you click on them with an empty hand."
diff --git a/html/changelogs/PsiOmegaDelta-BrokenGrilles.yml b/html/changelogs/PsiOmegaDelta-BrokenGrilles.yml
new file mode 100644
index 00000000000..fec228bad64
--- /dev/null
+++ b/html/changelogs/PsiOmegaDelta-BrokenGrilles.yml
@@ -0,0 +1,4 @@
+author: PsiOmegaDelta
+delete-after: True
+changes:
+ - tweak: "Grilles no longer return too many rods when destroyed (using means other than wirecutters)."
diff --git a/html/changelogs/PsiOmegaDelta-PR-9008.yml b/html/changelogs/PsiOmegaDelta-PR-9008.yml
deleted file mode 100644
index 298f0e4d68c..00000000000
--- a/html/changelogs/PsiOmegaDelta-PR-9008.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: PsiOmegaDelta
-delete-after: True
-changes:
- - rscadd: "Two new events which will cause damage to APCs or cameras when triggered."
diff --git a/html/changelogs/PsiOmegaDelta-PortableNanoUI.yml b/html/changelogs/PsiOmegaDelta-PortableNanoUI.yml
deleted file mode 100644
index 1c8757b19f4..00000000000
--- a/html/changelogs/PsiOmegaDelta-PortableNanoUI.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-author: PsiOmegaDelta
-changes:
- - rscadd: "Portable atmospheric pumps and scrubbers now use NanoUI."
-delete-after: true
diff --git a/html/changelogs/PsiOmegaDelta.yml b/html/changelogs/PsiOmegaDelta.yml
deleted file mode 100644
index 6fdea55f549..00000000000
--- a/html/changelogs/PsiOmegaDelta.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-author: PsiOmegaDelta
-changes: []
-delete-after: false
diff --git a/html/templates/header.html b/html/templates/header.html
index 3daf4a3d553..bd62de1fc57 100644
--- a/html/templates/header.html
+++ b/html/templates/header.html
@@ -26,7 +26,7 @@
Space Station 13
- Code licensed under GPLv3. Content licensed under CC BY-SA 3.0.
+ Code licensed under AGPLv3. Content licensed under CC BY-SA 3.0.
Visit our IRC channel: #bs12 on irc.sorcery.net
diff --git a/icons/mob/robots.dmi b/icons/mob/robots.dmi
index 5237308264d..b81f428661b 100644
Binary files a/icons/mob/robots.dmi and b/icons/mob/robots.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 8bcb5920ed0..d03314d6238 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi
index 70cfb010273..0e1caba2443 100644
Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ
diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm
index de18c7922b5..133ec3c5191 100644
--- a/maps/exodus-1.dmm
+++ b/maps/exodus-1.dmm
@@ -11,11 +11,11 @@
"aak" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/airless{icon_state = "circuit"},/area/space)
"aal" = (/obj/structure/girder/displaced,/turf/simulated/floor/airless{icon_state = "circuit"},/area/space)
"aam" = (/obj/structure/grille,/turf/space,/area/space)
-"aan" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space)
+"aan" = (/obj/structure/grille/broken,/turf/space,/area/space)
"aao" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/space)
"aap" = (/turf/simulated/floor/airless,/area/space)
-"aaq" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/space,/area/space)
-"aar" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless{icon_state = "circuit"},/area/space)
+"aaq" = (/obj/structure/grille/broken,/obj/structure/lattice,/turf/space,/area/space)
+"aar" = (/obj/structure/grille/broken,/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless{icon_state = "circuit"},/area/space)
"aas" = (/obj/item/clothing/suit/ianshirt,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/space)
"aat" = (/turf/simulated/wall/r_wall,/area/space)
"aau" = (/turf/space,/area/skipjack_station/northwest_solars)
@@ -208,7 +208,7 @@
"adZ" = (/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main)
"aea" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/main)
"aeb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/security/main)
-"aec" = (/obj/machinery/door_control{id = "Armoury"; name = "Armoury Access"; pixel_x = -1; pixel_y = -28; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury)
+"aec" = (/obj/machinery/button/remote/blast_door{id = "Armoury"; name = "Armoury Access"; pixel_x = -1; pixel_y = -28; req_access = list(3)},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury)
"aed" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main)
"aee" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = 32; pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"aef" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Briefing Room"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/security/main)
@@ -229,11 +229,11 @@
"aeu" = (/obj/machinery/flasher/portable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury)
"aev" = (/obj/machinery/light,/obj/machinery/flasher/portable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/armoury)
"aew" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_port)
-"aex" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/security_port)
+"aex" = (/obj/structure/grille/broken,/obj/item/weapon/shard,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/security_port)
"aey" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor/plating,/area/maintenance/security_port)
"aez" = (/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/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury)
"aeA" = (/obj/machinery/deployable/barrier,/turf/simulated/floor{icon_state = "delivery"},/area/security/warden)
-"aeB" = (/obj/machinery/door_control{id = "Armoury"; name = "Emergency Access"; pixel_x = -28; pixel_y = 4; req_access = list(3)},/turf/simulated/floor,/area/security/main)
+"aeB" = (/obj/machinery/button/remote/blast_door{id = "Armoury"; name = "Emergency Access"; pixel_x = -28; pixel_y = 4; req_access = list(3)},/turf/simulated/floor,/area/security/main)
"aeC" = (/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,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/security/warden)
"aeD" = (/obj/structure/closet/l3closet/security,/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden)
"aeE" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/bombclosetsecurity,/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/warden)
@@ -251,7 +251,7 @@
"aeQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"aeR" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/glass_security{name = "Briefing Room"; req_access = list(63)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/main)
"aeS" = (/turf/simulated/wall/r_wall,/area/maintenance/security_starboard)
-"aeT" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/space,/area/space)
+"aeT" = (/obj/structure/grille/broken,/obj/structure/lattice,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/turf/space,/area/space)
"aeU" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/security_port)
"aeV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/security_port)
"aeW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/barricade/wooden,/turf/simulated/floor/plating,/area/maintenance/security_port)
@@ -479,7 +479,7 @@
"ajk" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/belt/utility,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/camera/xray/security{c_tag = "Security Escape Pod"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/security_starboard)
"ajl" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/security_port)
"ajm" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/cable/green,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hos)
-"ajn" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/obj/machinery/door_control{id = "HoSdoor"; name = "Office Door"; normaldoorcontrol = 1; pixel_x = -36; pixel_y = 29},/obj/machinery/button/windowtint{pixel_x = -26; pixel_y = 30},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -36; pixel_y = 39; req_access = list(2)},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
+"ajn" = (/obj/structure/bed/chair/comfy/black{dir = 1},/obj/effect/landmark/start{name = "Head of Security"},/obj/machinery/button/remote/airlock{id = "HoSdoor"; name = "Office Door"; pixel_x = -36; pixel_y = 29},/obj/machinery/button/windowtint{pixel_x = -26; pixel_y = 30},/obj/machinery/button/remote/blast_door{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -36; pixel_y = 39; req_access = list(2)},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
"ajo" = (/obj/structure/table,/obj/item/weapon/folder/red{pixel_x = 2; pixel_y = 4},/obj/item/weapon/pen,/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/camera/network/security{c_tag = "Security - Evidence Storage"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"ajp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/brig)
"ajq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/brig)
@@ -566,7 +566,7 @@
"akT" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/security/detectives_office)
"akU" = (/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/manifold/hidden/supply,/turf/simulated/floor/carpet,/area/security/detectives_office)
"akV" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -29},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/heads/hos)
-"akW" = (/obj/structure/table/woodentable,/obj/machinery/door_control{id = "detdoor"; name = "Office Door"; normaldoorcontrol = 1},/obj/item/weapon/handcuffs,/obj/item/device/flash,/turf/simulated/floor/carpet,/area/security/detectives_office)
+"akW" = (/obj/structure/table/woodentable,/obj/machinery/button/remote/airlock{id = "detdoor"; name = "Office Door"},/obj/item/weapon/handcuffs,/obj/item/device/flash,/turf/simulated/floor/carpet,/area/security/detectives_office)
"akX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = 0; pixel_y = -27; tag = "permflash"},/turf/simulated/floor,/area/security/brig)
"akY" = (/obj/structure/closet/secure_closet/detective,/obj/item/weapon/reagent_containers/food/drinks/flask/detflask,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"akZ" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard)
@@ -587,7 +587,7 @@
"alo" = (/obj/machinery/door/blast/regular{id = "Cell 1"; name = "Cell Door"},/turf/simulated/floor,/area/security/prison)
"alp" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig)
"alq" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/security_starboard)
-"alr" = (/obj/machinery/door_control{id = "Cell 3"; name = "Cell 3 Door"; pixel_x = -1; pixel_y = -28; req_access = list(2)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/security/brig)
+"alr" = (/obj/machinery/button/remote/blast_door{id = "Cell 3"; name = "Cell 3 Door"; pixel_x = -1; pixel_y = -28; req_access = list(2)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/security/brig)
"als" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig)
"alt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/brig)
"alu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/security/brig)
@@ -636,7 +636,7 @@
"aml" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"amm" = (/obj/structure/closet/lawcloset,/obj/item/clothing/glasses/sunglasses/big,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"amn" = (/obj/item/weapon/storage/secure/safe{pixel_x = -23},/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
-"amo" = (/obj/structure/disposalpipe/segment,/obj/structure/table/woodentable,/obj/machinery/door_control{id = "detdoor"; name = "Office Door"; normaldoorcontrol = 1},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/carpet,/area/security/detectives_office)
+"amo" = (/obj/structure/disposalpipe/segment,/obj/structure/table/woodentable,/obj/machinery/button/remote/airlock{id = "detdoor"; name = "Office Door"},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/carpet,/area/security/detectives_office)
"amp" = (/obj/structure/table/woodentable,/obj/item/ashtray/bronze,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/device/flash,/obj/item/weapon/handcuffs,/turf/simulated/floor/carpet,/area/security/detectives_office)
"amq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/security/detectives_office)
"amr" = (/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
@@ -661,9 +661,9 @@
"amK" = (/obj/machinery/flasher{id = "permentryflash"; name = "Floor mounted flash"; pixel_x = 0},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/security/prison)
"amL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison)
"amM" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/security{name = "Riot Control"; req_access = list(2)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/security/brig)
-"amN" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/door_control{desc = "A remote control switch for the brig foyer."; id = "BrigFoyer"; name = "Brig Foyer Doors"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = -15},/turf/simulated/floor,/area/security/brig)
+"amN" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/button/remote/airlock{desc = "A remote control switch for the brig foyer."; id = "BrigFoyer"; name = "Brig Foyer Doors"; pixel_x = 28; pixel_y = -15},/turf/simulated/floor,/area/security/brig)
"amO" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 8; icon_state = "rightsecure"; req_access = list(2)},/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/brig)
-"amP" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/machinery/door_control{id = "prisonentry"; name = "Entry Doors"; normaldoorcontrol = 1; pixel_x = -6; pixel_y = 24; req_access = list(2)},/obj/machinery/door_control{id = "prisonexit"; name = "Exit Doors"; normaldoorcontrol = 1; pixel_x = 6; pixel_y = 24; req_access = list(2)},/obj/machinery/button/flasher{id = "permentryflash"; name = "entry flash"; pixel_x = -26; pixel_y = 6; req_access = list(2)},/turf/simulated/floor,/area/security/brig)
+"amP" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/machinery/button/remote/airlock{id = "prisonentry"; name = "Entry Doors"; pixel_x = -6; pixel_y = 24; req_access = list(2)},/obj/machinery/button/remote/blast_door{id = "prisonexit"; name = "Exit Doors"; pixel_x = 6; pixel_y = 24; req_access = list(2)},/obj/machinery/button/flasher{id = "permentryflash"; name = "entry flash"; pixel_x = -26; pixel_y = 6; req_access = list(2)},/turf/simulated/floor,/area/security/brig)
"amQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = -3; pixel_y = -33},/turf/simulated/floor,/area/security/brig)
"amR" = (/obj/machinery/flasher{id = "Cell 3"; pixel_x = -28; pixel_y = 0},/obj/structure/bed,/turf/simulated/floor{icon_state = "red"},/area/security/prison)
"amS" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/southright{dir = 4},/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/security/lobby)
@@ -688,7 +688,7 @@
"anl" = (/obj/structure/closet/secure_closet/brig{id = "Cell 3"; name = "Cell 3 Locker"},/obj/machinery/camera/network/prison{c_tag = "Security - Brig Cell 3"; dir = 8},/turf/simulated/floor{icon_state = "red"},/area/security/prison)
"anm" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/window/brigdoor{dir = 8; req_access = list(2)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/brig)
"ann" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Big Brother is watching."; name = "Brig Monitor"; network = list("Prison"); pixel_x = 3; pixel_y = -33},/obj/machinery/computer/station_alert/security,/turf/simulated/floor,/area/security/brig)
-"ano" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = -6; pixel_y = -24; req_access = list(2); tag = "permflash"},/obj/machinery/door_control{id = "brigobs"; name = "observation shutters"; pixel_x = 6; pixel_y = -24},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -26; pixel_y = -4; req_access = list(2)},/turf/simulated/floor,/area/security/brig)
+"ano" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/button/flasher{id = "permflash"; name = "Brig flashes"; pixel_x = -6; pixel_y = -24; req_access = list(2); tag = "permflash"},/obj/machinery/button/remote/blast_door{id = "brigobs"; name = "observation shutters"; pixel_x = 6; pixel_y = -24},/obj/machinery/button/remote/blast_door{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = -26; pixel_y = -4; req_access = list(2)},/turf/simulated/floor,/area/security/brig)
"anp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/security{c_tag = "Security - Prison Observation"; dir = 1},/turf/simulated/floor,/area/security/brig)
"anq" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard)
"anr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet,/turf/simulated/wall,/area/security/prison)
@@ -777,7 +777,7 @@
"aoW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "lawyer_blast"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/lawoffice)
"aoX" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/auxport)
"aoY" = (/obj/structure/cable/yellow,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard)
-"aoZ" = (/obj/machinery/door_control{id = "Cell 2"; name = "Cell 2 Door"; pixel_x = 30; pixel_y = 1; req_access = list(2)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig)
+"aoZ" = (/obj/machinery/button/remote/blast_door{id = "Cell 2"; name = "Cell 2 Door"; pixel_x = 30; pixel_y = 1; req_access = list(2)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig)
"apa" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/evahallway)
"apb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/evahallway)
"apc" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/security/brig)
@@ -871,7 +871,7 @@
"aqM" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating/airless,/area/solar/fore)
"aqN" = (/obj/structure/bed/chair{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/lobby)
"aqO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/lobby)
-"aqP" = (/obj/machinery/door_control{id = "visitdoor"; name = "Visitation Access"; normaldoorcontrol = 1; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/lobby)
+"aqP" = (/obj/machinery/button/remote/airlock{id = "visitdoor"; name = "Visitation Access"; pixel_y = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/lobby)
"aqQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/lobby)
"aqR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/junction/yjunction,/turf/simulated/floor,/area/security/lobby)
"aqS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/lobby)
@@ -913,7 +913,7 @@
"arC" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "dorm_airlock"; name = "Dormitory Airlock Console"; pixel_x = 25; pixel_y = 0; req_one_access = list(1,5,11,18,24); tag_airpump = "dorm_pump"; tag_chamber_sensor = "dorm_sensor"; tag_exterior_door = "dorm_outer"; tag_interior_door = "dorm_inner"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/dormitory)
"arD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/solar/fore)
"arE" = (/turf/simulated/wall,/area/hallway/primary/fore)
-"arF" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/door_control{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_y = -25},/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
+"arF" = (/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/button/remote/blast_door{id = "lawyer_blast"; name = "Privacy Shutters"; pixel_y = -25},/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/obj/item/device/flash,/obj/item/device/flash,/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"arG" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"arH" = (/obj/item/weapon/stool,/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/camera/network/security{c_tag = "Security - Solitary Confinement South"},/turf/simulated/floor/plating,/area/security/brig)
"arI" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/security/detectives_office)
@@ -922,7 +922,7 @@
"arL" = (/turf/simulated/floor/wood{icon_state = "wood-broken4"},/area/maintenance/dormitory)
"arM" = (/obj/structure/bed/chair{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "redcorner"},/area/security/lobby)
"arN" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/maintenance/dormitory)
-"arO" = (/obj/machinery/door_control{id = "Cell 1"; name = "Cell 1 Door"; pixel_x = 30; pixel_y = 1; req_access = list(2)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig)
+"arO" = (/obj/machinery/button/remote/blast_door{id = "Cell 1"; name = "Cell 1 Door"; pixel_x = 30; pixel_y = 1; req_access = list(2)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/brig)
"arP" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/obj/machinery/camera/network/prison{c_tag = "Security - Brig Cell 1"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison)
"arQ" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Internal Affairs Agent"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"arR" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/security/brig)
@@ -994,7 +994,7 @@
"atf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/dormitory)
"atg" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison)
"ath" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/security/prison)
-"ati" = (/obj/machinery/button/flasher{id = "IAflash"; pixel_y = -30},/obj/machinery/door_control{id = "visit_blast"; name = "Privacy Shutters"; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/prison)
+"ati" = (/obj/machinery/button/flasher{id = "IAflash"; pixel_y = -30},/obj/machinery/button/remote/blast_door{id = "visit_blast"; name = "Privacy Shutters"; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/security/prison)
"atj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
"atk" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/escape_pod1/station)
"atl" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/escape_pod1/station)
@@ -1226,7 +1226,7 @@
"axD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/evahallway)
"axE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/evahallway)
"axF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/evahallway)
-"axG" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/evahallway)
+"axG" = (/obj/structure/grille/broken,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating{dir = 4; icon_state = "warnplatecorner"},/area/maintenance/evahallway)
"axH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/evahallway)
"axI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/evahallway)
"axJ" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/table/rack,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/suit/storage/hazardvest,/turf/simulated/floor/plating,/area/maintenance/evahallway)
@@ -1777,7 +1777,7 @@
"aIi" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aIj" = (/obj/machinery/light/small{dir = 1},/obj/machinery/requests_console{department = "Chapel"; departmentType = 2; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aIk" = (/obj/machinery/door/airlock/maintenance{name = "Chapel Maintenance"; req_one_access = list(12,22)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/chapel/main)
-"aIl" = (/obj/machinery/door_control{id = "chapel"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
+"aIl" = (/obj/machinery/button/remote/blast_door{id = "chapel"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
"aIm" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/rag,/obj/structure/noticeboard{pixel_x = -30; pixel_y = 0},/obj/machinery/door/blast/shutters{dir = 2; id = "bar"; layer = 3.1; name = "Bar Shutters"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aIn" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/camera/network/security{c_tag = "Security - Arrival Checkpoint"; dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint2)
"aIo" = (/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
@@ -1845,7 +1845,7 @@
"aJy" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/bar)
"aJz" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/bar)
"aJA" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/bed/chair,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office)
-"aJB" = (/obj/machinery/button/driver{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = 25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"aJB" = (/obj/machinery/button/remote/driver{id = "chapelgun"; name = "Chapel Mass Driver"; pixel_x = 25},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aJC" = (/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/dormitory)
"aJD" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 28},/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"aJE" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash)
@@ -2092,7 +2092,7 @@
"aOl" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two)
"aOm" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/central_two)
"aOn" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/central_two)
-"aOo" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/door_control{id = "bar"; name = "Bar Shutters"; pixel_y = 25; throw_range = 15},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
+"aOo" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/button/remote/blast_door{id = "bar"; name = "Bar Shutters"; pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aOp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/barman_recipes,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/item/weapon/screwdriver,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
"aOq" = (/obj/machinery/door/window/eastright{name = "Hydroponics Delivery"; icon_state = "right"; dir = 2; req_access = list(35)},/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics)
"aOr" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar)
@@ -2636,7 +2636,7 @@
"aYJ" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/vacantoffice)
"aYK" = (/obj/structure/table,/obj/structure/window/basic{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/security/vacantoffice)
"aYL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/security/vacantoffice)
-"aYM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "office_shutter"; name = "Office Shutters"; pixel_x = -8; pixel_y = 22; throw_range = 15},/obj/machinery/light_switch{pixel_x = -8; pixel_y = 32},/turf/simulated/floor,/area/security/vacantoffice)
+"aYM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/button/remote/blast_door{id = "office_shutter"; name = "Office Shutters"; pixel_x = -8; pixel_y = 22},/obj/machinery/light_switch{pixel_x = -8; pixel_y = 32},/turf/simulated/floor,/area/security/vacantoffice)
"aYN" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/hand_labeler,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/security/vacantoffice)
"aYO" = (/turf/simulated/wall,/area/security/vacantoffice)
"aYP" = (/obj/structure/closet/crate,/obj/item/clothing/mask/gas,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/locker)
@@ -2748,7 +2748,7 @@
"baR" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/bridge)
"baS" = (/obj/machinery/power/sensor{name = "Powernet Sensor - AI Subgrid"; name_tag = "AI Subgrid"},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/structure/cable/cyan{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"baT" = (/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},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
-"baU" = (/obj/machinery/door_control{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},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
+"baU" = (/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},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
"baV" = (/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},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
"baW" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_dock_north_inner"; locked = 1; name = "Escape Airlock"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/mech_sensor{dir = 8; frequency = 1380; id_tag = "escape_dock_north_mech"; pixel_y = -19},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"baX" = (/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},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
@@ -2953,7 +2953,7 @@
"beO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry/aft)
"beP" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft)
"beQ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry/aft)
-"beR" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/door_control{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = -24; req_access = list(28)},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
+"beR" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/button/remote/blast_door{id = "kitchen"; name = "Kitchen Shutters Control"; pixel_x = -1; pixel_y = -24; req_access = list(28)},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"beS" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/solar/auxport)
"beT" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor,/area/security/vacantoffice)
"beU" = (/obj/machinery/firealarm{dir = 2; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor,/area/security/vacantoffice)
@@ -2976,7 +2976,7 @@
"bfl" = (/obj/machinery/conveyor_switch/oneway{id = "packageSort2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/office)
"bfm" = (/turf/simulated/wall,/area/quartermaster/office)
"bfn" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/bridge/meeting_room)
-"bfo" = (/obj/machinery/door_control{id = "heads_meeting"; name = "Security Shutters"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/bridge/meeting_room)
+"bfo" = (/obj/machinery/button/remote/blast_door{id = "heads_meeting"; name = "Security Shutters"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"bfp" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/bridge/meeting_room)
"bfq" = (/obj/machinery/door/airlock/maintenance{name = "Cargo Bay Warehouse Maintenance"; req_access = list(31)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/quartermaster/storage)
"bfr" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/wood,/area/bridge/meeting_room)
@@ -3261,7 +3261,7 @@
"bkK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "heads_meeting"; name = "Meeting Room Window Shutters"; opacity = 0},/obj/structure/cable/green,/turf/simulated/floor/plating,/area/bridge/meeting_room)
"bkL" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = list(19)},/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/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/maintenance/substation/command)
"bkM" = (/obj/machinery/door/window{dir = 4; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
-"bkN" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/door_control{desc = "A remote control-switch for the AI core maintenance door."; id = "AICore"; name = "AI Maintenance Hatch"; pixel_x = 17; pixel_y = 25; req_access = list(109)},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
+"bkN" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/machinery/newscaster/security_unit{pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = -32; pixel_y = 32},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the AI core maintenance door."; id = "AICore"; name = "AI Maintenance Hatch"; pixel_x = 17; pixel_y = 25; req_access = list(109)},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"bkO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc/high{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green,/turf/simulated/floor,/area/hallway/secondary/entry/aft)
"bkP" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "AI Core Door"; req_access = list(16)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"bkQ" = (/obj/machinery/conveyor{dir = 4; id = "garbage"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
@@ -3375,7 +3375,7 @@
"bmU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/civilian_west{c_tag = "Locker Room Toilets"; dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
"bmV" = (/obj/machinery/door/window{dir = 2; name = "AI Core Door"; req_access = list(109)},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/flasher{id = "AI"; pixel_x = 22; pixel_y = 24},/obj/machinery/turretid/stun{check_synth = 1; name = "AI Chamber turret control"; pixel_x = 36; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"bmW" = (/obj/structure/table/reinforced,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/obj/item/stack/sheet/mineral/phoron,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
-"bmX" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_y = 25},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"bmX" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_y = 25},/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bmY" = (/obj/structure/sign/chemistry,/turf/simulated/wall/r_wall,/area/medical/chemistry)
"bmZ" = (/obj/structure/reagent_dispensers/water_cooler,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/reception)
"bna" = (/obj/structure/table,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/storage/box/cups{pixel_x = 0; pixel_y = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/reception)
@@ -3422,12 +3422,12 @@
"bnP" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/locker)
"bnQ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/hallway/secondary/entry/aft)
"bnR" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/locker)
-"bnS" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; req_access = list(31)},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
+"bnS" = (/obj/machinery/button/remote/blast_door{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = -24; req_access = list(31)},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"bnT" = (/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "garbage"; name = "disposal coveyor"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bnU" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Mailing Room"; req_access = list(50)},/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central_one)
"bnV" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/camera/network/exodus{c_tag = "Primary Hallway Central - West"; dir = 8},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central_one)
"bnW" = (/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/wood,/area/bridge/meeting_room)
-"bnX" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/effect/landmark/start{name = "Captain"},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "captaindoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = 30; req_access = list(20)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door_control{desc = "A remote control-switch for the starboard bridge doors."; id = "sbridgedoor"; name = "Bridge Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = 39; req_access = list(20)},/turf/simulated/floor/wood,/area/crew_quarters/captain)
+"bnX" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/effect/landmark/start{name = "Captain"},/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the office door."; id = "captaindoor"; name = "Office Door Control"; pixel_x = 15; pixel_y = 30; req_access = list(20)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the starboard bridge doors."; id = "sbridgedoor"; name = "Bridge Door Control"; pixel_x = 15; pixel_y = 39; req_access = list(20)},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bnY" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/locker)
"bnZ" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/locker)
"boa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/locker)
@@ -3494,12 +3494,12 @@
"bpj" = (/turf/simulated/wall/r_wall,/area/assembly/chargebay)
"bpk" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/assembly/chargebay)
"bpl" = (/turf/simulated/floor,/area/assembly/chargebay)
-"bpm" = (/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = 6; pixel_y = 24},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/assembly/chargebay)
+"bpm" = (/obj/machinery/button/remote/blast_door{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = 6; pixel_y = 24},/turf/simulated/floor{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/assembly/chargebay)
"bpn" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/assembly/chargebay)
"bpo" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/network/medbay{c_tag = "Medbay Morgue"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue)
"bpp" = (/turf/simulated/wall,/area/assembly/robotics)
"bpq" = (/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
-"bpr" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 6; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/medical/reception)
+"bpr" = (/obj/machinery/button/remote/airlock{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; pixel_x = 6; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/medical/reception)
"bps" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access = list(29)},/turf/simulated/floor,/area/hallway/primary/starboard)
"bpt" = (/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/assembly/robotics)
"bpu" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/exam_room)
@@ -3566,7 +3566,7 @@
"bqD" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bqE" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bqF" = (/obj/machinery/light{dir = 8},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central_two)
-"bqG" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 6},/obj/item/device/mass_spectrometer/adv,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/machinery/door_control{id = "chemwindow"; name = "Pharmacy Windows Shutter Control"; pixel_x = -22; pixel_y = -10; pixel_z = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"bqG" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 6},/obj/item/device/mass_spectrometer/adv,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/machinery/button/remote/blast_door{id = "chemwindow"; name = "Pharmacy Windows Shutter Control"; pixel_x = -22; pixel_y = -10; pixel_z = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bqH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bqI" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bqJ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
@@ -3608,7 +3608,7 @@
"brt" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry/aft)
"bru" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/door/blast/regular{density = 1; icon_state = "pdoor1"; id = "Disposal Exit"; name = "Disposal Exit Vent"; opacity = 1},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal)
"brv" = (/obj/item/weapon/cigbutt{pixel_x = -10; pixel_y = -10},/turf/simulated/floor/plating,/area/maintenance/disposal)
-"brw" = (/obj/machinery/door_control{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access = list(12)},/obj/machinery/button/driver{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/item/weapon/cigbutt,/obj/item/weapon/stool,/turf/simulated/floor/plating,/area/maintenance/disposal)
+"brw" = (/obj/machinery/button/remote/blast_door{id = "Disposal Exit"; name = "Disposal Vent Control"; pixel_x = -25; pixel_y = 4; req_access = list(12)},/obj/machinery/button/remote/driver{id = "trash"; pixel_x = -26; pixel_y = -6},/obj/item/weapon/cigbutt,/obj/item/weapon/stool,/turf/simulated/floor/plating,/area/maintenance/disposal)
"brx" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/locker)
"bry" = (/obj/machinery/door/airlock/maintenance{name = "Disposal Access"; req_access = list(12)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/nosmoking_1{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/disposal)
"brz" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor,/area/hallway/secondary/entry/aft)
@@ -3627,7 +3627,7 @@
"brM" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster/office)
"brN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/office)
"brO" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/item/device/radio/intercom{pixel_y = 23},/turf/simulated/floor,/area/quartermaster/office)
-"brP" = (/obj/machinery/door_control{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; req_access = list(31)},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/quartermaster/storage)
+"brP" = (/obj/machinery/button/remote/blast_door{id = "qm_warehouse"; name = "Warehouse Door Control"; pixel_x = -1; pixel_y = 24; req_access = list(31)},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor,/area/quartermaster/storage)
"brQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
"brR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/office)
"brS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/quartermaster/office)
@@ -3743,7 +3743,7 @@
"btY" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"btZ" = (/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bua" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
-"bub" = (/obj/machinery/light_switch{pixel_x = 22; pixel_y = -8},/obj/machinery/door_control{id = "chemwindow"; name = "Chemistry Laboratory Window Shutters Control"; pixel_x = 26; pixel_y = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"bub" = (/obj/machinery/light_switch{pixel_x = 22; pixel_y = -8},/obj/machinery/button/remote/blast_door{id = "chemwindow"; name = "Chemistry Laboratory Window Shutters Control"; pixel_x = 26; pixel_y = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"buc" = (/turf/simulated/wall,/area/medical/chemistry)
"bud" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = -32},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/reception)
"bue" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/reception)
@@ -3751,7 +3751,7 @@
"bug" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office)
"buh" = (/obj/structure/table,/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"},/turf/simulated/floor,/area/medical/reception)
"bui" = (/obj/structure/table,/obj/item/weapon/aiModule/oxygen,/obj/item/weapon/aiModule/oneHuman,/obj/machinery/door/window{base_state = "left"; dir = 8; icon_state = "left"; name = "High-Risk Modules"; req_access = list(20)},/obj/item/weapon/aiModule/purge,/obj/structure/window/reinforced,/obj/item/weapon/aiModule/antimov,/obj/item/weapon/aiModule/teleporterOffline,/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload)
-"buj" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 16; pixel_y = 28},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/crew_quarters/heads/hop)
+"buj" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 16; pixel_y = 28},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/crew_quarters/heads/hop)
"buk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/filingcabinet/medical{pixel_y = 0},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/reception)
"bul" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/reception)
"bum" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 32},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHEAST)"; icon_state = "whiteblue"; dir = 6},/area/medical/reception)
@@ -3857,9 +3857,9 @@
"bwi" = (/obj/machinery/door/blast/regular{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating/airless,/area/rnd/test_area)
"bwj" = (/obj/structure/table,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/turf/simulated/floor,/area/medical/reception)
"bwk" = (/turf/simulated/wall,/area/medical/medbay2)
-"bwl" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -16; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/medical/reception)
+"bwl" = (/obj/machinery/button/remote/airlock{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; pixel_x = -16; pixel_y = 28},/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/medical/reception)
"bwm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/medbay2)
-"bwn" = (/obj/structure/table,/obj/machinery/door_control{id = "medbayrecquar"; name = "Medbay Entrance Lockdown Shutters Control"; pixel_x = 6; pixel_y = 8; req_access = list(5)},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"; pixel_x = -5},/turf/simulated/floor,/area/medical/reception)
+"bwn" = (/obj/structure/table,/obj/machinery/button/remote/blast_door{id = "medbayrecquar"; name = "Medbay Entrance Lockdown Shutters Control"; pixel_x = 6; pixel_y = 8; req_access = list(5)},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 1; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Reception Emergency Phone"; pixel_x = -5},/turf/simulated/floor,/area/medical/reception)
"bwo" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/assembly/chargebay)
"bwp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/assembly/chargebay)
"bwq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/assembly/robotics)
@@ -4004,7 +4004,7 @@
"byZ" = (/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay3)
"bza" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/medbay3)
"bzb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay2)
-"bzc" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 24; pixel_y = 26},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
+"bzc" = (/obj/machinery/button/remote/airlock{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; pixel_x = 24; pixel_y = 26},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2)
"bzd" = (/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2)
"bze" = (/obj/machinery/door/firedoor,/obj/structure/sign/examroom{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bzf" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
@@ -4103,7 +4103,7 @@
"bAU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing)
"bAV" = (/obj/machinery/door/airlock/maintenance{name = "Teleporter Maintenance"; req_access = list(17)},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/plating,/area/teleporter)
"bAW" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor,/area/crew_quarters/heads/hop)
-"bAX" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 26},/obj/machinery/computer/guestpass{pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay)
+"bAX" = (/obj/machinery/button/remote/airlock{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerPort"; name = "Medbay Doors Control"; pixel_x = -24; pixel_y = 26},/obj/machinery/computer/guestpass{pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay)
"bAY" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/assembly/chargebay)
"bAZ" = (/obj/machinery/recharge_station,/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay)
"bBa" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags{pixel_x = -1; pixel_y = -2},/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/assembly/robotics)
@@ -4290,7 +4290,7 @@
"bEz" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -35},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage)
"bEA" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage)
"bEB" = (/obj/machinery/light,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/quartermaster/storage)
-"bEC" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 26; pixel_y = 17},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "hopdoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 26; pixel_y = -17; req_access = list(57)},/turf/simulated/floor,/area/crew_quarters/heads/hop)
+"bEC" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Head of Personnel"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "hop_office_desk"; name = "Desk Privacy Shutter"; pixel_x = 26; pixel_y = 17},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the office door."; id = "hopdoor"; name = "Office Door Control"; pixel_x = 26; pixel_y = -17; req_access = list(57)},/turf/simulated/floor,/area/crew_quarters/heads/hop)
"bED" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/quartermaster/storage)
"bEE" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #4"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage)
"bEF" = (/obj/structure/table,/obj/machinery/newscaster{pixel_x = -27; pixel_y = 1},/obj/item/weapon/tape_roll,/obj/item/weapon/storage/firstaid/regular{pixel_x = 6; pixel_y = -5},/turf/simulated/floor,/area/quartermaster/office)
@@ -4551,7 +4551,7 @@
"bJA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay)
"bJB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay)
"bJC" = (/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor,/area/rnd/storage)
-"bJD" = (/obj/structure/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/door_control{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -38; pixel_y = 13; req_access = list(47)},/obj/machinery/button/windowtint{pixel_x = -26; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control-switch for the cargo doors."; id = "researchdoor"; name = "Research door control"; normaldoorcontrol = 1; pixel_x = -27; pixel_y = 13; req_access = list(30)},/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("Research","Toxins Test Area","Robots","Anomaly Isolation","Research Outpost"); pixel_x = 0; pixel_y = 34},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
+"bJD" = (/obj/structure/bed/chair/office/light{dir = 8},/obj/effect/landmark/start{name = "Research Director"},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/button/remote/blast_door{id = "Biohazard"; name = "Biohazard Shutter Control"; pixel_x = -38; pixel_y = 13; req_access = list(47)},/obj/machinery/button/windowtint{pixel_x = -26; pixel_y = 21},/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the cargo doors."; id = "researchdoor"; name = "Research door control"; pixel_x = -27; pixel_y = 13; req_access = list(30)},/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("Research","Toxins Test Area","Robots","Anomaly Isolation","Research Outpost"); pixel_x = 0; pixel_y = 34},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
"bJE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/medical/medbay4)
"bJF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "CMO Office Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay4)
"bJG" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
@@ -4588,7 +4588,7 @@
"bKl" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"; pixel_y = 0},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/plating,/area/maintenance/research_shuttle)
"bKm" = (/obj/structure/closet/crate,/obj/item/device/multitool,/obj/item/device/multitool,/obj/item/device/assembly/prox_sensor,/obj/item/device/flashlight,/obj/item/weapon/storage/backpack,/turf/simulated/floor/plating,/area/maintenance/research_shuttle)
"bKn" = (/obj/structure/table/rack,/obj/item/weapon/extinguisher,/obj/item/weapon/storage/belt/utility,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/research_shuttle)
-"bKo" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Quartermaster"},/obj/machinery/button/windowtint{pixel_x = 24; pixel_y = -24},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "qmdoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = -25; req_access = list(20)},/obj/machinery/door_control{desc = "A remote control-switch for the cargo doors."; id = "cargodoor"; name = "Cargo door control"; normaldoorcontrol = 1; pixel_x = 15; pixel_y = -34; req_access = list(41)},/turf/simulated/floor,/area/quartermaster/qm)
+"bKo" = (/obj/structure/bed/chair/office/dark,/obj/effect/landmark/start{name = "Quartermaster"},/obj/machinery/button/windowtint{pixel_x = 24; pixel_y = -24},/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the office door."; id = "qmdoor"; name = "Office Door Control"; pixel_x = 15; pixel_y = -25; req_access = list(20)},/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the cargo doors."; id = "cargodoor"; name = "Cargo door control"; pixel_x = 15; pixel_y = -34; req_access = list(41)},/turf/simulated/floor,/area/quartermaster/qm)
"bKp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/rnd/test_area)
"bKq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/rnd/test_area)
"bKr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/rnd/test_area)
@@ -4709,7 +4709,7 @@
"bMC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/rnd/docking)
"bMD" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 2},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bME" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/medical/medbay2)
-"bMF" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/door_control{id = "staffroom"; name = "Staff Room Shutters Control"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak)
+"bMF" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/button/remote/blast_door{id = "staffroom"; name = "Staff Room Shutters Control"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak)
"bMG" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak)
"bMH" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/turf/space,/area/space)
"bMI" = (/obj/structure/noticeboard{pixel_y = 28},/obj/structure/table/woodentable,/obj/item/weapon/book/manual/medical_diagnostics_manual{pixel_y = 7},/obj/item/device/radio{anchored = 1; broadcasting = 0; canhear_range = 4; frequency = 1487; icon = 'icons/obj/items.dmi'; icon_state = "red_phone"; listening = 1; name = "Break Room Emergency Phone"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/medbreak)
@@ -4746,7 +4746,7 @@
"bNn" = (/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock)
"bNo" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/quartermaster/miningdock)
"bNp" = (/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/quartermaster/miningdock)
-"bNq" = (/obj/machinery/door_control{id = "acute1"; name = "EMT Storage Privacy Shutters"; pixel_x = 26; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
+"bNq" = (/obj/machinery/button/remote/blast_door{id = "acute1"; name = "EMT Storage Privacy Shutters"; pixel_x = 26; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bNr" = (/obj/structure/closet/secure_closet/quartermaster,/turf/simulated/floor,/area/quartermaster/qm)
"bNs" = (/obj/structure/table,/obj/item/weapon/coin/silver{pixel_x = -3; pixel_y = 3},/obj/item/weapon/coin/silver,/obj/item/device/eftpos{eftpos_name = "Quartermaster EFTPOS scanner"},/turf/simulated/floor,/area/quartermaster/qm)
"bNt" = (/obj/structure/table,/obj/item/weapon/cartridge/quartermaster{pixel_x = 6; pixel_y = 5},/obj/item/weapon/cartridge/quartermaster,/obj/item/weapon/cartridge/quartermaster{pixel_x = -4; pixel_y = 7},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster/qm)
@@ -4854,7 +4854,7 @@
"bPr" = (/obj/item/weapon/reagent_containers/glass/bucket,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/janitor)
"bPs" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/turf/simulated/floor,/area/janitor)
"bPt" = (/turf/simulated/wall,/area/janitor)
-"bPu" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering)
+"bPu" = (/obj/structure/grille/broken,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering)
"bPv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/mining{id_tag = "qmdoor"; name = "Quartermaster"; req_access = list(41)},/turf/simulated/floor,/area/quartermaster/qm)
"bPw" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/engineering)
"bPx" = (/turf/simulated/floor/plating,/area/maintenance/engineering)
@@ -4865,7 +4865,7 @@
"bPC" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access = list(26)},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central_three)
"bPD" = (/obj/machinery/door/airlock/maintenance{req_access = list(12)},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_two)
"bPE" = (/obj/structure/table,/obj/machinery/computer/skills{pixel_y = 4},/obj/item/device/megaphone,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo)
-"bPF" = (/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access = list(5)},/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/obj/machinery/camera/network/medbay{c_tag = "Medbay EMT Storage"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
+"bPF" = (/obj/machinery/button/remote/blast_door{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = -25; req_access = list(5)},/obj/item/weapon/stool{pixel_y = 8},/obj/effect/landmark/start{name = "Paramedic"},/obj/machinery/camera/network/medbay{c_tag = "Medbay EMT Storage"; dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bPG" = (/obj/structure/table,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/computer/med_data/laptop{pixel_x = 3; pixel_y = 4},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/crew_quarters/heads/cmo)
"bPH" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/camera/network/medbay{c_tag = "Medbay Starboard Corridor"; dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2)
"bPI" = (/obj/structure/disposalpipe/segment,/obj/machinery/newscaster{pixel_x = 30},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
@@ -4998,7 +4998,7 @@
"bSf" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/bed/chair/office/dark,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/patient_b)
"bSg" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "mining_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bSh" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/engineering)
-"bSi" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engineering)
+"bSi" = (/obj/structure/grille/broken,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/engineering)
"bSj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/engineering)
"bSk" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/engineering)
"bSl" = (/obj/structure/table,/obj/item/device/t_scanner,/turf/simulated/floor/plating,/area/maintenance/engineering)
@@ -5037,7 +5037,7 @@
"bSS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/mixing)
"bST" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"bSU" = (/turf/simulated/wall,/area/engineering/break_room)
-"bSV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/door_control{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access = list(5)},/obj/machinery/camera/network/medbay{c_tag = "Medbay Acute"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
+"bSV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/button/remote/blast_door{id = "acutesep"; name = "Acute Separation Shutters"; pixel_y = 25; req_access = list(5)},/obj/machinery/camera/network/medbay{c_tag = "Medbay Acute"},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bSW" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{autoclose = 0; name = "Acute Treatment"; req_access = list(5)},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/medbay)
"bSX" = (/obj/machinery/disposal,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -30; pixel_y = 0},/obj/structure/disposalpipe/trunk,/turf/simulated/floor{icon_state = "warningcorner"; dir = 2},/area/rnd/mixing)
"bSY" = (/turf/simulated/floor{icon_state = "warning"},/area/rnd/mixing)
@@ -5116,7 +5116,7 @@
"bUt" = (/turf/simulated/floor/airless{dir = 6; icon_state = "warning"},/area/rnd/test_area)
"bUu" = (/turf/simulated/floor/airless{dir = 10; icon_state = "warning"},/area/rnd/test_area)
"bUv" = (/turf/simulated/wall/r_wall,/area/maintenance/cargo)
-"bUw" = (/obj/machinery/button/driver{dir = 2; id = "toxinsdriver"; pixel_y = 24},/obj/machinery/camera/network/research{c_tag = "Research - Toxins Launch Room"},/turf/simulated/floor,/area/rnd/mixing)
+"bUw" = (/obj/machinery/button/remote/driver{dir = 2; id = "toxinsdriver"; pixel_y = 24},/obj/machinery/camera/network/research{c_tag = "Research - Toxins Launch Room"},/turf/simulated/floor,/area/rnd/mixing)
"bUx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/cargo)
"bUy" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/storage/tech)
"bUz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/tech)
@@ -5156,7 +5156,7 @@
"bVh" = (/obj/machinery/iv_drip,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/patient_wing)
"bVi" = (/turf/simulated/wall,/area/medical/patient_wing)
"bVj" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
-"bVk" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "cmooffice"; name = "CMO Privacy Shutters"; pixel_x = 38; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control switch for the CMO's office."; id = "cmodoor"; name = "CMO Office Door Control"; normaldoorcontrol = 1; pixel_x = 28; pixel_y = 21},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = -15; pixel_y = 38; req_access = list(5)},/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "medbayquar"; name = "Medbay Emergency Lockdown Control"; pixel_x = -15; pixel_y = 30; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo)
+"bVk" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "cmooffice"; name = "CMO Privacy Shutters"; pixel_x = 38; pixel_y = 21},/obj/machinery/button/remote/airlock{desc = "A remote control switch for the CMO's office."; id = "cmodoor"; name = "CMO Office Door Control"; pixel_x = 28; pixel_y = 21},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = -15; pixel_y = 38; req_access = list(5)},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "medbayquar"; name = "Medbay Emergency Lockdown Control"; pixel_x = -15; pixel_y = 30; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/cmo)
"bVl" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 2; sortType = "RD Office"; name = "RD Office"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/research)
"bVm" = (/obj/machinery/door/airlock/glass_research{name = "Toxins Lab"; req_access = list(8)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/rnd/research)
"bVn" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
@@ -5266,7 +5266,7 @@
"bXn" = (/obj/structure/table,/obj/item/bodybag/cryobag{pixel_x = 6},/obj/item/stack/medical/bruise_pack{pixel_x = -4; pixel_y = 3},/obj/item/stack/medical/bruise_pack{pixel_x = -4; pixel_y = 3},/obj/item/stack/medical/ointment{pixel_y = 10},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash)
"bXo" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor{icon_state = "yellowfull"; dir = 8},/area/crew_quarters/sleep/engi_wash)
"bXp" = (/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access = list(26)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/janitor)
-"bXq" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = -25; req_access = list(5)},/obj/machinery/door_control{id = "acute2"; name = "Acute Treatment Privacy Shutters"; pixel_x = 6; pixel_y = -25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
+"bXq" = (/obj/machinery/button/remote/blast_door{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = -25; req_access = list(5)},/obj/machinery/button/remote/blast_door{id = "acute2"; name = "Acute Treatment Privacy Shutters"; pixel_x = 6; pixel_y = -25; req_access = list(5)},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper)
"bXr" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_5_berth"; pixel_x = -25; pixel_y = 25; tag_door = "escape_pod_5_berth_hatch"},/turf/simulated/floor/plating,/area/maintenance/cargo)
"bXs" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/cargo)
"bXt" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
@@ -5371,7 +5371,7 @@
"bZo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4)
"bZp" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay4)
"bZq" = (/obj/structure/sign/greencross,/turf/simulated/wall,/area/medical/medbay4)
-"bZr" = (/obj/machinery/door_control{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = 25; req_access = list(5)},/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"},/obj/machinery/door_control{id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; pixel_x = 6; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper)
+"bZr" = (/obj/machinery/button/remote/blast_door{id = "scanhide"; name = "Diagnostics Room Separation Shutters"; pixel_x = -6; pixel_y = 25; req_access = list(5)},/obj/machinery/atmospherics/unary/freezer{dir = 8; icon_state = "freezer"},/obj/machinery/button/remote/blast_door{id = "scanhideside"; name = "Diagnostics Room Privacy Shutters"; pixel_x = 6; pixel_y = 25; req_access = list(5)},/turf/simulated/floor{icon_state = "delivery"},/area/medical/sleeper)
"bZs" = (/obj/structure/table,/obj/structure/disposalpipe/segment,/obj/machinery/camera/network/medbay{c_tag = "Medbay Lounge"},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay4)
"bZt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/hallway/primary/starboard)
"bZu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Sub-Acute A"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing)
@@ -5398,9 +5398,9 @@
"bZP" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/research_starboard)
"bZQ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/machinery/meter,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/research_starboard)
"bZR" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/research_starboard)
-"bZS" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space)
+"bZS" = (/obj/structure/lattice,/obj/structure/grille/broken,/turf/space,/area/space)
"bZT" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/atmos_control)
-"bZU" = (/obj/machinery/button/driver{id = "enginecore"; name = "Emergency Core Eject"; pixel_x = -20; pixel_y = 0},/obj/structure/window/basic{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/heads/chief)
+"bZU" = (/obj/machinery/button/remote/driver{id = "enginecore"; name = "Emergency Core Eject"; pixel_x = -20; pixel_y = 0},/obj/structure/window/basic{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/heads/chief)
"bZV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/medical/sleeper)
"bZW" = (/obj/structure/bed/chair{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/crew_quarters/heads/chief)
"bZX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer)
@@ -5419,7 +5419,7 @@
"cak" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/simulated/floor/carpet,/area/engineering/break_room)
"cal" = (/obj/machinery/newscaster{pixel_x = 28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/engineering/break_room)
"cam" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/iv_drip,/turf/simulated/floor,/area/medical/sleeper)
-"can" = (/obj/machinery/door_control{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 6; pixel_y = 30; req_access = list(47)},/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
+"can" = (/obj/machinery/button/remote/blast_door{id = "misclab"; name = "Test Chamber Blast Doors"; pixel_x = 6; pixel_y = 30; req_access = list(47)},/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/rnd/misc_lab)
"cao" = (/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/obj/structure/bed/chair/comfy/teal{tag = "icon-comfychair (EAST)"; icon_state = "comfychair"; dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitered"},/area/medical/ward)
"cap" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/bed/roller,/turf/simulated/floor{icon_state = "white"},/area/medical/patient_wing)
"caq" = (/turf/simulated/wall,/area/crew_quarters/sleep/engi_wash)
@@ -5463,7 +5463,7 @@
"cbc" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research_starboard)
"cbd" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor/engine/vacuum,/area/rnd/mixing)
"cbe" = (/obj/structure/sign/fire{pixel_y = -32},/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/engine,/area/rnd/mixing)
-"cbf" = (/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access = list(7)},/obj/machinery/button/ignition{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/valve{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing)
+"cbf" = (/obj/machinery/button/remote/blast_door{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access = list(7)},/obj/machinery/button/ignition{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/valve{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/rnd/mixing)
"cbg" = (/obj/machinery/atmospherics/pipe/simple/hidden{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/mixing)
"cbh" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/research_starboard)
"cbi" = (/obj/machinery/door/airlock/glass_research{autoclose = 0; frequency = 1379; glass = 1; icon_state = "door_locked"; id_tag = "tox_airlock_interior"; locked = 1; name = "Mixing Room Interior Airlock"; req_access = list(8)},/turf/simulated/floor/engine,/area/rnd/mixing)
@@ -5514,7 +5514,7 @@
"ccb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing)
"ccc" = (/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "psych"; name = "Mental Health Privacy Shutters"; opacity = 0},/obj/structure/window/reinforced/polarized,/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/medical/psych)
"ccd" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/substation/research)
-"cce" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/maintenance/research_port)
+"cce" = (/obj/structure/grille/broken,/turf/simulated/floor/plating,/area/maintenance/research_port)
"ccf" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/medical/patient_wing)
"ccg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing)
"cch" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing)
@@ -5552,7 +5552,7 @@
"ccN" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/crew_quarters/heads/chief)
"ccO" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/crew_quarters/heads/chief)
"ccP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/maintenance/research_starboard)
-"ccQ" = (/obj/structure/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chief Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "cedoor"; name = "Office Door Control"; normaldoorcontrol = 1; pixel_x = 26; pixel_y = 17; req_access = list(56)},/turf/simulated/floor,/area/crew_quarters/heads/chief)
+"ccQ" = (/obj/structure/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chief Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/button/windowtint{pixel_x = 36; pixel_y = 18},/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the office door."; id = "cedoor"; name = "Office Door Control"; pixel_x = 26; pixel_y = 17; req_access = list(56)},/turf/simulated/floor,/area/crew_quarters/heads/chief)
"ccR" = (/turf/simulated/floor/plating/airless,/area/maintenance/atmos_control)
"ccS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/command{id_tag = "cedoor"; name = "Chief Engineer"; req_access = list(56)},/turf/simulated/floor,/area/crew_quarters/heads/chief)
"ccT" = (/obj/machinery/light/small,/turf/simulated/floor{dir = 10; icon_state = "floorgrimecaution"},/area/maintenance/atmos_control)
@@ -5615,7 +5615,7 @@
"cdY" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_eva_inner"; locked = 1; name = "Engineering EVA Internal Access"; req_access = list(13)},/turf/simulated/floor/plating,/area/maintenance/atmos_control)
"cdZ" = (/obj/structure/closet/secure_closet/engineering_chief,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/crew_quarters/heads/chief)
"cea" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "toxin_test_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "toxin_test_sensor"; pixel_x = 0; pixel_y = 16},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/research_starboard)
-"ceb" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/door_control{desc = "A remote control-switch for engine core."; id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -24; pixel_y = 10; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door_control{desc = "A remote control-switch for the engine core airlock hatch bolts."; id = "engine_access_hatch"; name = "Engine Hatch Bolt Control"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = -10; req_access = list(10); specialfunctions = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief)
+"ceb" = (/obj/machinery/keycard_auth{pixel_x = -24; pixel_y = 0},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for engine core."; id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = -24; pixel_y = 10; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the engine core airlock hatch bolts."; id = "engine_access_hatch"; name = "Engine Hatch Bolt Control"; pixel_x = -24; pixel_y = -10; req_access = list(10); specialfunctions = 4},/turf/simulated/floor,/area/crew_quarters/heads/chief)
"cec" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized{dir = 4},/obj/structure/window/reinforced/polarized{dir = 1},/turf/simulated/floor/plating,/area/crew_quarters/heads/chief)
"ced" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access = list(10,24,5)},/turf/simulated/floor,/area/engineering/break_room)
"cee" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet,/area/engineering/break_room)
@@ -5634,7 +5634,7 @@
"cer" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/medical/psych)
"ces" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/atmos_control)
"cet" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/atmos_control)
-"ceu" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/button/windowtint{pixel_x = -25},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 8},/obj/machinery/door_control{desc = "A remote control-switch for the office door."; id = "mentaldoor"; name = "office door control"; normaldoorcontrol = 1; pixel_x = -34; pixel_y = 7},/turf/simulated/floor/wood,/area/medical/psych)
+"ceu" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/button/windowtint{pixel_x = -25},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 8},/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the office door."; id = "mentaldoor"; name = "office door control"; pixel_x = -34; pixel_y = 7},/turf/simulated/floor/wood,/area/medical/psych)
"cev" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 25; pixel_y = 0},/obj/machinery/camera/network/medbay{c_tag = "Medbay Patient Room C"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/patient_c)
"cew" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer)
"cex" = (/obj/item/weapon/shard,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/research_port)
@@ -5717,7 +5717,7 @@
"cfW" = (/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/medical/surgeryobs)
"cfX" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/medical/surgeryobs)
"cfY" = (/turf/simulated/wall,/area/medical/surgeryprep)
-"cfZ" = (/obj/machinery/door_control{desc = "A remote control-switch for Surgery."; id = "Surgery"; name = "Surgery"; normaldoorcontrol = 1; pixel_x = -24; pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/surgeryprep)
+"cfZ" = (/obj/machinery/button/remote/airlock{desc = "A remote control-switch for Surgery."; id = "Surgery"; name = "Surgery"; pixel_x = -24; pixel_y = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/medical/surgeryprep)
"cga" = (/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/medical/surgeryprep)
"cgb" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{dir = 10; icon_state = "whitered"},/area/medical/ward)
"cgc" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{dir = 7; icon_state = "whitered"},/area/medical/ward)
@@ -5766,14 +5766,14 @@
"cgT" = (/turf/simulated/floor/plating,/area/construction)
"cgU" = (/turf/simulated/floor,/area/construction)
"cgV" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table,/obj/item/clothing/gloves/black,/obj/item/device/multitool{pixel_x = 5},/obj/random/tech_supply,/turf/simulated/floor,/area/construction)
-"cgW" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/engine_eva)
-"cgX" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/engine_eva)
-"cgY" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva)
-"cgZ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva)
-"cha" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer)
+"cgW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/engine_eva)
+"cgX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/engineering/engine_eva)
+"cgY" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/engine_eva)
+"cgZ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/engine_eva)
+"cha" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/red,/turf/simulated/floor,/area/engineering/foyer)
"chb" = (/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced/polarized{dir = 1},/obj/structure/window/reinforced/polarized{dir = 8},/obj/structure/window/reinforced/polarized,/turf/simulated/floor/plating,/area/crew_quarters/heads/chief)
"chc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer)
-"chd" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer)
+"chd" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/engine_eva)
"che" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/engineering/foyer)
"chf" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer)
"chg" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/foyer)
@@ -5820,7 +5820,7 @@
"chV" = (/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/table/reinforced{icon_state = "table"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/engineering/engine_eva)
"chW" = (/turf/simulated/wall/r_wall,/area/engineering/engine_eva)
"chX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engineering/engine_eva)
-"chY" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/engineering/engine_eva)
+"chY" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/red{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/foyer)
"chZ" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cia" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cib" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Engineering Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering)
@@ -5858,13 +5858,13 @@
"ciH" = (/obj/structure/closet/secure_closet/medical2,/obj/machinery/light_switch{pixel_x = -22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"ciI" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"ciJ" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"ciK" = (/obj/machinery/door_control{id = "surgeryobs"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/surgery)
+"ciK" = (/obj/machinery/button/remote/blast_door{id = "surgeryobs"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{dir = 4; icon_state = "whitered"},/area/medical/surgery)
"ciL" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/generic,/obj/machinery/camera/network/engineering{c_tag = "Solar Maintenance Aft Starboard Access"; dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/research_starboard)
"ciM" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/surgeryprep)
"ciN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/medical/surgeryprep)
"ciO" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/medical/surgeryprep)
"ciP" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/machinery/light{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/southleft{name = "Engineering Hardsuits"; req_access = list(11)},/obj/item/clothing/suit/space/void/engineering,/turf/simulated/floor,/area/engineering/engine_eva)
-"ciQ" = (/obj/machinery/door_control{id = "surgeryobs2"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/surgery2)
+"ciQ" = (/obj/machinery/button/remote/blast_door{id = "surgeryobs2"; name = "Privacy Shutters"; pixel_y = 25},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/surgery2)
"ciR" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2)
"ciS" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2)
"ciT" = (/obj/structure/closet/secure_closet/medical2,/obj/machinery/light_switch{pixel_x = 22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2)
@@ -5889,7 +5889,7 @@
"cjm" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/manifold/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"cjn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/light,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor/plating,/area/rnd/xenobiology/xenoflora)
"cjo" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora)
-"cjp" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/engine_eva)
+"cjp" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/red,/turf/simulated/floor,/area/engineering/engine_eva)
"cjq" = (/obj/machinery/light,/obj/structure/table,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/engineering/break_room)
"cjr" = (/obj/structure/table,/obj/item/clothing/gloves/latex,/obj/item/weapon/hand_labeler,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora)
"cjs" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology/xenoflora)
@@ -5957,7 +5957,7 @@
"ckC" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/engineering{name = "Engineering EVA Storage"; req_access = list(12); req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/engineering/engine_eva)
"ckD" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 2; frequency = 1441; icon_state = "map_injector"; id = "n2_in"; use_power = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos)
"ckE" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/rnd/xenobiology)
-"ckF" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering EVA Storage"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/engine_eva)
+"ckF" = (/obj/machinery/atmospherics/pipe/simple/hidden/red,/turf/simulated/floor,/area/engineering/engine_eva)
"ckG" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/rnd/xenobiology/xenoflora)
"ckH" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{tag = "icon-whitegreen (NORTHWEST)"; icon_state = "whitegreen"; dir = 9},/area/rnd/xenobiology/xenoflora)
"ckI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; external_pressure_bound = 0; external_pressure_bound_default = 0; frequency = 1441; icon_state = "map_vent_in"; id_tag = "n2_out"; initialize_directions = 1; internal_pressure_bound = 4000; internal_pressure_bound_default = 4000; use_power = 1; pressure_checks = 2; pressure_checks_default = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos)
@@ -5984,7 +5984,7 @@
"cld" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/foyer)
"cle" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/locker_room)
"clf" = (/obj/structure/window/basic{dir = 4},/obj/machinery/shower{dir = 1},/obj/machinery/door/window/northleft{name = "Shower"; req_access = list()},/obj/structure/curtain/open/shower/engineering,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash)
-"clg" = (/obj/machinery/door_control{id = "engineering_cubicle"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 8; specialfunctions = 4},/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash)
+"clg" = (/obj/machinery/button/remote/airlock{id = "engineering_cubicle"; name = "Door Bolt Control"; pixel_x = -25; pixel_y = 8; specialfunctions = 4},/obj/structure/toilet{dir = 1},/obj/machinery/light/small{dir = 4},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/sleep/engi_wash)
"clh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/locker_room)
"cli" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/locker_room)
"clj" = (/turf/simulated/floor,/area/engineering/locker_room)
@@ -6048,7 +6048,7 @@
"cmp" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Nitrogen"},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/engineering/atmos)
"cmq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"cmr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
-"cms" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"cms" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access = list(12); req_one_access = list(11,24)},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/red,/turf/simulated/floor,/area/engineering/engine_eva)
"cmt" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/wall/r_wall,/area/engineering/atmos)
"cmu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/atmos_control)
"cmv" = (/obj/structure/sign/securearea{pixel_x = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/atmos_control)
@@ -6057,7 +6057,7 @@
"cmy" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/foyer)
"cmz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/construction)
"cmA" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/construction)
-"cmB" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/engineering/foyer)
+"cmB" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/atmospherics/pipe/simple/hidden/red,/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/engineering/foyer)
"cmC" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/turf/simulated/floor,/area/engineering/foyer)
"cmD" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/engineering/foyer)
"cmE" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact-f (EAST)"},/obj/machinery/computer/guestpass{pixel_y = -28},/turf/simulated/floor,/area/engineering/foyer)
@@ -6121,7 +6121,7 @@
"cnK" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access = list(55)},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access = list(55)},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"cnL" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access = list(10,13)},/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/starboardsolar)
"cnM" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engineering/workshop)
-"cnN" = (/obj/machinery/door/airlock/maintenance{name = "Engineering EVA Storage Maintainance"; req_access = list(12); req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/engine_eva)
+"cnN" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space)
"cnO" = (/turf/simulated/wall/r_wall,/area/engineering/workshop)
"cnP" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Locker Room"; req_one_access = list(11,24)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/locker_room)
"cnQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 1"; req_access = list(45)},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/medical/surgeryprep)
@@ -6158,20 +6158,20 @@
"cov" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
"cow" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
"cox" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos)
-"coy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plating,/area/engineering/atmos)
+"coy" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access = list(12,24)},/obj/machinery/atmospherics/pipe/simple/hidden/red,/turf/simulated/floor,/area/engineering/atmos)
"coz" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry/port)
-"coA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/engineering/atmos)
-"coB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos)
-"coC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/turf/simulated/floor/plating,/area/engineering/atmos)
+"coA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
+"coB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/engineering/atmos)
+"coC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/atmos)
"coD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos)
"coE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
-"coF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos)
+"coF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/turf/simulated/floor/plating,/area/engineering/atmos)
"coG" = (/obj/machinery/meter{frequency = 1443; id = "dloop_atm_meter"; name = "Distribution Loop"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/visible/supply{dir = 8},/turf/simulated/floor,/area/engineering/atmos)
"coH" = (/obj/machinery/meter{frequency = 1443; id = "wloop_atm_meter"; name = "Waste Loop"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/engineering/atmos)
"coI" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/machinery/meter,/obj/machinery/firealarm{pixel_y = 24},/turf/simulated/floor,/area/engineering/atmos)
-"coJ" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/turf/simulated/floor,/area/engineering/atmos)
+"coJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos)
"coK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engineering/atmos/monitoring)
-"coL" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/engineering/atmos)
+"coL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/turf/simulated/floor/plating,/area/engineering/atmos)
"coM" = (/obj/machinery/firealarm{pixel_x = 32; pixel_y = 24},/turf/simulated/floor,/area/engineering/atmos/monitoring)
"coN" = (/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Engine Waste")},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos/monitoring)
"coO" = (/obj/machinery/computer/atmoscontrol,/turf/simulated/floor,/area/engineering/atmos/monitoring)
@@ -6210,29 +6210,29 @@
"cpv" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos)
"cpw" = (/obj/machinery/atmospherics/valve/digital/open{name = "Mixed Air Inlet Valve"},/turf/simulated/floor{icon_state = "arrival"; dir = 5},/area/engineering/atmos)
"cpx" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; pressure_setting = 2000; sensors = list("air_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "arrival"},/area/engineering/atmos)
-"cpy" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engineering/atmos)
+"cpy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor/plating,/area/engineering/atmos)
"cpz" = (/obj/machinery/atmospherics/valve/digital/open{name = "Oxygen Outlet Valve"},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/engineering/atmos)
"cpA" = (/obj/machinery/button/holosign{pixel_x = 24; pixel_y = 2},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/camera/network/medbay{c_tag = "Medbay Operating Theatre 1"; dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/medical/surgery)
-"cpB" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/engineering/atmos)
-"cpC" = (/obj/machinery/atmospherics/binary/pump{name = "O2 to Connector"},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos)
+"cpB" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos)
+"cpC" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor,/area/engineering/atmos)
"cpD" = (/obj/machinery/atmospherics/valve/digital/open{name = "Nitrogen Outlet Valve"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/engineering/atmos)
"cpE" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2_in"; name = "Nitrogen Supply Control"; output_tag = "n2_out"; sensors = list("n2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/engineering/atmos)
"cpF" = (/turf/simulated/floor,/area/engineering/atmos)
-"cpG" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/space,/area/space)
-"cpH" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/binary/pump{name = "N2 to Connector"},/turf/simulated/floor,/area/engineering/atmos)
-"cpI" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/space,/area/space)
+"cpG" = (/obj/machinery/atmospherics/binary/pump{name = "Air Mix to Connector"},/turf/simulated/floor,/area/engineering/atmos)
+"cpH" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engineering/atmos)
+"cpI" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/engineering/atmos)
"cpJ" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 25},/turf/simulated/floor,/area/engineering/atmos)
"cpK" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry/aft)
"cpL" = (/obj/structure/reagent_dispensers/watertank,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos)
"cpM" = (/obj/structure/table,/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 = 4; name = "Atmos RC"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor,/area/engineering/atmos)
-"cpN" = (/obj/structure/dispenser,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/engineering/atmos)
+"cpN" = (/obj/machinery/atmospherics/binary/pump{name = "O2 to Connector"},/turf/simulated/floor,/area/engineering/atmos)
"cpO" = (/obj/machinery/button/holosign{pixel_x = -24; pixel_y = 2},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/camera/network/medbay{c_tag = "Medbay Operating Theatre 2"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whiteredcorner"},/area/medical/surgery2)
-"cpP" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/space,/area/space)
+"cpP" = (/obj/machinery/atmospherics/binary/pump{name = "N2 to Connector"},/turf/simulated/floor,/area/engineering/atmos)
"cpQ" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/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},/turf/simulated/floor,/area/engineering/atmos)
-"cpR" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/space,/area/space)
+"cpR" = (/obj/structure/dispenser,/turf/simulated/floor,/area/engineering/atmos)
"cpS" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/hallway/secondary/entry/port)
"cpT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
-"cpU" = (/obj/structure/table,/obj/machinery/newscaster{pixel_y = 30},/obj/machinery/light{dir = 1},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/belt/utility/atmostech,/obj/item/weapon/storage/belt/utility/atmostech,/turf/simulated/floor,/area/engineering/atmos)
+"cpU" = (/obj/structure/table,/obj/machinery/newscaster{pixel_y = 30},/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/belt/utility/atmostech,/obj/item/weapon/storage/belt/utility/atmostech,/turf/simulated/floor,/area/engineering/atmos)
"cpV" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; sortType = "Atmospherics"; name = "Atmospherics"},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos)
"cpW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/engineering/atmos)
"cpX" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; name = "Air to Ports"},/turf/simulated/floor,/area/engineering/atmos)
@@ -6267,7 +6267,7 @@
"cqA" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor,/area/maintenance/atmos_control)
"cqB" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"cqC" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
-"cqD" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance Access"; req_access = list(12,24)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor,/area/engineering/atmos)
+"cqD" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible/blue,/turf/simulated/floor,/area/engineering/atmos)
"cqE" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{tag_exterior_door = "xeno_airlock_exterior"; id_tag = "xeno_airlock_control"; tag_interior_door = "xeno_airlock_interior"; name = "Xenobiology Access Console"; pixel_x = 8; pixel_y = 22},/obj/machinery/light_switch{pixel_x = -6; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitegreencorner"},/area/rnd/xenobiology)
"cqF" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/purple{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/rnd/xenobiology)
"cqG" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitegreencorner"},/area/rnd/xenobiology)
@@ -6275,9 +6275,9 @@
"cqI" = (/obj/machinery/door/airlock/glass_atmos{name = "Atmospherics Monitoring Room"; req_access = list(24)},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/engineering/atmos/monitoring)
"cqJ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering)
"cqK" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/engineering)
-"cqL" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/structure/lattice,/turf/space,/area/space)
+"cqL" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/turf/simulated/floor,/area/engineering/atmos)
"cqM" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop)
-"cqN" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/space,/area/space)
+"cqN" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
"cqO" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access = list(11)},/turf/simulated/floor,/area/engineering/engineering_monitoring)
"cqP" = (/obj/machinery/shield_capacitor,/turf/simulated/floor/plating,/area/engineering/storage)
"cqQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 2; icon_state = "green"},/area/medical/virologyaccess)
@@ -6286,11 +6286,11 @@
"cqT" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/security/prison)
"cqU" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
"cqV" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Air Tank Bypass Pump"},/turf/simulated/floor,/area/engineering/atmos)
-"cqW" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor,/area/engineering/atmos)
+"cqW" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor,/area/engineering/atmos)
"cqX" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor,/area/engineering/atmos)
"cqY" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor,/area/engineering/atmos)
"cqZ" = (/obj/structure/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/engineering/atmos)
-"cra" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/engineering/atmos)
+"cra" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10},/turf/simulated/floor,/area/engineering/atmos)
"crb" = (/obj/machinery/atmospherics/binary/pump/on{name = "Scrubber to Waste"},/turf/simulated/floor,/area/engineering/atmos)
"crc" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor,/area/engineering/atmos)
"crd" = (/obj/machinery/atmospherics/binary/pump/on{dir = 1; name = "Air to Supply"},/turf/simulated/floor,/area/engineering/atmos)
@@ -6336,15 +6336,15 @@
"crR" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/virology)
"crS" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/structure/bed,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/virology)
"crT" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/virology)
-"crU" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 8},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
-"crV" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
+"crU" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "O2 to Mixing"},/turf/simulated/floor,/area/engineering/atmos)
+"crV" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/visible/blue,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
"crW" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
-"crX" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
+"crX" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor,/area/engineering/atmos)
"crY" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/engineering)
-"crZ" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/engineering/atmos)
-"csa" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "O2 to Transit"},/turf/simulated/floor,/area/engineering/atmos)
-"csb" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
-"csc" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor,/area/engineering/atmos)
+"crZ" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
+"csa" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/turf/simulated/floor,/area/engineering/atmos)
+"csb" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
+"csc" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "N2 to Mixing"},/turf/simulated/floor,/area/engineering/atmos)
"csd" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_one_access = list(11,24)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/workshop)
"cse" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_one_access = list(11,24)},/turf/simulated/floor,/area/engineering/workshop)
"csf" = (/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
@@ -6384,16 +6384,16 @@
"csN" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"csO" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos)
"csP" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
-"csQ" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos)
+"csQ" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
"csR" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology)
"csS" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"csT" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos)
"csU" = (/obj/machinery/atmospherics/omni/mixer{active_power_usage = 7500; use_power = 1; tag_east = 1; tag_east_con = 0.79; tag_north = 1; tag_north_con = 0.21; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos)
"csV" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
-"csW" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
-"csX" = (/obj/machinery/atmospherics/pipe/manifold/visible/green,/turf/simulated/floor,/area/engineering/atmos)
-"csY" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{tag = "icon-map (EAST)"; icon_state = "map"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
-"csZ" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "N2 to Transit"},/turf/simulated/floor,/area/engineering/atmos)
+"csW" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible/blue{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/turf/simulated/floor,/area/engineering/atmos)
+"csX" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos)
+"csY" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor,/area/engineering/atmos)
+"csZ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Port to Supply"},/turf/simulated/floor,/area/engineering/atmos)
"cta" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Supply to Waste"},/turf/simulated/floor,/area/engineering/atmos)
"ctb" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre 2 Storage"; req_access = list(45)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery2)
"ctc" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access = list(55)},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology)
@@ -6441,17 +6441,17 @@
"ctS" = (/obj/machinery/computer/security/engineering{network = list("Engineering","Engineering Outpost","Power Alarms","Atmosphere Alarms","Fire Alarms")},/turf/simulated/floor{dir = 8; icon_state = "floorgrimecaution"},/area/engineering/engineering_monitoring)
"ctT" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/maintenance/medbay)
"ctU" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
-"ctV" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light,/obj/machinery/door_control{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = 0; pixel_y = -28; req_access = list(5)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/medical/virologyaccess)
+"ctV" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light,/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = 0; pixel_y = -28; req_access = list(5)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "greencorner"},/area/medical/virologyaccess)
"ctW" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"ctX" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/starboard)
"ctY" = (/turf/space,/area/syndicate_station/southwest)
"ctZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
-"cua" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/xenobiology)
+"cua" = (/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/rnd/xenobiology)
"cub" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "surgeryobs"; name = "Operating Theatre Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery)
"cuc" = (/obj/structure/bed/chair{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"cud" = (/obj/structure/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Xenobiologist"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
-"cue" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/turf/simulated/floor,/area/engineering/atmos)
-"cuf" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"; tag = "icon-intact (EAST)"},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix to Supply"},/turf/simulated/floor,/area/engineering/atmos)
+"cue" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/engineering/atmos)
+"cuf" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor,/area/engineering/atmos)
"cug" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/simulated/floor,/area/engineering/atmos)
"cuh" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
"cui" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engineering/atmos)
@@ -6508,8 +6508,8 @@
"cvh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cvi" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"cvj" = (/obj/structure/bed/chair{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
-"cvk" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
-"cvl" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
+"cvk" = (/obj/machinery/atmospherics/pipe/cap/visible,/turf/simulated/floor,/area/engineering/atmos)
+"cvl" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
"cvm" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "virologyquar"; name = "Virology Emergency Quarantine Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virologyaccess)
"cvn" = (/obj/machinery/atmospherics/pipe/manifold/visible/red,/turf/simulated/floor,/area/engineering/atmos)
"cvo" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
@@ -6547,7 +6547,7 @@
"cvU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cvV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cvW" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor,/area/engineering/atmos)
-"cvX" = (/obj/machinery/atmospherics/pipe/cap/visible{color = "#ffcc00"},/turf/simulated/floor,/area/engineering/atmos)
+"cvX" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor,/area/engineering/atmos)
"cvY" = (/obj/machinery/power/apc/super{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/atmos)
"cvZ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/engineering/atmos)
"cwa" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/engineering/atmos)
@@ -6562,7 +6562,7 @@
"cwj" = (/obj/machinery/power/solar{id = "starboardsolar"; name = "Starboard Solar Array"},/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/starboard)
"cwk" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/engineering)
"cwl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio3"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/rnd/xenobiology)
-"cwm" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 6; icon_state = "intact"; tag = "icon-intact-f (SOUTHEAST)"},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"cwm" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Port to Waste"},/turf/simulated/floor,/area/engineering/atmos)
"cwn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/solar/port)
"cwo" = (/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/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering)
"cwp" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/engineering)
@@ -6599,13 +6599,13 @@
"cwU" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Monitoring Room"; req_access = list(11)},/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,/turf/simulated/floor,/area/engineering/engineering_monitoring)
"cwV" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/medical/virology)
"cwW" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "Engineering Hallway North"; dir = 4},/turf/simulated/floor,/area/engineering)
-"cwX" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
-"cwY" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Mix to Waste"},/turf/simulated/floor,/area/engineering/atmos)
+"cwX" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor,/area/engineering/atmos)
+"cwY" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor,/area/engineering/atmos)
"cwZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/engineering{c_tag = "Engineering Workshop"; dir = 8},/turf/simulated/floor,/area/engineering/workshop)
"cxa" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
"cxb" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/yellow,/turf/simulated/floor,/area/engineering/atmos)
"cxc" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow,/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
-"cxd" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
+"cxd" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
"cxe" = (/obj/structure/table,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/obj/item/weapon/storage/box/monkeycubes,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cxf" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating/airless,/area/solar/port)
"cxg" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
@@ -6616,12 +6616,12 @@
"cxl" = (/obj/machinery/atmospherics/valve/digital{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
"cxm" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/deathsposal{pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/purple{dir = 4},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/rnd/xenobiology)
"cxn" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor,/area/rnd/xenobiology)
-"cxo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
-"cxp" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor,/area/engineering/atmos/storage)
+"cxo" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
+"cxp" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor,/area/engineering/atmos/storage)
"cxq" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera/network/engineering{c_tag = "Engineering Storage"; dir = 4},/turf/simulated/floor/plating,/area/engineering/storage)
"cxr" = (/obj/structure/closet/crate,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/smes_coil,/obj/item/weapon/smes_coil,/obj/item/weapon/smes_coil/super_capacity,/obj/item/weapon/smes_coil/super_capacity,/obj/item/weapon/smes_coil/super_io,/obj/item/weapon/smes_coil/super_io,/turf/simulated/floor/plating,/area/engineering/storage)
"cxs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Operating Theatre 1 Maintenance Access"; req_access = list(45)},/turf/simulated/floor/plating,/area/medical/surgery)
-"cxt" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/hidden/yellow,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"cxt" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor,/area/engineering/atmos/storage)
"cxu" = (/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,/turf/simulated/floor,/area/engineering)
"cxv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/engineering/workshop)
"cxw" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor,/area/engineering/workshop)
@@ -6635,7 +6635,7 @@
"cxE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/medical/virology)
"cxF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Operating Theatre 2 Maintenance Access"; req_access = list(45)},/turf/simulated/floor/plating,/area/medical/surgery2)
"cxG" = (/obj/machinery/atmospherics/omni/filter{use_power = 1; tag_east = 1; tag_north = 3; tag_south = 6; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos)
-"cxH" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
+"cxH" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor,/area/engineering/atmos/storage)
"cxI" = (/obj/machinery/atmospherics/omni/filter{use_power = 1; tag_east = 1; tag_north = 4; tag_south = 7; tag_west = 2},/turf/simulated/floor,/area/engineering/atmos)
"cxJ" = (/obj/machinery/smartfridge/secure/virology,/obj/structure/sign/deathsposal{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cxK" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
@@ -6674,7 +6674,7 @@
"cyr" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"; pixel_x = 0; pixel_y = 32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Engineering\\Medbay Maintenance"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering)
"cys" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor,/area/engineering/atmos/storage)
"cyt" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/engineering)
-"cyu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{tag = "icon-map (WEST)"; icon_state = "map"; dir = 8},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"cyu" = (/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor,/area/engineering/atmos/storage)
"cyv" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/engineering)
"cyw" = (/obj/structure/table,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/engineering/workshop)
"cyx" = (/obj/structure/bed/chair,/obj/effect/landmark/start{name = "Station Engineer"},/turf/simulated/floor,/area/engineering/workshop)
@@ -6684,13 +6684,13 @@
"cyB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/medical/virology)
"cyC" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Transit to Waste"},/turf/simulated/floor,/area/engineering/atmos)
"cyD" = (/obj/machinery/atmospherics/binary/passive_gate{name = "Waste to Space"},/turf/simulated/floor,/area/engineering/atmos)
-"cyE" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos)
-"cyF" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/turf/simulated/floor,/area/engineering/atmos)
+"cyE" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/manifold4w/hidden,/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"cyF" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
"cyG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/atmos)
-"cyH" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology)
+"cyH" = (/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "xenobio2"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology)
"cyI" = (/obj/machinery/space_heater,/turf/simulated/floor,/area/engineering/atmos/storage)
"cyJ" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
-"cyK" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
+"cyK" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"; tag = "icon-manifold-f (WEST)"},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
"cyL" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/electrical,/turf/simulated/floor,/area/engineering/workshop)
"cyM" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"cyN" = (/obj/machinery/atmospherics/trinary/mixer,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
@@ -6719,11 +6719,11 @@
"czk" = (/obj/machinery/light{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology)
"czl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engineering/atmos)
"czm" = (/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor,/area/engineering/atmos)
-"czn" = (/obj/machinery/atmospherics/pipe/manifold/visible/green{dir = 1},/turf/simulated/floor,/area/engineering/atmos)
-"czo" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/green,/turf/simulated/floor,/area/engineering/atmos)
+"czn" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/engineering/atmos)
+"czo" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/wall/r_wall,/area/engineering/atmos/storage)
"czp" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/green{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
-"czq" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/turf/simulated/floor,/area/engineering/atmos)
-"czr" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Transit to Mix"},/turf/simulated/floor,/area/engineering/atmos)
+"czq" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6},/turf/simulated/floor,/area/engineering/atmos)
+"czr" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/turf/simulated/floor,/area/engineering/atmos)
"czs" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
"czt" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
"czu" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
@@ -6765,7 +6765,7 @@
"cAe" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cAf" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/rnd/xenobiology)
"cAg" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/rnd/xenobiology)
-"cAh" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Transit"},/turf/simulated/floor,/area/engineering/atmos)
+"cAh" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Mixing to Port"},/turf/simulated/floor,/area/engineering/atmos)
"cAi" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"cAj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"cAk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
@@ -6777,17 +6777,17 @@
"cAq" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/rnd/xenobiology)
"cAr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/rnd/xenobiology)
"cAs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering)
-"cAt" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Phoron to Transit"},/turf/simulated/floor,/area/engineering/atmos)
+"cAt" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor,/area/engineering/atmos)
"cAu" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2O to Transit"},/turf/simulated/floor,/area/engineering/atmos)
-"cAv" = (/obj/machinery/atmospherics/binary/pump{name = "Transit to Mix Tank"},/turf/simulated/floor,/area/engineering/atmos)
-"cAw" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix Tank to Transit"},/turf/simulated/floor,/area/engineering/atmos)
-"cAx" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/engineering/atmos)
+"cAv" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Mixing"},/turf/simulated/floor,/area/engineering/atmos)
+"cAw" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Phoron to Mixing"},/turf/simulated/floor,/area/engineering/atmos)
+"cAx" = (/obj/machinery/atmospherics/binary/pump{name = "Mixing to Mix Tank"},/turf/simulated/floor,/area/engineering/atmos)
"cAy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/portable_atmospherics/canister/phoron,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
"cAz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engineering/atmos)
-"cAA" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
+"cAA" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix Tank to Port"},/turf/simulated/floor,/area/engineering/atmos)
"cAB" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
"cAC" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
-"cAD" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
+"cAD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor,/area/engineering/atmos)
"cAE" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
"cAF" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/atmos/storage)
"cAG" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.1; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = 10; pixel_y = -22},/obj/structure/sign/fire{pixel_x = -32; pixel_y = 0},/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/binary/pump,/turf/simulated/floor/plating,/area/maintenance/incinerator)
@@ -6822,32 +6822,32 @@
"cBj" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/engineering)
"cBk" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{tag = "icon-map (WEST)"; icon_state = "map"; dir = 8},/turf/simulated/floor,/area/engineering/atmos)
"cBl" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/rnd/xenobiology)
-"cBm" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/turf/simulated/floor,/area/engineering/atmos/storage)
-"cBn" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor,/area/engineering/atmos/storage)
+"cBm" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
+"cBn" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engineering/atmos)
"cBo" = (/obj/machinery/light,/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology)
"cBp" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology)
-"cBq" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/engineering/atmos/storage)
+"cBq" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor{dir = 10; icon_state = "yellow"},/area/engineering/atmos)
"cBr" = (/obj/machinery/light,/obj/structure/closet,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology)
"cBs" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{name = "Virology Laboratory"; req_access = list(39)},/turf/simulated/floor{icon_state = "delivery"},/area/medical/virology)
"cBt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/plating,/area/medical/virology)
-"cBu" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "yellow"},/area/engineering/atmos)
+"cBu" = (/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Southwest"; dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/atmos)
"cBv" = (/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos)
"cBw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "incinerator_access_control"; name = "Incinerator airlock control"; pixel_x = -8; pixel_y = 24},/obj/structure/sign/fire{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/binary/pump{dir = 1},/turf/simulated/floor/plating,/area/maintenance/incinerator)
"cBx" = (/obj/machinery/atmospherics/valve/digital{name = "CO2 Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/engineering/atmos)
"cBy" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "co2_in"; name = "Carbon Dioxide Supply Control"; output_tag = "co2_out"; sensors = list("co2_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "yellow"},/area/engineering/atmos)
"cBz" = (/obj/machinery/door/window/southright{name = "Virology Isolation Room Two"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology)
-"cBA" = (/obj/machinery/light,/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Connector"},/turf/simulated/floor,/area/engineering/atmos)
+"cBA" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "CO2 to Connector"},/turf/simulated/floor,/area/engineering/atmos)
"cBB" = (/obj/machinery/atmospherics/valve/digital{name = "Phoron Outlet Valve"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engineering/atmos)
"cBC" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "tox_in"; name = "Phoron Supply Control"; output_tag = "tox_out"; sensors = list("tox_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/engineering/atmos)
-"cBD" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor{dir = 10; icon_state = "escape"},/area/engineering/atmos)
-"cBE" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Phoron to Connector"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos)
+"cBD" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor{dir = 10; icon_state = "escape"},/area/engineering/atmos)
+"cBE" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Phoron to Connector"},/turf/simulated/floor,/area/engineering/atmos)
"cBF" = (/obj/machinery/atmospherics/valve/digital{name = "N2O Outlet Valve"},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/engineering/atmos)
"cBG" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "n2o_in"; name = "Nitrous Oxide Supply Control"; output_tag = "n2o_out"; sensors = list("n2o_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 7; icon_state = "escape"},/area/engineering/atmos)
-"cBH" = (/obj/machinery/light,/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2O to Connector"},/turf/simulated/floor,/area/engineering/atmos)
+"cBH" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "N2O to Connector"},/turf/simulated/floor,/area/engineering/atmos)
"cBI" = (/obj/machinery/door/window/southright{name = "Virology Isolation Room Three"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology)
"cBJ" = (/obj/machinery/atmospherics/valve/digital{name = "Gas Mix Outlet Valve"},/turf/simulated/floor{icon_state = "green"; dir = 6},/area/engineering/atmos)
-"cBK" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "waste_in"; name = "Gas Mix Tank Control"; output_tag = "waste_out"; sensors = list("waste_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "green"},/area/engineering/atmos)
-"cBL" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/atmos)
+"cBK" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1441; input_tag = "waste_in"; name = "Gas Mix Tank Control"; output_tag = "waste_out"; sensors = list("waste_sensor" = "Tank")},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor{dir = 2; icon_state = "green"},/area/engineering/atmos)
+"cBL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor,/area/engineering/atmos)
"cBM" = (/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix Tank to Connector"},/obj/machinery/light,/turf/simulated/floor,/area/engineering/atmos)
"cBN" = (/turf/simulated/wall/r_wall,/area/engineering/drone_fabrication)
"cBO" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio1"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access = list(55)},/turf/simulated/floor/engine,/area/rnd/xenobiology)
@@ -6866,14 +6866,14 @@
"cCb" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/wall/r_wall,/area/maintenance/incinerator)
"cCc" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/obj/machinery/meter,/turf/simulated/floor,/area/engineering/atmos)
"cCd" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/incinerator)
-"cCe" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/simulated/floor,/area/engineering/atmos)
+"cCe" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/atmos)
"cCf" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{tag = "icon-map (NORTH)"; icon_state = "map"; dir = 1},/turf/simulated/floor,/area/engineering/atmos)
"cCg" = (/obj/structure/table,/obj/item/weapon/storage/box/cups,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cCh" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cCi" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10},/turf/simulated/floor,/area/engineering/atmos)
"cCj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology)
"cCk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/status_display,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology)
-"cCl" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/plating/airless,/area/space)
+"cCl" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/simulated/floor/plating,/area/engineering/atmos)
"cCm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology)
"cCn" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Southeast"; dir = 1},/turf/simulated/floor,/area/engineering/atmos)
"cCo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/virology)
@@ -6889,16 +6889,16 @@
"cCy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/medical/virology)
"cCz" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/engineering/atmos)
"cCA" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/engineering/atmos)
-"cCB" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
+"cCB" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/engineering/atmos)
"cCC" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
"cCD" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
"cCE" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/engineering/atmos)
-"cCF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
+"cCF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/visible/red,/turf/simulated/floor/plating,/area/engineering/atmos)
"cCG" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
"cCH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plating,/area/engineering/atmos)
"cCI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
-"cCJ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos)
-"cCK" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/visible/purple{tag = "icon-intact (NORTH)"; icon_state = "intact"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/plating,/area/engineering/atmos)
+"cCJ" = (/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor/plating/airless,/area/space)
+"cCK" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/space,/area/space)
"cCL" = (/obj/machinery/cryopod/robot/right,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"cCM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"cCN" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Engineering Firelock"},/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(12,24)},/turf/simulated/floor,/area/engineering/atmos/storage)
@@ -6914,7 +6914,7 @@
"cCX" = (/turf/simulated/floor/plating/airless,/area/maintenance/medbay)
"cCY" = (/obj/machinery/door/airlock/medical{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "virologyq_airlock_interior"; locked = 1; name = "Virology Quarantine Airlock"; req_access = list(39)},/obj/machinery/atmospherics/pipe/simple/hidden/purple,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cCZ" = (/obj/structure/bed/chair,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/engineering/drone_fabrication)
-"cDa" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/research{c_tag = "Xenobiology Southwest"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology)
+"cDa" = (/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "xenobio1"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/research{c_tag = "Xenobiology Southwest"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology)
"cDb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cDc" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cDd" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
@@ -6937,7 +6937,7 @@
"cDu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 140; external_pressure_bound_default = 140; icon_state = "map_vent_out"; pressure_checks = 1; pressure_checks_default = 1; use_power = 1},/turf/simulated/floor/plating/airless,/area/maintenance/incinerator)
"cDv" = (/obj/machinery/atmospherics/pipe/simple/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HOT EXHAUST'."; name = "\improper HOT EXHAUST"; pixel_x = -32},/turf/simulated/floor/plating/airless,/area/space)
"cDw" = (/obj/item/weapon/stool,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
-"cDx" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/obj/structure/lattice,/turf/space,/area/space)
+"cDx" = (/obj/structure/grille,/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/space,/area/space)
"cDy" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"cDz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"cDA" = (/obj/machinery/computer/drone_control,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
@@ -6974,7 +6974,7 @@
"cEf" = (/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"cEg" = (/obj/structure/grille,/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/wall/r_wall,/area/engineering/atmos)
"cEh" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/engineering/atmos)
-"cEi" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/engineering/atmos)
+"cEi" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/space,/area/space)
"cEj" = (/obj/structure/table,/obj/item/weapon/storage/box/matches,/obj/item/weapon/storage/fancy/cigarettes,/obj/machinery/light/small{dir = 8},/obj/item/weapon/deck,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"cEk" = (/obj/machinery/drone_fabricator,/turf/simulated/floor/plating,/area/engineering/drone_fabrication)
"cEl" = (/obj/effect/decal/remains/robot,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/drone_fabrication)
@@ -6990,10 +6990,10 @@
"cEv" = (/turf/simulated/floor,/area/engineering/engine_monitoring)
"cEw" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/engineering/engine_monitoring)
"cEx" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engineering/engine_monitoring)
-"cEy" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/machinery/door_control{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; req_one_access = list(12,5)},/turf/simulated/floor{dir = 1; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator)
+"cEy" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/meter,/obj/machinery/button/remote/blast_door{id = "disvent"; name = "Incinerator Vent Control"; pixel_x = 0; pixel_y = -24; req_one_access = list(12,5)},/turf/simulated/floor{dir = 1; icon_state = "warningcorner"; tag = "icon-warningcorner (WEST)"},/area/maintenance/incinerator)
"cEz" = (/obj/machinery/shower{icon_state = "shower"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/engine_airlock)
"cEA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/engineering/engine_airlock)
-"cEB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio4"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology)
+"cEB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "xenobio4"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology)
"cEC" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map"; tag = "icon-manifold-f (EAST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/maintenance/engi_shuttle)
"cED" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"cEE" = (/obj/structure/bed,/obj/item/weapon/bedsheet/green,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
@@ -7022,9 +7022,9 @@
"cFb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/engineering/engine_smes)
"cFc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engineering/engine_smes)
"cFd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring)
-"cFe" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio5"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology)
+"cFe" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "xenobio5"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/rnd/xenobiology)
"cFf" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor,/area/engineering/engine_monitoring)
-"cFg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/machinery/door_control{desc = "A remote control-switch for a door to space."; id = "xenobioout6"; name = "Containment Release Switch"; pixel_x = 24; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/xenobiology)
+"cFg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "xenobio6"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access = list(55)},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for a door to space."; id = "xenobioout6"; name = "Containment Release Switch"; pixel_x = 24; pixel_y = 4; req_access = list(55)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/rnd/xenobiology)
"cFh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/engi_shuttle)
"cFi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle)
"cFj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engineering/engine_monitoring)
@@ -7077,7 +7077,7 @@
"cGe" = (/obj/machinery/power/smes/buildable{charge = 1e+007; cur_coils = 4; input_attempt = 1; input_level = 500000; output_level = 500000; RCon_tag = "Engine - Main"},/obj/structure/cable,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engineering/engine_smes)
"cGf" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_smes)
"cGg" = (/obj/machinery/door/window/southright{name = "Containment Pen"; req_access = list(47)},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/turf/simulated/floor/engine,/area/rnd/xenobiology)
-"cGh" = (/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Southwest"; dir = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/atmos)
+"cGh" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (EAST)"; icon_state = "intact"; dir = 4},/turf/space,/area/space)
"cGi" = (/obj/machinery/computer/general_air_control/supermatter_core{frequency = 1438; input_tag = "cooling_in"; name = "Engine Cooling Control"; output_tag = "cooling_out"; pressure_setting = 100; sensors = list("engine_sensor" = "Engine Core")},/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring)
"cGj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/engineering)
"cGk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/computer/power_monitor,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring)
@@ -7305,9 +7305,9 @@
"cKy" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space)
"cKz" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{dir = 5},/obj/structure/lattice,/turf/space,/area/space)
"cKA" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/green,/turf/space,/area/space)
-"cKB" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/space,/area/space)
-"cKC" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/space,/area/space)
-"cKD" = (/obj/structure/table/reinforced,/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 0; pixel_y = -3; req_access = list(10)},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -6; pixel_y = 7; req_access = list(10)},/obj/machinery/door_control{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; normaldoorcontrol = 2; pixel_x = 6; pixel_y = 7; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring)
+"cKB" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/red{tag = "icon-intact (NORTHWEST)"; icon_state = "intact"; dir = 9},/turf/space,/area/space)
+"cKC" = (/obj/effect/landmark{name = "carpspawn"},/obj/structure/grille/broken,/obj/structure/lattice,/turf/space,/area/space)
+"cKD" = (/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 0; pixel_y = -3; req_access = list(10)},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -6; pixel_y = 7; req_access = list(10)},/obj/machinery/button/remote/emitter{desc = "A remote control-switch for the engine emitter."; id = "EngineEmitter"; name = "Engine Emitter"; pixel_x = 6; pixel_y = 7; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engineering/engine_monitoring)
"cKE" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/constructionsite/station)
"cKF" = (/turf/simulated/shuttle/wall{icon_state = "swall_s6"; dir = 2},/area/shuttle/constructionsite/station)
"cKG" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "engineering_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/shuttle/constructionsite/station)
@@ -7317,7 +7317,7 @@
"cKK" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Phoron"; dir = 1},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "phoron floor"; nitrogen = 0; oxygen = 0; phoron = 70000},/area/engineering/atmos)
"cKL" = (/obj/machinery/light/small,/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Nitrous Oxide"; dir = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos)
"cKM" = (/obj/machinery/camera/network/engineering{c_tag = "Atmospherics Tank - Gas Mixing"; dir = 1},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/engineering/atmos)
-"cKN" = (/obj/machinery/power/terminal{dir = 8},/obj/machinery/light,/obj/machinery/door_control{id = "engine_electrical_maintenance"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; req_access = list(10); specialfunctions = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/engine_smes)
+"cKN" = (/obj/machinery/power/terminal{dir = 8},/obj/machinery/light,/obj/machinery/button/remote/airlock{id = "engine_electrical_maintenance"; name = "Door Bolt Control"; pixel_x = 5; pixel_y = -25; req_access = list(10); specialfunctions = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engineering/engine_smes)
"cKO" = (/obj/machinery/computer/security/engineering,/turf/simulated/floor{icon_state = "warning"},/area/engineering/engine_monitoring)
"cKP" = (/turf/simulated/shuttle/wall,/area/shuttle/constructionsite/station)
"cKQ" = (/turf/simulated/shuttle/wall{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/area/shuttle/constructionsite/station)
@@ -7335,7 +7335,7 @@
"cLc" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/shuttle/constructionsite/station)
"cLd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/shuttle/constructionsite/station)
"cLe" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/camera/network/engine{c_tag = "Engine Waste Handling"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplatecorner"},/area/engineering/engine_waste)
-"cLf" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access = list(10)},/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room)
+"cLf" = (/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineEmitterPortWest"; name = "Engine Room Blast Doors"; pixel_x = 0; pixel_y = 25; req_access = list(10)},/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_room)
"cLg" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10},/obj/machinery/alarm/nobreach{dir = 2; pixel_y = 22},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room)
"cLh" = (/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{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/floor/plating,/area/engineering/engine_room)
"cLi" = (/obj/structure/cable,/obj/machinery/power/terminal{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/shuttle/constructionsite/station)
@@ -7347,14 +7347,14 @@
"cLo" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/constructionsite/station)
"cLp" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_one_access = list(10,24)},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste)
"cLq" = (/obj/machinery/door/window/brigdoor{dir = 8; name = "Engine Waste"; req_one_access = list(10,24)},/obj/structure/window/reinforced,/obj/machinery/atmospherics/binary/pump{dir = 8; name = "waste pump"},/turf/simulated/floor/plating{icon_state = "platebot"},/area/engineering/engine_waste)
-"cLr" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 5; pixel_y = -25; req_access = list(10)},/obj/machinery/door_control{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -5; pixel_y = -25; req_access = list(10)},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room)
+"cLr" = (/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine control room blast doors."; id = "EngineBlast"; name = "Engine Monitoring Room Blast Doors"; pixel_x = 5; pixel_y = -25; req_access = list(10)},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Reactor Blast Doors"; pixel_x = -5; pixel_y = -25; req_access = list(10)},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/engineering/engine_room)
"cLs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{name = "Engine Waste Handling"; req_one_access = list(10,24)},/turf/simulated/floor/plating,/area/maintenance/engi_engine)
"cLt" = (/obj/machinery/camera/network/engine{c_tag = "Engine Core West"; dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engineering/engine_room)
"cLu" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/visible/cyan,/turf/simulated/floor/plating,/area/engineering/engine_room)
"cLv" = (/obj/machinery/door/airlock/hatch{icon_state = "door_locked"; id_tag = "engine_access_hatch"; locked = 1; req_access = list(10)},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/engineering/engine_room)
"cLw" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/obj/machinery/meter,/obj/machinery/camera/network/engine{c_tag = "Engine Core East"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/engineering/engine_room)
-"cLx" = (/obj/machinery/door_control{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access = list(10)},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room)
-"cLy" = (/obj/machinery/door_control{id = "EngineVent"; name = "Reactor Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access = list(10)},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room)
+"cLx" = (/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine radiator viewport shutters."; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutters"; pixel_x = 25; pixel_y = 0; req_access = list(10)},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/engineering/engine_room)
+"cLy" = (/obj/machinery/button/remote/blast_door{id = "EngineVent"; name = "Reactor Ventillatory Control"; pixel_x = -25; pixel_y = 0; req_access = list(10)},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engineering/engine_room)
"cLz" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_outer"; locked = 1; name = "Engineering External Access"; req_access = list(10,13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar)
"cLA" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; layer = 3.3; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access = list(13)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area/solar/port)
"cLB" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "robotics_solar_inner"; locked = 1; name = "Engineering External Access"; req_access = list(13)},/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/portsolar)
@@ -7536,29 +7536,29 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafccRccRcdBccTcfjcdYccUccWccVbYIcfkccHccIcfmccKccLcfsccNccOcfuccXcdaccZcdecdbcfGcdycdQcdFcekceecemcfIcdccddaJEcdfcaqbTFcbIcdgcdhcdicfLcdkcdlcfMcdncdocfRcdqcdrcdscdtcaEcducdvcdwcaIbZxbWQcenbZycdxceobZAcdzcdAcepbZAcaPbYfbYfcaQbYccbYcbXcbZbYcchBccacjfcdLcdLbyFbBucdLcdOcdPceqcdRcdOcdSbBpbyebydcdScdScdScdScgebyebydcdScdSbXjcdXcgmcgfceacgocgCcgBbycbycbycbycbycbycbycbycbycbycbycbycbycbycbycbyccgOcegcegcehbKtbKtbLTbLTcgRbLTbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacejcejcejcejcejcejcejcetcesbYIbYIbYIbYIbYIchbchnchichichichpcewbXzbXybYeceybYjceEceTceSceWceUceXbSUcezaJFceYaJFcaqbTFcbIceDcfacfacfaceFceGbTJchuchqbTJcbKcbNceJcelcaEchzceLceMcaIbZxbWQceNbZyceOcePbZAbZAbZAbZAbZAccbceRbYfcaQbYcccdchLbYcbYcchBccecjfcdLceZcfbcfbcfccdOcfdchPcffcdOcfgcfhcfhcfhchSciycifcflciCcfncfocfpcdScfqcfrciLbUnbUnbUnbUnaaaaafaaaaaaaaaaahaahaahaafaaaaaaaafaaaaaaaafaafaafcftcfBcfvbNebKsbKtbKtbLTbLUbLTbKtbKtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcejcfwcfxcfycfzcfAcejcfDcfCcfFcfEcfHciPciVciVcfKcfJcfJcjacjlcbqbXzbXybYecfNcaicfOcfQcfPcfUcjqcggbSUaJFaJFcaqceBcaqbTFcbIcfVcfWcfWcfWcfXcbIcfYcfZcgacfYcgbcgccgdcjtcaEcjvceLcgicaIcghccfcgjbZycgkcglbZycjCbLvbVicgnccgcchbYfccjcciccicckcclcclcclcclccmcdLcjIcgycgycgzcgActscgrcgpcgucgtcgGcgGcgGcgxcgIcgIcgJckncgLcgDcgMcdScgNckocgPcgNaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcgQbKqbKqbKrbKsbKsbKtbKtbKtbKtbKuaafaafaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEaaaaaacgScgTcgTcgTcgUcgVcejcgHcgFckCcgKcgXcgWcgZcgYckFchachdchcchfchechhchgchjckNbSUbSUbSUbSUbSUbSUbSUbSUclfckQcaqclgcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchkchlcaIchwclpchwbZychychmbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKcluchMchochOclCchQckLckLckLckLclGchvckLclVckLchEchFcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchHcmgchHcgEchNcmkchNcgEchRcmpchRcgEaaaaaaciicgTcgTcgUcgUcijcejchUchTchWchVchYchXcidciccmwcieciecigciecbqbXzcihbYecikcimcilciocinciocipcirciqciqciAciAciAciAbTFciGciHciIciIciJciKcmGciMciXciOcmPciQciRciSciSciTciUcaIcaIcaIcmQcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjocjocixcjrcjscgIcmRcgIciWcjucdScmXcjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchHcjbchHcgEchNcjcchNcgEchRcjdchRcgEaaaaaaciicgTcgUcgUcgUcjBcnecjhcjechWcjicjpcnfcnhcngcjzcjycjDcjAcjEcbqbXzcjFchjcjGcnucjHcjJcjJcjJcjKcjMcjLcjNcnwcjOceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcnEcnFckpcjQcjPcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcnIcjRcjTcjSckEcdOcnKcdOckGckHcjXcjUcjUcjYcgIcgIckecjZcjUckickOcdSckPcnLckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEckrckuckscgEckzckBckAcgEckDckJckIcgEaaaaafciiclbcgTcgUcgUcgUcejckMckKchWchWcnNchWchWchWchWckTcieckWckYcbqclackZcldclccnPcleclhclhclhclicljcljclkciAcllcgqclwclxciGclyciIclzclAclBcnQclDclEclFcolclHclIclJciSclKciUconcoqclNclnclmclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIcltbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcorcdScmhcmicmicmiclvcotcmlclPclOcmicmicmncdScmocpdcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgEclXcmmcmjcgEcmscmmcmtcgEcmscmmcmtcgEaaaaafcmzcgTcgTcgUcgUcmAcejcmvcmucmxcpfcmBcmycmCcmCcmEcmDcmCcmFcpgcbqcmIcmHcmKcmJcimcmLcmLcmMcljcmNcpocmOcmOciAcibceVcprcqgciGcnbciIcnccndcpAciGcmSciNcmWcfYcpOcnicnjciScnkciUclLclMclNcnlcqecnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScqrcnscntcdScdScnvcqscnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKBaafcKAaafcKBaafcKAaafaafaaacejcnAcnBcgUcgUcnCcnDcqAcqtcnycnmcqDcnzcnzcqIcnzcnGcqOcnHcnGcnJcrzcrvcrQcnMcnOcnOcnOcnOcsecsdcnRcnRcnRcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcmSciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcsfcomcsgcopcoocdOaaLaafaafaafaafaaaaaaaaacsiaaaaaaaaaaafcoscsncosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoucowcovcoxcovcowcoycoxcoAcoBcoycoDcoCcoFcoEcnycnycnycnycnycnycnycnycoHcoGcoJcoIcoLcoKcoNcoMcoOcnGcoQcoPcoRcnGcoTcoScoUcnOcoWcoVcoYcoXcpacoZcpjcpbcpbcpkcpncpncpjcsDciGciGcpccsLciGciGciGcpeciNcsMciUciUciUctbcphciUciUclLcpiclNcvmcpscvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplctictccppcpqcomcomctkcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaactmaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcptcpvcpucpxcpwcpvcpyctxcpzcpCcpBcpEcpDcpHcpFcpLcpJcpNcpMcpQctBcpUcpTcpWcpVcpYcpXcqacpZcqccqbctIcqdctOcqfctScqzcoTcqJcqKcnOcpacpacpacpacpacqMcpjcqPcqPcqPcpncpncpjbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUctTclLcpiclNctVcqQcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicuacqBcqCculcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqRcpFcqScqVcqUcpFcqWcpFcqXcqYcqWcpFcqXcqYcpFcpFcpFcpFcpFcqZcpFcpFcpFcrbcracrdcrccurcpZcrfcrecrhcrgcrjcricrlcrkcoTcqJcrmcnOcrncpacpacrocpacrpcpjcrIcrKcrJcrKcrLcpjbTFcrqciGcrrcrscrtcrucuycrwcrxcrycuEcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcuLcqvcrHaaaaaaaafaaaaaaaaacqvcrRcrTcrScqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcptcpFcrccpFcrccpFcqWcpFcrUcrWcrVcrWcrXcrWcrWcsacrZcpFcpFcuYcuUcuUcuUcvncvlcvscvscvtcpZcvvcshcsjcnGcsmcskcvEcnGcspcsocsrcsqcstcsscsvcsucpacswcpjcsxcrKcsycrKcsKcpjbTFcizciGcszcsAcsBcsCciGcfYcvGcfYciUcsEcsFcsGcsHciUcsIcrGcrGcqvcsJcsNcvOcqvcqvcqvcqvcqvcqvcqvcqvctMctDctNcqvcqvcqvcrHaaaaaacdOcofcogcohcslcsRcqBcrNcrNcrNcnpcrNcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaackxaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacptcpFcrccpFcsOcsTcsQcsVcsUcsWcrVcrWcsXcrWcrWcsZcsYcwacvRcwzctactectdctdctfcrccrccthctgctjcwHcnzcnGcwUcnGcnGcnGcwWctlcsrctncttctoctyctucpacwZcpjcxqcrKcsycrKcxrcpjctvctwciGciGcxsciGciGciGciBctzctAciUciUciUcxFciUciUcsIcrGaaacqvctCctZctEctFctGctHcxJctJctKctLcqvcuVcxVcuVcqvcyactPcqvaafaafcdOcplcplcplcybctcctRcuccycctUcudcrNctWcdOcdOcdOcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpFcsOcsTcsTcsTcsQcsTcsTcsTcsQcsTcsTcsTcsTcsTcuecygcsTcyhcsTcufcsTcsTcsTcuhcugcuicpvcpFcujcyicukcuncumcupcuocumcuqcuscymcuucutcutcuvcutcuwcypcuxcuAcuzcuBcuBcpjcuCcuDcyrcuFcuFcuGcuHcuIcuJcuJcuJcuJcuJcuJcuJcuJcuKcrFcrGaaactFcyzcuPcuNctFcuOcuRcuQcuQcvdcvacuQcuQcvhcuQcuVcuXcuQcqvaaaaaacdOcplcplcplcslcyHcuZcvicvbcvccvjcrNcrNcvecvfcvgcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpFcpFcpFcpFcpFcqWcpFcpFcpFcqWcpFcpFcpFcpFcpFcqXcpFcpFcurcpFcvkcpFcyRcyJcvpcvocvrcvqcyScvqcyZcvucvxcvwcvycvucvucvzcvAcsecvBcpacvDcvCcpacpaczBcrKcrKcvFcuBcuBcpjbPxcAscvNcvNcvNcvNczFcvNcvNcvNcvNclMcvPcrGcrGcrGcrGcrGcrGaaactFctFczLctFctFczMcvScvTcvUcvVcvHcvJcvIcvLcvKczVcwbcwccqvaaaaaacdOcomcomcomcomcwdcppcvicwecwfcvQcrNcrNcwhcrNcwicdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabZSaaaaaaaaaaaacptcpFcpFcpFcpFcpFcqWcpFcpFcpFcqWcpFcpFcpFcpFcpFcqXcpFcpFcurcpFcvWcpFcpFcvWcvWcvXcpFcpFcvZcvYcwgcwgcwgcwgcwmcwkcoTcwocwpcsqcwqcpacwscvCcpacwtcpjcwucrKcwvcwxcwwcpjczXcvMcvNcwIcwJcwKcwLcwMcwNcwOcvNcwPcwQcrGaaaaaaaaaaaaaaaaaacqvcwRcwycwAcAHcwCcwBcwEcwDcwGcwFcwTcwScwVcAJcuWcuQcxecqvaaaaaacdOcofcogcohckXcsRcuZcxgcxhcxhcxicxjcxkcAUcxmcxncdOaaaaaacrPaaaaafaaaaafaafaafaaackxaaaaafaaaaafaaaaafaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpFcpFcpFcpFcpFcwXcpFcpFcpFcwXcpFcpFcpFcpFcpFcqXcpFcpFcBkcwYcxbcxacxacxbcxccxbcxlcxdcxocxacBmcxpcBqcBncxtcwkcoTcxucoTcxvcxwcpacpacxAcpacxBcpjcxCcxCcxDcwxcwwcpjbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcxRcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcBscxWcxXcxYcxZcuTcBzcuScxEcuTcBIcqvcqvcqvcqvaaaaaacdOcplcpmcplcBOctccppcrNcrNcyecyfcrNcBRcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacBSaaaaaacBSaaaaaaaaacBSaaaaaaaaaaaaaaacBSaaaaaaaaacBSaaaaaacBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpFcsccsbcsbcxHcxGcuUcCccuUcxIcCccuUcuUcuUcuUcCecuUcCfcvncCicvWcpFcpFcyjcylcykcyncCncyocpFcCNcyqcyscyscyucytcoTcxucyvcnOcywcpacyxcpacCOcyycpjcpjcpjcpjcpjcpjcpjbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcCQcrGaaaaaaaaaaaaaaaaaacqvcuVcCYctFctFcyTcyAcyVcyWctMctDctNcyBctMcvhcyYcqvaaaaaaaaaaaacdOcplcplcplckXcDaczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacBScBScBScBSaaaaaaaaacBScBScBScBScBScBScBSaaaaaaaaacBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpFcqWcpFcpFcpFcwXcpFcpFcpFcwXcpFcpFcpFcpFcpFcqXcpFcyCcpFcyDcvWcpFcpFcyEcxccyFcyGcwgcDmcwgcwgcyqcDpcyIcyKcytcoTcxucoTcnOcyUcyLczecyXczfcpacnOczgczJczJczhcDtcDNczNczOcvNcxNczPczQcxNczRczSczTcvNczUcDOcrGaaaaaaaaaaaaaaaaaacqvczWcuMcDUcuVczYczZcAactFcAbcAccsPcyBczWczjcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgczkcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacBScBScBScBSaaaaaacBScBScBScBScBScBScBScBScBSaaaaaacBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaaaczlcpFcqWcpFczmcrWcrVcrWczncrWcrVcrWczncrWcrWcrWczoczpczoczrczqcyFczsczucztczwczvczxcwgczzczycwgcwgcwgcwgcwgczAcrzcEccrzcnOcnOcnOcnOcnOcnOcnOcnOczDczJczJczEcANcAObPxcAPcvNcAQcARcErcATcEycAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBeczHczGczIcBeczKcqvaafaafaaaaaaaaaaaabquaaacdOcBlcEXcEBcBocBpcEXcFecBrcBpcEXcFgcdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacBScBScBScBSaaaaaacBScBScBScBScBScBScBScBScBSaaaaaacBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaIaaaaaacAdcpFcqWcpFcAhcylcqWcpFcAtcylcqWcpFcAucylcpFcpFcAvcpFcAwcylcAxcAzcAycABcAAcADcACcAEcwgcFrcAFcFCcAIcAKcumcAMcALcumcAScumcBfcuocBgcBicBhcBhcBjcFEcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcFFcCbcCacCdcvNcrGcFKcrGaaaaaaaaaaaaaaaaaacqvctFcFLcuVctFcCgcChcFUctFcCjcCkcqycgvcBtcCkcCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcFVclUcomclscFWclqcomclocGgclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaaIaafaafcAdcBvcBucBycBxcBAcGhcBCcBBcBEcBDcBGcBFcBHcpFcBvcGocBKcBJcBMcBLcnycnycnycnycnycnycnycnycGucBNczAcBPcBQcoTcGvcoTcoTcxucoTcoTcGAcoTcBQcBTcCpcBUcCrcGEcGOcGMcCPcHacAObPwcCRcCScCTcCacAGcAVcBwcCacCtcCscCucHjcCXaaaaaaaaaaaaaaaaaacqvcCvctDcuQcHCcDbcuQcDccDdcDeaafaaachxcCxcCwcCyaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcCzaaaaaaaaIaaaaaacCAcCCcCBcCEcCDcCGcCFcCHcCDcCGcCFcCHcCDcCGcCIcCIcCJcCHcCDcCGcCKcnyaaacCMcCLcCVcCUcCZcCWcDjcDgcDkcDkcHVcDlcDocDncDqcIAcDncDqcDocDrcIMcDscDrczAczAcAOcITcIRcDPcDQcAObNUcDRcDScDTcCacCbcIZcCbcCacDvcDucDfaafaaaaaaaaaaaaaaaaaaaaacqvcCvcDVcDwcDXcDXcDwcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcClcqLcpIcDxcpIcpIcqLcpIcpPcpIcpGcpIcpPcpIcpGcpIcpPcpIcpGcpIcqLcpIcpRcpIcpGcpIcqNaafaaacDzcDycDBcDAcDDcDCcDjcDEcDkcDFcDHcDGcDJcDIcDLcDKcDWcDMcDJcEbcEdcJhcDraaaaafcAOcJlcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEecuXcEfcEJcEJcEfcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaqaaaaaaaafcgEcmscmmcEgcgEcmscmmcEgcgEcmscmmcEhcgEaaacgEcEicmmcEhcgEaaaaafaaacDzcEjcElcEkcEncEmcEpcEocDkcEqcEscJpcDJcEtcEvcEucExcEwcDJcJzcEAcEzcDraaaaaacAOcJAcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEEcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEcgEaaaaaacgScgTcgTcgTcgUcgVcejcgHcgFckCcgKcgXcgWcgZcgYchdchachYchcchfchechhchgchjckNbSUbSUbSUbSUbSUbSUbSUbSUclfckQcaqclgcaqbTFcbIcbIctpctqctrcbIcbIchrchschtcfYcaEcaEcaEcaEcaEcaIchkchlcaIchwclpchwbZychychmbZychAchBbVichCbVichDbYfccobYfbYfccpcdCcdCcdCcdDbYfcdLchIchJchJchKcluchMchochOclCchQckLckLckLckLclGchvckLclVckLchEchFcdSchZciachGcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchHcmgchHcgEchNcmkchNcgEchRcmpchRcgEaaaaaaciicgTcgTcgUcgUcijcejchUchTchWchVcjpchXcidciccmwcieciecigciecbqbXzcihbYecikcimcilciocinciocipcirciqciqciAciAciAciAbTFciGciHciIciIciJciKcmGciMciXciOcmPciQciRciSciSciTciUcaIcaIcaIcmQcdEckqbZybZybZybZychBchBbViciYbViciZbYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcjgcisciucitcjjcjkcivcjmcjncjociwcjocjocixcjrcjscgIcmRcgIciWcjucdScmXcjwcjxcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEchHcjbchHcgEchNcjcchNcgEchRcjdchRcgEaaaaaaciicgTcgUcgUcgUcjBcnecjhcjechWcjickFcnfcnhcngcjzcjycjDcjAcjEcbqbXzcjFchjcjGcnucjHcjJcjJcjJcjKcjMcjLcjNcnwcjOceAciAbTFciGckaciIckbckcckdcubckfckgckhctQckjckkcklciSckmciUcnEcnFckpcjQcjPcdHcdGcdIcdIcdJcdIcdKbVibVibVibVibYfccobYfaaaaaaaaaaaaaaaaaaaaacdLcnIcjRcjTcjSckEcdOcnKcdOckGckHcjXcjUcjUcjYcgIcgIckecjZcjUckickOcdSckPcnLckRcgNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacgEckrckuckscgEckzckBckAcgEckDckJckIcgEaaaaafciiclbcgTcgUcgUcgUcejckMckKchWchWcmschWchWchWchWckTcieckWckYcbqclackZcldclccnPcleclhclhclhclicljcljclkciAcllcgqclwclxciGclyciIclzclAclBcnQclDclEclFcolclHclIclJciSclKciUconcoqclNclnclmclQclNclRclSclTbYfceQcdIcdIcdIcdIcdIcltbYfaaaaaaaaaaaaaaaaaaaaacdLcmacmbcmccmdcdOcmecmfcorcdScmhcmicmicmiclvcotcmlclPclOcmicmicmncdScmocpdcmqcmraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafaafcgEclXcmmcmjcgEcmtcmmcEgcgEcmtcmmcEgcgEaaaaafcmzcgTcgTcgUcgUcmAcejcmvcmucmxcpfcmBcmycmCcmCcmEcmDcmCcmFcpgcbqcmIcmHcmKcmJcimcmLcmLcmMcljcmNcpocmOcmOciAcibceVcprcqgciGcnbciIcnccndcpAciGcmSciNcmWcfYcpOcnicnjciScnkciUclLclMclNcnlcqecnlclNaaaaaaaaabYfbYfbYfcnnclSclSclTbYfbYfaaaaaaaaaaaacdOcdOcdOcdOcdOcdOcdOcdOcdOcnocnpcnqcdScdScnrcnscntcdScdScdScdScqrcnscntcdScdScnvcqscnvaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaafaafaafaaaaafcnxaafcnxaafcKAaafcnNaafcKAaafcnNaafaafaaacejcnAcnBcgUcgUcnCcnDcqAcqtcnycnmcoycnzcnzcqIcnzcnGcqOcnHcnGcnJcrzcrvcrQcnMcnOcnOcnOcnOcsecsdcnRcnRcnRcgscgscgscgscnSciGcnTcnUcnccnVcnWciGcmSciNcnXciUcnYcnZcnjcoacobciUclLclMclNcoccodcoeclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaacdOcofcogcohcwlcojcokcsfcomcsgcopcoocdOaaLaafaafaafaafaaaaaaaaacsiaaaaaaaaaaafcoscsncosaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaafcoucoBcoAcoxcovcowcoCcoxcoFcoJcoCcoDcoLcpycoEcnycnycnycnycnycnycnycnycoHcoGcpBcoIcpCcoKcoNcoMcoOcnGcoQcoPcoRcnGcoTcoScoUcnOcoWcoVcoYcoXcpacoZcpjcpbcpbcpkcpncpncpjcsDciGciGcpccsLciGciGciGcpeciNcsMciUciUciUctbcphciUciUclLcpiclNcvmcpscvmclNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafcdOcplcpmcplctictccppcpqcomcomctkcomcdOcdOaaaaaaaaaaafaafaaaaacaaaaaaaaaaaaaafaaactmaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaaaaaaaaaafcptcpGcpucpxcpwcpFcpHctxcpzcpNcpIcpEcpDcpPcpFcpLcpJcpRcpMcpQctBcpUcpTcpWcpVcpYcpXcqacpZcqccqbctIcqdctOcqfctScqzcoTcqJcqKcnOcpacpacpacpacpacqMcpjcqPcqPcqPcpncpncpjbTFcrYciGcqhcqicqjcqkciGcqlciNcqmciUcqncqocqpcqqciUctTclLcpiclNctVcqQcquclNaaaaaaaaaaaaaaaaaacqvcqwcqxcqycqvaafaaaaaaaaaaaacdOcplcplcplcoicuacqBcqCculcqEcqFcqGcqHcdOaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacmZaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaafcqRcqYcqScqVcqUcpFcqXcpFcvWcqYcqXcpFcvWcqYcpFcpFcpFcpFcpFcqZcpFcpFcpFcrbcqDcrdcrccurcpZcrfcrecrhcrgcrjcricrlcrkcoTcqJcrmcnOcrncpacpacrocpacrpcpjcrIcrKcrJcrKcrLcpjbTFcrqciGcrrcrscrtcrucuycrwcrxcrycuEcrAcrBcrCcrDciUcrEcrFcrGcrHcqvcuLcqvcrHaaaaaaaafaaaaaaaaacqvcrRcrTcrScqvaafaafaaaaaaaaacdOcomcomcomcomcrMcppcrNcrNcrNcnpcrNcrOcdOaaaaaaaaaaaaaaacrPcrPcrPbZSaafaafaafaafcnaaafaafaafaafaafaaqcrPcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaafaafaafcptcpFcrccpFcrccpFcqXcpFcqLcxacqNcxacqWcxacxacrUcracpFcpFcuYcuUcuUcuUcvncrVcvscvscvtcpZcvvcshcsjcnGcsmcskcvEcnGcspcsocsrcsqcstcsscsvcsucpacswcpjcsxcrKcsycrKcsKcpjbTFcizciGcszcsAcsBcsCciGcfYcvGcfYciUcsEcsFcsGcsHciUcsIcrGcrGcqvcsJcsNcvOcqvcqvcqvcqvcqvcqvcqvcqvctMctDctNcqvcqvcqvcrHaaaaaacdOcofcogcohcslcsRcqBcrNcrNcrNcnpcrNcsScdOaaaaaaaaaaaaaaacrPaaaaafaaaaafaaaaaaaaackxaaaaafaafaaaaaaaaaaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaafaaaaaacptcpFcrccpFcsOcsTcrXcsVcsUcrZcqNcxacsacxacxacsccsbcwacvRcwzctacsWcsQcsQcsXcrccrccthctgctjcwHcnzcnGcwUcnGcnGcnGcwWctlcsrctncttctoctyctucpacwZcpjcxqcrKcsycrKcxrcpjctvctwciGciGcxsciGciGciGciBctzctAciUciUciUcxFciUciUcsIcrGaaacqvctCctZctEctFctGctHcxJctJctKctLcqvcuVcxVcuVcqvcyactPcqvaafaafcdOcplcplcplcybctcctRcuccycctUcudcrNctWcdOcdOcdOcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpFcsOcsTcsTcsTcrXcsTcsTcsTcrXcsTcsTcsTcsTcsTcsYcygcsTcyhcsTcsZcsTcsTcsTcuhcugcuicpvcpFcujcyicukcuncumcupcuocumcuqcuscymcuucutcutcuvcutcuwcypcuxcuAcuzcuBcuBcpjcuCcuDcyrcuFcuFcuGcuHcuIcuJcuJcuJcuJcuJcuJcuJcuJcuKcrFcrGaaactFcyzcuPcuNctFcuOcuRcuQcuQcvdcvacuQcuQcvhcuQcuVcuXcuQcqvaaaaaacdOcplcplcplcslcyHcuZcvicvbcvccvjcrNcrNcvecvfcvgcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpFcpFcpFcpFcpFcqXcpFcpFcpFcqXcpFcpFcpFcpFcpFcvWcpFcpFcurcpFcuecpFcyRcyJcvpcvocvrcvqcyScvqcyZcvucvxcvwcvycvucvucvzcvAcsecvBcpacvDcvCcpacpaczBcrKcrKcvFcuBcuBcpjbPxcAscvNcvNcvNcvNczFcvNcvNcvNcvNclMcvPcrGcrGcrGcrGcrGcrGaaactFctFczLctFctFczMcvScvTcvUcvVcvHcvJcvIcvLcvKczVcwbcwccqvaaaaaacdOcomcomcomcomcwdcppcvicwecwfcvQcrNcrNcwhcrNcwicdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaafcrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaabZSaaaaaaaaaaaacptcpFcpFcpFcpFcpFcqXcpFcpFcpFcqXcpFcpFcpFcpFcpFcvWcpFcpFcurcpFcufcpFcpFcufcufcvkcpFcpFcvZcvYcwgcwgcwgcwgcvlcwkcoTcwocwpcsqcwqcpacwscvCcpacwtcpjcwucrKcwvcwxcwwcpjczXcvMcvNcwIcwJcwKcwLcwMcwNcwOcvNcwPcwQcrGaaaaaaaaaaaaaaaaaacqvcwRcwycwAcAHcwCcwBcwEcwDcwGcwFcwTcwScwVcAJcuWcuQcxecqvaaaaaacdOcofcogcohckXcsRcuZcxgcxhcxhcxicxjcxkcAUcxmcxncdOaaaaaacrPaaaaafaaaaafaafaafaaackxaaaaafaaaaafaaaaafaaacrPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaaaaaaaaaaaacptcpFcpFcpFcpFcpFcvXcpFcpFcpFcvXcpFcpFcpFcpFcpFcvWcpFcpFcBkcwmcwXctdctdcwXcwYcwXcxlcxdcxoctdcxtcxpcyucxHcyEcwkcoTcxucoTcxvcxwcpacpacxAcpacxBcpjcxCcxCcxDcwxcwwcpjbPxcvMcvNcxKcxLcxMcxNcxOcxNcxPcvNcxQcxRcrGaaaaaaaaaaaaaaaaaacqvcxScxTcxUcBscxWcxXcxYcxZcuTcBzcuScxEcuTcBIcqvcqvcqvcqvaaaaaacdOcplcpmcplcBOctccppcrNcrNcyecyfcrNcBRcomcomcomcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacBSaaaaaacBSaaaaaaaaacBSaaaaaaaaaaaaaaacBSaaaaaaaaacBSaaaaaacBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpFczmcrWcrWczpcxGcrWczpcrWcxIcCccuUcuUcCfcuUcyFcuUcuUcvncCicufcpFcpFcyjcylcykcyncCncyocpFcCNcyqcyscyscyKcytcoTcxucyvcnOcywcpacyxcpacCOcyycpjcpjcpjcpjcpjcpjcpjbPxcvMcvNcyMcyNcxLcyOcxLcxNcyPcvNcyQcCQcrGaaaaaaaaaaaaaaaaaacqvcuVcCYctFctFcyTcyAcyVcyWctMctDctNcyBctMcvhcyYcqvaaaaaaaaaaaacdOcplcplcplckXcDaczacrNcrNcrNcyfcrNczbcrNczccrNczdaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacBScBScBScBSaaaaaaaaacBScBScBScBScBScBScBSaaaaaaaaacBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaafaaaaaaaaacptcpFcqXcpFcpFcpFcvXcpFcpFcpFcvXcpFcpFcpFcyCcpFcvWcpFcpFcpFcyDcufcpFcpFczncwYctfcyGcwgcDmcwgcwgcyqcDpcyIczocytcoTcxucoTcnOcyUcyLczecyXczfcpacnOczgczJczJczhcDtcDNczNczOcvNcxNczPczQcxNczRczSczTcvNczUcDOcrGaaaaaaaaaaaaaaaaaacqvczWcuMcDUcuVczYczZcAactFcAbcAccsPcyBczWczjcAecqvaaaaaaaaaaaackEcdOcAfcAgcAgczkcAicAjcAkcAlcAmcAncAocApcAqcokcAraaaaaacrPaafcwjcwjcwjcwjcwjaaackxaafcwjcwjcwjcwjcwjaaacrPaaacBScBScBScBSaaaaaacBScBScBScBScBScBScBScBScBSaaaaaacBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaaaczlcpFcqXcpFczqcxacqNcxaczrcxacqNcxaczrcxacxccxacxbcAhctectdcAtctfczsczucztczwczvczxcwgczzczycwgcwgcwgcwgcwgczAcrzcEccrzcnOcnOcnOcnOcnOcnOcnOcnOczDczJczJczEcANcAObPxcAPcvNcAQcARcErcATcEycAVcAWcvNcAXcAYcrGaaaaaaaaaaaaaaaaaacqvcuQcAZcAectFcBacBbcBcctFcBdcBeczHczGczIcBeczKcqvaafaafaaaaaaaaaaaabquaaacdOcBlcEXcEBcBocBpcEXcFecBrcBpcEXcFgcdOaaaaaabZSaaaaafaaaaafaaaaafaaackxaaaaafaaaaafaafaafaafcrPaaacBScBScBScBSaaaaaacBScBScBScBScBScBScBScBScBSaaaaaacBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIvaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZSaaaaaaaaaaaIaaaaaacAdcpFcqXcpFcAvcylcqXcpFcAwcylcqXcpFcAucylcpFcpFcAxcpFcAAcylcADcAzcAycABcBmcBncACcAEcwgcFrcAFcFCcAIcAKcumcAMcALcumcAScumcBfcuocBgcBicBhcBhcBjcFEcBVcBWcBWcBXcBYcAObPxcBZcvNcvNcCacCbcFFcCbcCacCdcvNcrGcFKcrGaaaaaaaaaaaaaaaaaacqvctFcFLcuVctFcCgcChcFUctFcCjcCkcqycgvcBtcCkcCocrHaaaaaaaaaaaaaaaaaacgwaafcdOcCqcFVclUcomclscFWclqcomclocGgclWcdOaaaaaacrPaaactXctXctXctXctXaafckxaafctXctXctXctXctXaafcrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafaafaafaaIaafaafcAdcpFcBqcBycBxcBAcBucBCcBBcBEcBDcBGcBFcBHcpFcBvcGocBKcBJcBMcBLcnycnycnycnycnycnycnycnycGucBNczAcBPcBQcoTcGvcoTcoTcxucoTcoTcGAcoTcBQcBTcCpcBUcCrcGEcGOcGMcCPcHacAObPwcCRcCScCTcCacAGcAVcBwcCacCtcCscCucHjcCXaaaaaaaaaaaaaaaaaacqvcCvctDcuQcHCcDbcuQcDccDdcDeaafaaachxcCxcCwcCyaaaaaaaaaaacaaaaaaaaaaaaaaacdOcDhcplcplcomcDicplcplcomcDicplcplcdOaafaafcrPaafckVckSckSckSckSckyckxckwckvckvckvckvckUaafcrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcCzaaaaaaaaIaaaaaacCAcCCcCecCEcCDcCGcClcCHcCDcCGcClcCHcCDcCGcCIcCIcCBcCHcCDcCGcCFcnyaaacCMcCLcCVcCUcCZcCWcDjcDgcDkcDkcHVcDlcDocDncDqcIAcDncDqcDocDrcIMcDscDrczAczAcAOcITcIRcDPcDQcAObNUcDRcDScDTcCacCbcIZcCbcCacDvcDucDfaafaaaaaaaaaaaaaaaaaaaaacqvcCvcDVcDwcDXcDXcDwcsPcDYcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcDZcplcplcomcEacplcplcomcEacplcplcdOaaaaaacrPaafcwjcwjcwjcwjcwjaaackxaaacwjcwjcwjcwjcwjaaacrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcCJcCKcCKcDxcCKcCKcCKcCKcEicCKcGhcCKcEicCKcGhcCKcEicCKcGhcCKcCKcCKcGhcCKcGhcCKcKBaafaaacDzcDycDBcDAcDDcDCcDjcDEcDkcDFcDHcDGcDJcDIcDLcDKcDWcDMcDJcEbcEdcJhcDraaaaafcAOcJlcECcEDaafaaabNUbPxbPxbSkcCaclZcEFclYcCaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEecuXcEfcEJcEJcEfcuQcEKcqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdOcplcplcplcomcELcplcplcomcELcplcplcdOaacaaacrPaaaaaaaafaafaafaaaaaacmTaafaaaaaaaafaafaaaaaacrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaabgaaaaaaaaaaaaaaaaaaaaacrPaafaafaaaaaqaaaaaaaafcgEcmtcmmcEgcgEcmtcmmcEgcgEcmtcmmcEhcgEaaacgEcEgcmmcEhcgEaaaaafaaacDzcEjcElcEkcEncEmcEpcEocDkcEqcEscJpcDJcEtcEvcEucExcEwcDJcJzcEAcEzcDraaaaaacAOcJAcFhcFiaaaaaabNUbPxbPxbNUcCacmUcmUcmUcCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcEEcFncuQcuQcuQcuQcuQcFocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaackEcdOcdOcdOcdOcdOcdOcdOcdOcmYcmYcmYckEaaaaaacrPcrPcrPcrPcrPaaaaaaaaacmZaaaaaaaaacrPcrPcrPbZScrPaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaafaaIaaaaaaaafcgEcEGcEIcEHcgEcEMcEOcENcgEcEPcERcEQcgEaafcgEcEScEUcETcgEaaaaafaaacDzcEVcDBcEncEncEWcEYcJBcFacEZcFccFbcJCcFdcFjcFfcFlcFkcFpcFmcJFcFqcDraafaaacFJcJVcJUcAOcKdaaabNUcFMcKocFNcFOaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrHcqvcqvcFPcFQcEfcEfcEfcFRcFPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqpbqpbqpaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaafcfTaafcrPaaaaaaaaaaaaaaaaaaaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaIaaaaafaafcgEcFscFtcFscgEcFucFvcFucgEcFwcFxcFwcgEaaacgEcFwcFwcFycgEaaaaafaaacDzcCLcFzcEkcEncDCcFAcDEcDkcFBcFDcKpcDJcKqcFGcKDcFGcFHcDJcFIcFTcFScDraaLcKFcKEcKHcKGcKEcKEcKIbNUciEciDcGjaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGlcEJcEJcEJcEJcEJcGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPaaaaafaaacrPaaaaaaaaaaaaaaaaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactYctYctYctYctYctYctYctYctYctYctYctYctYctYctYaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaIaafaafaaacgEcFscKJcFscgEcFucKKcFucgEcFwcKLcFwcgEaafcgEcFwcKMcFwcgEaafaafaafcFYcFXcGacFZcGccGbcGdcDEcDkcGecKNcGfcDJcGicGmcGkcKOcGncDJcGpcGrcGqcDraaacKQcKPcKScKRcKUcKTcKVcGFcGGcGHbNUaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqvcCmcqxcqxcqxcCocqvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrPcrPcrPcrPcrPaaaaaaaaaaaaaaaaaacBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBScBSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/exodus-2.dmm b/maps/exodus-2.dmm
index 0eb63301dcd..d0b1ebcfb2b 100644
--- a/maps/exodus-2.dmm
+++ b/maps/exodus-2.dmm
@@ -495,7 +495,7 @@
"jA" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership)
"jB" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership)
"jC" = (/obj/machinery/computer/security/nuclear,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership)
-"jD" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership)
+"jD" = (/obj/structure/table,/obj/machinery/button/remote/blast_door{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership)
"jE" = (/obj/machinery/door/airlock/hatch{name = "Infirmary"},/turf/simulated/shuttle/floor{icon_state = "floor2"},/area/centcom/evac)
"jF" = (/obj/structure/computerframe,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_mothership)
"jG" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 8},/area/syndicate_mothership)
@@ -663,7 +663,7 @@
"mM" = (/turf/unsimulated/wall{icon_state = "phoron4"},/area/alien)
"mN" = (/turf/unsimulated/wall{icon_state = "phoron13"},/area/alien)
"mO" = (/turf/unsimulated/wall{icon_state = "phoron9"},/area/alien)
-"mP" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space)
+"mP" = (/obj/structure/lattice,/obj/structure/grille/broken,/turf/space,/area/space)
"mQ" = (/obj/structure/table,/obj/item/device/flashlight/lamp{pixel_x = 4; pixel_y = 8},/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership)
"mR" = (/obj/structure/table,/obj/effect/landmark{name = "Nuclear-Code"},/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership)
"mS" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 8},/obj/item/weapon/pen{pixel_y = 4},/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership)
@@ -687,7 +687,7 @@
"nk" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"nl" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"nm" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
-"nn" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
+"nn" = (/obj/structure/table,/obj/machinery/button/remote/blast_door{id = "syndieshutters"; name = "remote shutter control"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
"no" = (/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"np" = (/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_x = -1; pixel_y = 8},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
"nq" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
@@ -912,7 +912,7 @@
"rB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"rC" = (/obj/machinery/bodyscanner,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start)
"rD" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start)
-"rE" = (/obj/machinery/door_control{id = "syndieshutters_infirmary"; name = "remote shutter control"; pixel_x = -25},/obj/structure/mopbucket,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start)
+"rE" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_infirmary"; name = "remote shutter control"; pixel_x = -25},/obj/structure/mopbucket,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/syndicate_station/start)
"rF" = (/obj/machinery/door/window{dir = 1; name = "Secure Storage"; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
"rG" = (/obj/item/weapon/stool{pixel_y = 8},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
"rH" = (/obj/structure/table,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
@@ -922,9 +922,9 @@
"rL" = (/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living)
"rM" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living)
"rN" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/living)
-"rO" = (/obj/machinery/door_control{id = "syndieshutters_telebay"; name = "remote shutter control"; pixel_x = 0; pixel_y = -25; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
+"rO" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_telebay"; name = "remote shutter control"; pixel_x = 0; pixel_y = -25; req_access = list(150)},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
"rP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/blast/shutters{density = 0; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
-"rQ" = (/obj/machinery/door_control{id = "syndieshutters_workshop"; name = "remote shutter control"; pixel_x = 25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
+"rQ" = (/obj/machinery/button/remote/blast_door{id = "syndieshutters_workshop"; name = "remote shutter control"; pixel_x = 25},/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
"rR" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Administration"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"rS" = (/obj/structure/table,/obj/item/device/aicard,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor6"},/area/syndicate_station/start)
"rT" = (/obj/structure/closet/secure_closet/bar{req_access = list(25)},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/living)
@@ -1064,7 +1064,7 @@
"ux" = (/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"uy" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/obj/item/weapon/gun/energy/gun/nuclear,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
"uz" = (/obj/machinery/vending/tool,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops)
-"uA" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{name = "Spec Ops Ready Room"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 15; req_access = list(11); id = "CREED"},/obj/machinery/door_control{name = "Mech Storage"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 0; req_access = list(11); id = "ASSAULT"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
+"uA" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/button/remote/blast_door{name = "Spec Ops Ready Room"; pixel_y = 15; req_access = list(11); id = "CREED"},/obj/machinery/button/remote/blast_door{name = "Mech Storage"; icon_state = "doorctrl0"; pixel_y = 0; req_access = list(11); id = "ASSAULT"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"uB" = (/obj/structure/bed,/turf/unsimulated/floor{icon_state = "panelscorched"},/area/prison/solitary)
"uC" = (/obj/structure/bed,/obj/effect/decal/cleanable/cobweb,/turf/unsimulated/floor{name = "plating"},/area/prison/solitary)
"uD" = (/turf/unsimulated/floor{icon_state = "green"; dir = 10},/area/centcom/control)
@@ -1388,7 +1388,7 @@
"AJ" = (/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/holding)
"AK" = (/turf/unsimulated/wall{icon_state = "iron3"},/area/syndicate_mothership{name = "\improper Raider Base"})
"AL" = (/obj/structure/bed/chair/holochair,/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_courtroom)
-"AM" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
+"AM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge West"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"AN" = (/obj/structure/window/reinforced/holowindow{dir = 1},/obj/structure/window/reinforced/holowindow{dir = 8},/obj/structure/table/woodentable/holotable,/turf/simulated/floor/holofloor{icon_state = "carpet6-2"; dir = 4},/area/holodeck/source_courtroom)
"AO" = (/obj/machinery/door/window/holowindoor{name = "Red Team"},/turf/simulated/floor/holofloor{icon_state = "dark"},/area/holodeck/source_emptycourt)
"AP" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/holding)
@@ -1441,10 +1441,10 @@
"BK" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
"BL" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
"BM" = (/obj/structure/bed,/obj/item/weapon/bedsheet/orange,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership{name = "\improper Raider Base"})
-"BN" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/extinguisher,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 8; pixel_y = 25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge West"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
+"BN" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "escape_shuttle"; pixel_x = 0; pixel_y = -25; req_one_access = list(13); tag_door = "escape_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"BO" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table,/obj/item/weapon/storage/firstaid/toxin,/obj/machinery/camera/network/crescent{c_tag = "Shuttle Bridge East"},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"BP" = (/turf/unsimulated/floor{icon_state = "green"; dir = 10},/area/centcom/holding)
-"BQ" = (/obj/structure/bed/chair/office/dark,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding)
+"BQ" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding)
"BR" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding)
"BS" = (/obj/machinery/computer/secure_data,/obj/machinery/camera/network/crescent{c_tag = "Crescent Arrivals North"; dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding)
"BT" = (/obj/structure/bed/chair{dir = 4},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
@@ -2041,7 +2041,6 @@
"Nm" = (/obj/machinery/computer/med_data,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"Nn" = (/obj/machinery/door/airlock/hatch{frequency = 1331; icon_state = "door_locked"; id_tag = "vox_northeast_lock"; locked = 1; req_access = list(150)},/turf/simulated/shuttle/plating,/area/shuttle/skipjack/station)
"No" = (/mob/living/simple_animal/crab,/turf/unsimulated/beach/sand{tag = "icon-desert3"; icon_state = "desert3"},/area/centcom/holding)
-"Np" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"Nq" = (/obj/machinery/hologram/holopad,/turf/unsimulated/floor{dir = 9; icon_state = "whitegreen"},/area/centcom/holding)
"Nr" = (/obj/item/weapon/beach_ball,/turf/unsimulated/beach/sand{tag = "icon-desert_dug"; icon_state = "desert_dug"},/area/centcom/holding)
"Ns" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
@@ -2287,8 +2286,8 @@ mtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmt
mumumumumumumumumumumuAnAnAnAnAnAoArArArAsAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMtvtvtvtvtvtvtvtvtvtvtvtvtvzAzBzBzAtvtvtvtvABxQxQyYyXtvzvzIzIzvzJzQDCzHCNApAfDCAqAFCNaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzKururzLzLururzKaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
mumumumumumumumumumumuAnAnAnAnAnAKAZASBaAKAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzMzNzNzNzNBvBvzNzNzPaMtvBzxQxQyYyXtvzvzwzwzvAGzQDCzHCNAJDCDCDCAPCNaMaMaMaMaMaMaMaMaMaMaMaMzRzSNaNaNazTzUaMaMaMaMaMtxzVururururzWtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
mumumumumumumumumumumuAnAnAnAnAnAKBMASASAKAnAnAnAnAnAnAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYzZAaBYAcAcAdCnzNzPtvtvxcxctvtvtvzvzvzvzvAQzQDCzHCNBcBbBcBdBcCNaMaMaMaMaMaMaMaMaMaMaMzRAiNiNjNkNlNmAlzUaMaMaMaMtxtxtxtxtxtxtxtxaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
-mumumumumumumuAnAnAnArDEArDIAnDUDEArDIEpDWArArArArArAsAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYAmAcAcAcAcAcAcEsErwoxQxQxQxQxQxOzvBezvBezFzQDCBtBfAJDCBFDCBGCNaMaMaMaMaMaMaMaMaMaMzRAiBNAMADAvADNpBOAlzUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
-mumumumuAnAnAnAnFYFZASASASASASASASASASASASASASASASASAKAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYAxAyAzAzAzAzAzzNAAxPxQxQxQxQxQxczvBezvBezJzQDCBtBfBPDCBRBQBSCNaMaMaMaMaMaMaMaMaMaMACADADADADNcADADADADACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
+mumumumumumumuAnAnAnArDEArDIAnDUDEArDIEpDWArArArArArAsAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYAmAcAcAcAcAcAcEsErwoxQxQxQxQxQxOzvBezvBezFzQDCBtBfAJDCBFDCBGCNaMaMaMaMaMaMaMaMaMaMzRAiAMAvADAvADAvBOAlzUaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
+mumumumuAnAnAnAnFYFZASASASASASASASASASASASASASASASASAKAnAnAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMzXzYAxAyAzAzAzAzAzzNAAxPxQxQxQxQxQxczvBezvBezJzQDCBtBfBPDCBRBQBSCNaMaMaMaMaMaMaMaMaMaMACADADADBNNcADADADADACaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
mumumumuAnAnASHkFYHkASASASASASASASASASASASASASASASASHmIJIIAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAEzNzNzNzNzNzNzNzNAAaMxkxQxQxQxQxQtvzvBezvBeAGCeCdCfCNBcCgCiChBcCNaMaMaMaMaMaMaMaMaMaMAtADBuNhNeNgNeNfCrADAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
mumumumuAnAnFYHkFYAnAnAnDUArArAsEpDUArILDIEpISASASASEpIUITAnAnAnmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHCNCNCNCNCNCNCNCNCNCjDCDCCkAPCNCNCNaMaMaMaMaMaMaMaMAtIVACATARAUARATACIVAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
mumumumuAnFYFYAnAnAnAnAnAnAnAnAKASASBMAKIWASAKASASASEpIUIXAnAnISmumumumumumumumtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMAVAWAWAWAWAWAWAWAWAWAWAWAWAWAXAYIYJaClCmCmCmCmCmCNDyCoCpDCDCCuAPCoDyCNaMaMaMaMaMaMaMaMAtADCrAtMQCvMUAtBuADAtaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaM
diff --git a/maps/exodus-3.dmm b/maps/exodus-3.dmm
index 53e6a59fe9b..dc486ee6d4b 100644
--- a/maps/exodus-3.dmm
+++ b/maps/exodus-3.dmm
@@ -103,7 +103,7 @@
"bY" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space)
"bZ" = (/obj/machinery/power/solar/fake,/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/space)
"ca" = (/turf/simulated/floor/plating/airless,/area/space)
-"cb" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space)
+"cb" = (/obj/structure/lattice,/obj/structure/grille/broken,/turf/space,/area/space)
"cc" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light{dir = 1},/obj/machinery/camera/network/telecom{c_tag = "Telecoms Main Computer Room"},/turf/simulated/floor,/area/tcommsat/computer)
"cd" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/space)
"ce" = (/turf/simulated/wall/r_wall,/area/space)
@@ -385,13 +385,13 @@
"hu" = (/obj/structure/table/rack,/obj/item/clothing/gloves/yellow,/turf/simulated/floor/plating/airless,/area/AIsattele)
"hv" = (/obj/structure/girder,/turf/simulated/floor/plating/airless,/area/AIsattele)
"hw" = (/obj/item/weapon/cell,/turf/simulated/floor/plating/airless,/area/AIsattele)
-"hx" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/AIsattele)
+"hx" = (/obj/structure/grille/broken,/turf/simulated/floor/plating/airless,/area/AIsattele)
"hy" = (/turf/space,/area/AIsattele)
"hz" = (/obj/item/weapon/table_parts,/turf/simulated/floor/plating/airless,/area/AIsattele)
"hA" = (/obj/structure/lattice,/turf/space,/area/AIsattele)
"hB" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/AIsattele)
"hC" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/AIsattele)
-"hD" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/AIsattele)
+"hD" = (/obj/structure/grille/broken,/turf/space,/area/AIsattele)
"hE" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele)
(1,1,1) = {"
diff --git a/maps/exodus-5.dmm b/maps/exodus-5.dmm
index 6b2cf709a7f..cf6158a1fc5 100644
--- a/maps/exodus-5.dmm
+++ b/maps/exodus-5.dmm
@@ -72,7 +72,7 @@
"bt" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Kitchen"},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/hallway)
"bu" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5},/obj/structure/curtain/open/shower,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/research/hallway)
"bv" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/research/hallway)
-"bw" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/research/hallway)
+"bw" = (/obj/machinery/button/remote/airlock{id = "rbath"; name = "Door Bolt Control"; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/outpost/research/hallway)
"bx" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 2},/turf/simulated/wall/r_wall,/area/outpost/research/chemistry)
"by" = (/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/outpost/research/chemistry)
"bz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/outpost/research/chemistry)
@@ -237,7 +237,7 @@
"eC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/outpost/research/hallway)
"eD" = (/obj/structure/sign/deathsposal{pixel_x = 32},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposal inlet"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplate"; nitrogen = 0.01; oxygen = 0.01},/area/outpost/research/disposal)
"eE" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/outpost/research/disposal)
-"eF" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/button/driver{id = "research"; pixel_x = -24; pixel_y = -24},/turf/simulated/floor/plating,/area/outpost/research/disposal)
+"eF" = (/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/button/remote/driver{id = "research"; pixel_x = -24; pixel_y = -24},/turf/simulated/floor/plating,/area/outpost/research/disposal)
"eG" = (/obj/machinery/conveyor{dir = 4; id = "archgunc"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/outpost/research/disposal)
"eH" = (/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/plating,/area/outpost/research/disposal)
"eI" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/outpost/research/hallway)
@@ -466,12 +466,12 @@
"iX" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/outpost/research/kitchen)
"iY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"iZ" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/obj/machinery/alarm{frequency = 1441; pixel_y = 22},/turf/simulated/floor/carpet,/area/outpost/research/hallway)
-"ja" = (/obj/machinery/door_control{id = "rdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway)
+"ja" = (/obj/machinery/button/remote/airlock{id = "rdorm2"; name = "Door Bolt Control"; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway)
"jb" = (/obj/structure/table/rack,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 5; pixel_y = 5},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/storage/belt/utility{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/emergency{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/plating,/area/outpost/research/chemistry)
"jc" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/carpet,/area/outpost/research/hallway)
"jd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/outpost/research/chemistry)
"je" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/outpost/research/kitchen)
-"jf" = (/obj/machinery/door_control{id = "rddorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway)
+"jf" = (/obj/machinery/button/remote/airlock{id = "rddorm1"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/research/hallway)
"jg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor,/area/outpost/research/chemistry)
"jh" = (/obj/machinery/light/small,/obj/structure/closet/walllocker/emerglocker/north{dir = 1; pixel_y = -32},/turf/simulated/floor/plating,/area/outpost/research/chemistry)
"ji" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rdorm2"; name = "Dorm 2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/outpost/research/hallway)
@@ -565,14 +565,14 @@
"kS" = (/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/structure/cable/blue,/obj/machinery/power/sensor{long_range = 1; name_tag = "Research Outpost"},/turf/simulated/floor,/area/outpost/research/power)
"kT" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor,/area/outpost/research/power)
"kU" = (/turf/simulated/wall/r_wall,/area/outpost/research/isolation_a)
-"kV" = (/obj/machinery/door_control{id = "riso1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring)
+"kV" = (/obj/machinery/button/remote/airlock{id = "riso1"; name = "Door Bolt Control"; pixel_x = -25; pixel_y = 0; specialfunctions = 4},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring)
"kW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/outpost/research/isolation_a)
"kX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/outpost/research/isolation_a)
-"kY" = (/obj/machinery/door_control{id = "riso2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring)
+"kY" = (/obj/machinery/button/remote/airlock{id = "riso2"; name = "Door Bolt Control"; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/blue{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring)
"kZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/outpost/research/isolation_b)
"la" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/outpost/research/isolation_b)
"lb" = (/turf/simulated/wall/r_wall,/area/outpost/research/isolation_c)
-"lc" = (/obj/machinery/door_control{id = "riso3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring)
+"lc" = (/obj/machinery/button/remote/airlock{id = "riso3"; name = "Door Bolt Control"; pixel_x = 0; pixel_y = -25; specialfunctions = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/outpost/research/isolation_monitoring)
"ld" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/outpost/research/isolation_c)
"le" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating,/area/outpost/research/isolation_c)
"lf" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "research_pump"},/obj/structure/closet/walllocker/emerglocker/east,/turf/simulated/floor,/area/outpost/research/eva)
@@ -763,8 +763,8 @@
"oI" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/outpost/abandoned)
"oJ" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/outpost/abandoned)
"oK" = (/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/outpost/research/power)
-"oL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/outpost/abandoned)
-"oM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/outpost/abandoned)
+"oL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille/broken,/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/outpost/abandoned)
+"oM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille/broken,/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/outpost/abandoned)
"oN" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/outpost/research/isolation_b)
"oO" = (/obj/machinery/artifact_scanpad,/obj/machinery/light,/turf/simulated/floor/bluegrid,/area/outpost/research/isolation_a)
"oP" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/bluegrid,/area/outpost/research/isolation_a)
@@ -1570,7 +1570,7 @@
"Ej" = (/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/outpost/mining_main/refinery)
"Ek" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor{icon_state = "floorgrime"},/area/outpost/mining_main/refinery)
"El" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor,/area/outpost/mining_main/east_hall)
-"Em" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms)
+"Em" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/remote/airlock{id = "miningdorm1"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms)
"En" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access = list(54)},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored)
"Eo" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/wood,/area/outpost/engineering/meeting)
"Ep" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = 28},/turf/simulated/floor/wood,/area/outpost/engineering/meeting)
@@ -1582,8 +1582,8 @@
"Ev" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/outpost/engineering/hallway)
"Ew" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Crew Area"; dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/outpost/mining_main/dorms)
"Ex" = (/obj/machinery/camera/network/mining{c_tag = "Mining Outpost Storage Room"; dir = 1},/turf/simulated/floor,/area/outpost/mining_main/west_hall)
-"Ey" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms)
-"Ez" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms)
+"Ey" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/remote/airlock{id = "miningdorm2"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms)
+"Ez" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/remote/airlock{id = "miningdorm3"; name = "Door Bolt Control"; pixel_x = 25; pixel_y = 0; specialfunctions = 4},/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/carpet,/area/outpost/mining_main/dorms)
"EA" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera/network/mining{c_tag = "Mining Outpost EVA"; dir = 4},/turf/simulated/floor,/area/outpost/mining_main/eva)
"EB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/outpost/engineering/meeting)
"EC" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/outpost/engineering/hallway)