diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 4ff968b7b64..8edd5e0c664 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -120,8 +120,8 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
var/datum/objective/escape/escape_with_identity/identity_theft = new
identity_theft.owner = changeling
identity_theft.target = kill_objective.target
- identity_theft.target_real_name = kill_objective.target.current.real_name //Whoops, forgot this.
if(identity_theft.target && identity_theft.target.current)
+ identity_theft.target_real_name = kill_objective.target.current.real_name //Whoops, forgot this.
var/mob/living/carbon/human/H = identity_theft.target.current
if(H.species && H.species.flags && H.species.flags & NO_SCAN) // For species that can't be absorbed - should default to an escape objective instead
return
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index e7205f6aa46..f1a9e3d1a52 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -22,12 +22,12 @@
/obj/effect/proc_holder/changeling/weapon/try_to_sting(var/mob/user, var/mob/target)
if(istype(user.l_hand, weapon_type)) //Not the nicest way to do it, but eh
- qdel(user.l_hand)
+ del(user.l_hand)
user.visible_message("With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "", "We assimilate the [weapon_name_simple] back into our body.", "", "We cast off our [suit_name_simple][genetic_damage > 0 ? ", temporarily weakening our genomes." : "."]", "You hear the organic matter ripping and tearing!")
- qdel(H.wear_suit)
- qdel(H.head)
+ del(H.wear_suit)
+ del(H.head)
H.update_inv_wear_suit()
H.update_inv_head()
H.update_hair()
@@ -140,7 +140,7 @@
/obj/item/weapon/melee/arm_blade/dropped(mob/user)
user.visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate the blade back into our body.", "", "We inflate our hand into a strong shield.", "You hear organic matter ripping and tearing!")
/obj/item/weapon/shield/changeling/dropped()
- qdel(src)
+ del(src)
/obj/item/weapon/shield/changeling/IsShield()
if(remaining_uses < 1)
@@ -224,7 +224,7 @@
var/mob/living/carbon/human/H = loc
H.visible_message("With a sickening crunch, [H] reforms his shield into an arm!", "We assimilate our shield into our body", "", "We harden our flesh, creating a suit of armor!", "You hear organic matter ripping and tearing!")
/obj/item/clothing/suit/armor/changeling/dropped()
- qdel(src)
+ del(src)
/obj/item/clothing/head/helmet/changeling
name = "chitinous mass"
@@ -335,4 +335,4 @@
flags_inv = HIDEEARS
/obj/item/clothing/head/helmet/changeling/dropped()
- qdel(src)
+ del(src)
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index b5e28c3b7a1..14011f549b5 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -140,6 +140,7 @@
return
/obj/machinery/computer/attack_paw(mob/living/user)
+ user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(circuit)
if(prob(10))
@@ -153,6 +154,7 @@
"You hear a clicking sound.")
/obj/machinery/computer/attack_alien(mob/living/user)
+ user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
if(circuit)
if(prob(80))
diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm
index fc325978682..06f8cfe5692 100644
--- a/code/game/machinery/computer/power.dm
+++ b/code/game/machinery/computer/power.dm
@@ -23,15 +23,14 @@
if(isturf(T))
attached = locate() in T
if(attached)
- powernet = attached.get_powernet()
-
-
+ powernet = attached.get_powernet()
+
/obj/machinery/power/monitor/attack_ai(mob/user)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
- interact(user)
+ interact(user)
/obj/machinery/power/monitor/attack_hand(mob/user)
add_fingerprint(user)
diff --git a/code/game/machinery/computer/xenos_shuttle.dm b/code/game/machinery/computer/xenos_shuttle.dm
index cdcb5efce43..343c2717b76 100644
--- a/code/game/machinery/computer/xenos_shuttle.dm
+++ b/code/game/machinery/computer/xenos_shuttle.dm
@@ -93,6 +93,9 @@
/obj/machinery/computer/xenos_station/attack_paw(mob/user as mob)
return attack_hand(user)
+
+/obj/machinery/computer/xenos_station/attack_alien(mob/user as mob)
+ return attack_hand(user)
/obj/machinery/computer/xenos_station/attack_hand(mob/user as mob)
if(!allowed(user))
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 4a33f3511d7..0d92be24127 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -126,7 +126,6 @@
if(!node)
return
if(!on)
- updateUsrDialog()
return
if(occupant)
@@ -141,7 +140,6 @@
if(abs(temperature_archived-air_contents.temperature) > 1)
network.update = 1
- updateUsrDialog()
return 1
@@ -306,7 +304,6 @@
var/mob/M = G:affecting
if(put_mob(M))
del(G)
- updateUsrDialog()
return
/obj/machinery/atmospherics/unary/cryo_cell/update_icon()
diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm
index 4a2a9c5e56e..fb909dee555 100644
--- a/code/game/machinery/embedded_controller/airlock_controllers.dm
+++ b/code/game/machinery/embedded_controller/airlock_controllers.dm
@@ -1,13 +1,15 @@
//base type for controllers of two-door systems
/obj/machinery/embedded_controller/radio/airlock
// Setup parameters only
+ radio_filter = RADIO_AIRLOCK
var/tag_exterior_door
var/tag_interior_door
var/tag_airpump
var/tag_chamber_sensor
var/tag_exterior_sensor
var/tag_interior_sensor
- var/tag_mech_sensor
+ var/tag_airlock_mech_sensor
+ var/tag_shuttle_mech_sensor
var/tag_secure = 0
/obj/machinery/embedded_controller/radio/airlock/initialize()
diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm
index 24c49f9fa55..8cb3abb9980 100644
--- a/code/game/machinery/embedded_controller/airlock_program.dm
+++ b/code/game/machinery/embedded_controller/airlock_program.dm
@@ -1,8 +1,9 @@
//Handles the control of airlocks
-#define STATE_WAIT 0
-#define STATE_DEPRESSURIZE 1
-#define STATE_PRESSURIZE 2
+#define STATE_IDLE 0
+#define STATE_PREPARE 1
+#define STATE_DEPRESSURIZE 2
+#define STATE_PRESSURIZE 3
#define TARGET_NONE 0
#define TARGET_INOPEN -1
@@ -16,9 +17,10 @@
var/tag_chamber_sensor
var/tag_exterior_sensor
var/tag_interior_sensor
- var/tag_mech_sensor
+ var/tag_airlock_mech_sensor
+ var/tag_shuttle_mech_sensor
- var/state = STATE_WAIT
+ var/state = STATE_IDLE
var/target_state = TARGET_NONE
/datum/computer/file/embedded_program/airlock/New(var/obj/machinery/embedded_controller/M)
@@ -42,7 +44,8 @@
tag_chamber_sensor = controller.tag_chamber_sensor? controller.tag_chamber_sensor : "[id_tag]_sensor"
tag_exterior_sensor = controller.tag_exterior_sensor
tag_interior_sensor = controller.tag_interior_sensor
- tag_mech_sensor = controller.tag_mech_sensor? controller.tag_mech_sensor : "[id_tag]_mech"
+ tag_airlock_mech_sensor = controller.tag_airlock_mech_sensor? controller.tag_airlock_mech_sensor : "[id_tag]_airlock_mech"
+ tag_shuttle_mech_sensor = controller.tag_shuttle_mech_sensor? controller.tag_shuttle_mech_sensor : "[id_tag]_shuttle_mech"
memory["secure"] = controller.tag_secure
spawn(10)
@@ -157,7 +160,7 @@
/datum/computer/file/embedded_program/airlock/process()
- if(!state)
+ if(!state) //Idle
if(target_state)
switch(target_state)
if(TARGET_INOPEN)
@@ -168,38 +171,45 @@
//lock down the airlock before activating pumps
close_doors()
- var/chamber_pressure = memory["chamber_sensor_pressure"]
- var/target_pressure = memory["target_pressure"]
-
- if(memory["purge"])
- target_pressure = 0
-
- if(chamber_pressure <= target_pressure)
- state = STATE_PRESSURIZE
- signalPump(tag_airpump, 1, 1, target_pressure) //send a signal to start pressurizing
-
- else if(chamber_pressure > target_pressure)
- state = STATE_DEPRESSURIZE
- signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing
-
- //Check for vacuum - this is set after the pumps so the pumps are aiming for 0
- if(!memory["target_pressure"])
- memory["target_pressure"] = ONE_ATMOSPHERE * 0.05
+ state = STATE_PREPARE
else
//make sure to return to a sane idle state
if(memory["pump_status"] != "off") //send a signal to stop pumping
signalPump(tag_airpump, 0)
- //the airlock will not allow itself to continue to cycle when any of the doors are forced open.
- if (state && !check_doors_secured())
+ if ((state == STATE_PRESSURIZE || state == STATE_DEPRESSURIZE) && !check_doors_secured())
+ //the airlock will not allow itself to continue to cycle when any of the doors are forced open.
stop_cycling()
switch(state)
+ if(STATE_PREPARE)
+ if (check_doors_secured())
+ var/chamber_pressure = memory["chamber_sensor_pressure"]
+ var/target_pressure = memory["target_pressure"]
+
+ if(memory["purge"])
+ target_pressure = 0
+
+ if(memory["purge"])
+ target_pressure = 0
+
+ if(chamber_pressure <= target_pressure)
+ state = STATE_PRESSURIZE
+ signalPump(tag_airpump, 1, 1, target_pressure) //send a signal to start pressurizing
+
+ else if(chamber_pressure > target_pressure)
+ state = STATE_DEPRESSURIZE
+ signalPump(tag_airpump, 1, 0, target_pressure) //send a signal to start depressurizing
+
+ //Check for vacuum - this is set after the pumps so the pumps are aiming for 0
+ if(!memory["target_pressure"])
+ memory["target_pressure"] = ONE_ATMOSPHERE * 0.05
+
if(STATE_PRESSURIZE)
if(memory["chamber_sensor_pressure"] >= memory["target_pressure"] * 0.95)
cycleDoors(target_state)
- state = STATE_WAIT
+ state = STATE_IDLE
target_state = TARGET_NONE
if(memory["pump_status"] != "off")
@@ -216,7 +226,7 @@
else if(memory["chamber_sensor_pressure"] <= memory["target_pressure"] * 1.05)
cycleDoors(target_state)
- state = STATE_WAIT
+ state = STATE_IDLE
target_state = TARGET_NONE
//send a signal to stop pumping
@@ -231,11 +241,11 @@
//these are here so that other types don't have to make so many assuptions about our implementation
/datum/computer/file/embedded_program/airlock/proc/begin_cycle_in()
- state = STATE_WAIT
+ state = STATE_IDLE
target_state = TARGET_INOPEN
/datum/computer/file/embedded_program/airlock/proc/begin_cycle_out()
- state = STATE_WAIT
+ state = STATE_IDLE
target_state = TARGET_OUTOPEN
/datum/computer/file/embedded_program/airlock/proc/close_doors()
@@ -243,11 +253,11 @@
toggleDoor(memory["exterior_status"], tag_exterior_door, 1, "close")
/datum/computer/file/embedded_program/airlock/proc/stop_cycling()
- state = STATE_WAIT
+ state = STATE_IDLE
target_state = TARGET_NONE
/datum/computer/file/embedded_program/airlock/proc/done_cycling()
- return (state == STATE_WAIT && target_state == TARGET_NONE)
+ return (state == STATE_IDLE && target_state == TARGET_NONE)
//are the doors closed and locked?
/datum/computer/file/embedded_program/airlock/proc/check_exterior_door_secured()
@@ -295,11 +305,19 @@
signalDoor(tag_exterior_door, command)
signalDoor(tag_interior_door, command)
+datum/computer/file/embedded_program/airlock/proc/signal_mech_sensor(var/command, var/sensor)
+ var/datum/signal/signal = new
+ signal.data["tag"] = sensor
+ signal.data["command"] = command
+ post_signal(signal)
+
/datum/computer/file/embedded_program/airlock/proc/enable_mech_regulation()
- signalDoor(tag_mech_sensor, "enable")
+ signal_mech_sensor("enable", tag_shuttle_mech_sensor)
+ signal_mech_sensor("enable", tag_airlock_mech_sensor)
/datum/computer/file/embedded_program/airlock/proc/disable_mech_regulation()
- signalDoor(tag_mech_sensor, "disable")
+ signal_mech_sensor("disable", tag_shuttle_mech_sensor)
+ signal_mech_sensor("disable", tag_airlock_mech_sensor)
/*----------------------------------------------------------
toggleDoor()
@@ -355,7 +373,7 @@ send an additional command to open the door again.
signalDoor(doorTag, doorCommand)
-#undef STATE_WAIT
+#undef STATE_IDLE
#undef STATE_DEPRESSURIZE
#undef STATE_PRESSURIZE
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index fa56228cc09..839eb562b84 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -357,7 +357,7 @@
/obj/machinery/porta_turret/bullet_act(obj/item/projectile/Proj)
- if(Proj.damage_type == HALLOSS)
+ if(Proj.damage_type == HALLOSS || Proj.damage_type == STAMINA)
return
if(enabled)
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index f0208139b81..0d6d6c97311 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -82,7 +82,7 @@
log_game("[key_name(user)] planted C4 on [key_name(target)] with [timer] second fuse")
else
- message_admins("[key_name(user, user.client)](?) planted C4 on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [timer] second fuse",0,1)
+ message_admins("[key_name(user, user.client)](?) planted C4 on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [timer] second fuse",0,1)
log_game("[key_name(user)] planted C4 on [target.name] at ([target.x],[target.y],[target.z]) with [timer] second fuse")
target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2")
diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm
index ff47eec90fa..b7f18ced386 100644
--- a/code/game/objects/structures/displaycase.dm
+++ b/code/game/objects/structures/displaycase.dm
@@ -229,6 +229,8 @@
update_icon()
else
if(user.a_intent == "harm")
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.do_attack_animation(src)
user.visible_message("\red [user.name] kicks \the [src]!", \
"\red You kick \the [src]!", \
"You hear glass crack.")
diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm
index 4a2c8fcf0d6..33fc2240830 100644
--- a/code/modules/admin/holder2.dm
+++ b/code/modules/admin/holder2.dm
@@ -49,21 +49,21 @@ proc/admin_proc()
NOTE: it checks usr! not src! So if you're checking somebody's rank in a proc which they did not call
you will have to do something like if(client.holder.rights & R_ADMIN) yourself.
*/
-/proc/check_rights(rights_required, show_msg=1)
- if(usr && usr.client)
+/proc/check_rights(rights_required, show_msg=1, var/mob/user = usr)
+ if(user && user.client)
if(rights_required)
- if(usr.client.holder)
- if(rights_required & usr.client.holder.rights)
+ if(user.client.holder)
+ if(rights_required & user.client.holder.rights)
return 1
else
if(show_msg)
- usr << "Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")]."
+ user << "Error: You do not have sufficient rights to do that. You require one of the following flags:[rights2text(rights_required," ")]."
else
- if(usr.client.holder)
+ if(user.client.holder)
return 1
else
if(show_msg)
- usr << "Error: You are not an admin."
+ user << "Error: You are not an admin."
return 0
//probably a bit iffy - will hopefully figure out a better solution
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index b23bf771db2..109a257ac03 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -500,6 +500,8 @@ datum/preferences
HTML += " \[Yes]"
else
HTML += " \[No]"
+ if(job.alt_titles)
+ HTML += "
\[[GetPlayerAltTitle(job)]\]"
HTML += ""
continue
/*
diff --git a/code/modules/mob/living/carbon/alien/humanoid/inventory.dm b/code/modules/mob/living/carbon/alien/humanoid/inventory.dm
index 138bd24f495..d279c11d0a5 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/inventory.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/inventory.dm
@@ -6,11 +6,11 @@
if(I == r_store)
r_store = null
- update_inv_pockets(0)
+ update_inv_pockets()
else if(I == l_store)
l_store = null
- update_inv_pockets(0)
+ update_inv_pockets()
/mob/living/carbon/alien/humanoid/attack_ui(slot_id)
var/obj/item/W = get_active_hand()
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 34e9801ef68..ce2298b3d46 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -118,7 +118,7 @@
wear_suit = null
if(I.flags_inv & HIDEJUMPSUIT)
update_inv_w_uniform()
- update_inv_wear_suit(0)
+ update_inv_wear_suit()
else if(I == w_uniform)
if(r_store)
unEquip(r_store, 1) //Again, makes sense for pockets to drop.
@@ -129,69 +129,69 @@
if(belt)
unEquip(belt)
w_uniform = null
- update_inv_w_uniform(0)
+ update_inv_w_uniform()
else if(I == gloves)
gloves = null
- update_inv_gloves(0)
+ update_inv_gloves()
else if(I == glasses)
glasses = null
- update_inv_glasses(0)
+ update_inv_glasses()
else if(I == head)
head = null
if(I.flags & BLOCKHAIR || I.flags & BLOCKHEADHAIR)
- update_hair(0) //rebuild hair
- update_inv_head(0)
+ update_hair() //rebuild hair
+ update_inv_head()
else if(I == r_ear)
r_ear = null
- update_inv_ears(0)
+ update_inv_ears()
else if (I == l_ear)
l_ear = null
- update_inv_ears(0)
+ update_inv_ears()
else if(I == shoes)
shoes = null
- update_inv_shoes(0)
+ update_inv_shoes()
else if(I == belt)
belt = null
- update_inv_belt(0)
+ update_inv_belt()
else if(I == wear_mask)
wear_mask = null
if(I.flags & BLOCKHAIR || I.flags & BLOCKHEADHAIR)
- update_hair(0) //rebuild hair
+ update_hair() //rebuild hair
if(internal)
if(internals)
internals.icon_state = "internal0"
internal = null
- update_inv_wear_mask(0)
+ update_inv_wear_mask()
else if(I == wear_id)
wear_id = null
- update_inv_wear_id(0)
+ update_inv_wear_id()
else if(I == wear_pda)
wear_pda = null
- update_inv_wear_pda(0)
+ update_inv_wear_pda()
else if(I == r_store)
r_store = null
- update_inv_pockets(0)
+ update_inv_pockets()
else if(I == l_store)
l_store = null
- update_inv_pockets(0)
+ update_inv_pockets()
else if(I == s_store)
s_store = null
- update_inv_s_store(0)
+ update_inv_s_store()
else if(I == back)
back = null
- update_inv_back(0)
+ update_inv_back()
else if(I == handcuffed)
handcuffed = null
- update_inv_handcuffed(1)
+ update_inv_handcuffed()
else if(I == legcuffed)
legcuffed = null
- update_inv_legcuffed(0)
+ update_inv_legcuffed()
else if(I == r_hand)
r_hand = null
- update_inv_r_hand(0)
+ update_inv_r_hand()
else if(I == l_hand)
l_hand = null
- update_inv_l_hand(0)
+ update_inv_l_hand()
update_action_buttons()
diff --git a/code/modules/nano/nanointeraction.dm b/code/modules/nano/nanointeraction.dm
index d746c64d689..6deadd1927b 100644
--- a/code/modules/nano/nanointeraction.dm
+++ b/code/modules/nano/nanointeraction.dm
@@ -13,7 +13,7 @@
return STATUS_CLOSE // By default no mob can do anything with NanoUI
/mob/dead/observer/can_use_topic()
- if(check_rights(R_ADMIN, 0))
+ if(check_rights(R_ADMIN, 0, src))
return STATUS_INTERACTIVE // Admins are more equal
return STATUS_UPDATE // Ghosts can view updates
diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm
index 20511c876e0..87c5d7c1073 100644
--- a/maps/cyberiad.dmm
+++ b/maps/cyberiad.dmm
@@ -133,7 +133,7 @@
"acC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"})
"acD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/stool/bed,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/execution{name = "\improper Prisoner Transfer Center"})
"acE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/security/execution{name = "\improper Prisoner Transfer Center"})
-"acF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area)
+"acF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"})
"acG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/permabrig)
"acH" = (/obj/structure/rack,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/projectile/shotgun/riot,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury)
"acI" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/window/reinforced{dir = 1},/obj/structure/rack,/obj/item/ammo_box/shotgun/beanbag,/obj/item/ammo_box/shotgun/beanbag,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/security/securearmoury)
@@ -12996,7 +12996,6 @@
"ePV" = (/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/poddoor{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology)
"ePW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/engine/break_room)
"ePX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/medical/virology)
-"ePY" = (/turf/simulated/wall/r_wall,/area/engine/equipmentstorage)
"ePZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area/medical/virology)
"eQa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/medical/virology/lab)
"eQb" = (/turf/simulated/wall,/area/medical/virology/lab)
@@ -13201,7 +13200,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaacuaaacqccqdcqeaaacqccqdcqeaaacqccqdcqeaabcqfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIOcoacIQcqgcoocphcqhcoocoocoocqicoocqgcqgcoocoocoocoocqjcIScpjcqlclncqmbTWePNePNcqncoxcqocqpcqqcoxcqrcHKcqscqtcqucqvcITbVQbDgcqwbVQcqwbDgbDgbDgcmXbDgeOEeOFeOHeOHeOHeOGeOEeOEaaaePRcqycqzcqAePScqCchwchwcqDcqEcqFcqGcqEcqFcqGcqEcqFcqGePPaaaaabeOlePyePyePyePycqHcoTcqIcqJcqKcqLcqMcqNeOlaaaaaaaaaaaaaaacqOcqOcqOcnZaabaabaabaabcqPaabaabaabaabaabakUcqOcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaacuaaacqccqQcqeaaacqccqQcqeaaacqccqQcqeaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabcIOcoacIUcqgcqRcoocqScqTcqUcqUcpgcoocqgcqVcoocoocoocoocqWcIVcqYcqZbSCcracrbePTcrdcrecoxcqocrfcrgcoxcrhcHKcDNcIXcDIcIZcIYcJfcJacJucJjcJCcJacJacJacJDcJaeOEaaaaaaaaaaaaaaaaaaaabaaaePrcrlcnKcrmePUcrnchwchwcqDcrocrpcrqcrrcrpcrqcrrcrpcrsePPaabaabeOlcnNcnOcnPePVcrucnScrvcrwcrxcrycrzcrAeOlaaaaaaaaaaaaaaacqOaaaaabaaaaabaaaaaaaaacrBaaaaabaabaaaaaaaaaaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaagaaaaaaaaaakqaabcqccqQcqeaaacqccqQcqeaabcqccqQcqeaabaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaacJEcoacolcrCcoocrDcrEcrFcrGcrHcrGcrIcrGcrJcrKcojcrLcqgcqgcIScrMcrNcrOcrPcrQePWcrScrTcrUcrVcrWcrXcrYcrZcJXcsacsbcsccsdcsecsfcsgcshcsicsjcskcslcsmcsncKaaabaaaaaaaaaaaaaaaaaaaabaabePRcspcsqcsrcsscstchwchwchwcsuchwchwchwchwchwchwchwcsvePXaaaaaaeOlcoPcoPcoPcsxcoScoTcsycszcsAcsBcsCcsDeOleOleOleOlaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabaabaaaaaacKncsGcolcsHcsIcsIcsJcolcolcolcolcolcolcolcolcolcolcolcolcolcbWcsKcbWcKrcbWePYcsLcsMcsNcsOcsPcsQcsRcsScJXcsTcsbcsccsUcsVcsWcsXcsYcsZctactbctcctdctecKvaabctgctgctgctgctgaaaaaaaabePrcthcnKctictjctkctlchwchwctmchwchwchwchwchwctnchwctoePZaaaaaaeOlcoPcoPcoPePVctqcnSctrctscttctuctvctwctxctyctzeOlaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFctGaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabaabaaaaaacKncsGcolcsHcsIcsIcsJcolcolcolcolcolcolcolcolcolcolcolcolcolcbWcsKcbWcKrcbWcgXcsLcsMcsNcsOcsPcsQcsRcsScJXcsTcsbcsccsUcsVcsWcsXcsYcsZctactbctcctdctecKvaabctgctgctgctgctgaaaaaaaabePrcthcnKctictjctkctlchwchwctmchwchwchwchwchwctnchwctoePZaaaaaaeOlcoPcoPcoPePVctqcnSctrctscttctuctvctwctxctyctzeOlaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFctGaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuacuakqaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaabaaaaaaaaaaaaaaaaaaaaaaaaaabcKzcKwcKwcKwcKwcKncKncoacolctHctIctIctJeImctKctLctLctLctLctMctNctOctNctNctPctPctNctQeIoeIneIpeIpctRctSctTctUctVctWctWctXeIqctYctZcuacubcsVcuccsXcudcuecufcugcuhcuicujeIrculcumcuncuocupctgaaaaaacuqeQaeQbcureQceQbcuscutcuucuvcuycuwcuxcuycuzcuAcuBcuCcuDePPaaaaaaeOlePyePyePyePycuEcoTcsycuFcuGcuHcsCcoTcuIcoTcuJeOlaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaaacuKcuKcuKcuKcuKaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuaaaaabaaaaabaabcuLaabaabaabcuLaabaaaaabcuLaabaaaaaaaaaaaaaaaaaaaaaaaaeIteIseIucuMcuNcuOeIvcuQcuRcuScolcolcuTcuUcolcolcuVcHqcHqcHqcHqeIweIyeIxeIyeIyeIyeIpeIpeIzeIAcuWcuXcuYctWcuZctTctWctWctWctWcvacJXcvbcvccubcubcsVcuccvdcudcuecvecvfcvgcvhcvieIBaabcvkcvlcupcvmctgaaaaaaaaaeQacvncvocvpeQbcvqcvrcvscvtcvucqGcqFcvucvvcvwcvxcqGcqFePPaaaaaaeOlcnNcnOcnPeQdcrucnScvzcvAcvBcvCcvDcvEcvFcvGcvHeOlaabaabcqOaaaaabaaaaabaabaabaaacsFaaaaabaaaaabaaaaabaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaakqaabcvIcvJcvJcvKcvLcvMcvMcvMcvLcvMcvMcvMcvLcvMcvMcvNcvJcvJcvJcvJcvJcvOcvPcvQcvRcvScvTcvUcvVcvWbYrcoacvXcolcolcolcolcvYcuVcHqcvZcwacwbcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqctTcwrctWctWctWcwscJXcwtcwucubcwvcwwcwxcwycwzcwAcwBcwCcwDcwEcwFeIrcwGcumcwHcupcupctgaaaaaaaabeQacwIcvocwJeQbcwKcwLctlcwMcvucwNcwOcvucwPcwQcvxcwNcwRePPaaaaaaeOlcoPcoQcoPcwScoScoTcwTcvAcwUcwVcoTcwWePyePyePyeOlaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/nano/templates/crew_monitor.tmpl b/nano/templates/crew_monitor.tmpl
index c2e4199c357..f2d0af04f52 100644
--- a/nano/templates/crew_monitor.tmpl
+++ b/nano/templates/crew_monitor.tmpl
@@ -8,9 +8,9 @@ Used In File(s): \code\game\machinery\computer\crew.dm
{{if value.sensor_type == 1}}