diff --git a/code/__DEFINES/alerts.dm b/code/__DEFINES/alerts.dm
new file mode 100644
index 000000000000..b4fc5e04c9c7
--- /dev/null
+++ b/code/__DEFINES/alerts.dm
@@ -0,0 +1,7 @@
+#define ALERT_BUCKLED "buckled"
+#define ALERT_HANDCUFFED "handcuffed"
+#define ALERT_LEGCUFFED "legcuffed"
+#define ALERT_FLOORED "floored"
+#define ALERT_INCAPACITATED "incapacitated"
+#define ALERT_KNOCKEDOUT "knockedout"
+#define ALERT_IMMOBILIZED "immobilized"
diff --git a/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm b/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm
index 56cd4dd8cd8e..89f3951e7c99 100644
--- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm
+++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm
@@ -23,11 +23,6 @@
#define COMSIG_LIVING_SPEAK "living_speak"
#define COMPONENT_OVERRIDE_SPEAK (1<<0)
-#define COMSIG_LIVING_APPLY_EFFECT "living_apply_effect"
-#define COMSIG_LIVING_ADJUST_EFFECT "living_adjust_effect"
-#define COMSIG_LIVING_SET_EFFECT "living_set_effect"
- #define COMPONENT_CANCEL_EFFECT (1<<0)
-
/// From /obj/structure/proc/do_climb(var/mob/living/user, mods)
#define COMSIG_LIVING_CLIMB_STRUCTURE "climb_over_structure"
/// From /mob/living/Collide(): (atom/A)
diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm
index f4beec321c9e..bfb62c2bcf6e 100644
--- a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm
+++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm
@@ -95,6 +95,9 @@
#define COMSIG_MOB_MOVE_OR_LOOK "mob_move_or_look"
#define COMPONENT_OVERRIDE_MOB_MOVE_OR_LOOK (1<<0)
+///from rejuv
+#define COMSIG_LIVING_POST_FULLY_HEAL "living_post_fully_heal"
+
///from /mob/living/emote(): ()
#define COMSIG_MOB_EMOTE "mob_emote"
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 0dcd26de3e3a..e50d9e72497c 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -1,3 +1,6 @@
+/// Multiplier for Stun/KD/KO/etc durations in new backend, due to old system being based on life ticks
+#define GLOBAL_STATUS_MULTIPLIER 20 // each in-code unit is worth 20ds of duration
+
#define HEALTH_THRESHOLD_DEAD -100
#define HEALTH_THRESHOLD_CRIT -50
diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm
new file mode 100644
index 000000000000..ecccbd40abeb
--- /dev/null
+++ b/code/__DEFINES/status_effects.dm
@@ -0,0 +1,25 @@
+///if it allows multiple instances of the effect
+#define STATUS_EFFECT_MULTIPLE 0
+///if it allows only one, preventing new instances
+#define STATUS_EFFECT_UNIQUE 1
+///if it allows only one, but new instances replace
+#define STATUS_EFFECT_REPLACE 2
+/// if it only allows one, and new instances just instead refresh the timer
+#define STATUS_EFFECT_REFRESH 3
+
+///Processing flags - used to define the speed at which the status will work
+///This is fast - 0.2s between ticks (I believe!)
+#define STATUS_EFFECT_FAST_PROCESS 0
+///This is slower and better for more intensive status effects - 1s between ticks
+#define STATUS_EFFECT_NORMAL_PROCESS 1
+
+//Incapacitated status effect flags
+/// If the incapacitated status effect will ignore a mob in restraints (handcuffs)
+#define IGNORE_RESTRAINTS (1<<0)
+/// If the incapacitated status effect will ignore a mob in stasis (stasis beds)
+#define IGNORE_STASIS (1<<1)
+/// If the incapacitated status effect will ignore a mob being agressively grabbed
+#define IGNORE_GRAB (1<<2)
+
+/// Time threshold after which we launch ending timer - this should be higher than the slowest processing rate
+#define STATUS_EFFECT_TIME_THRESHOLD (2 SECONDS)
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 6af4a3585e29..9cb67e1e0de1 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -179,9 +179,11 @@
#define SS_PRIORITY_FAST_OBJECTS 105
#define SS_PRIORITY_OBJECTS 104
#define SS_PRIORITY_DECORATOR 99
+#define SS_PRIORITY_EFFECTS 97
+#define SS_PRIORITY_FASTEFFECTS 96
#define SS_PRIORITY_HIJACK 97
#define SS_PRIORITY_POWER 95
-#define SS_PRIORITY_EFFECTS 92
+#define SS_PRIORITY_OLDEFFECTS 92
#define SS_PRIORITY_MACHINERY 90
#define SS_PRIORITY_FZ_TRANSITIONS 88
#define SS_PRIORITY_ROUND_RECORDING 83
diff --git a/code/__DEFINES/surgery.dm b/code/__DEFINES/surgery.dm
index 9257172eeee5..d63c6da26ac6 100644
--- a/code/__DEFINES/surgery.dm
+++ b/code/__DEFINES/surgery.dm
@@ -38,6 +38,15 @@ unless the surgical tool is completely unsuited to what it's being used for.*/
///A tool that's perfect for the surgery.
#define SURGERY_TOOL_MULT_IDEAL 1
+///The (no) chance of failure for surgery because the correct tools/conditions are used or skill compensates
+#define SURGERY_FAILURE_IMPOSSIBLE 0
+///The chance of failure for surgery because the the tool/ground is SURGERY_TOOL_MULT_BAD_SUBSTITUTE/SURGERY_SURFACE_MULT_UNSUITED and skill can't compensate enough
+#define SURGERY_FAILURE_UNLIKELY 5
+///The chance of failure for surgery because the the tool/ground is SURGERY_TOOL_MULT_AWFUL/SURGERY_SURFACE_MULT_AWFUL and skill can't compensate enough
+#define SURGERY_FAILURE_POSSIBLE 25
+///The chance of failure for surgery because the the tool and ground is some combination worse than awful and skill can't compensate enough
+#define SURGERY_FAILURE_LIKELY 50
+
//When initiating surgeries, these define their order when listed in initiation selector or 'you can't use this tool for anything, but could x, y, or z' messages.
///Appears first in lists. Ex. larva surgery, opening incision. Immediately life-threatening or initiation surgeries.
#define SURGERY_PRIORITY_MAXIMUM 5
diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm
index a0a4c927d3d9..630c9740dc80 100644
--- a/code/__DEFINES/xeno.dm
+++ b/code/__DEFINES/xeno.dm
@@ -580,9 +580,7 @@
#define XENO_STRUCTURE_CORE "hive core"
#define XENO_STRUCTURE_CLUSTER "hive cluster"
#define XENO_STRUCTURE_PYLON "hive pylon"
-#define XENO_STRUCTURE_POOL "spawn pool"
#define XENO_STRUCTURE_EGGMORPH "egg morpher"
-#define XENO_STRUCTURE_EVOPOD "evolution pod"
#define XENO_STRUCTURE_RECOVERY "recovery node"
#define XENO_STRUCTURE_NEST "thick resin nest"
diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm
index 215e228fdd9d..f5f61424daac 100644
--- a/code/_onclick/hud/hud.dm
+++ b/code/_onclick/hud/hud.dm
@@ -230,6 +230,7 @@
hud_version = display_hud_version
persistent_inventory_update(screenmob)
mymob.update_action_buttons(TRUE)
+ reorganize_alerts(screenmob)
mymob.reload_fullscreens()
// ensure observers get an accurate and up-to-date view
diff --git a/code/controllers/subsystem/processing/effects.dm b/code/controllers/subsystem/processing/effects.dm
index 5dc9c5f7b9c2..095d557c1ad3 100644
--- a/code/controllers/subsystem/processing/effects.dm
+++ b/code/controllers/subsystem/processing/effects.dm
@@ -1,5 +1,4 @@
PROCESSING_SUBSYSTEM_DEF(effects)
name = "Effects"
wait = 1 SECONDS
- flags = SS_NO_INIT | SS_KEEP_TIMING
priority = SS_PRIORITY_EFFECTS
diff --git a/code/controllers/subsystem/processing/fasteffects.dm b/code/controllers/subsystem/processing/fasteffects.dm
new file mode 100644
index 000000000000..29d3857916f9
--- /dev/null
+++ b/code/controllers/subsystem/processing/fasteffects.dm
@@ -0,0 +1,4 @@
+PROCESSING_SUBSYSTEM_DEF(fasteffects)
+ name = "Fast Effects"
+ wait = 0.2 SECONDS
+ priority = SS_PRIORITY_FASTEFFECTS
diff --git a/code/controllers/subsystem/processing/oldeffects.dm b/code/controllers/subsystem/processing/oldeffects.dm
new file mode 100644
index 000000000000..d2b217f5fc9d
--- /dev/null
+++ b/code/controllers/subsystem/processing/oldeffects.dm
@@ -0,0 +1,5 @@
+PROCESSING_SUBSYSTEM_DEF(oldeffects)
+ name = "Old Effects"
+ wait = 1 SECONDS
+ flags = SS_NO_INIT | SS_KEEP_TIMING
+ priority = SS_PRIORITY_OLDEFFECTS
diff --git a/code/datums/ammo/ammo.dm b/code/datums/ammo/ammo.dm
index cff78f5fb553..48a387e54d20 100644
--- a/code/datums/ammo/ammo.dm
+++ b/code/datums/ammo/ammo.dm
@@ -164,7 +164,8 @@
/datum/ammo/proc/knockback_effects(mob/living/living_mob, obj/projectile/fired_projectile)
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
- target.apply_effect(0.7, WEAKEN) // 0.9 seconds of stun, per agreement from Balance Team when switched from MC stuns to exact stuns
+ target.Stun(0.7) // Previous comment said they believed 0.7 was 0.9s and that the balance team approved this. Geez...
+ target.KnockDown(0.7)
target.apply_effect(1, SUPERSLOW)
target.apply_effect(2, SLOW)
to_chat(target, SPAN_XENODANGER("You are shaken by the sudden impact!"))
diff --git a/code/datums/ammo/bullet/rifle.dm b/code/datums/ammo/bullet/rifle.dm
index b6085572e3b9..0be6f1db8ff4 100644
--- a/code/datums/ammo/bullet/rifle.dm
+++ b/code/datums/ammo/bullet/rifle.dm
@@ -175,7 +175,8 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
- target.apply_effect(0.5, WEAKEN)
+ target.KnockDown(0.5) // purely for visual effect, noone actually cares
+ target.Stun(0.5)
target.apply_effect(2, SUPERSLOW)
target.apply_effect(5, SLOW)
else
diff --git a/code/datums/ammo/bullet/shotgun.dm b/code/datums/ammo/bullet/shotgun.dm
index 77e1e6401472..96ac4cb6ba04 100644
--- a/code/datums/ammo/bullet/shotgun.dm
+++ b/code/datums/ammo/bullet/shotgun.dm
@@ -25,7 +25,8 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
- target.apply_effect(0.5, WEAKEN)
+ target.KnockDown(0.5) // If you ask me the KD should be left out, but players like their visual cues
+ target.Stun(0.5)
target.apply_effect(1, SUPERSLOW)
target.apply_effect(3, SLOW)
else
@@ -249,7 +250,8 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
- target.apply_effect(0.5, WEAKEN)
+ target.KnockDown(0.5) // If you ask me the KD should be left out, but players like their visual cues
+ target.Stun(0.5)
target.apply_effect(2, SUPERSLOW)
target.apply_effect(5, SLOW)
else
@@ -338,7 +340,8 @@
return
shake_camera(M, 3, 4)
- M.apply_effect(2, WEAKEN)
+ M.KnockDown(2) // If you ask me the KD should be left out, but players like their visual cues
+ M.Stun(2)
M.apply_effect(4, SLOW)
if(iscarbonsizexeno(M))
to_chat(M, SPAN_XENODANGER("The impact knocks you off your feet!"))
@@ -351,7 +354,8 @@
if(iscarbonsizexeno(living_mob))
var/mob/living/carbon/xenomorph/target = living_mob
to_chat(target, SPAN_XENODANGER("You are shaken and slowed by the sudden impact!"))
- target.apply_effect(0.5, WEAKEN)
+ target.KnockDown(0.5) // If you ask me the KD should be left out, but players like their visual cues
+ target.Stun(0.5)
target.apply_effect(2, SUPERSLOW)
target.apply_effect(5, SLOW)
else
diff --git a/code/datums/ammo/energy.dm b/code/datums/ammo/energy.dm
index 01c69ffa0015..27d2b7d4e0c5 100644
--- a/code/datums/ammo/energy.dm
+++ b/code/datums/ammo/energy.dm
@@ -103,8 +103,8 @@
icon_state = "shrapnel_plasma"
damage_type = BURN
-/datum/ammo/bullet/shrapnel/plasma/on_hit_mob(mob/hit_mob, obj/projectile/hit_projectile)
- hit_mob.apply_effect(2, WEAKEN)
+/datum/ammo/bullet/shrapnel/plasma/on_hit_mob(mob/living/hit_mob, obj/projectile/hit_projectile)
+ hit_mob.Stun(2)
/datum/ammo/energy/yautja/caster
name = "root caster bolt"
@@ -141,12 +141,8 @@
log_attack("[key_name(C)] was stunned by a high power stun bolt from [key_name(P.firer)] at [get_area(P)]")
if(ishuman(C))
- var/mob/living/carbon/human/H = C
stun_time++
- H.apply_effect(stun_time, WEAKEN)
- else
- M.apply_effect(stun_time, WEAKEN)
-
+ C.apply_effect(stun_time, WEAKEN)
C.apply_effect(stun_time, STUN)
..()
@@ -217,12 +213,7 @@
continue
to_chat(M, SPAN_DANGER("A powerful electric shock ripples through your body, freezing you in place!"))
M.apply_effect(stun_time, STUN)
-
- if (ishuman(M))
- var/mob/living/carbon/human/H = M
- H.apply_effect(stun_time, WEAKEN)
- else
- M.apply_effect(stun_time, WEAKEN)
+ M.apply_effect(stun_time, WEAKEN)
/datum/ammo/energy/yautja/rifle/bolt
name = "plasma rifle bolt"
diff --git a/code/datums/ammo/rocket.dm b/code/datums/ammo/rocket.dm
index 52914f745110..66a9f65bdcdd 100644
--- a/code/datums/ammo/rocket.dm
+++ b/code/datums/ammo/rocket.dm
@@ -65,7 +65,6 @@
/datum/ammo/rocket/ap/on_hit_mob(mob/M, obj/projectile/P)
var/turf/T = get_turf(M)
M.ex_act(150, P.dir, P.weapon_cause_data, 100)
- M.apply_effect(2, WEAKEN)
M.apply_effect(2, PARALYZE)
if(ishuman_strict(M)) // No yautya or synths. Makes humans gib on direct hit.
M.ex_act(300, P.dir, P.weapon_cause_data, 100)
@@ -84,7 +83,6 @@
var/hit_something = 0
for(var/mob/M in T)
M.ex_act(150, P.dir, P.weapon_cause_data, 100)
- M.apply_effect(4, WEAKEN)
M.apply_effect(4, PARALYZE)
hit_something = 1
continue
diff --git a/code/datums/ammo/xeno.dm b/code/datums/ammo/xeno.dm
index 9ecc9ebf9321..654ab88c7abc 100644
--- a/code/datums/ammo/xeno.dm
+++ b/code/datums/ammo/xeno.dm
@@ -49,8 +49,9 @@
if(!isxeno(M))
if(insta_neuro)
- if(M.GetKnockDownValueNotADurationDoNotUse() < 3) // If they have less than somewhere random between 4 and 6 seconds KD left and assuming it doesnt get refreshed itnernally
- M.adjust_effect(1 * power, WEAKEN)
+ if(M.GetKnockDownDuration() < 3) // Why are you not using KnockDown(3) ? Do you even know 3 is SIX seconds ? So many questions left unanswered.
+ M.KnockDown(power)
+ M.Stun(power)
return
if(ishuman(M))
@@ -65,8 +66,9 @@
no_clothes_neuro = TRUE
if(no_clothes_neuro)
- if(M.GetKnockDownValueNotADurationDoNotUse() < 5) // If they have less than somewhere random between 8 and 10 seconds KD left and assuming it doesnt get refreshed itnernally
- M.adjust_effect(1 * power, WEAKEN) // KD them a bit more
+ if(M.GetKnockDownDuration() < 5) // Nobody actually knows what this means. Supposedly it means less than 10 seconds. Frankly if you get locked into 10s of knockdown to begin with there are bigger issues.
+ M.KnockDown(power)
+ M.Stun(power)
M.visible_message(SPAN_DANGER("[M] falls prone."))
/proc/apply_scatter_neuro(mob/living/M)
@@ -79,9 +81,9 @@
H.visible_message(SPAN_DANGER("[M] shrugs off the neurotoxin!"))
return
- if(M.GetKnockDownValueNotADurationDoNotUse() < 0.7) // basically (knocked_down && prob(90))
- M.apply_effect(0.7, WEAKEN)
- M.visible_message(SPAN_DANGER("[M] falls prone."))
+ M.KnockDown(0.7) // Completely arbitrary values from another time where stun timers incorrectly stacked. Kill as needed.
+ M.Stun(0.7)
+ M.visible_message(SPAN_DANGER("[M] falls prone."))
/datum/ammo/xeno/toxin/on_hit_mob(mob/M,obj/projectile/P)
if(ishuman(M))
diff --git a/code/datums/construction/xenomorph/construction_template_xenomorph.dm b/code/datums/construction/xenomorph/construction_template_xenomorph.dm
index 46b7e797632f..0bddbeecf359 100644
--- a/code/datums/construction/xenomorph/construction_template_xenomorph.dm
+++ b/code/datums/construction/xenomorph/construction_template_xenomorph.dm
@@ -4,7 +4,9 @@
name = "xenomorph structure"
build_type = /obj/effect/alien/resin/special
crystals_required = 45 * XENO_STRUCTURE_PLASMA_MULTIPLIER
- var/datum/hive_status/hive_ref //Who gets what we build
+ /// The hive that this structure belongs to.
+ var/datum/hive_status/hive_ref
+ /// The range around this structure which needs to be clear for it to be constructed.
var/block_range = 1
/datum/construction_template/xenomorph/set_structure_image()
@@ -24,6 +26,7 @@
/datum/construction_template/xenomorph/core
name = XENO_STRUCTURE_CORE
+ description = "Heart of the hive, grows hive weeds (which are necessary for other structures), stores larva, spawns lesser drones, and protects the hive from skyfire."
build_type = /obj/effect/alien/resin/special/pylon/core
build_icon_state = "core"
crystals_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER
@@ -31,6 +34,7 @@
/datum/construction_template/xenomorph/cluster
name = XENO_STRUCTURE_CLUSTER
+ description = "Remote section of the hive, grows hive weeds, and morphs into a hive pylon when placed near a communications tower."
build_type = /obj/effect/alien/resin/special/cluster
build_icon_state = "hive_cluster"
pixel_y = -8
@@ -43,6 +47,7 @@
/datum/construction_template/xenomorph/pylon
name = XENO_STRUCTURE_PYLON
+ description = "Remote section of the hive, grows hive weeds, spawns lesser drones, and protects sisters from air strikes."
build_type = /obj/effect/alien/resin/special/pylon
build_icon_state = "pylon"
crystals_required = 100 * XENO_STRUCTURE_PLASMA_MULTIPLIER
@@ -50,16 +55,19 @@
/datum/construction_template/xenomorph/eggmorph
name = XENO_STRUCTURE_EGGMORPH
+ description = "Processes hatched hosts into new facehuggers."
build_type = /obj/effect/alien/resin/special/eggmorph
build_icon_state = "eggmorph_preview"
/datum/construction_template/xenomorph/recovery
name = XENO_STRUCTURE_RECOVERY
+ description = "Hastily recovers the strength of sisters resting around it."
build_type = /obj/effect/alien/resin/special/recovery
build_icon_state = "recovery"
/datum/construction_template/xenomorph/nest
name = XENO_STRUCTURE_NEST
+ description = "Strong enough to secure a headhunter for indeterminate durations."
build_type = /obj/effect/alien/resin/special/nest
build_icon_state = "reinforced_nest"
@@ -101,3 +109,5 @@
xeno_message(SPAN_XENOWARNING("This structure needs to be built directly next to an vertical surface."), 7, XENO_HIVE_NORMAL)
qdel(owner)
qdel(src)
+
+#undef XENO_STRUCTURE_PLASMA_MULTIPLIER
diff --git a/code/datums/effects/_effects.dm b/code/datums/effects/_effects.dm
index 932dc44954fc..ea6823574f54 100644
--- a/code/datums/effects/_effects.dm
+++ b/code/datums/effects/_effects.dm
@@ -41,7 +41,7 @@
if(!validate_atom(thing) || QDELETED(thing))
qdel(src)
return
- START_PROCESSING(SSeffects, src)
+ START_PROCESSING(SSoldeffects, src)
affected_atom = thing
LAZYADD(affected_atom.effects_list, src)
@@ -118,7 +118,7 @@
if(affected_atom)
LAZYREMOVE(affected_atom.effects_list, src)
affected_atom = null
- STOP_PROCESSING(SSeffects, src)
+ STOP_PROCESSING(SSoldeffects, src)
. = ..()
diff --git a/code/datums/medal_awards.dm b/code/datums/medal_awards.dm
index 78fec7569582..ba8847c03661 100644
--- a/code/datums/medal_awards.dm
+++ b/code/datums/medal_awards.dm
@@ -174,9 +174,7 @@ GLOBAL_LIST_INIT(human_medals, list(MARINE_CONDUCT_MEDAL, MARINE_BRONZE_HEART_ME
user.visible_message("ERROR: ID card not registered in USCM registry. Potential medal fraud detected.")
return
- var/real_owner_ref = card.registered_ref
-
- if(real_owner_ref != WEAKREF(user))
+ if(!card.check_biometrics(user))
user.visible_message("ERROR: ID card not registered for [user.real_name] in USCM registry. Potential medal fraud detected.")
return
diff --git a/code/datums/status_effects/_status_effect.dm b/code/datums/status_effects/_status_effect.dm
new file mode 100644
index 000000000000..ddbd6366d98c
--- /dev/null
+++ b/code/datums/status_effects/_status_effect.dm
@@ -0,0 +1,277 @@
+/// Status effects are used to apply temporary or permanent effects to mobs.
+/// This file contains their code, plus code for applying and removing them.
+/datum/status_effect
+ /// The ID of the effect. ID is used in adding and removing effects to check for duplicates, among other things.
+ var/id = "effect"
+ /// When set initially / in on_creation, this is how long the status effect lasts in deciseconds.
+ /// While processing, this becomes the world.time when the status effect will expire.
+ /// -1 = infinite duration.
+ VAR_PROTECTED/duration = -1
+ /// Truthy once duration is initialized
+ VAR_PRIVATE/duration_set = FALSE
+ /// When set initially / in on_creation, this is how long between [proc/tick] calls in deciseconds.
+ /// Note that this cannot be faster than the processing subsystem you choose to fire the effect on. (See: [var/processing_speed])
+ /// While processing, this becomes the world.time when the next tick will occur.
+ /// -1 = will prevent ticks, and if duration is also unlimited (-1), stop processing wholesale.
+ var/tick_interval = 1 SECONDS
+ /// The mob affected by the status effect.
+ var/mob/living/owner
+ /// How many of the effect can be on one mob, and/or what happens when you try to add a duplicate.
+ var/status_type = STATUS_EFFECT_UNIQUE
+ /// If TRUE, we call [proc/on_remove] when owner is deleted. Otherwise, we call [proc/be_replaced].
+ var/on_remove_on_mob_delete = FALSE
+ /// The typepath to the alert thrown by the status effect when created.
+ /// Status effect "name"s and "description"s are shown to the owner here.
+ var/alert_type = /atom/movable/screen/alert/status_effect
+ /// The alert itself, created in [proc/on_creation] (if alert_type is specified).
+ var/atom/movable/screen/alert/status_effect/linked_alert
+ /// Used to define if the status effect should be using SSfasteffects or SSeffects
+ var/processing_speed = STATUS_EFFECT_FAST_PROCESS
+ /// Do we self-terminate when a fullheal is called? // CM note: this is rejuvenate
+ var/remove_on_fullheal = FALSE
+
+ /* Unimplemented feature: Our Rejuv needs refactoring to work with this
+ /// If remove_on_fullheal is TRUE, what flag do we need to be removed?
+ var/heal_flag_necessary = HEAL_STATUS
+ */
+
+ /* Particle effects feature was cut due to lacking backend, feel free to add when we have backend */
+
+ /// Timer ID for triggering the effect end precisely
+ var/timerid
+
+/datum/status_effect/New(list/arguments)
+ on_creation(arglist(arguments))
+
+/// Called from New() with any supplied status effect arguments.
+/// Not guaranteed to exist by the end.
+/// Returning FALSE from on_apply will stop on_creation and self-delete the effect.
+/datum/status_effect/proc/on_creation(mob/living/new_owner, ...)
+ SHOULD_NOT_SLEEP(TRUE) // Don't sleep between duration_set and update_timer
+ if(new_owner)
+ owner = new_owner
+ if(QDELETED(owner) || !on_apply())
+ qdel(src)
+ return
+ if(owner)
+ LAZYADD(owner.status_effects, src)
+ RegisterSignal(owner, COMSIG_LIVING_REJUVENATED, PROC_REF(remove_effect_on_heal))
+
+ if(duration != -1)
+ duration = world.time + duration
+ duration_set = TRUE
+ if(tick_interval != -1)
+ tick_interval = world.time + tick_interval
+
+ if(alert_type)
+ var/atom/movable/screen/alert/status_effect/new_alert = owner.throw_alert(id, alert_type)
+ new_alert.attached_effect = src //so the alert can reference us, if it needs to
+ linked_alert = new_alert //so we can reference the alert, if we need to
+
+ if(duration > world.time || tick_interval > world.time) //don't process if we don't care
+ switch(processing_speed)
+ if(STATUS_EFFECT_FAST_PROCESS)
+ START_PROCESSING(SSfasteffects, src)
+ if(STATUS_EFFECT_NORMAL_PROCESS)
+ START_PROCESSING(SSeffects, src)
+ update_timer()
+
+ update_particles()
+
+ return TRUE
+
+/datum/status_effect/Destroy()
+ if(timerid)
+ deltimer(timerid)
+ switch(processing_speed)
+ if(STATUS_EFFECT_FAST_PROCESS)
+ STOP_PROCESSING(SSfasteffects, src)
+ if(STATUS_EFFECT_NORMAL_PROCESS)
+ STOP_PROCESSING(SSeffects, src)
+ if(owner)
+ linked_alert = null
+ owner.clear_alert(id)
+ LAZYREMOVE(owner.status_effects, src)
+ on_remove()
+ UnregisterSignal(owner, COMSIG_LIVING_REJUVENATED)
+ owner = null
+ return ..()
+
+// Status effect process. Handles adjusting its duration and ticks.
+// If you're adding processed effects, put them in [proc/tick]
+// instead of extending / overriding the process() proc.
+/datum/status_effect/process(seconds_per_tick)
+ SHOULD_NOT_OVERRIDE(TRUE)
+ if(QDELETED(owner))
+ qdel(src)
+ return
+ if(tick_interval != -1 && tick_interval < world.time)
+ var/tick_length = initial(tick_interval)
+ tick(tick_length / (1 SECONDS))
+ tick_interval = world.time + tick_length
+ if(QDELING(src))
+ // tick deleted us, no need to continue
+ return
+
+ // Timer and update procs should basically always handle this, it's a safety net
+ if(!timerid && duration != -1 && duration < world.time)
+ qdel(src)
+ else
+ update_timer() // Attempt to start up end timer
+
+/// Updates the timer used for precisely ending the effect
+/// We force_refresh if the duration changed otherwise than ticking down
+/datum/status_effect/proc/update_timer(force_refresh = FALSE)
+ if(duration == -1 || duration <= world.time) // infinite or expired
+ return
+ else if(duration - world.time <= STATUS_EFFECT_TIME_THRESHOLD)
+ if(!timerid || force_refresh)
+ timerid = addtimer(CALLBACK(src, PROC_REF(timer_callback)), duration - world.time, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_NO_HASH_WAIT)
+ else if(timerid)
+ deltimer(timerid)
+ timerid = null
+
+/// Timer invocation callback to end the effect
+/datum/status_effect/proc/timer_callback()
+ if(timerid)
+ timerid = null
+ qdel(src) // shrimple as that
+
+/// Called when the effect is applied in on_created
+/// Returning FALSE will cause it to delete itself during creation instead.
+/datum/status_effect/proc/on_apply()
+ return TRUE
+
+/// Gets and formats examine text associated with our status effect.
+/// Return 'null' to have no examine text appear (default behavior).
+/datum/status_effect/proc/get_examine_text()
+ return null
+
+/**
+ * Called every tick from process().
+ * This is only called of tick_interval is not -1.
+ *
+ * Note that every tick =/= every processing cycle.
+ *
+ * * seconds_between_ticks = This is how many SECONDS that elapse between ticks.
+ * This is a constant value based upon the initial tick interval set on the status effect.
+ * It is similar to seconds_per_tick, from processing itself, but adjusted to the status effect's tick interval.
+ */
+/datum/status_effect/proc/tick(seconds_between_ticks)
+ return
+
+/// Called whenever the buff expires or is removed (qdeleted)
+/// Note that at the point this is called, it is out of the
+/// owner's status_effects list, but owner is not yet null
+/datum/status_effect/proc/on_remove()
+ return
+
+/// Called instead of on_remove when a status effect
+/// of status_type STATUS_EFFECT_REPLACE is replaced by itself,
+/// or when a status effect with on_remove_on_mob_delete
+/// set to FALSE has its mob deleted
+/datum/status_effect/proc/be_replaced()
+ linked_alert = null
+ owner.clear_alert(id)
+ LAZYREMOVE(owner.status_effects, src)
+ owner = null
+ qdel(src)
+
+/// Called before being fully removed (before on_remove)
+/// Returning FALSE will cancel removal
+/datum/status_effect/proc/before_remove()
+ return TRUE
+
+/// Called when a status effect of status_type STATUS_EFFECT_REFRESH
+/// has its duration refreshed in apply_status_effect - is passed New() args
+/datum/status_effect/proc/refresh(effect, ...)
+ var/original_duration = initial(duration)
+ if(original_duration == -1)
+ return
+ duration = world.time + original_duration
+ update_timer(force_refresh = TRUE)
+
+/// Adds nextmove modifier multiplicatively to the owner while applied
+/datum/status_effect/proc/nextmove_modifier()
+ return 1
+
+/// Adds nextmove adjustment additiviely to the owner while applied
+/datum/status_effect/proc/nextmove_adjust()
+ return 0
+
+/// Signal proc for [COMSIG_LIVING_REJUVENATED] to remove us on fullheal
+/datum/status_effect/proc/remove_effect_on_heal(datum/source, heal_flags)
+ SIGNAL_HANDLER
+
+ if(!remove_on_fullheal)
+ return
+
+// if(!heal_flag_necessary || (heal_flags & heal_flag_necessary))
+// qdel(src)
+ qdel(src)
+
+/// Updates the duration of the status effect to the given [amount] of deciseconds from now, qdeling / ending if we eclipse the current world time.
+/// If increment is truthy, we only update if the resulting amount is higher.
+/datum/status_effect/proc/update_duration(amount, increment = FALSE)
+ if(!duration_set) // Barebones setter for before we start everything up
+ if(increment)
+ duration = max(duration, amount)
+ else
+ duration = amount
+ return FALSE
+ if(duration == -1) // Infinite duration
+ return FALSE
+ var/new_duration = world.time + amount
+ if(increment && duration >= new_duration)
+ return FALSE
+ duration = new_duration
+ if(duration <= world.time)
+ qdel(src)
+ return TRUE
+ update_timer(force_refresh = TRUE)
+ return FALSE
+
+/// Updates the duration of the status effect to the given [amount] of deciseconds from its current set ending
+/datum/status_effect/proc/adjust_duration(amount)
+ if(!duration_set)
+ duration += amount
+ return FALSE
+ if(duration == -1)
+ return FALSE
+ var/remaining = duration - world.time
+ remaining += amount
+ return update_duration(remaining)
+
+/// Remove [amount] of duration (in deciseconds) from the status effect. Compatibility handler with /tg/.
+/datum/status_effect/proc/remove_duration(amount)
+ adjust_duration(-amount)
+
+/// Get duration left on the effect
+/datum/status_effect/proc/get_duration_left()
+ if(!duration_set)
+ return -1
+ var/remaining = duration - world.time
+ if(remaining < 0)
+ return -1
+ return remaining
+
+
+/**
+ * Updates the particles for the status effects
+ * Should be handled by subtypes!
+ */
+
+/datum/status_effect/proc/update_particles()
+ SHOULD_CALL_PARENT(FALSE)
+
+/// Alert base type for status effect alerts
+/atom/movable/screen/alert/status_effect
+ name = "Curse of Mundanity"
+ desc = "You don't feel any different..."
+ /// The status effect we're linked to
+ var/datum/status_effect/attached_effect
+
+/atom/movable/screen/alert/status_effect/Destroy()
+ attached_effect = null //Don't keep a ref now
+ return ..()
+
diff --git a/code/datums/status_effects/_status_effect_helpers.dm b/code/datums/status_effects/_status_effect_helpers.dm
new file mode 100644
index 000000000000..0ee952200610
--- /dev/null
+++ b/code/datums/status_effects/_status_effect_helpers.dm
@@ -0,0 +1,136 @@
+
+// Status effect helpers for living mobs
+
+/**
+ * Applies a given status effect to this mob.
+ *
+ * new_effect - TYPEPATH of a status effect to apply.
+ * Additional status effect arguments can be passed.
+ *
+ * Returns the instance of the created effected, if successful.
+ * Returns 'null' if unsuccessful.
+ */
+/mob/living/proc/apply_status_effect(datum/status_effect/new_effect, ...)
+ RETURN_TYPE(/datum/status_effect)
+
+ // The arguments we pass to the start effect. The 1st argument is this mob.
+ var/list/arguments = args.Copy()
+ arguments[1] = src
+
+ // If the status effect we're applying doesn't allow multiple effects, we need to handle it
+ if(initial(new_effect.status_type) != STATUS_EFFECT_MULTIPLE)
+ for(var/datum/status_effect/existing_effect as anything in status_effects)
+ if(existing_effect.id != initial(new_effect.id))
+ continue
+
+ switch(existing_effect.status_type)
+ // Multiple are allowed, continue as normal. (Not normally reachable)
+ if(STATUS_EFFECT_MULTIPLE)
+ break
+ // Only one is allowed of this type - early return
+ if(STATUS_EFFECT_UNIQUE)
+ return
+ // Replace the existing instance (deletes it).
+ if(STATUS_EFFECT_REPLACE)
+ existing_effect.be_replaced()
+ // Refresh the existing type, then early return
+ if(STATUS_EFFECT_REFRESH)
+ existing_effect.refresh(arglist(arguments))
+ return
+
+ // Create the status effect with our mob + our arguments
+ var/datum/status_effect/new_instance = new new_effect(arguments)
+ if(!QDELETED(new_instance))
+ return new_instance
+
+/**
+ * Removes all instances of a given status effect from this mob
+ *
+ * removed_effect - TYPEPATH of a status effect to remove.
+ * Additional status effect arguments can be passed - these are passed into before_remove.
+ *
+ * Returns TRUE if at least one was removed.
+ */
+/mob/living/proc/remove_status_effect(datum/status_effect/removed_effect, ...)
+ var/list/arguments = args.Copy(2)
+
+ . = FALSE
+ for(var/datum/status_effect/existing_effect as anything in status_effects)
+ if(existing_effect.id == initial(removed_effect.id) && existing_effect.before_remove(arguments))
+ qdel(existing_effect)
+ . = TRUE
+
+ return .
+
+/**
+ * Checks if this mob has a status effect that shares the passed effect's ID
+ *
+ * checked_effect - TYPEPATH of a status effect to check for. Checks for its ID, not it's typepath
+ *
+ * Returns an instance of a status effect, or NULL if none were found.
+ */
+/mob/proc/has_status_effect(datum/status_effect/checked_effect)
+ // Yes I'm being cringe and putting this on the mob level even though status effects only apply to the living level
+ // There's quite a few places (namely examine and, bleh, cult code) where it's easier to not need to cast to living before checking
+ // for an effect such as blindness
+ return null
+
+/mob/living/has_status_effect(datum/status_effect/checked_effect)
+ RETURN_TYPE(/datum/status_effect)
+
+ for(var/datum/status_effect/present_effect as anything in status_effects)
+ if(present_effect.id == initial(checked_effect.id))
+ return present_effect
+
+ return null
+
+/**
+ * Checks if this mob has a status effect that shares the passed effect's ID
+ * and has the passed sources are in its list of sources (ONLY works for grouped efects!)
+ *
+ * checked_effect - TYPEPATH of a status effect to check for. Checks for its ID, not it's typepath
+ *
+ * Returns an instance of a status effect, or NULL if none were found.
+ */
+/mob/proc/has_status_effect_from_source(datum/status_effect/grouped/checked_effect, sources)
+ // See [/mob/proc/has_status_effect] for reason behind having this on the mob level
+ return null
+
+/mob/living/has_status_effect_from_source(datum/status_effect/grouped/checked_effect, sources)
+ RETURN_TYPE(/datum/status_effect)
+
+ if(!ispath(checked_effect))
+ CRASH("has_status_effect_from_source passed with an improper status effect path.")
+
+ if(!islist(sources))
+ sources = list(sources)
+
+ for(var/datum/status_effect/grouped/present_effect in status_effects)
+ if(present_effect.id != initial(checked_effect.id))
+ continue
+ var/list/matching_sources = present_effect.sources & sources
+ if(length(matching_sources))
+ return present_effect
+
+ return null
+
+/**
+ * Returns a list of all status effects that share the passed effect type's ID
+ *
+ * checked_effect - TYPEPATH of a status effect to check for. Checks for its ID, not it's typepath
+ *
+ * Returns a list
+ */
+/mob/proc/has_status_effect_list(datum/status_effect/checked_effect)
+ // See [/mob/proc/has_status_effect] for reason behind having this on the mob level
+ return null
+
+/mob/living/has_status_effect_list(datum/status_effect/checked_effect)
+ RETURN_TYPE(/list)
+
+ var/list/effects_found = list()
+ for(var/datum/status_effect/present_effect as anything in status_effects)
+ if(present_effect.id == initial(checked_effect.id))
+ effects_found += present_effect
+
+ return effects_found
diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm
new file mode 100644
index 000000000000..a36b7b91e4c6
--- /dev/null
+++ b/code/datums/status_effects/debuffs/debuffs.dm
@@ -0,0 +1,104 @@
+//Largely negative status effects go here, even if they have small benificial effects
+//STUN EFFECTS
+/datum/status_effect/incapacitating
+ tick_interval = -1
+ status_type = STATUS_EFFECT_REPLACE
+ alert_type = null
+ remove_on_fullheal = TRUE
+// heal_flag_necessary = HEAL_CC_STATUS
+ var/needs_update_stat = FALSE
+
+/datum/status_effect/incapacitating/on_creation(mob/living/new_owner, set_duration)
+ if(isnum(set_duration))
+ update_duration(set_duration)
+ . = ..()
+ if(. && needs_update_stat)
+ owner.update_stat()
+
+
+/datum/status_effect/incapacitating/on_remove()
+ if(needs_update_stat ) //silicons need stat updates in addition to normal canmove updates
+ owner.update_stat()
+ return ..()
+
+//STUN
+/datum/status_effect/incapacitating/stun
+ id = "stun"
+// alert_type = /atom/movable/screen/alert/status_effect/stun
+
+/datum/status_effect/incapacitating/stun/on_apply()
+ . = ..()
+ if(!.)
+ return
+ owner.add_traits(list(TRAIT_INCAPACITATED, TRAIT_IMMOBILIZED /*, TRAIT_HANDS_BLOCKED*/), TRAIT_STATUS_EFFECT(id))
+
+/datum/status_effect/incapacitating/stun/on_remove()
+ owner.remove_traits(list(TRAIT_INCAPACITATED, TRAIT_IMMOBILIZED /*, TRAIT_HANDS_BLOCKED*/), TRAIT_STATUS_EFFECT(id))
+ return ..()
+
+/atom/movable/screen/alert/status_effect/stun
+ name = "Stunned"
+ desc = "You are incapacitated. You may not move or act."
+ icon_state = ALERT_INCAPACITATED
+
+
+//KNOCKDOWN
+/datum/status_effect/incapacitating/knockdown
+ id = "knockdown"
+// alert_type = /atom/movable/screen/alert/status_effect/knockdown
+
+/datum/status_effect/incapacitating/knockdown/on_apply()
+ . = ..()
+ if(!.)
+ return
+ owner.add_traits(list(TRAIT_FLOORED, TRAIT_IMMOBILIZED), TRAIT_STATUS_EFFECT(id))
+
+/datum/status_effect/incapacitating/knockdown/on_remove()
+ owner.remove_traits(list(TRAIT_FLOORED, TRAIT_IMMOBILIZED), TRAIT_STATUS_EFFECT(id))
+ return ..()
+
+/atom/movable/screen/alert/status_effect/knockdown
+ name = "Floored"
+ desc = "You can't stand up!"
+ icon_state = ALERT_FLOORED
+
+//IMMOBILIZED
+/datum/status_effect/incapacitating/immobilized
+ id = "immobilized"
+// alert_type = /atom/movable/screen/alert/status_effect/immobilized
+
+/datum/status_effect/incapacitating/immobilized/on_apply()
+ . = ..()
+ if(!.)
+ return
+ ADD_TRAIT(owner, TRAIT_IMMOBILIZED, TRAIT_STATUS_EFFECT(id))
+
+/datum/status_effect/incapacitating/immobilized/on_remove()
+ REMOVE_TRAIT(owner, TRAIT_IMMOBILIZED, TRAIT_STATUS_EFFECT(id))
+ return ..()
+
+/atom/movable/screen/alert/status_effect/immobilized
+ name = "Immobilized"
+ desc = "You can't move."
+ icon_state = ALERT_IMMOBILIZED
+
+//UNCONSCIOUS
+/datum/status_effect/incapacitating/unconscious
+ id = "unconscious"
+ needs_update_stat = TRUE
+// alert_type = /atom/movable/screen/alert/status_effect/unconscious
+
+/datum/status_effect/incapacitating/unconscious/on_apply()
+ . = ..()
+ if(!.)
+ return
+ ADD_TRAIT(owner, TRAIT_KNOCKEDOUT, TRAIT_STATUS_EFFECT(id))
+
+/datum/status_effect/incapacitating/unconscious/on_remove()
+ REMOVE_TRAIT(owner, TRAIT_KNOCKEDOUT, TRAIT_STATUS_EFFECT(id))
+ return ..()
+
+/atom/movable/screen/alert/status_effect/unconscious
+ name = "Unconscious"
+ desc = "You've been knocked out."
+ icon_state = ALERT_KNOCKEDOUT
diff --git a/code/datums/status_effects/grouped_effect.dm b/code/datums/status_effects/grouped_effect.dm
new file mode 100644
index 000000000000..ade0a187e0db
--- /dev/null
+++ b/code/datums/status_effects/grouped_effect.dm
@@ -0,0 +1,20 @@
+/// Status effect from multiple sources, when all sources are removed, so is the effect
+/datum/status_effect/grouped
+ // Grouped effects adds itself to [var/sources] and destroys itself if one exists already, there are never actually multiple
+ status_type = STATUS_EFFECT_MULTIPLE
+ /// A list of all sources applying this status effect. Sources are a list of keys
+ var/list/sources = list()
+
+/datum/status_effect/grouped/on_creation(mob/living/new_owner, source)
+ var/datum/status_effect/grouped/existing = new_owner.has_status_effect(type)
+ if(existing)
+ existing.sources |= source
+ qdel(src)
+ return FALSE
+
+ sources |= source
+ return ..()
+
+/datum/status_effect/grouped/before_remove(source)
+ sources -= source
+ return !length(sources)
diff --git a/code/datums/status_effects/limited_effect.dm b/code/datums/status_effects/limited_effect.dm
new file mode 100644
index 000000000000..0f56e72da52f
--- /dev/null
+++ b/code/datums/status_effects/limited_effect.dm
@@ -0,0 +1,20 @@
+/// These effects reapply their on_apply() effect when refreshed while stacks < max_stacks.
+/datum/status_effect/limited_buff
+ id = "limited_buff"
+ duration = -1
+ status_type = STATUS_EFFECT_REFRESH
+ ///How many stacks we currently have
+ var/stacks = 1
+ ///How many stacks we can have maximum
+ var/max_stacks = 3
+
+/datum/status_effect/limited_buff/refresh(effect)
+ if(stacks < max_stacks)
+ on_apply()
+ stacks++
+ else
+ maxed_out()
+
+/// Called whenever the buff is refreshed when there are more stacks than max_stacks.
+/datum/status_effect/limited_buff/proc/maxed_out()
+ return
diff --git a/code/datums/status_effects/stacking_effect.dm b/code/datums/status_effects/stacking_effect.dm
new file mode 100644
index 000000000000..3ef5855938f7
--- /dev/null
+++ b/code/datums/status_effects/stacking_effect.dm
@@ -0,0 +1,101 @@
+/// Status effects that can stack.
+/datum/status_effect/stacking
+ id = "stacking_base"
+ duration = -1 // Only removed under specific conditions.
+ tick_interval = 1 SECONDS // Deciseconds between decays, once decay starts
+ alert_type = null
+ /// How many stacks are currently accumulated.
+ /// Also, the default stacks number given on application.
+ var/stacks = 0
+ // Deciseconds until ticks start occuring, which removes stacks
+ /// (first stack will be removed at this time plus tick_interval)
+ var/delay_before_decay
+ /// How many stacks are lost per tick (decay trigger)
+ var/stack_decay = 1
+ /// The threshold for having special effects occur when a certain stack number is reached
+ var/stack_threshold
+ /// The maximum number of stacks that can be applied
+ var/max_stacks
+ /// If TRUE, the status effect is consumed / removed when stack_threshold is met
+ var/consumed_on_threshold = TRUE
+ /// Set to true once the stack_threshold is crossed, and false once it falls back below
+ var/threshold_crossed = FALSE
+
+/* This implementation is missing effects overlays because we did not have
+ /tg/ overlays backend available at the time. Feel free to add them when we do! */
+
+/// Effects that occur when the stack count crosses stack_threshold
+/datum/status_effect/stacking/proc/threshold_cross_effect()
+ return
+
+/// Effects that occur if the status effect is removed due to the stack_threshold being crossed
+/datum/status_effect/stacking/proc/stacks_consumed_effect()
+ return
+
+/// Effects that occur if the status is removed due to being under 1 remaining stack
+/datum/status_effect/stacking/proc/fadeout_effect()
+ return
+
+/// Runs every time tick(), causes stacks to decay over time
+/datum/status_effect/stacking/proc/stack_decay_effect()
+ return
+
+/// Called when the stack_threshold is crossed (stacks go over the threshold)
+/datum/status_effect/stacking/proc/on_threshold_cross()
+ threshold_cross_effect()
+ if(consumed_on_threshold)
+ stacks_consumed_effect()
+ qdel(src)
+
+/// Called when the stack_threshold is uncrossed / dropped (stacks go under the threshold after being over it)
+/datum/status_effect/stacking/proc/on_threshold_drop()
+ return
+
+/// Whether the owner can have the status effect.
+/// Return FALSE if the owner is not in a valid state (self-deletes the effect), or TRUE otherwise
+/datum/status_effect/stacking/proc/can_have_status()
+ return owner.stat != DEAD
+
+/// Whether the owner can currently gain stacks or not
+/// Return FALSE if the owner is not in a valid state, or TRUE otherwise
+/datum/status_effect/stacking/proc/can_gain_stacks()
+ return owner.stat != DEAD
+
+/datum/status_effect/stacking/tick(seconds_between_ticks)
+ if(!can_have_status())
+ qdel(src)
+ else
+ add_stacks(-stack_decay)
+ stack_decay_effect()
+
+/// Add (or remove) [stacks_added] stacks to our current stack count.
+/datum/status_effect/stacking/proc/add_stacks(stacks_added)
+ if(stacks_added > 0 && !can_gain_stacks())
+ return FALSE
+ stacks += stacks_added
+ if(stacks > 0)
+ if(stacks >= stack_threshold && !threshold_crossed) //threshold_crossed check prevents threshold effect from occuring if changing from above threshold to still above threshold
+ threshold_crossed = TRUE
+ on_threshold_cross()
+ if(consumed_on_threshold)
+ return
+ else if(stacks < stack_threshold && threshold_crossed)
+ threshold_crossed = FALSE //resets threshold effect if we fall below threshold so threshold effect can trigger again
+ on_threshold_drop()
+ if(stacks_added > 0)
+ tick_interval += delay_before_decay //refreshes time until decay
+ stacks = min(stacks, max_stacks)
+ else
+ fadeout_effect()
+ qdel(src) //deletes status if stacks fall under one
+
+/datum/status_effect/stacking/on_creation(mob/living/new_owner, stacks_to_apply)
+ . = ..()
+ if(.)
+ add_stacks(stacks_to_apply)
+
+/datum/status_effect/stacking/on_apply()
+ if(!can_have_status())
+ return FALSE
+ return ..()
+
diff --git a/code/game/gamemodes/colonialmarines/huntergames.dm b/code/game/gamemodes/colonialmarines/huntergames.dm
index aad0f9ba5787..310785070458 100644
--- a/code/game/gamemodes/colonialmarines/huntergames.dm
+++ b/code/game/gamemodes/colonialmarines/huntergames.dm
@@ -244,7 +244,8 @@
H.skills = null //no restriction on what the contestants can do
- H.apply_effect(15, WEAKEN)
+ H.KnockDown(15)
+ H.Stun(15)
H.nutrition = NUTRITION_NORMAL
var/randjob = rand(0,10)
diff --git a/code/game/machinery/computer/almayer_control.dm b/code/game/machinery/computer/almayer_control.dm
index 2b54d2e1df5b..e9b969e023b8 100644
--- a/code/game/machinery/computer/almayer_control.dm
+++ b/code/game/machinery/computer/almayer_control.dm
@@ -134,6 +134,19 @@
. = TRUE
if("evacuation_cancel")
+ var/mob/living/carbon/human/human_user = usr
+ var/obj/item/card/id/idcard = human_user.get_active_hand()
+ var/bio_fail = FALSE
+ if(!istype(idcard))
+ idcard = human_user.wear_id
+ if(!istype(idcard))
+ bio_fail = TRUE
+ else if(!idcard.check_biometrics(human_user))
+ bio_fail = TRUE
+ if(bio_fail)
+ to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!"))
+ return FALSE
+
if(!SShijack.cancel_evacuation())
to_chat(usr, SPAN_WARNING("You are unable to cancel the evacuation right now!"))
return FALSE
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 7a51539b8888..bcc4c4ac3ec8 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -154,6 +154,19 @@
state = STATE_EVACUATION
if("evacuation_cancel")
+ var/mob/living/carbon/human/human_user = usr
+ var/obj/item/card/id/idcard = human_user.get_active_hand()
+ var/bio_fail = FALSE
+ if(!istype(idcard))
+ idcard = human_user.wear_id
+ if(!istype(idcard))
+ bio_fail = TRUE
+ else if(!idcard.check_biometrics(human_user))
+ bio_fail = TRUE
+ if(bio_fail)
+ to_chat(human_user, SPAN_WARNING("Biometrics failure! You require an authenticated ID card to perform this action!"))
+ return FALSE
+
if(state == STATE_EVACUATION_CANCEL)
if(!SShijack.cancel_evacuation())
to_chat(usr, SPAN_WARNING("You are unable to cancel the evacuation right now!"))
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index 9a08ab7bd566..e7626938549a 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -95,7 +95,7 @@
if("Released")
background = "'background-color:#2981b3;'"
if("Suspect")
- background = "'background-color:#008743;'"
+ background = "'background-color:#686A6C;'"
if("NJP")
background = "'background-color:#faa20a;'"
if("None")
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 53bf82c93925..ab5dc6448f4b 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -386,34 +386,35 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li
stop_processing()
/obj/structure/machinery/cryopod/attackby(obj/item/W, mob/living/user)
-
+ if(isxeno(user))
+ return FALSE
if(istype(W, /obj/item/grab))
- if(isxeno(user)) return
var/obj/item/grab/G = W
if(occupant)
to_chat(user, SPAN_WARNING("[src] is occupied."))
- return
+ return FALSE
if(!isliving(G.grabbed_thing))
- return
+ return FALSE
- var/willing = null //We don't want to allow people to be forced into despawning.
+ var/willing = FALSE //We don't want to allow people to be forced into despawning.
var/mob/living/M = G.grabbed_thing
if(M.stat == DEAD) //This mob is dead
to_chat(user, SPAN_WARNING("[src] immediately rejects [M]. \He passed away!"))
- return
+ return FALSE
if(isxeno(M))
to_chat(user, SPAN_WARNING("There is no way [src] will accept [M]!"))
- return
+ return FALSE
if(M.client)
if(alert(M,"Would you like to enter cryosleep?", , "Yes", "No") == "Yes")
- if(!M || !G || !G.grabbed_thing) return
- willing = 1
+ if(!M || !G || !G.grabbed_thing)
+ return FALSE
+ willing = TRUE
else
- willing = 1
+ willing = TRUE
if(willing)
@@ -424,7 +425,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li
if(!M || !G || !G.grabbed_thing) return
if(occupant)
to_chat(user, SPAN_WARNING("[src] is occupied."))
- return
+ return FALSE
go_in_cryopod(M)
@@ -434,6 +435,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li
//Despawning occurs when process() is called with an occupant without a client.
add_fingerprint(user)
+ return TRUE
/obj/structure/machinery/cryopod/relaymove(mob/user)
if(user.is_mob_incapacitated(TRUE))
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index b03ba1e8e195..332d9b96bd44 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -858,7 +858,8 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list(
var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread
sparks.set_up(5, 1, src)
sparks.start()
- xeno.apply_effect(1, WEAKEN)
+ xeno.KnockDown(1)
+ xeno.Stun(1)
playsound(src, 'sound/effects/metalhit.ogg', 50, TRUE)
xeno.visible_message(SPAN_XENOWARNING("\The [xeno] strikes \the [src] with its tail!"), SPAN_XENOWARNING("You strike \the [src] with your tail!"))
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index fc2cf5a6320c..437ef7b067ea 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -60,7 +60,7 @@
src.last_flash = world.time
use_power(1500)
- for (var/mob/O in viewers(src, null))
+ for (var/mob/living/O in viewers(src, null))
if (get_dist(src, O) > src.range)
continue
@@ -72,7 +72,9 @@
if (istype(O, /mob/living/carbon/xenomorph))//So aliens don't get flashed (they have no external eyes)/N
continue
- O.apply_effect(strength, WEAKEN)
+ O.KnockDown(strength)
+ O.Stun(strength)
+
if (istype(O, /mob/living/carbon/human))
var/mob/living/carbon/human/H = O
var/datum/internal_organ/eyes/E = H.internal_organs_by_name["eyes"]
diff --git a/code/game/machinery/medical_pod/bodyscanner.dm b/code/game/machinery/medical_pod/bodyscanner.dm
index bbc3be7d5aae..732ff1ba97b9 100644
--- a/code/game/machinery/medical_pod/bodyscanner.dm
+++ b/code/game/machinery/medical_pod/bodyscanner.dm
@@ -204,7 +204,7 @@
"toxloss" = H.getToxLoss(),
"cloneloss" = H.getCloneLoss(),
"brainloss" = H.getBrainLoss(),
- "knocked_out" = H.GetKnockOutValueNotADurationDoNotUse(),
+ "knocked_out" = H.GetKnockOutDuration(),
"bodytemp" = H.bodytemperature,
"inaprovaline_amount" = H.reagents.get_reagent_amount("inaprovaline"),
"dexalin_amount" = H.reagents.get_reagent_amount("dexalin"),
@@ -263,7 +263,7 @@
s_class = occ["brainloss"] < 1 ? INTERFACE_GOOD : INTERFACE_BAD
dat += "[SET_CLASS("  Approx. Brain Damage:", INTERFACE_PINK)] [SET_CLASS("[occ["brainloss"]]%", s_class)]
"
- dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% (approximately [round(occ["knocked_out"] / 5)] seconds left!)
"
+ dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% (approximately [round(occ["knocked_out"] * GLOBAL_STATUS_MULTIPLIER / (1 SECONDS))] seconds left!)
"
dat += "[SET_CLASS("Body Temperature:", "#40628a")] [occ["bodytemp"]-T0C]°C ([occ["bodytemp"]*1.8-459.67]°F)
"
s_class = occ["blood_amount"] > 448 ? INTERFACE_OKAY : INTERFACE_BAD
diff --git a/code/game/machinery/medical_pod/sleeper.dm b/code/game/machinery/medical_pod/sleeper.dm
index fe2b698caed0..84ef2f579ba1 100644
--- a/code/game/machinery/medical_pod/sleeper.dm
+++ b/code/game/machinery/medical_pod/sleeper.dm
@@ -391,7 +391,7 @@
to_chat(user, "[]\t -Toxin Content %: []", (occupant.getToxLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getToxLoss())
to_chat(user, "[]\t -Burn Severity %: []", (occupant.getFireLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getFireLoss())
to_chat(user, SPAN_NOTICE(" Expected time till occupant can safely awake: (note: These times are always inaccurate)"))
- to_chat(user, SPAN_NOTICE(" \t [occupant.GetKnockOutValueNotADurationDoNotUse() / 5] second\s (if around 1 or 2 the sleeper is keeping them asleep.)"))
+ to_chat(user, SPAN_NOTICE(" \t [occupant.GetKnockOutDuration() * GLOBAL_STATUS_MULTIPLIER / (1 SECONDS)] second\s (if around 1 or 2 the sleeper is keeping them asleep.)"))
else
to_chat(user, SPAN_NOTICE(" There is no one inside!"))
return
diff --git a/code/game/machinery/nuclearbomb.dm b/code/game/machinery/nuclearbomb.dm
index 369953788ae1..cfb0d1abb94f 100644
--- a/code/game/machinery/nuclearbomb.dm
+++ b/code/game/machinery/nuclearbomb.dm
@@ -111,7 +111,7 @@ GLOBAL_VAR_INIT(bomb_set, FALSE)
if(isqueen(user))
if(timing && GLOB.bomb_set)
- user.visible_message(SPAN_INFO("[user] begins to defuse \the [src]."), SPAN_INFO("You begin to defuse \the [src]. This will take some time..."))
+ user.visible_message(SPAN_INFO("[user] begins engulfing \the [src] with resin."), SPAN_INFO("You start regurgitating and engulfing the \the [src] with resin... stopping the electronics from working, this will take some time..."))
if(do_after(user, 5 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE))
disable()
return
@@ -333,13 +333,13 @@ GLOBAL_VAR_INIT(bomb_set, FALSE)
announcement_helper("WARNING.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg')
//preds part
var/t_left = duration2text_sec(round(rand(timeleft - timeleft / 10, timeleft + timeleft / 10)))
- yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nYou have approximately [t_left] seconds to abandon the hunting grounds before activation of human Purification Device."))
+ yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nYou have approximately [t_left] seconds to abandon the hunting grounds before activation of the human purification device."))
//xenos part
var/warning
if(timer_warning & NUKE_SHOW_TIMER_HALF)
- warning = "Hive killer is halfway through preparation cycle!"
+ warning = "A shiver goes down our carapace as we feel the approaching end... the hive killer is halfway through its preparation cycle!"
else if(timer_warning & NUKE_SHOW_TIMER_MINUTE)
- warning = "Hive killer is almost ready to trigger!"
+ warning = "Every sense in our form is screaming... the hive killer is almost ready to trigger!"
else
warning = "DISABLE IT! NOW!"
var/datum/hive_status/hive
@@ -355,7 +355,7 @@ GLOBAL_VAR_INIT(bomb_set, FALSE)
announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE ACTIVATED.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg')
announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE ACTIVATED.\n\nDETONATION IN [round(timeleft/10)] SECONDS.", "HQ Nuclear Tracker", humans_other, 'sound/misc/notice1.ogg')
var/t_left = duration2text_sec(round(rand(timeleft - timeleft / 10, timeleft + timeleft / 10)))
- yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
A human Purification Device has been detected. You have approximately [t_left] to abandon the hunting grounds before it activates."))
+ yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
A human purification device has been detected. You have approximately [t_left] to abandon the hunting grounds before it activates."))
for(var/hivenumber in GLOB.hive_datum)
hive = GLOB.hive_datum[hivenumber]
if(!hive.totalXenos.len)
@@ -364,7 +364,7 @@ GLOBAL_VAR_INIT(bomb_set, FALSE)
else
announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DEACTIVATED.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg')
announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DEACTIVATED.", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg')
- yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
The human Purification Device's signature has disappeared."))
+ yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
The human purification device's signature has disappeared."))
for(var/hivenumber in GLOB.hive_datum)
hive = GLOB.hive_datum[hivenumber]
if(!hive.totalXenos.len)
@@ -575,14 +575,14 @@ GLOBAL_VAR_INIT(bomb_set, FALSE)
announcement_helper("DECRYPTION COMPLETE", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg')
announcement_helper("DECRYPTION COMPLETE", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg')
- yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nThe human Purification Device is able to be activated."))
+ yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nThe human purification device is able to be activated."))
var/datum/hive_status/hive
for(var/hivenumber in GLOB.hive_datum)
hive = GLOB.hive_datum[hivenumber]
if(!length(hive.totalXenos))
return
- xeno_announcement(SPAN_XENOANNOUNCE("The hive killer is ready to be activated! Assault at once!"), hive.hivenumber, XENO_GENERAL_ANNOUNCE)
+ xeno_announcement(SPAN_XENOANNOUNCE("We get a sense of impending doom... the hive killer is ready to be activated."), hive.hivenumber, XENO_GENERAL_ANNOUNCE)
return
announcement_helper("DECRYPTION IN [round(decryption_time/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg')
@@ -590,12 +590,12 @@ GLOBAL_VAR_INIT(bomb_set, FALSE)
//preds part
var/time_left = duration2text_sec(round(rand(decryption_time - decryption_time / 10, decryption_time + decryption_time / 10)))
- yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nYou have approximately [time_left] seconds to abandon the hunting grounds before human Purification Device is able to be activated."))
+ yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!\n\nYou have approximately [time_left] seconds to abandon the hunting grounds before the human purification device is able to be activated."))
//xenos part
- var/warning = "Hive killer is almost prepared to be activated!"
+ var/warning = "We are almost out of time, STOP THEM."
if(timer_warning & NUKE_DECRYPT_SHOW_TIMER_HALF)
- warning = "Hive killer is halfway through its initial phase!"
+ warning = "The Hive grows restless! it's halfway done..."
var/datum/hive_status/hive
for(var/hivenumber in GLOB.hive_datum)
@@ -610,7 +610,7 @@ GLOBAL_VAR_INIT(bomb_set, FALSE)
announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DECRYPTION STARTED.\n\nDECRYPTION IN [round(decryption_time/10)] SECONDS.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg')
announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE ORDNANCE DECRYPTION STARTED.\n\nDECRYPTION IN [round(decryption_time/10)] SECONDS.", "HQ Nuclear Tracker", humans_other, 'sound/misc/notice1.ogg')
var/time_left = duration2text_sec(round(rand(decryption_time - decryption_time / 10, decryption_time + decryption_time / 10)))
- yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
A human Purification Device has been detected. You have approximately [time_left] before it finishes its initial phase."))
+ yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
A human purification device has been detected. You have approximately [time_left] before it finishes its initial phase."))
for(var/hivenumber in GLOB.hive_datum)
hive = GLOB.hive_datum[hivenumber]
if(!length(hive.totalXenos))
@@ -620,7 +620,7 @@ GLOBAL_VAR_INIT(bomb_set, FALSE)
announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE DECRYPTION HALTED.", "[MAIN_AI_SYSTEM] Nuclear Tracker", humans_uscm, 'sound/misc/notice1.ogg')
announcement_helper("ALERT.\n\nNUCLEAR EXPLOSIVE DECRYPTION HALTED.", "HQ Intel Division", humans_other, 'sound/misc/notice1.ogg')
- yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
The human Purification Device's signature has disappeared."))
+ yautja_announcement(SPAN_YAUTJABOLDBIG("WARNING!
The human purification device's signature has disappeared."))
for(var/hivenumber in GLOB.hive_datum)
hive = GLOB.hive_datum[hivenumber]
if(!length(hive.totalXenos))
diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm
index 02b602cc8e07..6415e1d0acd5 100644
--- a/code/game/machinery/vending/cm_vending.dm
+++ b/code/game/machinery/vending/cm_vending.dm
@@ -555,7 +555,7 @@ GLOBAL_LIST_EMPTY(vending_products)
vend_fail()
return FALSE
var/obj/item/card/id/ID = user.wear_id
- if(!istype(ID) || ID.registered_ref != WEAKREF(usr))
+ if(!istype(ID) || !ID.check_biometrics(user))
to_chat(user, SPAN_WARNING("You must be wearing your [SPAN_INFO("dog tags")] to select a specialization!"))
return FALSE
var/specialist_assignment
@@ -779,15 +779,15 @@ GLOBAL_LIST_EMPTY(vending_products)
vend_fail()
return FALSE
- var/mob/living/carbon/human/H = user
- var/obj/item/card/id/I = H.wear_id
- if(!istype(I))
+ var/mob/living/carbon/human/human_user = user
+ var/obj/item/card/id/idcard = human_user.wear_id
+ if(!istype(idcard))
if(display)
to_chat(user, SPAN_WARNING("Access denied. No ID card detected"))
vend_fail()
return FALSE
- if(I.registered_name != user.real_name)
+ if(!idcard.check_biometrics(human_user))
if(display)
to_chat(user, SPAN_WARNING("Wrong ID card owner detected."))
vend_fail()
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index d328bb958643..41adfdd9581d 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -326,11 +326,11 @@
handle_weather()
RegisterSignal(SSdcs, COMSIG_GLOB_WEATHER_CHANGE, PROC_REF(handle_weather))
RegisterSignal(acid_t, COMSIG_PARENT_QDELETING, PROC_REF(cleanup))
- START_PROCESSING(SSeffects, src)
+ START_PROCESSING(SSoldeffects, src)
/obj/effect/xenomorph/acid/Destroy()
acid_t = null
- STOP_PROCESSING(SSeffects, src)
+ STOP_PROCESSING(SSoldeffects, src)
. = ..()
/obj/effect/xenomorph/acid/proc/cleanup()
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index ac5136b07a4a..5f58a3b1d292 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -144,6 +144,12 @@
to_chat(usr, "[icon2html(src, usr)] [name]: The current assignment on the card is [assignment]")
to_chat(usr, "The blood type on the card is [blood_type].")
+/obj/item/card/id/proc/check_biometrics(mob/living/carbon/human/target)
+ if(registered_ref && (registered_ref != WEAKREF(target)))
+ return FALSE
+ if(target.real_name != registered_name)
+ return FALSE
+ return TRUE
/obj/item/card/id/data
name = "identification holo-badge"
diff --git a/code/game/objects/items/devices/portable_vendor.dm b/code/game/objects/items/devices/portable_vendor.dm
index 1a4b5143f00f..465ba0666828 100644
--- a/code/game/objects/items/devices/portable_vendor.dm
+++ b/code/game/objects/items/devices/portable_vendor.dm
@@ -46,7 +46,7 @@
if(!ishuman(user))
return
- var/mob/living/carbon/human/H = user
+ var/mob/living/carbon/human/human_user = user
src.add_fingerprint(usr)
@@ -58,17 +58,17 @@
to_chat(user, SPAN_WARNING("Access denied."))
return
- var/obj/item/card/id/I = H.wear_id
- if(!istype(I)) //not wearing an ID
- to_chat(H, SPAN_WARNING("Access denied. No ID card detected"))
+ var/obj/item/card/id/idcard = human_user.wear_id
+ if(!istype(idcard)) //not wearing an ID
+ to_chat(human_user, SPAN_WARNING("Access denied. No ID card detected"))
return
- if(I.registered_name != H.real_name)
- to_chat(H, SPAN_WARNING("Wrong ID card owner detected."))
+ if(!idcard.check_biometrics(human_user))
+ to_chat(human_user, SPAN_WARNING("Wrong ID card owner detected."))
return
- if(req_role && I.rank != req_role)
- to_chat(H, SPAN_WARNING("This device isn't for you."))
+ if(req_role && idcard.rank != req_role)
+ to_chat(human_user, SPAN_WARNING("This device isn't for you."))
return
diff --git a/code/game/objects/items/pamphlets.dm b/code/game/objects/items/pamphlets.dm
index 682215be67bb..763d78bd6ea6 100644
--- a/code/game/objects/items/pamphlets.dm
+++ b/code/game/objects/items/pamphlets.dm
@@ -84,7 +84,7 @@
if(!istype(ID)) //not wearing an ID
to_chat(user, SPAN_WARNING("You should wear your ID before doing this."))
return FALSE
- if(ID.registered_ref != WEAKREF(user))
+ if(!ID.check_biometrics(user))
to_chat(user, SPAN_WARNING("You should wear your ID before doing this."))
return FALSE
diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm
index 9afa0dfd1851..d12f09c2042e 100644
--- a/code/game/objects/items/storage/fancy.dm
+++ b/code/game/objects/items/storage/fancy.dm
@@ -302,7 +302,7 @@
if(istype(W) && !W.heat_source && !W.burnt)
if(prob(burn_chance))
to_chat(user, SPAN_WARNING("\The [W] lights, but you burn your hand in the process! Ouch!"))
- user.apply_damage(3, BRUTE, pick("r_hand", "l_hand"))
+ user.apply_damage(3, BURN, pick("r_hand", "l_hand"))
if((user.pain.feels_pain) && prob(25))
user.emote("scream")
W.light_match()
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 2514e2e5f10c..06337995479f 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -650,19 +650,19 @@
if(!idlock)
return TRUE
- var/mob/living/carbon/human/H = user
+ var/mob/living/carbon/human/human_user = user
- if(!allowed(user))
+ if(!allowed(human_user))
to_chat(user, SPAN_NOTICE("It must have some kind of ID lock..."))
return FALSE
- var/obj/item/card/id/I = H.wear_id
- if(!istype(I)) //not wearing an ID
- to_chat(H, SPAN_NOTICE("It must have some kind of ID lock..."))
+ var/obj/item/card/id/idcard = human_user.wear_id
+ if(!istype(idcard)) //not wearing an ID
+ to_chat(human_user, SPAN_NOTICE("It must have some kind of ID lock..."))
return FALSE
- if(I.registered_name != H.real_name)
- to_chat(H, SPAN_WARNING("Wrong ID card owner detected."))
+ if(!idcard.check_biometrics(human_user))
+ to_chat(human_user, SPAN_WARNING("Wrong ID card owner detected."))
return FALSE
return TRUE
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 9d730c71970b..cc9f1fe53fea 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -236,6 +236,7 @@
/obj/proc/unbuckle()
SIGNAL_HANDLER
if(buckled_mob && buckled_mob.buckled == src)
+ buckled_mob.clear_alert(ALERT_BUCKLED)
buckled_mob.set_buckled(null)
buckled_mob.anchored = initial(buckled_mob.anchored)
@@ -302,6 +303,7 @@
/obj/proc/do_buckle(mob/living/target, mob/user)
send_buckling_message(target, user)
if (src && src.loc)
+ target.throw_alert(ALERT_BUCKLED, /atom/movable/screen/alert/buckled)
target.set_buckled(src)
target.forceMove(src.loc)
target.setDir(dir)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 736427606683..2ed19485acc9 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -274,7 +274,9 @@
var/mob/living/M = G.grabbed_thing
if(user.a_intent == INTENT_HARM)
if(user.grab_level > GRAB_AGGRESSIVE)
- if (prob(15)) M.apply_effect(5, WEAKEN)
+ if (prob(15))
+ M.KnockDown(5)
+ M.Stun(5)
M.apply_damage(8, def_zone = "head")
user.visible_message(SPAN_DANGER("[user] slams [M]'s face against [src]!"),
SPAN_DANGER("You slam [M]'s face against [src]!"))
@@ -284,7 +286,8 @@
return
else if(user.grab_level >= GRAB_AGGRESSIVE)
M.forceMove(loc)
- M.apply_effect(5, WEAKEN)
+ M.KnockDown(5)
+ M.Stun(5)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7)
user.visible_message(SPAN_DANGER("[user] throws [M] on [src], stunning them!"),
SPAN_DANGER("You throw [M] on [src], stunning them!"))
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index b689f7b33df3..069d932d991b 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -17,29 +17,25 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new())
/area/supply
ceiling = CEILING_METAL
-/area/supply/station //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS.
+/area/supply/station
name = "Supply Shuttle"
icon_state = "shuttle3"
- base_lighting_alpha = 255
requires_power = 0
ambience_exterior = AMBIENCE_ALMAYER
-/area/supply/dock //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS.
+/area/supply/dock
name = "Supply Shuttle"
icon_state = "shuttle3"
- base_lighting_alpha = 255
requires_power = 0
-/area/supply/station_vehicle //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS.
+/area/supply/station_vehicle
name = "Vehicle ASRS"
icon_state = "shuttle3"
- base_lighting_alpha = 255
requires_power = 0
-/area/supply/dock_vehicle //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS.
+/area/supply/dock_vehicle
name = "Vehicle ASRS"
icon_state = "shuttle3"
- base_lighting_alpha = 255
requires_power = 0
//SUPPLY PACKS MOVED TO /code/defines/obj/supplypacks.dm
diff --git a/code/modules/character_traits/hair_dye.dm b/code/modules/character_traits/hair_dye.dm
index 1da4ea364064..3c6ce01f8acc 100644
--- a/code/modules/character_traits/hair_dye.dm
+++ b/code/modules/character_traits/hair_dye.dm
@@ -6,7 +6,6 @@
trait_name = "Hair Dye"
trait_desc = "Enables hair gradients in the character creation screen."
applyable = TRUE
- cost = 1
trait_group = /datum/character_trait_group/hair_dye
refresh_choices = TRUE
refresh_mannequin = TRUE
diff --git a/code/modules/cm_aliens/Ovipositor.dm b/code/modules/cm_aliens/Ovipositor.dm
index 07d3466a279d..b8983f37cc7a 100644
--- a/code/modules/cm_aliens/Ovipositor.dm
+++ b/code/modules/cm_aliens/Ovipositor.dm
@@ -14,11 +14,11 @@
. = ..()
begin_decay_time = world.timeofday + QUEEN_OVIPOSITOR_DECAY_TIME
- START_PROCESSING(SSeffects, src) // Process every second
+ START_PROCESSING(SSoldeffects, src) // Process every second
/obj/ovipositor/Destroy()
if(!decayed && !destroyed)
- STOP_PROCESSING(SSeffects, src)
+ STOP_PROCESSING(SSoldeffects, src)
return ..()
@@ -32,7 +32,7 @@
/obj/ovipositor/proc/do_decay()
decayed = TRUE
- STOP_PROCESSING(SSeffects, src)
+ STOP_PROCESSING(SSoldeffects, src)
icon_state = "ovipositor_molted"
flick("ovipositor_decay", src)
@@ -46,7 +46,7 @@
/obj/ovipositor/proc/explode()
destroyed = TRUE
- STOP_PROCESSING(SSeffects, src)
+ STOP_PROCESSING(SSoldeffects, src)
icon_state = "ovipositor_gibbed"
flick("ovipositor_explosion", src)
diff --git a/code/modules/cm_aliens/structures/egg.dm b/code/modules/cm_aliens/structures/egg.dm
index edb86c204558..5b0654d05b55 100644
--- a/code/modules/cm_aliens/structures/egg.dm
+++ b/code/modules/cm_aliens/structures/egg.dm
@@ -49,7 +49,7 @@
if(status == EGG_BURST || status == EGG_DESTROYED)
M.animation_attack_on(src)
M.visible_message(SPAN_XENONOTICE("[M] clears the hatched egg."), \
- SPAN_XENONOTICE("You clear the hatched egg."))
+ SPAN_XENONOTICE("We clear the hatched egg."))
playsound(src.loc, "alien_resin_break", 25)
qdel(src)
return XENO_NONCOMBAT_ACTION
@@ -57,7 +57,7 @@
if(M.hivenumber != hivenumber)
M.animation_attack_on(src)
M.visible_message(SPAN_XENOWARNING("[M] crushes \the [src]"),
- SPAN_XENOWARNING("You crush \the [src]"))
+ SPAN_XENOWARNING("We crush \the [src]"))
Burst(TRUE)
return XENO_ATTACK_ACTION
@@ -70,9 +70,9 @@
return XENO_NO_DELAY_ACTION
if(EGG_GROWN)
if(islarva(M))
- to_chat(M, SPAN_XENOWARNING("You nudge the egg, but nothing happens."))
+ to_chat(M, SPAN_XENOWARNING("We nudge the egg, but nothing happens."))
return
- to_chat(M, SPAN_XENONOTICE("You retrieve the child."))
+ to_chat(M, SPAN_XENONOTICE("We retrieve the child."))
Burst(FALSE)
return XENO_NONCOMBAT_ACTION
@@ -186,7 +186,7 @@
if(EGG_BURST)
if(user)
visible_message(SPAN_XENOWARNING("[user] slides [F] back into [src]."), \
- SPAN_XENONOTICE("You place the child back in to [src]."))
+ SPAN_XENONOTICE("We place the child back in to [src]."))
user.temp_drop_inv_item(F)
else
visible_message(SPAN_XENOWARNING("[F] crawls back into [src]!")) //Not sure how, but let's roll with it for now.
diff --git a/code/modules/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm
index 51a6fcc8cab0..2350ecfa4462 100644
--- a/code/modules/cm_aliens/structures/special/pylon_core.dm
+++ b/code/modules/cm_aliens/structures/special/pylon_core.dm
@@ -190,7 +190,7 @@
if(!linked_hive.hive_location || !linked_hive.living_xeno_queen)
return
- var/list/hive_xenos = linked_hive.totalXenos
+ var/list/hive_xenos = linked_hive.totalXenos.Copy()
for(var/mob/living/carbon/xenomorph/xeno in hive_xenos)
if(!xeno.counts_for_slots)
@@ -417,7 +417,6 @@
linked_hive.hardcore = TRUE
linked_hive.allow_queen_evolve = FALSE
linked_hive.hive_structures_limit[XENO_STRUCTURE_CORE] = 0
- linked_hive.hive_structures_limit[XENO_STRUCTURE_POOL] = 0
xeno_announcement("\The [linked_hive.name] has lost their hive core!", "everything", HIGHER_FORCE_ANNOUNCE)
if(linked_hive.hijack_burrowed_surge)
diff --git a/code/modules/cm_aliens/structures/special_structure.dm b/code/modules/cm_aliens/structures/special_structure.dm
index 8378d93e1ac9..83ca09547185 100644
--- a/code/modules/cm_aliens/structures/special_structure.dm
+++ b/code/modules/cm_aliens/structures/special_structure.dm
@@ -1,26 +1,6 @@
/*
* Special Structures
*/
-
-/proc/get_xeno_structure_desc(name)
- var/message
- switch(name)
- if(XENO_STRUCTURE_CORE)
- message = "[XENO_STRUCTURE_CORE] - Heart of the hive, grows hive weeds (which are necessary for other structures), stores resources and protects the hive from skyfire."
- if(XENO_STRUCTURE_PYLON)
- message = "[XENO_STRUCTURE_PYLON] - Remote section of the hive, grows hive weeds (which are necessary for other structures), stores resources and protects sisters from skyfire."
- if(XENO_STRUCTURE_POOL)
- message = "[XENO_STRUCTURE_POOL] - Respawns xenomorphs that fall in battle."
- if(XENO_STRUCTURE_EGGMORPH)
- message = "[XENO_STRUCTURE_EGGMORPH] - Processes hatched hosts into new eggs."
- if(XENO_STRUCTURE_EVOPOD)
- message = "[XENO_STRUCTURE_EVOPOD] - Grants an additional 0.2 evolution per tick for all sisters on weeds."
- if(XENO_STRUCTURE_RECOVERY)
- message = "[XENO_STRUCTURE_RECOVERY] - Hastily recovers the strength of sisters resting around it."
- if(XENO_STRUCTURE_NEST)
- message = "[XENO_STRUCTURE_NEST] - Strong enough to secure a headhunter for indeterminate durations."
- return message
-
/obj/effect/alien/resin/special
name = "Special Resin Structure"
icon = 'icons/mob/xenos/structures64x64.dmi'
diff --git a/code/modules/cm_aliens/structures/tunnel.dm b/code/modules/cm_aliens/structures/tunnel.dm
index 8c467be695b4..1f0f98c14361 100644
--- a/code/modules/cm_aliens/structures/tunnel.dm
+++ b/code/modules/cm_aliens/structures/tunnel.dm
@@ -147,7 +147,7 @@
//No teleporting!
return FALSE
- to_chat(X, SPAN_XENONOTICE("You begin moving to your destination."))
+ to_chat(X, SPAN_XENONOTICE("We begin moving to our destination."))
var/tunnel_time = TUNNEL_MOVEMENT_XENO_DELAY
@@ -165,11 +165,11 @@
to_chat(X, SPAN_WARNING("The tunnel is too crowded, wait for others to exit!"))
return FALSE
if(!T.loc)
- to_chat(X, SPAN_WARNING("The tunnel has collapsed before you reached its exit!"))
+ to_chat(X, SPAN_WARNING("The tunnel has collapsed before we reached its exit!"))
return FALSE
X.forceMove(T)
- to_chat(X, SPAN_XENONOTICE("You have reached your destination."))
+ to_chat(X, SPAN_XENONOTICE("We have reached our destination."))
return TRUE
/obj/structure/tunnel/proc/exit_tunnel(mob/living/carbon/xenomorph/X)
@@ -177,7 +177,7 @@
if(X in contents)
X.forceMove(loc)
visible_message(SPAN_XENONOTICE("\The [X] pops out of the tunnel!"), \
- SPAN_XENONOTICE("You pop out through the other side!"))
+ SPAN_XENONOTICE("We pop out through the other side!"))
return TRUE
//Used for controling tunnel exiting and returning
@@ -200,15 +200,15 @@
if(!isfriendly(M))
if(M.mob_size < MOB_SIZE_BIG)
- to_chat(M, SPAN_XENOWARNING("You aren't large enough to collapse this tunnel!"))
+ to_chat(M, SPAN_XENOWARNING("We aren't large enough to collapse this tunnel!"))
return XENO_NO_DELAY_ACTION
M.visible_message(SPAN_XENODANGER("[M] begins to fill [src] with dirt."),\
- SPAN_XENONOTICE("You begin to fill [src] with dirt using your massive claws."), max_distance = 3)
+ SPAN_XENONOTICE("We begin to fill [src] with dirt using our massive claws."), max_distance = 3)
xeno_attack_delay(M)
if(!do_after(M, 10 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE, src, INTERRUPT_ALL_OUT_OF_RANGE, max_dist = 1))
- to_chat(M, SPAN_XENOWARNING("You decide not to cave the tunnel in."))
+ to_chat(M, SPAN_XENOWARNING("We decide not to cave the tunnel in."))
return XENO_NO_DELAY_ACTION
src.visible_message(SPAN_XENODANGER("[src] caves in!"), max_distance = 3)
@@ -217,7 +217,7 @@
return XENO_NO_DELAY_ACTION
if(M.anchored)
- to_chat(M, SPAN_XENOWARNING("You can't climb through a tunnel while immobile."))
+ to_chat(M, SPAN_XENOWARNING("We can't climb through a tunnel while immobile."))
return XENO_NO_DELAY_ACTION
if(!hive.tunnels.len)
@@ -237,14 +237,14 @@
if(M.mob_size >= MOB_SIZE_BIG)
M.visible_message(SPAN_XENONOTICE("[M] begins heaving their huge bulk down into \the [src]."), \
- SPAN_XENONOTICE("You begin heaving your monstrous bulk into \the [src]."))
+ SPAN_XENONOTICE("We begin heaving our monstrous bulk into \the [src]."))
else
M.visible_message(SPAN_XENONOTICE("\The [M] begins crawling down into \the [src]."), \
- SPAN_XENONOTICE("You begin crawling down into \the [src]."))
+ SPAN_XENONOTICE("We begin crawling down into \the [src]."))
xeno_attack_delay(M)
if(!do_after(M, tunnel_time, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC))
- to_chat(M, SPAN_WARNING("Your crawling was interrupted!"))
+ to_chat(M, SPAN_WARNING("Our crawling was interrupted!"))
return XENO_NO_DELAY_ACTION
if(hive.tunnels.len) //Make sure other tunnels exist
@@ -252,7 +252,7 @@
to_chat(M, SPAN_HIGHDANGER("Alt + Click the tunnel to exit, Ctrl + Click to choose a destination."))
pick_tunnel(M)
else
- to_chat(M, SPAN_WARNING("\The [src] ended unexpectedly, so you return back up."))
+ to_chat(M, SPAN_WARNING("\The [src] ended unexpectedly, so we return back up."))
return XENO_NO_DELAY_ACTION
/obj/structure/tunnel/maint_tunnel
diff --git a/code/modules/cm_marines/NonLethalRestraints.dm b/code/modules/cm_marines/NonLethalRestraints.dm
index 3b2439a22a82..e1eb7ec60a77 100644
--- a/code/modules/cm_marines/NonLethalRestraints.dm
+++ b/code/modules/cm_marines/NonLethalRestraints.dm
@@ -31,7 +31,7 @@
to_chat(user, SPAN_WARNING("\The [src] is out of charge."))
add_fingerprint(user)
-/obj/item/weapon/stunprod/attack(mob/M, mob/user)
+/obj/item/weapon/stunprod/attack(mob/living/M, mob/user)
if(isrobot(M))
..()
return
@@ -43,7 +43,8 @@
return
if(status)
- M.apply_effect(6, WEAKEN)
+ M.KnockDown(6)
+ M.Stun(6)
charges -= 2
M.visible_message(SPAN_DANGER("[M] has been prodded with [src] by [user]!"))
diff --git a/code/modules/maptext_alerts/screen_alerts.dm b/code/modules/maptext_alerts/screen_alerts.dm
index 0b923f7dc753..b096d3b3718f 100644
--- a/code/modules/maptext_alerts/screen_alerts.dm
+++ b/code/modules/maptext_alerts/screen_alerts.dm
@@ -214,6 +214,9 @@
/// Alert owner
var/mob/owner
+ /// Boolean. If TRUE, the Click() proc will attempt to Click() on the master first if there is a master.
+ var/click_master = TRUE
+
/atom/movable/screen/alert/MouseEntered(location,control,params)
. = ..()
if(!QDELETED(src))
@@ -251,3 +254,65 @@
if(NOTIFY_XENO_TACMAP)
GLOB.xeno_tacmap_status.tgui_interact(ghost_user)
+/atom/movable/screen/alert/buckled
+ name = "Buckled"
+ desc = "You've been buckled to something. Click the alert to unbuckle unless you're handcuffed."
+ icon_state = ALERT_BUCKLED
+
+/atom/movable/screen/alert/restrained/handcuffed
+ name = "Handcuffed"
+ desc = "You're handcuffed and can't act. If anyone drags you, you won't be able to move. Click the alert to free yourself."
+ click_master = FALSE
+
+/atom/movable/screen/alert/restrained/legcuffed
+ name = "Legcuffed"
+ desc = "You're legcuffed, which slows you down considerably. Click the alert to free yourself."
+ click_master = FALSE
+
+/atom/movable/screen/alert/restrained/clicked()
+ . = ..()
+ if(!.)
+ return
+
+ var/mob/living/living_owner = owner
+
+ if(!living_owner.can_resist())
+ return
+
+// living_owner.changeNext_move(CLICK_CD_RESIST) // handled in resist proc
+ if((living_owner.mobility_flags & MOBILITY_MOVE) && (living_owner.last_special <= world.time))
+ return living_owner.resist_restraints()
+
+/atom/movable/screen/alert/buckled/clicked()
+ . = ..()
+ if(!.)
+ return
+
+ var/mob/living/living_owner = owner
+
+ if(!living_owner.can_resist())
+ return
+// living_owner.changeNext_move(CLICK_CD_RESIST) // handled in resist proc
+ if(living_owner.last_special <= world.time)
+ return living_owner.resist_buckle()
+
+/atom/movable/screen/alert/clicked(location, control, params)
+ if(!usr || !usr.client)
+ return FALSE
+ if(usr != owner)
+ return FALSE
+ var/list/modifiers = params2list(params)
+ if(LAZYACCESS(modifiers, SHIFT_CLICK)) // screen objects don't do the normal Click() stuff so we'll cheat
+ to_chat(usr, SPAN_BOLDNOTICE("[name] - [desc]"))
+ return FALSE
+ if(master && click_master)
+ return usr.client.Click(master, location, control, params)
+
+ return TRUE
+
+/atom/movable/screen/alert/Destroy()
+ . = ..()
+ severity = 0
+ master = null
+ owner = null
+ screen_loc = ""
diff --git a/code/modules/mob/dead/observer/actions.dm b/code/modules/mob/dead/observer/actions.dm
index ff897db4a3f6..7daae802dc7a 100644
--- a/code/modules/mob/dead/observer/actions.dm
+++ b/code/modules/mob/dead/observer/actions.dm
@@ -21,6 +21,9 @@
INVOKE_ASYNC(src, PROC_REF(remove_from), user)
+/datum/action/ghost/xeno
+ action_icon_state = "ghost_xeno"
+
/datum/action/join_ert
name = "Join ERT"
action_icon_state = "join_ert"
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 6170aec3031c..b523cef08eec 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1098,9 +1098,9 @@
for(var/datum/effects/bleeding/internal/internal_bleed in effects_list)
msg += "They have bloating and discoloration on their [internal_bleed.limb.display_name]\n"
- if(knocked_out && stat != DEAD)
+ if(stat == UNCONSCIOUS)
msg += "They seem to be unconscious\n"
- if(stat == DEAD)
+ else if(stat == DEAD)
if(src.check_tod() && is_revivable())
msg += "They're not breathing"
else
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index dfbc2c971a8c..8f032288065b 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -161,7 +161,9 @@
disarm_chance += 5 * defender_skill_level
if(disarm_chance <= 25)
- apply_effect(2 + max((attacker_skill_level - defender_skill_level), 0), WEAKEN)
+ var/strength = 2 + max((attacker_skill_level - defender_skill_level), 0)
+ KnockDown(strength)
+ Stun(strength)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7)
var/shove_text = attacker_skill_level > 1 ? "tackled" : pick("pushed", "shoved")
visible_message(SPAN_DANGER("[attacking_mob] has [shove_text] [src]!"), null, null, 5)
@@ -205,15 +207,14 @@
if (w_uniform)
w_uniform.add_fingerprint(M)
-
- if(body_position == LYING_DOWN || sleeping)
+ if(HAS_TRAIT(src, TRAIT_FLOORED) || HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || body_position == LYING_DOWN || sleeping)
if(client)
sleeping = max(0,src.sleeping-5)
if(!sleeping)
set_resting(FALSE)
M.visible_message(SPAN_NOTICE("[M] shakes [src] trying to wake [t_him] up!"), \
SPAN_NOTICE("You shake [src] trying to wake [t_him] up!"), null, 4)
- else if(stunned)
+ else if(HAS_TRAIT(src, TRAIT_INCAPACITATED))
M.visible_message(SPAN_NOTICE("[M] shakes [src], trying to shake [t_him] out of his stupor!"), \
SPAN_NOTICE("You shake [src], trying to shake [t_him] out of his stupor!"), null, 4)
else
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index 90a4d7bca4ab..e09e9e2ebb7b 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -514,11 +514,3 @@ This function restores all limbs.
damage_to_deal *= 0.25 // Massively reduced effectiveness
stamina.apply_damage(damage_to_deal)
-
-/mob/living/carbon/human/knocked_out_start()
- ..()
- sound_environment_override = SOUND_ENVIRONMENT_PSYCHOTIC
-
-/mob/living/carbon/human/knocked_out_callback()
- . = ..()
- sound_environment_override = SOUND_ENVIRONMENT_NONE
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index be1c7833c5c1..1a43138421e4 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -88,3 +88,10 @@
if(!client && !mind && species)
species.handle_npc(src)
+
+/mob/living/carbon/human/set_stat(new_stat)
+ . = ..()
+ // Temporarily force triggering HUD updates so they apply immediately rather than on Life tick.
+ // Remove this once effects have been ported to trait signals (blinded, dazed, etc)
+ if(stat != .)
+ handle_regular_hud_updates()
diff --git a/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm b/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm
index 41554f056744..e9bb307d7335 100644
--- a/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm
+++ b/code/modules/mob/living/carbon/human/life/handle_regular_status_updates.dm
@@ -53,7 +53,7 @@
if(!already_in_crit)
new /datum/effects/crit/human(src)
- if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT))
+ if(IsKnockOut())
blinded = TRUE
if(regular_update && halloss > 0)
apply_damage(-3, HALLOSS)
diff --git a/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm b/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm
index 16d9955395b0..43c757fabb3e 100644
--- a/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm
+++ b/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm
@@ -4,9 +4,9 @@
//Handle side effects from stasis
switch(in_stasis)
if(STASIS_IN_BAG)
- // I hate whoever wrote this and statuses with a passion
- knocked_down = knocked_down? --knocked_down : knocked_down + 10 //knocked_down set.
- if(knocked_down <= 0)
- knocked_down_callback()
+ // At least 6 seconds, but reduce by 2s every time - IN ADDITION to normal recovery
+ // Don't ask me why and feel free to change it
+ KnockDown(3)
+ AdjustKnockDown(-1)
if(STASIS_IN_CRYO_CELL)
if(sleeping < 10) sleeping += 10 //Puts the mob to sleep indefinitely.
diff --git a/code/modules/mob/living/carbon/human/life/life_helpers.dm b/code/modules/mob/living/carbon/human/life/life_helpers.dm
index 25f020a9f8b6..bf254b9da1ed 100644
--- a/code/modules/mob/living/carbon/human/life/life_helpers.dm
+++ b/code/modules/mob/living/carbon/human/life/life_helpers.dm
@@ -197,12 +197,6 @@
speech_problem_flag = TRUE
return slurring
-/mob/living/carbon/human/handle_stunned()
- if(stunned)
- adjust_effect(-species.stun_reduction, STUN, EFFECT_FLAG_LIFE)
- speech_problem_flag = TRUE
- return stunned
-
/mob/living/carbon/human/handle_dazed()
if(dazed)
var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.1 : 0
@@ -213,26 +207,6 @@
speech_problem_flag = TRUE
return dazed
-/mob/living/carbon/human/handle_knocked_down()
- if(knocked_down)
- var/species_resistance = species.knock_down_reduction
- var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.1 : 0
-
- var/final_reduction = species_resistance + skill_resistance
- adjust_effect(-final_reduction, WEAKEN, EFFECT_FLAG_LIFE)
- knocked_down_callback_check()
- return knocked_down
-
-/mob/living/carbon/human/handle_knocked_out()
- if(knocked_out)
- var/species_resistance = species.knock_out_reduction
- var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.1 : 0
-
- var/final_reduction = species_resistance + skill_resistance
- adjust_effect(-final_reduction, PARALYZE, EFFECT_FLAG_LIFE)
- knocked_out_callback_check()
- return knocked_out
-
/mob/living/carbon/human/handle_stuttering()
if(..())
speech_problem_flag = TRUE
@@ -240,40 +214,23 @@
#define HUMAN_TIMER_TO_EFFECT_CONVERSION (0.05) //(1/20) //once per 2 seconds, with effect equal to endurance, which is used later
-// This is here because sometimes our stun comes too early and tick is about to start, so we need to compensate
-// this is the best place to do it, tho name might be a bit misleading I guess
-/mob/living/carbon/human/stun_clock_adjustment()
- var/species_resistance = species.knock_down_reduction
- var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.1 : 0
-
- var/final_reduction = species_resistance + skill_resistance
- var/shift_left = (SShuman.next_fire - world.time) * HUMAN_TIMER_TO_EFFECT_CONVERSION * final_reduction
- if(stunned > shift_left)
- stunned += SShuman.wait * HUMAN_TIMER_TO_EFFECT_CONVERSION * final_reduction - shift_left
-
-/mob/living/carbon/human/knockdown_clock_adjustment()
- if(!species)
- return FALSE
-
- var/species_resistance = species.knock_down_reduction
- var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.1 : 0
-
- var/final_reduction = species_resistance + skill_resistance
- var/shift_left = (SShuman.next_fire - world.time) * HUMAN_TIMER_TO_EFFECT_CONVERSION * final_reduction
- if(knocked_down > shift_left)
- knocked_down += SShuman.wait * HUMAN_TIMER_TO_EFFECT_CONVERSION * final_reduction - shift_left
-
-/mob/living/carbon/human/knockout_clock_adjustment()
- if(!species)
- return FALSE
-
- var/species_resistance = species.knock_out_reduction
- var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.1 : 0
-
- var/final_reduction = species_resistance + skill_resistance
- var/shift_left = (SShuman.next_fire - world.time) * HUMAN_TIMER_TO_EFFECT_CONVERSION * final_reduction
- if(knocked_out > shift_left)
- knocked_out += SShuman.wait * HUMAN_TIMER_TO_EFFECT_CONVERSION * final_reduction - shift_left
+/mob/living/carbon/human/GetStunDuration(amount)
+ . = ..()
+ var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.08 : 0
+ var/final_reduction = (1 - skill_resistance) / species.stun_reduction
+ return . * final_reduction
+
+/mob/living/carbon/human/GetKnockDownDuration(amount)
+ . = ..()
+ var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.08 : 0
+ var/final_reduction = (1 - skill_resistance) / species.knock_down_reduction
+ return . * final_reduction
+
+/mob/living/carbon/human/GetKnockOutDuration(amount)
+ . = ..()
+ var/skill_resistance = skills ? (skills.get_skill_level(SKILL_ENDURANCE)-1)*0.08 : 0
+ var/final_reduction = (1 - skill_resistance) / species.knock_out_reduction
+ return . * final_reduction
/mob/living/carbon/human/proc/handle_revive()
SEND_SIGNAL(src, COMSIG_HUMAN_REVIVED)
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 397a478a2779..4392c3359596 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -92,9 +92,12 @@
"eyes" = /datum/internal_organ/eyes
)
- var/knock_down_reduction = 1 //how much the knocked_down effect is reduced per Life call.
- var/stun_reduction = 1 //how much the stunned effect is reduced per Life call.
- var/knock_out_reduction = 1 //same thing
+ /// Factor of reduction of KnockDown duration.
+ var/knock_down_reduction = 1
+ /// Factor of reduction of Stun duration.
+ var/stun_reduction = 1
+ /// Factor of reduction of KnockOut duration.
+ var/knock_out_reduction = 1
/// If different from 1, a signal is registered on post_spawn().
var/weed_slowdown_mult = 1
diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm
index 97bf25e08932..e5673817b277 100644
--- a/code/modules/mob/living/carbon/inventory.dm
+++ b/code/modules/mob/living/carbon/inventory.dm
@@ -4,11 +4,18 @@
if(handcuffed)
drop_held_items()
stop_pulling()
+ throw_alert(ALERT_HANDCUFFED, /atom/movable/screen/alert/restrained/handcuffed, new_master = handcuffed)
+ else
+ clear_alert(ALERT_HANDCUFFED)
update_inv_handcuffed()
+
/mob/living/carbon/proc/legcuff_update()
if(legcuffed)
set_movement_intent(MOVE_INTENT_WALK)
+ throw_alert(ALERT_LEGCUFFED, /atom/movable/screen/alert/restrained/legcuffed, new_master = handcuffed)
+ else
+ clear_alert(ALERT_LEGCUFFED)
update_inv_legcuffed()
diff --git a/code/modules/mob/living/carbon/xenomorph/Powers.dm b/code/modules/mob/living/carbon/xenomorph/Powers.dm
index 401442e9c83c..87a6db3c0816 100644
--- a/code/modules/mob/living/carbon/xenomorph/Powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/Powers.dm
@@ -164,8 +164,10 @@
new_structure.set_template(structure_template)
hive.add_construction(new_structure)
+ var/max_constructions = hive.hive_structures_limit[structure_template.name]
+ var/remaining_constructions = max_constructions - hive.get_structure_count(structure_template.name)
visible_message(SPAN_XENONOTICE("A thick substance emerges from the ground and shapes into \a [new_structure]."), \
- SPAN_XENONOTICE("We designate a new [structure_template] construction."), null, 5)
+ SPAN_XENONOTICE("We designate a new [structure_template] construction. ([remaining_constructions]/[max_constructions] remaining)"), null, 5)
playsound(new_structure, "alien_resin_build", 25)
if(hive.living_xeno_queen)
diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm
index b4287309bb3c..46b6c857d481 100644
--- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm
+++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm
@@ -284,7 +284,8 @@
if(H.check_shields(15, "the pounce")) //Human shield block.
visible_message(SPAN_DANGER("[src] slams into [H]!"),
SPAN_XENODANGER("We slam into [H]!"), null, 5)
- apply_effect(1, WEAKEN)
+ KnockDown(1)
+ Stun(1)
throwing = FALSE //Reset throwing manually.
playsound(H, "bonk", 75, FALSE) //bonk
return
@@ -299,13 +300,15 @@
else if(prob(75)) //Body slam the fuck out of xenos jumping at your front.
visible_message(SPAN_DANGER("[H] body slams [src]!"),
SPAN_XENODANGER("[H] body slams us!"), null, 5)
- apply_effect(3, WEAKEN)
+ KnockDown(3)
+ Stun(3)
throwing = FALSE
return
if(iscolonysynthetic(H) && prob(60))
visible_message(SPAN_DANGER("[H] withstands being pounced and slams down [src]!"),
SPAN_XENODANGER("[H] throws us down after withstanding the pounce!"), null, 5)
- apply_effect(1.5, WEAKEN)
+ KnockDown(1.5)
+ Stun(1.5)
throwing = FALSE
return
@@ -313,7 +316,8 @@
visible_message(SPAN_DANGER("[src] [pounceAction.ability_name] onto [M]!"), SPAN_XENODANGER("We [pounceAction.ability_name] onto [M]!"), null, 5)
if (pounceAction.knockdown)
- M.apply_effect(pounceAction.knockdown_duration, WEAKEN)
+ M.KnockDown(pounceAction.knockdown_duration)
+ M.Stun(pounceAction.knockdown_duration) // To replicate legacy behavior. Otherwise M39 Armbrace users for example can still shoot
step_to(src, M)
if (pounceAction.freeze_self)
diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
index f77d7d99c1a3..3095e805be6a 100644
--- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
+++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
@@ -252,13 +252,9 @@
var/pounce_distance = 0
// Life reduction variables.
- var/life_stun_reduction = -1.5
- var/life_knockdown_reduction = -1.5
- var/life_knockout_reduction = -1.5
var/life_daze_reduction = -1.5
var/life_slow_reduction = -1.5
-
//////////////////////////////////////////////////////////////////
//
// Misc. State - poorly modularized
@@ -1101,11 +1097,6 @@
forceMove(current_structure.loc)
return TRUE
-/mob/living/carbon/xenomorph/knocked_down_callback()
- . = ..()
- if(!resting) // !resting because we dont wanna prematurely update wounds if they're just trying to rest
- update_wounds()
-
///Generate a new unused nicknumber for the current hive, if hive doesn't exist return 0
/mob/living/carbon/xenomorph/proc/generate_and_set_nicknumber()
if(!hive)
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm
index 6834f7b2e165..80e4130fccb9 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm
@@ -394,10 +394,12 @@
/// remove hide and apply modified attack cooldown
/datum/action/xeno_action/onclick/xenohide/proc/post_attack()
var/mob/living/carbon/xenomorph/xeno = owner
+ UnregisterSignal(xeno, COMSIG_MOB_STATCHANGE)
if(xeno.layer == XENO_HIDING_LAYER)
xeno.layer = initial(xeno.layer)
button.icon_state = "template"
xeno.update_wounds()
+ xeno.update_layer()
apply_cooldown(4) //2 second cooldown after attacking
/datum/action/xeno_action/onclick/xenohide/give_to(mob/living/living_mob)
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm
index 14b2a064e68c..81f500245a41 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm
@@ -500,14 +500,21 @@
xeno.layer = XENO_HIDING_LAYER
to_chat(xeno, SPAN_NOTICE("We are now hiding."))
button.icon_state = "template_active"
+ RegisterSignal(xeno, COMSIG_MOB_STATCHANGE, PROC_REF(unhide_on_stat))
else
xeno.layer = initial(xeno.layer)
to_chat(xeno, SPAN_NOTICE("We have stopped hiding."))
button.icon_state = "template"
+ UnregisterSignal(xeno, COMSIG_MOB_STATCHANGE)
xeno.update_wounds()
apply_cooldown()
return ..()
+/datum/action/xeno_action/onclick/xenohide/proc/unhide_on_stat(mob/living/carbon/xenomorph/source, new_stat, old_stat)
+ SIGNAL_HANDLER
+ if(new_stat >= UNCONSCIOUS && old_stat <= UNCONSCIOUS)
+ post_attack()
+
/datum/action/xeno_action/onclick/place_trap/use_ability(atom/A)
var/mob/living/carbon/xenomorph/X = owner
if(!X.check_state())
@@ -627,13 +634,14 @@
to_chat(X, SPAN_WARNING("The weeds are still recovering from the death of the hive core, wait until the weeds have recovered!"))
return FALSE
if(X.hive.has_structure(XENO_STRUCTURE_CORE) || !X.hive.can_build_structure(XENO_STRUCTURE_CORE))
- choice = tgui_input_list(X, "Choose a structure to build", "Build structure", X.hive.hive_structure_types + "help", theme="hive_status")
+ choice = tgui_input_list(X, "Choose a structure to build", "Build structure", X.hive.hive_structure_types + "help", theme = "hive_status")
if(!choice)
return
if(choice == "help")
- var/message = "
Placing a construction node creates a template for special structures that can benefit the hive, which require the insertion of [MATERIAL_CRYSTAL] to construct the following:
"
+ var/message = "Placing a construction node creates a template for special structures that can benefit the hive, which require the insertion of [MATERIAL_CRYSTAL] to construct the following:
"
for(var/structure_name in X.hive.hive_structure_types)
- message += "[get_xeno_structure_desc(structure_name)]
"
+ var/datum/construction_template/xenomorph/structure_type = X.hive.hive_structure_types[structure_name]
+ message += "[capitalize_first_letters(structure_name)] - [initial(structure_type.description)]
"
to_chat(X, SPAN_NOTICE(message))
return TRUE
if(!X.check_state(TRUE) || !X.check_plasma(400))
@@ -641,32 +649,28 @@
var/structure_type = X.hive.hive_structure_types[choice]
var/datum/construction_template/xenomorph/structure_template = new structure_type()
- if(!spacecheck(X,T,structure_template))
+ if(!spacecheck(X, T, structure_template))
return FALSE
if(!do_after(X, XENO_STRUCTURE_BUILD_TIME, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD))
return FALSE
- if(!spacecheck(X,T,structure_template)) //doublechecking
+ if(!spacecheck(X, T, structure_template)) //doublechecking
return FALSE
if((choice == XENO_STRUCTURE_CORE) && isqueen(X) && X.hive.has_structure(XENO_STRUCTURE_CORE))
if(X.hive.hive_location.hardcore || world.time > XENOMORPH_PRE_SETUP_CUTOFF)
to_chat(X, SPAN_WARNING("We can't rebuild this structure!"))
- return
+ return FALSE
if(alert(X, "Are we sure that we want to move the hive and destroy the old hive core?", , "Yes", "No") != "Yes")
- return
+ return FALSE
qdel(X.hive.hive_location)
else if(!X.hive.can_build_structure(choice))
to_chat(X, SPAN_WARNING("We can't build any more [choice]s for the hive."))
- return FALSE
-
- if(!X.hive.can_build_structure(structure_template.name) && !(choice == XENO_STRUCTURE_CORE))
- to_chat(X, SPAN_WARNING("We cannot build any more [structure_template.name]!"))
qdel(structure_template)
return FALSE
- if (QDELETED(T))
+ if(QDELETED(T))
to_chat(X, SPAN_WARNING("We cannot build here!"))
qdel(structure_template)
return FALSE
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm
index 5127ca6fe4ed..2c16477c1414 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm
@@ -10,7 +10,7 @@
// Configurables
var/fling_distance = 4
- var/stun_power = 0
+ var/stun_power = 0.5
var/weaken_power = 0.5
var/slowdown = 2
diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_powers.dm
index 4bb9e63ebaf2..c25b7e5fc49f 100644
--- a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_powers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_powers.dm
@@ -77,9 +77,9 @@
xeno.visible_message(SPAN_XENOWARNING("[xeno] effortlessly flings [carbon] to the side!"), SPAN_XENOWARNING("We effortlessly fling [carbon] to the side!"))
playsound(carbon,'sound/weapons/alien_claw_block.ogg', 75, 1)
if(stun_power)
- carbon.apply_effect(get_xeno_stun_duration(carbon, stun_power), STUN)
+ carbon.Stun(get_xeno_stun_duration(carbon, stun_power))
if(weaken_power)
- carbon.apply_effect(weaken_power, WEAKEN)
+ carbon.KnockDown(get_xeno_stun_duration(carbon, weaken_power))
if(slowdown)
if(carbon.slowed < slowdown)
carbon.apply_effect(slowdown, SLOW)
diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm
index a038974b608b..d57df232cda4 100644
--- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm
+++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm
@@ -204,12 +204,14 @@
if(M.attempt_tackle(src, tackle_mult, tackle_min_offset, tackle_max_offset))
playsound(loc, 'sound/weapons/alien_knockdown.ogg', 25, 1)
- apply_effect(rand(M.tacklestrength_min, M.tacklestrength_max), WEAKEN)
+ var/strength = rand(M.tacklestrength_min, M.tacklestrength_max)
+ Stun(strength)
+ KnockDown(strength) // Purely for knockdown visuals. All the heavy lifting is done by Stun
M.visible_message(SPAN_DANGER("[M] tackles down [src]!"), \
SPAN_DANGER("We tackle down [src]!"), null, 5, CHAT_TYPE_XENO_COMBAT)
else
playsound(loc, 'sound/weapons/alien_claw_swipe.ogg', 25, 1)
- if (HAS_TRAIT(src, TRAIT_FLOORED))
+ if (body_position == LYING_DOWN)
M.visible_message(SPAN_DANGER("[M] tries to tackle [src], but they are already down!"), \
SPAN_DANGER("We try to tackle [src], but they are already down!"), null, 5, CHAT_TYPE_XENO_COMBAT)
else
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm b/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm
index 64dfd021f894..d2c0b0e40e59 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/Crusher.dm
@@ -81,21 +81,21 @@
//Barricade collision
else if (istype(target, /obj/structure/barricade))
var/obj/structure/barricade/B = target
- visible_message(SPAN_DANGER("[src] rams into [B] and skids to a halt!"), SPAN_XENOWARNING("You ram into [B] and skid to a halt!"))
+ visible_message(SPAN_DANGER("[src] rams into [B] and skids to a halt!"), SPAN_XENOWARNING("We ram into [B] and skid to a halt!"))
B.Collided(src)
. = FALSE
else if (istype(target, /obj/vehicle/multitile))
var/obj/vehicle/multitile/M = target
- visible_message(SPAN_DANGER("[src] rams into [M] and skids to a halt!"), SPAN_XENOWARNING("You ram into [M] and skid to a halt!"))
+ visible_message(SPAN_DANGER("[src] rams into [M] and skids to a halt!"), SPAN_XENOWARNING("We ram into [M] and skid to a halt!"))
M.Collided(src)
. = FALSE
else if (istype(target, /obj/structure/machinery/m56d_hmg))
var/obj/structure/machinery/m56d_hmg/HMG = target
- visible_message(SPAN_DANGER("[src] rams [HMG]!"), SPAN_XENODANGER("You ram [HMG]!"))
+ visible_message(SPAN_DANGER("[src] rams [HMG]!"), SPAN_XENODANGER("We ram [HMG]!"))
playsound(loc, "punch", 25, 1)
HMG.CrusherImpact()
. = FALSE
@@ -132,7 +132,7 @@
else if (istype(target, /obj/structure/machinery/defenses))
var/obj/structure/machinery/defenses/DF = target
- visible_message(SPAN_DANGER("[src] rams [DF]!"), SPAN_XENODANGER("You ram [DF]!"))
+ visible_message(SPAN_DANGER("[src] rams [DF]!"), SPAN_XENODANGER("We ram [DF]!"))
if (!DF.unacidable)
playsound(loc, "punch", 25, 1)
@@ -148,7 +148,7 @@
if (V.unslashable)
. = FALSE
else
- visible_message(SPAN_DANGER("[src] smashes straight into [V]!"), SPAN_XENODANGER("You smash straight into [V]!"))
+ visible_message(SPAN_DANGER("[src] smashes straight into [V]!"), SPAN_XENODANGER("We smash straight into [V]!"))
playsound(loc, "punch", 25, 1)
V.tip_over()
@@ -165,7 +165,7 @@
if (V.unslashable)
. = FALSE
else
- visible_message(SPAN_DANGER("[src] smashes straight into [V]!"), SPAN_XENODANGER("You smash straight into [V]!"))
+ visible_message(SPAN_DANGER("[src] smashes straight into [V]!"), SPAN_XENODANGER("We smash straight into [V]!"))
playsound(loc, "punch", 25, 1)
V.tip_over()
@@ -184,7 +184,7 @@
if (O.unacidable)
. = FALSE
else if (O.anchored)
- visible_message(SPAN_DANGER("[src] crushes [O]!"), SPAN_XENODANGER("You crush [O]!"))
+ visible_message(SPAN_DANGER("[src] crushes [O]!"), SPAN_XENODANGER("We crush [O]!"))
if(O.contents.len) //Hopefully won't auto-delete things inside crushed stuff.
var/turf/T = get_turf(src)
for(var/atom/movable/S in T.contents) S.forceMove(T)
@@ -195,7 +195,7 @@
else
if(O.buckled_mob)
O.unbuckle()
- visible_message(SPAN_WARNING("[src] knocks [O] aside!"), SPAN_XENOWARNING("You knock [O] aside.")) //Canisters, crates etc. go flying.
+ visible_message(SPAN_WARNING("[src] knocks [O] aside!"), SPAN_XENOWARNING("We knock [O] aside.")) //Canisters, crates etc. go flying.
playsound(loc, "punch", 25, 1)
var/impact_range = 2
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Sentinel.dm b/code/modules/mob/living/carbon/xenomorph/castes/Sentinel.dm
index af7aa7224f0c..a568a093b3a4 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/Sentinel.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/Sentinel.dm
@@ -103,5 +103,6 @@
#undef NEURO_TOUCH_DELAY
/datum/behavior_delegate/sentinel_base/proc/paralyzing_slash(mob/living/carbon/human/human_target)
- human_target.apply_effect(2, WEAKEN)
+ human_target.KnockDown(2)
+ human_target.Stun(2)
to_chat(human_target, SPAN_XENOHIGHDANGER("You fall over, paralyzed by the toxin!"))
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm b/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm
index 3bcea7d91d60..04996af8f8db 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm
@@ -101,7 +101,9 @@
if(should_neckgrab && living_mob.mob_size < MOB_SIZE_BIG)
living_mob.drop_held_items()
- living_mob.apply_effect(get_xeno_stun_duration(living_mob, 2), WEAKEN)
+ var/duration = get_xeno_stun_duration(living_mob, 2)
+ living_mob.KnockDown(duration)
+ living_mob.Stun(duration)
if(living_mob.pulledby != src)
return // Grab was broken, probably as Stun side effect (eg. target getting knocked away from a manned M56D)
visible_message(SPAN_XENOWARNING("[src] grabs [living_mob] by the throat!"), \
diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm
index b6ceb2043458..e372b03e68d9 100644
--- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm
+++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm
@@ -81,6 +81,7 @@
powerfactor_value = min(powerfactor_value,20)
if(powerfactor_value > 0 && small_explosives_stun)
KnockDown(powerfactor_value/5)
+ Stun(powerfactor_value/5) // Due to legacy knockdown being considered an impairement
if(mob_size < MOB_SIZE_BIG)
Slow(powerfactor_value)
Superslow(powerfactor_value/2)
diff --git a/code/modules/mob/living/carbon/xenomorph/death.dm b/code/modules/mob/living/carbon/xenomorph/death.dm
index 08065106c895..ea1e674a1faf 100644
--- a/code/modules/mob/living/carbon/xenomorph/death.dm
+++ b/code/modules/mob/living/carbon/xenomorph/death.dm
@@ -132,6 +132,7 @@
notify_ghosts(header = "Last Xenomorph", message = "There is only one Xenomorph left: [X.name].", source = X, action = NOTIFY_ORBIT)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_XENO_DEATH, src, gibbed)
+ give_action(src, /datum/action/ghost/xeno)
/mob/living/carbon/xenomorph/gib(datum/cause_data/cause = create_cause_data("gibbing", src))
var/obj/effect/decal/remains/xeno/remains = new(get_turf(src))
diff --git a/code/modules/mob/living/carbon/xenomorph/hive_status.dm b/code/modules/mob/living/carbon/xenomorph/hive_status.dm
index 67f19c8d07cb..c7326937c4cd 100644
--- a/code/modules/mob/living/carbon/xenomorph/hive_status.dm
+++ b/code/modules/mob/living/carbon/xenomorph/hive_status.dm
@@ -79,9 +79,7 @@
var/list/hive_structures_limit = list(
XENO_STRUCTURE_CORE = 1,
XENO_STRUCTURE_CLUSTER = 8,
- XENO_STRUCTURE_POOL = 1,
XENO_STRUCTURE_EGGMORPH = 6,
- XENO_STRUCTURE_EVOPOD = 2,
XENO_STRUCTURE_RECOVERY = 6,
XENO_STRUCTURE_PYLON = 2,
)
@@ -627,15 +625,13 @@
/datum/hive_status/proc/can_build_structure(structure_name)
if(!structure_name || !hive_structures_limit[structure_name])
return FALSE
- var/total_count = 0
- if(hive_structures[structure_name])
- total_count += hive_structures[structure_name].len
- if(hive_constructions[structure_name])
- total_count += hive_constructions[structure_name].len
- if(total_count >= hive_structures_limit[structure_name])
+ if(get_structure_count(structure_name) >= hive_structures_limit[structure_name])
return FALSE
return TRUE
+/datum/hive_status/proc/get_structure_count(structure_name)
+ return length(hive_structures[structure_name]) + length(hive_constructions[structure_name])
+
/datum/hive_status/proc/has_structure(structure_name)
if(!structure_name)
return FALSE
@@ -1107,7 +1103,6 @@
/datum/hive_status/corrupted/tamed/New()
. = ..()
hive_structures_limit[XENO_STRUCTURE_EGGMORPH] = 0
- hive_structures_limit[XENO_STRUCTURE_EVOPOD] = 0
/datum/hive_status/corrupted/tamed/proc/make_leader(mob/living/carbon/human/H)
if(!istype(H))
@@ -1168,7 +1163,6 @@
/datum/hive_status/corrupted/renegade/New()
. = ..()
hive_structures_limit[XENO_STRUCTURE_EGGMORPH] = 0
- hive_structures_limit[XENO_STRUCTURE_EVOPOD] = 0
for(var/faction in FACTION_LIST_HUMANOID) //renegades allied to all humanoids, but it mostly affects structures. Their ability to attack humanoids and other xenos (including of the same hive) depends on iff settings
allies[faction] = TRUE
@@ -1351,6 +1345,3 @@
name = "Attack"
desc = "Attack the enemy here!"
icon_state = "attack"
-
-
-
diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm
index 70c92dad076d..07efb5be2ff8 100644
--- a/code/modules/mob/living/carbon/xenomorph/life.dm
+++ b/code/modules/mob/living/carbon/xenomorph/life.dm
@@ -516,25 +516,24 @@ Make sure their actual health updates immediately.*/
else if(world.time > next_grace_time && stat == CONSCIOUS)
var/grace_time = crit_grace_time > 0 ? crit_grace_time + (1 SECONDS * max(round(warding_aura - 1), 0)) : 0
if(grace_time)
- sound_environment_override = SOUND_ENVIRONMENT_PSYCHOTIC
addtimer(CALLBACK(src, PROC_REF(handle_crit)), grace_time)
else
handle_crit()
next_grace_time = world.time + grace_time
+ blinded = stat == UNCONSCIOUS // Xenos do not go blind from other sources - still, replace that by a status_effect or trait when able
if(!gibbing)
med_hud_set_health()
/mob/living/carbon/xenomorph/proc/handle_crit()
- if(stat == DEAD || gibbing)
- return
+ if(stat <= CONSCIOUS && !gibbing)
+ set_stat(UNCONSCIOUS)
- sound_environment_override = SOUND_ENVIRONMENT_NONE
- set_stat(UNCONSCIOUS)
- blinded = TRUE
- see_in_dark = 5
- if(layer != initial(layer)) //Unhide
- layer = initial(layer)
- recalculate_move_delay = TRUE
+/mob/living/carbon/xenomorph/set_stat(new_stat)
+ . = ..()
+ // Temporarily force triggering HUD updates so they apply immediately rather than on Life tick.
+ // Remove this once effects have been ported to trait signals (blinded, dazed, etc)
+ if(stat != .)
+ handle_regular_hud_updates()
/mob/living/carbon/xenomorph/proc/handle_luminosity()
var/new_luminosity = 0
@@ -548,12 +547,15 @@ Make sure their actual health updates immediately.*/
else
set_light_on(FALSE)
-/mob/living/carbon/xenomorph/handle_stunned()
- if(stunned)
- adjust_effect(life_stun_reduction, STUN, EFFECT_FLAG_LIFE)
- stun_callback_check()
-
- return stunned
+/mob/living/carbon/xenomorph/GetStunDuration(amount)
+ amount *= 2 / 3
+ return ..()
+/mob/living/carbon/xenomorph/GetKnockDownDuration(amount)
+ amount *= 2 / 3
+ return ..()
+/mob/living/carbon/xenomorph/GetKnockOutDuration(amount)
+ amount *= 2 / 3
+ return ..()
/mob/living/carbon/xenomorph/proc/handle_interference()
if(interference)
@@ -579,16 +581,6 @@ Make sure their actual health updates immediately.*/
adjust_effect(life_slow_reduction, SUPERSLOW, EFFECT_FLAG_LIFE)
return superslowed
-/mob/living/carbon/xenomorph/handle_knocked_down()
- if(HAS_TRAIT(src, TRAIT_FLOORED))
- adjust_effect(life_knockdown_reduction, WEAKEN, EFFECT_FLAG_LIFE)
- knocked_down_callback_check()
-
-/mob/living/carbon/xenomorph/handle_knocked_out()
- if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT))
- adjust_effect(life_knockout_reduction, PARALYZE, EFFECT_FLAG_LIFE)
- knocked_out_callback_check()
-
//Returns TRUE if xeno is on weeds
//Returns TRUE if xeno is off weeds AND doesn't need weeds for healing AND is not on Almayer UNLESS Queen is also on Almayer (aka - no solo Lurker Almayer hero)
/mob/living/carbon/xenomorph/proc/check_weeds_for_healing()
@@ -603,24 +595,3 @@ Make sure their actual health updates immediately.*/
if(hive && hive.living_xeno_queen && !is_mainship_level(hive.living_xeno_queen.loc.z) && is_mainship_level(loc.z))
return FALSE //We are on the ship, but the Queen isn't
return TRUE //we have off-weed healing, and either we're on Almayer with the Queen, or we're on non-Almayer, or the Queen is dead, good enough!
-
-
-#define XENO_TIMER_TO_EFFECT_CONVERSION (0.075) // (1.5/20) //once per 2 seconds, with 1.5 effect per that once
-
-// This is here because sometimes our stun comes too early and tick is about to start, so we need to compensate
-// this is the best place to do it, tho name might be a bit misleading I guess
-/mob/living/carbon/xenomorph/stun_clock_adjustment()
- var/shift_left = (SSxeno.next_fire - world.time) * XENO_TIMER_TO_EFFECT_CONVERSION
- if(stunned > shift_left)
- stunned += SSxeno.wait * XENO_TIMER_TO_EFFECT_CONVERSION - shift_left
-
-/mob/living/carbon/xenomorph/knockdown_clock_adjustment()
- var/shift_left = (SSxeno.next_fire - world.time) * XENO_TIMER_TO_EFFECT_CONVERSION
- if(knocked_down > shift_left)
- knocked_down += SSxeno.wait * XENO_TIMER_TO_EFFECT_CONVERSION - shift_left
-
-/mob/living/carbon/xenomorph/knockout_clock_adjustment()
- var/shift_left = (SSxeno.next_fire - world.time) * XENO_TIMER_TO_EFFECT_CONVERSION
- if(knocked_out > shift_left)
- knocked_out += SSxeno.wait * XENO_TIMER_TO_EFFECT_CONVERSION - shift_left
-
diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/hivelord/resin_whisperer.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/hivelord/resin_whisperer.dm
index 3200fd0da4a1..3653209b78f2 100644
--- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/hivelord/resin_whisperer.dm
+++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/hivelord/resin_whisperer.dm
@@ -90,9 +90,9 @@
var/obj/structure/mineral_door/resin/resin_door = target_atom
resin_door.TryToSwitchState(owner)
if(resin_door.state)
- to_chat(owner, SPAN_XENONOTICE("You focus your connection to the resin and remotely close the resin door."))
+ to_chat(owner, SPAN_XENONOTICE("We focus our connection to the resin and remotely close the resin door."))
else
- to_chat(owner, SPAN_XENONOTICE("You focus your connection to the resin and remotely open the resin door."))
+ to_chat(owner, SPAN_XENONOTICE("We focus our connection to the resin and remotely open the resin door."))
return
// since actions are instanced per hivelord, and only one construction can be made at a time, tweaking the datum on the fly here is fine. you're going to have to figure something out if these conditions change, though
@@ -111,7 +111,7 @@
var/datum/resin_construction/resing_construction = GLOB.resin_constructions_list[hivelord.selected_resin]
target_turf.visible_message(SPAN_XENONOTICE("The weeds begin pulsating wildly and secrete resin in the shape of \a [resing_construction.construction_name]!"), null, 5)
- to_chat(owner, SPAN_XENONOTICE("You focus your plasma into the weeds below you and force the weeds to secrete resin in the shape of \a [resing_construction.construction_name]."))
+ to_chat(owner, SPAN_XENONOTICE("We focus our plasma into the weeds below us and force the weeds to secrete resin in the shape of \a [resing_construction.construction_name]."))
playsound(target_turf, "alien_resin_build", 25)
return TRUE
diff --git a/code/modules/mob/living/carbon/xenomorph/update_icons.dm b/code/modules/mob/living/carbon/xenomorph/update_icons.dm
index e576b23e2855..7b048bdf2f58 100644
--- a/code/modules/mob/living/carbon/xenomorph/update_icons.dm
+++ b/code/modules/mob/living/carbon/xenomorph/update_icons.dm
@@ -99,19 +99,32 @@
. = ..()
if(. != new_value)
update_icons() // Snowflake handler for xeno resting icons
+ update_wounds()
/mob/living/carbon/xenomorph/on_floored_start()
. = ..()
update_icons()
+ update_wounds()
/mob/living/carbon/xenomorph/on_floored_end()
. = ..()
update_icons()
+ update_wounds()
/mob/living/carbon/xenomorph/on_incapacitated_trait_gain()
. = ..()
update_icons()
+ update_wounds()
/mob/living/carbon/xenomorph/on_incapacitated_trait_loss()
. = ..()
update_icons()
+ update_wounds()
+/mob/living/carbon/xenomorph/on_knockedout_trait_gain()
+ . = ..()
+ update_icons()
+ update_wounds()
+/mob/living/carbon/xenomorph/on_knockedout_trait_loss()
+ . = ..()
+ update_icons()
+ update_wounds()
/* ^^^^^^^^^^^^^^ End Icon updates */
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 9fade66e44c6..7c4eff0e2c15 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -65,14 +65,13 @@
//#define EFFECT_FLAG_XENOMORPH
//#define EFFECT_FLAG_CHEMICAL
+/// Legacy wrapper for effects, DO NOT USE and migrate all code to USING THE STATUS PROCS DIRECTLY
/mob/proc/apply_effect()
return FALSE
+// Legacy wrapper for effects, DO NOT USE and migrate all code to USING THE BELOW PROCS DIRECTLY
/mob/living/apply_effect(effect = 0, effect_type = STUN, effect_flags = EFFECT_FLAG_DEFAULT)
- if(SEND_SIGNAL(src, COMSIG_LIVING_APPLY_EFFECT, effect, effect_type, effect_flags) & COMPONENT_CANCEL_EFFECT)
- return
-
if(!effect)
return FALSE
@@ -106,9 +105,6 @@
/mob/living/adjust_effect(effect = 0, effect_type = STUN, effect_flags = EFFECT_FLAG_DEFAULT)
- if(SEND_SIGNAL(src, COMSIG_LIVING_ADJUST_EFFECT, effect, effect_type, effect_flags) & COMPONENT_CANCEL_EFFECT)
- return
-
if(!effect)
return FALSE
@@ -142,9 +138,6 @@
/mob/living/set_effect(effect = 0, effect_type = STUN, effect_flags = EFFECT_FLAG_DEFAULT)
- if(SEND_SIGNAL(src, COMSIG_LIVING_SET_EFFECT, effect, effect_type, effect_flags) & COMPONENT_CANCEL_EFFECT)
- return
-
switch(effect_type)
if(STUN)
SetStun(effect)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 6205c4f919a4..64c851310823 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -24,6 +24,7 @@
/mob/living/Destroy()
GLOB.living_mob_list -= src
+ cleanup_status_effects()
pipes_shown = null
. = ..()
@@ -33,6 +34,17 @@
QDEL_NULL(pain)
QDEL_NULL(stamina)
QDEL_NULL(hallucinations)
+ status_effects = null
+
+/// Clear all running status effects assuming deletion
+/mob/living/proc/cleanup_status_effects()
+ PROTECTED_PROC(TRUE)
+ if(length(status_effects))
+ for(var/datum/status_effect/S as anything in status_effects)
+ if(S?.on_remove_on_mob_delete) //the status effect calls on_remove when its mob is deleted
+ qdel(S)
+ else
+ S?.be_replaced()
/mob/living/proc/initialize_pain()
pain = new /datum/pain(src)
@@ -473,10 +485,12 @@
if(CONSCIOUS)
if(stat >= UNCONSCIOUS)
ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_KNOCKEDOUT)
+ sound_environment_override = SOUND_ENVIRONMENT_PSYCHOTIC
add_traits(list(/*TRAIT_HANDS_BLOCKED, */ TRAIT_INCAPACITATED, TRAIT_FLOORED), STAT_TRAIT)
if(UNCONSCIOUS)
if(stat >= UNCONSCIOUS)
ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_KNOCKEDOUT) //adding trait sources should come before removing to avoid unnecessary updates
+ sound_environment_override = SOUND_ENVIRONMENT_PSYCHOTIC
if(DEAD)
SEND_SIGNAL(src, COMSIG_MOB_STAT_SET_ALIVE)
// remove_from_dead_mob_list()
@@ -486,15 +500,18 @@
if(CONSCIOUS)
if(. >= UNCONSCIOUS)
REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_KNOCKEDOUT)
+ sound_environment_override = SOUND_ENVIRONMENT_NONE
remove_traits(list(/*TRAIT_HANDS_BLOCKED, */ TRAIT_INCAPACITATED, TRAIT_FLOORED, /*TRAIT_CRITICAL_CONDITION*/), STAT_TRAIT)
if(UNCONSCIOUS)
if(. >= UNCONSCIOUS)
REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_KNOCKEDOUT)
+ sound_environment_override = SOUND_ENVIRONMENT_NONE
if(DEAD)
SEND_SIGNAL(src, COMSIG_MOB_STAT_SET_DEAD)
// REMOVE_TRAIT(src, TRAIT_CRITICAL_CONDITION, STAT_TRAIT)
// remove_from_alive_mob_list()
// add_to_dead_mob_list()
+ update_layer() // Force update layers so that lying down works as intended upon death. This is redundant otherwise. Replace this by trait signals
/**
* Changes the inclination angle of a mob, used by humans and others to differentiate between standing up and prone positions.
@@ -577,12 +594,16 @@
drop_l_hand()
drop_r_hand()
add_temp_pass_flags(PASS_MOB_THRU)
+ update_layer()
+
+/// Updates the layer the mob is on based on its current status. This can result in redundant updates. Replace by trait signals eventually
+/mob/living/proc/update_layer()
//so mob lying always appear behind standing mobs, but dead ones appear behind living ones
if(pulledby && pulledby.grab_level == GRAB_CARRY)
layer = ABOVE_MOB_LAYER
- else if (stat == DEAD)
+ else if (body_position == LYING_DOWN && stat == DEAD)
layer = LYING_DEAD_MOB_LAYER // Dead mobs should layer under living ones
- else if(layer == initial(layer)) //to avoid things like hiding larvas.
+ else if(body_position == LYING_DOWN && layer == initial(layer)) //to avoid things like hiding larvas. //i have no idea what this means
layer = LYING_LIVING_MOB_LAYER
/// Called when mob changes from a standing position into a prone while lacking the ability to stand up at the moment.
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 43e94361676d..88bd8e09c386 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -14,15 +14,14 @@
var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot.
var/halloss = 0 //Hallucination damage. 'Fake' damage obtained through hallucinating or the holodeck. Sleeping should cause it to wear off.
- // please don't use these
- VAR_PROTECTED/knocked_out = 0
- VAR_PROTECTED/knocked_down = 0
- VAR_PROTECTED/stunned = 0
+ // please don't use these directly, use the procs
var/dazed = 0
var/slowed = 0 // X_SLOW_AMOUNT
var/superslowed = 0 // X_SUPERSLOW_AMOUNT
var/sleeping = 0
+ ///a list of all status effects the mob has
+ var/list/status_effects
/// Cooldown for manually toggling resting to avoid spamming
COOLDOWN_DECLARE(rest_cooldown)
diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm
index e4c9659db827..50e59622f132 100644
--- a/code/modules/mob/living/living_health_procs.dm
+++ b/code/modules/mob/living/living_health_procs.dm
@@ -81,55 +81,51 @@
/mob/living/proc/setMaxHealth(newMaxHealth)
maxHealth = newMaxHealth
-
-/mob/living
- VAR_PROTECTED/stun_timer = TIMER_ID_NULL
-
-/mob/living/proc/stun_callback()
- REMOVE_TRAIT(src, TRAIT_INCAPACITATED, STUNNED_TRAIT)
- stunned = 0
- handle_regular_status_updates(FALSE)
- if(stun_timer != TIMER_ID_NULL)
- deltimer(stun_timer)
- stun_timer = TIMER_ID_NULL
-
-/mob/living/proc/stun_callback_check()
- if(stunned)
- ADD_TRAIT(src, TRAIT_INCAPACITATED, STUNNED_TRAIT)
- if(stunned && stunned < recovery_constant)
- stun_timer = addtimer(CALLBACK(src, PROC_REF(stun_callback)), (stunned/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE)
+/* STUN (Incapacitation) */
+/// Overridable handler to adjust the numerical value of status effects. Expand as needed
+/mob/living/proc/GetStunDuration(amount)
+ return amount * GLOBAL_STATUS_MULTIPLIER
+/mob/living/proc/IsStun() //If we're stunned
+ return has_status_effect(/datum/status_effect/incapacitating/stun)
+/mob/living/proc/AmountStun() //How much time remain in our stun - scaled by GLOBAL_STATUS_MULTIPLIER (normally in multiples of legacy 2 seconds)
+ var/datum/status_effect/incapacitating/stun/S = IsStun()
+ if(S)
+ return S.get_duration_left() / GLOBAL_STATUS_MULTIPLIER
+ return 0
+/mob/living/proc/Stun(amount)
+ if(!(status_flags & CANSTUN))
return
- if(!stunned) // Force reset since the timer wasn't called
- stun_callback()
+ amount = GetStunDuration(amount)
+ var/datum/status_effect/incapacitating/stun/S = IsStun()
+ if(S)
+ S.update_duration(amount, increment = TRUE)
+ else if(amount > 0)
+ S = apply_status_effect(/datum/status_effect/incapacitating/stun, amount)
+ return S
+/mob/living/proc/SetStun(amount, ignore_canstun = FALSE) //Sets remaining duration
+ if(!(status_flags & CANSTUN))
return
-
- if(stun_timer != TIMER_ID_NULL)
- deltimer(stun_timer)
- stun_timer = TIMER_ID_NULL
-
-// adjust stun if needed, do not call it in adjust stunned
-/mob/living/proc/stun_clock_adjustment()
- return
-
-/mob/living/proc/Stun(amount)
- if(status_flags & CANSTUN)
- stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun
- stun_clock_adjustment()
- stun_callback_check()
- return
-
-/mob/living/proc/SetStun(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned"
- if(status_flags & CANSTUN)
- stunned = max(amount,0)
- stun_clock_adjustment()
- stun_callback_check()
- return
-
-/mob/living/proc/AdjustStun(amount)
- if(status_flags & CANSTUN)
- stunned = max(stunned + amount,0)
- stun_callback_check()
- return
+ amount = GetStunDuration(amount)
+ var/datum/status_effect/incapacitating/stun/S = IsStun()
+ if(amount <= 0)
+ if(S)
+ qdel(S)
+ else
+ if(S)
+ S.update_duration(amount)
+ else
+ S = apply_status_effect(/datum/status_effect/incapacitating/stun, amount)
+ return S
+/mob/living/proc/AdjustStun(amount, ignore_canstun = FALSE) //Adds to remaining duration
+ if(!(status_flags & CANSTUN))
+ return
+ amount = GetStunDuration(amount)
+ var/datum/status_effect/incapacitating/stun/S = IsStun()
+ if(S)
+ S.adjust_duration(amount)
+ else if(amount > 0)
+ S = apply_status_effect(/datum/status_effect/incapacitating/stun, amount)
+ return S
/mob/living/proc/Daze(amount)
if(status_flags & CANDAZE)
@@ -174,103 +170,113 @@
SetSuperslow(superslowed + amount)
return
-/mob/living
- VAR_PRIVATE/knocked_down_timer
+/* KnockDown (Flooring) */
+/// Overridable handler to adjust the numerical value of status effects. Expand as needed
+/mob/living/proc/GetKnockDownDuration(amount)
+ return amount * GLOBAL_STATUS_MULTIPLIER
-/mob/living/proc/knocked_down_callback()
- remove_traits(list(TRAIT_FLOORED, TRAIT_INCAPACITATED), KNOCKEDDOWN_TRAIT)
- knocked_down = 0
- handle_regular_status_updates(FALSE)
- knocked_down_timer = null
+/mob/living/proc/IsKnockDown()
+ return has_status_effect(/datum/status_effect/incapacitating/knockdown)
-/mob/living/proc/knocked_down_callback_check()
- if(knocked_down)
- add_traits(list(TRAIT_FLOORED, TRAIT_INCAPACITATED), KNOCKEDDOWN_TRAIT)
+///How much time remains - scaled by GLOBAL_STATUS_MULTIPLIER (normally in multiples of legacy 2 seconds)
+/mob/living/proc/AmountKnockDown()
+ var/datum/status_effect/incapacitating/knockdown/S = IsKnockDown()
+ if(S)
+ return S.get_duration_left() / GLOBAL_STATUS_MULTIPLIER
+ return 0
- if(knocked_down && knocked_down < recovery_constant)
- knocked_down_timer = addtimer(CALLBACK(src, PROC_REF(knocked_down_callback)), (knocked_down/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick
+/mob/living/proc/KnockDown(amount)
+ if(!(status_flags & CANKNOCKDOWN))
return
-
- if(!knocked_down) // Force reset since the timer wasn't called
- knocked_down_callback()
+ amount = GetKnockDownDuration(amount)
+ var/datum/status_effect/incapacitating/knockdown/S = IsKnockDown()
+ if(S)
+ S.update_duration(amount, increment = TRUE)
+ else if(amount > 0)
+ S = apply_status_effect(/datum/status_effect/incapacitating/knockdown, amount)
+ return S
+
+///Sets exact remaining KnockDown duration
+/mob/living/proc/SetKnockDown(amount, ignore_canstun = FALSE)
+ if(!(status_flags & CANKNOCKDOWN))
return
-
- if(knocked_down_timer)
- deltimer(knocked_down_timer)
- knocked_down_timer = null
-
-/mob/living
- VAR_PRIVATE/knocked_out_timer
-
-/mob/living/proc/knocked_out_start()
- return
-
-/mob/living/proc/knocked_out_callback()
- REMOVE_TRAIT(src, TRAIT_KNOCKEDOUT, KNOCKEDOUT_TRAIT)
- knocked_out = 0
- handle_regular_status_updates(FALSE)
- knocked_out_timer = null
-
-/mob/living/proc/knocked_out_callback_check()
- if(knocked_out)
- ADD_TRAIT(src, TRAIT_KNOCKEDOUT, KNOCKEDOUT_TRAIT)
- if(knocked_out && knocked_out < recovery_constant)
- knocked_out_timer = addtimer(CALLBACK(src, PROC_REF(knocked_out_callback)), (knocked_out/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick
+ amount = GetKnockDownDuration(amount)
+ var/datum/status_effect/incapacitating/knockdown/S = IsKnockDown()
+ if(amount <= 0)
+ if(S)
+ qdel(S)
+ else
+ if(S)
+ S.update_duration(amount)
+ else
+ S = apply_status_effect(/datum/status_effect/incapacitating/knockdown, amount)
+ return S
+
+///Adds to remaining Knockdown duration
+/mob/living/proc/AdjustKnockDown(amount, ignore_canstun = FALSE)
+ if(!(status_flags & CANKNOCKDOWN))
return
- else if(!knocked_out)
- //It's been called, and we're probably inconscious, so fix that.
- knocked_out_callback()
-
- if(knocked_out_timer)
- deltimer(knocked_out_timer)
- knocked_out_timer = null
-
-// adjust knockdown if needed, do not call it in adjust knockdown
-/mob/living/proc/knockdown_clock_adjustment()
- return
-
-/mob/living/proc/KnockDown(amount, force)
- if((status_flags & CANKNOCKDOWN) || force)
- knocked_down = max(max(knocked_down,amount),0)
- knockdown_clock_adjustment()
- knocked_down_callback_check()
- return
-
-/mob/living/proc/SetKnockDown(amount)
- if(status_flags & CANKNOCKDOWN)
- knocked_down = max(amount,0)
- knockdown_clock_adjustment()
- knocked_down_callback_check()
- return
-
-/mob/living/proc/AdjustKnockDown(amount)
- if(status_flags & CANKNOCKDOWN)
- knocked_down = max(knocked_down + amount,0)
- knocked_down_callback_check()
- return
-
-/mob/living/proc/knockout_clock_adjustment()
- return
-
+ amount = GetKnockDownDuration(amount)
+ var/datum/status_effect/incapacitating/knockdown/S = IsKnockDown()
+ if(S)
+ S.adjust_duration(amount)
+ else if(amount > 0)
+ S = apply_status_effect(/datum/status_effect/incapacitating/knockdown, amount)
+ return S
+
+/* KnockOut (Unconscious) */
+/// Overridable handler to adjust the numerical value of status effects. Expand as needed
+/mob/living/proc/GetKnockOutDuration(amount)
+ return amount * GLOBAL_STATUS_MULTIPLIER
+
+/mob/living/proc/IsKnockOut()
+ return has_status_effect(/datum/status_effect/incapacitating/unconscious)
+
+/mob/living/proc/AmountKnockOut() //How much time remains - scaled by GLOBAL_STATUS_MULTIPLIER (normally in multiples of legacy 2 seconds)
+ var/datum/status_effect/incapacitating/unconscious/S = IsKnockOut()
+ if(S)
+ return S.get_duration_left() / GLOBAL_STATUS_MULTIPLIER
+ return 0
+
+/// Sets Knockout duration to at least the amount provided
/mob/living/proc/KnockOut(amount)
- if(status_flags & CANKNOCKOUT)
- knocked_out = max(max(knocked_out,amount),0)
- knockout_clock_adjustment()
- knocked_out_callback_check()
- return
-
-/mob/living/proc/SetKnockOut(amount)
- if(status_flags & CANKNOCKOUT)
- knocked_out = max(amount,0)
- knockout_clock_adjustment()
- knocked_out_callback_check()
- return
-
-/mob/living/proc/AdjustKnockOut(amount)
- if(status_flags & CANKNOCKOUT)
- knocked_out = max(knocked_out + amount,0)
- knocked_out_callback_check()
- return
+ if(!(status_flags & CANKNOCKOUT))
+ return
+ amount = GetKnockOutDuration(amount)
+ var/datum/status_effect/incapacitating/unconscious/S = IsKnockOut()
+ if(S)
+ S.update_duration(amount, increment = TRUE)
+ else if(amount > 0)
+ S = apply_status_effect(/datum/status_effect/incapacitating/unconscious, amount)
+ return S
+
+/// Sets exact remaining Knockout duration
+/mob/living/proc/SetKnockOut(amount, ignore_canstun = FALSE)
+ if(!(status_flags & CANKNOCKOUT))
+ return
+ amount = GetKnockOutDuration(amount)
+ var/datum/status_effect/incapacitating/unconscious/S = IsKnockOut()
+ if(amount <= 0)
+ if(S)
+ qdel(S)
+ else
+ if(S)
+ S.update_duration(amount)
+ else
+ S = apply_status_effect(/datum/status_effect/incapacitating/unconscious, amount)
+ return S
+
+/// Adds to remaining Knockout duration
+/mob/living/proc/AdjustKnockOut(amount, ignore_canstun = FALSE)
+ if(!(status_flags & CANKNOCKOUT))
+ return
+ amount = GetKnockOutDuration(amount)
+ var/datum/status_effect/incapacitating/unconscious/S = IsKnockOut()
+ if(S)
+ S.adjust_duration(amount)
+ else if(amount > 0)
+ S = apply_status_effect(/datum/status_effect/incapacitating/unconscious, amount)
+ return S
/mob/living/proc/Sleeping(amount)
sleeping = max(max(sleeping,amount),0)
@@ -416,8 +422,6 @@
/mob/living/proc/rejuvenate()
heal_all_damage()
- SEND_SIGNAL(src, COMSIG_LIVING_REJUVENATED)
-
// shut down ongoing problems
status_flags &= ~PERMANENTLY_DEAD
nutrition = NUTRITION_NORMAL
@@ -458,6 +462,8 @@
set_stat(CONSCIOUS)
regenerate_all_icons()
+ SEND_SIGNAL(src, COMSIG_LIVING_REJUVENATED)
+
/mob/living/proc/heal_all_damage()
// shut down various types of badness
@@ -503,11 +509,3 @@
return
face_dir(direction)
return ..()
-
-// Transition handlers. do NOT use this. I mean seriously don't. It's broken. Players love their broken behaviors.
-/mob/living/proc/GetStunValueNotADurationDoNotUse()
- return stunned
-/mob/living/proc/GetKnockDownValueNotADurationDoNotUse()
- return knocked_down
-/mob/living/proc/GetKnockOutValueNotADurationDoNotUse()
- return knocked_out
diff --git a/code/modules/mob/living/living_verbs.dm b/code/modules/mob/living/living_verbs.dm
index 88167feda3c0..3a97725a6fc4 100644
--- a/code/modules/mob/living/living_verbs.dm
+++ b/code/modules/mob/living/living_verbs.dm
@@ -1,3 +1,10 @@
+/mob/living/can_resist()
+ if(next_move > world.time)
+ return FALSE
+ if(HAS_TRAIT(src, TRAIT_INCAPACITATED))
+ return FALSE
+ return TRUE
+
/mob/living/verb/resist()
set name = "Resist"
set category = "IC"
diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm
index 5b190143f5bc..7b0ee6869e80 100644
--- a/code/modules/mob/living/silicon/ai/life.dm
+++ b/code/modules/mob/living/silicon/ai/life.dm
@@ -34,9 +34,6 @@
// Gain Power
apply_damage(-1, OXY)
- // Handle EMP-stun
- handle_stunned()
-
//stage = 1
//if (isRemoteControlling(src)) // Are we not sure what we are?
var/blind = 0
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index b4a6e59e52e2..ac031e74e11f 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -22,7 +22,7 @@
/mob/living/silicon/robot/proc/clamp_values()
// set_effect(min(stunned, 30), STUN)
- set_effect(min(knocked_out, 30), PARALYZE)
+// set_effect(min(knocked_out, 30), PARALYZE)
// set_effect(min(knocked_down, 20), WEAKEN)
sleeping = 0
apply_damage(0, BRUTE)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 13d7c6d9b2ca..a1ef9032e435 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -93,10 +93,6 @@
if(health > maxHealth)
health = maxHealth
- handle_stunned()
- handle_knocked_down(TRUE)
- handle_knocked_out(TRUE)
-
//Movement
if(!client && !stop_automated_movement && wander && !anchored)
if(isturf(src.loc) && !resting && !buckled && (mobility_flags & MOBILITY_MOVE)) //This is so it only moves if it's not inside a closet, gentics machine, etc.
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index c256f05e74b4..2ed1ee5e126c 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -833,10 +833,11 @@ note dizziness decrements automatically in the mob's Life() proc.
selection.forceMove(get_turf(src))
return TRUE
+///Can this mob resist (default FALSE)
+/mob/proc/can_resist()
+ return FALSE
+
/mob/living/proc/handle_statuses()
- handle_stunned()
- handle_knocked_down()
- handle_knocked_out()
handle_stuttering()
handle_silent()
handle_drugged()
@@ -845,11 +846,6 @@ note dizziness decrements automatically in the mob's Life() proc.
handle_slowed()
handle_superslowed()
-/mob/living/proc/handle_stunned()
- if(stunned)
- adjust_effect(-1, STUN)
- return stunned
-
/mob/living/proc/handle_dazed()
if(dazed)
adjust_effect(-1, DAZE)
@@ -865,19 +861,6 @@ note dizziness decrements automatically in the mob's Life() proc.
adjust_effect(-1, SUPERSLOW)
return superslowed
-
-/mob/living/proc/handle_knocked_down(bypass_client_check = FALSE)
- if(knocked_down && (bypass_client_check || client))
- knocked_down = max(knocked_down-1,0)
- knocked_down_callback_check()
- return knocked_down
-
-/mob/living/proc/handle_knocked_out(bypass_client_check = FALSE)
- if(knocked_out && (bypass_client_check || client))
- knocked_out = max(knocked_out-1,0)
- knocked_out_callback_check()
- return knocked_out
-
/mob/living/proc/handle_stuttering()
if(stuttering)
stuttering = max(stuttering-1, 0)
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 5d1baac3a534..6abe12eee9b1 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -313,9 +313,8 @@ GLOBAL_LIST_INIT(limb_types_by_name, list(
/// Returns if the mob is incapacitated and unable to perform general actions
/mob/proc/is_mob_incapacitated(ignore_restrained)
- // note that stat includes knockout via unconscious
- // TODO: re-re-re-figure out if we need TRAIT_FLOORED here or using TRAIT_INCAPACITATED only is acceptable deviance from legacy behavior
return (stat || (!ignore_restrained && is_mob_restrained()) || (status_flags & FAKEDEATH) || HAS_TRAIT(src, TRAIT_INCAPACITATED))
+
/mob/proc/get_eye_protection()
return EYE_PROTECTION_NONE
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 65489944211a..8e9a513fdc88 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -182,10 +182,12 @@
move_delay += MOVE_REDUCTION_DIRECTION_LOCKED // by Geeves
mob.cur_speed = Clamp(10/(move_delay + 0.5), MIN_SPEED, MAX_SPEED)
- //We are now going to move
- moving = TRUE
- mob.move_intentionally = TRUE
+ next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL // We pre-set this now for the crawling case. If crawling do_after fails, next_movement would be set after the attempt end instead of now.
+
+ //Try to crawl first
if(living_mob && living_mob.body_position == LYING_DOWN)
+ if(mob.crawling)
+ return // Already doing it.
//check for them not being a limbless blob (only humans have limbs)
if(ishuman(mob))
var/mob/living/carbon/human/human = mob
@@ -194,19 +196,17 @@
if(!(human.get_limb(zone)))
extremities.Remove(zone)
if(extremities.len < 4)
- next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL
- mob.move_intentionally = FALSE
- moving = FALSE
return
//now crawl
mob.crawling = TRUE
if(!do_after(mob, 1 SECONDS, INTERRUPT_MOVED|INTERRUPT_UNCONSCIOUS|INTERRUPT_STUNNED|INTERRUPT_RESIST|INTERRUPT_CHANGED_LYING, NO_BUSY_ICON))
mob.crawling = FALSE
- next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL
- mob.move_intentionally = FALSE
- moving = FALSE
return
+ if(!mob.crawling)
+ return // Crawling interrupted by a "real" move. Do nothing. In theory INTERRUPT_MOVED|INTERRUPT_CHANGED_LYING catches this in do_after.
mob.crawling = FALSE
+ mob.move_intentionally = TRUE
+ moving = TRUE
if(mob.confused)
mob.Move(get_step(mob, pick(GLOB.cardinals)))
else
diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm
index 0cd9d8dd16c8..673de1a59602 100644
--- a/code/modules/projectiles/guns/specialist/sniper.dm
+++ b/code/modules/projectiles/guns/specialist/sniper.dm
@@ -453,7 +453,8 @@
if(PMC_sniper.body_position == STANDING_UP && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc) && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/veteran))
PMC_sniper.visible_message(SPAN_WARNING("[PMC_sniper] is blown backwards from the recoil of the [src.name]!"),SPAN_HIGHDANGER("You are knocked prone by the blowback!"))
step(PMC_sniper,turn(PMC_sniper.dir,180))
- PMC_sniper.apply_effect(5, WEAKEN)
+ PMC_sniper.KnockDown(5)
+ PMC_sniper.Stun(5)
//Type 88 //Based on the actual Dragunov DMR rifle.
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index ef265e0b8095..d6191898c8c2 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -96,7 +96,10 @@
starting = null
permutated = null
path = null
+ vis_source = null
+ process_start_turf = null
weapon_cause_data = null
+ bullet_traits = null
firer = null
QDEL_NULL(bound_beam)
SSprojectiles.stop_projectile(src)
diff --git a/code/modules/reagents/chemistry_reagents/drink.dm b/code/modules/reagents/chemistry_reagents/drink.dm
index 66ce0844556b..9739687dec20 100644
--- a/code/modules/reagents/chemistry_reagents/drink.dm
+++ b/code/modules/reagents/chemistry_reagents/drink.dm
@@ -555,8 +555,7 @@
/datum/reagent/neurotoxin/on_mob_life(mob/living/carbon/M)
. = ..()
if(!.) return
- if(!HAS_TRAIT(src, TRAIT_FLOORED))
- M.apply_effect(5, WEAKEN)
+ M.KnockDown(5)
if(!data) data = 1
data++
M.dizziness +=6
diff --git a/code/modules/reagents/chemistry_reagents/toxin.dm b/code/modules/reagents/chemistry_reagents/toxin.dm
index d9be565a85b2..445918ef284d 100644
--- a/code/modules/reagents/chemistry_reagents/toxin.dm
+++ b/code/modules/reagents/chemistry_reagents/toxin.dm
@@ -115,7 +115,8 @@
M.status_flags |= FAKEDEATH
ADD_TRAIT(M, TRAIT_IMMOBILIZED, FAKEDEATH_TRAIT)
M.apply_damage(0.5*REM, OXY)
- M.apply_effect(2, WEAKEN)
+ M.KnockDown(2)
+ M.Stun(2)
M.silent = max(M.silent, 10)
/datum/reagent/toxin/zombiepowder/on_delete()
diff --git a/code/modules/shuttle/computers/escape_pod_computer.dm b/code/modules/shuttle/computers/escape_pod_computer.dm
index ec523747e18d..c45ac7d56102 100644
--- a/code/modules/shuttle/computers/escape_pod_computer.dm
+++ b/code/modules/shuttle/computers/escape_pod_computer.dm
@@ -97,14 +97,19 @@
unslashable = TRUE
unacidable = TRUE
time_till_despawn = 6000000 //near infinite so despawn never occurs.
+ /// The name of the mob who injected the occupant into the pod. If it does not match the occupant, the occupant can leave.
+ var/injector_name
var/being_forced = 0 //Simple variable to prevent sound spam.
var/dock_state = STATE_IDLE
/obj/structure/machinery/cryopod/evacuation/ex_act(severity)
return FALSE
-/obj/structure/machinery/cryopod/evacuation/attackby(obj/item/grab/G, mob/user)
- if(istype(G))
+/obj/structure/machinery/cryopod/evacuation/attackby(obj/item/grab/the_grab, mob/user)
+ if(istype(the_grab))
+ if(user.is_mob_incapacitated() || !(ishuman(user)))
+ return FALSE
+
if(being_forced)
to_chat(user, SPAN_WARNING("There's something forcing it open!"))
return FALSE
@@ -117,16 +122,20 @@
to_chat(user, SPAN_WARNING("The cryo pod is not responding to commands!"))
return FALSE
- var/mob/living/carbon/human/M = G.grabbed_thing
- if(!istype(M))
+ var/mob/living/carbon/human/grabbed_mob = the_grab.grabbed_thing
+ if(!istype(grabbed_mob))
+ return FALSE
+ if(grabbed_mob.stat == DEAD) //This mob is dead
+ to_chat(user, SPAN_WARNING("[src] immediately rejects [grabbed_mob]. \He passed away!"))
return FALSE
- visible_message(SPAN_WARNING("[user] starts putting [M.name] into the cryo pod."), null, null, 3)
+ visible_message(SPAN_WARNING("[user] starts putting [grabbed_mob.name] into the cryo pod."), null, null, 3)
if(do_after(user, 20, INTERRUPT_ALL, BUSY_ICON_GENERIC))
- if(!M || !G || !G.grabbed_thing || !G.grabbed_thing.loc || G.grabbed_thing != M)
+ if(!grabbed_mob || !the_grab || !the_grab.grabbed_thing || !the_grab.grabbed_thing.loc || the_grab.grabbed_thing != grabbed_mob)
return FALSE
- move_mob_inside(M)
+ move_mob_inside(grabbed_mob)
+ injector_name = user.real_name
/obj/structure/machinery/cryopod/evacuation/eject()
set name = "Eject Pod"
@@ -136,17 +145,24 @@
if(!occupant || !usr.stat || usr.is_mob_restrained())
return FALSE
- if(occupant) //Once you're in, you cannot exit, and outside forces cannot eject you.
- //The occupant is actually automatically ejected once the evac is canceled.
- if(occupant != usr) to_chat(usr, SPAN_WARNING("You are unable to eject the occupant unless the evacuation is canceled."))
-
add_fingerprint(usr)
+ //Once you're in, you cannot exit, and outside forces cannot eject you.
+ //The occupant is actually automatically ejected once the evac is canceled.
+ if(occupant != usr)
+ to_chat(usr, SPAN_WARNING("You are unable to eject the occupant unless the evacuation is canceled."))
+ return FALSE
+ if(occupant.real_name != injector_name)
+ go_out()
+ else
+ to_chat(usr, SPAN_WARNING("You are unable to leave the [src] until evacuation completes, or is cancelled!."))
+ return FALSE
/obj/structure/machinery/cryopod/evacuation/go_out() //When the system ejects the occupant.
if(occupant)
occupant.forceMove(get_turf(src))
occupant.in_stasis = FALSE
occupant = null
+ injector_name = null
icon_state = orient_right ? "body_scanner_open-r" : "body_scanner_open"
/obj/structure/machinery/cryopod/evacuation/move_inside()
@@ -176,6 +192,7 @@
if(do_after(user, 20, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC))
user.stop_pulling()
move_mob_inside(user)
+ injector_name = user.real_name
/obj/structure/machinery/cryopod/evacuation/attack_alien(mob/living/carbon/xenomorph/user)
if(being_forced)
diff --git a/code/modules/shuttle/helpers.dm b/code/modules/shuttle/helpers.dm
index 6ab5d88da1b7..6b29f155582e 100644
--- a/code/modules/shuttle/helpers.dm
+++ b/code/modules/shuttle/helpers.dm
@@ -124,14 +124,13 @@
lockdown_door(air)
/datum/door_controller/single/proc/bump_at_turf(turf/door_turf)
- for(var/mob/blocking_mob in door_turf)
- if(isliving(blocking_mob))
- to_chat(blocking_mob, SPAN_HIGHDANGER("You get thrown back as the [label] doors slam shut!"))
- blocking_mob.apply_effect(4, WEAKEN)
- for(var/turf/target_turf in orange(1, door_turf)) // Forcemove to a non shuttle turf
- if(!istype(target_turf, /turf/open/shuttle) && !istype(target_turf, /turf/closed/shuttle))
- blocking_mob.forceMove(target_turf)
- break
+ for(var/mob/living/blocking_mob in door_turf)
+ to_chat(blocking_mob, SPAN_HIGHDANGER("You get thrown back as the [label] doors slam shut!"))
+ blocking_mob.KnockDown(4)
+ for(var/turf/target_turf in orange(1, door_turf)) // Forcemove to a non shuttle turf
+ if(!istype(target_turf, /turf/open/shuttle) && !istype(target_turf, /turf/closed/shuttle))
+ blocking_mob.forceMove(target_turf)
+ break
/datum/door_controller/proc/lockdown_door(obj/structure/machinery/door/target)
if(istype(target, /obj/structure/machinery/door/airlock))
diff --git a/code/modules/shuttle/shuttles/ert.dm b/code/modules/shuttle/shuttles/ert.dm
index 1760caf3d87c..b619645c501c 100644
--- a/code/modules/shuttle/shuttles/ert.dm
+++ b/code/modules/shuttle/shuttles/ert.dm
@@ -61,14 +61,13 @@
INVOKE_ASYNC(src, PROC_REF(lockdown_door_launch), door)
/obj/docking_port/mobile/emergency_response/proc/lockdown_door_launch(obj/structure/machinery/door/airlock/air)
- for(var/mob/blocking_mob in air.loc) // Bump all mobs outta the way for outside airlocks of shuttles
- if(isliving(blocking_mob))
- to_chat(blocking_mob, SPAN_HIGHDANGER("You get thrown back as the dropship doors slam shut!"))
- blocking_mob.apply_effect(4, WEAKEN)
- for(var/turf/target_turf in orange(1, air)) // Forcemove to a non shuttle turf
- if(!istype(target_turf, /turf/open/shuttle) && !istype(target_turf, /turf/closed/shuttle))
- blocking_mob.forceMove(target_turf)
- break
+ for(var/mob/living/blocking_mob in air.loc) // Bump all mobs outta the way for outside airlocks of shuttles
+ to_chat(blocking_mob, SPAN_HIGHDANGER("You get thrown back as the dropship doors slam shut!"))
+ blocking_mob.KnockDown(4)
+ for(var/turf/target_turf in orange(1, air)) // Forcemove to a non shuttle turf
+ if(!istype(target_turf, /turf/open/shuttle) && !istype(target_turf, /turf/closed/shuttle))
+ blocking_mob.forceMove(target_turf)
+ break
lockdown_door(air)
/obj/docking_port/mobile/emergency_response/proc/lockdown_door(obj/structure/machinery/door/airlock/air)
diff --git a/code/modules/shuttles/marine_ferry.dm b/code/modules/shuttles/marine_ferry.dm
index 364d74824099..82c5b8e4403d 100644
--- a/code/modules/shuttles/marine_ferry.dm
+++ b/code/modules/shuttles/marine_ferry.dm
@@ -590,14 +590,13 @@
/datum/shuttle/ferry/marine/force_close_launch(obj/structure/machinery/door/AL)
if(!iselevator)
- for(var/mob/M in AL.loc) // Bump all mobs outta the way for outside airlocks of shuttles
- if(isliving(M))
- to_chat(M, SPAN_HIGHDANGER("You get thrown back as the dropship doors slam shut!"))
- M.apply_effect(4, WEAKEN)
- for(var/turf/T in orange(1, AL)) // Forcemove to a non shuttle turf
- if(!istype(T, /turf/open/shuttle) && !istype(T, /turf/closed/shuttle))
- M.forceMove(T)
- break
+ for(var/mob/living/M in AL.loc) // Bump all mobs outta the way for outside airlocks of shuttles
+ to_chat(M, SPAN_HIGHDANGER("You get thrown back as the dropship doors slam shut!"))
+ M.KnockDown(4)
+ for(var/turf/T in orange(1, AL)) // Forcemove to a non shuttle turf
+ if(!istype(T, /turf/open/shuttle) && !istype(T, /turf/closed/shuttle))
+ M.forceMove(T)
+ break
return ..() // Sleeps
/datum/shuttle/ferry/marine/open_doors(list/L)
diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm
index a5911d18b3a2..dc6f3a682b24 100644
--- a/code/modules/shuttles/shuttle.dm
+++ b/code/modules/shuttles/shuttle.dm
@@ -29,8 +29,6 @@
var/iselevator = 0 //Used to remove some shuttle related procs and texts to make it compatible with elevators
var/almayerelevator = 0 //elevators on the almayer without limitations
- var/list/last_passangers = list() //list of living creatures that were our last passengers
-
var/require_link = FALSE
var/linked = FALSE
var/ambience_muffle = MUFFLE_HIGH
@@ -202,9 +200,7 @@
origin.move_contents_to(destination, direction=direction)
- last_passangers.Cut()
- for(var/mob/M in destination)
- last_passangers += M
+ for(var/mob/living/M in destination)
if(M.client)
spawn(0)
if(M.buckled && !iselevator)
@@ -215,17 +211,18 @@
shake_camera(M, iselevator? 2 : 10, 1)
if(istype(M, /mob/living/carbon) && !iselevator)
if(!M.buckled)
- M.apply_effect(3, WEAKEN)
+ M.Stun(3)
+ M.KnockDown(3)
for(var/turf/T in origin) // WOW so hacky - who cares. Abby
if(iselevator)
if(istype(T,/turf/open/space))
if(is_mainship_level(T.z))
- new /turf/open/floor/almayer/empty(T)
+ T.ChangeTurf(/turf/open/floor/almayer/empty)
else
- new /turf/open/gm/empty(T)
+ T.ChangeTurf(/turf/open/gm/empty)
else if(istype(T,/turf/open/space))
- new /turf/open/floor/plating(T)
+ T.ChangeTurf(/turf/open/floor/plating)
return
diff --git a/code/modules/surgery/surgery_steps.dm b/code/modules/surgery/surgery_steps.dm
index b58c62b57f68..9e1450868d1c 100644
--- a/code/modules/surgery/surgery_steps.dm
+++ b/code/modules/surgery/surgery_steps.dm
@@ -92,6 +92,7 @@ affected_limb, or location vars. Also, in that case there may be a wait between
var/self_surgery
var/tool_modifier
var/surface_modifier
+ var/failure_penalties = 0
//Skill speed modifier.
step_duration *= user.get_skill_duration_multiplier(SKILL_SURGERY)
@@ -134,16 +135,22 @@ affected_limb, or location vars. Also, in that case there may be a wait between
message += "this tool is[pick("n't ideal", " not the best")]"
if(SURGERY_TOOL_MULT_SUBSTITUTE)
message += "this tool is[pick("n't suitable", " a bad fit", " difficult to use")]"
- if(SURGERY_TOOL_MULT_BAD_SUBSTITUTE, SURGERY_TOOL_MULT_AWFUL)
+ if(SURGERY_TOOL_MULT_BAD_SUBSTITUTE)
message += "this tool is [pick("awful", "barely usable")]"
+ failure_penalties += 1
+ if(SURGERY_TOOL_MULT_AWFUL)
+ message += "this tool is [pick("awful", "barely usable")]"
+ failure_penalties += 2
switch(surface_modifier)
if(SURGERY_SURFACE_MULT_ADEQUATE)
message += "[pick("it isn't easy, working", "it's tricky to perform complex surgeries", "this would be quicker if you weren't working")] [pick("in the field", "under these conditions", "without a proper surgical theatre")]"
if(SURGERY_SURFACE_MULT_UNSUITED)
message += "[pick("it's difficult to work", "it's slow going, working", "you need to take your time")] in these [pick("primitive", "rough", "crude")] conditions"
+ failure_penalties += 1
if(SURGERY_SURFACE_MULT_AWFUL)
message += "[pick("you need to work slowly and carefully", "you need to be very careful", "this is delicate work, especially")] [pick("in these", "under such")] [pick("terrible", "awful", "utterly unsuitable")] conditions"
+ failure_penalties += 2
if(length(message))
to_chat(user, SPAN_WARNING("[capitalize(english_list(message, final_comma_text = ","))]."))
@@ -151,6 +158,20 @@ affected_limb, or location vars. Also, in that case there may be a wait between
var/advance //Whether to continue to the next step afterwards.
var/pain_failure_chance = max(0, (target.pain?.feels_pain ? surgery.pain_reduction_required - target.pain.reduction_pain : 0) * 2 - human_modifiers["pain_reduction"]) //Each extra pain unit increases the chance by 2
+ // Skill compensation for difficult conditions/tools
+ if(skillcheck(user, SKILL_SURGERY, SKILL_SURGERY_EXPERT))
+ failure_penalties -= 2 // will ultimately be -3
+ if(skillcheck(user, SKILL_SURGERY, SKILL_SURGERY_TRAINED))
+ failure_penalties -= 1
+
+ var/surgery_failure_chance = SURGERY_FAILURE_IMPOSSIBLE
+ if(failure_penalties == 1)
+ surgery_failure_chance = SURGERY_FAILURE_UNLIKELY
+ else if(failure_penalties == 2)
+ surgery_failure_chance = SURGERY_FAILURE_POSSIBLE
+ else if(failure_penalties > 2)
+ surgery_failure_chance = SURGERY_FAILURE_LIKELY
+
play_preop_sound(user, target, target_zone, tool, surgery)
if(tool?.flags_item & ANIMATED_SURGICAL_TOOL) //If we have an animated tool sprite, run it while we do any do_afters.
@@ -171,6 +192,17 @@ affected_limb, or location vars. Also, in that case there may be a wait between
target.emote("pain")
play_failure_sound(user, target, target_zone, tool, surgery)
+ else if(prob(surgery_failure_chance))
+ do_after(user, max(rand(step_duration * 0.1, step_duration * 0.5), 0.5), INTERRUPT_ALL|INTERRUPT_DIFF_INTENT,
+ BUSY_ICON_FRIENDLY, target, INTERRUPT_MOVED, BUSY_ICON_MEDICAL) //Brief do_after so that the interrupt doesn't happen instantly.
+ user.visible_message(SPAN_DANGER("[user] is struggling to perform surgery."),
+ SPAN_DANGER("You are struggling to perform the surgery with these tools and conditions!"))
+ if(failure(user, target, target_zone, tool, tool_type, surgery)) //Failure returns TRUE if the step should complete anyway.
+ advance = TRUE
+ target.emote("pain")
+ play_failure_sound(user, target, target_zone, tool, surgery)
+ msg_admin_niche("[user] failed a [surgery] step on [target] because of [failure_penalties] failure possibility penalties ([surgery_failure_chance]%)")
+
else //Help intent.
if(do_after(user, step_duration, INTERRUPT_ALL|INTERRUPT_DIFF_INTENT, BUSY_ICON_FRIENDLY,target,INTERRUPT_MOVED,BUSY_ICON_MEDICAL))
success(user, target, target_zone, tool, tool_type, surgery)
diff --git a/colonialmarines.dme b/colonialmarines.dme
index 27acc51dc015..64f1338244b4 100644
--- a/colonialmarines.dme
+++ b/colonialmarines.dme
@@ -31,6 +31,7 @@
#include "code\__DEFINES\_tick.dm"
#include "code\__DEFINES\access.dm"
#include "code\__DEFINES\admin.dm"
+#include "code\__DEFINES\alerts.dm"
#include "code\__DEFINES\ARES.dm"
#include "code\__DEFINES\assert.dm"
#include "code\__DEFINES\atmospherics.dm"
@@ -98,6 +99,7 @@
#include "code\__DEFINES\speech_channels.dm"
#include "code\__DEFINES\stamina.dm"
#include "code\__DEFINES\stats.dm"
+#include "code\__DEFINES\status_effects.dm"
#include "code\__DEFINES\STUI.dm"
#include "code\__DEFINES\subsystems.dm"
#include "code\__DEFINES\supply.dm"
@@ -307,10 +309,12 @@
#include "code\controllers\subsystem\init\lobby_art.dm"
#include "code\controllers\subsystem\processing\defprocess.dm"
#include "code\controllers\subsystem\processing\effects.dm"
+#include "code\controllers\subsystem\processing\fasteffects.dm"
#include "code\controllers\subsystem\processing\fastobj.dm"
#include "code\controllers\subsystem\processing\hive_status.dm"
#include "code\controllers\subsystem\processing\obj_tab_items.dm"
#include "code\controllers\subsystem\processing\objects.dm"
+#include "code\controllers\subsystem\processing\oldeffects.dm"
#include "code\controllers\subsystem\processing\processing.dm"
#include "code\controllers\subsystem\processing\shield_pillar.dm"
#include "code\controllers\subsystem\processing\slowobj.dm"
@@ -634,6 +638,12 @@
#include "code\datums\statistics\random_facts\kills_fact.dm"
#include "code\datums\statistics\random_facts\random_fact.dm"
#include "code\datums\statistics\random_facts\revives_fact.dm"
+#include "code\datums\status_effects\_status_effect.dm"
+#include "code\datums\status_effects\_status_effect_helpers.dm"
+#include "code\datums\status_effects\grouped_effect.dm"
+#include "code\datums\status_effects\limited_effect.dm"
+#include "code\datums\status_effects\stacking_effect.dm"
+#include "code\datums\status_effects\debuffs\debuffs.dm"
#include "code\datums\supply_packs\_supply_packs.dm"
#include "code\datums\supply_packs\ammo.dm"
#include "code\datums\supply_packs\attachments.dm"
diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml
index 06d79b8d8bdf..b0bde6fe0753 100644
--- a/html/changelogs/archive/2023-12.yml
+++ b/html/changelogs/archive/2023-12.yml
@@ -340,3 +340,66 @@
- maptweak: Numerous Fixes for new brig
cuberound:
- balance: DS doorgun can shoot over cades
+2023-12-18:
+ Huffie56:
+ - bugfix: added landing zone camera on trijent.
+ - bugfix: fixed landing zone camera on all map in rotation.
+ sleepynecrons:
+ - imageadd: marine snow uniforms and armors given a new look
+2023-12-19:
+ Drathek:
+ - balance: Added the possibility of surgery steps failing based on tool and surface
+ suitability compensated by surgery skill.
+ Huffie56:
+ - bugfix: fix a nightmare insert that had a wall and a door on same tile.
+ NateDross:
+ - bugfix: Requisitions elevator lighting fix
+ NessiePendragon:
+ - rscadd: Added new sprites for Warrior.
+ PurpleCIoud:
+ - imageadd: added chocolate bar new sprite
+ - imagedel: deleted old chocolate bar sprite
+ SabreML:
+ - rscadd: Updated the 'help' message for xeno special structure construction.
+ - qol: Added a 'remaining' counter when constructing special structures to let players
+ know how many can still be built.
+ - qol: Added a 'Ghost' button for dead xenomorphs.
+ realforest2001:
+ - rscadd: Added a proc for comparing the registered name of an ID, to the real name
+ of a mob. Also checks registered_ref if one exists.
+ - rscadd: Evacuation can no longer be cancelled without passing above check.
+ - rscadd: People forced into escape-pod stasis bays against their wishes can now
+ eject themselves.
+ - bugfix: Xenos can no longer force humans into escape-pod stasis bays.
+ - bugfix: Escape-pod stasis bays no longer accept corpses.
+ stalkerino:
+ - balance: fixes the balance of the game by making hair gradient trait free
+2023-12-20:
+ Birdtalon, Fira:
+ - bugfix: Fixes hive UI crash upon pylon giving new larva.
+ Contrabang:
+ - bugfix: Matches now do burn damage instead of brute, when you accidently burn
+ your own hand.
+ InsaneRed:
+ - spellcheck: Converted more "YOU" to "WE" for xenomorphs.
+ LTNTS:
+ - qol: makes suspect nardo gray
+ fira:
+ - rscadd: Added Buckled, Handcuffed and Legcuffed screen alerts
+ - code_imp: Ported /tg/ status effects backend, modified with timers to let effects
+ end at appropriate time
+ - code_imp: Stun, Knockdown and Knockout now use the new effects backend
+ - balance: Due to backend change, all KO/KD/Stuns may behave differently timing
+ wise. This is of course subject to adjustments.
+ - balance: Endurance is now set at 8% effect duration reduction per level above
+ 1. However it now compounds with species bonus. Feel free to adjust.
+ - balance: Knockdowns are not inherently incapacitating anymore and many sources
+ of it have been updated to also stun to make up for it.
+ - bugfix: KO/KD/Stuns do not artificially and randomly ''stack'' due to incorrect
+ timer offset calculation anymore.
+ - bugfix: Stuns now correctly apply Stun reduction values instead of Knockdown reductions.
+ - bugfix: Crawling can now be interrupted by a normal move, if you are fit enough
+ to do so.
+ realforest2001:
+ - maptweak: Various doors around the Almayer will now close their opposites for
+ better security.
diff --git a/icons/mob/hud/actions.dmi b/icons/mob/hud/actions.dmi
index 9021db895eb7..843d38a67b86 100644
Binary files a/icons/mob/hud/actions.dmi and b/icons/mob/hud/actions.dmi differ
diff --git a/icons/mob/humans/onmob/suit_1.dmi b/icons/mob/humans/onmob/suit_1.dmi
index 636bbf8b9df0..a230aa7e4300 100644
Binary files a/icons/mob/humans/onmob/suit_1.dmi and b/icons/mob/humans/onmob/suit_1.dmi differ
diff --git a/icons/mob/humans/onmob/uniform_0.dmi b/icons/mob/humans/onmob/uniform_0.dmi
index 40305b9413b0..a140c4db6d8b 100644
Binary files a/icons/mob/humans/onmob/uniform_0.dmi and b/icons/mob/humans/onmob/uniform_0.dmi differ
diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi
index af61a47aa885..21cc40876fbc 100644
Binary files a/icons/mob/screen_alert.dmi and b/icons/mob/screen_alert.dmi differ
diff --git a/icons/mob/xenos/warrior.dmi b/icons/mob/xenos/warrior.dmi
index 1211da5ac188..e871f7749145 100644
Binary files a/icons/mob/xenos/warrior.dmi and b/icons/mob/xenos/warrior.dmi differ
diff --git a/icons/obj/items/clothing/cm_suits.dmi b/icons/obj/items/clothing/cm_suits.dmi
index 162d66a2f085..7db2158ee5bf 100644
Binary files a/icons/obj/items/clothing/cm_suits.dmi and b/icons/obj/items/clothing/cm_suits.dmi differ
diff --git a/icons/obj/items/clothing/uniforms.dmi b/icons/obj/items/clothing/uniforms.dmi
index f05eb3671f91..8eb3d03d68c7 100644
Binary files a/icons/obj/items/clothing/uniforms.dmi and b/icons/obj/items/clothing/uniforms.dmi differ
diff --git a/icons/obj/items/food.dmi b/icons/obj/items/food.dmi
index 54de858ffc9c..9e746bb62656 100644
Binary files a/icons/obj/items/food.dmi and b/icons/obj/items/food.dmi differ
diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm
index 6a90f35e4de3..48f7f9089399 100644
--- a/maps/map_files/BigRed/BigRed.dmm
+++ b/maps/map_files/BigRed/BigRed.dmm
@@ -45482,8 +45482,7 @@ aae
aaf
aai
aah
-aah
-aah
+aaF
aah
aah
aah
@@ -45501,6 +45500,7 @@ aah
aah
aah
aah
+aaF
aah
aeh
aaf
@@ -45700,7 +45700,6 @@ aaf
aaj
aah
aah
-aaF
aah
aah
aah
@@ -45716,7 +45715,8 @@ aah
aah
aah
aah
-aaF
+aah
+aah
aah
aah
aei
@@ -46884,7 +46884,7 @@ aSB
bgX
bhu
bie
-bie
+bje
bie
bie
bie
@@ -46902,7 +46902,7 @@ bie
bie
bie
bie
-bie
+bje
bie
bsb
eWd
@@ -47102,7 +47102,7 @@ bgX
bhv
bie
bie
-bje
+bie
bie
bie
bie
@@ -47118,7 +47118,7 @@ bie
bie
bjo
bie
-bje
+bie
bie
bie
bsc
@@ -47436,7 +47436,6 @@ aaf
aaj
aah
aah
-aaF
aah
aah
aah
@@ -47452,7 +47451,8 @@ aah
aah
aah
aah
-aaF
+aah
+aah
aah
aah
aei
@@ -47652,8 +47652,7 @@ aae
aaf
aak
aah
-aah
-aah
+aaF
aah
aah
aah
@@ -47671,6 +47670,7 @@ aah
aah
aah
aah
+aaF
aah
aej
aaf
@@ -48838,7 +48838,6 @@ eWd
bhv
bie
bie
-bje
bie
bie
bie
@@ -48854,7 +48853,8 @@ bie
bie
bie
bie
-bje
+bie
+bie
bie
bie
bsc
@@ -49054,7 +49054,7 @@ aSB
bgX
bhw
bie
-bie
+bje
bie
bie
bie
@@ -49072,7 +49072,7 @@ bie
bie
bie
bie
-bie
+bje
bie
bsd
eWd
diff --git a/maps/map_files/DesertDam/Desert_Dam.dmm b/maps/map_files/DesertDam/Desert_Dam.dmm
index 4bf4d0e7a88c..66684b33731c 100644
--- a/maps/map_files/DesertDam/Desert_Dam.dmm
+++ b/maps/map_files/DesertDam/Desert_Dam.dmm
@@ -64577,6 +64577,10 @@
/obj/structure/desertdam/decals/road_edge,
/turf/open/asphalt,
/area/desert_dam/exterior/valley/valley_labs)
+"tcB" = (
+/obj/structure/machinery/camera/autoname/lz_camera,
+/turf/open/floor/plating,
+/area/desert_dam/exterior/landing_pad_two)
"tdf" = (
/obj/structure/surface/table,
/obj/item/folder/yellow,
@@ -65007,6 +65011,10 @@
icon_state = "dirt2"
},
/area/desert_dam/exterior/valley/valley_crashsite)
+"uHT" = (
+/obj/structure/machinery/camera/autoname/lz_camera,
+/turf/open/floor/plating,
+/area/desert_dam/exterior/landing_pad_one)
"uKo" = (
/obj/structure/platform/mineral/sandstone/runed{
dir = 4
@@ -70120,6 +70128,7 @@ dTs
cDb
cDK
cDY
+tcB
cDY
cDY
cDY
@@ -70128,6 +70137,7 @@ cDY
cDY
cDY
cDY
+tcB
cDY
cDY
cDY
@@ -70136,9 +70146,7 @@ cDY
cDY
cDY
cDY
-cDY
-cDY
-cDY
+tcB
cDY
cMD
cBS
@@ -72460,6 +72468,7 @@ cDc
cDb
cDV
cDY
+tcB
cDY
cDY
cDY
@@ -72468,6 +72477,7 @@ cDY
cDY
cDY
cDY
+tcB
cDY
cDY
cDY
@@ -72476,9 +72486,7 @@ cDY
cDY
cDY
cDY
-cDY
-cDY
-cDY
+tcB
cDY
cNb
cBS
@@ -72982,6 +72990,7 @@ aUD
aVj
acI
aWh
+uHT
aWh
aWh
aWh
@@ -72990,6 +72999,7 @@ aWh
aWh
aWh
aWh
+uHT
aWh
aWh
aWh
@@ -72998,9 +73008,7 @@ aWh
aWh
aWh
aWh
-aWh
-aWh
-aWh
+uHT
aWh
bAF
aVi
@@ -75322,6 +75330,7 @@ aUD
aVg
acJ
aWh
+uHT
aWh
aWh
aWh
@@ -75330,6 +75339,7 @@ aWh
aWh
aWh
aWh
+uHT
aWh
aWh
aWh
@@ -75338,9 +75348,7 @@ aWh
aWh
aWh
aWh
-aWh
-aWh
-aWh
+uHT
aWh
bFg
aVi
diff --git a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm
index bffe3f990722..b37d42f1a55f 100644
--- a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm
+++ b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm
@@ -73029,7 +73029,7 @@ nZB
nZB
iTt
wQN
-wSm
+xnU
wSm
wSm
wSm
@@ -73047,7 +73047,7 @@ wSm
wSm
wSm
wSm
-wSm
+xnU
wQN
eAM
wSm
@@ -73242,7 +73242,6 @@ nZB
gBe
wSm
wSm
-xnU
wSm
wSm
wSm
@@ -73258,7 +73257,8 @@ wSm
wSm
wSm
wSm
-xnU
+wSm
+wSm
wSm
wSm
eSF
@@ -74938,7 +74938,6 @@ nZB
gBe
wSm
wSm
-xnU
wSm
wSm
wSm
@@ -74954,7 +74953,8 @@ wSm
wSm
wSm
wSm
-xnU
+wSm
+wSm
wSm
wSm
eSF
@@ -75149,7 +75149,7 @@ nZB
nZB
bne
wQN
-wSm
+xnU
wSm
wSm
wSm
@@ -75167,7 +75167,7 @@ wSm
wSm
wSm
wSm
-wSm
+xnU
wQN
xrH
wSm
@@ -88846,7 +88846,7 @@ qaL
nGZ
uNs
iOa
-xeO
+cCx
xeO
xeO
xeO
@@ -88864,7 +88864,7 @@ xeO
xeO
xeO
xeO
-xeO
+cCx
iOa
eLB
uYi
@@ -89059,7 +89059,6 @@ pYD
ehy
xeO
xeO
-cCx
xeO
xeO
xeO
@@ -89075,7 +89074,8 @@ xeO
xeO
xeO
xeO
-cCx
+xeO
+xeO
xeO
xeO
oGR
@@ -90755,7 +90755,6 @@ pqY
ehy
doA
xeO
-cCx
xeO
xeO
xeO
@@ -90771,7 +90770,8 @@ xeO
xeO
xeO
xeO
-cCx
+xeO
+xeO
xeO
xeO
kIh
@@ -90966,7 +90966,7 @@ qaL
nGZ
aTe
iOa
-xeO
+cCx
xeO
xeO
xeO
@@ -90984,7 +90984,7 @@ xeO
xeO
xeO
xeO
-xeO
+cCx
iOa
rrD
uYi
diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm
index 2e1ebb3ea204..d178ca9faddf 100644
--- a/maps/map_files/Kutjevo/Kutjevo.dmm
+++ b/maps/map_files/Kutjevo/Kutjevo.dmm
@@ -20100,10 +20100,10 @@ wGH
cWV
exI
nbV
-nbV
umo
nbV
nbV
+nbV
lAI
lAI
lAI
@@ -21172,10 +21172,10 @@ sVF
xBm
wvX
hzN
-hzN
wqk
hzN
hzN
+hzN
ppX
ppX
ppX
@@ -21770,10 +21770,10 @@ wGH
cWV
uhO
bbc
-nbV
umo
nbV
nbV
+nbV
lAI
lAI
lAI
@@ -22842,10 +22842,10 @@ oJE
xBm
saK
hzN
-hzN
wqk
hzN
hzN
+hzN
ppX
ppX
ppX
diff --git a/maps/map_files/Kutjevo/sprinkles/35.communications.dmm b/maps/map_files/Kutjevo/sprinkles/35.communications.dmm
index bc89cfab0105..d172399ca564 100644
--- a/maps/map_files/Kutjevo/sprinkles/35.communications.dmm
+++ b/maps/map_files/Kutjevo/sprinkles/35.communications.dmm
@@ -306,7 +306,7 @@
dir = 1;
req_one_access = null
},
-/turf/closed/wall/kutjevo/colony,
+/turf/open/floor/plating/kutjevo,
/area/template_noop)
"LG" = (
/obj/structure/fence,
diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm
index 9c84577bbbdd..ccaf5f201b6f 100644
--- a/maps/map_files/LV624/LV624.dmm
+++ b/maps/map_files/LV624/LV624.dmm
@@ -31401,7 +31401,7 @@ aZP
aOB
oOB
aRg
-aRg
+aCi
aRg
aRg
aRg
@@ -31419,7 +31419,7 @@ aRg
aRg
aRg
aRg
-aRg
+aCi
aRg
odw
aRg
@@ -31631,7 +31631,6 @@ aTv
aRg
aRg
aRg
-aCi
aRg
aRg
aRg
@@ -31646,7 +31645,8 @@ aRg
aRg
aRg
aRg
-aCi
+aRg
+aRg
aKO
aRg
aEw
@@ -33455,7 +33455,7 @@ aTv
aRg
aRg
aRg
-aCi
+aRg
aRg
aRg
aRg
@@ -33470,7 +33470,7 @@ aRg
aRg
aRg
aRg
-aCi
+aRg
aRg
aRg
aEw
@@ -33681,7 +33681,7 @@ aZP
aOB
kvE
aRg
-aRg
+aCi
aRg
aRg
aRg
@@ -33699,7 +33699,7 @@ aRg
aRg
aRg
aRg
-aRg
+aCi
aRg
byK
aRg
@@ -58084,7 +58084,6 @@ aGz
aGz
aDJ
ank
-ank
ano
ank
ank
@@ -58093,6 +58092,7 @@ ank
ank
ank
ank
+ank
ano
ank
ank
@@ -60364,7 +60364,6 @@ btF
aDi
aDL
ank
-ank
ano
ank
ank
@@ -60373,6 +60372,7 @@ ank
ank
ank
ank
+ank
ano
ank
ank
diff --git a/maps/map_files/New_Varadero/New_Varadero.dmm b/maps/map_files/New_Varadero/New_Varadero.dmm
index 656c4a7f48b1..a56328df85f0 100644
--- a/maps/map_files/New_Varadero/New_Varadero.dmm
+++ b/maps/map_files/New_Varadero/New_Varadero.dmm
@@ -86,10 +86,6 @@
icon_state = "multi_tiles"
},
/area/varadero/interior/medical)
-"ade" = (
-/obj/structure/machinery/camera/autoname/lz_camera,
-/turf/open/gm/dirt,
-/area/varadero/exterior/lz2_near)
"adw" = (
/turf/closed/wall/r_wall,
/area/varadero/interior/cargo)
@@ -12292,14 +12288,6 @@
icon_state = "asteroidfloor"
},
/area/varadero/interior/comms1)
-"ias" = (
-/obj/structure/machinery/camera/autoname/lz_camera,
-/obj/structure/machinery/landinglight/ds1/spoke{
- pixel_y = -5;
- pixel_x = 13
- },
-/turf/open/auto_turf/sand_white/layer1,
-/area/varadero/exterior/lz2_near)
"iat" = (
/obj/structure/barricade/wooden{
dir = 1
@@ -18127,6 +18115,14 @@
/obj/effect/spawner/random/attachment,
/turf/open/floor/carpet,
/area/varadero/interior/administration)
+"lIW" = (
+/obj/structure/machinery/landinglight/ds1/spoke{
+ pixel_y = -5;
+ pixel_x = 13
+ },
+/obj/structure/machinery/camera/autoname/lz_camera,
+/turf/open/auto_turf/sand_white/layer1,
+/area/varadero/exterior/lz2_near)
"lJo" = (
/obj/structure/machinery/light{
dir = 8
@@ -28324,6 +28320,14 @@
},
/turf/open/floor/wood,
/area/varadero/interior/beach_bar)
+"sbP" = (
+/obj/structure/machinery/landinglight/ds1/spoke{
+ pixel_y = -5;
+ pixel_x = -13
+ },
+/obj/structure/machinery/camera/autoname/lz_camera,
+/turf/open/auto_turf/sand_white/layer1,
+/area/varadero/exterior/lz2_near)
"sbX" = (
/obj/structure/flora/pottedplant{
icon_state = "pottedplant_22";
@@ -36538,14 +36542,6 @@
icon_state = "blue"
},
/area/varadero/interior/technical_storage)
-"xpL" = (
-/obj/structure/machinery/camera/autoname/lz_camera,
-/obj/structure/machinery/landinglight/ds1/spoke{
- pixel_y = -5;
- pixel_x = -13
- },
-/turf/open/auto_turf/sand_white/layer1,
-/area/varadero/exterior/lz2_near)
"xpP" = (
/turf/closed/wall/r_wall,
/area/varadero/interior/comms1)
@@ -49964,8 +49960,7 @@ wMw
pbp
sHV
bZU
-bZU
-bZU
+rtm
bZU
bZU
bZU
@@ -49983,6 +49978,7 @@ bZU
bZU
bZU
bZU
+rtm
bZU
xsH
mrC
@@ -50148,7 +50144,7 @@ irk
bZU
bZU
bZU
-rtm
+bZU
bZU
bZU
bZU
@@ -50163,7 +50159,7 @@ bZU
bZU
bZU
qOh
-rtm
+bZU
bZU
bZU
bwP
@@ -51604,7 +51600,7 @@ irk
bZU
bZU
bZU
-rtm
+bZU
bZU
bZU
bZU
@@ -51619,7 +51615,7 @@ qOh
bZU
bZU
bZU
-rtm
+bZU
bZU
bZU
bwP
@@ -51784,8 +51780,7 @@ wMw
pbp
cYZ
bZU
-bZU
-bZU
+rtm
bZU
bZU
bZU
@@ -51803,6 +51798,7 @@ bZU
bZU
bZU
bZU
+rtm
bZU
miF
mrC
@@ -63426,7 +63422,7 @@ wlB
lTg
lTg
lTg
-lTg
+emP
pXT
lTg
lTg
@@ -63435,16 +63431,16 @@ wlB
wlB
lTg
lTg
-lTg
emP
lTg
+lTg
wlB
wlB
wlB
wlB
wlB
lTg
-pXT
+lIW
pXT
rhu
wlB
@@ -63610,7 +63606,7 @@ eia
lTg
lTg
lTg
-ade
+wlB
wlB
wlB
wlB
@@ -63625,7 +63621,7 @@ wlB
wlB
wlB
nFX
-ias
+pXT
lTg
wlB
lTg
@@ -65066,7 +65062,7 @@ lTg
lTg
lTg
lTg
-ade
+wlB
wlB
wlB
wlB
@@ -65081,7 +65077,7 @@ nFX
wlB
wlB
wlB
-xpL
+uHD
lTg
wlB
lTg
@@ -65246,7 +65242,7 @@ lTg
lTg
wlB
lTg
-lTg
+emP
uHD
lTg
lTg
@@ -65255,16 +65251,16 @@ wlB
wlB
lTg
lTg
-lTg
emP
lTg
+lTg
wlB
wlB
wlB
wlB
wlB
lTg
-uHD
+sbP
uHD
lTg
lTg
diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm
index d8e05518eb7e..87cd78ddbd45 100644
--- a/maps/map_files/USS_Almayer/USS_Almayer.dmm
+++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm
@@ -1058,12 +1058,6 @@
icon_state = "silver"
},
/area/almayer/hallways/repair_bay)
-"adm" = (
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/processing)
"ado" = (
/obj/structure/machinery/camera/autoname/almayer{
dir = 8;
@@ -2953,6 +2947,12 @@
/obj/structure/window/framed/almayer,
/turf/open/floor/plating,
/area/almayer/hull/upper_hull/u_a_s)
+"ake" = (
+/obj/effect/decal/cleanable/dirt,
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/hull/upper_hull/u_f_s)
"akf" = (
/obj/structure/pipes/standard/simple/hidden/supply,
/turf/open/floor/almayer{
@@ -7494,20 +7494,6 @@
icon_state = "silvercorner"
},
/area/almayer/command/cic)
-"ayt" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "CIC Lockdown";
- name = "\improper Combat Information Center Blast Door"
- },
-/obj/structure/machinery/door/airlock/almayer/command/reinforced{
- name = "\improper Combat Information Center"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/command/cic)
"ayu" = (
/obj/structure/pipes/standard/manifold/hidden/supply{
dir = 4
@@ -8086,27 +8072,6 @@
icon_state = "silvercorner"
},
/area/almayer/command/cic)
-"aAl" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/airlock/almayer/command/reinforced{
- id_tag = "cic_exterior";
- name = "\improper Combat Information Center"
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "CIC Lockdown";
- name = "\improper Combat Information Center Blast Door"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/command/cic)
"aAq" = (
/obj/structure/disposalpipe/segment{
dir = 4;
@@ -9028,6 +8993,16 @@
icon_state = "silver"
},
/area/almayer/command/cic)
+"aDM" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/pipes/standard/simple/hidden/supply,
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/lobby)
"aDO" = (
/turf/open/floor/almayer{
dir = 8;
@@ -10114,6 +10089,22 @@
icon_state = "redfull"
},
/area/almayer/engineering/upper_engineering)
+"aIW" = (
+/obj/structure/machinery/door/poddoor/shutters/almayer/open{
+ dir = 2;
+ id = "Warden Office Shutters";
+ name = "\improper Privacy Shutters"
+ },
+/obj/structure/pipes/standard/simple/hidden/supply,
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 1;
+ name = "\improper Warden's Office";
+ closeOtherId = "brigwarden"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"aIX" = (
/obj/effect/decal/warning_stripes{
icon_state = "E";
@@ -10495,6 +10486,10 @@
icon_state = "red"
},
/area/almayer/hallways/aft_hallway)
+"aKE" = (
+/obj/structure/machinery/light,
+/turf/open/floor/almayer,
+/area/almayer/living/numbertwobunks)
"aKF" = (
/obj/structure/machinery/status_display{
pixel_y = 30
@@ -11043,15 +11038,6 @@
},
/turf/open/floor/almayer,
/area/almayer/hallways/starboard_hallway)
-"aNo" = (
-/obj/structure/machinery/firealarm{
- pixel_y = 28
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"aNr" = (
/obj/effect/landmark/start/chef,
/turf/open/floor/plating/plating_catwalk,
@@ -11540,6 +11526,15 @@
icon_state = "test_floor4"
},
/area/almayer/hallways/starboard_umbilical)
+"aQb" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 5
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/cic_hallway)
"aQg" = (
/obj/structure/bed/chair/office/dark{
dir = 8;
@@ -12199,13 +12194,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/command/cichallway)
-"aTd" = (
-/obj/structure/closet/secure_closet/brig,
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/processing)
"aTf" = (
/obj/structure/platform{
dir = 8
@@ -12802,6 +12790,23 @@
icon_state = "orange"
},
/area/almayer/hallways/stern_hallway)
+"aWb" = (
+/obj/structure/machinery/computer/working_joe{
+ dir = 4;
+ pixel_x = -17
+ },
+/obj/structure/machinery/door_control/brbutton{
+ id = "engie_store";
+ name = "Emergency Storage";
+ pixel_x = -2;
+ pixel_y = 26;
+ req_one_access_txt = "6"
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "orangecorner"
+ },
+/area/almayer/engineering/ce_room)
"aWc" = (
/obj/structure/sign/safety/maint{
pixel_x = 8;
@@ -15217,6 +15222,21 @@
"bjg" = (
/turf/open/floor/almayer,
/area/almayer/engineering/lower_engineering)
+"bjk" = (
+/obj/structure/machinery/door_control{
+ id = "perma_lockdown_2";
+ name = "Maint Lockdown Shutters";
+ pixel_y = -20;
+ req_one_access_txt = "24;31"
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/sign/safety/bulkhead_door{
+ pixel_y = -34
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/perma)
"bjl" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 4
@@ -16204,9 +16224,6 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/operating_room_four)
-"bom" = (
-/turf/closed/wall/almayer/reinforced,
-/area/almayer/shipboard/brig/cic_hallway)
"boq" = (
/obj/structure/bed/chair/comfy/alpha,
/turf/open/floor/almayer{
@@ -16311,27 +16328,6 @@
icon_state = "plate"
},
/area/almayer/engineering/engineering_workshop)
-"boT" = (
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- name = "\improper Warden's Office"
- },
-/obj/structure/machinery/door/poddoor/shutters/almayer/open{
- dir = 4;
- id = "Warden Office Shutters";
- name = "\improper Privacy Shutters"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 8
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "courtyard_cells";
- name = "\improper Courtyard Lockdown Shutter"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"boU" = (
/obj/structure/platform{
dir = 4;
@@ -17640,16 +17636,6 @@
icon_state = "test_floor4"
},
/area/almayer/hallways/starboard_umbilical)
-"bvY" = (
-/obj/structure/machinery/power/apc/almayer{
- dir = 4
- },
-/obj/structure/sign/safety/rewire{
- pixel_x = 7;
- pixel_y = -30
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/cells)
"bwc" = (
/obj/structure/barricade/handrail{
dir = 8
@@ -17756,13 +17742,6 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/almayer,
/area/almayer/hallways/hangar)
-"bwE" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/cic_hallway)
"bwF" = (
/obj/structure/machinery/light/small{
dir = 1
@@ -18010,6 +17989,23 @@
icon_state = "plate"
},
/area/almayer/engineering/lower_engineering)
+"bxQ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 1
+ },
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 1;
+ name = "\improper Brig Prison Yard And Offices";
+ closeOtherId = "brigcells"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 2
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/processing)
"bxX" = (
/obj/structure/sign/safety/hvac_old{
pixel_x = 8;
@@ -21205,6 +21201,14 @@
icon_state = "green"
},
/area/almayer/squads/req)
+"bMn" = (
+/obj/structure/flora/pottedplant{
+ icon_state = "pottedplant_21"
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/living/numbertwobunks)
"bMq" = (
/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep,
/obj/structure/machinery/light{
@@ -22852,6 +22856,18 @@
icon_state = "plating"
},
/area/almayer/engineering/engine_core)
+"bTk" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 1
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
+ name = "\improper Brig Lobby";
+ closeOtherId = "brignorth"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/lobby)
"bTl" = (
/obj/structure/machinery/power/fusion_engine{
name = "\improper S-52 fusion reactor 4"
@@ -23450,6 +23466,18 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_f_p)
+"bVT" = (
+/obj/structure/sign/safety/maint{
+ pixel_x = -19;
+ pixel_y = -6
+ },
+/obj/effect/decal/cleanable/dirt,
+/obj/structure/sign/safety/bulkhead_door{
+ pixel_x = -19;
+ pixel_y = 6
+ },
+/turf/open/floor/almayer,
+/area/almayer/hull/upper_hull/u_f_s)
"bVU" = (
/turf/closed/wall/almayer/outer,
/area/almayer/shipboard/port_point_defense)
@@ -25427,6 +25455,27 @@
icon_state = "red"
},
/area/almayer/shipboard/port_missiles)
+"cfn" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
+ },
+/obj/structure/machinery/door/airlock/almayer/research/reinforced{
+ dir = 8;
+ name = "\improper Containment Airlock";
+ closeOtherId = "containment_s"
+ },
+/obj/structure/machinery/door/poddoor/almayer/biohazard/white{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/medical/containment)
"cfo" = (
/turf/open/floor/plating/plating_catwalk,
/area/almayer/squads/charlie)
@@ -25633,6 +25682,13 @@
icon_state = "silver"
},
/area/almayer/shipboard/brig/cic_hallway)
+"cgT" = (
+/obj/structure/disposalpipe/junction,
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 5
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/cic_hallway)
"chf" = (
/obj/structure/window/reinforced{
dir = 4;
@@ -25687,6 +25743,10 @@
icon_state = "red"
},
/area/almayer/hallways/aft_hallway)
+"chv" = (
+/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"chC" = (
/obj/structure/platform_decoration,
/turf/open/floor/plating/plating_catwalk,
@@ -26056,6 +26116,17 @@
icon_state = "red"
},
/area/almayer/hallways/port_hallway)
+"cjz" = (
+/obj/structure/bed/chair/bolted{
+ dir = 1
+ },
+/obj/structure/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/perma)
"cjA" = (
/obj/structure/machinery/disposal,
/obj/structure/disposalpipe/trunk{
@@ -26065,12 +26136,6 @@
icon_state = "plate"
},
/area/almayer/squads/charlie)
-"cjB" = (
-/obj/effect/decal/cleanable/dirt,
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/hull/upper_hull/u_f_s)
"cjC" = (
/obj/structure/machinery/vending/cola{
density = 0;
@@ -26284,16 +26349,6 @@
icon_state = "blue"
},
/area/almayer/squads/delta)
-"ckZ" = (
-/obj/effect/decal/warning_stripes{
- icon_state = "SE-out"
- },
-/obj/structure/sign/safety/bathunisex{
- pixel_x = 8;
- pixel_y = 25
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/cells)
"cla" = (
/obj/structure/disposalpipe/segment,
/obj/structure/pipes/standard/simple/hidden/supply{
@@ -26777,36 +26832,6 @@
icon_state = "test_floor4"
},
/area/almayer/hallways/port_umbilical)
-"cmI" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/airlock/almayer/security/reinforced{
- access_modified = 1;
- name = "\improper Astronavigational Deck";
- req_access = null;
- req_one_access_txt = "3;19"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/navigation)
-"cmJ" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/airlock/almayer/security/reinforced{
- access_modified = 1;
- name = "\improper Astronavigational Deck";
- req_access = null;
- req_one_access_txt = "3;19"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/navigation)
"cmK" = (
/obj/structure/window/reinforced,
/turf/open/floor/almayer{
@@ -26814,15 +26839,6 @@
icon_state = "silver"
},
/area/almayer/command/securestorage)
-"cmP" = (
-/obj/structure/machinery/power/apc/almayer{
- dir = 1
- },
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"cmX" = (
/obj/docking_port/stationary/escape_pod/west,
/turf/open/floor/plating,
@@ -27279,7 +27295,7 @@
/area/almayer/lifeboat_pumps/south1)
"crp" = (
/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/cameras/almayer_network{
+/obj/structure/machinery/computer/secure_data{
dir = 4
},
/turf/open/floor/almayer{
@@ -27402,6 +27418,18 @@
icon_state = "orange"
},
/area/almayer/hallways/stern_hallway)
+"ctT" = (
+/obj/structure/machinery/door/airlock/almayer/security/glass{
+ dir = 1;
+ name = "\improper Cryogenics Bay"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 1
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/cryo)
"cus" = (
/obj/docking_port/stationary/lifeboat_dock/starboard,
/turf/open/floor/almayer_hull{
@@ -27492,15 +27520,6 @@
},
/turf/open/floor/almayer,
/area/almayer/squads/req)
-"cwE" = (
-/obj/structure/machinery/door/airlock/almayer/generic{
- dir = 1;
- name = "Bathroom"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/main_office)
"cwJ" = (
/turf/open/floor/almayer{
dir = 10;
@@ -27632,11 +27651,13 @@
},
/area/almayer/medical/lower_medical_medbay)
"cAy" = (
-/turf/open/floor/almayer{
- dir = 10;
- icon_state = "red"
+/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun,
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 4;
+ name = "ship-grade camera"
},
-/area/almayer/shipboard/brig/processing)
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"cAF" = (
/obj/structure/disposalpipe/segment{
dir = 4;
@@ -27732,6 +27753,12 @@
icon_state = "cargo_arrow"
},
/area/almayer/squads/alpha)
+"cBw" = (
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 25
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/general_equipment)
"cBA" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -27773,10 +27800,40 @@
},
/area/almayer/hallways/starboard_hallway)
"cBZ" = (
-/obj/structure/bed/chair/comfy/orange{
- dir = 8
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/door_control{
+ id = "courtyard_cells";
+ name = "\improper Courtyard Lockdown Shutters";
+ pixel_x = 6;
+ req_access_txt = "3"
+ },
+/obj/structure/machinery/door_control{
+ id = "Brig Lockdown Shutters";
+ name = "Brig Lockdown Shutters";
+ pixel_x = -6;
+ req_access_txt = "3"
+ },
+/obj/structure/machinery/door_control{
+ id = "courtyard window";
+ name = "Courtyard Window Shutters";
+ pixel_x = -6;
+ pixel_y = 9;
+ req_access_txt = "3"
+ },
+/obj/structure/machinery/door_control{
+ id = "Cell Privacy Shutters";
+ name = "Cell Privacy Shutters";
+ pixel_x = 6;
+ pixel_y = 9;
+ req_access_txt = "3"
+ },
+/obj/structure/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
},
-/turf/open/floor/almayer,
/area/almayer/shipboard/brig/chief_mp_office)
"cCa" = (
/obj/structure/pipes/standard/simple/hidden/supply{
@@ -28494,6 +28551,13 @@
icon_state = "cargo"
},
/area/almayer/hull/lower_hull/l_f_s)
+"cQL" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ icon_state = "pipe-c"
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/lobby)
"cQN" = (
/obj/effect/decal/warning_stripes{
icon_state = "N";
@@ -28720,6 +28784,20 @@
icon_state = "green"
},
/area/almayer/living/offices)
+"cWs" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S"
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"cWt" = (
/turf/open/floor/almayer{
dir = 4;
@@ -28869,6 +28947,21 @@
},
/turf/open/floor/plating,
/area/almayer/command/cichallway)
+"cZj" = (
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 1;
+ name = "ship-grade camera"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"cZm" = (
/obj/structure/machinery/light{
dir = 1
@@ -29023,6 +29116,16 @@
icon_state = "green"
},
/area/almayer/living/grunt_rnr)
+"dco" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/computer/cameras/almayer_network{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"dcp" = (
/obj/structure/pipes/standard/simple/hidden/supply,
/turf/open/floor/plating/plating_catwalk,
@@ -29145,6 +29248,14 @@
icon_state = "plate"
},
/area/almayer/engineering/upper_engineering/starboard)
+"dfk" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/cells)
"dfC" = (
/obj/structure/machinery/light,
/turf/open/floor/almayer{
@@ -29193,6 +29304,17 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_f_p)
+"dgx" = (
+/obj/structure/flora/pottedplant{
+ icon_state = "pottedplant_18";
+ pixel_y = 13
+ },
+/obj/structure/surface/table/almayer,
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"dgN" = (
/obj/structure/surface/rack,
/obj/item/tool/shovel/etool{
@@ -29403,16 +29525,6 @@
icon_state = "red"
},
/area/almayer/living/briefing)
-"dkr" = (
-/obj/structure/disposalpipe/junction{
- dir = 4;
- icon_state = "pipe-j2"
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/processing)
"dkO" = (
/obj/effect/step_trigger/teleporter_vector{
name = "Almayer_Down2";
@@ -29838,24 +29950,6 @@
},
/turf/open/floor/almayer,
/area/almayer/living/chapel)
-"dum" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/airlock/almayer/command/reinforced{
- id_tag = "cic_exterior";
- name = "\improper Combat Information Center"
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "CIC Lockdown";
- name = "\improper Combat Information Center Blast Door"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/command/cic)
"duo" = (
/obj/structure/machinery/power/apc/almayer{
dir = 8
@@ -29969,12 +30063,6 @@
},
/turf/open/floor/almayer,
/area/almayer/engineering/engineering_workshop/hangar)
-"dvK" = (
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/processing)
"dwl" = (
/obj/structure/machinery/light,
/turf/open/floor/almayer,
@@ -30061,6 +30149,20 @@
icon_state = "cargo"
},
/area/almayer/engineering/engineering_workshop/hangar)
+"dya" = (
+/obj/structure/machinery/door/poddoor/almayer/locked{
+ dir = 2;
+ id = "Perma 2";
+ name = "\improper cell shutter"
+ },
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 2;
+ name = "\improper Isolation Cell"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/perma)
"dyb" = (
/obj/structure/machinery/smartfridge/chemistry,
/obj/item/device/radio/intercom{
@@ -30252,6 +30354,16 @@
},
/turf/open/floor/wood/ship,
/area/almayer/shipboard/brig/chief_mp_office)
+"dBS" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ layer = 2.5
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 10
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/execution)
"dCe" = (
/obj/structure/machinery/cryopod{
pixel_y = 6
@@ -30438,6 +30550,16 @@
icon_state = "greencorner"
},
/area/almayer/hallways/starboard_hallway)
+"dEG" = (
+/obj/structure/machinery/light{
+ unacidable = 1;
+ unslashable = 1
+ },
+/obj/structure/closet/secure_closet/brig,
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"dEJ" = (
/obj/structure/closet/firecloset,
/turf/open/floor/almayer{
@@ -30458,6 +30580,16 @@
/obj/structure/machinery/light,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_f_p)
+"dEX" = (
+/obj/structure/closet/secure_closet/guncabinet/riot_control,
+/obj/item/weapon/shield/riot,
+/obj/item/weapon/shield/riot,
+/obj/item/weapon/shield/riot,
+/obj/structure/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"dFk" = (
/turf/open/floor/almayer{
dir = 8;
@@ -31211,16 +31343,6 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/medical_science)
-"dVI" = (
-/obj/structure/disposalpipe/junction,
-/obj/structure/pipes/standard/manifold/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"dVO" = (
/obj/structure/surface/table/almayer,
/obj/structure/machinery/computer/emails{
@@ -31299,6 +31421,17 @@
icon_state = "plate"
},
/area/almayer/squads/req)
+"dXO" = (
+/obj/structure/sign/safety/maint{
+ pixel_x = -19;
+ pixel_y = -6
+ },
+/obj/structure/sign/safety/bulkhead_door{
+ pixel_x = -19;
+ pixel_y = 6
+ },
+/turf/open/floor/almayer,
+/area/almayer/hull/upper_hull/u_f_p)
"dXV" = (
/obj/structure/desertdam/decals/road_edge{
pixel_x = 16
@@ -31673,6 +31806,15 @@
icon_state = "plate"
},
/area/almayer/squads/alpha)
+"efT" = (
+/obj/structure/machinery/atm{
+ pixel_y = 32
+ },
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"efU" = (
/obj/structure/machinery/power/apc/almayer{
dir = 1
@@ -31769,19 +31911,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/starboard_hallway)
-"ehP" = (
-/obj/structure/surface/table/almayer,
-/obj/item/storage/box/flashbangs,
-/obj/item/storage/box/flashbangs{
- pixel_x = 5;
- pixel_y = 9
- },
-/obj/item/storage/box/flashbangs{
- pixel_x = -8;
- pixel_y = 5
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"ehR" = (
/obj/structure/window/reinforced{
dir = 4;
@@ -31897,19 +32026,6 @@
icon_state = "cargo"
},
/area/almayer/hallways/aft_hallway)
-"ejs" = (
-/obj/structure/machinery/cryopod/right{
- layer = 3.1;
- pixel_y = 13
- },
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 8;
- name = "ship-grade camera"
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/cryo)
"ejt" = (
/turf/open/floor/almayer/uscm/directional{
dir = 4
@@ -31949,6 +32065,15 @@
"eky" = (
/turf/open/floor/almayer,
/area/almayer/command/lifeboat)
+"ekF" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"ekO" = (
/obj/structure/machinery/cryopod{
pixel_y = 6
@@ -32550,12 +32675,6 @@
icon_state = "test_floor4"
},
/area/almayer/hull/lower_hull/l_f_s)
-"exf" = (
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/main_office)
"exi" = (
/obj/structure/pipes/standard/manifold/hidden/supply,
/turf/open/floor/almayer,
@@ -32650,15 +32769,6 @@
/obj/structure/bed/chair/wood/normal,
/turf/open/floor/wood/ship,
/area/almayer/shipboard/brig/cells)
-"eAf" = (
-/obj/structure/sign/safety/cryo{
- pixel_x = -16
- },
-/obj/structure/machinery/cryopod,
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/cryo)
"eAg" = (
/obj/structure/flora/pottedplant{
desc = "It is made of Fiberbush(tm). It contains asbestos.";
@@ -32732,33 +32842,6 @@
/obj/structure/pipes/standard/manifold/hidden/supply,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/lifeboat_pumps/south1)
-"eBf" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 2
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "NW-out";
- pixel_x = -2;
- pixel_y = 1
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "NE-out";
- pixel_x = 2;
- pixel_y = 1
- },
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 2;
- name = "\improper Armory"
- },
-/obj/structure/machinery/door/poddoor/shutters/almayer{
- dir = 2;
- id = "firearm_storage_armory";
- name = "\improper Armory Shutters"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/armory)
"eBg" = (
/obj/structure/pipes/standard/simple/hidden/supply,
/turf/open/floor/almayer,
@@ -32834,6 +32917,25 @@
icon_state = "red"
},
/area/almayer/lifeboat_pumps/south2)
+"eCG" = (
+/obj/structure/flora/pottedplant{
+ icon_state = "pottedplant_10"
+ },
+/obj/structure/closet/secure_closet/cmdcabinet{
+ desc = "A bulletproof cabinet containing communications equipment.";
+ name = "communications cabinet";
+ pixel_y = 24;
+ req_access = null;
+ req_one_access_txt = "207;203"
+ },
+/obj/item/device/radio,
+/obj/item/device/radio/listening_bug/radio_linked/wy,
+/obj/item/device/radio/listening_bug/radio_linked/wy{
+ pixel_x = 4;
+ pixel_y = -3
+ },
+/turf/open/floor/wood/ship,
+/area/almayer/command/corporateliason)
"eCI" = (
/obj/structure/window/reinforced/ultra{
pixel_y = -12
@@ -32930,6 +33032,25 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/cic_hallway)
+"eFc" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/airlock/almayer/command/reinforced{
+ id_tag = "cic_exterior";
+ name = "\improper Combat Information Center";
+ closeOtherId = "ciclobby_s"
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "CIC Lockdown";
+ name = "\improper Combat Information Center Blast Door"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/command/cic)
"eFj" = (
/obj/structure/disposalpipe/segment,
/obj/structure/pipes/standard/manifold/hidden/supply{
@@ -33620,6 +33741,28 @@
},
/turf/open/floor/almayer,
/area/almayer/living/chapel)
+"eVR" = (
+/obj/structure/filingcabinet{
+ density = 0;
+ pixel_x = -8;
+ pixel_y = 18
+ },
+/obj/structure/filingcabinet{
+ density = 0;
+ pixel_x = 8;
+ pixel_y = 18
+ },
+/obj/structure/machinery/power/apc/almayer{
+ dir = 8
+ },
+/obj/structure/sign/safety/rewire{
+ pixel_x = -17;
+ pixel_y = 17
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/evidence_storage)
"eVT" = (
/obj/structure/disposalpipe/trunk{
dir = 1
@@ -33793,28 +33936,6 @@
/obj/structure/filingcabinet/security,
/turf/open/floor/wood/ship,
/area/almayer/command/corporateliason)
-"eZe" = (
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- name = "\improper Brig Prisoner Yard"
- },
-/obj/structure/disposalpipe/segment{
- dir = 8
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 8
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "courtyard_cells";
- name = "\improper Courtyard Lockdown Shutter"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/processing)
"eZi" = (
/obj/effect/projector{
name = "Almayer_Up4";
@@ -33865,6 +33986,13 @@
icon_state = "green"
},
/area/almayer/hallways/aft_hallway)
+"fag" = (
+/obj/effect/decal/cleanable/blood,
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/execution)
"fau" = (
/obj/structure/pipes/standard/manifold/hidden/supply,
/obj/structure/disposalpipe/junction{
@@ -34022,22 +34150,6 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/starboard)
-"fcW" = (
-/obj/structure/disposalpipe/segment,
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 1
- },
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 1;
- name = "\improper Brig Prison Yard And Offices"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 2
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/processing)
"fcX" = (
/obj/effect/step_trigger/clone_cleaner,
/obj/structure/machinery/light{
@@ -34144,18 +34256,6 @@
icon_state = "plating"
},
/area/almayer/command/airoom)
-"fgd" = (
-/obj/structure/surface/table/almayer,
-/obj/effect/landmark/map_item,
-/obj/item/folder/red,
-/obj/structure/transmitter/rotary{
- name = "Brig CMP's Office Telephone";
- phone_category = "MP Dept.";
- phone_id = "Brig CMP's Office";
- pixel_x = 15
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/chief_mp_office)
"fgh" = (
/obj/structure/machinery/light/small{
dir = 8
@@ -34263,15 +34363,6 @@
icon_state = "mono"
},
/area/almayer/engineering/upper_engineering/starboard)
-"fhY" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"fiq" = (
/turf/closed/wall/almayer,
/area/almayer/hull/lower_hull/l_m_p)
@@ -34603,6 +34694,17 @@
icon_state = "tcomms"
},
/area/almayer/command/airoom)
+"frX" = (
+/obj/structure/machinery/optable,
+/obj/structure/sign/safety/medical{
+ pixel_x = 8;
+ pixel_y = 29
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "sterile_green_corner"
+ },
+/area/almayer/shipboard/brig/surgery)
"frY" = (
/obj/structure/closet/secure_closet/guncabinet,
/obj/item/weapon/gun/rifle/l42a{
@@ -34772,6 +34874,10 @@
icon_state = "test_floor4"
},
/area/almayer/hull/upper_hull/u_f_p)
+"fvA" = (
+/obj/structure/closet/secure_closet/brig,
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/perma)
"fvB" = (
/obj/structure/closet/secure_closet/staff_officer/armory/m4a1,
/turf/open/floor/almayer{
@@ -34862,6 +34968,13 @@
icon_state = "plating"
},
/area/almayer/engineering/upper_engineering)
+"fxJ" = (
+/obj/structure/closet/secure_closet/guncabinet/riot_control,
+/obj/item/weapon/shield/riot,
+/obj/item/weapon/shield/riot,
+/obj/item/weapon/shield/riot,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"fxO" = (
/obj/structure/machinery/vending/coffee{
density = 0;
@@ -34901,6 +35014,15 @@
icon_state = "plate"
},
/area/almayer/shipboard/weapon_room)
+"fyp" = (
+/obj/structure/machinery/cryopod{
+ layer = 3.1;
+ pixel_y = 13
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/cryo)
"fyD" = (
/obj/structure/machinery/light,
/obj/structure/ladder{
@@ -34966,12 +35088,22 @@
/obj/structure/machinery/light,
/turf/open/floor/wood/ship,
/area/almayer/command/corporateliason)
+"fAr" = (
+/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"fAt" = (
/obj/structure/largecrate/guns/merc{
name = "\improper dodgy crate"
},
/turf/open/floor/plating,
/area/almayer/hull/lower_hull/l_f_p)
+"fAE" = (
+/obj/structure/closet/firecloset/full,
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/main_office)
"fAN" = (
/obj/structure/machinery/disposal,
/obj/structure/disposalpipe/trunk{
@@ -35134,36 +35266,6 @@
icon_state = "plate"
},
/area/almayer/medical/morgue)
-"fEH" = (
-/obj/item/bedsheet/brown{
- pixel_y = 13
- },
-/obj/structure/window/reinforced{
- dir = 8;
- layer = 3.3;
- pixel_y = 4
- },
-/obj/structure/window/reinforced{
- dir = 4;
- pixel_x = -2;
- pixel_y = 4
- },
-/obj/structure/bed{
- can_buckle = 0
- },
-/obj/structure/bed{
- buckling_y = 13;
- layer = 3.5;
- pixel_y = 13
- },
-/obj/item/bedsheet/brown{
- layer = 3.1
- },
-/turf/open/floor/almayer{
- dir = 9;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"fEN" = (
/obj/structure/machinery/camera/autoname/almayer/containment/ares{
dir = 4
@@ -35348,24 +35450,6 @@
},
/turf/open/floor/plating,
/area/almayer/hull/lower_hull/l_f_p)
-"fIu" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
- dir = 2;
- name = "\improper Brig Armoury";
- req_access = null;
- req_one_access_txt = "1;3"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/main_office)
"fIx" = (
/turf/open/floor/almayer{
dir = 1;
@@ -35449,10 +35533,6 @@
icon_state = "green"
},
/area/almayer/shipboard/brig/cells)
-"fJV" = (
-/obj/structure/pipes/vents/pump,
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/general_equipment)
"fJX" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -35682,17 +35762,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/hangar)
-"fNn" = (
-/obj/structure/machinery/door/airlock/almayer/maint/reinforced,
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "Brig Lockdown Shutters";
- name = "\improper Brig Lockdown Shutter"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/hull/upper_hull/u_f_s)
"fNC" = (
/obj/structure/pipes/standard/manifold/hidden/supply,
/obj/structure/disposalpipe/junction{
@@ -35849,15 +35918,6 @@
},
/turf/open/floor/almayer,
/area/almayer/command/lifeboat)
-"fRM" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 1
- },
-/obj/structure/disposalpipe/junction{
- dir = 1
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/processing)
"fRN" = (
/obj/structure/sign/safety/restrictedarea{
pixel_x = 8;
@@ -35897,17 +35957,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/starboard_hallway)
-"fTb" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/faxmachine/uscm/brig,
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 1;
- name = "ship-grade camera"
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/perma)
"fTi" = (
/obj/structure/largecrate/supply/floodlights,
/turf/open/floor/almayer{
@@ -36197,6 +36246,15 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_a_p)
+"gax" = (
+/obj/structure/machinery/status_display{
+ pixel_y = 30
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"gaJ" = (
/turf/closed/wall/almayer,
/area/almayer/shipboard/brig/cryo)
@@ -36571,6 +36629,19 @@
icon_state = "blue"
},
/area/almayer/hallways/aft_hallway)
+"giR" = (
+/obj/structure/machinery/status_display{
+ pixel_y = -30
+ },
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/computer/emails{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ dir = 10;
+ icon_state = "silver"
+ },
+/area/almayer/shipboard/brig/cic_hallway)
"gjm" = (
/obj/effect/decal/warning_stripes{
icon_state = "N";
@@ -36756,24 +36827,6 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/port)
-"gmz" = (
-/obj/structure/machinery/light{
- dir = 4
- },
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/sentencing{
- dir = 8;
- pixel_y = 6
- },
-/obj/structure/sign/safety/terminal{
- pixel_x = 32;
- pixel_y = -22
- },
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/perma)
"gnu" = (
/obj/structure/surface/table/almayer,
/obj/item/facepaint/green,
@@ -37122,20 +37175,13 @@
},
/area/almayer/hull/upper_hull/u_f_p)
"gwj" = (
-/obj/structure/machinery/door/poddoor/shutters/almayer/open{
- dir = 2;
- id = "Warden Office Shutters";
- name = "\improper Privacy Shutters"
- },
-/obj/structure/pipes/standard/simple/hidden/supply,
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 1;
- name = "\improper Warden's Office"
+/obj/structure/pipes/standard/manifold/hidden/supply{
+ dir = 8
},
/turf/open/floor/almayer{
- icon_state = "test_floor4"
+ icon_state = "red"
},
-/area/almayer/shipboard/brig/chief_mp_office)
+/area/almayer/shipboard/brig/processing)
"gwm" = (
/obj/structure/largecrate/random/case/small,
/obj/item/device/taperecorder{
@@ -37289,6 +37335,14 @@
dir = 8
},
/area/almayer/medical/containment/cell)
+"gxU" = (
+/obj/structure/surface/table/almayer,
+/obj/item/toy/deck,
+/turf/open/floor/almayer{
+ dir = 10;
+ icon_state = "silver"
+ },
+/area/almayer/shipboard/brig/cic_hallway)
"gyt" = (
/obj/item/storage/firstaid/regular,
/obj/structure/surface/rack,
@@ -37565,6 +37619,22 @@
icon_state = "plate"
},
/area/almayer/living/bridgebunks)
+"gDt" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/computer/crew/alt{
+ dir = 4
+ },
+/obj/structure/transmitter/rotary/no_dnd{
+ name = "Brig Cells Telephone";
+ phone_category = "MP Dept.";
+ phone_id = "Brig Cells";
+ pixel_x = 16
+ },
+/turf/open/floor/almayer{
+ dir = 10;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"gDP" = (
/obj/structure/closet/crate,
/obj/item/ammo_box/magazine/l42a,
@@ -37796,6 +37866,24 @@
/obj/structure/largecrate/random/barrel/red,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_a_s)
+"gIU" = (
+/obj/structure/surface/table/almayer,
+/obj/item/storage/box/tapes{
+ pixel_x = 7;
+ pixel_y = 6
+ },
+/obj/item/storage/box/tapes{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/storage/box/tapes{
+ pixel_x = 1;
+ pixel_y = 1
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/evidence_storage)
"gJd" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -38024,23 +38112,6 @@
icon_state = "cargo"
},
/area/almayer/engineering/engine_core)
-"gNl" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/recharger,
-/obj/structure/sign/safety/terminal{
- pixel_y = 32
- },
-/obj/structure/transmitter/rotary{
- name = "Brig Wardens's Office Telephone";
- phone_category = "MP Dept.";
- phone_id = "Brig Warden's Office";
- pixel_x = 15
- },
-/turf/open/floor/almayer{
- dir = 9;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"gNp" = (
/turf/open/floor/almayer{
dir = 9;
@@ -38093,18 +38164,6 @@
icon_state = "silver"
},
/area/almayer/command/airoom)
-"gOH" = (
-/obj/structure/machinery/door/airlock/almayer/security/glass{
- dir = 1;
- name = "\improper Cryogenics Bay"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 1
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/cryo)
"gPc" = (
/obj/structure/machinery/power/terminal{
dir = 1
@@ -38138,13 +38197,6 @@
icon_state = "orange"
},
/area/almayer/hallways/stern_hallway)
-"gQh" = (
-/obj/structure/pipes/vents/scrubber,
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"gQl" = (
/obj/structure/surface/table/almayer,
/obj/item/reagent_container/glass/bucket{
@@ -38376,15 +38428,6 @@
},
/turf/open/floor/plating,
/area/almayer/medical/upper_medical)
-"gWO" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 10
- },
-/obj/structure/machinery/light/small{
- dir = 1
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/chief_mp_office)
"gWR" = (
/obj/structure/largecrate/random/barrel/red,
/obj/structure/sign/safety/fire_haz{
@@ -38445,6 +38488,15 @@
icon_state = "plating"
},
/area/almayer/hull/lower_hull/l_a_p)
+"gXx" = (
+/obj/structure/bed/chair{
+ dir = 8
+ },
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "silvercorner"
+ },
+/area/almayer/shipboard/brig/cic_hallway)
"gXB" = (
/obj/structure/pipes/vents/pump,
/obj/structure/bed/chair/comfy/delta{
@@ -38840,6 +38892,27 @@
icon_state = "plate"
},
/area/almayer/engineering/engine_core)
+"heo" = (
+/obj/structure/machinery/power/apc/almayer{
+ cell_type = /obj/item/cell/hyper;
+ dir = 1
+ },
+/obj/structure/sign/safety/rewire{
+ pixel_x = -15;
+ pixel_y = 25
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -2
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/armory)
"heK" = (
/obj/structure/machinery/door/airlock/almayer/maint{
dir = 1;
@@ -39093,6 +39166,15 @@
icon_state = "test_floor4"
},
/area/almayer/living/grunt_rnr)
+"hjM" = (
+/obj/structure/bed/chair/bolted{
+ dir = 8
+ },
+/turf/open/floor/almayer{
+ dir = 4;
+ icon_state = "redcorner"
+ },
+/area/almayer/shipboard/brig/processing)
"hki" = (
/obj/structure/machinery/cm_vending/sorted/tech/electronics_storage,
/turf/open/floor/almayer{
@@ -39143,6 +39225,26 @@
icon_state = "silver"
},
/area/almayer/command/cic)
+"hkH" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/recharger,
+/obj/structure/machinery/door_control{
+ id = "courtyard_cells";
+ name = "\improper Courtyard Lockdown Shutters";
+ pixel_x = 16;
+ req_access_txt = "3"
+ },
+/obj/structure/machinery/door_control{
+ id = "Brig Lockdown Shutters";
+ name = "Brig Lockdown Shutters";
+ pixel_x = 16;
+ pixel_y = 8;
+ req_access_txt = "3"
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"hkX" = (
/obj/structure/surface/table/woodentable/fancy,
/obj/item/device/flashlight/lamp/green{
@@ -39181,13 +39283,6 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_a_p)
-"hlO" = (
-/obj/structure/disposalpipe/segment{
- dir = 4;
- icon_state = "pipe-c"
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/lobby)
"hlU" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 4
@@ -39270,6 +39365,20 @@
icon_state = "cargo_arrow"
},
/area/almayer/squads/alpha_bravo_shared)
+"hmG" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/airlock/almayer/security/glass{
+ name = "\improper Brig Breakroom"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ layer = 1.9
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/main_office)
"hmS" = (
/obj/structure/pipes/vents/pump,
/turf/open/floor/almayer{
@@ -39516,14 +39625,6 @@
icon_state = "test_floor4"
},
/area/almayer/engineering/upper_engineering/starboard)
-"htj" = (
-/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun,
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 4;
- name = "ship-grade camera"
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"htG" = (
/obj/item/tool/soap,
/obj/structure/machinery/light/small{
@@ -39630,13 +39731,6 @@
/obj/effect/landmark/start/professor,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/living/offices)
-"hwo" = (
-/obj/structure/pipes/vents/pump,
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"hwC" = (
/obj/structure/flora/pottedplant{
icon_state = "pottedplant_22";
@@ -39784,43 +39878,6 @@
icon_state = "cargo"
},
/area/almayer/squads/delta)
-"hzI" = (
-/obj/structure/machinery/light{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 9
- },
-/obj/structure/surface/table/almayer,
-/obj/item/book/manual/marine_law{
- pixel_x = -3;
- pixel_y = 1
- },
-/obj/item/device/flashlight/lamp{
- layer = 3.1;
- pixel_x = 7;
- pixel_y = 10
- },
-/obj/item/poster,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/lobby)
-"hzL" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "CIC Lockdown";
- name = "\improper Combat Information Center Blast Door"
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/airlock/almayer/command/reinforced{
- name = "\improper Combat Information Center"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/command/cic)
"hzM" = (
/obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/almayer{
@@ -39927,12 +39984,6 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_a_p)
-"hCi" = (
-/obj/structure/largecrate/random/barrel/white,
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/hull/upper_hull/u_f_s)
"hCo" = (
/obj/structure/surface/table/almayer,
/obj/structure/flora/pottedplant{
@@ -40105,20 +40156,6 @@
icon_state = "test_floor4"
},
/area/almayer/medical/morgue)
-"hFR" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/airlock/almayer/security/glass{
- name = "\improper Brig Breakroom"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- layer = 1.9
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/main_office)
"hFW" = (
/obj/structure/largecrate/random/barrel/red,
/turf/open/floor/plating/plating_catwalk,
@@ -40224,19 +40261,6 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_a_p)
-"hHW" = (
-/obj/structure/machinery/status_display{
- pixel_y = -30
- },
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/emails{
- dir = 4
- },
-/turf/open/floor/almayer{
- dir = 10;
- icon_state = "silver"
- },
-/area/almayer/shipboard/brig/cic_hallway)
"hII" = (
/obj/structure/machinery/cm_vending/gear/tl{
density = 0;
@@ -40418,6 +40442,12 @@
icon_state = "test_floor4"
},
/area/almayer/living/briefing)
+"hMc" = (
+/obj/structure/bed/chair/comfy/orange{
+ dir = 8
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/chief_mp_office)
"hMi" = (
/obj/structure/pipes/vents/scrubber,
/turf/open/floor/almayer,
@@ -40445,6 +40475,17 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/operating_room_three)
+"hNl" = (
+/obj/structure/flora/pottedplant{
+ icon_state = "pottedplant_21";
+ pixel_y = 16
+ },
+/obj/structure/surface/table/almayer,
+/turf/open/floor/almayer{
+ dir = 9;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"hNw" = (
/obj/structure/machinery/door/firedoor/border_only/almayer{
dir = 2
@@ -40840,39 +40881,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/cic_hallway)
-"hVa" = (
-/obj/structure/sign/safety/rewire{
- pixel_y = 32
- },
-/obj/item/bedsheet/brown{
- layer = 3.1
- },
-/obj/structure/window/reinforced{
- dir = 4;
- pixel_x = -2;
- pixel_y = 4
- },
-/obj/structure/bed{
- can_buckle = 0
- },
-/obj/structure/window/reinforced{
- dir = 8;
- layer = 3.3;
- pixel_y = 4
- },
-/obj/structure/bed{
- buckling_y = 13;
- layer = 3.5;
- pixel_y = 13
- },
-/obj/item/bedsheet/brown{
- pixel_y = 13
- },
-/turf/open/floor/almayer{
- dir = 5;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"hVf" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 10
@@ -41116,6 +41124,18 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/lower_medical_medbay)
+"hZU" = (
+/obj/structure/transmitter{
+ name = "Brig Offices Telephone";
+ phone_category = "MP Dept.";
+ phone_id = "Brig Main Offices";
+ pixel_y = 32
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"iaa" = (
/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap,
/turf/open/floor/almayer{
@@ -41189,13 +41209,6 @@
icon_state = "red"
},
/area/almayer/command/lifeboat)
-"iaT" = (
-/obj/structure/closet/secure_closet/guncabinet/riot_control,
-/obj/item/weapon/shield/riot,
-/obj/item/weapon/shield/riot,
-/obj/item/weapon/shield/riot,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"ibc" = (
/obj/structure/machinery/conveyor_switch{
id = "req_belt"
@@ -41231,6 +41244,13 @@
},
/turf/open/floor/almayer,
/area/almayer/shipboard/brig/cells)
+"icZ" = (
+/obj/structure/closet/secure_closet/brig,
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "redcorner"
+ },
+/area/almayer/shipboard/brig/processing)
"idx" = (
/obj/structure/disposalpipe/segment{
dir = 1;
@@ -41489,17 +41509,6 @@
icon_state = "plate"
},
/area/almayer/command/corporateliason)
-"iiB" = (
-/obj/structure/flora/pottedplant{
- icon_state = "pottedplant_21";
- pixel_y = 16
- },
-/obj/structure/surface/table/almayer,
-/turf/open/floor/almayer{
- dir = 9;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"iiC" = (
/obj/structure/sign/safety/maint{
pixel_x = 8;
@@ -41621,32 +41630,6 @@
},
/turf/open/floor/wood/ship,
/area/almayer/living/commandbunks)
-"ilc" = (
-/obj/structure/surface/table/almayer,
-/obj/item/storage/box/ids{
- pixel_x = -6;
- pixel_y = 8
- },
-/obj/item/device/flash,
-/obj/structure/machinery/light{
- dir = 8;
- invisibility = 101
- },
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
-"ilr" = (
-/obj/structure/disposalpipe/segment{
- dir = 1;
- icon_state = "pipe-c"
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 5
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/cic_hallway)
"ils" = (
/obj/structure/window/framed/almayer/hull,
/turf/open/floor/plating,
@@ -41899,6 +41882,15 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/port)
+"iqR" = (
+/obj/structure/sign/safety/cryo{
+ pixel_x = -16
+ },
+/obj/structure/machinery/cryopod,
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/cryo)
"irn" = (
/obj/structure/largecrate/random/case/double,
/turf/open/floor/plating/plating_catwalk,
@@ -41916,6 +41908,12 @@
icon_state = "red"
},
/area/almayer/lifeboat_pumps/south2)
+"irF" = (
+/obj/structure/closet/emcloset/legacy,
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/main_office)
"irS" = (
/obj/effect/decal/cleanable/blood/oil,
/obj/structure/cable/heavyduty{
@@ -42014,6 +42012,28 @@
icon_state = "silver"
},
/area/almayer/command/airoom)
+"itj" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/airlock/almayer/command/reinforced{
+ id_tag = "cic_exterior";
+ name = "\improper Combat Information Center";
+ closeOtherId = "ciclobby_n"
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "CIC Lockdown";
+ name = "\improper Combat Information Center Blast Door"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/command/cic)
"itR" = (
/obj/structure/pipes/standard/manifold/hidden/supply{
dir = 1
@@ -42367,6 +42387,16 @@
icon_state = "blue"
},
/area/almayer/hallways/port_hallway)
+"iBl" = (
+/obj/structure/machinery/power/apc/almayer{
+ dir = 4
+ },
+/obj/structure/sign/safety/rewire{
+ pixel_x = 7;
+ pixel_y = -30
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/cells)
"iBt" = (
/turf/open/floor/plating,
/area/almayer/hull/upper_hull/u_m_p)
@@ -42459,12 +42489,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/lower_hull/l_a_s)
-"iDw" = (
-/obj/structure/pipes/vents/pump,
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"iDN" = (
/obj/structure/pipes/standard/manifold/hidden/supply{
dir = 1
@@ -42528,16 +42552,10 @@
},
/turf/open/floor/wood/ship,
/area/almayer/living/commandbunks)
-"iEI" = (
-/obj/structure/sign/safety/medical{
- pixel_x = 16;
- pixel_y = 27
- },
-/turf/open/floor/almayer{
- dir = 9;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
+"iFc" = (
+/obj/structure/pipes/vents/pump,
+/turf/open/floor/wood/ship,
+/area/almayer/shipboard/brig/cells)
"iFm" = (
/obj/structure/machinery/light{
dir = 1
@@ -42829,6 +42847,27 @@
icon_state = "orangefull"
},
/area/almayer/living/briefing)
+"iLl" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 1
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ id = "Brig Lockdown Shutters";
+ name = "\improper Brig Lockdown Shutter"
+ },
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 1;
+ name = "\improper Brig Maintenance";
+ closeOtherId = "brigmaint_s"
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ id = "perma_lockdown_2";
+ name = "\improper Perma Lockdown Shutter"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/perma)
"iLo" = (
/obj/structure/machinery/light{
unacidable = 1;
@@ -43032,6 +43071,25 @@
},
/turf/open/floor/plating,
/area/almayer/hull/lower_hull/l_f_p)
+"iQB" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/computer/card{
+ dir = 4;
+ layer = 3.2;
+ pixel_y = 4
+ },
+/obj/structure/machinery/computer/secure_data{
+ dir = 4;
+ pixel_y = 23
+ },
+/obj/structure/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"iRr" = (
/obj/structure/machinery/light{
dir = 1
@@ -43117,15 +43175,6 @@
icon_state = "dark_sterile"
},
/area/almayer/living/port_emb)
-"iSw" = (
-/obj/structure/bed/chair/bolted{
- dir = 8
- },
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/processing)
"iSZ" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -43169,6 +43218,12 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_a_p)
+"iTl" = (
+/turf/open/floor/almayer{
+ dir = 10;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"iTw" = (
/obj/structure/bed/chair/comfy{
dir = 4
@@ -43871,6 +43926,18 @@
icon_state = "orange"
},
/area/almayer/engineering/engine_core)
+"jfY" = (
+/obj/structure/surface/table/almayer,
+/obj/effect/landmark/map_item,
+/obj/item/folder/red,
+/obj/structure/transmitter/rotary{
+ name = "Brig CMP's Office Telephone";
+ phone_category = "MP Dept.";
+ phone_id = "Brig CMP's Office";
+ pixel_x = 15
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/chief_mp_office)
"jfZ" = (
/obj/structure/target{
name = "punching bag"
@@ -44618,23 +44685,6 @@
icon_state = "plate"
},
/area/almayer/medical/lower_medical_medbay)
-"jvl" = (
-/obj/structure/machinery/cryopod/right,
-/obj/structure/sign/safety/cryo{
- pixel_x = 3;
- pixel_y = 25
- },
-/obj/structure/sign/safety/rewire{
- pixel_x = 15;
- pixel_y = 25
- },
-/obj/structure/machinery/light{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/cryo)
"jvp" = (
/obj/structure/disposalpipe/segment,
/obj/structure/pipes/standard/simple/hidden/supply{
@@ -44672,6 +44722,14 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_a_p)
+"jvP" = (
+/obj/structure/machinery/power/apc/almayer{
+ dir = 1
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/cryo)
"jvX" = (
/obj/effect/decal/warning_stripes{
icon_state = "S"
@@ -44769,16 +44827,6 @@
icon_state = "cargo"
},
/area/almayer/hallways/hangar)
-"jzs" = (
-/obj/structure/machinery/light{
- unacidable = 1;
- unslashable = 1
- },
-/obj/structure/closet/secure_closet/brig,
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"jzD" = (
/obj/structure/machinery/door/poddoor/almayer/locked{
icon_state = "almayer_pdoor";
@@ -44997,12 +45045,6 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/lower_medical_medbay)
-"jGG" = (
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/lobby)
"jGI" = (
/obj/structure/surface/table/reinforced/almayer_B,
/obj/item/reagent_container/food/drinks/cans/waterbottle,
@@ -45211,16 +45253,6 @@
icon_state = "cargo_arrow"
},
/area/almayer/squads/charlie)
-"jLo" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 1
- },
-/obj/structure/disposalpipe/segment,
-/obj/structure/pipes/standard/simple/hidden/supply,
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/lobby)
"jLs" = (
/obj/structure/machinery/vending/cola,
/turf/open/floor/prison{
@@ -45504,34 +45536,18 @@
icon_state = "plate"
},
/area/almayer/engineering/upper_engineering/starboard)
+"jPP" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/processing)
"jPS" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 1
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/chief_mp_office)
-"jPT" = (
-/obj/structure/disposalpipe/segment{
- dir = 8;
- icon_state = "pipe-c"
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/lobby)
-"jPZ" = (
-/obj/structure/surface/table/almayer,
-/obj/item/storage/fancy/cigarettes/lucky_strikes,
-/obj/item/tool/lighter,
-/obj/item/clothing/glasses/sunglasses/blindfold,
-/obj/structure/machinery/light/small{
- dir = 8
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/execution)
"jQt" = (
/turf/open/floor/almayer/research/containment/floor2{
dir = 8
@@ -45697,10 +45713,6 @@
icon_state = "plate"
},
/area/almayer/living/bridgebunks)
-"jUc" = (
-/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"jUn" = (
/obj/structure/surface/table/reinforced/almayer_B,
/obj/structure/machinery/door/window/southleft{
@@ -45819,6 +45831,13 @@
icon_state = "test_floor5"
},
/area/almayer/command/computerlab)
+"jVP" = (
+/obj/structure/machinery/light{
+ unacidable = 1;
+ unslashable = 1
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/execution)
"jWh" = (
/turf/closed/wall/almayer,
/area/almayer/engineering/upper_engineering/port)
@@ -46006,13 +46025,6 @@
icon_state = "emerald"
},
/area/almayer/squads/charlie)
-"jZM" = (
-/obj/structure/machinery/light{
- unacidable = 1;
- unslashable = 1
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/execution)
"jZO" = (
/obj/structure/largecrate/random/barrel/blue,
/turf/open/floor/almayer{
@@ -46251,15 +46263,6 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/starboard)
-"kdz" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 5
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/cic_hallway)
"kdB" = (
/obj/structure/disposalpipe/segment,
/obj/structure/pipes/standard/simple/hidden/supply,
@@ -46364,19 +46367,6 @@
/obj/structure/machinery/door/poddoor/almayer/biohazard/white,
/turf/open/floor/plating,
/area/almayer/medical/medical_science)
-"kgG" = (
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 1;
- name = "\improper Brig Maintenance"
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- id = "Brig Lockdown Shutters";
- name = "\improper Brig Lockdown Shutter"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/hull/upper_hull/u_f_p)
"kgQ" = (
/obj/structure/surface/rack,
/obj/item/storage/firstaid/adv{
@@ -46431,6 +46421,12 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_f_s)
+"kif" = (
+/obj/structure/largecrate/random/barrel/white,
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/hull/upper_hull/u_f_s)
"kij" = (
/obj/structure/sign/safety/distribution_pipes{
pixel_x = -17
@@ -46501,6 +46497,15 @@
icon_state = "plate"
},
/area/almayer/living/briefing)
+"kjk" = (
+/obj/structure/machinery/cryopod/right,
+/obj/structure/sign/safety/cryo{
+ pixel_x = 32
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/cryo)
"kkt" = (
/obj/structure/surface/table/almayer,
/obj/item/book/manual/marine_law,
@@ -46714,12 +46719,6 @@
/obj/structure/reagent_dispensers/watertank,
/turf/open/floor/plating,
/area/almayer/command/airoom)
-"kpm" = (
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/main_office)
"kpo" = (
/obj/structure/machinery/floodlight/landing{
name = "bolted floodlight"
@@ -46867,6 +46866,15 @@
icon_state = "plate"
},
/area/almayer/living/gym)
+"kry" = (
+/obj/structure/machinery/flasher{
+ id = "Perma 1";
+ pixel_y = 24
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/perma)
"krN" = (
/obj/structure/machinery/conveyor{
id = "req_belt"
@@ -46993,6 +47001,17 @@
icon_state = "greencorner"
},
/area/almayer/living/grunt_rnr)
+"kui" = (
+/obj/structure/sign/safety/hazard{
+ pixel_y = 32
+ },
+/obj/structure/sign/safety/ammunition{
+ pixel_x = 15;
+ pixel_y = 32
+ },
+/obj/structure/machinery/vending/security/riot,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"kuk" = (
/obj/structure/pipes/vents/pump{
dir = 1
@@ -47012,6 +47031,13 @@
icon_state = "emeraldcorner"
},
/area/almayer/living/briefing)
+"kuJ" = (
+/obj/structure/pipes/vents/scrubber,
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"kvh" = (
/obj/structure/surface/table/almayer,
/obj/structure/machinery/computer/station_alert{
@@ -47029,27 +47055,6 @@
icon_state = "tcomms"
},
/area/almayer/engineering/engine_core)
-"kvO" = (
-/obj/structure/machinery/power/apc/almayer{
- cell_type = /obj/item/cell/hyper;
- dir = 1
- },
-/obj/structure/sign/safety/rewire{
- pixel_x = -15;
- pixel_y = 25
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "E";
- pixel_x = 2
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "W";
- pixel_x = -2
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/armory)
"kvU" = (
/obj/structure/surface/table/almayer,
/turf/open/floor/plating/plating_catwalk,
@@ -47310,6 +47315,12 @@
icon_state = "dark_sterile"
},
/area/almayer/command/corporateliason)
+"kAL" = (
+/obj/structure/closet/secure_closet/brig,
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"kAU" = (
/obj/structure/platform{
dir = 4
@@ -47319,6 +47330,21 @@
icon_state = "red"
},
/area/almayer/lifeboat_pumps/south2)
+"kBh" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "SW-out"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 2
+ },
+/obj/structure/machinery/door/airlock/almayer/security/reinforced{
+ dir = 2;
+ name = "\improper Execution Equipment"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/execution)
"kBo" = (
/obj/effect/decal/warning_stripes{
icon_state = "SE-out";
@@ -47465,6 +47491,16 @@
},
/turf/open/floor/almayer,
/area/almayer/hallways/starboard_hallway)
+"kEc" = (
+/obj/structure/machinery/light/small{
+ dir = 8
+ },
+/obj/item/vehicle_clamp,
+/obj/item/vehicle_clamp,
+/obj/item/vehicle_clamp,
+/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"kEg" = (
/obj/structure/surface/table/almayer,
/obj/item/toy/deck{
@@ -47508,7 +47544,7 @@
icon_state = "redfull"
},
/area/almayer/living/briefing)
-"kEO" = (
+"kEU" = (
/obj/structure/machinery/door/poddoor/almayer/open{
id = "Brig Lockdown Shutters";
name = "\improper Brig Lockdown Shutter"
@@ -47516,7 +47552,7 @@
/turf/open/floor/almayer{
icon_state = "test_floor4"
},
-/area/almayer/hull/upper_hull/u_f_p)
+/area/almayer/hull/upper_hull/u_f_s)
"kFe" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/machinery/firealarm{
@@ -47590,6 +47626,18 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_f_p)
+"kGu" = (
+/obj/structure/machinery/cryopod{
+ layer = 3.1;
+ pixel_y = 13
+ },
+/obj/structure/machinery/status_display{
+ pixel_x = -32
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/cryo)
"kGF" = (
/obj/structure/reagent_dispensers/water_cooler/stacks{
density = 0;
@@ -47651,17 +47699,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/starboard_hallway)
-"kHL" = (
-/obj/structure/bed/chair/bolted{
- dir = 1
- },
-/obj/structure/machinery/light{
- dir = 8
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/perma)
"kHS" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 4
@@ -48114,6 +48151,19 @@
allow_construction = 0
},
/area/almayer/shipboard/brig/processing)
+"kQz" = (
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 1;
+ name = "\improper Brig Maintenance"
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ id = "Brig Lockdown Shutters";
+ name = "\improper Brig Lockdown Shutter"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/hull/upper_hull/u_f_p)
"kRd" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -48129,16 +48179,6 @@
icon_state = "cargo"
},
/area/almayer/command/lifeboat)
-"kRl" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/faxmachine/uscm/brig,
-/obj/structure/machinery/status_display{
- pixel_y = 30
- },
-/turf/open/floor/almayer{
- icon_state = "redfull"
- },
-/area/almayer/shipboard/brig/processing)
"kRu" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -48433,18 +48473,6 @@
icon_state = "plate"
},
/area/almayer/squads/bravo)
-"kXe" = (
-/obj/structure/machinery/cryopod{
- layer = 3.1;
- pixel_y = 13
- },
-/obj/structure/machinery/status_display{
- pixel_x = -32
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/cryo)
"kXf" = (
/obj/structure/machinery/camera/autoname/almayer{
dir = 8;
@@ -48498,6 +48526,18 @@
icon_state = "dark_sterile"
},
/area/almayer/engineering/laundry)
+"kXX" = (
+/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
+ name = "\improper Brig Cells";
+ closeOtherId = "briglobby"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 1
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/processing)
"kYa" = (
/obj/structure/machinery/door/poddoor/shutters/almayer{
dir = 2;
@@ -48885,18 +48925,6 @@
icon_state = "plating"
},
/area/almayer/engineering/engine_core)
-"lgp" = (
-/obj/structure/bed/chair/wood/normal{
- dir = 4
- },
-/obj/effect/decal/cleanable/blood,
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 6
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/execution)
"lgy" = (
/obj/structure/window/framed/almayer,
/obj/structure/machinery/door/firedoor/border_only/almayer{
@@ -48945,21 +48973,6 @@
icon_state = "test_floor4"
},
/area/almayer/hull/lower_hull/l_f_s)
-"lhe" = (
-/obj/structure/sign/safety/intercom{
- pixel_x = -17
- },
-/obj/structure/bed/sofa/south/grey/left,
-/obj/item/device/radio/intercom{
- freerange = 1;
- name = "General Listening Channel";
- pixel_y = 28
- },
-/turf/open/floor/almayer{
- dir = 9;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/lobby)
"lht" = (
/turf/open/floor/almayer{
dir = 6;
@@ -49135,6 +49148,16 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/lower_medical_lobby)
+"ljS" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "SE-out"
+ },
+/obj/structure/sign/safety/bathunisex{
+ pixel_x = 8;
+ pixel_y = 25
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/cells)
"ljW" = (
/obj/structure/machinery/light{
dir = 1
@@ -49172,18 +49195,6 @@
icon_state = "red"
},
/area/almayer/living/offices/flight)
-"lkl" = (
-/obj/structure/machinery/cryopod/right{
- layer = 3.1;
- pixel_y = 13
- },
-/obj/structure/machinery/status_display{
- pixel_x = 32
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/cryo)
"lkm" = (
/obj/structure/closet/emcloset,
/turf/open/floor/almayer{
@@ -49274,6 +49285,19 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/port)
+"lnh" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/airlock/almayer/security/glass{
+ dir = 8;
+ name = "\improper Chief MP's Office"
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"lnm" = (
/turf/open/floor/almayer{
icon_state = "orangecorner"
@@ -49472,18 +49496,6 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_m_s)
-"lqB" = (
-/obj/structure/transmitter{
- name = "Brig Offices Telephone";
- phone_category = "MP Dept.";
- phone_id = "Brig Main Offices";
- pixel_y = 32
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"lqF" = (
/turf/open/floor/almayer{
dir = 9;
@@ -50761,6 +50773,16 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/operating_room_two)
+"lOI" = (
+/obj/structure/machinery/light{
+ dir = 1
+ },
+/obj/structure/pipes/vents/pump,
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"lON" = (
/obj/structure/pipes/standard/simple/hidden/supply,
/obj/structure/machinery/door/poddoor/shutters/almayer/open{
@@ -50966,6 +50988,9 @@
/obj/structure/closet/firecloset,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_f_p)
+"lUz" = (
+/turf/closed/wall/almayer,
+/area/almayer/hull/upper_hull/u_f_s)
"lUA" = (
/obj/structure/surface/table/almayer,
/obj/item/weapon/gun/rifle/l42a{
@@ -51056,28 +51081,6 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull)
-"lXK" = (
-/obj/structure/filingcabinet{
- density = 0;
- pixel_x = -8;
- pixel_y = 18
- },
-/obj/structure/filingcabinet{
- density = 0;
- pixel_x = 8;
- pixel_y = 18
- },
-/obj/structure/machinery/power/apc/almayer{
- dir = 8
- },
-/obj/structure/sign/safety/rewire{
- pixel_x = -17;
- pixel_y = 17
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/evidence_storage)
"lXO" = (
/obj/structure/surface/table/almayer,
/obj/item/paper_bin/uscm,
@@ -51126,10 +51129,6 @@
icon_state = "sterile_green"
},
/area/almayer/medical/hydroponics)
-"lYM" = (
-/obj/structure/pipes/vents/pump,
-/turf/open/floor/wood/ship,
-/area/almayer/shipboard/brig/cells)
"lYN" = (
/obj/effect/decal/warning_stripes{
icon_state = "E"
@@ -51138,20 +51137,6 @@
icon_state = "plate"
},
/area/almayer/hallways/hangar)
-"lYP" = (
-/obj/structure/machinery/door/poddoor/almayer/locked{
- dir = 2;
- id = "Perma 1";
- name = "\improper cell shutter"
- },
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 2;
- name = "\improper Isolation Cell"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/perma)
"lZs" = (
/obj/structure/surface/table/reinforced/almayer_B,
/obj/item/device/radio/intercom{
@@ -51284,6 +51269,27 @@
icon_state = "plate"
},
/area/almayer/squads/alpha)
+"mdJ" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -1
+ },
+/obj/structure/machinery/door/airlock/almayer/research/reinforced{
+ dir = 8;
+ name = "\improper Containment Airlock";
+ closeOtherId = "containment_n"
+ },
+/obj/structure/machinery/door/poddoor/almayer/biohazard/white{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/medical/containment)
"mdW" = (
/obj/structure/surface/table/reinforced/almayer_B,
/obj/effect/decal/warning_stripes{
@@ -51517,6 +51523,12 @@
/obj/structure/pipes/standard/manifold/fourway/hidden/supply,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/starboard_hallway)
+"mjt" = (
+/obj/structure/pipes/vents/pump,
+/turf/open/floor/almayer{
+ allow_construction = 0
+ },
+/area/almayer/shipboard/brig/processing)
"mjR" = (
/obj/structure/largecrate/random/secure,
/turf/open/floor/almayer{
@@ -51878,33 +51890,6 @@
icon_state = "dark_sterile"
},
/area/almayer/medical/operating_room_two)
-"mqW" = (
-/obj/item/newspaper{
- name = "character sheet"
- },
-/obj/item/device/cassette_tape/heavymetal{
- pixel_x = 5;
- pixel_y = 7
- },
-/obj/item/toy/dice,
-/obj/structure/disposalpipe/segment{
- dir = 1;
- icon_state = "pipe-c"
- },
-/obj/structure/machinery/light{
- unacidable = 1;
- unslashable = 1
- },
-/obj/structure/machinery/door_control{
- id = "courtyard window";
- name = "Privacy Shutters";
- pixel_x = -8;
- pixel_y = -6;
- req_access_txt = "3"
- },
-/obj/structure/surface/table/almayer,
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/cells)
"mrc" = (
/obj/item/reagent_container/glass/bucket,
/obj/item/tool/mop{
@@ -51923,10 +51908,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/port_hallway)
-"mrA" = (
-/obj/structure/closet/secure_closet/brig,
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/perma)
"mrB" = (
/obj/structure/machinery/camera/autoname/almayer{
dir = 8;
@@ -52149,6 +52130,36 @@
icon_state = "bluecorner"
},
/area/almayer/squads/delta)
+"mvE" = (
+/obj/item/bedsheet/brown{
+ pixel_y = 13
+ },
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 3.3;
+ pixel_y = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 4;
+ pixel_x = -2;
+ pixel_y = 4
+ },
+/obj/structure/bed{
+ can_buckle = 0
+ },
+/obj/structure/bed{
+ buckling_y = 13;
+ layer = 3.5;
+ pixel_y = 13
+ },
+/obj/item/bedsheet/brown{
+ layer = 3.1
+ },
+/turf/open/floor/almayer{
+ dir = 9;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"mvI" = (
/obj/structure/machinery/camera/autoname/almayer{
dir = 4;
@@ -52289,6 +52300,33 @@
icon_state = "red"
},
/area/almayer/shipboard/brig/processing)
+"mza" = (
+/obj/structure/machinery/door/poddoor/shutters/almayer{
+ dir = 2;
+ id = "firearm_storage_armory";
+ name = "\improper Armory Shutters"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 2
+ },
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 2;
+ name = "\improper Armory"
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "NE-out";
+ pixel_x = 2;
+ pixel_y = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "NW-out";
+ pixel_x = -2;
+ pixel_y = 1
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/armory)
"mzb" = (
/obj/structure/prop/invuln/overhead_pipe{
pixel_x = 12
@@ -52404,24 +52442,6 @@
},
/turf/open/floor/almayer,
/area/almayer/hull/upper_hull/u_f_s)
-"mBp" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/airlock/almayer/security/reinforced{
- access_modified = 1;
- name = "\improper Astronavigational Deck";
- req_access = null;
- req_one_access_txt = "3;19"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/navigation)
"mBx" = (
/obj/structure/machinery/firealarm{
dir = 4;
@@ -52622,6 +52642,15 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_f_s)
+"mHb" = (
+/obj/structure/machinery/power/apc/almayer{
+ dir = 1
+ },
+/turf/open/floor/almayer{
+ dir = 4;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"mHm" = (
/obj/structure/sign/safety/distribution_pipes{
pixel_y = -32
@@ -52654,6 +52683,15 @@
},
/turf/open/floor/almayer,
/area/almayer/living/gym)
+"mHz" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 10
+ },
+/obj/structure/machinery/light/small{
+ dir = 1
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/chief_mp_office)
"mHA" = (
/obj/structure/closet/secure_closet/surgical{
pixel_x = -30
@@ -52692,19 +52730,6 @@
icon_state = "mono"
},
/area/almayer/living/pilotbunks)
-"mHQ" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/airlock/almayer/security/glass{
- dir = 8;
- name = "\improper Chief MP's Office"
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"mHR" = (
/obj/structure/sign/safety/hvac_old{
pixel_x = 8;
@@ -52712,14 +52737,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/lower_hull/l_a_p)
-"mIr" = (
-/obj/structure/closet/secure_closet/personal/cabinet{
- req_access = null;
- pixel_y = 17;
- pixel_x = 1
- },
-/turf/open/floor/almayer,
-/area/almayer/living/numbertwobunks)
"mIy" = (
/obj/structure/disposalpipe/segment{
dir = 1;
@@ -53008,16 +53025,6 @@
icon_state = "orange"
},
/area/almayer/hallways/stern_hallway)
-"mMo" = (
-/obj/structure/machinery/light/small{
- dir = 8
- },
-/obj/item/vehicle_clamp,
-/obj/item/vehicle_clamp,
-/obj/item/vehicle_clamp,
-/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"mMP" = (
/obj/effect/landmark/start/intel,
/turf/open/floor/plating/plating_catwalk,
@@ -53033,16 +53040,16 @@
icon_state = "silver"
},
/area/almayer/shipboard/brig/cic_hallway)
-"mMW" = (
-/obj/structure/closet/secure_closet/guncabinet/riot_control,
-/obj/item/weapon/shield/riot,
-/obj/item/weapon/shield/riot,
-/obj/item/weapon/shield/riot,
-/obj/structure/machinery/light{
- dir = 1
+"mMZ" = (
+/obj/structure/disposalpipe/junction,
+/obj/structure/pipes/standard/manifold/hidden/supply{
+ dir = 4
},
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
+/turf/open/floor/almayer{
+ dir = 4;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"mNf" = (
/obj/structure/largecrate/random/case/double,
/turf/open/floor/plating/plating_catwalk,
@@ -53063,6 +53070,13 @@
icon_state = "sterile"
},
/area/almayer/medical/upper_medical)
+"mNK" = (
+/obj/structure/closet/secure_closet/brig/restraints,
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/perma)
"mNR" = (
/obj/structure/surface/rack,
/obj/item/storage/toolbox/mechanical,
@@ -53204,27 +53218,6 @@
"mQC" = (
/turf/open/floor/plating/plating_catwalk,
/area/almayer/engineering/port_atmos)
-"mQE" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/reinforced{
- dir = 2;
- name = "\improper Brig Permanent Confinement"
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "perma_lockdown_1";
- name = "\improper Perma Lockdown Shutter"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/perma)
"mQH" = (
/turf/open/floor/almayer{
dir = 5;
@@ -53614,26 +53607,6 @@
"mXj" = (
/turf/closed/wall/almayer,
/area/almayer/living/commandbunks)
-"mXS" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/recharger,
-/obj/structure/machinery/door_control{
- id = "courtyard_cells";
- name = "\improper Courtyard Lockdown Shutters";
- pixel_x = 16;
- req_access_txt = "3"
- },
-/obj/structure/machinery/door_control{
- id = "Brig Lockdown Shutters";
- name = "Brig Lockdown Shutters";
- pixel_x = 16;
- pixel_y = 8;
- req_access_txt = "3"
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"mXU" = (
/turf/open/floor/almayer{
dir = 9;
@@ -53668,17 +53641,6 @@
icon_state = "blue"
},
/area/almayer/hallways/port_hallway)
-"mYU" = (
-/obj/structure/bed/chair/bolted{
- dir = 1
- },
-/obj/structure/machinery/light{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/perma)
"mYY" = (
/obj/effect/decal/warning_stripes{
icon_state = "SW-out"
@@ -53816,6 +53778,18 @@
icon_state = "test_floor4"
},
/area/almayer/living/gym)
+"ncf" = (
+/obj/structure/machinery/cryopod/right{
+ layer = 3.1;
+ pixel_y = 13
+ },
+/obj/structure/machinery/status_display{
+ pixel_x = 32
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/cryo)
"ncl" = (
/turf/open/floor/almayer{
icon_state = "red"
@@ -54016,6 +53990,21 @@
icon_state = "emeraldfull"
},
/area/almayer/living/briefing)
+"ngr" = (
+/obj/structure/sign/safety/intercom{
+ pixel_x = -17
+ },
+/obj/structure/bed/sofa/south/grey/left,
+/obj/item/device/radio/intercom{
+ freerange = 1;
+ name = "General Listening Channel";
+ pixel_y = 28
+ },
+/turf/open/floor/almayer{
+ dir = 9;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/lobby)
"ngs" = (
/obj/structure/largecrate/random/barrel/red,
/turf/open/floor/almayer{
@@ -54082,19 +54071,6 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_a_p)
-"nhs" = (
-/obj/structure/pipes/vents/pump,
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/perma)
-"nhw" = (
-/obj/structure/machinery/cm_vending/clothing/senior_officer{
- density = 0;
- pixel_y = 30
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/living/numbertwobunks)
"nhx" = (
/obj/structure/surface/table/reinforced/prison,
/obj/item/toy/deck{
@@ -54111,6 +54087,33 @@
},
/turf/open/floor/almayer,
/area/almayer/squads/charlie_delta_shared)
+"nhG" = (
+/obj/item/newspaper{
+ name = "character sheet"
+ },
+/obj/item/device/cassette_tape/heavymetal{
+ pixel_x = 5;
+ pixel_y = 7
+ },
+/obj/item/toy/dice,
+/obj/structure/disposalpipe/segment{
+ dir = 1;
+ icon_state = "pipe-c"
+ },
+/obj/structure/machinery/light{
+ unacidable = 1;
+ unslashable = 1
+ },
+/obj/structure/machinery/door_control{
+ id = "courtyard window";
+ name = "Privacy Shutters";
+ pixel_x = -8;
+ pixel_y = -6;
+ req_access_txt = "3"
+ },
+/obj/structure/surface/table/almayer,
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/cells)
"nig" = (
/turf/open/floor/almayer{
icon_state = "red"
@@ -54275,6 +54278,31 @@
icon_state = "red"
},
/area/almayer/shipboard/starboard_missiles)
+"nkF" = (
+/obj/structure/bed/chair/bolted{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "redcorner"
+ },
+/area/almayer/shipboard/brig/processing)
+"nkX" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/computer/cameras/almayer_network{
+ dir = 4;
+ layer = 2.8;
+ pixel_y = 5
+ },
+/obj/structure/sign/safety/terminal{
+ pixel_x = 8;
+ pixel_y = 32
+ },
+/turf/open/floor/almayer{
+ dir = 9;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"nlz" = (
/obj/structure/machinery/brig_cell/cell_3{
pixel_x = 32;
@@ -54465,6 +54493,29 @@
icon_state = "dark_sterile"
},
/area/almayer/medical/containment)
+"npO" = (
+/obj/structure/disposalpipe/segment{
+ dir = 8;
+ icon_state = "pipe-c"
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/lobby)
+"nqe" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -2
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/armory)
"nqx" = (
/obj/structure/pipes/standard/manifold/hidden/supply,
/turf/open/floor/plating/plating_catwalk,
@@ -54685,6 +54736,17 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_f_s)
+"nux" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "perma_lockdown_1";
+ name = "\improper Perma Lockdown Shutter"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/perma)
"nuA" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -54929,14 +54991,6 @@
},
/turf/open/floor/almayer,
/area/almayer/squads/req)
-"nAw" = (
-/obj/structure/pipes/standard/manifold/hidden/supply{
- dir = 8
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"nBa" = (
/obj/structure/machinery/cm_vending/sorted/cargo_guns/squad{
req_access = null;
@@ -54968,13 +55022,6 @@
icon_state = "mono"
},
/area/almayer/living/pilotbunks)
-"nBU" = (
-/obj/structure/closet/secure_closet/brig/restraints,
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/perma)
"nBW" = (
/obj/structure/sign/safety/maint{
pixel_x = -17
@@ -55283,21 +55330,6 @@
icon_state = "plate"
},
/area/almayer/shipboard/port_point_defense)
-"nGG" = (
-/obj/effect/decal/warning_stripes{
- icon_state = "SW-out"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 2
- },
-/obj/structure/machinery/door/airlock/almayer/security/reinforced{
- dir = 2;
- name = "\improper Execution Equipment"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/execution)
"nGY" = (
/obj/structure/closet/emcloset,
/turf/open/floor/almayer{
@@ -55316,15 +55348,6 @@
icon_state = "plating_striped"
},
/area/almayer/living/cryo_cells)
-"nHM" = (
-/obj/structure/machinery/cryopod{
- layer = 3.1;
- pixel_y = 13
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/cryo)
"nIj" = (
/turf/open/floor/almayer{
icon_state = "green"
@@ -55403,6 +55426,12 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_a_p)
+"nJz" = (
+/turf/open/floor/almayer{
+ dir = 4;
+ icon_state = "redcorner"
+ },
+/area/almayer/shipboard/brig/main_office)
"nJH" = (
/obj/structure/machinery/computer/cameras/almayer{
dir = 8;
@@ -55421,21 +55450,6 @@
icon_state = "red"
},
/area/almayer/command/lifeboat)
-"nKW" = (
-/obj/structure/machinery/door_control{
- id = "perma_lockdown_2";
- name = "Maint Lockdown Shutters";
- pixel_y = -20;
- req_one_access_txt = "24;31"
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/sign/safety/bulkhead_door{
- pixel_y = -34
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/perma)
"nLa" = (
/obj/structure/bed/chair{
dir = 4
@@ -55537,14 +55551,6 @@
dir = 1
},
/area/almayer/medical/containment/cell)
-"nMo" = (
-/obj/effect/decal/warning_stripes{
- icon_state = "W";
- layer = 2.5
- },
-/obj/structure/pipes/standard/simple/hidden/supply,
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/execution)
"nMp" = (
/obj/structure/surface/table/almayer,
/obj/item/reagent_container/food/condiment/hotsauce/franks,
@@ -55791,9 +55797,7 @@
icon_state = "W";
layer = 2.5
},
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 10
- },
+/obj/structure/pipes/standard/simple/hidden/supply,
/turf/open/floor/almayer,
/area/almayer/shipboard/brig/execution)
"nSG" = (
@@ -56013,31 +56017,10 @@
icon_state = "test_floor4"
},
/area/almayer/hull/upper_hull/u_m_p)
-"nWC" = (
-/obj/structure/disposalpipe/junction,
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 5
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/cic_hallway)
"nWN" = (
/obj/structure/surface/table/almayer,
/turf/open/floor/wood/ship,
/area/almayer/engineering/ce_room)
-"nXB" = (
-/obj/structure/bed/bedroll{
- desc = "A bed of cotton fabric, purposely made for a cat to comfortably sleep on.";
- name = "cat bed"
- },
-/obj/structure/machinery/firealarm{
- pixel_x = -1;
- pixel_y = 28
- },
-/mob/living/simple_animal/cat/Jones{
- dir = 8
- },
-/turf/open/floor/wood/ship,
-/area/almayer/living/commandbunks)
"nXF" = (
/obj/structure/bed/sofa/south/white/right{
pixel_y = 16
@@ -56452,23 +56435,20 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_f_p)
-"ogW" = (
-/obj/structure/surface/table/almayer,
-/obj/item/storage/box/evidence{
- pixel_x = 7;
- pixel_y = 6
- },
-/obj/item/storage/box/evidence{
- pixel_x = 1;
- pixel_y = 1
+"ogK" = (
+/obj/structure/bed/bedroll{
+ desc = "A bed of cotton fabric, purposely made for a cat to comfortably sleep on.";
+ name = "cat bed"
},
-/obj/structure/machinery/light{
- dir = 1
+/obj/structure/machinery/firealarm{
+ pixel_x = -1;
+ pixel_y = 28
},
-/turf/open/floor/almayer{
- icon_state = "plate"
+/mob/living/simple_animal/cat/Jones{
+ dir = 8
},
-/area/almayer/shipboard/brig/general_equipment)
+/turf/open/floor/wood/ship,
+/area/almayer/living/commandbunks)
"ohj" = (
/obj/structure/machinery/cryopod,
/turf/open/floor/almayer{
@@ -56762,6 +56742,16 @@
/obj/structure/pipes/standard/simple/hidden/supply,
/turf/open/floor/wood/ship,
/area/almayer/shipboard/brig/cells)
+"omy" = (
+/obj/structure/disposalpipe/segment{
+ dir = 1;
+ icon_state = "pipe-c"
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 5
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/cic_hallway)
"omP" = (
/obj/item/tool/mop,
/obj/structure/surface/rack,
@@ -56859,15 +56849,6 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/lower_medical_medbay)
-"opz" = (
-/obj/structure/machinery/status_display{
- pixel_y = 30
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"opC" = (
/obj/structure/machinery/door/airlock/almayer/command/reinforced{
name = "\improper Combat Information Center"
@@ -56879,6 +56860,13 @@
"opD" = (
/turf/open/floor/plating/plating_catwalk,
/area/almayer/living/gym)
+"opF" = (
+/obj/structure/pipes/vents/pump,
+/turf/open/floor/almayer{
+ dir = 4;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"opI" = (
/obj/structure/closet/secure_closet,
/obj/item/device/camera_film,
@@ -57303,15 +57291,6 @@
},
/turf/open/floor/almayer,
/area/almayer/lifeboat_pumps/south1)
-"oxv" = (
-/obj/structure/machinery/door/airlock/almayer/generic{
- dir = 1;
- name = "Bathroom"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"oxU" = (
/obj/structure/machinery/photocopier,
/turf/open/floor/almayer,
@@ -57485,6 +57464,25 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/port)
+"oCg" = (
+/obj/structure/machinery/door/airlock/almayer/research/reinforced{
+ dir = 8;
+ name = "\improper Containment Airlock";
+ closeOtherId = "containment_s"
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "S"
+ },
+/obj/structure/machinery/door/poddoor/almayer/biohazard/white{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply/no_boom{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/medical/medical_science)
"oCi" = (
/obj/structure/sign/safety/restrictedarea{
pixel_x = -17
@@ -57776,28 +57774,6 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_m_s)
-"oIr" = (
-/obj/effect/decal/warning_stripes{
- icon_state = "NE-out";
- pixel_x = 1;
- pixel_y = 1
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "NW-out";
- pixel_x = -1;
- pixel_y = 1
- },
-/obj/structure/machinery/door/airlock/almayer/research/reinforced{
- dir = 8;
- name = "\improper Containment Airlock"
- },
-/obj/structure/machinery/door/poddoor/almayer/biohazard/white{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/medical/medical_science)
"oIt" = (
/obj/effect/decal/warning_stripes{
icon_state = "S"
@@ -57894,16 +57870,6 @@
icon_state = "silver"
},
/area/almayer/command/airoom)
-"oLu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4;
- icon_state = "pipe-c"
- },
-/obj/structure/pipes/standard/simple/hidden/supply,
-/turf/open/floor/almayer{
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/main_office)
"oLv" = (
/obj/structure/sign/safety/medical{
pixel_x = 8;
@@ -57918,6 +57884,28 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_m_p)
+"oLF" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "Brig Lockdown Shutters";
+ name = "\improper Brig Lockdown Shutter"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
+ dir = 2;
+ name = "\improper Brig Lobby";
+ req_access = null
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/lobby)
"oLT" = (
/obj/structure/machinery/firealarm{
pixel_y = 28
@@ -58351,6 +58339,23 @@
icon_state = "silver"
},
/area/almayer/command/cichallway)
+"oVf" = (
+/obj/structure/surface/table/almayer,
+/obj/item/storage/box/evidence{
+ pixel_x = 7;
+ pixel_y = 6
+ },
+/obj/item/storage/box/evidence{
+ pixel_x = 1;
+ pixel_y = 1
+ },
+/obj/structure/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/general_equipment)
"oVP" = (
/obj/structure/bed/chair{
dir = 4
@@ -58414,12 +58419,6 @@
icon_state = "plate"
},
/area/almayer/engineering/upper_engineering/port)
-"oXO" = (
-/obj/structure/closet/emcloset/legacy,
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/main_office)
"oXY" = (
/obj/structure/machinery/camera/autoname/almayer{
dir = 8;
@@ -58513,23 +58512,6 @@
icon_state = "plate"
},
/area/almayer/living/briefing)
-"oZG" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/secure_data{
- dir = 8
- },
-/obj/structure/machinery/firealarm{
- pixel_y = 28
- },
-/obj/structure/extinguisher_cabinet{
- pixel_x = -14;
- pixel_y = 28
- },
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"oZV" = (
/obj/structure/surface/table/reinforced/prison,
/obj/item/roller,
@@ -58553,6 +58535,23 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/containment)
+"pas" = (
+/obj/structure/machinery/cryopod/right,
+/obj/structure/sign/safety/cryo{
+ pixel_x = 3;
+ pixel_y = 25
+ },
+/obj/structure/sign/safety/rewire{
+ pixel_x = 15;
+ pixel_y = 25
+ },
+/obj/structure/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/cryo)
"paI" = (
/obj/structure/sign/safety/debark_lounge{
pixel_x = 15;
@@ -58772,15 +58771,6 @@
},
/turf/open/floor/almayer,
/area/almayer/living/briefing)
-"pfN" = (
-/obj/item/storage/box/nade_box/tear_gas,
-/obj/item/storage/box/nade_box/tear_gas{
- pixel_x = 3;
- pixel_y = 5
- },
-/obj/structure/surface/table/almayer,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"pfT" = (
/obj/structure/machinery/ares/processor/interface,
/turf/open/floor/almayer/no_build{
@@ -58865,6 +58855,16 @@
icon_state = "plate"
},
/area/almayer/command/combat_correspondent)
+"phN" = (
+/obj/structure/disposalpipe/junction{
+ dir = 4;
+ icon_state = "pipe-j2"
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/processing)
"piK" = (
/obj/structure/window/framed/almayer,
/obj/structure/machinery/door/poddoor/almayer/locked{
@@ -59036,12 +59036,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_f_s)
-"pmN" = (
-/obj/structure/pipes/vents/pump,
-/turf/open/floor/almayer{
- allow_construction = 0
- },
-/area/almayer/shipboard/brig/processing)
"pmV" = (
/obj/structure/prop/server_equipment/yutani_server/broken{
density = 0;
@@ -59128,16 +59122,6 @@
},
/turf/open/floor/almayer,
/area/almayer/living/auxiliary_officer_office)
-"ppy" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
- dir = 2;
- name = "\improper Brig Lobby"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/processing)
"pqc" = (
/turf/open/floor/almayer{
icon_state = "mono"
@@ -59197,6 +59181,15 @@
},
/turf/open/floor/almayer,
/area/almayer/living/gym)
+"pre" = (
+/obj/structure/machinery/door/poddoor/almayer/open{
+ id = "Brig Lockdown Shutters";
+ name = "\improper Brig Lockdown Shutter"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/hull/upper_hull/u_f_p)
"prx" = (
/obj/structure/bed/chair/comfy{
dir = 4
@@ -59230,24 +59223,6 @@
icon_state = "bluefull"
},
/area/almayer/living/bridgebunks)
-"psh" = (
-/obj/structure/surface/table/almayer,
-/obj/item/storage/box/tapes{
- pixel_x = 7;
- pixel_y = 6
- },
-/obj/item/storage/box/tapes{
- pixel_x = -6;
- pixel_y = 6
- },
-/obj/item/storage/box/tapes{
- pixel_x = 1;
- pixel_y = 1
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/evidence_storage)
"psm" = (
/turf/closed/wall/almayer,
/area/almayer/hull/upper_hull/u_a_s)
@@ -59345,10 +59320,6 @@
/obj/structure/window/framed/almayer/hull,
/turf/open/floor/plating,
/area/almayer/shipboard/port_missiles)
-"puo" = (
-/obj/structure/machinery/light,
-/turf/open/floor/almayer,
-/area/almayer/living/numbertwobunks)
"pur" = (
/obj/structure/machinery/status_display{
pixel_x = -32
@@ -59380,11 +59351,18 @@
/area/almayer/shipboard/brig/main_office)
"puE" = (
/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/secure_data{
- dir = 4
+/obj/structure/machinery/recharger,
+/obj/structure/sign/safety/terminal{
+ pixel_y = 32
+ },
+/obj/structure/transmitter/rotary{
+ name = "Brig Wardens's Office Telephone";
+ phone_category = "MP Dept.";
+ phone_id = "Brig Warden's Office";
+ pixel_x = 15
},
/turf/open/floor/almayer{
- dir = 8;
+ dir = 9;
icon_state = "red"
},
/area/almayer/shipboard/brig/chief_mp_office)
@@ -59845,15 +59823,6 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_a_p)
-"pGl" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"pGK" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 4
@@ -59930,6 +59899,15 @@
icon_state = "bluecorner"
},
/area/almayer/living/basketball)
+"pId" = (
+/obj/item/storage/box/nade_box/tear_gas,
+/obj/item/storage/box/nade_box/tear_gas{
+ pixel_x = 3;
+ pixel_y = 5
+ },
+/obj/structure/surface/table/almayer,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"pIf" = (
/obj/structure/disposalpipe/junction{
dir = 8
@@ -60530,6 +60508,16 @@
icon_state = "silver"
},
/area/almayer/living/briefing)
+"pUD" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/faxmachine/uscm/brig,
+/obj/structure/machinery/status_display{
+ pixel_y = 30
+ },
+/turf/open/floor/almayer{
+ icon_state = "redfull"
+ },
+/area/almayer/shipboard/brig/processing)
"pUJ" = (
/turf/closed/wall/almayer,
/area/almayer/hull/upper_hull/u_f_p)
@@ -61318,6 +61306,16 @@
/obj/effect/landmark/late_join/charlie,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/squads/charlie)
+"qkn" = (
+/obj/structure/machinery/power/apc/almayer{
+ cell_type = /obj/item/cell/hyper;
+ dir = 1
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"qkP" = (
/obj/item/frame/light_fixture{
anchored = 1;
@@ -61388,6 +61386,21 @@
/obj/structure/disposalpipe/trunk,
/turf/open/floor/wood/ship,
/area/almayer/living/commandbunks)
+"qlS" = (
+/obj/structure/reagent_dispensers/water_cooler/stacks{
+ density = 0;
+ pixel_x = -7;
+ pixel_y = 17
+ },
+/obj/structure/sign/safety/cryo{
+ pixel_x = 12;
+ pixel_y = 28
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"qmk" = (
/obj/structure/surface/table/almayer,
/obj/structure/pipes/standard/simple/hidden/supply{
@@ -61450,20 +61463,6 @@
icon_state = "sterile_green_corner"
},
/area/almayer/medical/medical_science)
-"qmC" = (
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "Brig Lockdown Shutters";
- name = "\improper Brig Lockdown Shutter"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- name = "\improper Brig"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/main_office)
"qmD" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 5
@@ -61496,6 +61495,16 @@
icon_state = "plating_striped"
},
/area/almayer/shipboard/brig/execution)
+"qmU" = (
+/obj/item/vehicle_clamp,
+/obj/item/vehicle_clamp,
+/obj/item/vehicle_clamp,
+/obj/structure/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"qnd" = (
/obj/effect/decal/warning_stripes{
icon_state = "SW-out"
@@ -61541,6 +61550,29 @@
icon_state = "test_floor4"
},
/area/almayer/living/pilotbunks)
+"qnM" = (
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ name = "\improper Brig Prisoner Yard";
+ closeOtherId = "brigcells"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 8
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 8
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "courtyard_cells";
+ name = "\improper Courtyard Lockdown Shutter"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/processing)
"qnP" = (
/obj/structure/prop/invuln/overhead_pipe{
pixel_x = 12
@@ -61613,18 +61645,6 @@
icon_state = "sterile_green_side"
},
/area/almayer/medical/chemistry)
-"qpU" = (
-/obj/structure/sign/safety/maint{
- pixel_x = -19;
- pixel_y = -6
- },
-/obj/effect/decal/cleanable/dirt,
-/obj/structure/sign/safety/bulkhead_door{
- pixel_x = -19;
- pixel_y = 6
- },
-/turf/open/floor/almayer,
-/area/almayer/hull/upper_hull/u_f_s)
"qqn" = (
/obj/structure/desertdam/decals/road_edge{
icon_state = "road_edge_decal3";
@@ -61703,12 +61723,6 @@
icon_state = "silver"
},
/area/almayer/command/computerlab)
-"qrX" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/main_office)
"qsd" = (
/obj/structure/largecrate/random,
/turf/open/floor/almayer{
@@ -61848,10 +61862,6 @@
icon_state = "green"
},
/area/almayer/living/grunt_rnr)
-"qvu" = (
-/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"qvC" = (
/obj/structure/machinery/power/apc/almayer{
dir = 4
@@ -61864,17 +61874,6 @@
},
/turf/open/floor/almayer,
/area/almayer/lifeboat_pumps/south2)
-"qvL" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 2
- },
-/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
- name = "\improper Brig Cells"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/main_office)
"qwo" = (
/obj/structure/machinery/washing_machine,
/obj/structure/machinery/washing_machine{
@@ -61952,6 +61951,19 @@
},
/turf/closed/wall/almayer/research/containment/wall/purple,
/area/almayer/medical/containment/cell)
+"qxr" = (
+/obj/structure/machinery/cryopod/right{
+ layer = 3.1;
+ pixel_y = 13
+ },
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 8;
+ name = "ship-grade camera"
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/cryo)
"qxz" = (
/obj/structure/machinery/door/airlock/almayer/secure/reinforced{
dir = 2;
@@ -62189,6 +62201,24 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/hangar)
+"qCU" = (
+/obj/structure/machinery/light{
+ dir = 4
+ },
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/computer/sentencing{
+ dir = 8;
+ pixel_y = 6
+ },
+/obj/structure/sign/safety/terminal{
+ pixel_x = 32;
+ pixel_y = -22
+ },
+/turf/open/floor/almayer{
+ dir = 4;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/perma)
"qDq" = (
/obj/effect/landmark/start/marine/bravo,
/obj/effect/landmark/late_join/bravo,
@@ -62385,15 +62415,6 @@
icon_state = "dark_sterile"
},
/area/almayer/medical/operating_room_two)
-"qGO" = (
-/obj/structure/machinery/flasher{
- id = "Perma 2";
- pixel_y = 24
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/perma)
"qGU" = (
/obj/structure/closet/firecloset,
/turf/open/floor/almayer{
@@ -62761,6 +62782,19 @@
"qMu" = (
/turf/closed/wall/almayer/outer,
/area/almayer/hull/upper_hull/u_a_p)
+"qMD" = (
+/obj/structure/surface/table/almayer,
+/obj/item/storage/box/flashbangs,
+/obj/item/storage/box/flashbangs{
+ pixel_x = 5;
+ pixel_y = 9
+ },
+/obj/item/storage/box/flashbangs{
+ pixel_x = -8;
+ pixel_y = 5
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"qMP" = (
/obj/structure/bed/chair/comfy{
dir = 8
@@ -63065,12 +63099,6 @@
icon_state = "plate"
},
/area/almayer/hallways/hangar)
-"qVf" = (
-/obj/structure/closet/secure_closet/brig,
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"qVC" = (
/obj/structure/surface/table/reinforced/almayer_B,
/turf/open/floor/almayer{
@@ -63308,21 +63336,33 @@
},
/turf/open/floor/almayer,
/area/almayer/living/briefing)
-"qZt" = (
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 1;
- name = "ship-grade camera"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
+"qZA" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 4
},
/turf/open/floor/almayer{
+ dir = 8;
icon_state = "red"
},
-/area/almayer/shipboard/brig/main_office)
+/area/almayer/shipboard/brig/chief_mp_office)
+"qZF" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/computer/cameras/almayer_network{
+ dir = 8;
+ pixel_y = 6
+ },
+/obj/structure/machinery/door_control{
+ id = "perma_lockdown_1";
+ name = "\improper Perma Cells Lockdown";
+ pixel_x = -8;
+ pixel_y = -4;
+ req_access_txt = "3"
+ },
+/turf/open/floor/almayer{
+ dir = 4;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/perma)
"qZH" = (
/obj/structure/surface/table/almayer,
/obj/item/paper{
@@ -63365,6 +63405,22 @@
icon_state = "emerald"
},
/area/almayer/squads/charlie)
+"rbi" = (
+/obj/structure/surface/table/almayer,
+/obj/item/storage/box/ids{
+ pixel_x = -6;
+ pixel_y = 8
+ },
+/obj/item/device/flash,
+/obj/structure/machinery/light{
+ dir = 8;
+ invisibility = 101
+ },
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"rbp" = (
/obj/structure/largecrate/random/case/small,
/turf/open/floor/almayer{
@@ -63417,6 +63473,18 @@
icon_state = "cargo_arrow"
},
/area/almayer/squads/charlie)
+"rbK" = (
+/obj/structure/bed/chair/wood/normal{
+ dir = 4
+ },
+/obj/effect/decal/cleanable/blood,
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 6
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/execution)
"rbX" = (
/obj/structure/sign/safety/manualopenclose{
pixel_x = 15;
@@ -63479,16 +63547,6 @@
},
/turf/open/floor/almayer,
/area/almayer/command/lifeboat)
-"rdj" = (
-/obj/structure/machinery/light{
- dir = 1
- },
-/obj/structure/pipes/vents/pump,
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"rdr" = (
/obj/structure/surface/table/almayer,
/obj/item/storage/box/lights/tubes{
@@ -63600,22 +63658,6 @@
icon_state = "kitchen"
},
/area/almayer/living/grunt_rnr)
-"reQ" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/crew/alt{
- dir = 4
- },
-/obj/structure/transmitter/rotary/no_dnd{
- name = "Brig Cells Telephone";
- phone_category = "MP Dept.";
- phone_id = "Brig Cells";
- pixel_x = 16
- },
-/turf/open/floor/almayer{
- dir = 10;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"rfa" = (
/obj/effect/landmark/start/marine/medic/alpha,
/obj/effect/landmark/late_join/alpha,
@@ -63672,6 +63714,16 @@
icon_state = "dark_sterile"
},
/area/almayer/living/port_emb)
+"rfY" = (
+/obj/structure/machinery/cryopod,
+/obj/structure/machinery/light{
+ dir = 8;
+ invisibility = 101
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/cryo)
"rgy" = (
/obj/structure/pipes/standard/manifold/hidden/supply{
dir = 1
@@ -64201,6 +64253,21 @@
icon_state = "plate"
},
/area/almayer/squads/delta)
+"rqS" = (
+/obj/structure/surface/table/almayer,
+/obj/item/folder/red{
+ pixel_x = -4
+ },
+/obj/item/folder/blue{
+ pixel_x = 4
+ },
+/obj/structure/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/almayer{
+ icon_state = "cargo"
+ },
+/area/almayer/shipboard/brig/evidence_storage)
"rri" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 4
@@ -64453,25 +64520,6 @@
},
/turf/open/floor/plating,
/area/almayer/living/pilotbunks)
-"rxg" = (
-/obj/structure/flora/pottedplant{
- icon_state = "pottedplant_10"
- },
-/obj/structure/closet/secure_closet/cmdcabinet{
- desc = "A bulletproof cabinet containing communications equipment.";
- name = "communications cabinet";
- pixel_y = 24;
- req_access = null;
- req_one_access_txt = "207;203"
- },
-/obj/item/device/radio,
-/obj/item/device/radio/listening_bug/radio_linked/wy,
-/obj/item/device/radio/listening_bug/radio_linked/wy{
- pixel_x = 4;
- pixel_y = -3
- },
-/turf/open/floor/wood/ship,
-/area/almayer/command/corporateliason)
"rxk" = (
/obj/structure/sign/safety/hvac_old{
pixel_x = 8;
@@ -64545,6 +64593,15 @@
icon_state = "test_floor4"
},
/area/almayer/hull/upper_hull/u_a_s)
+"rzY" = (
+/obj/structure/machinery/firealarm{
+ pixel_y = 28
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"rAb" = (
/turf/open/floor/almayer{
icon_state = "bluecorner"
@@ -64592,6 +64649,20 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/starboard)
+"rAX" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "SW-out"
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"rBa" = (
/obj/structure/machinery/cm_vending/clothing/synth,
/obj/structure/prop/invuln/overhead_pipe{
@@ -64706,16 +64777,6 @@
/obj/structure/pipes/standard/simple/hidden/supply,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/living/briefing)
-"rCU" = (
-/obj/structure/machinery/disposal,
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "silver"
- },
-/area/almayer/shipboard/brig/cic_hallway)
"rDb" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 6
@@ -64791,12 +64852,31 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_f_s)
+"rDQ" = (
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/cryo)
"rDV" = (
/obj/structure/bed/chair/comfy{
dir = 8
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/medical/medical_science)
+"rDY" = (
+/obj/item/stack/sheet/glass/reinforced{
+ amount = 50
+ },
+/obj/effect/spawner/random/toolbox,
+/obj/effect/spawner/random/powercell,
+/obj/effect/spawner/random/powercell,
+/obj/structure/surface/rack,
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 1;
+ name = "ship-grade camera"
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/chief_mp_office)
"rEf" = (
/obj/structure/disposalpipe/segment{
dir = 2;
@@ -64851,6 +64931,15 @@
icon_state = "silverfull"
},
/area/almayer/command/computerlab)
+"rEO" = (
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 1;
+ name = "ship-grade camera"
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"rEQ" = (
/obj/structure/machinery/iv_drip,
/turf/open/floor/almayer{
@@ -64858,6 +64947,25 @@
icon_state = "sterile_green_side"
},
/area/almayer/shipboard/brig/surgery)
+"rEY" = (
+/obj/structure/machinery/disposal,
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ dir = 8;
+ icon_state = "silver"
+ },
+/area/almayer/shipboard/brig/cic_hallway)
+"rFg" = (
+/obj/structure/machinery/door/airlock/almayer/generic{
+ dir = 1;
+ name = "Bathroom"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"rFs" = (
/obj/structure/surface/table/reinforced/almayer_B,
/obj/item/folder/black,
@@ -65128,6 +65236,14 @@
icon_state = "test_floor4"
},
/area/almayer/squads/charlie_delta_shared)
+"rJA" = (
+/obj/structure/closet/secure_closet/personal/cabinet{
+ req_access = null;
+ pixel_y = 17;
+ pixel_x = 1
+ },
+/turf/open/floor/almayer,
+/area/almayer/living/numbertwobunks)
"rJD" = (
/obj/structure/prop/invuln/overhead_pipe{
pixel_x = 12
@@ -65135,17 +65251,43 @@
/obj/structure/machinery/cm_vending/own_points/experimental_tools,
/turf/open/floor/almayer,
/area/almayer/living/synthcloset)
-"rJJ" = (
-/obj/effect/decal/cleanable/blood,
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/execution)
"rJK" = (
/obj/structure/pipes/vents/pump,
/turf/open/floor/almayer,
/area/almayer/living/briefing)
+"rJN" = (
+/obj/structure/sign/safety/rewire{
+ pixel_y = 32
+ },
+/obj/item/bedsheet/brown{
+ layer = 3.1
+ },
+/obj/structure/window/reinforced{
+ dir = 4;
+ pixel_x = -2;
+ pixel_y = 4
+ },
+/obj/structure/bed{
+ can_buckle = 0
+ },
+/obj/structure/window/reinforced{
+ dir = 8;
+ layer = 3.3;
+ pixel_y = 4
+ },
+/obj/structure/bed{
+ buckling_y = 13;
+ layer = 3.5;
+ pixel_y = 13
+ },
+/obj/item/bedsheet/brown{
+ pixel_y = 13
+ },
+/turf/open/floor/almayer{
+ dir = 5;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"rKd" = (
/turf/open/floor/almayer/uscm/directional{
dir = 5
@@ -65234,20 +65376,6 @@
dir = 8
},
/area/almayer/medical/containment/cell/cl)
-"rMF" = (
-/obj/structure/machinery/status_display{
- pixel_x = 32
- },
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 1;
- name = "ship-grade camera"
- },
-/turf/open/floor/almayer{
- dir = 6;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/lobby)
"rNa" = (
/obj/structure/surface/table/woodentable/fancy,
/obj/item/paper_bin/uscm{
@@ -65371,12 +65499,28 @@
icon_state = "blue"
},
/area/almayer/squads/delta)
+"rQc" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 1
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 1
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/processing)
"rQj" = (
/obj/structure/largecrate/random/barrel/yellow,
/turf/open/floor/almayer{
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_a_p)
+"rQt" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment,
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/cic_hallway)
"rQy" = (
/turf/closed/wall/almayer/white/reinforced,
/area/almayer/medical/hydroponics)
@@ -65441,25 +65585,6 @@
icon_state = "red"
},
/area/almayer/lifeboat_pumps/south1)
-"rRI" = (
-/obj/structure/machinery/door_control{
- id = "firearm_storage_armory";
- name = "Armory Lockdown";
- pixel_y = 24;
- req_access_txt = "4"
- },
-/obj/structure/sign/safety/ammunition{
- pixel_y = 32
- },
-/obj/structure/sign/safety/restrictedarea{
- pixel_x = 15;
- pixel_y = 32
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"rRU" = (
/obj/structure/machinery/light{
dir = 8
@@ -65565,26 +65690,6 @@
icon_state = "silver"
},
/area/almayer/command/computerlab)
-"rUB" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 1
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- id = "Brig Lockdown Shutters";
- name = "\improper Brig Lockdown Shutter"
- },
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 1;
- name = "\improper Brig Maintenance"
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- id = "perma_lockdown_2";
- name = "\improper Perma Lockdown Shutter"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/perma)
"rUU" = (
/obj/structure/machinery/door/airlock/almayer/maint{
req_access = null;
@@ -65599,6 +65704,29 @@
icon_state = "test_floor4"
},
/area/almayer/hull/lower_hull/l_f_s)
+"rVg" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/airlock/almayer/security/reinforced{
+ access_modified = 1;
+ name = "\improper Astronavigational Deck";
+ req_access = null;
+ req_one_access_txt = "3;19";
+ closeOtherId = "astroladder_s"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/navigation)
+"rVm" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4;
+ icon_state = "pipe-c"
+ },
+/obj/structure/pipes/standard/simple/hidden/supply,
+/turf/open/floor/almayer{
+ icon_state = "redcorner"
+ },
+/area/almayer/shipboard/brig/main_office)
"rVo" = (
/obj/structure/machinery/light/small{
dir = 1
@@ -65607,21 +65735,28 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_a_s)
+"rVC" = (
+/obj/structure/machinery/door/airlock/almayer/medical/glass{
+ name = "\improper Brig Medbay";
+ req_access = null;
+ req_one_access = null;
+ req_one_access_txt = "20;3";
+ closeOtherId = "brigmed"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/surgery)
"rVN" = (
/turf/open/floor/almayer{
dir = 8;
icon_state = "red"
},
/area/almayer/shipboard/port_missiles)
-"rWb" = (
-/obj/structure/machinery/door/poddoor/almayer/open{
- id = "Brig Lockdown Shutters";
- name = "\improper Brig Lockdown Shutter"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/hull/upper_hull/u_f_s)
"rWn" = (
/obj/structure/window/framed/almayer,
/obj/structure/machinery/door/firedoor/border_only/almayer{
@@ -65828,6 +65963,20 @@
icon_state = "test_floor4"
},
/area/almayer/engineering/upper_engineering/notunnel)
+"sbD" = (
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 1;
+ name = "\improper Brig";
+ closeOtherId = "brigmaint_n"
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ id = "Brig Lockdown Shutters";
+ name = "\improper Brig Lockdown Shutter"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/hull/upper_hull/u_f_s)
"sbJ" = (
/turf/closed/wall/almayer/white/hull,
/area/almayer/powered/agent)
@@ -66013,12 +66162,6 @@
},
/turf/open/floor/almayer,
/area/almayer/engineering/lower_engineering)
-"sgb" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/processing)
"sgc" = (
/obj/structure/closet/crate/freezer/cooler{
pixel_x = -7
@@ -66329,14 +66472,6 @@
icon_state = "green"
},
/area/almayer/living/grunt_rnr)
-"smj" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/cells)
"smn" = (
/obj/structure/sign/safety/escapepod{
pixel_y = -32
@@ -66349,6 +66484,23 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/engineering/engineering_workshop)
+"smZ" = (
+/obj/structure/window/framed/almayer/hull/hijack_bustable,
+/obj/structure/machinery/door/poddoor/shutters/almayer/open{
+ dir = 4;
+ id = "Warden Office Shutters";
+ name = "\improper Privacy Shutters"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 8
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "courtyard_cells";
+ name = "\improper Courtyard Lockdown Shutter"
+ },
+/turf/open/floor/plating,
+/area/almayer/shipboard/brig/chief_mp_office)
"snb" = (
/obj/structure/ladder{
height = 1;
@@ -66440,6 +66592,16 @@
icon_state = "blue"
},
/area/almayer/squads/delta)
+"snX" = (
+/obj/structure/sign/safety/medical{
+ pixel_x = 16;
+ pixel_y = 27
+ },
+/turf/open/floor/almayer{
+ dir = 9;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"soq" = (
/obj/structure/machinery/computer/working_joe{
dir = 4;
@@ -66585,16 +66747,6 @@
icon_state = "plate"
},
/area/almayer/shipboard/brig/perma)
-"sqn" = (
-/obj/structure/machinery/cryopod,
-/obj/structure/machinery/light{
- dir = 8;
- invisibility = 101
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/cryo)
"sqo" = (
/obj/structure/pipes/standard/simple/hidden/supply,
/obj/structure/disposalpipe/segment,
@@ -66614,22 +66766,6 @@
icon_state = "green"
},
/area/almayer/shipboard/brig/cells)
-"sry" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/cameras/almayer_network{
- dir = 4;
- layer = 2.8;
- pixel_y = 5
- },
-/obj/structure/sign/safety/terminal{
- pixel_x = 8;
- pixel_y = 32
- },
-/turf/open/floor/almayer{
- dir = 9;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"srT" = (
/obj/structure/machinery/door/firedoor/border_only/almayer{
dir = 8
@@ -66732,6 +66868,17 @@
icon_state = "mono"
},
/area/almayer/lifeboat_pumps/north1)
+"stO" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/faxmachine/uscm/brig,
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 1;
+ name = "ship-grade camera"
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/perma)
"stY" = (
/obj/structure/machinery/door/firedoor/border_only/almayer,
/obj/structure/pipes/standard/simple/hidden/supply{
@@ -66923,6 +67070,18 @@
},
/turf/open/floor/almayer,
/area/almayer/squads/delta)
+"syN" = (
+/obj/structure/machinery/cm_vending/gear/executive_officer{
+ pixel_y = 30;
+ density = 0
+ },
+/obj/structure/machinery/power/apc/almayer{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/living/numbertwobunks)
"syP" = (
/obj/effect/decal/warning_stripes{
icon_state = "E";
@@ -66930,17 +67089,6 @@
},
/turf/open/floor/almayer,
/area/almayer/hallways/port_hallway)
-"syQ" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
- name = "\improper Brig Cells"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 1
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/processing)
"szf" = (
/obj/structure/disposalpipe/segment{
dir = 1;
@@ -66966,13 +67114,6 @@
icon_state = "test_floor4"
},
/area/almayer/engineering/engine_core)
-"szx" = (
-/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle,
-/obj/structure/machinery/light/small{
- dir = 8
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"szE" = (
/obj/effect/decal/warning_stripes{
icon_state = "NE-out";
@@ -67004,6 +67145,12 @@
icon_state = "plate"
},
/area/almayer/living/pilotbunks)
+"szR" = (
+/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
+ pixel_y = 25
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/main_office)
"szU" = (
/obj/structure/toilet{
dir = 8
@@ -67113,6 +67260,29 @@
icon_state = "silver"
},
/area/almayer/shipboard/brig/cic_hallway)
+"sCR" = (
+/obj/effect/decal/warning_stripes{
+ icon_state = "NE-out";
+ pixel_x = 1;
+ pixel_y = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "NW-out";
+ pixel_x = -1;
+ pixel_y = 1
+ },
+/obj/structure/machinery/door/airlock/almayer/research/reinforced{
+ dir = 8;
+ name = "\improper Containment Airlock";
+ closeOtherId = "containment_n"
+ },
+/obj/structure/machinery/door/poddoor/almayer/biohazard/white{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/medical/medical_science)
"sDu" = (
/obj/item/clothing/under/marine/dress,
/turf/open/floor/almayer{
@@ -67260,6 +67430,22 @@
icon_state = "plate"
},
/area/almayer/command/cic)
+"sEZ" = (
+/obj/structure/reagent_dispensers/peppertank{
+ pixel_y = 26
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "E";
+ pixel_x = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "W";
+ pixel_x = -2
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/armory)
"sFf" = (
/turf/open/floor/almayer{
icon_state = "cargo"
@@ -67458,6 +67644,10 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_a_p)
+"sJm" = (
+/obj/structure/pipes/vents/pump,
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/chief_mp_office)
"sJC" = (
/obj/structure/surface/table/almayer,
/obj/item/trash/USCMtray{
@@ -67649,14 +67839,6 @@
icon_state = "plate"
},
/area/almayer/living/offices)
-"sPw" = (
-/obj/structure/machinery/power/apc/almayer{
- dir = 1
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/cryo)
"sPA" = (
/obj/structure/sign/safety/ladder{
pixel_x = 8;
@@ -67821,6 +68003,21 @@
icon_state = "silver"
},
/area/almayer/shipboard/brig/cic_hallway)
+"sTs" = (
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "Brig Lockdown Shutters";
+ name = "\improper Brig Lockdown Shutter"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ name = "\improper Brig";
+ closeOtherId = "brigmaint_n"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/main_office)
"sTw" = (
/obj/structure/platform_decoration{
dir = 8
@@ -67870,20 +68067,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/cells)
-"sUu" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "S"
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"sUE" = (
/obj/structure/surface/table/reinforced/almayer_B,
/turf/open/floor/almayer{
@@ -67939,11 +68122,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/lower_hull/l_m_p)
-"sVV" = (
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/cryo)
"sWs" = (
/obj/structure/closet/emcloset,
/turf/open/floor/almayer{
@@ -68065,21 +68243,31 @@
icon_state = "orange"
},
/area/almayer/engineering/lower_engineering)
-"sYc" = (
-/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{
- dir = 1;
- name = "\improper Hydroponics Garden"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/cells)
"sYh" = (
/turf/open/floor/almayer{
dir = 1;
icon_state = "sterile_green_side"
},
/area/almayer/medical/lower_medical_medbay)
+"sYi" = (
+/obj/structure/machinery/door_control{
+ id = "firearm_storage_armory";
+ name = "Armory Lockdown";
+ pixel_y = 24;
+ req_access_txt = "4"
+ },
+/obj/structure/sign/safety/ammunition{
+ pixel_y = 32
+ },
+/obj/structure/sign/safety/restrictedarea{
+ pixel_x = 15;
+ pixel_y = 32
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"sYw" = (
/obj/structure/platform{
dir = 8
@@ -68118,16 +68306,19 @@
},
/area/almayer/command/lifeboat)
"sYE" = (
-/obj/structure/sign/safety/maint{
- pixel_x = -19;
- pixel_y = -6
+/obj/structure/disposalpipe/segment{
+ dir = 4
},
-/obj/structure/sign/safety/bulkhead_door{
- pixel_x = -19;
- pixel_y = 6
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
},
-/turf/open/floor/almayer,
-/area/almayer/hull/upper_hull/u_f_p)
+/obj/structure/machinery/status_display{
+ pixel_y = -32
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"sYP" = (
/obj/structure/reagent_dispensers/fueltank/custom,
/turf/open/floor/almayer{
@@ -68255,6 +68446,27 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/almayer,
/area/almayer/living/port_emb)
+"tau" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/reinforced{
+ dir = 2;
+ name = "\improper Brig Permanent Confinement"
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "perma_lockdown_1";
+ name = "\improper Perma Lockdown Shutter"
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/perma)
"taA" = (
/obj/structure/machinery/light{
dir = 4
@@ -68353,6 +68565,20 @@
icon_state = "orangecorner"
},
/area/almayer/engineering/engine_core)
+"tdy" = (
+/obj/structure/bed/sofa/south/grey/right,
+/obj/structure/sign/safety/restrictedarea{
+ pixel_y = 32
+ },
+/obj/structure/sign/safety/security{
+ pixel_x = 15;
+ pixel_y = 32
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/lobby)
"tdE" = (
/obj/structure/window/reinforced{
dir = 8
@@ -68456,6 +68682,12 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/starboard)
+"tff" = (
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/lobby)
"tfl" = (
/obj/structure/machinery/light{
dir = 1
@@ -68739,16 +68971,6 @@
},
/turf/open/floor/almayer,
/area/almayer/shipboard/weapon_room)
-"tkw" = (
-/obj/structure/disposalpipe/segment{
- dir = 8;
- icon_state = "pipe-c"
- },
-/obj/structure/pipes/standard/manifold/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/processing)
"tkN" = (
/obj/structure/machinery/cm_vending/sorted/cargo_ammo/squad{
req_access = null;
@@ -68857,6 +69079,18 @@
},
/turf/open/floor/almayer,
/area/almayer/living/briefing)
+"tmH" = (
+/obj/structure/pipes/vents/pump,
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 4;
+ name = "ship-grade camera";
+ pixel_y = 6
+ },
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "redcorner"
+ },
+/area/almayer/shipboard/brig/execution)
"tmI" = (
/obj/structure/machinery/light,
/obj/effect/decal/warning_stripes{
@@ -68995,13 +69229,6 @@
icon_state = "test_floor4"
},
/area/almayer/hull/lower_hull/l_m_s)
-"tpB" = (
-/obj/structure/disposalpipe/segment{
- dir = 1;
- icon_state = "pipe-c"
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/cic_hallway)
"tpD" = (
/obj/effect/decal/warning_stripes{
icon_state = "E";
@@ -69233,18 +69460,6 @@
},
/turf/open/floor/plating,
/area/almayer/powered/agent)
-"ttv" = (
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 5
- },
-/obj/structure/sign/safety/rewire{
- pixel_x = 12;
- pixel_y = -24
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"ttE" = (
/obj/structure/surface/table/almayer,
/obj/item/paper_bin{
@@ -69458,24 +69673,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/port_hallway)
-"txI" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
- dir = 2;
- name = "\improper Brig Armoury";
- req_access = null;
- req_one_access_txt = "1;3"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/main_office)
"txO" = (
/obj/structure/machinery/landinglight/ds1{
dir = 4
@@ -69586,20 +69783,6 @@
icon_state = "dark_sterile"
},
/area/almayer/medical/lower_medical_lobby)
-"tzR" = (
-/obj/structure/bed/sofa/south/grey/right,
-/obj/structure/sign/safety/restrictedarea{
- pixel_y = 32
- },
-/obj/structure/sign/safety/security{
- pixel_x = 15;
- pixel_y = 32
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/lobby)
"tAi" = (
/obj/structure/sign/safety/hvac_old{
pixel_x = 8;
@@ -69959,18 +70142,6 @@
},
/turf/open/floor/wood/ship,
/area/almayer/living/basketball)
-"tIP" = (
-/obj/structure/surface/table/almayer,
-/obj/item/tool/extinguisher,
-/obj/item/reagent_container/spray/cleaner{
- pixel_x = -8;
- pixel_y = 3
- },
-/turf/open/floor/almayer{
- dir = 10;
- icon_state = "silver"
- },
-/area/almayer/shipboard/brig/cic_hallway)
"tIQ" = (
/obj/effect/decal/warning_stripes{
icon_state = "N";
@@ -70077,6 +70248,33 @@
icon_state = "cargo"
},
/area/almayer/living/bridgebunks)
+"tLa" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 2
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "NW-out";
+ pixel_x = -2;
+ pixel_y = 1
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "NE-out";
+ pixel_x = 2;
+ pixel_y = 1
+ },
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 2;
+ name = "\improper Armory"
+ },
+/obj/structure/machinery/door/poddoor/shutters/almayer{
+ dir = 2;
+ id = "firearm_storage_armory";
+ name = "\improper Armory Shutters"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/armory)
"tLc" = (
/obj/structure/surface/rack,
/obj/item/storage/bag/plants{
@@ -70277,18 +70475,6 @@
/obj/structure/machinery/light,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/hangar)
-"tQT" = (
-/obj/structure/machinery/cm_vending/gear/executive_officer{
- pixel_y = 30;
- density = 0
- },
-/obj/structure/machinery/power/apc/almayer{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/living/numbertwobunks)
"tQV" = (
/turf/closed/wall/almayer/outer,
/area/almayer/lifeboat_pumps/south1)
@@ -70319,7 +70505,15 @@
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/lower_hull/l_f_s)
"tRX" = (
-/turf/closed/wall/almayer,
+/obj/structure/machinery/door/airlock/almayer/maint/reinforced,
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "Brig Lockdown Shutters";
+ name = "\improper Brig Lockdown Shutter"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
/area/almayer/hull/upper_hull/u_f_s)
"tSc" = (
/obj/structure/machinery/door/firedoor/border_only/almayer{
@@ -70415,19 +70609,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/squads/req)
-"tUj" = (
-/obj/effect/decal/warning_stripes{
- icon_state = "E";
- pixel_x = 2
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "W";
- pixel_x = -2
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/armory)
"tUo" = (
/obj/item/clipboard,
/obj/structure/surface/table/reinforced/black,
@@ -70636,6 +70817,17 @@
},
/turf/open/floor/wood/ship,
/area/almayer/living/commandbunks)
+"tYW" = (
+/obj/structure/bed/chair/bolted{
+ dir = 1
+ },
+/obj/structure/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/perma)
"tYX" = (
/turf/open/floor/almayer{
icon_state = "test_floor4"
@@ -70815,23 +71007,6 @@
icon_state = "ai_floors"
},
/area/almayer/command/airoom)
-"uch" = (
-/obj/structure/closet/secure_closet/cmdcabinet{
- desc = "A bulletproof cabinet containing communications equipment.";
- name = "communications cabinet";
- pixel_y = 24;
- req_access = null;
- req_one_access_txt = "3"
- },
-/obj/item/device/radio/listening_bug/radio_linked/mp{
- pixel_y = 8
- },
-/obj/item/device/radio/listening_bug/radio_linked/mp,
-/turf/open/floor/almayer{
- dir = 5;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"ucp" = (
/obj/structure/window/framed/almayer,
/turf/open/floor/plating,
@@ -70864,17 +71039,6 @@
icon_state = "plate"
},
/area/almayer/command/cic)
-"ucW" = (
-/obj/structure/machinery/optable,
-/obj/structure/sign/safety/medical{
- pixel_x = 8;
- pixel_y = 29
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "sterile_green_corner"
- },
-/area/almayer/shipboard/brig/surgery)
"udi" = (
/turf/open/floor/almayer{
icon_state = "red"
@@ -71097,12 +71261,10 @@
icon_state = "cargo_arrow"
},
/area/almayer/living/offices)
-"uhm" = (
-/obj/structure/machinery/light{
- dir = 4
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/cells)
+"uhE" = (
+/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"uhM" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 5
@@ -71117,6 +71279,12 @@
icon_state = "cargo_arrow"
},
/area/almayer/living/offices)
+"uhW" = (
+/turf/open/floor/almayer{
+ dir = 1;
+ icon_state = "redcorner"
+ },
+/area/almayer/shipboard/brig/main_office)
"uia" = (
/obj/structure/prop/invuln/overhead_pipe{
pixel_x = 12
@@ -71310,14 +71478,6 @@
icon_state = "mono"
},
/area/almayer/medical/upper_medical)
-"umQ" = (
-/obj/structure/flora/pottedplant{
- icon_state = "pottedplant_21"
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/living/numbertwobunks)
"umS" = (
/obj/structure/bed/chair/comfy{
dir = 8
@@ -71406,21 +71566,6 @@
icon_state = "sterile_green"
},
/area/almayer/medical/containment)
-"uov" = (
-/obj/structure/surface/table/almayer,
-/obj/item/folder/red{
- pixel_x = -4
- },
-/obj/item/folder/blue{
- pixel_x = 4
- },
-/obj/structure/machinery/light{
- dir = 1
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/evidence_storage)
"uoA" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 5
@@ -71436,28 +71581,6 @@
icon_state = "silver"
},
/area/almayer/command/computerlab)
-"uoK" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "Brig Lockdown Shutters";
- name = "\improper Brig Lockdown Shutter"
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
- dir = 2;
- name = "\improper Brig Lobby";
- req_access = null
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/lobby)
"uoS" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/machinery/light/small{
@@ -71479,15 +71602,6 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_m_p)
-"upJ" = (
-/obj/structure/bed/chair/bolted{
- dir = 4
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/processing)
"upM" = (
/obj/structure/machinery/light{
dir = 4
@@ -71555,6 +71669,17 @@
"uqo" = (
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/armory)
+"uqy" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 2
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
+ name = "\improper Brig Cells"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/main_office)
"uqA" = (
/obj/structure/machinery/firealarm{
dir = 8;
@@ -71575,29 +71700,6 @@
},
/turf/open/floor/almayer,
/area/almayer/command/lifeboat)
-"urg" = (
-/obj/structure/machinery/flasher{
- id = "Perma 1";
- pixel_y = 24
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/perma)
-"urL" = (
-/obj/structure/machinery/door/poddoor/almayer/locked{
- dir = 2;
- id = "Perma 2";
- name = "\improper cell shutter"
- },
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 2;
- name = "\improper Isolation Cell"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/perma)
"urM" = (
/obj/structure/machinery/light{
dir = 8
@@ -71678,23 +71780,6 @@
icon_state = "cargo"
},
/area/almayer/engineering/upper_engineering)
-"utx" = (
-/obj/structure/machinery/computer/working_joe{
- dir = 4;
- pixel_x = -17
- },
-/obj/structure/machinery/door_control/brbutton{
- id = "engie_store";
- name = "Emergency Storage";
- pixel_x = -2;
- pixel_y = 26;
- req_one_access_txt = "6"
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "orangecorner"
- },
-/area/almayer/engineering/ce_room)
"utK" = (
/obj/structure/machinery/light{
dir = 4
@@ -71709,16 +71794,11 @@
},
/area/almayer/medical/containment/cell)
"utZ" = (
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "Brig Lockdown Shutters";
- name = "\improper Brig Lockdown Shutter"
- },
-/obj/structure/machinery/door/airlock/almayer/maint/reinforced,
/turf/open/floor/almayer{
- icon_state = "test_floor4"
+ dir = 4;
+ icon_state = "redcorner"
},
-/area/almayer/hull/upper_hull/u_f_p)
+/area/almayer/shipboard/brig/processing)
"uuj" = (
/obj/structure/surface/table/almayer,
/obj/item/trash/USCMtray{
@@ -71864,20 +71944,6 @@
icon_state = "red"
},
/area/almayer/shipboard/brig/cells)
-"uwh" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "SW-out"
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"uws" = (
/obj/structure/machinery/light{
dir = 4
@@ -71907,6 +71973,24 @@
},
/turf/open/floor/almayer,
/area/almayer/shipboard/brig/cic_hallway)
+"uwS" = (
+/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
+ dir = 2;
+ name = "\improper Brig Armoury";
+ req_access = null;
+ req_one_access_txt = "1;3"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/main_office)
"uwZ" = (
/obj/effect/decal/warning_stripes{
icon_state = "N";
@@ -71981,6 +72065,24 @@
icon_state = "greencorner"
},
/area/almayer/hallways/port_hallway)
+"uyh" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "CIC Lockdown";
+ name = "\improper Combat Information Center Blast Door"
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/airlock/almayer/command/reinforced{
+ name = "\improper Combat Information Center";
+ closeOtherId = "ciclobby_s"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/command/cic)
"uys" = (
/turf/closed/wall/almayer/reinforced,
/area/almayer/squads/req)
@@ -71997,6 +72099,25 @@
icon_state = "dark_sterile"
},
/area/almayer/medical/chemistry)
+"uyY" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/airlock/almayer/security/reinforced{
+ access_modified = 1;
+ name = "\improper Astronavigational Deck";
+ req_access = null;
+ req_one_access_txt = "3;19";
+ closeOtherId = "astroladder_n"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/navigation)
"uzg" = (
/obj/structure/sign/safety/water{
pixel_x = 8;
@@ -72340,6 +72461,28 @@
},
/turf/open/floor/almayer,
/area/almayer/hallways/aft_hallway)
+"uGv" = (
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ name = "\improper Warden's Office";
+ closeOtherId = "brigwarden"
+ },
+/obj/structure/machinery/door/poddoor/shutters/almayer/open{
+ dir = 4;
+ id = "Warden Office Shutters";
+ name = "\improper Privacy Shutters"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer{
+ dir = 8
+ },
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "courtyard_cells";
+ name = "\improper Courtyard Lockdown Shutter"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"uGw" = (
/obj/structure/surface/table/almayer,
/obj/item/reagent_container/food/drinks/cans/souto/diet/lime{
@@ -72348,22 +72491,16 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/lower_hull/l_m_s)
+"uGN" = (
+/obj/structure/pipes/vents/pump,
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/general_equipment)
"uGQ" = (
/obj/structure/machinery/suit_storage_unit/compression_suit/uscm,
/turf/open/floor/almayer{
icon_state = "plate"
},
/area/almayer/engineering/upper_engineering/starboard)
-"uHu" = (
-/obj/item/vehicle_clamp,
-/obj/item/vehicle_clamp,
-/obj/item/vehicle_clamp,
-/obj/structure/machinery/light/small{
- dir = 4
- },
-/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"uId" = (
/obj/effect/decal/warning_stripes{
icon_state = "W"
@@ -72723,22 +72860,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/living/port_emb)
-"uQS" = (
-/obj/structure/reagent_dispensers/peppertank{
- pixel_y = 26
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "E";
- pixel_x = 2
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "W";
- pixel_x = -2
- },
-/turf/open/floor/almayer{
- icon_state = "plate"
- },
-/area/almayer/shipboard/brig/armory)
"uQU" = (
/obj/structure/stairs{
dir = 1
@@ -73040,6 +73161,12 @@
icon_state = "orange"
},
/area/almayer/engineering/lower_engineering)
+"uVV" = (
+/obj/structure/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/cells)
"uVX" = (
/obj/structure/machinery/light{
dir = 1
@@ -73201,33 +73328,6 @@
icon_state = "plate"
},
/area/almayer/hallways/hangar)
-"vbq" = (
-/obj/structure/machinery/door/poddoor/shutters/almayer{
- dir = 2;
- id = "firearm_storage_armory";
- name = "\improper Armory Shutters"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 2
- },
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 2;
- name = "\improper Armory"
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "NE-out";
- pixel_x = 2;
- pixel_y = 1
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "NW-out";
- pixel_x = -2;
- pixel_y = 1
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/armory)
"vbB" = (
/turf/open/floor/plating/plating_catwalk,
/area/almayer/lifeboat_pumps/south1)
@@ -73322,20 +73422,6 @@
icon_state = "test_floor4"
},
/area/almayer/medical/lower_medical_lobby)
-"vcs" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/structure/machinery/status_display{
- pixel_y = -32
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"vcu" = (
/obj/effect/landmark/start/engineering,
/turf/open/floor/plating/plating_catwalk,
@@ -73778,6 +73864,15 @@
allow_construction = 0
},
/area/almayer/command/airoom)
+"viH" = (
+/obj/structure/machinery/door/airlock/almayer/generic{
+ dir = 1;
+ name = "Bathroom"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/main_office)
"viJ" = (
/obj/structure/machinery/door/airlock/almayer/maint,
/turf/open/floor/almayer{
@@ -73967,6 +74062,12 @@
},
/turf/open/floor/almayer,
/area/almayer/shipboard/brig/cells)
+"vlN" = (
+/obj/structure/pipes/vents/pump,
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"vlO" = (
/obj/structure/window/reinforced{
dir = 4;
@@ -74157,15 +74258,6 @@
icon_state = "test_floor4"
},
/area/almayer/shipboard/brig/processing)
-"vqi" = (
-/obj/structure/machinery/atm{
- pixel_y = 32
- },
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"vqC" = (
/obj/structure/pipes/vents/pump{
dir = 4
@@ -74250,20 +74342,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/cells)
-"vrA" = (
-/obj/item/stack/sheet/glass/reinforced{
- amount = 50
- },
-/obj/effect/spawner/random/toolbox,
-/obj/effect/spawner/random/powercell,
-/obj/effect/spawner/random/powercell,
-/obj/structure/surface/rack,
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 1;
- name = "ship-grade camera"
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/chief_mp_office)
"vrB" = (
/obj/structure/closet/crate{
desc = "One of those old special operations crates from back in the day. After a leaked report from a meeting of SOF leadership lambasted the crates as 'waste of operational funds' the crates were removed from service.";
@@ -74759,6 +74837,15 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/port_hallway)
+"vzz" = (
+/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{
+ dir = 1;
+ name = "\improper Hydroponics Garden"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/cells)
"vzK" = (
/turf/open/floor/almayer,
/area/almayer/engineering/ce_room)
@@ -74839,15 +74926,6 @@
icon_state = "silver"
},
/area/almayer/living/briefing)
-"vBF" = (
-/obj/structure/machinery/cryopod/right,
-/obj/structure/sign/safety/cryo{
- pixel_x = 32
- },
-/turf/open/floor/almayer{
- icon_state = "cargo"
- },
-/area/almayer/shipboard/brig/cryo)
"vBJ" = (
/obj/structure/surface/table/almayer,
/obj/item/tool/pen,
@@ -74868,15 +74946,6 @@
icon_state = "green"
},
/area/almayer/squads/req)
-"vCc" = (
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 1;
- name = "ship-grade camera"
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"vCg" = (
/obj/effect/decal/warning_stripes{
icon_state = "W"
@@ -75034,24 +75103,6 @@
icon_state = "dark_sterile"
},
/area/almayer/living/numbertwobunks)
-"vGY" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/cameras/almayer_network{
- dir = 8;
- pixel_y = 6
- },
-/obj/structure/machinery/door_control{
- id = "perma_lockdown_1";
- name = "\improper Perma Cells Lockdown";
- pixel_x = -8;
- pixel_y = -4;
- req_access_txt = "3"
- },
-/turf/open/floor/almayer{
- dir = 4;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/perma)
"vHa" = (
/obj/structure/surface/table/reinforced/almayer_B,
/obj/structure/machinery/computer/ares_console{
@@ -75199,21 +75250,6 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_f_p)
-"vIM" = (
-/obj/structure/reagent_dispensers/water_cooler/stacks{
- density = 0;
- pixel_x = -7;
- pixel_y = 17
- },
-/obj/structure/sign/safety/cryo{
- pixel_x = 12;
- pixel_y = 28
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"vIN" = (
/obj/structure/sign/safety/distribution_pipes{
pixel_x = 15;
@@ -75304,6 +75340,21 @@
icon_state = "sterile_green_corner"
},
/area/almayer/medical/containment)
+"vKc" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "CIC Lockdown";
+ name = "\improper Combat Information Center Blast Door"
+ },
+/obj/structure/machinery/door/airlock/almayer/command/reinforced{
+ name = "\improper Combat Information Center";
+ closeOtherId = "ciclobby_n"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/command/cic)
"vKe" = (
/obj/structure/pipes/standard/simple/hidden/supply,
/turf/open/floor/almayer{
@@ -75320,6 +75371,13 @@
icon_state = "test_floor4"
},
/area/almayer/hull/lower_hull/l_f_s)
+"vKB" = (
+/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle,
+/obj/structure/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/armory)
"vKF" = (
/obj/structure/stairs{
dir = 8;
@@ -75771,16 +75829,6 @@
icon_state = "plate"
},
/area/almayer/engineering/upper_engineering)
-"vTI" = (
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/manifold/hidden/supply,
-/obj/structure/machinery/light,
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"vTK" = (
/turf/closed/wall/almayer/outer,
/area/almayer/hull/lower_hull/l_a_p)
@@ -75790,23 +75838,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/living/cryo_cells)
-"vTW" = (
-/obj/structure/window/framed/almayer/hull/hijack_bustable,
-/obj/structure/machinery/door/poddoor/shutters/almayer/open{
- dir = 4;
- id = "Warden Office Shutters";
- name = "\improper Privacy Shutters"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 8
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "courtyard_cells";
- name = "\improper Courtyard Lockdown Shutter"
- },
-/turf/open/floor/plating,
-/area/almayer/shipboard/brig/chief_mp_office)
"vUb" = (
/obj/effect/landmark/start/marine/alpha,
/obj/effect/landmark/late_join/alpha,
@@ -75849,6 +75880,9 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/upper_hull/u_f_p)
+"vUP" = (
+/turf/closed/wall/almayer/reinforced,
+/area/almayer/shipboard/brig/cic_hallway)
"vUU" = (
/obj/structure/machinery/camera/autoname/almayer{
dir = 8;
@@ -76063,24 +76097,6 @@
icon_state = "ai_floors"
},
/area/almayer/command/airoom)
-"vXV" = (
-/obj/structure/machinery/light{
- unacidable = 1;
- unslashable = 1
- },
-/obj/structure/disposalpipe/segment{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "SE-out"
- },
-/turf/open/floor/almayer{
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/main_office)
"vXX" = (
/obj/structure/surface/rack,
/obj/effect/spawner/random/tool,
@@ -76364,24 +76380,18 @@
},
/turf/open/floor/almayer,
/area/almayer/living/auxiliary_officer_office)
-"wdo" = (
-/obj/structure/machinery/door/airlock/almayer/research/reinforced{
- dir = 8;
- name = "\improper Containment Airlock"
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "S"
- },
-/obj/structure/machinery/door/poddoor/almayer/biohazard/white{
- dir = 4
- },
-/obj/structure/pipes/standard/simple/hidden/supply/no_boom{
- dir = 4
+"wdh" = (
+/obj/structure/surface/table/almayer,
+/obj/item/tool/extinguisher,
+/obj/item/reagent_container/spray/cleaner{
+ pixel_x = -8;
+ pixel_y = 3
},
/turf/open/floor/almayer{
- icon_state = "test_floor4"
+ dir = 10;
+ icon_state = "silver"
},
-/area/almayer/medical/medical_science)
+/area/almayer/shipboard/brig/cic_hallway)
"wdz" = (
/obj/effect/landmark/start/marine/engineer/charlie,
/obj/effect/landmark/late_join/charlie,
@@ -76454,6 +76464,17 @@
},
/turf/open/floor/plating,
/area/almayer/living/pilotbunks)
+"weN" = (
+/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
+ dir = 2;
+ name = "\improper Brig Lobby";
+ closeOtherId = "briglobby"
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/processing)
"weR" = (
/obj/structure/machinery/cryopod,
/turf/open/floor/almayer{
@@ -76474,6 +76495,24 @@
},
/turf/open/floor/wood/ship,
/area/almayer/command/corporateliason)
+"wfB" = (
+/obj/structure/machinery/light{
+ unacidable = 1;
+ unslashable = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/decal/warning_stripes{
+ icon_state = "SE-out"
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"wfE" = (
/turf/closed/wall/almayer,
/area/almayer/living/gym)
@@ -76912,6 +76951,15 @@
/obj/structure/window/framed/almayer/white/hull,
/turf/open/floor/plating,
/area/almayer/command/airoom)
+"wnw" = (
+/obj/structure/machinery/flasher{
+ id = "Perma 2";
+ pixel_y = 24
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/perma)
"wnL" = (
/obj/item/stack/tile/carpet{
amount = 12
@@ -76970,15 +77018,6 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_a_p)
-"wpc" = (
-/obj/structure/bed/chair{
- dir = 8
- },
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "silvercorner"
- },
-/area/almayer/shipboard/brig/cic_hallway)
"wpg" = (
/obj/structure/machinery/blackbox_recorder,
/turf/open/shuttle/dropship{
@@ -77114,6 +77153,16 @@
/obj/structure/pipes/standard/simple/hidden/supply,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/lobby)
+"wsq" = (
+/obj/structure/disposalpipe/segment{
+ dir = 8;
+ icon_state = "pipe-c"
+ },
+/obj/structure/pipes/standard/manifold/hidden/supply{
+ dir = 4
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/processing)
"wst" = (
/obj/effect/decal/warning_stripes{
icon_state = "W"
@@ -77180,21 +77229,6 @@
},
/turf/open/floor/wood/ship,
/area/almayer/shipboard/brig/chief_mp_office)
-"wuc" = (
-/obj/structure/machinery/door/airlock/almayer/medical/glass{
- name = "\improper Brig Medbay";
- req_access = null;
- req_one_access = null;
- req_one_access_txt = "20;3"
- },
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/pipes/standard/simple/hidden/supply{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/surgery)
"wul" = (
/obj/structure/machinery/light/small{
dir = 4
@@ -77261,10 +77295,6 @@
icon_state = "red"
},
/area/almayer/lifeboat_pumps/south1)
-"wvk" = (
-/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
"wvE" = (
/obj/structure/surface/table/almayer,
/obj/structure/machinery/computer/cameras/almayer_network{
@@ -77485,17 +77515,20 @@
icon_state = "green"
},
/area/almayer/hallways/port_hallway)
-"wBy" = (
-/obj/structure/sign/safety/hazard{
- pixel_y = 32
+"wBd" = (
+/obj/structure/machinery/status_display{
+ pixel_x = 32
},
-/obj/structure/sign/safety/ammunition{
- pixel_x = 15;
- pixel_y = 32
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/camera/autoname/almayer{
+ dir = 1;
+ name = "ship-grade camera"
},
-/obj/structure/machinery/vending/security/riot,
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/armory)
+/turf/open/floor/almayer{
+ dir = 6;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/lobby)
"wBY" = (
/obj/structure/pipes/vents/pump,
/turf/open/floor/almayer,
@@ -77540,6 +77573,17 @@
icon_state = "ai_floors"
},
/area/almayer/command/airoom)
+"wCZ" = (
+/obj/structure/machinery/door/poddoor/almayer/open{
+ dir = 4;
+ id = "Brig Lockdown Shutters";
+ name = "\improper Brig Lockdown Shutter"
+ },
+/obj/structure/machinery/door/airlock/almayer/maint/reinforced,
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/hull/upper_hull/u_f_p)
"wDm" = (
/obj/effect/decal/warning_stripes{
icon_state = "NE-out";
@@ -78125,15 +78169,11 @@
},
/area/almayer/hull/lower_hull)
"wNt" = (
-/obj/structure/machinery/power/apc/almayer{
- cell_type = /obj/item/cell/hyper;
- dir = 1
- },
/turf/open/floor/almayer{
dir = 1;
- icon_state = "red"
+ icon_state = "redcorner"
},
-/area/almayer/shipboard/brig/main_office)
+/area/almayer/shipboard/brig/processing)
"wNS" = (
/obj/effect/decal/warning_stripes{
icon_state = "S"
@@ -78168,17 +78208,6 @@
icon_state = "orange"
},
/area/almayer/engineering/upper_engineering/port)
-"wOV" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer{
- dir = 1
- },
-/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
- name = "\improper Brig Lobby"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/lobby)
"wPf" = (
/obj/structure/sign/safety/reception{
pixel_x = 32;
@@ -78306,6 +78335,16 @@
icon_state = "dark_sterile"
},
/area/almayer/engineering/laundry)
+"wSu" = (
+/obj/structure/pipes/standard/manifold/hidden/supply{
+ dir = 8
+ },
+/obj/structure/disposalpipe/junction{
+ dir = 4;
+ icon_state = "pipe-j2"
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/lobby)
"wSK" = (
/obj/structure/janitorialcart,
/obj/item/tool/mop,
@@ -78672,42 +78711,6 @@
},
/turf/open/floor/plating,
/area/almayer/engineering/ce_room)
-"wZs" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/door_control{
- id = "courtyard_cells";
- name = "\improper Courtyard Lockdown Shutters";
- pixel_x = 6;
- req_access_txt = "3"
- },
-/obj/structure/machinery/door_control{
- id = "Brig Lockdown Shutters";
- name = "Brig Lockdown Shutters";
- pixel_x = -6;
- req_access_txt = "3"
- },
-/obj/structure/machinery/door_control{
- id = "courtyard window";
- name = "Courtyard Window Shutters";
- pixel_x = -6;
- pixel_y = 9;
- req_access_txt = "3"
- },
-/obj/structure/machinery/door_control{
- id = "Cell Privacy Shutters";
- name = "Cell Privacy Shutters";
- pixel_x = 6;
- pixel_y = 9;
- req_access_txt = "3"
- },
-/obj/structure/machinery/light{
- dir = 1
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"wZv" = (
/obj/structure/prop/invuln{
desc = "An inflated membrane. This one is puncture proof. Wow!";
@@ -78750,6 +78753,10 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_a_s)
+"wZL" = (
+/obj/structure/pipes/vents/pump,
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/perma)
"wZM" = (
/obj/effect/decal/warning_stripes{
icon_state = "S"
@@ -78758,6 +78765,18 @@
icon_state = "blue"
},
/area/almayer/hallways/aft_hallway)
+"wZN" = (
+/obj/structure/surface/table/almayer,
+/obj/item/storage/fancy/cigarettes/lucky_strikes,
+/obj/item/tool/lighter,
+/obj/item/clothing/glasses/sunglasses/blindfold,
+/obj/structure/machinery/light/small{
+ dir = 8
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/shipboard/brig/execution)
"wZT" = (
/obj/structure/sign/safety/hvac_old{
pixel_x = 8;
@@ -78880,10 +78899,6 @@
icon_state = "plate"
},
/area/almayer/living/gym)
-"xbp" = (
-/obj/structure/pipes/vents/pump,
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/chief_mp_office)
"xbN" = (
/obj/structure/surface/rack{
density = 0;
@@ -78952,25 +78967,6 @@
icon_state = "emeraldfull"
},
/area/almayer/living/briefing)
-"xet" = (
-/obj/structure/surface/table/almayer,
-/obj/structure/machinery/computer/card{
- dir = 4;
- layer = 3.2;
- pixel_y = 4
- },
-/obj/structure/machinery/computer/secure_data{
- dir = 4;
- pixel_y = 23
- },
-/obj/structure/machinery/light{
- dir = 8
- },
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/processing)
"xeG" = (
/obj/structure/machinery/door/airlock/almayer/maint,
/turf/open/floor/almayer{
@@ -79144,6 +79140,25 @@
icon_state = "plate"
},
/area/almayer/living/briefing)
+"xgQ" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/airlock/almayer/security/reinforced{
+ access_modified = 1;
+ name = "\improper Astronavigational Deck";
+ req_access = null;
+ req_one_access_txt = "3;19";
+ closeOtherId = "astroladder_n"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/navigation)
"xhn" = (
/obj/structure/largecrate/random/case/double,
/turf/open/floor/almayer{
@@ -79163,19 +79178,6 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/main_office)
-"xhM" = (
-/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
- dir = 1;
- name = "\improper Brig"
- },
-/obj/structure/machinery/door/poddoor/almayer/open{
- id = "Brig Lockdown Shutters";
- name = "\improper Brig Lockdown Shutter"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/hull/upper_hull/u_f_s)
"xhQ" = (
/obj/structure/window/framed/almayer,
/turf/open/floor/almayer{
@@ -79194,12 +79196,6 @@
},
/turf/open/floor/carpet,
/area/almayer/command/cichallway)
-"xii" = (
-/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
- pixel_y = 25
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/general_equipment)
"xik" = (
/obj/structure/machinery/shower{
dir = 8
@@ -79568,6 +79564,23 @@
icon_state = "dark_sterile"
},
/area/almayer/living/commandbunks)
+"xpo" = (
+/obj/structure/closet/secure_closet/cmdcabinet{
+ desc = "A bulletproof cabinet containing communications equipment.";
+ name = "communications cabinet";
+ pixel_y = 24;
+ req_access = null;
+ req_one_access_txt = "3"
+ },
+/obj/item/device/radio/listening_bug/radio_linked/mp{
+ pixel_y = 8
+ },
+/obj/item/device/radio/listening_bug/radio_linked/mp,
+/turf/open/floor/almayer{
+ dir = 5;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"xpt" = (
/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
pixel_y = 25
@@ -79665,6 +79678,18 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hallways/stern_hallway)
+"xrt" = (
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 5
+ },
+/obj/structure/sign/safety/rewire{
+ pixel_x = 12;
+ pixel_y = -24
+ },
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/chief_mp_office)
"xrN" = (
/obj/structure/largecrate/supply/supplies/mre,
/turf/open/floor/almayer{
@@ -79753,6 +79778,13 @@
icon_state = "plate"
},
/area/almayer/hull/upper_hull/u_m_s)
+"xuc" = (
+/obj/structure/disposalpipe/segment{
+ dir = 1;
+ icon_state = "pipe-c"
+ },
+/turf/open/floor/almayer,
+/area/almayer/shipboard/brig/cic_hallway)
"xuB" = (
/obj/structure/pipes/standard/simple/hidden/supply{
dir = 4
@@ -80314,6 +80346,25 @@
icon_state = "ai_floors"
},
/area/almayer/command/airoom)
+"xEd" = (
+/obj/structure/machinery/door/firedoor/border_only/almayer,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{
+ dir = 2;
+ name = "\improper Brig Armoury";
+ req_access = null;
+ req_one_access_txt = "1;3";
+ closeOtherId = "brignorth"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/main_office)
"xEz" = (
/obj/structure/surface/table/reinforced/prison,
/obj/item/book/manual/surgery,
@@ -80447,16 +80498,6 @@
icon_state = "cargo"
},
/area/almayer/hull/upper_hull/u_f_p)
-"xHZ" = (
-/obj/structure/pipes/standard/manifold/hidden/supply{
- dir = 8
- },
-/obj/structure/disposalpipe/junction{
- dir = 4;
- icon_state = "pipe-j2"
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/almayer/shipboard/brig/lobby)
"xIb" = (
/obj/structure/closet/emcloset,
/turf/open/floor/almayer{
@@ -80506,12 +80547,49 @@
},
/turf/open/floor/plating/plating_catwalk,
/area/almayer/shipboard/brig/evidence_storage)
+"xIu" = (
+/obj/structure/surface/table/almayer,
+/obj/structure/machinery/computer/secure_data{
+ dir = 8
+ },
+/obj/structure/machinery/firealarm{
+ pixel_y = 28
+ },
+/obj/structure/extinguisher_cabinet{
+ pixel_x = -14;
+ pixel_y = 28
+ },
+/turf/open/floor/almayer{
+ dir = 4;
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/processing)
"xIQ" = (
/obj/effect/decal/warning_stripes{
icon_state = "S"
},
/turf/open/floor/almayer,
/area/almayer/living/offices)
+"xIW" = (
+/obj/structure/machinery/light{
+ dir = 4
+ },
+/obj/structure/pipes/standard/simple/hidden/supply{
+ dir = 9
+ },
+/obj/structure/surface/table/almayer,
+/obj/item/book/manual/marine_law{
+ pixel_x = -3;
+ pixel_y = 1
+ },
+/obj/item/device/flashlight/lamp{
+ layer = 3.1;
+ pixel_x = 7;
+ pixel_y = 10
+ },
+/obj/item/poster,
+/turf/open/floor/plating/plating_catwalk,
+/area/almayer/shipboard/brig/lobby)
"xJe" = (
/turf/open/floor/almayer{
dir = 8;
@@ -80948,17 +81026,6 @@
icon_state = "green"
},
/area/almayer/hallways/aft_hallway)
-"xRZ" = (
-/obj/structure/machinery/door/firedoor/border_only/almayer,
-/obj/structure/machinery/door/poddoor/almayer/open{
- dir = 4;
- id = "perma_lockdown_1";
- name = "\improper Perma Lockdown Shutter"
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/shipboard/brig/perma)
"xSb" = (
/obj/structure/largecrate/random/barrel/red,
/turf/open/floor/almayer{
@@ -81005,18 +81072,6 @@
/obj/effect/landmark/late_join,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/living/cryo_cells)
-"xSN" = (
-/obj/structure/pipes/vents/pump,
-/obj/structure/machinery/camera/autoname/almayer{
- dir = 4;
- name = "ship-grade camera";
- pixel_y = 6
- },
-/turf/open/floor/almayer{
- dir = 1;
- icon_state = "redcorner"
- },
-/area/almayer/shipboard/brig/execution)
"xSW" = (
/turf/open/floor/almayer{
dir = 8;
@@ -81263,6 +81318,20 @@
"xXh" = (
/turf/closed/wall/almayer/research/containment/wall/west,
/area/almayer/medical/containment/cell)
+"xXj" = (
+/obj/structure/machinery/door/poddoor/almayer/locked{
+ dir = 2;
+ id = "Perma 1";
+ name = "\improper cell shutter"
+ },
+/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{
+ dir = 2;
+ name = "\improper Isolation Cell"
+ },
+/turf/open/floor/almayer{
+ icon_state = "test_floor4"
+ },
+/area/almayer/shipboard/brig/perma)
"xXr" = (
/obj/item/reagent_container/glass/beaker/bluespace,
/obj/structure/machinery/chem_dispenser/research,
@@ -81312,6 +81381,16 @@
icon_state = "mono"
},
/area/almayer/lifeboat_pumps/south1)
+"xYS" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/structure/pipes/standard/manifold/hidden/supply,
+/obj/structure/machinery/light,
+/turf/open/floor/almayer{
+ icon_state = "red"
+ },
+/area/almayer/shipboard/brig/main_office)
"xYZ" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -81373,14 +81452,6 @@
icon_state = "plate"
},
/area/almayer/hull/lower_hull/l_a_p)
-"xZP" = (
-/obj/structure/surface/table/almayer,
-/obj/item/toy/deck,
-/turf/open/floor/almayer{
- dir = 10;
- icon_state = "silver"
- },
-/area/almayer/shipboard/brig/cic_hallway)
"xZU" = (
/obj/structure/machinery/cryopod{
pixel_y = 6
@@ -81392,12 +81463,6 @@
icon_state = "cargo"
},
/area/almayer/squads/charlie)
-"xZV" = (
-/obj/structure/machinery/cm_vending/sorted/medical/wall_med{
- pixel_y = 25
- },
-/turf/open/floor/almayer,
-/area/almayer/shipboard/brig/main_office)
"yac" = (
/obj/structure/platform_decoration{
dir = 8
@@ -81791,17 +81856,6 @@
/obj/effect/spawner/random/tool,
/turf/open/floor/plating/plating_catwalk,
/area/almayer/hull/lower_hull/l_f_p)
-"ygG" = (
-/obj/structure/flora/pottedplant{
- icon_state = "pottedplant_18";
- pixel_y = 13
- },
-/obj/structure/surface/table/almayer,
-/turf/open/floor/almayer{
- dir = 8;
- icon_state = "red"
- },
-/area/almayer/shipboard/brig/chief_mp_office)
"ygK" = (
/obj/structure/prop/almayer/computers/sensor_computer3,
/turf/open/floor/almayer{
@@ -81925,6 +81979,15 @@
icon_state = "blue"
},
/area/almayer/living/pilotbunks)
+"yjT" = (
+/obj/structure/machinery/cm_vending/clothing/senior_officer{
+ density = 0;
+ pixel_y = 30
+ },
+/turf/open/floor/almayer{
+ icon_state = "plate"
+ },
+/area/almayer/living/numbertwobunks)
"yjU" = (
/turf/open/floor/almayer{
icon_state = "emeraldfull"
@@ -81974,26 +82037,6 @@
icon_state = "plate"
},
/area/almayer/shipboard/brig/main_office)
-"ylc" = (
-/obj/effect/decal/warning_stripes{
- icon_state = "E";
- pixel_x = 1
- },
-/obj/effect/decal/warning_stripes{
- icon_state = "W";
- pixel_x = -1
- },
-/obj/structure/machinery/door/airlock/almayer/research/reinforced{
- dir = 8;
- name = "\improper Containment Airlock"
- },
-/obj/structure/machinery/door/poddoor/almayer/biohazard/white{
- dir = 4
- },
-/turf/open/floor/almayer{
- icon_state = "test_floor4"
- },
-/area/almayer/medical/containment)
"yle" = (
/obj/effect/landmark/start/marine/engineer/delta,
/obj/effect/landmark/late_join/delta,
@@ -89195,8 +89238,8 @@ feb
qmR
oog
dsA
-lgp
-xSN
+rbK
+tmH
feb
aag
aaf
@@ -89398,8 +89441,8 @@ feb
dhd
oog
jNT
-rJJ
-jZM
+fag
+jVP
feb
feb
feb
@@ -89601,12 +89644,12 @@ mtl
vdl
nPb
fZX
+dBS
nSu
-nMo
wld
mtl
jjm
-jPZ
+wZN
kgQ
feb
aag
@@ -89807,7 +89850,7 @@ qVF
xdJ
kzr
jqY
-nGG
+kBh
jNT
jNT
wSK
@@ -89999,10 +90042,10 @@ pCi
pCi
sBo
naB
-qGO
+wnw
pHp
fgl
-urL
+dya
fLF
kEq
mtl
@@ -90203,16 +90246,16 @@ cpf
cHP
naB
pQr
-mYU
+tYW
wvI
vPf
-mrA
+fvA
qPD
vcm
tul
-nBU
+mNK
gtU
-nKW
+bjk
mtl
mtl
mtl
@@ -90399,7 +90442,7 @@ mUQ
rPC
wcn
eEf
-xhM
+sbD
wcn
tng
hGD
@@ -90416,16 +90459,16 @@ qPD
qPD
quJ
rdA
-rUB
+iLl
sql
-rUB
+iLl
dTQ
kIV
iYi
gSs
eyd
kIV
-kgG
+kQz
jjX
kIV
kIV
@@ -90609,12 +90652,12 @@ wcn
tYB
naB
pQr
-kHL
+cjz
wvI
piK
-mrA
+fvA
qPD
-nhs
+wZL
ffg
ffg
wsh
@@ -90808,25 +90851,25 @@ vBm
vBm
vBm
vBm
-qmC
+sTs
vBm
naB
-urg
+kry
pHp
fgl
-lYP
+xXj
qXE
qPD
sPF
qPD
qPD
uQm
-fTb
+stO
xkd
teE
xJT
xkd
-ckZ
+ljS
xkd
xkd
xkd
@@ -91020,8 +91063,8 @@ hCV
naB
naB
uUu
-gmz
-vGY
+qCU
+qZF
qPD
iQd
qJo
@@ -91225,8 +91268,8 @@ naB
nVR
nVR
nVR
-xRZ
-mQE
+nux
+tau
nVR
xkd
xik
@@ -91417,19 +91460,19 @@ sFC
sFC
sFC
vBm
-rdj
+lOI
pJv
jLM
tak
cMb
-ilc
+rbi
wDp
xys
-sry
-xet
+nkX
+iQB
cmv
vzk
-dkr
+phN
iVP
xkd
xkd
@@ -91627,13 +91670,13 @@ xsg
xsg
grF
xVl
-qvL
+uqy
wdF
wdF
wdF
wdF
cMl
-aTd
+icZ
xkd
uvY
oBq
@@ -91834,7 +91877,7 @@ lxy
oRk
oRk
oRk
-dvK
+utZ
cMl
hTt
kMH
@@ -92028,7 +92071,7 @@ lrq
lrq
lrq
cxA
-fIu
+uwS
tpn
tpn
srT
@@ -92036,7 +92079,7 @@ tpn
tpn
xjF
myP
-reQ
+gDt
bju
cMl
lMc
@@ -92224,25 +92267,25 @@ pCi
mUQ
aou
lrq
-mMo
-qvu
-htj
-wvk
-szx
+kEc
+chv
+cAy
+uhE
+vKB
lrq
-xZV
-qZt
+szR
+cZj
tpn
-lXK
+eVR
cak
vrM
tpn
-cmP
-iSw
+mHb
+hjM
xTH
bju
wSm
-jzs
+dEG
xkd
uvY
duT
@@ -92252,8 +92295,8 @@ jVa
jVa
moB
moB
-smj
-sYc
+dfk
+vzz
moB
xkd
lmk
@@ -92427,20 +92470,20 @@ pCi
hKi
rPC
lrq
-kvO
-tUj
-tUj
-tUj
-tUj
-eBf
+heo
+nqe
+nqe
+nqe
+nqe
+tLa
eRL
igt
tpn
-uov
+rqS
cak
vrM
tpn
-kRl
+pUD
bju
wdF
wdF
@@ -92630,23 +92673,23 @@ ahE
nnF
rPC
lrq
-wBy
+kui
uqo
-pfN
-ehP
+pId
+qMD
uqo
lrq
-rRI
-vcs
+sYi
+sYE
tpn
-psh
+gIU
xIq
vrM
tpn
-vqi
-upJ
-mXS
-gQh
+efT
+nkF
+hkH
+kuJ
sLA
jSw
xkd
@@ -92833,25 +92876,25 @@ ahE
hUg
wcn
lrq
-uQS
-tUj
-tUj
-tUj
-tUj
-vbq
+sEZ
+nqe
+nqe
+nqe
+nqe
+mza
eRL
-vXV
+wfB
tpn
tpn
tpn
tpn
tpn
-oZG
+xIu
xvQ
eDt
bju
cMl
-qVf
+kAL
xkd
uvY
sgE
@@ -93036,23 +93079,23 @@ ahE
rPC
wcn
lrq
-mMW
-iaT
-iaT
-jUc
-uHu
+dEX
+fxJ
+fxJ
+fAr
+qmU
lrq
-lqB
-sUu
-qrX
+hZU
+cWs
+fAE
kHa
-ucW
+frX
mHA
kHa
-iEI
+snX
oIh
oIh
-adm
+wNt
cMl
nlz
vNp
@@ -93246,8 +93289,8 @@ iwV
lrq
lrq
gob
-sUu
-oXO
+cWs
+irF
kHa
rEQ
xmX
@@ -93269,7 +93312,7 @@ omt
omt
uxa
iZU
-mqW
+nhG
xkd
mnm
hgH
@@ -93442,14 +93485,14 @@ pCi
rPC
rwS
cQv
-ogW
+oVf
rmx
bvH
evR
cQv
cQv
vtD
-uwh
+rAX
kHa
kHa
lRe
@@ -93460,7 +93503,7 @@ tzd
sgi
bju
wSm
-qVf
+kAL
xkd
uvY
qEA
@@ -93645,7 +93688,7 @@ ahE
rPC
nfI
cQv
-xii
+cBw
kde
kde
ajj
@@ -93862,7 +93905,7 @@ dQv
doj
swn
neC
-pmN
+mjt
vqc
edo
fTt
@@ -93876,7 +93919,7 @@ ezX
pqF
rUk
thL
-lYM
+iFc
thL
tUx
fgR
@@ -94058,10 +94101,10 @@ pGT
pGT
vkM
sjc
-vTI
+xYS
kHa
qPO
-wuc
+rVC
qPO
qPO
ptq
@@ -94069,7 +94112,7 @@ oRk
eNR
bju
cMl
-jzs
+dEG
xkd
uvY
lSs
@@ -94460,10 +94503,10 @@ cQv
eaf
bEv
sBg
-fJV
+uGN
rXd
cQv
-opz
+gax
igt
swn
vsM
@@ -94472,7 +94515,7 @@ ebv
qPO
cFC
oIh
-syQ
+kXX
skj
tXc
cqM
@@ -94572,9 +94615,9 @@ bIy
alU
alU
alU
-cmI
+uyY
alU
-cmJ
+rVg
alU
alU
alU
@@ -94666,7 +94709,7 @@ kde
ajj
tuk
cQv
-aNo
+rzY
igt
swn
skq
@@ -94678,7 +94721,7 @@ mTN
hZJ
iLG
jXd
-qVf
+kAL
xkd
uvY
cjk
@@ -94870,14 +94913,14 @@ cQv
tlk
cQv
cxA
-txI
+xEd
qPO
qPO
-wuc
+rVC
qPO
qPO
mFc
-ppy
+weN
emp
lze
wSm
@@ -94887,13 +94930,13 @@ tUx
iTI
bQc
pgP
-uhm
-bvY
+uVV
+iBl
wIC
-vTW
-vTW
+smZ
+smZ
wIC
-boT
+uGv
wIC
xCj
kIV
@@ -95070,12 +95113,12 @@ rdM
gUg
cov
cqJ
-iiB
+hNl
tak
-exf
+uhW
uJs
tsX
-lhe
+ngr
cDN
peO
lEv
@@ -95089,13 +95132,13 @@ emp
emp
emp
emp
-eZe
+qnM
emp
emp
wIC
-gNl
puE
crp
+dco
dqZ
wIC
lTK
@@ -95181,9 +95224,9 @@ kcp
alU
alU
alU
-mBp
+xgQ
alU
-cmJ
+rVg
alU
alU
alU
@@ -95273,12 +95316,12 @@ vxM
vxM
vxM
vxM
-vIM
+qlS
eRL
eRL
uJs
tsX
-tzR
+tdy
cDN
oFY
oFY
@@ -95294,10 +95337,10 @@ oIh
qUz
ksg
oIh
-cAy
+iTl
wIC
-wZs
cBZ
+hMc
vAG
jIo
wIC
@@ -95471,39 +95514,39 @@ pCi
wcn
rPC
vxM
-sqn
-kXe
-eAf
-nHM
+rfY
+kGu
+iqR
+fyp
wJh
ldu
eRL
eRL
uJs
-wOV
-jGG
+bTk
+tff
cDN
oFY
-hlO
-jPT
+cQL
+npO
ncl
jcf
bju
cMW
qEy
-fcW
-fRM
+bxQ
+rQc
oDy
oDy
-tkw
+wsq
vxK
-nAw
gwj
+aIW
jPS
jPS
-xbp
+sJm
dqZ
-vrA
+rDY
wIC
kIV
lre
@@ -95681,15 +95724,15 @@ fRS
wJh
yeu
sjc
-oLu
-dVI
-jLo
+rVm
+mMZ
+aDM
oSC
uFq
wsl
-xHZ
-hzI
-rMF
+wSu
+xIW
+wBd
emp
gbw
oRk
@@ -95698,11 +95741,11 @@ emp
bPH
rJj
mBx
-dvK
+utZ
pyj
-sgb
+jPP
wIC
-uch
+xpo
xqs
rWF
uSB
@@ -95877,11 +95920,11 @@ pCi
tCb
aou
vxM
-sPw
-sVV
-sVV
-sVV
-gOH
+jvP
+rDQ
+rDQ
+rDQ
+ctT
mLJ
bua
ybU
@@ -95890,7 +95933,7 @@ tsX
tsX
tsX
epu
-uoK
+oLF
tsX
tsX
emp
@@ -95903,7 +95946,7 @@ emp
emp
emp
wIC
-mHQ
+lnh
wIC
rWn
rWn
@@ -96085,7 +96128,7 @@ sbP
sbP
sbP
wJh
-pGl
+ekF
uif
vBm
vBm
@@ -96101,13 +96144,13 @@ xuZ
xuZ
xuZ
xuZ
-rCU
-xZP
-hHW
-bom
+rEY
+gxU
+giR
+vUP
wIC
-fhY
-ygG
+qZA
+dgx
fKi
vxG
wIC
@@ -96283,12 +96326,12 @@ pCi
wcn
rPC
vxM
-jvl
-lkl
-vBF
-ejs
+pas
+ncf
+kjk
+qxr
wJh
-pGl
+ekF
ugT
qqC
ceZ
@@ -96303,16 +96346,16 @@ hiM
hiM
rWs
rWs
-bwE
-nWC
-tpB
-wpc
-tIP
+rQt
+cgT
+xuc
+gXx
+wdh
wIC
-gWO
+mHz
jPS
jPS
-ttv
+xrt
wIC
qqV
nNg
@@ -96491,7 +96534,7 @@ vxM
vxM
vxM
gaJ
-hFR
+hmG
xys
vBm
vGA
@@ -96508,7 +96551,7 @@ gde
uVA
wIQ
xWv
-kdz
+aQb
vka
jUY
wIC
@@ -96688,12 +96731,12 @@ aag
pCi
hKi
wcn
-rWb
+kEU
wcn
cXZ
vBm
tJM
-cwE
+viH
lCp
ttE
vBm
@@ -96712,17 +96755,17 @@ awz
jfK
wIQ
mPj
-ilr
+omy
sCQ
wIC
wvE
jhI
-fgd
+jfY
bra
wIC
kIV
hUc
-kEO
+pre
mnm
kIV
xEF
@@ -96891,7 +96934,7 @@ adG
adG
gqq
iCz
-rWb
+kEU
rPC
rPC
vBm
@@ -96925,7 +96968,7 @@ qTQ
wIC
mnm
kIV
-kEO
+pre
kIV
mrB
tuA
@@ -97098,7 +97141,7 @@ akC
rDI
rPC
vBm
-fEH
+mvE
tak
lCp
iLo
@@ -97123,7 +97166,7 @@ nRH
wIC
tiF
vAG
-hwo
+opF
pDW
wIC
mnm
@@ -97301,10 +97344,10 @@ akC
cRc
rPC
vBm
-wNt
+qkn
eRL
lwK
-iDw
+vlN
vBm
pZS
pEB
@@ -97504,10 +97547,10 @@ akC
oCL
rPC
vBm
-hVa
-kpm
+rJN
+nJz
wgi
-vCc
+rEO
vBm
vkR
wsD
@@ -97529,7 +97572,7 @@ uVd
wIC
wjY
aTg
-oxv
+rFg
kkv
wIC
kIV
@@ -97908,8 +97951,8 @@ adu
aHZ
akC
eKM
-cjB
-hCi
+ake
+kif
vBm
rRr
dFU
@@ -98110,9 +98153,9 @@ adu
adu
aHZ
akC
+lUz
tRX
-fNn
-tRX
+lUz
vBm
hqU
gcT
@@ -98141,7 +98184,7 @@ aTg
nNg
wIC
pUJ
-utZ
+wCZ
pUJ
kCi
nRR
@@ -98313,7 +98356,7 @@ nIt
adu
hxG
akC
-qpU
+bVT
wcn
avl
vBm
@@ -98345,7 +98388,7 @@ wIC
wIC
gpe
mnm
-sYE
+dXO
kCi
nNt
vqC
@@ -101355,7 +101398,7 @@ wBY
hJJ
qCi
agj
-nXB
+ogK
qgr
agc
agc
@@ -103808,11 +103851,11 @@ wVW
wVW
wVW
aCf
-ayt
+vKc
aCf
wVW
aCf
-hzL
+uyh
aCf
wVW
wVW
@@ -104824,13 +104867,13 @@ awX
wVW
wVW
wVW
-aAl
+itj
jnX
-dum
+eFc
wVW
wVW
wVW
-mIr
+rJA
aGZ
awF
cST
@@ -105034,7 +105077,7 @@ awF
aEM
aGV
rvA
-puo
+aKE
awF
jzE
aUw
@@ -105437,7 +105480,7 @@ asl
amO
aGO
awF
-nhw
+yjT
aGY
rvA
aKO
@@ -105640,8 +105683,8 @@ asp
amO
avj
awF
-tQT
-umQ
+syN
+bMn
rvA
aqm
awF
@@ -114162,9 +114205,9 @@ iit
kZV
vOy
vOy
-oIr
+sCR
vOy
-wdo
+oCg
vOy
vOy
vOy
@@ -115177,9 +115220,9 @@ mSK
mSK
vOy
vOy
-ylc
+mdJ
wKP
-ylc
+cfn
vOy
vOy
rhO
@@ -116212,7 +116255,7 @@ rne
rne
wft
awE
-rxg
+eCG
qJU
igp
awE
@@ -129983,7 +130026,7 @@ bNM
iEr
owg
eNi
-utx
+aWb
dyK
vzK
wYY