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 89a65dad230e..56cd4dd8cd8e 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/living/signals_living.dm @@ -33,3 +33,8 @@ /// From /mob/living/Collide(): (atom/A) #define COMSIG_LIVING_PRE_COLLIDE "living_pre_collide" #define COMPONENT_LIVING_COLLIDE_HANDLED (1<<0) + +///from base of mob/living/set_buckled(): (new_buckled) +#define COMSIG_LIVING_SET_BUCKLED "living_set_buckled" +///from base of mob/living/set_body_position() +#define COMSIG_LIVING_SET_BODY_POSITION "living_set_body_position" diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm index 32717a2115f2..f4beec321c9e 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm @@ -37,10 +37,6 @@ #define COMSIG_MOB_FIRED_GUN_ATTACHMENT "mob_fired_gun_attachment" /// From /mob/proc/death #define COMSIG_MOB_DEATH "mob_death" -/// From /mob/proc/update_canmove() -#define COMSIG_MOB_GETTING_UP "mob_getting_up" -/// From /mob/proc/update_canmove() -#define COMSIG_MOB_KNOCKED_DOWN "mob_knocked_down" /// For when a mob is dragged #define COMSIG_MOB_DRAGGED "mob_dragged" /// From /obj/item/proc/unequipped() @@ -86,8 +82,6 @@ //from /mob/proc/on_deafness_loss() #define COMSIG_MOB_REGAINED_HEARING "mob_regained_hearing" -#define COMSIG_MOB_POST_UPDATE_CANMOVE "mob_can_move" - #define COMSIG_ATTEMPT_MOB_PULL "attempt_mob_pull" #define COMPONENT_CANCEL_MOB_PULL (1<<0) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index a8b986f8873e..0dcd26de3e3a 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -419,3 +419,31 @@ GLOBAL_LIST_INIT(default_xeno_onmob_icons, list( #define CORE_LIMBS list("chest","head","groin") #define SYMPTOM_ACTIVATION_PROB 3 + +// Body position defines. +/// Mob is standing up, usually associated with lying_angle value of 0. +#define STANDING_UP 0 +/// Mob is lying down, usually associated with lying_angle values of 90 or 270. +#define LYING_DOWN 1 + +/// Possible value of [/atom/movable/buckle_lying]. If set to a different (positive-or-zero) value than this, the buckling thing will force a lying angle on the buckled. +#define NO_BUCKLE_LYING -1 + +// ==================================== +// /mob/living /tg/ mobility_flags +// These represent in what capacity the mob is capable of moving +// Because porting this is underway, NOT ALL FLAGS ARE CURRENTLY IN. + +/// can move +#define MOBILITY_MOVE (1<<0) +/// can, and is, standing up +#define MOBILITY_STAND (1<<1) +/// can rest +#define MOBILITY_REST (1<<7) +/// can lie down +#define MOBILITY_LIEDOWN (1<<8) + +#define MOBILITY_FLAGS_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND) +#define MOBILITY_FLAGS_CARBON_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_REST | MOBILITY_LIEDOWN) +#define MOBILITY_FLAGS_REST_CAPABLE_DEFAULT (MOBILITY_MOVE | MOBILITY_STAND | MOBILITY_REST | MOBILITY_LIEDOWN) + diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index e2bd155fcb0d..cc1831501bad 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -61,6 +61,10 @@ #define RADIO_CHANNEL_PMC_CCT "PMC CCT" #define RADIO_CHANNEL_WY_WO "SpecOps" +//Listening Devices +#define RADIO_CHANNEL_BUG_A "Listening Device A" +#define RADIO_CHANNEL_BUG_B "Listening Device B" + //1-Channel ERTs #define RADIO_CHANNEL_DUTCH_DOZEN "DD" #define RADIO_CHANNEL_VAI "VAI" diff --git a/code/__DEFINES/skills.dm b/code/__DEFINES/skills.dm index 5dabb4545a32..d33e26c1c3f6 100644 --- a/code/__DEFINES/skills.dm +++ b/code/__DEFINES/skills.dm @@ -42,6 +42,8 @@ #define SKILL_SPEC_DEFAULT 0 /// Is trained to use specialist gear, but hasn't picked a kit. #define SKILL_SPEC_TRAINED 1 +/// Is trained to use specialist gear & HAS picked a kit. (Functionally same as SPEC_ROCKET) +#define SKILL_SPEC_KITTED 2 /// Can use RPG #define SKILL_SPEC_ROCKET 2 /// Can use thermal cloaks and custom M4RA rifle diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 7f69a4acc4d6..8962230946c8 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -143,10 +143,18 @@ // #define TRAIT_X "t_x" //-- mob traits -- -/// Prevents voluntary movement. -#define TRAIT_IMMOBILIZED "immobilized" /// Apply this to make a mob not dense, and remove it when you want it to no longer make them undense, other sorces of undesity will still apply. Always define a unique source when adding a new instance of this! #define TRAIT_UNDENSE "undense" +/// Forces the user to stay unconscious. +#define TRAIT_KNOCKEDOUT "knockedout" +/// Prevents voluntary movement. +#define TRAIT_IMMOBILIZED "immobilized" +/// Prevents voluntary standing or staying up on its own. +#define TRAIT_FLOORED "floored" +/// Forces user to stay standing +#define TRAIT_FORCED_STANDING "forcedstanding" +/// Stuns preventing movement and using objects but without further impairement +#define TRAIT_INCAPACITATED "incapacitated" /// Apply this to identify a mob as merged with weeds #define TRAIT_MERGED_WITH_WEEDS "merged_with_weeds" @@ -298,7 +306,10 @@ GLOBAL_LIST_INIT(mob_traits, list( */ GLOBAL_LIST_INIT(traits_by_type, list( /mob = list( + "TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT, "TRAIT_IMMOBILIZED" = TRAIT_IMMOBILIZED, + "TRAIT_INCAPACITATED" = TRAIT_INCAPACITATED, + "TRAIT_FLOORED" = TRAIT_FLOORED, "TRAIT_UNDENSE" = TRAIT_UNDENSE, "TRAIT_YAUTJA_TECH" = TRAIT_YAUTJA_TECH, "TRAIT_SUPER_STRONG" = TRAIT_SUPER_STRONG, @@ -416,13 +427,39 @@ GLOBAL_LIST(trait_name_map) //Status trait coming from clothing. #define TRAIT_SOURCE_CLOTHING "t_s_clothing" -/// traits associated with actively interacted machinery -#define INTERACTION_TRAIT "interaction" +/// trait associated to being buckled +#define BUCKLED_TRAIT "buckled" // Yes the name doesn't conform. /tg/ appears to have changed naming style inbetween +/// trait source when an effect is coming from a fakedeath effect (refactor this) +#define FAKEDEATH_TRAIT "fakedeath" +/// trait source where a condition comes from body state +#define BODY_TRAIT "body" +/// Trait associated to lying down (having a [lying_angle] of a different value than zero). +#define LYING_DOWN_TRAIT "lying-down" +/// trait associated to a stat value or range of +#define STAT_TRAIT "stat" +/// trait effect related to the queen ovipositor +#define OVIPOSITOR_TRAIT "ovipositor" +/// trait associated to being held in a chokehold +#define CHOKEHOLD_TRAIT "chokehold" /// trait effect related to active specialist gear #define SPECIALIST_GEAR_TRAIT "specialist_gear" /// traits associated with usage of snowflake dropship double seats #define DOUBLE_SEATS_TRAIT "double_seats" /// traits associated with xeno on-ground weeds #define XENO_WEED_TRAIT "xeno_weed" +/// traits associated with actively interacted machinery +#define INTERACTION_TRAIT "interaction" +/// traits bound by stunned status effects +#define STUNNED_TRAIT "stunned" +/// traits bound by knocked_down status effect +#define KNOCKEDDOWN_TRAIT "knockeddown" +/// traits bound by knocked_out status effect +#define KNOCKEDOUT_TRAIT "knockedout" +/// traits from being pounced +#define POUNCED_TRAIT "pounced" +/// traits from step_triggers on the map +#define STEP_TRIGGER_TRAIT "step_trigger" +/// traits from hacked machine interactions +#define HACKED_TRAIT "hacked" /// traits from chloroform usage #define CHLOROFORM_TRAIT "chloroform" diff --git a/code/__DEFINES/vendors.dm b/code/__DEFINES/vendors.dm index 04ee5ffef2b6..eeec210a56c3 100644 --- a/code/__DEFINES/vendors.dm +++ b/code/__DEFINES/vendors.dm @@ -67,3 +67,10 @@ //Whether or not to load ammo boxes depending on ammo loaded into the vendor //Only relevant in big vendors, like Requisitions or Squad Prep #define VEND_LOAD_AMMO_BOXES (1<<9) + +// Redemption Tokens +#define VEND_TOKEN_ENGINEER "Engineer" +#define VEND_TOKEN_SPEC "Specialist" +#define VEND_TOKEN_SYNTH "Synthetic" +/// Token invalid/unrecognised. +#define VEND_TOKEN_VOID "Void" diff --git a/code/__HELPERS/animations.dm b/code/__HELPERS/animations.dm new file mode 100644 index 000000000000..f85fb763a4a6 --- /dev/null +++ b/code/__HELPERS/animations.dm @@ -0,0 +1,2 @@ +/// The duration of the animate call in mob/living/update_transform +#define UPDATE_TRANSFORM_ANIMATION_TIME (0.2 SECONDS) diff --git a/code/__HELPERS/status_effects.dm b/code/__HELPERS/status_effects.dm new file mode 100644 index 000000000000..d06cb687f6a5 --- /dev/null +++ b/code/__HELPERS/status_effects.dm @@ -0,0 +1 @@ +#define TRAIT_STATUS_EFFECT(effect_id) "[effect_id]-trait" diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 36dcfed6cfea..967967790b28 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -30,6 +30,11 @@ text = replacetext(text, char, repl_chars[char]) return text +///Helper for only alphanumeric characters plus common punctuation, spaces, underscore and hyphen _ -. +/proc/replace_non_alphanumeric_plus(text) + var/regex/alphanumeric = regex(@{"[^a-z0-9 ,.?!\-_&]"}, "gi") + return alphanumeric.Replace(text, "") + /proc/readd_quotes(text) var/list/repl_chars = list(""" = "\"", "'" = "'") for(var/char in repl_chars) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 4bfde929464c..a7af9d7f6324 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1089,7 +1089,7 @@ GLOBAL_DATUM(action_purple_power_up, /image) target_orig_turf = get_turf(target) var/obj/user_holding = busy_user.get_active_hand() var/obj/target_holding - var/cur_user_lying = busy_user.lying + var/cur_user_lying = busy_user.body_position var/cur_target_lying var/expected_total_time = delayfraction*numticks var/time_remaining = expected_total_time @@ -1097,7 +1097,7 @@ GLOBAL_DATUM(action_purple_power_up, /image) if(has_target && istype(T)) cur_target_zone_sel = T.zone_selected target_holding = T.get_active_hand() - cur_target_lying = T.lying + cur_target_lying = T.body_position . = TRUE for(var/i in 1 to numticks) @@ -1121,13 +1121,13 @@ GLOBAL_DATUM(action_purple_power_up, /image) ) . = FALSE break - if(user_flags & INTERRUPT_KNOCKED_DOWN && busy_user.knocked_down || \ - target_is_mob && (target_flags & INTERRUPT_KNOCKED_DOWN && T.knocked_down) + if(user_flags & INTERRUPT_KNOCKED_DOWN && HAS_TRAIT(busy_user, TRAIT_FLOORED) || \ + target_is_mob && (target_flags & INTERRUPT_KNOCKED_DOWN && HAS_TRAIT(T, TRAIT_FLOORED)) ) . = FALSE break - if(user_flags & INTERRUPT_STUNNED && busy_user.stunned || \ - target_is_mob && (target_flags & INTERRUPT_STUNNED && T.stunned) + if(user_flags & INTERRUPT_STUNNED && HAS_TRAIT(busy_user, TRAIT_INCAPACITATED)|| \ + target_is_mob && (target_flags & INTERRUPT_STUNNED && HAS_TRAIT(T, TRAIT_INCAPACITATED)) ) . = FALSE break @@ -1201,8 +1201,8 @@ GLOBAL_DATUM(action_purple_power_up, /image) ) . = FALSE break - if(user_flags & INTERRUPT_CHANGED_LYING && busy_user.lying != cur_user_lying || \ - target_is_mob && (target_flags & INTERRUPT_CHANGED_LYING && T.lying != cur_target_lying) + if(user_flags & INTERRUPT_CHANGED_LYING && busy_user.body_position != cur_user_lying || \ + target_is_mob && (target_flags & INTERRUPT_CHANGED_LYING && T.body_position != cur_target_lying) ) . = FALSE break diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index b85aa18fdb6b..541d1a05362d 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -369,6 +369,13 @@ DEFINE_BITFIELD(mob_flags, list( "NOBIOSCAN" = NOBIOSCAN, )) +DEFINE_BITFIELD(mobility_flags, list( + "MOVE" = MOBILITY_MOVE, + "STAND" = MOBILITY_STAND, + "REST" = MOBILITY_REST, + "LIEDOWN" = MOBILITY_LIEDOWN +)) + DEFINE_BITFIELD(flags, list( "NO_BLOOD" = NO_BLOOD, "NO_BREATHE" = NO_BREATHE, diff --git a/code/_onclick/human.dm b/code/_onclick/human.dm index 8f329656ef6c..b09c26ffb92f 100644 --- a/code/_onclick/human.dm +++ b/code/_onclick/human.dm @@ -64,7 +64,7 @@ /mob/living/carbon/human/UnarmedAttack(atom/A, proximity, click_parameters) - if(lying) //No attacks while laying down + if(body_position == LYING_DOWN) //No attacks while laying down return 0 var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines @@ -88,7 +88,7 @@ /atom/proc/attack_hand(mob/user) return -/mob/living/carbon/human/MouseDrop_T(atom/dropping, mob/user) +/mob/living/carbon/human/MouseDrop_T(atom/dropping, mob/living/user) if(user != src) return . = ..() @@ -153,6 +153,4 @@ target.Move(user.loc, get_dir(target.loc, user.loc)) target.update_transform(TRUE) - target.update_canmove() - diff --git a/code/_onclick/ventcrawl.dm b/code/_onclick/ventcrawl.dm index b079cffe2afe..51afbc139fdd 100644 --- a/code/_onclick/ventcrawl.dm +++ b/code/_onclick/ventcrawl.dm @@ -45,7 +45,7 @@ to_chat(src, SPAN_WARNING("You must be conscious to do this!")) return - if(lying) + if(is_mob_incapacitated()) to_chat(src, SPAN_WARNING("You can't vent crawl while you're stunned!")) return @@ -88,7 +88,7 @@ return updatehealth() - if(stat || stunned || dazed || knocked_down || lying || health < 0 || !client || !ventcrawl_carry()) + if(is_mob_incapacitated(src) || health < 0 || !client || !ventcrawl_carry()) vent_found.animate_ventcrawl_reset() return diff --git a/code/_onclick/xeno.dm b/code/_onclick/xeno.dm index adb637dfe8fa..abb76ded498b 100644 --- a/code/_onclick/xeno.dm +++ b/code/_onclick/xeno.dm @@ -3,7 +3,7 @@ */ /mob/living/carbon/xenomorph/UnarmedAttack(atom/target, proximity, click_parameters, tile_attack = FALSE, ignores_resin = FALSE) - if(lying || HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) //No attacks while laying down + if(body_position == LYING_DOWN || HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) //No attacks while laying down return FALSE var/mob/alt @@ -21,7 +21,7 @@ if (!L.is_xeno_grabbable() || L == src) //Xenos never attack themselves. continue - if (L.lying) + if (L.body_position == LYING_DOWN) alt = L continue target = L diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 743f9be9fec0..741862b5d65d 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -127,3 +127,8 @@ min_val = 1 config_entry_value = 450 integer = TRUE + +/datum/config_entry/number/whiskey_required_players + min_val = 0 + config_entry_value = 140 + integer = TRUE diff --git a/code/controllers/subsystem/communications.dm b/code/controllers/subsystem/communications.dm index 95839b726151..b8b037c33381 100644 --- a/code/controllers/subsystem/communications.dm +++ b/code/controllers/subsystem/communications.dm @@ -71,9 +71,9 @@ Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency //Misc channels #define YAUT_FREQ 1205 #define DUT_FREQ 1210 -#define CMB_FREQ 1220 #define VAI_FREQ 1215 #define RMC_FREQ 1216 +#define CMB_FREQ 1220 //WY Channels (1230-1249) #define WY_FREQ 1231 @@ -99,6 +99,11 @@ Radiochat range: 1441 to 1489 (most devices refuse to be tune to other frequency #define CLF_MED_FREQ 1274 #define CLF_CCT_FREQ 1275 +//Listening Bugs (1290-1291) +#define BUG_A_FREQ 1290 +#define BUG_B_FREQ 1291 + +//General Radio #define MIN_FREQ 1460 // ------------------------------------------------------ #define PUB_FREQ 1461 #define MAX_FREQ 1468 // ------------------------------------------------------ @@ -191,6 +196,9 @@ GLOBAL_LIST_INIT(radiochannels, list( RADIO_CHANNEL_CLF_ENGI = CLF_ENGI_FREQ, RADIO_CHANNEL_CLF_MED = CLF_MED_FREQ, RADIO_CHANNEL_CLF_CCT = CLF_CCT_FREQ, + + RADIO_CHANNEL_BUG_A = BUG_A_FREQ, + RADIO_CHANNEL_BUG_B = BUG_B_FREQ, )) // Response Teams @@ -205,6 +213,9 @@ GLOBAL_LIST_INIT(radiochannels, list( // PMC Frequencies #define PMC_FREQS list(PMC_FREQ, PMC_CMD_FREQ, PMC_ENGI_FREQ, PMC_MED_FREQ, PMC_CCT_FREQ, WY_WO_FREQ, WY_FREQ) +//Listening Device Frequencies +#define BUG_FREQS list(BUG_A_FREQ, BUG_B_FREQ) + //Depts - used for colors in headset.dm, as well as deciding what the marine comms tower can listen into #define DEPT_FREQS list(COMM_FREQ, MED_FREQ, ENG_FREQ, SEC_FREQ, SENTRY_FREQ, ALPHA_FREQ, BRAVO_FREQ, CHARLIE_FREQ, DELTA_FREQ, ECHO_FREQ, CRYO_FREQ, REQ_FREQ, JTAC_FREQ, INTEL_FREQ, WY_FREQ) @@ -269,6 +280,8 @@ SUBSYSTEM_DEF(radio) "[HC_FREQ]" = "hcradio", "[PVST_FREQ]" = "pvstradio", "[COLONY_FREQ]" = "deptradio", + "[BUG_A_FREQ]" = "airadio", + "[BUG_B_FREQ]" = "aiprivradio", ) /datum/controller/subsystem/radio/proc/add_object(obj/device as obj, new_frequency as num, filter = null as text|null) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index a56e10636a1e..79bd10c65736 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -276,7 +276,8 @@ SUBSYSTEM_DEF(vote) var/datum/game_mode/M = mode_type if(initial(M.config_tag)) var/vote_cycle_met = !initial(M.vote_cycle) || (text2num(SSperf_logging?.round?.id) % initial(M.vote_cycle) == 0) - if(initial(M.votable) && vote_cycle_met) + var/min_players_met = length(GLOB.clients) >= M.required_players + if(initial(M.votable) && vote_cycle_met && min_players_met) choices += initial(M.config_tag) if("groundmap") question = "Ground map vote" diff --git a/code/datums/ASRS.dm b/code/datums/ASRS.dm index 86a7363f07ea..73b0f4e1c6a9 100644 --- a/code/datums/ASRS.dm +++ b/code/datums/ASRS.dm @@ -132,3 +132,8 @@ buyable = 0 group = "ASRS" cost = ASRS_VERY_LOW_WEIGHT + +/datum/supply_packs/ingredient/asrs + buyable = 0 + group = "ASRS" + cost = ASRS_LOW_WEIGHT diff --git a/code/datums/action.dm b/code/datums/action.dm index 47b302e09aac..0510a43415a7 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -187,8 +187,10 @@ I.ui_action_click(owner, holder_item) /datum/action/item_action/can_use_action() - if(ishuman(owner) && !owner.is_mob_incapacitated() && !owner.lying) - return TRUE + if(ishuman(owner) && !owner.is_mob_incapacitated()) + var/mob/living/carbon/human/human = owner + if(human.body_position == STANDING_UP) + return TRUE /datum/action/item_action/update_button_icon() button.overlays.Cut() diff --git a/code/datums/agents/tools/chloroform.dm b/code/datums/agents/tools/chloroform.dm index c6e3320688eb..b1c666ac9ec8 100644 --- a/code/datums/agents/tools/chloroform.dm +++ b/code/datums/agents/tools/chloroform.dm @@ -50,7 +50,6 @@ ADD_TRAIT(M, TRAIT_IMMOBILIZED, CHLOROFORM_TRAIT) ADD_TRAIT(M, TRAIT_UNDENSE, CHLOROFORM_TRAIT) M.able_to_speak = FALSE - M.update_canmove() M.drop_inv_item_on_ground(M.wear_mask, force = TRUE) @@ -79,7 +78,6 @@ /obj/item/weapon/chloroform/proc/remove_stun(mob/living/M) animate(M, pixel_x = 0, pixel_y = 0, time = 0.2 SECONDS, easing = QUAD_EASING) M.anchored = FALSE - M.density = TRUE M.able_to_speak = TRUE M.layer = MOB_LAYER REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, CHLOROFORM_TRAIT) diff --git a/code/datums/ammo/ammo.dm b/code/datums/ammo/ammo.dm index a858c6b1f5a7..9faaf299669d 100644 --- a/code/datums/ammo/ammo.dm +++ b/code/datums/ammo/ammo.dm @@ -138,7 +138,7 @@ /datum/ammo/proc/knockback(mob/living/living_mob, obj/projectile/fired_projectile, max_range = 2) if(!living_mob || living_mob == fired_projectile.firer) return - if(fired_projectile.distance_travelled > max_range || living_mob.lying) + if(fired_projectile.distance_travelled > max_range || living_mob.body_position == LYING_DOWN) return //Two tiles away or more, basically. if(living_mob.mob_size >= MOB_SIZE_BIG) @@ -180,8 +180,8 @@ else living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) -/datum/ammo/proc/pushback(mob/target_mob, obj/projectile/fired_projectile, max_range = 2) - if(!target_mob || target_mob == fired_projectile.firer || fired_projectile.distance_travelled > max_range || target_mob.lying) +/datum/ammo/proc/pushback(mob/living/target_mob, obj/projectile/fired_projectile, max_range = 2) + if(!target_mob || target_mob == fired_projectile.firer || fired_projectile.distance_travelled > max_range || target_mob.body_position == LYING_DOWN) return if(target_mob.mob_size >= MOB_SIZE_BIG) diff --git a/code/datums/ammo/bullet/shotgun.dm b/code/datums/ammo/bullet/shotgun.dm index 4cedb8b3ee69..77e1e6401472 100644 --- a/code/datums/ammo/bullet/shotgun.dm +++ b/code/datums/ammo/bullet/shotgun.dm @@ -334,7 +334,7 @@ if(P.distance_travelled > 8) knockback(M, P, 12) - else if(!M || M == P.firer || M.lying) //These checks are included in knockback and would be redundant above. + else if(!M || M == P.firer || M.body_position == LYING_DOWN) //These checks are included in knockback and would be redundant above. return shake_camera(M, 3, 4) diff --git a/code/datums/ammo/misc.dm b/code/datums/ammo/misc.dm index 1d04692c0360..607a6e517a7c 100644 --- a/code/datums/ammo/misc.dm +++ b/code/datums/ammo/misc.dm @@ -191,7 +191,7 @@ for(var/obj/item/reagent_container/food/drinks/cans/souto/S in P.contents) M.put_in_active_hand(S) for(var/mob/O in viewers(GLOB.world_view_size, P)) //find all people in view. - O.show_message(SPAN_DANGER("[M] catches the [S]!"), SHOW_MESSAGE_VISIBLE) //Tell them the can was caught. + O.show_message(SPAN_DANGER("[M] catches [S]!"), SHOW_MESSAGE_VISIBLE) //Tell them the can was caught. return //Can was caught. if(ishuman(M)) var/mob/living/carbon/human/H = M diff --git a/code/datums/ammo/xeno.dm b/code/datums/ammo/xeno.dm index 75c78298fe4f..9ecc9ebf9321 100644 --- a/code/datums/ammo/xeno.dm +++ b/code/datums/ammo/xeno.dm @@ -49,9 +49,9 @@ if(!isxeno(M)) if(insta_neuro) - if(M.knocked_down < 3) + 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) - return + return if(ishuman(M)) M.apply_effect(2.5, SUPERSLOW) @@ -65,7 +65,7 @@ no_clothes_neuro = TRUE if(no_clothes_neuro) - if(M.knocked_down < 5) + 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 M.visible_message(SPAN_DANGER("[M] falls prone.")) @@ -79,7 +79,7 @@ H.visible_message(SPAN_DANGER("[M] shrugs off the neurotoxin!")) return - if(M.knocked_down < 0.7) // apply knockdown only if current knockdown is less than 0.7 second + if(M.GetKnockDownValueNotADurationDoNotUse() < 0.7) // basically (knocked_down && prob(90)) M.apply_effect(0.7, WEAKEN) M.visible_message(SPAN_DANGER("[M] falls prone.")) diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index ef77aaf471dc..6eaaa6e76af5 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -47,7 +47,7 @@ if(!T) return var/mob/living/parent_mob = parent - if(parent_mob.lying && (isfile(drag_sounds) || istext(drag_sounds))) + if(parent_mob.body_position == LYING_DOWN && (isfile(drag_sounds) || istext(drag_sounds))) playsound(T, drag_sounds, volume, rand(20000, 25000), range, falloff = falloff) else if(isfile(footstep_sounds) || istext(footstep_sounds)) playsound(T, footstep_sounds, volume, rand(20000, 25000), range, falloff = falloff) diff --git a/code/datums/components/healing_reduction.dm b/code/datums/components/healing_reduction.dm index b98d52cab251..54ea02dc6b73 100644 --- a/code/datums/components/healing_reduction.dm +++ b/code/datums/components/healing_reduction.dm @@ -21,33 +21,36 @@ Humans will take continuous damage instead. src.healing_reduction_dissipation = healing_reduction_dissipation src.max_buildup = max_buildup -/datum/component/healing_reduction/InheritComponent(datum/component/healing_reduction/C, i_am_original, healing_reduction) +/datum/component/healing_reduction/InheritComponent(datum/component/healing_reduction/inherit_component, i_am_original, healing_reduction) . = ..() - if(!C) + if(!inherit_component) src.healing_reduction += healing_reduction else - src.healing_reduction += C.healing_reduction + src.healing_reduction += inherit_component.healing_reduction src.healing_reduction = min(src.healing_reduction, max_buildup) /datum/component/healing_reduction/process(delta_time) if(!parent) qdel(src) - healing_reduction = max(healing_reduction - healing_reduction_dissipation * delta_time, 0) + return - if(ishuman(parent)) //deals brute to humans - var/mob/living/carbon/human/H = parent - H.apply_damage(healing_reduction_dissipation * delta_time, BRUTE) + healing_reduction = max(healing_reduction - healing_reduction_dissipation * delta_time, 0) if(healing_reduction <= 0) qdel(src) + return + + if(ishuman(parent)) //deals brute to humans + var/mob/living/carbon/human/human_parent = parent + human_parent.apply_damage(healing_reduction_dissipation * delta_time, BRUTE) var/color = GLOW_COLOR var/intensity = healing_reduction/max_buildup color += num2text(MAX_ALPHA*intensity, 2, 16) - var/atom/A = parent - A.add_filter("healing_reduction", 2, list("type" = "outline", "color" = color, "size" = 1)) + var/atom/parent_atom = parent + parent_atom.add_filter("healing_reduction", 2, list("type" = "outline", "color" = color, "size" = 1)) /datum/component/healing_reduction/RegisterWithParent() START_PROCESSING(SSdcs, src) @@ -64,14 +67,14 @@ Humans will take continuous damage instead. COMSIG_XENO_ON_HEAL_WOUNDS, COMSIG_XENO_APPEND_TO_STAT )) - var/atom/A = parent - A.remove_filter("healing_reduction") + var/atom/parent_atom = parent + parent_atom.remove_filter("healing_reduction") -/datum/component/healing_reduction/proc/stat_append(mob/M, list/L) +/datum/component/healing_reduction/proc/stat_append(mob/target_mob, list/stat_list) SIGNAL_HANDLER - L += "Healing Reduction: [healing_reduction]/[max_buildup]" + stat_list += "Healing Reduction: [healing_reduction]/[max_buildup]" -/datum/component/healing_reduction/proc/apply_healing_reduction(mob/living/carbon/xenomorph/X, list/healing) +/datum/component/healing_reduction/proc/apply_healing_reduction(mob/living/carbon/xenomorph/xeno, list/healing) SIGNAL_HANDLER healing["healing"] -= healing_reduction diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 46cd8952dda1..fd3fbc3a7d2d 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -20,7 +20,7 @@ cure() return */ - if(affected_mob.lying && prob(40)) //changed FROM prob(10) until sleeping is fixed + if(affected_mob.body_position == LYING_DOWN && prob(40)) //changed FROM prob(10) until sleeping is fixed to_chat(affected_mob, SPAN_NOTICE(" You feel better.")) cure() return @@ -43,7 +43,7 @@ cure() return */ - if(affected_mob.lying && prob(25)) //changed FROM prob(5) until sleeping is fixed + if(affected_mob.body_position == LYING_DOWN && prob(25)) //changed FROM prob(5) until sleeping is fixed to_chat(affected_mob, SPAN_NOTICE(" You feel better.")) cure() return diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index f2c029587616..fad0b15228b1 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -21,7 +21,7 @@ stage-- return */ - if(affected_mob.lying && prob(20)) //added until sleeping is fixed --Blaank + if(affected_mob.body_position == LYING_DOWN && prob(20)) //added until sleeping is fixed --Blaank to_chat(affected_mob, SPAN_NOTICE(" You feel better.")) stage-- return @@ -46,7 +46,7 @@ stage-- return */ - if(affected_mob.lying && prob(15)) //added until sleeping is fixed + if(affected_mob.body_position == LYING_DOWN && prob(15)) //added until sleeping is fixed to_chat(affected_mob, SPAN_NOTICE(" You feel better.")) stage-- return diff --git a/code/datums/effects/xeno_strains/boiler_trap.dm b/code/datums/effects/xeno_strains/boiler_trap.dm index 1833b9641a9a..199505379b27 100644 --- a/code/datums/effects/xeno_strains/boiler_trap.dm +++ b/code/datums/effects/xeno_strains/boiler_trap.dm @@ -5,16 +5,16 @@ duration = null flags = INF_DURATION -/datum/effects/boiler_trap/New(atom/A, mob/from, last_dmg_source, zone) +/datum/effects/boiler_trap/New(atom/A, mob/living/from, last_dmg_source, zone) . = ..() if(!QDELETED(src)) - var/mob/M = affected_atom - ADD_TRAIT(M, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) + var/mob/living/affected_living = affected_atom + ADD_TRAIT(affected_living, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) /datum/effects/boiler_trap/Destroy(force) if(ismob(affected_atom)) - var/mob/M = affected_atom - REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) + var/mob/living/affected_living = affected_atom + REMOVE_TRAIT(affected_living, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) return ..() /datum/effects/boiler_trap/validate_atom(atom/A) @@ -26,6 +26,6 @@ /datum/effects/boiler_trap/process_mob() . = ..() if(!.) return FALSE - var/mob/M = affected_atom - ADD_TRAIT(M, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) + var/mob/living/affected_living = affected_atom + ADD_TRAIT(affected_living, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) return TRUE diff --git a/code/datums/elements/mouth_drop_item.dm b/code/datums/elements/mouth_drop_item.dm index 42c61bd275cc..7a546c6b3933 100644 --- a/code/datums/elements/mouth_drop_item.dm +++ b/code/datums/elements/mouth_drop_item.dm @@ -19,9 +19,9 @@ SIGNAL_HANDLER if(slot == WEAR_FACE) - I.RegisterSignal(user, COMSIG_MOB_KNOCKED_DOWN, TYPE_PROC_REF(/obj/item, drop_to_floor)) + I.RegisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION, TYPE_PROC_REF(/obj/item, drop_to_floor)) /datum/element/mouth_drop_item/proc/item_dropped(obj/item/I, mob/living/carbon/human/user) SIGNAL_HANDLER - I.UnregisterSignal(user, COMSIG_MOB_KNOCKED_DOWN) + I.UnregisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION) diff --git a/code/datums/emergency_calls/cryo_marines.dm b/code/datums/emergency_calls/cryo_marines.dm index 4e997292f74d..fb8d4b8a5a69 100644 --- a/code/datums/emergency_calls/cryo_marines.dm +++ b/code/datums/emergency_calls/cryo_marines.dm @@ -50,34 +50,34 @@ human.client?.prefs.copy_all_to(human, JOB_SQUAD_LEADER, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/leader/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Squad Leader in the USCM")) - to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else if (heavies < max_heavies && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(human.client, JOB_SQUAD_SPECIALIST, time_required_for_job)))) heavies++ human.client?.prefs.copy_all_to(human, JOB_SQUAD_SPECIALIST, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/spec/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) - to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else if (medics < max_medics && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(human.client, JOB_SQUAD_MEDIC, time_required_for_job)))) medics++ human.client?.prefs.copy_all_to(human, JOB_SQUAD_MEDIC, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/medic/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Hospital Corpsman in the USCM")) - to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else if (engineers < max_engineers && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(human.client, JOB_SQUAD_ENGI, time_required_for_job)))) engineers++ human.client?.prefs.copy_all_to(human, JOB_SQUAD_ENGI, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/engineer/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are an Engineer in the USCM")) - to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) else human.client?.prefs.copy_all_to(human, JOB_SQUAD_MARINE, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/pfc/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Rifleman in the USCM")) - to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) sleep(10) diff --git a/code/datums/emergency_calls/cryo_marines_heavy.dm b/code/datums/emergency_calls/cryo_marines_heavy.dm index 2081d9564c50..42f25a461254 100644 --- a/code/datums/emergency_calls/cryo_marines_heavy.dm +++ b/code/datums/emergency_calls/cryo_marines_heavy.dm @@ -41,31 +41,31 @@ leaders++ arm_equipment(H, /datum/equipment_preset/uscm/leader_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Squad Leader in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (heavies < max_heavies && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(H.client, JOB_SQUAD_SPECIALIST, time_required_for_job)) heavies++ arm_equipment(H, /datum/equipment_preset/uscm/specialist_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(smartgunners < max_smartgunners && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, JOB_SQUAD_SMARTGUN, time_required_for_job)) smartgunners++ arm_equipment(H, /datum/equipment_preset/uscm/smartgunner_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Smartgunner in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(engineers < max_engineers && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(H.client, JOB_SQUAD_ENGI, time_required_for_job)) engineers++ arm_equipment(H, /datum/equipment_preset/uscm/engineer_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are an Engineer in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (medics < max_medics && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(H.client, JOB_SQUAD_MEDIC, time_required_for_job)) medics++ arm_equipment(H, /datum/equipment_preset/uscm/medic_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Hospital Corpsman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else arm_equipment(H, /datum/equipment_preset/uscm/private_equipped/cryo, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Rifleman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(H, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) sleep(10) to_chat(H, SPAN_BOLD("Objectives: [objectives]")) diff --git a/code/datums/emergency_calls/cryo_spec.dm b/code/datums/emergency_calls/cryo_spec.dm index 6cc7c905efbc..8d563b0693f8 100644 --- a/code/datums/emergency_calls/cryo_spec.dm +++ b/code/datums/emergency_calls/cryo_spec.dm @@ -34,7 +34,7 @@ human.client?.prefs.copy_all_to(human, JOB_SQUAD_SPECIALIST, TRUE, TRUE) arm_equipment(human, /datum/equipment_preset/uscm/spec/cryo, mind == null, TRUE) to_chat(human, SPAN_ROLE_HEADER("You are a Weapons Specialist in the USCM")) - to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(human, SPAN_ROLE_BODY("Your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(human, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) sleep(10) diff --git a/code/datums/emergency_calls/tank_crew.dm b/code/datums/emergency_calls/tank_crew.dm index fb437c179e48..f8d20051c244 100644 --- a/code/datums/emergency_calls/tank_crew.dm +++ b/code/datums/emergency_calls/tank_crew.dm @@ -24,11 +24,10 @@ sleep(5) arm_equipment(H, /datum/equipment_preset/uscm/tank/full, TRUE, TRUE) to_chat(H, SPAN_ROLE_HEADER("You are a Vehicle Crewman in the USCM")) - to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) + to_chat(H, SPAN_ROLE_BODY("You are here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name]. Listen to the chain of command.")) to_chat(H, SPAN_BOLDWARNING("If you wish to cryo or ghost upon spawning in, you must ahelp and inform staff so you can be replaced.")) sleep(10) to_chat(H, SPAN_BOLD("Objectives: [objectives]")) GLOB.data_core.manifest_inject(H) //Put people in crew manifest - diff --git a/code/datums/emergency_calls/whiskey_outpost.dm b/code/datums/emergency_calls/whiskey_outpost.dm index 5c46ace04d6c..c6a7e4947756 100644 --- a/code/datums/emergency_calls/whiskey_outpost.dm +++ b/code/datums/emergency_calls/whiskey_outpost.dm @@ -28,23 +28,23 @@ if(!leader && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job)) leader = mob arm_equipment(mob, /datum/equipment_preset/dust_raider/leader, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Squad Leader in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Squad Leader in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (heavies < max_heavies && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_HEAVY) && check_timelock(mob.client, JOB_SQUAD_SPECIALIST, time_required_for_job)) heavies++ arm_equipment(mob, /datum/equipment_preset/dust_raider/specialist, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Specialist in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Specialist in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(smartgunners < max_smartgunners && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(mob.client, JOB_SQUAD_SMARTGUN, time_required_for_job)) smartgunners++ arm_equipment(mob, /datum/equipment_preset/dust_raider/smartgunner, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Smartgunner in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Smartgunner in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if(engineers < max_engineers && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(mob.client, JOB_SQUAD_ENGI, time_required_for_job)) engineers++ arm_equipment(mob, /datum/equipment_preset/dust_raider/engineer, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are an Engineer in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are an Engineer in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else if (medics < max_medics && HAS_FLAG(mob.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(mob.client, JOB_SQUAD_MEDIC, time_required_for_job)) medics++ arm_equipment(mob, /datum/equipment_preset/dust_raider/medic, TRUE, TRUE) - to_chat(mob, SPAN_BOLDNOTICE("You are a Hospital Corpsman in the USCM, your squad is here to assist in the defence of the [SSmapping.configs[GROUND_MAP].map_name].")) + to_chat(mob, SPAN_BOLDNOTICE("You are a Hospital Corpsman in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) else arm_equipment(mob, /datum/equipment_preset/dust_raider/private, TRUE, TRUE) to_chat(mob, SPAN_BOLDNOTICE("You are a Rifleman in the USCM, your squad is here to assist in the defence of [SSmapping.configs[GROUND_MAP].map_name].")) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 16825ab8a7ba..207310ac34c5 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -166,15 +166,15 @@ /datum/teleport/instant/science/teleportChecks() if(istype(teleatom, /obj/item/disk/nuclear)) // Don't let nuke disks get teleported --NeoFite - teleatom.visible_message(SPAN_DANGER("The [teleatom] bounces off of the portal!")) + teleatom.visible_message(SPAN_DANGER("[teleatom] bounces off of the portal!")) return 0 if(length(teleatom.search_contents_for(/obj/item/disk/nuclear))) if(istype(teleatom, /mob/living)) var/mob/living/MM = teleatom - MM.visible_message(SPAN_DANGER("The [MM] bounces off of the portal!"),SPAN_DANGER("Something you are carrying seems to be unable to pass through the portal. Better drop it if you want to go through.")) + MM.visible_message(SPAN_DANGER("[MM] bounces off of the portal!"),SPAN_DANGER("Something you are carrying seems to be unable to pass through the portal. Better drop it if you want to go through.")) else - teleatom.visible_message(SPAN_DANGER("The [teleatom] bounces off of the portal!")) + teleatom.visible_message(SPAN_DANGER("[teleatom] bounces off of the portal!")) return 0 if(is_admin_level(destination.z)) diff --git a/code/datums/mob_hud.dm b/code/datums/mob_hud.dm index f3864476431b..e4ec3acc1410 100644 --- a/code/datums/mob_hud.dm +++ b/code/datums/mob_hud.dm @@ -803,8 +803,6 @@ GLOBAL_DATUM(hud_icon_hudfocus, /image) if (tag_found) tag_holder.overlays += image('icons/mob/hud/hud.dmi', src, "prae_tag") - // Hacky, but works. Currently effects are hard to make with precise timings - var/freeze_found = HAS_TRAIT(src, TRAIT_IMMOBILIZED) && !buckled && !lying - + var/freeze_found = HAS_TRAIT(src, TRAIT_IMMOBILIZED) && body_position == STANDING_UP && !buckled // Eligible targets are unable to move but can stand and aren't buckled (eg nested) - This is to convey that they are temporarily unable to move if (freeze_found) freeze_holder.overlays += image('icons/mob/hud/hud.dmi', src, "xeno_freeze") diff --git a/code/datums/supply_packs/food.dm b/code/datums/supply_packs/food.dm index 9e0527aed6cf..f74567c78a89 100644 --- a/code/datums/supply_packs/food.dm +++ b/code/datums/supply_packs/food.dm @@ -1,144 +1,47 @@ //Food.Regrouping all the ASRS crate related to food here. - -//All the ingredients that you can grown. - -/datum/supply_packs/potato - name = "Potatoes(x20)" - contains = list( - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper Potato crate" - group = "Food" - -/datum/supply_packs/tomato - name = "tomato (x20)" - contains = list( - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper Tomato crate" - group = "Food" - -/datum/supply_packs/wheat - name = "wheat (x20)" - contains = list( - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - /obj/item/reagent_container/food/snacks/grown/wheat, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper Wheat crate" - group = "Food" - -//All the meats - -/datum/supply_packs/meat - name = "meat(x5)" - contains = list( - /obj/item/reagent_container/food/snacks/meat, - /obj/item/reagent_container/food/snacks/meat, - /obj/item/reagent_container/food/snacks/meat, - /obj/item/reagent_container/food/snacks/meat, - /obj/item/reagent_container/food/snacks/meat, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper meat crate" - group = "Food" - -/datum/supply_packs/carp_fillet - name = "carp fillet (x5)" - contains = list( - /obj/item/reagent_container/food/snacks/carpmeat, - /obj/item/reagent_container/food/snacks/carpmeat, - /obj/item/reagent_container/food/snacks/carpmeat, - /obj/item/reagent_container/food/snacks/carpmeat, - /obj/item/reagent_container/food/snacks/carpmeat, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper carp filet crate" - group = "Food" - -//all the condiment type items - -/datum/supply_packs/condiment - name = "crate of condiments" +// crate of random ingredient that you can buy in vendor in kitchen +/datum/supply_packs/ingredient + name = "surplus boxes of ingredients(x6 boxes)" + randomised_num_contained = 6 contains = list( - /obj/item/reagent_container/food/condiment/enzyme, - /obj/item/reagent_container/food/condiment/sugar, - /obj/item/reagent_container/food/condiment/saltshaker, - /obj/item/reagent_container/food/condiment/peppermill, + /obj/item/storage/fancy/egg_box, + /obj/item/storage/box/fish, + /obj/item/storage/box/meat, + /obj/item/storage/box/milk, + /obj/item/storage/box/soymilk, + /obj/item/storage/box/enzyme, + /obj/item/storage/box/flour, + /obj/item/storage/box/sugar, + /obj/item/storage/box/apple, + /obj/item/storage/box/banana, + /obj/item/storage/box/chanterelle, + /obj/item/storage/box/cherries, + /obj/item/storage/box/chili, + /obj/item/storage/box/cabbage, + /obj/item/storage/box/carrot, + /obj/item/storage/box/corn, + /obj/item/storage/box/eggplant, + /obj/item/storage/box/lemon, + /obj/item/storage/box/lime, + /obj/item/storage/box/orange, + /obj/item/storage/box/potato, + /obj/item/storage/box/tomato, + /obj/item/storage/box/whitebeet, /obj/item/reagent_container/food/condiment/hotsauce/cholula, /obj/item/reagent_container/food/condiment/hotsauce/franks, /obj/item/reagent_container/food/condiment/hotsauce/sriracha, /obj/item/reagent_container/food/condiment/hotsauce/tabasco, + /obj/item/reagent_container/food/drinks/bottle/whiskey, + /obj/item/reagent_container/food/drinks/bottle/tequila, + /obj/item/reagent_container/food/drinks/bottle/rum, + /obj/item/reagent_container/food/drinks/bottle/wine, ) cost = 10 containertype = /obj/structure/closet/crate/freezer - containername = "\improper crate of condiment" + containername = "\improper surplus of ingredients crate" group = "Food" - //all the finish snacks. +//all the finish snacks. /datum/supply_packs/donuts name = "box of donuts (x5)" @@ -165,47 +68,6 @@ containername = "\improper USCM MRE crate(x2)" group = "Food" -/datum/supply_packs/funfood - name = "special ingredients crate (x6)" - randomised_num_contained = 6 - contains = list( - /obj/item/reagent_container/food/condiment/enzyme, - /obj/item/reagent_container/food/condiment/saltshaker, - /obj/item/reagent_container/food/condiment/saltshaker, - /obj/item/reagent_container/food/condiment/saltshaker, - /obj/item/reagent_container/food/condiment/peppermill, - /obj/item/reagent_container/food/condiment/peppermill, - /obj/item/reagent_container/food/condiment/peppermill, - /obj/item/reagent_container/food/condiment/sugar, - /obj/item/reagent_container/food/condiment/sugar, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/grown/potato, - /obj/item/reagent_container/food/snacks/mint, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/tomato, - /obj/item/reagent_container/food/snacks/grown/carrot, - /obj/item/reagent_container/food/snacks/grown/carrot, - /obj/item/reagent_container/food/snacks/grown/lemon, - /obj/item/reagent_container/food/snacks/grown/lemon, - /obj/item/reagent_container/food/snacks/grown/orange, - /obj/item/reagent_container/food/snacks/grown/orange, - /obj/item/reagent_container/food/snacks/grown/lime, - /obj/item/reagent_container/food/snacks/grown/lime, - /obj/item/reagent_container/food/drinks/bottle/whiskey, - /obj/item/reagent_container/food/drinks/bottle/tequila, - /obj/item/reagent_container/food/drinks/bottle/rum, - /obj/item/reagent_container/food/drinks/bottle/wine, - /obj/item/reagent_container/food/drinks/bottle/wine, - /obj/item/reagent_container/food/drinks/bottle/wine, - ) - cost = 10 - containertype = /obj/structure/closet/crate/freezer - containername = "\improper Special ingredients crate" - group = "Food" - /datum/supply_packs/pizzas name = "pizza ready-to-eat (x3)" contains = list( diff --git a/code/datums/supply_packs/operations.dm b/code/datums/supply_packs/operations.dm index 6d5e5d14756c..dcc270cb00a1 100644 --- a/code/datums/supply_packs/operations.dm +++ b/code/datums/supply_packs/operations.dm @@ -112,10 +112,10 @@ /datum/supply_packs/spec_kits name = "Weapons Specialist Kits" contains = list( - /obj/item/spec_kit/asrs, - /obj/item/spec_kit/asrs, - /obj/item/spec_kit/asrs, - /obj/item/spec_kit/asrs, + /obj/item/spec_kit/rifleman, + /obj/item/spec_kit/rifleman, + /obj/item/spec_kit/rifleman, + /obj/item/spec_kit/rifleman, ) cost = 0 containertype = /obj/structure/closet/crate/supply diff --git a/code/game/area/kutjevo.dm b/code/game/area/kutjevo.dm index 422017c0a46b..a5a12cd5b999 100644 --- a/code/game/area/kutjevo.dm +++ b/code/game/area/kutjevo.dm @@ -67,6 +67,10 @@ name = "Kutjevo - Power Station River" icon_state = "lz_river" +/area/kutjevo/exterior/spring + name = "Kutjevo - Southern Spring" + icon_state = "lz_river" + /area/kutjevo/exterior/scrubland name = "Kutjevo - Scrubland" icon_state = "scrubland" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 17642836ba3f..5f36b3b8b390 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -166,7 +166,7 @@ directive is properly returned. if(!time) transform = complete return - animate(src, transform = complete, time = time, easing = easing) + animate(src, transform = complete, time = time, easing = easing, flags = ANIMATION_PARALLEL) /// Upates the base_transform which will be compounded with other transforms /atom/proc/update_base_transform(matrix/new_transform, time = 0) diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm index 11e26e195c12..6ebda633a19b 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm @@ -9,7 +9,7 @@ /datum/game_mode/whiskey_outpost name = GAMEMODE_WHISKEY_OUTPOST config_tag = GAMEMODE_WHISKEY_OUTPOST - required_players = 0 + required_players = 140 xeno_bypass_timer = 1 flags_round_type = MODE_NEW_SPAWN role_mappings = list( @@ -76,10 +76,14 @@ hardcore = TRUE votable = TRUE - vote_cycle = 25 // approx. once every 5 days, if it wins the vote + vote_cycle = 75 // approx. once every 5 days, if it wins the vote taskbar_icon = 'icons/taskbar/gml_wo.png' +/datum/game_mode/whiskey_outpost/New() + . = ..() + required_players = CONFIG_GET(number/whiskey_required_players) + /datum/game_mode/whiskey_outpost/get_roles_list() return GLOB.ROLES_WO @@ -511,10 +515,10 @@ unacidable = TRUE var/working = 0 -/obj/structure/machinery/wo_recycler/attack_hand(mob/user) +/obj/structure/machinery/wo_recycler/attack_hand(mob/living/user) if(inoperable(MAINT)) return - if(user.lying || user.stat) + if(user.is_mob_incapacitated()) return if(ismaintdrone(usr) || \ istype(usr, /mob/living/carbon/xenomorph)) diff --git a/code/game/gamemodes/colonialmarines/xenovsxeno.dm b/code/game/gamemodes/colonialmarines/xenovsxeno.dm index 32afb2156925..a9ad48196257 100644 --- a/code/game/gamemodes/colonialmarines/xenovsxeno.dm +++ b/code/game/gamemodes/colonialmarines/xenovsxeno.dm @@ -141,7 +141,6 @@ original.statistic_exempt = TRUE original.buckled = start_nest original.setDir(start_nest.dir) - original.update_canmove() start_nest.buckled_mob = original start_nest.afterbuckle(original) diff --git a/code/game/jobs/job/antag/xeno/xenomorph.dm b/code/game/jobs/job/antag/xeno/xenomorph.dm index 53b06147e28c..78b6ab7e3ab2 100644 --- a/code/game/jobs/job/antag/xeno/xenomorph.dm +++ b/code/game/jobs/job/antag/xeno/xenomorph.dm @@ -88,9 +88,8 @@ break human_to_transform.statistic_exempt = TRUE - human_to_transform.buckled = start_nest + human_to_transform.set_buckled(start_nest) human_to_transform.setDir(start_nest.dir) - human_to_transform.update_canmove() start_nest.buckled_mob = human_to_transform start_nest.afterbuckle(human_to_transform) diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm index 8829bf983c25..8deadbeba32e 100644 --- a/code/game/jobs/role_authority.dm +++ b/code/game/jobs/role_authority.dm @@ -262,7 +262,7 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou if(istype(CO_surv_job)) CO_surv_job.set_spawn_positions(GLOB.players_preassigned) - if(SSnightmare.get_scenario_value("predator_round")) + if(SSnightmare.get_scenario_value("predator_round") && !Check_WO()) SSticker.mode.flags_round_type |= MODE_PREDATOR // Set predators starting amount based on marines assigned var/datum/job/PJ = temp_roles_for_mode[JOB_PREDATOR] diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index c9092a750f73..03c013703b07 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -19,7 +19,7 @@ active_power_usage = 5 var/strapped = 0 can_buckle = TRUE - buckle_lying = TRUE + buckle_lying = 90 var/buckling_y = -4 surgery_duration_multiplier = SURGERY_SURFACE_MULT_IDEAL //Ideal surface for surgery. var/patient_exam = 0 diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 32cb026a0b25..d62d688fcfc5 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -98,7 +98,7 @@ update_flag /obj/structure/machinery/portable_atmospherics/canister/attackby(obj/item/W as obj, mob/user as mob) if(!HAS_TRAIT(W, TRAIT_TOOL_WRENCH) && !istype(W, /obj/item/tank) && !istype(W, /obj/item/device/analyzer)) - visible_message(SPAN_DANGER("[user] hits the [src] with a [W]!")) + visible_message(SPAN_DANGER("[user] hits [src] with [W]!")) update_health(W.force) src.add_fingerprint(user) ..() diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index b91b865b96a9..08437d35a8e3 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -763,7 +763,6 @@ M.stop_pulling() M.apply_effect(8, STUN) M.apply_effect(5, WEAKEN) - M.lying = 1 ..() /obj/structure/machinery/bot/mulebot/alter_health() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 715e9c2a86e5..55df45c70ccc 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -152,7 +152,7 @@ if(X.id == id) X.score(side, 3)// 3 points for dunking a mob // no break, to update multiple scoreboards - visible_message(SPAN_DANGER("[user] dunks [M] into the [src]!")) + visible_message(SPAN_DANGER("[user] dunks [M] into [src]!")) return else if (istype(W, /obj/item) && get_dist(src,user)<2) user.drop_inv_item_to_loc(W, loc) @@ -160,7 +160,7 @@ if(X.id == id) X.score(side) // no break, to update multiple scoreboards - visible_message(SPAN_NOTICE("[user] dunks [W] into the [src]!")) + visible_message(SPAN_NOTICE("[user] dunks [W] into [src]!")) return /obj/structure/holohoop/BlockedPassDirs(atom/movable/mover, target_dir) diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 67e4e8ed35ab..3a809620d7e6 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -68,7 +68,6 @@ src.occupant.updatehealth() if (src.occupant.health >= 0 && src.occupant.stat == DEAD) src.occupant.set_stat(CONSCIOUS) - src.occupant.lying = 0 GLOB.dead_mob_list -= src.occupant GLOB.alive_mob_list += src.occupant occupant.reload_fullscreens() diff --git a/code/game/machinery/computer/dropship_weapons.dm b/code/game/machinery/computer/dropship_weapons.dm index fdab92ee4c13..d86b9fc28a28 100644 --- a/code/game/machinery/computer/dropship_weapons.dm +++ b/code/game/machinery/computer/dropship_weapons.dm @@ -64,7 +64,7 @@ power = MATRIX.power else - to_chat(user, SPAN_WARNING("matrix is not complete!")) + to_chat(user, SPAN_WARNING("Matrix is not complete!")) /obj/structure/machinery/computer/dropship_weapons/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 0) var/data[0] diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index d28825939d86..20aa6925d0b4 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -24,7 +24,7 @@ set name = "Eject ID Card" set src in oview(1) - if(!usr || usr.stat || usr.lying) return + if(!usr || usr.is_mob_incapacitated()) return if(scan) to_chat(usr, "You remove \the [scan] from \the [src].") diff --git a/code/game/machinery/computer/research.dm b/code/game/machinery/computer/research.dm index 2c8a5689b495..1ba696eeee9c 100644 --- a/code/game/machinery/computer/research.dm +++ b/code/game/machinery/computer/research.dm @@ -29,7 +29,7 @@ if(!N.grant) return GLOB.chemical_data.update_credits(N.grant) - visible_message(SPAN_NOTICE("[user] scans the [N.name] on the [src], collecting the [N.grant] research credits.")) + visible_message(SPAN_NOTICE("[user] scans the [N.name] on [src], collecting the [N.grant] research credits.")) N.grant = 0 qdel(N) return @@ -61,7 +61,7 @@ visible_message(SPAN_NOTICE("[user] swipes their ID card on \the [src], but it is refused.")) return if(card.clearance_access <= GLOB.chemical_data.clearance_level || (card.clearance_access == 6 && GLOB.chemical_data.clearance_level >= 5 && GLOB.chemical_data.clearance_x_access)) - visible_message(SPAN_NOTICE("[user] swipes the clearance card on the [src], but nothing happens.")) + visible_message(SPAN_NOTICE("[user] swipes the clearance card on [src], but nothing happens.")) return if(user.real_name != card.registered_name) visible_message(SPAN_WARNING("WARNING: ILLEGAL CLEARANCE USER DETECTED. CARD DATA HAS BEEN WIPED.")) @@ -220,4 +220,3 @@ GLOB.chemical_data.update_credits(purchase_cost * -1) visible_message(SPAN_NOTICE("Clearance Level X Acquired.")) playsound(loc, pick('sound/machines/computer_typing1.ogg','sound/machines/computer_typing2.ogg','sound/machines/computer_typing3.ogg'), 5, 1) - diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index c5a13e2c3e74..19e3ac900af6 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -51,11 +51,11 @@ dat += "[R.name] |" if(R.stat) dat += " Not Responding |" - else if (!R.canmove) + else if (HAS_TRAIT_FROM(R, TRAIT_IMMOBILIZED, HACKED_TRAIT)) dat += " Locked Down |" else dat += " Operating Normally |" - if(R.canmove && R.cell) + if(R.cell) dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" else dat += " No Cell Installed |" @@ -70,7 +70,8 @@ if (isRemoteControlling(user)) if((user.mind.original == user)) dat += "(Hack) " - dat += "([R.canmove ? "Lockdown" : "Release"]) " + var/canmove = HAS_TRAIT_FROM(src, TRAIT_IMMOBILIZED, HACKED_TRAIT) + dat += "([canmove ? "Lockdown" : "Release"]) " dat += "(Destroy)" dat += "
" dat += "(Return to Main Menu)
" @@ -161,20 +162,22 @@ else if (href_list["stopbot"]) if(src.allowed(usr)) var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) + var/canmove = HAS_TRAIT_FROM(src, TRAIT_IMMOBILIZED, HACKED_TRAIT) if(R && istype(R)) // Extra sancheck because of input var references - var/choice = tgui_input_list(usr, "Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?", "Hack machine", list("Confirm", "Abort")) + var/choice = tgui_input_list(usr, "Are you certain you wish to [canmove ? "lock down" : "release"] [R.name]?", "Hack machine", list("Confirm", "Abort")) if(choice == "Confirm") if(R && istype(R)) - message_admins("[key_name_admin(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") - log_game("[key_name(usr)] [R.canmove ? "locked down" : "released"] [R.name]!") - R.canmove = !R.canmove + message_admins("[key_name_admin(usr)] [canmove ? "locked down" : "released"] [R.name]!") + log_game("[key_name(usr)] [canmove ? "locked down" : "released"] [R.name]!") + if(canmove) + ADD_TRAIT(src, TRAIT_IMMOBILIZED, HACKED_TRAIT) + else + REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, HACKED_TRAIT) if (R.lockcharge) - // R.cell.charge = R.lockcharge R.lockcharge = !R.lockcharge to_chat(R, "Your lockdown has been lifted!") else R.lockcharge = !R.lockcharge - // R.cell.charge = 0 to_chat(R, "You have been locked down!") else diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 80306ab483b1..b03ba1e8e195 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -91,7 +91,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( else if(user.hallucination > 50 && prob(10) && operating == 0) to_chat(user, SPAN_DANGER("You feel a powerful shock course through your body!")) user.halloss += 10 - user.stunned += 10 + user.apply_effect(10, STUN) return ..(user) @@ -557,7 +557,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( if(istype(attacking_item, /obj/item/clothing/mask/cigarette)) if(isElectrified()) var/obj/item/clothing/mask/cigarette/L = attacking_item - L.light(SPAN_NOTICE("[user] lights their [L] on an electrical arc from the [src]")) + L.light(SPAN_NOTICE("[user] lights their [L] on an electrical arc from [src]")) return if(!isRemoteControlling(user)) @@ -568,7 +568,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( add_fingerprint(user) if(istype(attacking_item, /obj/item/weapon/zombie_claws) && (welded || locked)) - user.visible_message(SPAN_NOTICE("[user] starts tearing into the door on the [src]!"), \ + user.visible_message(SPAN_NOTICE("[user] starts tearing into the door on [src]!"), \ SPAN_NOTICE("You start prying your hand into the gaps of the door with your fingers... This will take about 30 seconds."), \ SPAN_NOTICE("You hear tearing noises!")) @@ -845,7 +845,7 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( for(var/i in resin_door_shmushereds) if(istype(x,i)) //I would like to just use a if(locate() in ) here but Im not gonna add every child to GLOB.resin_door_shmushereds so it works playsound(loc, "alien_resin_break", 25) - visible_message(SPAN_WARNING("The [src.name] closes on the [x], shmushing it!")) + visible_message(SPAN_WARNING("The [src.name] closes on [x], shmushing it!")) if(isturf(x)) var/turf/closed/wall/resin_wall_to_destroy = x resin_wall_to_destroy.dismantle_wall() diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index efb4a7d05c9d..cddd67c7e2b2 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -132,7 +132,7 @@ "Would you like to [density ? "open" : "close"] this [src.name]?[ alarmed && density ? "\nNote that by doing so, you acknowledge any damages from opening this\n[src.name] as being your own fault, and you will be held accountable under the law." : ""]",\ "\The [src]", list("Yes", "No")) != "Yes") return - if(user.is_mob_incapacitated() || (!user.canmove && !isRemoteControlling(user)) || (get_dist(src, user) > 1 && !isRemoteControlling(user))) + if(user.is_mob_incapacitated() || (get_dist(src, user) > 1 && !isRemoteControlling(user))) to_chat(user, "Sorry, you must remain able bodied and close to \the [src] in order to use it.") return if(density && (inoperable())) //can still close without power diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm index db9a1dbbf76e..4a5c62b1f9a0 100644 --- a/code/game/machinery/fax_machine.dm +++ b/code/game/machinery/fax_machine.dm @@ -110,7 +110,8 @@ GLOBAL_LIST_EMPTY(alldepartments) set category = "Object" set name = "Eject ID Card" set src in view(1) - if(!usr || usr.stat || usr.lying) return + if(usr.is_mob_incapacitated()) + return if(ishuman(usr) && scan) to_chat(usr, "You remove \the [scan] from \the [src].") diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 516cdad380b1..580fea644eec 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -36,12 +36,12 @@ update_icon() -/obj/structure/machinery/floodlight/attack_hand(mob/user) +/obj/structure/machinery/floodlight/attack_hand(mob/living/user) if(!toggleable) to_chat(user, SPAN_NOTICE("[src] doesn't seem to have a switch to toggle the light.")) return - if(user.lying || user.stat) + if(user.is_mob_incapacitated()) return if(!is_valid_user(user)) diff --git a/code/game/machinery/fusion_engine.dm b/code/game/machinery/fusion_engine.dm index 8e3097ef52d1..d7c7cc4c7d18 100644 --- a/code/game/machinery/fusion_engine.dm +++ b/code/game/machinery/fusion_engine.dm @@ -156,13 +156,13 @@ /obj/structure/machinery/power/fusion_engine/attackby(obj/item/O, mob/user) if(istype(O, /obj/item/fuelCell)) if(is_on) - to_chat(user, SPAN_WARNING("The [src] needs to be turned off first.")) + to_chat(user, SPAN_WARNING("[src] needs to be turned off first.")) return TRUE if(!fusion_cell) if(user.drop_inv_item_to_loc(O, src)) fusion_cell = O update_icon() - to_chat(user, SPAN_NOTICE("You load the [src] with the [O].")) + to_chat(user, SPAN_NOTICE("You load [src] with [O].")) return TRUE else to_chat(user, SPAN_WARNING("You need to remove the fuel cell from [src] first.")) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index ef6c74a052cd..e16d2cacf63b 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -57,7 +57,7 @@ if(ishuman(usr)) var/mob/living/carbon/human/user = usr - if(user.stat || get_dist(user, src) > 1 || user.blinded || user.lying) + if(user.is_mob_incapacitated() || get_dist(user, src) > 1 || user.blinded) return if(!skillcheck(user, SKILL_SURGERY, SKILL_SURGERY_NOVICE)) @@ -101,7 +101,7 @@ for(var/datum/reagent/chem in beaker.reagents.reagent_list) reagentnames += ";[chem.name]" - log_admin("[key_name(user)] put a [beaker] into [src], containing [reagentnames] at ([src.loc.x],[src.loc.y],[src.loc.z]).") + log_admin("[key_name(user)] put \a [beaker] into [src], containing [reagentnames] at ([src.loc.x],[src.loc.y],[src.loc.z]).") to_chat(user, "You attach \the [container] to \the [src].") update_beam() @@ -179,7 +179,7 @@ if(!istype(usr, /mob/living)) return - if(usr.stat || usr.lying) + if(usr.stat || usr.is_mob_incapacitated()) return mode = !mode diff --git a/code/game/machinery/kitchen/processor.dm b/code/game/machinery/kitchen/processor.dm index 0c4b8a973e83..a18f5db8af43 100644 --- a/code/game/machinery/kitchen/processor.dm +++ b/code/game/machinery/kitchen/processor.dm @@ -89,7 +89,7 @@ to_chat(user, SPAN_DANGER("That probably won't blend.")) return 1 user.visible_message("[user] put [what] into [src].", \ - "You put the [what] into [src].") + "You put [what] into [src].") user.drop_held_item() what.forceMove(src) @@ -118,4 +118,3 @@ src.processing = 0 src.visible_message(SPAN_NOTICE("\the [src] finished processing."), \ "You hear the food processor stopping/") - diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 93c7327c8045..c5eaa14e05b5 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -229,7 +229,11 @@ Class Procs: return TRUE if(inoperable()) return 1 - if(usr.is_mob_restrained() || usr.lying || usr.stat) + if(isliving(usr)) + var/mob/living/living = usr + if(living.body_position == LYING_DOWN) // legacy. if you too find it doesn't make sense, consider removing it + return TRUE + if(usr.is_mob_restrained()) return 1 if(!is_valid_user(usr)) to_chat(usr, SPAN_DANGER("You don't have the dexterity to do this!")) @@ -251,10 +255,10 @@ Class Procs: else return src.attack_hand(user) -/obj/structure/machinery/attack_hand(mob/user as mob) +/obj/structure/machinery/attack_hand(mob/living/user as mob) if(inoperable(MAINT)) return TRUE - if(user.lying || user.stat) + if(user.is_mob_incapacitated()) return TRUE if(!is_valid_user(user)) to_chat(usr, SPAN_DANGER("You don't have the dexterity to do this!")) diff --git a/code/game/machinery/medical_pod/bodyscanner.dm b/code/game/machinery/medical_pod/bodyscanner.dm index fdcd0ceb62e6..bbc3be7d5aae 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.knocked_out, + "knocked_out" = H.GetKnockOutValueNotADurationDoNotUse(), "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"]]% ([round(occ["knocked_out"] / 4)] seconds left!)
" + dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% (approximately [round(occ["knocked_out"] / 5)] 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/medical_pod.dm b/code/game/machinery/medical_pod/medical_pod.dm index b284d71ad4a7..62c8eef1f72c 100644 --- a/code/game/machinery/medical_pod/medical_pod.dm +++ b/code/game/machinery/medical_pod/medical_pod.dm @@ -155,7 +155,6 @@ if(exit_stun) occupant.apply_effect(exit_stun, STUN) //Action delay when going out - occupant.update_canmove() //Force the delay to go in action immediately occupant.visible_message(SPAN_WARNING("[occupant] pops out of \the [src]!"), SPAN_WARNING("You get out of \the [src] and get your bearings!")) diff --git a/code/game/machinery/medical_pod/sleeper.dm b/code/game/machinery/medical_pod/sleeper.dm index afd7c43979f0..fe2b698caed0 100644 --- a/code/game/machinery/medical_pod/sleeper.dm +++ b/code/game/machinery/medical_pod/sleeper.dm @@ -390,8 +390,8 @@ to_chat(user, "[]\t -Respiratory Damage %: []", (occupant.getOxyLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getOxyLoss()) 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: If health is below 20% these times are inaccurate)")) - to_chat(user, SPAN_NOTICE(" \t [occupant.knocked_out / 5] second\s (if around 1 or 2 the sleeper is keeping them asleep.)")) + 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.)")) 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 306f9c8bbcbe..369953788ae1 100644 --- a/code/game/machinery/nuclearbomb.dm +++ b/code/game/machinery/nuclearbomb.dm @@ -98,7 +98,7 @@ GLOBAL_VAR_INIT(bomb_set, FALSE) ..() /obj/structure/machinery/nuclearbomb/attack_hand(mob/user as mob) - if(user.is_mob_incapacitated() || !user.canmove || get_dist(src, user) > 1 || isRemoteControlling(user)) + if(user.is_mob_incapacitated() || get_dist(src, user) > 1 || isRemoteControlling(user)) return if(isyautja(user)) @@ -290,7 +290,7 @@ GLOBAL_VAR_INIT(bomb_set, FALSE) set name = "Make Deployable" set src in oview(1) - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || being_used || timing) + if(usr.is_mob_incapacitated() || being_used || timing) return if(!ishuman(usr)) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 33e6e9749e48..a886b59f501f 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -620,8 +620,8 @@ Buildable meters playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) user.visible_message( \ - "[user] fastens the [src].", \ - SPAN_NOTICE("You have fastened the [src]."), \ + "[user] fastens [src].", \ + SPAN_NOTICE("You have fastened [src]."), \ "You hear ratchet.") qdel(src) // remove the pipe item diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index fc8815b0511f..e007ada79a0e 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -75,7 +75,7 @@ /obj/structure/machinery/pipedispenser/Topic(href, href_list) if(..()) return - if(unwrenched || !usr.canmove || usr.stat || usr.is_mob_restrained() || !in_range(loc, usr)) + if(unwrenched || usr.is_mob_incapacitated() || !in_range(loc, usr)) close_browser(usr, "pipedispenser") return usr.set_interaction(src) @@ -150,7 +150,7 @@ Nah //Allow you to drag-drop disposal pipes into it /obj/structure/machinery/pipedispenser/disposal/MouseDrop_T(obj/structure/disposalconstruct/pipe as obj, mob/usr as mob) - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return if (!istype(pipe) || get_dist(usr, src) > 1 || get_dist(src,pipe) > 1 ) @@ -192,7 +192,7 @@ Nah usr.set_interaction(src) src.add_fingerprint(usr) if(href_list["dmake"]) - if(unwrenched || !usr.canmove || usr.stat || usr.is_mob_restrained() || !in_range(loc, usr)) + if(unwrenched || usr.is_mob_incapacitated() || !in_range(loc, usr)) close_browser(usr, "pipedispenser") return if(!wait) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index dd45ad597800..69b21964a4f4 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -66,7 +66,7 @@ return else if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) open = !open - user.visible_message(SPAN_NOTICE("[user] [open ? "opens" : "closes"] the hatch on the [src]."), SPAN_NOTICE("You [open ? "open" : "close"] the hatch on the [src].")) + user.visible_message(SPAN_NOTICE("[user] [open ? "opens" : "closes"] the hatch on [src]."), SPAN_NOTICE("You [open ? "open" : "close"] the hatch on [src].")) update_icon() if(!open && user.interactee == src) close_browser(user, "spaceheater") @@ -107,7 +107,7 @@ start_processing() else stop_processing() - user.visible_message(SPAN_NOTICE("[user] switches [on ? "on" : "off"] the [src]."),SPAN_NOTICE("You switch [on ? "on" : "off"] the [src].")) + user.visible_message(SPAN_NOTICE("[user] switches [on ? "on" : "off"] [src]."),SPAN_NOTICE("You switch [on ? "on" : "off"] [src].")) update_icon() return @@ -186,4 +186,3 @@ name = "radiator" desc = "It's a radiator. It heats the room through convection with hot water. This one has a red handle." icon_state = "radiator-r" - diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index b1d5fc9bb706..0745f05ab2d1 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -440,6 +440,27 @@ GLOBAL_LIST_EMPTY(vending_products) user.set_interaction(src) tgui_interact(user) +/// Handles redeeming coin tokens. +/obj/structure/machinery/cm_vending/proc/redeem_token(obj/item/coin/marine/token, mob/user) + var/reward_typepath + switch(token.token_type) + if(VEND_TOKEN_VOID) + to_chat(user, SPAN_WARNING("ERROR: TOKEN NOT RECOGNISED.")) + return FALSE + if(VEND_TOKEN_SPEC) + reward_typepath = /obj/item/spec_kit/rifleman + else + to_chat(user, SPAN_WARNING("ERROR: INCORRECT TOKEN.")) + return FALSE + + if(reward_typepath && user.drop_inv_item_to_loc(token, src)) + to_chat(user, SPAN_NOTICE("You insert \the [token] into \the [src].")) + var/obj/new_item = new reward_typepath(get_turf(src)) + user.put_in_any_hand_if_possible(new_item) + return TRUE + return FALSE + + //------------TGUI PROCS--------------- /obj/structure/machinery/cm_vending/ui_data(mob/user) @@ -738,13 +759,20 @@ GLOBAL_LIST_EMPTY(vending_products) hack_access(user) return TRUE + ///If we want to redeem a token + else if(istype(W, /obj/item/coin/marine)) + if(!can_access_to_vend(user, ignore_hack = TRUE)) + return FALSE + . = redeem_token(W, user) + return + ..() /obj/structure/machinery/cm_vending/proc/get_listed_products(mob/user) return listed_products -/obj/structure/machinery/cm_vending/proc/can_access_to_vend(mob/user, display=TRUE) - if(!hacked) +/obj/structure/machinery/cm_vending/proc/can_access_to_vend(mob/user, display = TRUE, ignore_hack = FALSE) + if(!hacked || ignore_hack) if(!allowed(user)) if(display) to_chat(user, SPAN_WARNING("Access denied.")) @@ -899,7 +927,7 @@ GLOBAL_LIST_EMPTY(vending_products) if(inoperable()) return - if(user.stat || user.is_mob_restrained() || user.lying) + if(user.stat || user.is_mob_restrained()) return if(get_dist(user, src) > 1 || get_dist(src, A) > 1) diff --git a/code/game/machinery/vending/vending.dm b/code/game/machinery/vending/vending.dm index da1673cad06f..8629ce2bb2be 100644 --- a/code/game/machinery/vending/vending.dm +++ b/code/game/machinery/vending/vending.dm @@ -208,23 +208,23 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending update_icon() return TRUE else if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE else if(stat & BROKEN) - to_chat(user, SPAN_NOTICE("You start to unscrew the [src]'s broken panel.")) + to_chat(user, SPAN_NOTICE("You start to unscrew [src]'s broken panel.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop unscrewing the [src]'s broken panel.")) + to_chat(user, SPAN_WARNING("You stop unscrewing [src]'s broken panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You unscrew the [src]'s broken panel and remove it, exposing many broken wires.")) + to_chat(user, SPAN_NOTICE("You unscrew [src]'s broken panel and remove it, exposing many broken wires.")) stat &= ~BROKEN stat |= REPAIR_STEP_ONE return TRUE else if(stat & REPAIR_STEP_FOUR) - to_chat(user, SPAN_NOTICE("You start to fasten the [src]'s new panel.")) + to_chat(user, SPAN_NOTICE("You start to fasten [src]'s new panel.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop fastening the [src]'s new panel.")) + to_chat(user, SPAN_WARNING("You stop fastening [src]'s new panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You fasten the [src]'s new panel, fully repairing the vendor.")) + to_chat(user, SPAN_NOTICE("You fasten [src]'s new panel, fully repairing the vendor.")) stat &= ~REPAIR_STEP_FOUR stat |= FULLY_REPAIRED update_icon() @@ -235,17 +235,17 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return FALSE else if(HAS_TRAIT(item, TRAIT_TOOL_WIRECUTTERS)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE else if(stat == WORKING && panel_open) attack_hand(user) return else if(stat & REPAIR_STEP_ONE) - to_chat(user, SPAN_NOTICE("You start to remove the [src]'s broken wires.")) + to_chat(user, SPAN_NOTICE("You start to remove [src]'s broken wires.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop removing the [src]'s broken wires.")) + to_chat(user, SPAN_WARNING("You stop removing [src]'s broken wires.")) return FALSE - to_chat(user, SPAN_NOTICE("You remove the [src]'s broken broken wires.")) + to_chat(user, SPAN_NOTICE("You remove [src]'s broken broken wires.")) stat &= ~REPAIR_STEP_ONE stat |= REPAIR_STEP_TWO return TRUE @@ -255,20 +255,20 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return FALSE else if(istype(item, /obj/item/stack/cable_coil)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE var/obj/item/stack/cable_coil/CC = item if(stat & REPAIR_STEP_TWO) if(CC.amount < 5) to_chat(user, SPAN_WARNING("You need more cable coil to replace the removed wires.")) - to_chat(user, SPAN_NOTICE("You start to replace the [src]'s removed wires.")) + to_chat(user, SPAN_NOTICE("You start to replace [src]'s removed wires.")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop replacing the [src]'s removed wires.")) + to_chat(user, SPAN_WARNING("You stop replacing [src]'s removed wires.")) return FALSE if(!CC || !CC.use(5)) to_chat(user, SPAN_WARNING("You need more cable coil to replace the removed wires.")) return FALSE - to_chat(user, SPAN_NOTICE("You remove the [src]'s broken broken wires.")) + to_chat(user, SPAN_NOTICE("You remove [src]'s broken broken wires.")) stat &= ~REPAIR_STEP_TWO stat |= REPAIR_STEP_THREE return TRUE @@ -278,18 +278,18 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return else if(istype(item, /obj/item/stack/sheet/metal)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) - to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src].")) + to_chat(user, SPAN_WARNING("You do not understand how to repair the broken [src.name].")) return FALSE var/obj/item/stack/sheet/metal/M = item if(stat & REPAIR_STEP_THREE) - to_chat(user, SPAN_NOTICE("You start to construct a new panel for the [src].")) + to_chat(user, SPAN_NOTICE("You start to construct a new panel for [src].")) if(!do_after(user, 3 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, numticks = 3)) - to_chat(user, SPAN_WARNING("You stop constructing a new panel for the [src].")) + to_chat(user, SPAN_WARNING("You stop constructing a new panel for [src].")) return FALSE if(!M || !M.use(1)) to_chat(user, SPAN_WARNING("You a sheet of metal to construct a new panel.")) return FALSE - to_chat(user, SPAN_NOTICE("You construct a new panel for the [src].")) + to_chat(user, SPAN_NOTICE("You construct a new panel for [src].")) stat &= ~REPAIR_STEP_THREE stat |= REPAIR_STEP_FOUR return TRUE @@ -306,9 +306,9 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch (anchored) if (0) anchored = TRUE - user.visible_message("[user] tightens the bolts securing the [src] to the floor.", "You tighten the bolts securing the [src] to the floor.") + user.visible_message("[user] tightens the bolts securing [src] to the floor.", "You tighten the bolts securing [src] to the floor.") if (1) - user.visible_message("[user] unfastens the bolts securing the [src] to the floor.", "You unfasten the bolts securing the [src] to the floor.") + user.visible_message("[user] unfastens the bolts securing [src] to the floor.", "You unfasten the bolts securing [src] to the floor.") anchored = FALSE return else if(HAS_TRAIT(item, TRAIT_TOOL_MULTITOOL) || HAS_TRAIT(item, TRAIT_TOOL_WIRECUTTERS)) @@ -321,7 +321,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return if(user.drop_inv_item_to_loc(item, src)) coin = item - to_chat(user, SPAN_NOTICE(" You insert the [item] into the [src]")) + to_chat(user, SPAN_NOTICE("You insert [item] into [src]")) tgui_interact(user) return else if(istype(item, /obj/item/spacecash)) @@ -422,9 +422,9 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending if(is_tipped_over) if(user.action_busy) return - user.visible_message(SPAN_NOTICE("[user] begins to heave the [src] back into place!"), SPAN_NOTICE("You start heaving the [src] back into place...")) + user.visible_message(SPAN_NOTICE("[user] begins to heave [src] back into place!"), SPAN_NOTICE("You start heaving [src] back into place...")) if(do_after(user, 80, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY)) - user.visible_message(SPAN_NOTICE("[user] rights the [src]!"), SPAN_NOTICE("You right the [src]!")) + user.visible_message(SPAN_NOTICE("[user] rights [src]!"), SPAN_NOTICE("You right [src]!")) flip_back() return @@ -534,7 +534,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending return if(coin.string_attached) if(prob(50)) - to_chat(user, SPAN_NOTICE("You successfully pull the coin out before the [src] could swallow it.")) + to_chat(user, SPAN_NOTICE("You successfully pull the coin out before [src] could swallow it.")) user.put_in_hands(coin) else to_chat(user, SPAN_NOTICE("You weren't able to pull the coin out fast enough, the machine ate it, string and all.")) @@ -820,7 +820,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending if(inoperable()) return - if(user.stat || user.is_mob_restrained() || user.lying) + if(user.stat || user.is_mob_restrained()) return if(get_dist(user, src) > 1 || get_dist(src, A) > 1) @@ -882,8 +882,8 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending S.remove_from_storage(item_to_stock, user.loc) qdel(item_to_stock) - user.visible_message(SPAN_NOTICE("[user] stocks the [src] with \a [product.product_name]."), - SPAN_NOTICE("You stock the [src] with \a [product.product_name].")) + user.visible_message(SPAN_NOTICE("[user] stocks [src] with \a [product.product_name]."), + SPAN_NOTICE("You stock [src] with \a [product.product_name].")) product.amount++ return //We found our item, no reason to go on. @@ -967,7 +967,7 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending if (!throw_item) return 0 INVOKE_ASYNC(throw_item, /atom/movable/proc/throw_atom, target, 16, SPEED_AVERAGE, src) - visible_message(SPAN_WARNING("The [src] launches \the [throw_item] at [target]!")) + visible_message(SPAN_WARNING("[src] launches [throw_item] at [target]!")) playsound(src, "sound/machines/vending.ogg", 40, TRUE) return 1 @@ -988,14 +988,14 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = TRUE - visible_message(SPAN_NOTICE("A weak yellow light turns off underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns off underneath [src].")) if(VENDING_WIRE_SHOCK) seconds_electrified = -1 - visible_message(SPAN_DANGER("Electric arcs shoot off from the [src]!")) + visible_message(SPAN_DANGER("Electric arcs shoot off from [src]!")) if (VENDING_WIRE_SHOOT_INV) if(!shoot_inventory) shoot_inventory = TRUE - visible_message(SPAN_WARNING("The [src] begins whirring noisily.")) + visible_message(SPAN_WARNING("[src] begins whirring noisily.")) /obj/structure/machinery/vending/proc/mend(wire) wires |= getWireFlag(wire) @@ -1003,24 +1003,24 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = FALSE - visible_message(SPAN_NOTICE("A weak yellow light turns on underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns on underneath [src].")) if(VENDING_WIRE_SHOCK) seconds_electrified = 0 if (VENDING_WIRE_SHOOT_INV) shoot_inventory = FALSE - visible_message(SPAN_NOTICE("The [src] stops whirring.")) + visible_message(SPAN_NOTICE("[src] stops whirring.")) /obj/structure/machinery/vending/proc/pulse(wire) switch(wire) if(VENDING_WIRE_EXTEND) extended_inventory = !extended_inventory - visible_message(SPAN_NOTICE("A weak yellow light turns [extended_inventory ? "on" : "off"] underneath the [src].")) + visible_message(SPAN_NOTICE("A weak yellow light turns [extended_inventory ? "on" : "off"] underneath [src].")) if (VENDING_WIRE_SHOCK) seconds_electrified = 30 - visible_message(SPAN_DANGER("Electric arcs shoot off from the [src]!")) + visible_message(SPAN_DANGER("Electric arcs shoot off from [src]!")) if (VENDING_WIRE_SHOOT_INV) shoot_inventory = !shoot_inventory if(shoot_inventory) - visible_message(SPAN_WARNING("The [src] begins whirring noisily.")) + visible_message(SPAN_WARNING("[src] begins whirring noisily.")) else - visible_message(SPAN_NOTICE("The [src] stops whirring.")) + visible_message(SPAN_NOTICE("[src] stops whirring.")) diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm index a57bbfe7d29f..36b0b6e44df6 100644 --- a/code/game/machinery/vending/vending_types.dm +++ b/code/game/machinery/vending/vending_types.dm @@ -447,3 +447,69 @@ /obj/item/tool/pen/fountain = 30, ) product_type = VENDOR_PRODUCT_TYPE_RECREATIONAL + +//vendor of ingredients for kitchen +/obj/structure/machinery/vending/ingredients + name = "\improper Galley Auxiliary Storage Requisition System" + desc = "A vending machine meant to be use for cooks." + product_ads = "If your out of ingredients i am here for you;all my organic produce are fresh;don't let my potatoes go stale time for you to cook some fries" + icon_state = "snack" + hacking_safety = TRUE + products = list( + /obj/item/storage/fancy/egg_box = 12, + /obj/item/storage/box/fish = 12, + /obj/item/storage/box/meat = 12, + /obj/item/storage/box/milk = 12, + /obj/item/storage/box/soymilk = 12, + /obj/item/storage/box/enzyme = 12, + /obj/item/storage/box/flour = 12, + /obj/item/storage/box/sugar = 12, + /obj/item/storage/box/saltshaker = 12, + /obj/item/storage/box/peppermill = 12, + /obj/item/storage/box/mint = 12, + /obj/item/storage/box/apple = 12, + /obj/item/storage/box/banana = 12, + /obj/item/storage/box/chanterelle = 12, + /obj/item/storage/box/cherries = 12, + /obj/item/storage/box/chili = 12, + /obj/item/storage/box/cabbage = 12, + /obj/item/storage/box/carrot = 12, + /obj/item/storage/box/corn = 12, + /obj/item/storage/box/eggplant = 12, + /obj/item/storage/box/lemon = 12, + /obj/item/storage/box/lime = 12, + /obj/item/storage/box/orange = 12, + /obj/item/storage/box/potato = 12, + /obj/item/storage/box/tomato = 12, + /obj/item/storage/box/whitebeet = 12, + ) + + prices = list( + /obj/item/storage/fancy/egg_box = 1, + /obj/item/storage/box/fish = 1, + /obj/item/storage/box/meat = 1, + /obj/item/storage/box/milk =1, + /obj/item/storage/box/soymilk = 1, + /obj/item/storage/box/enzyme = 1, + /obj/item/storage/box/flour = 1, + /obj/item/storage/box/sugar = 1, + /obj/item/storage/box/saltshaker = 1, + /obj/item/storage/box/peppermill = 1, + /obj/item/storage/box/mint = 1, + /obj/item/storage/box/apple = 1, + /obj/item/storage/box/banana = 2, + /obj/item/storage/box/chanterelle = 2, + /obj/item/storage/box/cherries = 2, + /obj/item/storage/box/chili = 2, + /obj/item/storage/box/cabbage = 2, + /obj/item/storage/box/carrot = 2, + /obj/item/storage/box/corn = 2, + /obj/item/storage/box/eggplant = 2, + /obj/item/storage/box/lemon = 2, + /obj/item/storage/box/lime = 2, + /obj/item/storage/box/orange = 2, + /obj/item/storage/box/potato = 2, + /obj/item/storage/box/tomato = 2, + /obj/item/storage/box/whitebeet = 2, + ) + product_type = VENDOR_PRODUCT_TYPE_FOOD diff --git a/code/game/machinery/vending/vendor_types/crew/synthetic.dm b/code/game/machinery/vending/vendor_types/crew/synthetic.dm index b489dbab16a4..ecef3ed622d9 100644 --- a/code/game/machinery/vending/vendor_types/crew/synthetic.dm +++ b/code/game/machinery/vending/vendor_types/crew/synthetic.dm @@ -335,13 +335,13 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( req_access = list(ACCESS_MARINE_SYNTH) vendor_role = list(JOB_SYNTH) -/obj/structure/machinery/cm_vending/own_points/experimental_tools/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/coin/marine/synth)) - if(user.drop_inv_item_to_loc(W, src)) +/obj/structure/machinery/cm_vending/own_points/experimental_tools/redeem_token(obj/item/coin/marine/token, mob/user) + if(token.token_type == VEND_TOKEN_SYNTH) + if(user.drop_inv_item_to_loc(token, src)) available_points = 30 available_points_to_display = available_points - to_chat(user, SPAN_NOTICE("You insert \the [W] into \the [src].")) - return + to_chat(user, SPAN_NOTICE("You insert \the [token] into \the [src].")) + return TRUE return ..() /obj/structure/machinery/cm_vending/own_points/experimental_tools/get_listed_products(mob/user) diff --git a/code/game/machinery/vending/vendor_types/intelligence_officer.dm b/code/game/machinery/vending/vendor_types/intelligence_officer.dm index ad10037ccfe1..93d31fe13253 100644 --- a/code/game/machinery/vending/vendor_types/intelligence_officer.dm +++ b/code/game/machinery/vending/vendor_types/intelligence_officer.dm @@ -4,26 +4,11 @@ GLOBAL_LIST_INIT(cm_vending_gear_intelligence_officer, list( list("INTELLIGENCE SET (MANDATORY)", 0, null, null, null), list("Essential Intelligence Set", 0, /obj/effect/essentials_set/intelligence_officer, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("SUPPLIES", 0, null, null, null), + list("ENGINEERING SUPPLIES", 0, null, null, null), list("Power Control Module", 5, /obj/item/circuitboard/apc, null, VENDOR_ITEM_REGULAR), - list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), - list("Night Vision Optic", 25, /obj/item/device/helmet_visor/night_vision, null, VENDOR_ITEM_RECOMMENDED), - list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), - list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), - list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), - list("Fulton Recovery Device", 10, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), list("Plastic Explosive", 10, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), - list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), - list("Medical Helmet Optic", 5, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), - list("POUCHES", 0, null, null, null), - list("Large Magazine Pouch", 10, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), - list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_RECOMMENDED), - list("Machete Pouch (Full)", 10, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), - list("PRIMARY AMMUNITION", 0, null, null, null), list("M4RA AP Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/m4ra/ap, null, VENDOR_ITEM_REGULAR), list("M39 AP Magazine (10x20mm)", 10, /obj/item/ammo_magazine/smg/m39/ap , null, VENDOR_ITEM_REGULAR), @@ -35,7 +20,30 @@ GLOBAL_LIST_INIT(cm_vending_gear_intelligence_officer, list( list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), list("M4A3 HP Magazine", 5, /obj/item/ammo_magazine/pistol/hp, null, VENDOR_ITEM_REGULAR), list("M4A3 AP Magazine", 5, /obj/item/ammo_magazine/pistol/ap, null, VENDOR_ITEM_REGULAR), - list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR) + list("VP78 Magazine", 5, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), + + list("POUCHES", 0, null, null, null), + list("Large Magazine Pouch", 10, /obj/item/storage/pouch/magazine/large, null, VENDOR_ITEM_REGULAR), + list("Large Shotgun Shell Pouch", 10, /obj/item/storage/pouch/shotgun/large, null, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_RECOMMENDED), + list("Machete Pouch (Full)", 10, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Fulton Device Stack", 10, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), + list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), + + list("BINOCULARS", 0, null, null, null), + list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 5, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + list("Night Vision Optic", 25, /obj/item/device/helmet_visor/night_vision, null, VENDOR_ITEM_RECOMMENDED), + + list("RADIO KEYS", 0, null, null, null), + list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), )) /obj/structure/machinery/cm_vending/gear/intelligence_officer diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm index 52418fb8940c..505ef81a1277 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm @@ -71,8 +71,10 @@ listed_products = list( list("STANDARD EQUIPMENT", -1, null, null, null), list("Marine Combat Boots", round(scale * 15), /obj/item/clothing/shoes/marine, VENDOR_ITEM_REGULAR), + list("Marine Brown Combat Boots", round(scale * 15), /obj/item/clothing/shoes/marine/brown, VENDOR_ITEM_REGULAR), list("USCM Uniform", round(scale * 15), /obj/item/clothing/under/marine, VENDOR_ITEM_REGULAR), list("Marine Combat Gloves", round(scale * 15), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), + list("Marine Brown Combat Gloves", round(scale * 15), /obj/item/clothing/gloves/marine/brown, VENDOR_ITEM_REGULAR), list("Marine Black Combat Gloves", round(scale * 15), /obj/item/clothing/gloves/marine/black, VENDOR_ITEM_REGULAR), list("Marine Radio Headset", round(scale * 15), /obj/item/device/radio/headset/almayer, VENDOR_ITEM_REGULAR), list("M10 Pattern Marine Helmet", round(scale * 15), /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), diff --git a/code/game/objects/effects/acid_hole.dm b/code/game/objects/effects/acid_hole.dm index 415df0e7e5a7..a4db9ef5c0e0 100644 --- a/code/game/objects/effects/acid_hole.dm +++ b/code/game/objects/effects/acid_hole.dm @@ -50,18 +50,18 @@ return XENO_NO_DELAY_ACTION /obj/effect/acid_hole/proc/expand_hole(mob/living/carbon/xenomorph/user) - if(user.action_busy || user.lying) + if(user.action_busy || user.is_mob_incapacitated()) return playsound(src, "pry", 25, 1) xeno_attack_delay(user) - if(do_after(user, 60, INTERRUPT_ALL, BUSY_ICON_GENERIC) && !QDELETED(src) && holed_wall && !user.lying && istype(holed_wall)) + if(do_after(user, 60, INTERRUPT_ALL, BUSY_ICON_GENERIC) && !QDELETED(src) && holed_wall && istype(holed_wall)) holed_wall.take_damage(rand(2000,3500)) user.emote("roar") -/obj/effect/acid_hole/proc/use_wall_hole(mob/user) +/obj/effect/acid_hole/proc/use_wall_hole(mob/living/user) - if(user.mob_size >= MOB_SIZE_BIG || user.is_mob_incapacitated() || user.lying || user.buckled || user.anchored) + if(user.mob_size >= MOB_SIZE_BIG || user.is_mob_incapacitated() || user.buckled || user.anchored) return FALSE var/mob_dir = get_dir(user, src) @@ -95,7 +95,7 @@ to_chat(user, SPAN_NOTICE("You start crawling through the hole.")) if(do_after(user, 15, INTERRUPT_NO_NEEDHAND, BUSY_ICON_GENERIC)) - if(!user.is_mob_incapacitated() && !user.lying && !user.buckled) + if(!user.is_mob_incapacitated() && !user.buckled) if (T.density) return for(var/obj/O in T) diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 867c6924b39d..0b44c0bb4443 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -160,7 +160,7 @@ //damages human that comes in contact /obj/effect/xenomorph/spray/proc/apply_spray(mob/living/carbon/H, should_stun = TRUE) - if(!H.lying) + if(H.body_position == STANDING_UP) to_chat(H, SPAN_DANGER("Your feet scald and burn! Argh!")) if(ishuman(H)) H.emote("pain") @@ -264,7 +264,7 @@ else PAS.increment_stack_count(2) - if(!H.lying) + if(H.body_position == STANDING_UP) to_chat(H, SPAN_DANGER("Your feet scald and burn! Argh!")) H.emote("pain") H.last_damage_data = cause_data diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index f9b5ddb42f68..69eababfe000 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -21,7 +21,7 @@ return /obj/effect/spider/attackby(obj/item/W, mob/user) - if(W.attack_verb.len) + if(LAZYLEN(W.attack_verb)) visible_message(SPAN_DANGER("\The [src] have been [pick(W.attack_verb)] with \the [W][(user ? "by [user]." : ".")]")) else visible_message(SPAN_DANGER("\The [src] have been attacked with \the [W][(user ? "by [user]." : ".")]")) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 2499810cbd3f..ab3c248c797f 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -50,7 +50,7 @@ if(ismob(AM)) var/mob/M = AM if(immobilize) - M.canmove = 0 + ADD_TRAIT(M, TRAIT_IMMOBILIZED, STEP_TRIGGER_TRAIT) affecting.Add(AM) while(AM && !stopthrow) @@ -87,7 +87,7 @@ if(ismob(AM)) var/mob/M = AM if(immobilize) - M.canmove = 1 + REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, STEP_TRIGGER_TRAIT) /* Stops things thrown by a thrower, doesn't do anything */ diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f27a35457a7c..11da4cce6d98 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -517,14 +517,14 @@ cases. Override_icon_state should be a list.*/ if(WEAR_L_HAND) if(human.l_hand) return FALSE - if(human.lying) + if(human.body_position == LYING_DOWN) to_chat(human, SPAN_WARNING("You can't equip that while lying down.")) return return TRUE if(WEAR_R_HAND) if(human.r_hand) return FALSE - if(human.lying) + if(human.body_position == LYING_DOWN) to_chat(human, SPAN_WARNING("You can't equip that while lying down.")) return return TRUE @@ -920,9 +920,10 @@ cases. Override_icon_state should be a list.*/ mob_state += GLOB.slot_to_contained_sprite_shorthand[slot] return mob_state -/obj/item/proc/drop_to_floor(mob/wearer) +/obj/item/proc/drop_to_floor(mob/wearer, body_position) SIGNAL_HANDLER - wearer.drop_inv_item_on_ground(src) + if(body_position == LYING_DOWN) + wearer.drop_inv_item_on_ground(src) // item animatzionen diff --git a/code/game/objects/items/circuitboards/computer.dm b/code/game/objects/items/circuitboards/computer.dm index 40c66bc0fa6a..08dcfc6964a6 100644 --- a/code/game/objects/items/circuitboards/computer.dm +++ b/code/game/objects/items/circuitboards/computer.dm @@ -287,14 +287,12 @@ /obj/item/circuitboard/computer/rdconsole/attackby(obj/item/I as obj, mob/user as mob) if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) - user.visible_message(SPAN_NOTICE("\the [user] adjusts the jumper on the [src]'s access protocol pins."), SPAN_NOTICE("You adjust the jumper on the access protocol pins.")) + user.visible_message(SPAN_NOTICE("[user] adjusts the jumper on [src]'s access protocol pins."), SPAN_NOTICE("You adjust the jumper on the access protocol pins.")) if(src.build_path == /obj/structure/machinery/computer/rdconsole/core) src.name = "Circuit Board (RD Console - Robotics)" src.build_path = /obj/structure/machinery/computer/rdconsole/robotics - to_chat(user, SPAN_NOTICE(" Access protocols set to robotics.")) + to_chat(user, SPAN_NOTICE("Access protocols set to robotics.")) else src.name = "Circuit Board (RD Console)" src.build_path = /obj/structure/machinery/computer/rdconsole/core - to_chat(user, SPAN_NOTICE(" Access protocols set to default.")) - - + to_chat(user, SPAN_NOTICE("Access protocols set to default.")) diff --git a/code/game/objects/items/circuitboards/machine.dm b/code/game/objects/items/circuitboards/machine.dm index ad4c31cb11e9..248d0d5c8885 100644 --- a/code/game/objects/items/circuitboards/machine.dm +++ b/code/game/objects/items/circuitboards/machine.dm @@ -141,7 +141,7 @@ to destroy them and players will be able to make replacements. if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) machine_dir = turn(machine_dir, 90) init_dirs = machine_dir - user.visible_message(SPAN_NOTICE("\The [user] adjusts the jumper on the [src]'s port configuration pins."), SPAN_NOTICE("You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].")) + user.visible_message(SPAN_NOTICE("[user] adjusts the jumper on [src]'s port configuration pins."), SPAN_NOTICE("You adjust the jumper on the port configuration pins. Now set to [dir2text(machine_dir)].")) return /obj/item/circuitboard/machine/unary_atmos/get_examine_text(mob/user) @@ -300,5 +300,3 @@ to destroy them and players will be able to make replacements. // Board itself is high tech. Coils have to be ordered from cargo or salvaged from existing SMESs. frame_desc = "Requires 1 superconducting magnetic coil and 30 wires." req_components = list(/obj/item/stock_parts/smes_coil = 1, /obj/item/stack/cable_coil = 30) - - diff --git a/code/game/objects/items/devices/autopsy_scanner.dm b/code/game/objects/items/devices/autopsy_scanner.dm index 67d18924c02b..6703ead88147 100644 --- a/code/game/objects/items/devices/autopsy_scanner.dm +++ b/code/game/objects/items/devices/autopsy_scanner.dm @@ -174,7 +174,7 @@ M.update_inv_r_hand() /obj/item/device/autopsy_scanner/attack(mob/living/carbon/human/M as mob, mob/living/carbon/user as mob) - if(!istype(M) || !M.lying) + if(!istype(M) || !M.is_mob_incapacitated()) return var/table diff --git a/code/game/objects/items/devices/binoculars.dm b/code/game/objects/items/devices/binoculars.dm index f94d62c47de8..a9b7706bcfb7 100644 --- a/code/game/objects/items/devices/binoculars.dm +++ b/code/game/objects/items/devices/binoculars.dm @@ -422,7 +422,7 @@ if(!(GLOB.character_traits[/datum/character_trait/skills/spotter] in human.traits)) to_chat(human, SPAN_WARNING("You have no idea how to use this!")) return FALSE - if(istype(human) && !human.is_mob_incapacitated() && !human.lying && (holder_item == human.r_hand || holder_item || human.l_hand)) + if(istype(human) && !human.is_mob_incapacitated() && (holder_item == human.r_hand || holder_item || human.l_hand)) return TRUE /datum/action/item_action/specialist/spotter_target/proc/use_ability(atom/targeted_atom) diff --git a/code/game/objects/items/devices/cloaking.dm b/code/game/objects/items/devices/cloaking.dm index 05e7786744e2..b0c5ed799977 100644 --- a/code/game/objects/items/devices/cloaking.dm +++ b/code/game/objects/items/devices/cloaking.dm @@ -47,12 +47,12 @@ src.add_fingerprint(user) if(chameleon_on) user.alpha = 25 - to_chat(user, SPAN_NOTICE("You activate the [src].")) + to_chat(user, SPAN_NOTICE("You activate [src].")) spark_system.start() src.icon_state = "shield1" else user.alpha = initial(user.alpha) - to_chat(user, SPAN_NOTICE("You deactivate the [src].")) + to_chat(user, SPAN_NOTICE("You deactivate [src].")) src.icon_state = "shield0" spark_system.start() diff --git a/code/game/objects/items/devices/coins.dm b/code/game/objects/items/devices/coins.dm index 139ea1cbac8c..6c00364642da 100644 --- a/code/game/objects/items/devices/coins.dm +++ b/code/game/objects/items/devices/coins.dm @@ -67,12 +67,6 @@ icon_state = "coin_platinum" black_market_value = 35 -/obj/item/coin/marine/synth - name = "synthetic experimental tool redemption token" - desc = "Insert this into a synthetic experimental tools vendor in order to access a variety of experimental support tools." - icon_state = "coin_synth" - black_market_value = 0 - /obj/item/coin/chitin name = "chitin coin" desc = "Durable alien chitin pressed into a coin. There are much better uses for chitin..." @@ -121,3 +115,33 @@ comment = "heads" user.visible_message(SPAN_NOTICE("[user] has thrown \the [src]. It lands on [comment]! "), \ SPAN_NOTICE("You throw \the [src]. It lands on [comment]! ")) + + +/obj/item/coin/marine + name = "marine equipment token" + desc = "I wonder what it does?" + icon_state = "coin_copper" + black_market_value = 0 + /// What is the token for? + var/token_type = VEND_TOKEN_VOID + +/obj/item/coin/marine/attackby(obj/item/W as obj, mob/user as mob) //To remove attaching a string functionality + return + +/obj/item/coin/marine/engineer + name = "marine engineer support token" + desc = "Insert this into an engineer vendor in order to access a support weapon." + icon_state = "coin_gold" + token_type = VEND_TOKEN_ENGINEER + +/obj/item/coin/marine/specialist + name = "marine specialist weapon token" + desc = "Insert this into a USCM equipment vendor in order to access a single highly dangerous weapon." + icon_state = "coin_diamond" + token_type = VEND_TOKEN_SPEC + +/obj/item/coin/marine/synth + name = "synthetic experimental tool redemption token" + desc = "Insert this into a synthetic experimental tools vendor in order to access a variety of experimental support tools." + icon_state = "coin_synth" + token_type = VEND_TOKEN_SYNTH diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 40ef8792aedb..3f285b358fb2 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -121,7 +121,7 @@ if(target.status != LIGHT_OK) if(CanUse(U)) if(!Use(U)) return - to_chat(U, SPAN_NOTICE("You replace the [target.fitting] with the [src].")) + to_chat(U, SPAN_NOTICE("You replace the [target.fitting] with [src].")) if(target.status != LIGHT_EMPTY) diff --git a/code/game/objects/items/devices/radio/beacon.dm b/code/game/objects/items/devices/radio/beacon.dm index 0b8cbc303c06..bc97cf04fdfb 100644 --- a/code/game/objects/items/devices/radio/beacon.dm +++ b/code/game/objects/items/devices/radio/beacon.dm @@ -27,7 +27,7 @@ set category = "Object" set src in usr - if ((usr.canmove && !( usr.is_mob_restrained() ))) + if (usr.is_mob_incapacitated()) src.code = t if (!( src.code )) src.code = "beacon" diff --git a/code/game/objects/items/devices/radio/listening_bugs.dm b/code/game/objects/items/devices/radio/listening_bugs.dm new file mode 100644 index 000000000000..4a84df071c60 --- /dev/null +++ b/code/game/objects/items/devices/radio/listening_bugs.dm @@ -0,0 +1,276 @@ +#define DISGUISE_REMOVE "remove disguise" +#define DISGUISE_RADIO "radio" +#define DISGUISE_PEN "pen" +#define DISGUISE_FOUNTAIN_PEN "fountain pen" +#define DISGUISE_ACCESS_TUNER "access tuner" +#define DISGUISE_WHISTLE "whistle" +#define DISGUISE_MASS_SPEC "mass-spectrometer" +#define DISGUISE_CAMERA "camera" +#define DISGUISE_ZIPPO "zippo lighter" +#define DISGUISE_TAPE_RECORDER "tape recorder" + +/obj/item/device/radio/listening_bug + name = "listening device" + desc = "A small, and disguisable, listening device." + + icon = 'icons/obj/items/devices.dmi' + icon_state = "voice0" + item_state = "analyzer" + + w_class = SIZE_TINY + volume = RADIO_VOLUME_RAISED + + broadcasting = FALSE + listening = FALSE + frequency = BUG_A_FREQ + canhear_range = 2 + freqlock = TRUE + /// If the bug is disguised or not. + var/ready_to_disguise = FALSE + var/disguised = FALSE + /// Whether or not the bug can be used to listen to its own channel. + var/prevent_snooping = FALSE + /// The ID tag of the device, for identification. + var/nametag = "Device" + +/obj/item/device/radio/listening_bug/ui_data(mob/user) + var/list/data = list() + + data["broadcasting"] = broadcasting + data["listening"] = listening + data["frequency"] = frequency + data["freqlock"] = freqlock + + var/list/radio_channels = list() + + for(var/channel in channels) + var/channel_key = channel_to_prefix(channel) + radio_channels += list(list( + "name" = channel, + "status" = channels[channel] & FREQ_LISTENING, + "hotkey" = channel_key)) + + data["channels"] = radio_channels + + data["command"] = volume + data["useCommand"] = use_volume + data["subspace"] = subspace_transmission + data["subspaceSwitchable"] = subspace_switchable + data["headset"] = FALSE + + return data + +/obj/item/device/radio/listening_bug/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) + switch(action) + if("listen") + if(prevent_snooping) + to_chat(usr, SPAN_WARNING("This device cannot receive transmissions!")) + return + listening = !listening + return + if("subspace") + if(!ishuman(usr)) + return + var/mob/living/carbon/human/user = usr + if(!check_access(user.wear_id) && !check_access(user.get_active_hand())) + to_chat(user, SPAN_WARNING("You need an authenticated ID card to change this function!")) + return + if(subspace_switchable) + subspace_transmission = !subspace_transmission + var/initial_prevent = initial(prevent_snooping) + if(initial_prevent) + prevent_snooping = TRUE + if(!subspace_transmission) + prevent_snooping = FALSE + channels = list() + return + ..() + +/obj/item/device/radio/listening_bug/hear_talk(mob/M as mob, msg, verb = "says", datum/language/speaking = null) + var/processed_verb = "[SPAN_RED("\[LSTN [nametag]\]")] [verb]" + if(broadcasting) + if(get_dist(src, M) <= 7) + talk_into(M, msg,null,processed_verb,speaking) + +/obj/item/device/radio/listening_bug/afterattack(atom/target_atom, mob/user as mob, proximity) + if(!ready_to_disguise) + return ..() + + var/obj/item/target_item = target_atom + if(!istype(target_item) || target_item.anchored || target_item.w_class >= SIZE_LARGE) + to_chat(user, SPAN_WARNING("You cannot disguise the listening device as this object.")) + return FALSE + + var/confirm = tgui_alert(user, "Are you sure you wish to disguise the listening device as '[target_item]'?", "Confirm Choice", list("Yes","No"), 20 SECONDS) + if(confirm != "Yes") + return FALSE + + icon = target_item.icon + name = target_item.name + desc = target_item.desc + icon_state = target_item.icon_state + item_state = target_item.item_state + flags_equip_slot = target_item.flags_equip_slot + w_class = target_item.w_class + ready_to_disguise = FALSE + disguised = TRUE + +/obj/item/device/radio/listening_bug/get_examine_text(mob/user) + if(disguised) + . = list() + var/size + switch(w_class) + if(SIZE_TINY) + size = "tiny" + if(SIZE_SMALL) + size = "small" + if(SIZE_MEDIUM) + size = "normal-sized" + . += "This is a [blood_color ? blood_color != "#030303" ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." + if(desc) + . += desc + if(desc_lore) + . += SPAN_NOTICE("This has an extended lore description.") + else + . = ..() + . += SPAN_INFO("[src] is set to frequency [get_bug_letter()].") + if(nametag != initial(nametag)) + . += SPAN_INFO("[src]'s nametag is set to '[nametag]'") + +/obj/item/device/radio/listening_bug/verb/change_disguise() + set name = "Change Disguise" + set category = "Object" + set src in usr + + if(usr.is_mob_incapacitated()) + to_chat(usr, SPAN_WARNING("You cannot do this while incapacitated!")) + return FALSE + + var/check = tgui_alert(usr, "Do you wish to change the disguise of this listening bug?", "Change Disguise?", list("Yes", "No")) + if(check != "Yes") + return FALSE + if(disguised) + var/remove_check = tgui_alert(usr, "Do you wish to remove the current disguise?", "Remove Disguise?", list("Yes","No")) + if(remove_check == "Yes") + icon = initial(icon) + name = initial(name) + desc = initial(desc) + icon_state = initial(icon_state) + item_state = initial(item_state) + flags_equip_slot = initial(flags_equip_slot) + w_class = initial(w_class) + disguised = FALSE + return TRUE + + to_chat(usr, SPAN_HELPFUL("You can now change the disguise of the device by selecting a normal, or smaller, sized object.")) + ready_to_disguise = TRUE + return TRUE + +/obj/item/device/radio/listening_bug/proc/get_bug_letter() + switch(frequency) + if(BUG_A_FREQ) + return "A" + if(BUG_B_FREQ) + return "B" + if(SEC_FREQ) + return "MP" + if(PVST_FREQ) + return "PVST" + if(HC_FREQ) + return "HC" + if(WY_FREQ, PMC_CCT_FREQ) + return "WY" + if(PMC_CMD_FREQ) + return "WYC" + if(UPP_CCT_FREQ, UPP_KDO_FREQ) + return "UPP" + else + return "X" + +#define OPTION_REMOVE "Remove Tag" +#define OPTION_NEW "New Tag" + +/obj/item/device/radio/listening_bug/verb/set_nametag() + set name = "Set Nametag" + set category = "Object" + set src in usr + + if(usr.is_mob_incapacitated()) + to_chat(usr, SPAN_WARNING("You cannot do this while incapacitated!")) + return FALSE + + var/check = tgui_alert(usr, "Do you wish to change the name tag of this listening bug?", "Change Name tag?", list("Yes", "No")) + if(check != "Yes") + return FALSE + + + var/new_nametag + var/remove + if(nametag != initial(nametag)) + remove = tgui_alert(usr, "Do you wish to remove the current nametag?", "Remove Nametag", list("Yes", "No")) + if(remove == "Yes") + new_nametag = initial(nametag) + else + new_nametag = tgui_input_text(usr, "What new name tag do you wish to use?", "New Name", initial(nametag), 6) + + if(!new_nametag || (new_nametag == nametag)) + return FALSE + + nametag = new_nametag + log_game("[key_name(usr)] set a listening device nametag to [new_nametag].") + return TRUE + +#undef OPTION_REMOVE +#undef OPTION_NEW + +/obj/item/device/radio/listening_bug/freq_a + frequency = BUG_A_FREQ + +/obj/item/device/radio/listening_bug/freq_b + frequency = BUG_B_FREQ + +/obj/item/device/radio/listening_bug/radio_linked + prevent_snooping = TRUE + subspace_transmission = TRUE + subspace_switchable = TRUE + +/obj/item/device/radio/listening_bug/radio_linked/mp + frequency = SEC_FREQ + req_one_access = list(ACCESS_MARINE_BRIG) + +/obj/item/device/radio/listening_bug/radio_linked/hc + frequency = HC_FREQ + req_one_access = list(ACCESS_MARINE_CO) +/obj/item/device/radio/listening_bug/radio_linked/hc/pvst + frequency = PVST_FREQ + +/obj/item/device/radio/listening_bug/radio_linked/wy + frequency = WY_FREQ + req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_SECURITY) + +/obj/item/device/radio/listening_bug/radio_linked/wy/pmc + frequency = PMC_CCT_FREQ + req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_SECURITY) + +/obj/item/device/radio/listening_bug/radio_linked/upp + frequency = UPP_CCT_FREQ + req_one_access = list(ACCESS_UPP_COMMANDO, ACCESS_UPP_SECURITY) + +/obj/item/device/radio/listening_bug/radio_linked/upp/commando + frequency = UPP_KDO_FREQ + req_one_access = list(ACCESS_UPP_COMMANDO) + + +// ENCRYPTION KEYS FOR LISTENING IN! +//REQURIES SUBSPACE ACTIVATION ON THE BUGS FIRST! +/obj/item/device/encryptionkey/listening_bug + desc = "A small encryption key for listening to a secret broadcasting device! Unlikely to work if the device is not using subspace communications!" + icon_state = "stripped_key" + +/obj/item/device/encryptionkey/listening_bug/freq_a + name = "Listening Bug Encryption Key (A)" + channels = list(RADIO_CHANNEL_BUG_A = TRUE) + +/obj/item/device/encryptionkey/listening_bug/freq_b + name = "Listening Bug Encryption Key (B)" + channels = list(RADIO_CHANNEL_BUG_B = TRUE) diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm index d388e06b9fa7..e0f65a4b31ec 100644 --- a/code/game/objects/items/devices/suit_cooling.dm +++ b/code/game/objects/items/devices/suit_cooling.dm @@ -110,7 +110,7 @@ cell.add_fingerprint(user) cell.update_icon() - to_chat(user, "You remove the [src.cell].") + to_chat(user, "You remove [cell].") src.cell = null updateicon() return @@ -121,7 +121,7 @@ else turn_on() if (on) - to_chat(user, "You switch on the [src].") + to_chat(user, "You switch on [src].") /obj/item/device/suit_cooling_unit/attackby(obj/item/W as obj, mob/user as mob) if (HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) @@ -137,12 +137,12 @@ if (istype(W, /obj/item/cell)) if(cover_open) if(cell) - to_chat(user, "There is a [cell] already installed here.") + to_chat(user, "There is \a [cell] already installed here.") else if(user.drop_held_item()) W.forceMove(src) cell = W - to_chat(user, "You insert the [cell].") + to_chat(user, "You insert [cell].") updateicon() return @@ -169,7 +169,7 @@ if (cover_open) if(cell) - . += "The panel is open, exposing the [cell]." + . += "The panel is open, exposing [cell]." else . += "The panel is open." diff --git a/code/game/objects/items/devices/teleportation.dm b/code/game/objects/items/devices/teleportation.dm index c65286969786..793f399ecdf0 100644 --- a/code/game/objects/items/devices/teleportation.dm +++ b/code/game/objects/items/devices/teleportation.dm @@ -49,7 +49,7 @@ return var/turf/current_location = get_turf(usr)//What turf is the user on? if(!current_location || is_admin_level(current_location.z))//If turf was not found or they're on z level 2. - to_chat(usr, "The [src] is malfunctioning.") + to_chat(usr, "[src] is malfunctioning.") return if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) usr.set_interaction(src) @@ -177,4 +177,3 @@ P.creator = src src.add_fingerprint(user) return - diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index b3d433727946..6fc526936809 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -47,7 +47,7 @@ user.temp_drop_inv_item(A) attached_device = A A.forceMove(src) - to_chat(user, SPAN_NOTICE("You attach the [item] to the valve controls and secure it.")) + to_chat(user, SPAN_NOTICE("You attach [item] to the valve controls and secure it.")) A.holder = src A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). diff --git a/code/game/objects/items/explosives/explosive.dm b/code/game/objects/items/explosives/explosive.dm index 0c482e8db9e7..4483372c9b85 100644 --- a/code/game/objects/items/explosives/explosive.dm +++ b/code/game/objects/items/explosives/explosive.dm @@ -262,8 +262,8 @@ if(falloff_mode == EXPLOSION_FALLOFF_SHAPE_LINEAR) falloff_mode = EXPLOSION_FALLOFF_SHAPE_EXPONENTIAL - to_chat(usr, SPAN_NOTICE("You enable the [src]'s blast wave dampener, limiting the blast radius.")) + to_chat(usr, SPAN_NOTICE("You enable [src]'s blast wave dampener, limiting the blast radius.")) else falloff_mode = EXPLOSION_FALLOFF_SHAPE_LINEAR - to_chat(usr, SPAN_NOTICE("You disable the [src]'s blast wave dampener, restoring the blast radius to full.")) + to_chat(usr, SPAN_NOTICE("You disable [src]'s blast wave dampener, restoring the blast radius to full.")) playsound(loc, 'sound/items/Screwdriver2.ogg', 25, 0, 6) diff --git a/code/game/objects/items/explosives/grenades/chem_grenade.dm b/code/game/objects/items/explosives/grenades/chem_grenade.dm index e975603d45d8..48430aacecc9 100644 --- a/code/game/objects/items/explosives/grenades/chem_grenade.dm +++ b/code/game/objects/items/explosives/grenades/chem_grenade.dm @@ -1,5 +1,5 @@ /obj/item/explosive/grenade/custom - name = "Custom grenade" + name = "custom grenade" icon_state = "grenade_custom" desc = "A custom chemical grenade with an M40 casing. This one is made to fit into underslung grenade launchers, but can also be thrown by hand." w_class = SIZE_SMALL @@ -17,7 +17,7 @@ ..() /obj/item/explosive/grenade/custom/large - name = "Large Custom Grenade" + name = "large custom grenade" desc = "A custom chemical grenade with an M15 casing. This casing has a higher explosive capacity than the M40 variant." icon_state = "large_grenade_custom" allowed_containers = list(/obj/item/reagent_container/glass) @@ -33,7 +33,7 @@ /obj/item/explosive/grenade/custom/metal_foam - name = "Metal-Foam Grenade" + name = "metal-foam grenade" desc = "Used for emergency sealing of air breaches." assembly_stage = ASSEMBLY_LOCKED harmful = FALSE @@ -56,7 +56,7 @@ update_icon() /obj/item/explosive/grenade/custom/incendiary - name = "Incendiary Grenade" + name = "incendiary grenade" desc = "Used for clearing rooms of living things." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE @@ -79,7 +79,7 @@ update_icon() /obj/item/explosive/grenade/custom/flare - name = "M40-F flare grenade" + name = "\improper M40-F flare grenade" desc = "Chemical flare in a grenade form, designed for compatibility with most standard issue launchers." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE @@ -103,7 +103,7 @@ update_icon() /obj/item/explosive/grenade/custom/large/flare - name = "M15-F flare grenade" + name = "\improper M15-F flare grenade" desc = "Chemical flare in a grenade form, expanded variant. The casing is too large to fit most launchers." assembly_stage = ASSEMBLY_LOCKED has_blast_wave_dampener = FALSE diff --git a/code/game/objects/items/explosives/grenades/flashbang.dm b/code/game/objects/items/explosives/grenades/flashbang.dm index 365dfe26df89..50cb34668ae3 100644 --- a/code/game/objects/items/explosives/grenades/flashbang.dm +++ b/code/game/objects/items/explosives/grenades/flashbang.dm @@ -256,6 +256,7 @@ //decide how banged mob is var/bang_effect = 0 + var/lying = H.body_position == LYING_DOWN //flashbang effect depends on eye protection only, so we will process this case first //A bit dumb, but headsets don't have ear protection and even earmuffs are a fluff now @@ -264,7 +265,7 @@ if((get_dist(H, T) <= 1 || src.loc == H.loc || src.loc == H)) H.apply_damage(5, BRUTE) H.apply_damage(5, BURN) - if(H.lying) + if(lying) bang_effect = 1 else bang_effect = 2 @@ -277,13 +278,13 @@ H.apply_damage(5, BRUTE) H.apply_damage(5, BURN) - if(H.lying) + if(lying) bang_effect = 4 else bang_effect = 5 else if(get_dist(H, T) <= 5) - if(H.lying) + if(lying) bang_effect = 3 else bang_effect = 4 diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index 45478f2828f4..768a32c003fa 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -309,7 +309,7 @@ map_deployed = TRUE /obj/item/explosive/mine/custom - name = "Custom mine" + name = "custom mine" desc = "A custom chemical mine built from an M20 casing." icon_state = "m20_custom" customizable = TRUE diff --git a/code/game/objects/items/explosives/plastic.dm b/code/game/objects/items/explosives/plastic.dm index ac0a2263cd5c..071ff3458a91 100644 --- a/code/game/objects/items/explosives/plastic.dm +++ b/code/game/objects/items/explosives/plastic.dm @@ -184,7 +184,7 @@ //vehicle interior stuff checks if(SSinterior.in_interior(target)) - to_chat(user, SPAN_WARNING("It's too cramped in here to deploy \the [src].")) + to_chat(user, SPAN_WARNING("It's too cramped in here to deploy [src].")) return FALSE if(istype(target, /obj/effect) || istype(target, /obj/structure/machinery)) @@ -195,7 +195,7 @@ if(istype(target, /turf/closed/wall)) var/turf/closed/wall/W = target if(W.hull) - to_chat(user, SPAN_WARNING("You are unable to stick \the [src] to the [W]!")) + to_chat(user, SPAN_WARNING("You are unable to stick [src] to [W]!")) return FALSE if(istype(target, /obj/structure/window)) @@ -301,7 +301,7 @@ prime(TRUE) /obj/item/explosive/plastic/custom - name = "Custom plastic explosive" + name = "custom plastic explosive" desc = "A custom plastic explosive." icon_state = "custom_plastic_explosive" overlay_image = "custom_plastic_explosive_sensing" diff --git a/code/game/objects/items/frames/camera.dm b/code/game/objects/items/frames/camera.dm index 59bc2844868e..efe697c3944b 100644 --- a/code/game/objects/items/frames/camera.dm +++ b/code/game/objects/items/frames/camera.dm @@ -167,7 +167,7 @@ to_chat(user, SPAN_WARNING("\The [WT] needs to be on!")) return 0 - to_chat(user, SPAN_NOTICE("You start to weld the [src]..")) + to_chat(user, SPAN_NOTICE("You start to weld [src]..")) playsound(src.loc, 'sound/items/Welder.ogg', 25, 1) WT.eyecheck(user) if(do_after(user, 20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) diff --git a/code/game/objects/items/hoverpack.dm b/code/game/objects/items/hoverpack.dm index c2bfacd3c3ad..027b9d77f581 100644 --- a/code/game/objects/items/hoverpack.dm +++ b/code/game/objects/items/hoverpack.dm @@ -184,7 +184,7 @@ warning.forceMove(path[max_distance]) /obj/item/hoverpack/proc/can_use_hoverpack(mob/living/carbon/human/user) - if(user.is_mob_incapacitated() || user.lying) + if(user.is_mob_incapacitated()) to_chat(user, SPAN_WARNING("You're a bit too incapacitated for that.")) return FALSE @@ -204,7 +204,7 @@ /datum/action/item_action/hover/can_use_action() var/mob/living/carbon/human/H = owner - if(!H.is_mob_incapacitated() && !H.lying && holder_item == H.back) + if(!H.is_mob_incapacitated() && holder_item == H.back) return TRUE /datum/action/item_action/hover/action_activate() diff --git a/code/game/objects/items/implants/implantneurostim.dm b/code/game/objects/items/implants/implantneurostim.dm index 544cf70147e2..21ee2542649b 100644 --- a/code/game/objects/items/implants/implantneurostim.dm +++ b/code/game/objects/items/implants/implantneurostim.dm @@ -63,7 +63,7 @@ var/mob_pain_msg = "Excruciating pain shoots through [part ? "your [part.display_name]" : "you"]!" M.visible_message(SPAN_DANGER("[M] convulses in pain!"), SPAN_DANGER(mob_pain_msg)) M.flash_eyes(1, TRUE) - M.stunned += 10 + M.apply_effect(10, STUN) M.apply_effect(10, WEAKEN) M.apply_damage(100, HALLOSS, part) M.apply_damage(5, BURN, part, 0, 0, src) diff --git a/code/game/objects/items/lightstick.dm b/code/game/objects/items/lightstick.dm index 70418049994b..89ce2c00762e 100644 --- a/code/game/objects/items/lightstick.dm +++ b/code/game/objects/items/lightstick.dm @@ -22,7 +22,7 @@ /obj/item/lightstick/Crossed(mob/living/O) if(anchored && prob(trample_chance) && can_trample) if(!istype(O,/mob/living/carbon/xenomorph/larva)) - visible_message(SPAN_DANGER("[O] tramples the [src]!")) + visible_message(SPAN_DANGER("[O] tramples [src]!")) playsound(src, 'sound/weapons/Genhit.ogg', 25, 1) if(istype(O,/mob/living/carbon/xenomorph)) if(prob(40)) @@ -46,17 +46,17 @@ if(!anchored)//If planted return - to_chat(user, "You start pulling out \the [src].") - if(!do_after(user,20, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + to_chat(user, "You start pulling out [src].") + if(!do_after(user, 2 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) return anchored = FALSE - user.visible_message("[user.name] removes \the [src] from the ground.","You remove the [src] from the ground.") + user.visible_message("[user.name] removes [src] from the ground.", "You remove [src] from the ground.") icon_state = "lightstick_[s_color][anchored]" set_light(0) pixel_x = 0 pixel_y = 0 - playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) + playsound(user, 'sound/weapons/Genhit.ogg', 25, TRUE) //Red /obj/item/lightstick/planted diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm index 50c5cd75551b..1699cb24ef39 100644 --- a/code/game/objects/items/misc.dm +++ b/code/game/objects/items/misc.dm @@ -134,7 +134,7 @@ return stored_item = object mobber.drop_inv_item_to_loc(object, src) - to_chat(mobber, SPAN_NOTICE("You slide the [object] into [src].")) + to_chat(mobber, SPAN_NOTICE("You slide [object] into [src].")) playsound(mobber, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) update_icon() break diff --git a/code/game/objects/items/props/helmetgarb.dm b/code/game/objects/items/props/helmetgarb.dm index 7860236d5d51..d8e65f1a3cd3 100644 --- a/code/game/objects/items/props/helmetgarb.dm +++ b/code/game/objects/items/props/helmetgarb.dm @@ -204,7 +204,7 @@ to_chat(user, SPAN_WARNING("Nothing to fix.")) else if(shape == NVG_SHAPE_COSMETIC) - to_chat(user, SPAN_WARNING("it's nothing but a husk of what it used to be.")) + to_chat(user, SPAN_WARNING("It's nothing but a husk of what it used to be.")) else to_chat(user, "You begin to repair \the [src].") @@ -496,6 +496,30 @@ desc = "The USCM had its funding pulled for these when it became apparent that not every deployed enlisted was wearing a helmet 24/7; much to the bafflement of UA High Command." icon_state = "helmet_gasmask" +/obj/item/prop/helmetgarb/helmet_gasmask/on_enter_storage(obj/item/storage/internal/helmet_internal_inventory) + ..() + if(!istype(helmet_internal_inventory)) + return + var/obj/item/clothing/head/helmet/helmet_item = helmet_internal_inventory.master_object + + if(!istype(helmet_item)) + return + + helmet_item.flags_inventory |= BLOCKGASEFFECT + helmet_item.flags_inv_hide |= HIDEFACE + +/obj/item/prop/helmetgarb/helmet_gasmask/on_exit_storage(obj/item/storage/internal/helmet_internal_inventory) + ..() + if(!istype(helmet_internal_inventory)) + return + var/obj/item/clothing/head/helmet/helmet_item = helmet_internal_inventory.master_object + + if(!istype(helmet_item)) + return + + helmet_item.flags_inventory &= ~(BLOCKGASEFFECT) + helmet_item.flags_inv_hide &= ~(HIDEFACE) + /obj/item/prop/helmetgarb/trimmed_wire name = "trimmed barbed wire" desc = "It is a length of barbed wire that's had most of the sharp points filed down so that it is safe to handle." diff --git a/code/game/objects/items/reagent_containers/blood_pack.dm b/code/game/objects/items/reagent_containers/blood_pack.dm index 0879dcffdc68..92c68e81c9d2 100644 --- a/code/game/objects/items/reagent_containers/blood_pack.dm +++ b/code/game/objects/items/reagent_containers/blood_pack.dm @@ -163,7 +163,7 @@ if(!istype(usr, /mob/living)) return - if(usr.stat || usr.lying) + if(usr.stat || usr.is_mob_incapacitated()) return mode = !mode diff --git a/code/game/objects/items/reagent_containers/food/condiment.dm b/code/game/objects/items/reagent_containers/food/condiment.dm index a13489f0af1e..35944e4422c4 100644 --- a/code/game/objects/items/reagent_containers/food/condiment.dm +++ b/code/game/objects/items/reagent_containers/food/condiment.dm @@ -23,7 +23,7 @@ return FALSE if(M == user) - to_chat(M, SPAN_NOTICE(" You swallow some of contents of the [src].")) + to_chat(M, SPAN_NOTICE("You swallow some of contents of [src].")) else if(istype(M, /mob/living/carbon/human)) user.affected_message(M, @@ -80,7 +80,7 @@ to_chat(user, SPAN_DANGER("[src] is empty.")) return if(target.reagents.total_volume >= target.reagents.maximum_volume) - to_chat(user, SPAN_DANGER("you can't add anymore to [target].")) + to_chat(user, SPAN_DANGER("You can't add any more to [target].")) return var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this) to_chat(user, SPAN_NOTICE(" You transfer [trans] units of the condiment to [target].")) @@ -202,7 +202,7 @@ /obj/item/reagent_container/food/condiment/hotsauce/franks name = "\improper Frank's Red Hot bottle" desc = "A bottle of Weyland-Yutani brand Frank's Red Hot hot sauce." - desc_lore = "Supposedly designed as a middle-ground flavor between ketchup and cayenne, this brand of spicy goodness achieved critical acclaim throughout UA space within both colonies and vessels alike. The sudden and widespread adoption was curiously timed with the near-simultaneous shelving of the original Frank's 'ULTRA' hot sauce." + desc_lore = "Supposedly designed as a middle-ground flavor between ketchup and cayenne, this brand of spicy goodness achieved critical acclaim throughout UA space within both colonies and vessels alike. The sudden and widespread adoption was curiously timed with the near-simultaneous shelving of the original Frank's 'ULTRA' hot sauce." icon_state = "hotsauce_franks" item_state = "hotsauce_franks" diff --git a/code/game/objects/items/reagent_containers/food/fortunecookie.dm b/code/game/objects/items/reagent_containers/food/fortunecookie.dm index 270bd4d7c44a..6077541acd84 100644 --- a/code/game/objects/items/reagent_containers/food/fortunecookie.dm +++ b/code/game/objects/items/reagent_containers/food/fortunecookie.dm @@ -75,7 +75,7 @@ to_chat(user,SPAN_WARNING("[src] is cracked open! How are you gonna slip something in that?")) else if(!cookiefortune) - to_chat(user, SPAN_NOTICE("You slip the paper into the [src].")) + to_chat(user, SPAN_NOTICE("You slip the paper into [src].")) cookiefortune = W user.drop_inv_item_to_loc(W, src) else diff --git a/code/game/objects/items/reagent_containers/food/sandwich.dm b/code/game/objects/items/reagent_containers/food/sandwich.dm index 1b7d61eaddad..511c0c042be1 100644 --- a/code/game/objects/items/reagent_containers/food/sandwich.dm +++ b/code/game/objects/items/reagent_containers/food/sandwich.dm @@ -18,7 +18,7 @@ /obj/item/reagent_container/food/snacks/csandwich/attackby(obj/item/W as obj, mob/user as mob) if(istype(W, /obj/item/reagent_container/food/snacks/csandwich)) //No sandwitch inception, it causes some bugs... - to_chat(user, SPAN_NOTICE(" You can't put a [W] in the [src].")) + to_chat(user, SPAN_NOTICE("You can't put \a [W] in [src].")) return var/sandwich_limit = 4 diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm index 2892eb1113e7..eb33ca6b1d0f 100644 --- a/code/game/objects/items/reagent_containers/food/snacks.dm +++ b/code/game/objects/items/reagent_containers/food/snacks.dm @@ -217,10 +217,10 @@ if(isanimal(M)) if(iscorgi(M)) if(bitecount == 0 || prob(50)) - M.emote("nibbles away at the [src]") + M.emote("nibbles away at [src]") bitecount++ if(bitecount >= 5) - var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where the [src] was") + var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where [src] was") if(sattisfaction_text) M.emote("[sattisfaction_text]") qdel(src) @@ -2801,7 +2801,7 @@ if( open && pizza ) user.put_in_hands( pizza ) - to_chat(user, SPAN_DANGER("You take the [src.pizza] out of the [src].")) + to_chat(user, SPAN_DANGER("You take the [src.pizza] out of [src].")) src.pizza = null update_icon() return @@ -2852,11 +2852,11 @@ box.update_icon() update_icon() - to_chat(user, SPAN_DANGER("You put the [box] ontop of the [src]!")) + to_chat(user, SPAN_DANGER("You put [box] ontop of [src]!")) else to_chat(user, SPAN_DANGER("The stack is too high!")) else - to_chat(user, SPAN_DANGER("Close the [box] first!")) + to_chat(user, SPAN_DANGER("Close [box] first!")) return @@ -2868,9 +2868,9 @@ update_icon() - to_chat(user, SPAN_DANGER("You put the [I] in the [src]!")) + to_chat(user, SPAN_DANGER("You put [I] in [src]!")) else - to_chat(user, SPAN_DANGER("You try to push the [I] through the lid but it doesn't work!")) + to_chat(user, SPAN_DANGER("You try to push [I] through the lid but it doesn't work!")) return if( istype(I, /obj/item/tool/pen/) ) diff --git a/code/game/objects/items/reagent_containers/glass.dm b/code/game/objects/items/reagent_containers/glass.dm index e2a9ba537b0d..2a7bde748fba 100644 --- a/code/game/objects/items/reagent_containers/glass.dm +++ b/code/game/objects/items/reagent_containers/glass.dm @@ -237,7 +237,7 @@ overlays += lid /obj/item/reagent_container/glass/minitank - name = "MS-11 Smart Refill Tank" + name = "\improper MS-11 Smart Refill Tank" desc = "A robust little tank capable of refilling autoinjectors that previously required a nanomed system to refill. Using the wonders of microchips, it automatically sorts the correct chemicals into most single reagent autoinjectors. It is unable to partially fill them however. A valve exists on the top to transfer reagents to another container or to flush it entirely." icon = 'icons/obj/items/tank.dmi' icon_state = "mini_reagent_tank" @@ -277,7 +277,7 @@ if(istype(W, /obj/item/reagent_container/hypospray/autoinjector)) var/obj/item/reagent_container/hypospray/autoinjector/A = W if(A.mixed_chem) - to_chat(user, SPAN_WARNING("The autoinjector doesn't fit into the [src]'s valve. It's probably not compatible.")) + to_chat(user, SPAN_WARNING("The autoinjector doesn't fit into [src]'s valve. It's probably not compatible.")) return if(reagents.has_reagent(A.chemname, A.volume)) reagents.trans_id_to(A, A.chemname, A.volume) @@ -285,10 +285,10 @@ A.update_icon() playsound(src.loc, 'sound/effects/refill.ogg', 25, 1, 3) else - to_chat(user, SPAN_WARNING("A small LED on \the [src] blinks. The tank can't refill \the [A] - it's either incompatible or out of chemicals to fill it with!")) + to_chat(user, SPAN_WARNING("A small LED on [src] blinks. The tank can't refill [A] - it's either incompatible or out of chemicals to fill it with!")) . = ..() return - to_chat(user,SPAN_INFO("You successfully refill \the [W.name] with \the [src]!")) + to_chat(user, SPAN_INFO("You successfully refill [A] with [src]!")) /obj/item/reagent_container/glass/minitank/verb/flush_tank(mob/user) set category = "Object" @@ -299,7 +299,7 @@ to_chat(user, SPAN_WARNING("It's already empty!")) return playsound(src.loc, 'sound/effects/slosh.ogg', 25, 1, 3) - to_chat(user, SPAN_WARNING("You work the flush valve and successfully flush \the [src]'s contents!")) + to_chat(user, SPAN_WARNING("You work the flush valve and successfully flush [src]'s contents!")) reagents.clear_reagents() update_icon() // just to be sure return @@ -672,5 +672,5 @@ if(istype(AM) && (src in user)) user.visible_message("[user] starts to wipe down [AM] with [src]!") if(do_after(user,30, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - user.visible_message("[user] finishes wiping off the [AM]!") + user.visible_message("[user] finishes wiping off [AM]!") AM.clean_blood() diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 34debd7c60cf..de2daa9a3009 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -12,7 +12,7 @@ /obj/item/robot/upgrade/proc/action(mob/living/silicon/robot/R) if(R.stat == DEAD) - to_chat(usr, SPAN_DANGER("The [src] will not function on a deceased robot.")) + to_chat(usr, SPAN_DANGER("[src] will not function on a deceased robot.")) return 1 return 0 diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 2f4dd0f532ca..a0814290ca40 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -223,11 +223,13 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ null, \ new/datum/stack_recipe_list("empty ammo boxes",list( \ new/datum/stack_recipe("empty magazine box (88 Mod 4 AP)", /obj/item/ammo_box/magazine/mod88/empty), \ + new/datum/stack_recipe("empty magazine box (SU-6)", /obj/item/ammo_box/magazine/su6/empty), \ + new/datum/stack_recipe("empty magazine box (VP78)", /obj/item/ammo_box/magazine/vp78/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (M4A3)", /obj/item/ammo_box/magazine/m4a3/empty), \ new/datum/stack_recipe("empty magazine box (M4A3 AP)", /obj/item/ammo_box/magazine/m4a3/ap/empty), \ new/datum/stack_recipe("empty magazine box (M4A3 HP)", /obj/item/ammo_box/magazine/m4a3/hp/empty), \ - new/datum/stack_recipe("empty magazine box (SU-6)", /obj/item/ammo_box/magazine/su6/empty), \ - new/datum/stack_recipe("empty magazine box (VP78)", /obj/item/ammo_box/magazine/vp78/empty), \ + new/datum/stack_recipe("empty magazine box (M4A3 Incen)", /obj/item/ammo_box/magazine/m4a3/incen/empty), \ null, \ new/datum/stack_recipe("empty speed loader box (M44)", /obj/item/ammo_box/magazine/m44/empty), \ new/datum/stack_recipe("empty speed loader box (M44 Heavy)", /obj/item/ammo_box/magazine/m44/heavy/empty), \ @@ -256,10 +258,27 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("empty magazine box (M41A Incen)", /obj/item/ammo_box/magazine/incen/empty), \ new/datum/stack_recipe("empty magazine box (M41A LE)", /obj/item/ammo_box/magazine/le/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (M41A MK1)", /obj/item/ammo_box/magazine/mk1/empty), \ + new/datum/stack_recipe("empty magazine box (M41A MK1 AP)", /obj/item/ammo_box/magazine/mk1/ap/empty), \ + null, \ + new/datum/stack_recipe("empty drum box (M56B)", /obj/item/ammo_box/magazine/m56b/empty), \ + new/datum/stack_recipe("empty drum box (M56B Irradiated)", /obj/item/ammo_box/magazine/m56b/dirty/empty), \ + new/datum/stack_recipe("empty drum box (M56D)", /obj/item/ammo_box/magazine/m56d/empty), \ + null, \ + new/datum/stack_recipe("empty drum box (M2C)", /obj/item/ammo_box/magazine/m2c/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (M41AE2)", /obj/item/ammo_box/magazine/m41ae2/empty), \ + new/datum/stack_recipe("empty magazine box (M41AE2 Holo-Target)", /obj/item/ammo_box/magazine/m41ae2/holo/empty), \ + new/datum/stack_recipe("empty magazine box (M41AE2 HEAP)", /obj/item/ammo_box/magazine/m41ae2/heap/empty), \ + null, \ + new/datum/stack_recipe("empty flamer tank box (UT-Napthal)", /obj/item/ammo_box/magazine/flamer/empty), \ + new/datum/stack_recipe("empty flamer tank box (Napalm B-Gel)", /obj/item/ammo_box/magazine/flamer/bgel/empty), \ + null, \ new/datum/stack_recipe("empty shotgun shell box (Beanbag)", /obj/item/ammo_box/magazine/shotgun/beanbag/empty), \ new/datum/stack_recipe("empty shotgun shell box (Buckshot)", /obj/item/ammo_box/magazine/shotgun/buckshot/empty), \ new/datum/stack_recipe("empty shotgun shell box (Flechette)", /obj/item/ammo_box/magazine/shotgun/flechette/empty), \ new/datum/stack_recipe("empty shotgun shell box (Incendiary)", /obj/item/ammo_box/magazine/shotgun/incendiary/empty), \ + new/datum/stack_recipe("empty shotgun shell box (Incendiary Buckshot)", /obj/item/ammo_box/magazine/shotgun/incendiarybuck/empty), \ new/datum/stack_recipe("empty shotgun shell box (Slugs)", /obj/item/ammo_box/magazine/shotgun/empty), \ null, \ new/datum/stack_recipe("empty 45-70 bullets box", /obj/item/ammo_box/magazine/lever_action/empty), \ @@ -279,17 +298,42 @@ GLOBAL_LIST_INIT_TYPED(cardboard_recipes, /datum/stack_recipe, list ( \ new/datum/stack_recipe("empty rifle ammo box (10x24mm Incen)", /obj/item/ammo_box/rounds/incen/empty), \ new/datum/stack_recipe("empty rifle ammo box (10x24mm LE)", /obj/item/ammo_box/rounds/le/empty), \ null, \ + new/datum/stack_recipe("empty rifle ammo box (9mm)", /obj/item/ammo_box/rounds/pistol/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm AP)", /obj/item/ammo_box/rounds/pistol/ap/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm HP)", /obj/item/ammo_box/rounds/pistol/hp/empty), \ + new/datum/stack_recipe("empty rifle ammo box (9mm Incen)", /obj/item/ammo_box/rounds/pistol/incen/empty), \ + null, \ new/datum/stack_recipe("empty box of MREs", /obj/item/ammo_box/magazine/misc/mre/empty), \ new/datum/stack_recipe("empty box of M94 Marking Flare Packs", /obj/item/ammo_box/magazine/misc/flares/empty), \ + new/datum/stack_recipe("empty box of M89 Signal Flare Packs", /obj/item/ammo_box/magazine/misc/flares/signal/empty), \ new/datum/stack_recipe("empty box of flashlights", /obj/item/ammo_box/magazine/misc/flashlight/empty), \ new/datum/stack_recipe("empty box of High-Capacity Power Cells", /obj/item/ammo_box/magazine/misc/power_cell/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (Desert Eagle)", /obj/item/ammo_box/magazine/deagle/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle Heavy)", /obj/item/ammo_box/magazine/deagle/super/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle High-Impact)", /obj/item/ammo_box/magazine/deagle/super/highimpact/empty), \ + new/datum/stack_recipe("empty magazine box (Desert Eagle AP)", /obj/item/ammo_box/magazine/deagle/super/highimpact/ap/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (Spearhead HP)", /obj/item/ammo_box/magazine/spearhead/empty), \ + new/datum/stack_recipe("empty magazine box (Spearhead)", /obj/item/ammo_box/magazine/spearhead/normalpoint/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (M16)", /obj/item/ammo_box/magazine/M16/empty), \ new/datum/stack_recipe("empty magazine box (M16 AP)", /obj/item/ammo_box/magazine/M16/ap/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (AR10)", /obj/item/ammo_box/magazine/ar10/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (MP5)", /obj/item/ammo_box/magazine/mp5/empty), \ + null, \ + new/datum/stack_recipe("empty magazine box (NSG 23)", /obj/item/ammo_box/magazine/nsg23/empty), \ + new/datum/stack_recipe("empty magazine box (NSG 23 AP)", /obj/item/ammo_box/magazine/nsg23/ap/empty), \ + new/datum/stack_recipe("empty magazine box (NSG 23 EX)", /obj/item/ammo_box/magazine/nsg23/ex/empty), \ + null, \ new/datum/stack_recipe("empty magazine box (Type71)", /obj/item/ammo_box/magazine/type71/empty), \ new/datum/stack_recipe("empty magazine box (Type71 AP)", /obj/item/ammo_box/magazine/type71/ap/empty), \ null, \ + new/datum/stack_recipe("empty magazine box (Type73)", /obj/item/ammo_box/magazine/type73/empty), \ + new/datum/stack_recipe("empty magazine box (Type73 High-Impact)", /obj/item/ammo_box/magazine/type73/impact/empty), \ + null, \ new/datum/stack_recipe("empty rifle ammo box (5.45x39mm)", /obj/item/ammo_box/rounds/type71/empty), \ new/datum/stack_recipe("empty rifle ammo box (5.45x39mm AP)", /obj/item/ammo_box/rounds/type71/ap/empty), \ diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index c8516dd59b2b..5b77b9149a53 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -842,7 +842,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r /datum/action/item_action/specialist/toggle_cloak/can_use_action() var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && !H.lying && holder_item == H.back) + if(istype(H) && !H.is_mob_incapacitated() && holder_item == H.back) return TRUE /datum/action/item_action/specialist/toggle_cloak/action_activate() diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 4a3afa00f368..8e4ffb90d2bd 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -761,3 +761,211 @@ else if(!isopened) isopened = 1 icon_state = "mealpackopened" + +//food boxes for storage in bulk + +//meat +/obj/item/storage/box/meat + name = "box of meat" + +/obj/item/storage/box/meat/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/meat/monkey(src) + +//fish +/obj/item/storage/box/fish + name = "box of fish" + +/obj/item/storage/box/fish/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/carpmeat(src) + +//grocery + +//milk +/obj/item/storage/box/milk + name = "box of milk" + +/obj/item/storage/box/milk/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/drinks/milk(src) + +//soymilk +/obj/item/storage/box/soymilk + name = "box of soymilk" + +/obj/item/storage/box/soymilk/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/drinks/soymilk(src) + +//enzyme +/obj/item/storage/box/enzyme + name = "box of enzyme" + +/obj/item/storage/box/enzyme/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/condiment/enzyme(src) + +//dry storage + +//flour +/obj/item/storage/box/flour + name = "box of flour" + +/obj/item/storage/box/flour/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/flour(src) + +//sugar +/obj/item/storage/box/sugar + name = "box of sugar" + +/obj/item/storage/box/sugar/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/condiment/sugar(src) + +//saltshaker +/obj/item/storage/box/saltshaker + name = "box of saltshakers" + +/obj/item/storage/box/saltshaker/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/condiment/saltshaker(src) + +//peppermill +/obj/item/storage/box/peppermill + name = "box of peppermills" + +/obj/item/storage/box/peppermill/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/condiment/peppermill(src) + +//mint +/obj/item/storage/box/mint + name = "box of mints" + +/obj/item/storage/box/mint/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/mint(src) + +// ORGANICS + +//apple +/obj/item/storage/box/apple + name = "box of apples" + +/obj/item/storage/box/apple/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/apple(src) + +//banana +/obj/item/storage/box/banana + name = "box of bananas" + +/obj/item/storage/box/banana/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/banana(src) + +//chanterelle +/obj/item/storage/box/chanterelles + name = "box of chanterelle" + +/obj/item/storage/box/chanterelle/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle(src) + +//cherries +/obj/item/storage/box/cherries + name = "box of cherries" + +/obj/item/storage/box/cherries/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/cherries(src) + +//chili +/obj/item/storage/box/chili + name = "box of chili" + +/obj/item/storage/box/chili/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/chili(src) + +//cabbage +/obj/item/storage/box/cabbage + name = "box of cabbages" + +/obj/item/storage/box/cabbage/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/cabbage(src) + +//carrot +/obj/item/storage/box/carrot + name = "box of carrots" + +/obj/item/storage/box/carrot/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/carrot(src) + +//corn +/obj/item/storage/box/corn + name = "box of corn" + +/obj/item/storage/box/corn/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/corn(src) + +//eggplant +/obj/item/storage/box/eggplant + name = "box of eggplants" + +/obj/item/storage/box/eggplant/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/eggplant(src) + +//lemon +/obj/item/storage/box/lemon + name = "box of lemons" + +/obj/item/storage/box/lemon/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/lemon(src) + +//lime +/obj/item/storage/box/lime + name = "box of limes" + +/obj/item/storage/box/lime/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/lime(src) + +//orange +/obj/item/storage/box/orange + name = "box of oranges" + +/obj/item/storage/box/orange/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/orange(src) + +//potato +/obj/item/storage/box/potato + name = "box of potatoes" + +/obj/item/storage/box/potato/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/potato(src) + +//tomato +/obj/item/storage/box/tomato + name = "box of tomatoes" + +/obj/item/storage/box/tomato/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/tomato(src) + +//whitebeet +/obj/item/storage/box/whitebeet + name = "box of whitebeet" + +/obj/item/storage/box/whitebeet/fill_preset_inventory() + for(var/i in 1 to 7) + new /obj/item/reagent_container/food/snacks/grown/whitebeet(src) diff --git a/code/game/objects/items/storage/internal.dm b/code/game/objects/items/storage/internal.dm index 68bdda8d7e7b..a491df12f086 100644 --- a/code/game/objects/items/storage/internal.dm +++ b/code/game/objects/items/storage/internal.dm @@ -25,10 +25,10 @@ //Items that use internal storage have the option of calling this to emulate default storage MouseDrop behaviour. //Returns 1 if the master item's parent's MouseDrop() should be called, 0 otherwise. It's strange, but no other way of //Doing it without the ability to call another proc's parent, really. -/obj/item/storage/internal/proc/handle_mousedrop(mob/user as mob, obj/over_object as obj) +/obj/item/storage/internal/proc/handle_mousedrop(mob/living/carbon/human/user, obj/over_object as obj) if(ishuman(user)) - if(user.lying) //Can't use your inventory when lying + if(user.body_position == LYING_DOWN) //Can't use your inventory when lying //what about stuns? don't argue return if(QDELETED(master_object)) @@ -84,8 +84,8 @@ //Items that use internal storage have the option of calling this to emulate default storage attack_hand behaviour. //Returns 1 if the master item's parent's attack_hand() should be called, 0 otherwise. //It's strange, but no other way of doing it without the ability to call another proc's parent, really. -/obj/item/storage/internal/proc/handle_attack_hand(mob/user as mob, mods) - if(user.lying) +/obj/item/storage/internal/proc/handle_attack_hand(mob/living/user as mob, mods) + if(user.body_position == LYING_DOWN) // what about stuns? huh? return FALSE if(ishuman(user)) diff --git a/code/game/objects/items/storage/large_holster.dm b/code/game/objects/items/storage/large_holster.dm index 27026165fc31..b02dff1bdbcc 100644 --- a/code/game/objects/items/storage/large_holster.dm +++ b/code/game/objects/items/storage/large_holster.dm @@ -250,12 +250,12 @@ return FALSE if(user.back != src) - to_chat(user, "The [src] must be equipped before you can switch types") + to_chat(user, SPAN_WARNING("[src] must be equipped before you can switch types.")) return var/obj/item/weapon/gun/flamer/M240T/flamer = user.get_active_hand() if(!istype(flamer)) - to_chat(user, "You must be holding the M240-T incinerator unit to use [src]") + to_chat(user, SPAN_WARNING("You must be holding [flamer] to use [src].")) return if(!active_fuel) @@ -367,7 +367,7 @@ /datum/action/item_action/specialist/toggle_fuel/can_use_action() var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && !H.lying && holder_item == H.back) + if(istype(H) && !H.is_mob_incapacitated() && H.body_position == STANDING_UP && holder_item == H.back) return TRUE /datum/action/item_action/specialist/toggle_fuel/action_activate() diff --git a/code/game/objects/items/storage/smartpack.dm b/code/game/objects/items/storage/smartpack.dm index 0b0fd05eac17..d012e773617b 100644 --- a/code/game/objects/items/storage/smartpack.dm +++ b/code/game/objects/items/storage/smartpack.dm @@ -223,7 +223,7 @@ user.remove_filter("synth_protective_form") -/obj/item/storage/backpack/marine/smartpack/proc/immobile_form(mob/user) +/obj/item/storage/backpack/marine/smartpack/proc/immobile_form(mob/living/user) if(activated_form) return diff --git a/code/game/objects/items/tools/experimental_tools.dm b/code/game/objects/items/tools/experimental_tools.dm index d27272881e1e..221aa279a53b 100644 --- a/code/game/objects/items/tools/experimental_tools.dm +++ b/code/game/objects/items/tools/experimental_tools.dm @@ -279,7 +279,7 @@ return if(ishuman(user)) - if(user.stat || user.blinded || user.lying) + if(user.stat || user.blinded || user.body_position == LYING_DOWN) return if(attaching) diff --git a/code/game/objects/items/tools/flame_tools.dm b/code/game/objects/items/tools/flame_tools.dm index 7681e74a1d88..82870f7ed8d1 100644 --- a/code/game/objects/items/tools/flame_tools.dm +++ b/code/game/objects/items/tools/flame_tools.dm @@ -233,12 +233,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM light(SPAN_NOTICE("[user] fiddles with [W], and manages to light their [name].")) else if(istype(W, /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with the [W].")) + light(SPAN_NOTICE("[user] lights their [name] with [W].")) else if(istype(W, /obj/item/weapon/gun/flamer)) var/obj/item/weapon/gun/flamer/F = W if(!(F.flags_gun_features & GUN_TRIGGER_SAFETY)) - light(SPAN_NOTICE("[user] lights their [src] with the pilot light of the [F].")) + light(SPAN_NOTICE("[user] lights their [name] with the pilot light of [F].")) else to_chat(user, SPAN_WARNING("Turn on the pilot light first!")) @@ -246,20 +246,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/obj/item/weapon/gun/G = W for(var/slot in G.attachments) if(istype(G.attachments[slot], /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with [G.attachments[slot]].")) + light(SPAN_NOTICE("[user] lights their [name] with [G.attachments[slot]].")) break else if(istype(W, /obj/item/tool/surgery/cautery)) - light(SPAN_NOTICE("[user] lights their [src] with the [W].")) + light(SPAN_NOTICE("[user] lights their [name] with [W].")) else if(istype(W, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/C = W if(C.item_state == icon_on) - light(SPAN_NOTICE("[user] lights their [src] with the [C] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [C] after a few attempts.")) else if(istype(W, /obj/item/tool/candle)) if(W.heat_source > 200) - light(SPAN_NOTICE("[user] lights their [src] with the [W] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [W] after a few attempts.")) return @@ -529,12 +529,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM light(SPAN_NOTICE("[user] fiddles with [W], and manages to light their [name] with the power of science.")) else if(istype(W, /obj/item/attachable/attached_gun/flamer)) - light(SPAN_NOTICE("[user] lights their [src] with the [W], bet that would have looked cooler if it was attached to something first!")) + light(SPAN_NOTICE("[user] lights their [name] with [W], bet that would have looked cooler if it was attached to something first!")) else if(istype(W, /obj/item/weapon/gun/flamer)) var/obj/item/weapon/gun/flamer/F = W if(!(F.flags_gun_features & GUN_TRIGGER_SAFETY)) - light(SPAN_NOTICE("[user] lights their [src] with the pilot light of the [F], the glint of pyromania in their eye.")) + light(SPAN_NOTICE("[user] lights their [name] with the pilot light of [F], the glint of pyromania in their eye.")) else to_chat(user, SPAN_WARNING("Turn on the pilot light first!")) @@ -546,16 +546,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM break else if(istype(W, /obj/item/tool/surgery/cautery)) - light(SPAN_NOTICE("[user] lights their [src] with the [W], that can't be sterile!")) + light(SPAN_NOTICE("[user] lights their [name] with [W], that can't be sterile!")) else if(istype(W, /obj/item/clothing/mask/cigarette)) var/obj/item/clothing/mask/cigarette/C = W if(C.item_state == icon_on) - light(SPAN_NOTICE("[user] lights their [src] with the [C] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [C] after a few attempts.")) else if(istype(W, /obj/item/tool/candle)) if(W.heat_source > 200) - light(SPAN_NOTICE("[user] lights their [src] with the [W] after a few attempts.")) + light(SPAN_NOTICE("[user] lights their [name] with [W] after a few attempts.")) ///////////////// //SMOKING PIPES// @@ -751,7 +751,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM else playsound(src.loc,"lighter",10, 1, 3) if(prob(95)) - user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light the [src].")) + user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light [src].")) else to_chat(user, SPAN_WARNING("You burn yourself while lighting the lighter.")) @@ -759,7 +759,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.apply_damage(2,BURN,"l_hand") else user.apply_damage(2,BURN,"r_hand") - user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.")) + user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light [src], they however burn their finger in the process.")) set_light_range(2) set_light_on(TRUE) @@ -777,10 +777,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = icon_off if(!silent) if(istype(src, /obj/item/tool/lighter/zippo) ) - bearer.visible_message("You hear a quiet click, as [bearer] shuts off [src] without even looking at what they're doing.") + bearer.visible_message(SPAN_ROSE("You hear a quiet click, as [bearer] shuts off [src] without even looking at what they're doing.")) playsound(src.loc,"zippo_close",10, 1, 3) else - bearer.visible_message(SPAN_NOTICE("[bearer] quietly shuts off the [src].")) + bearer.visible_message(SPAN_NOTICE("[bearer] quietly shuts off [src].")) set_light_on(FALSE) STOP_PROCESSING(SSobj, src) @@ -805,4 +805,3 @@ CIGARETTE PACKETS ARE IN FANCY.DM cig.light(SPAN_NOTICE("[user] holds the [name] out for [M], and lights the [cig.name].")) else ..() - diff --git a/code/game/objects/items/tools/kitchen_tools.dm b/code/game/objects/items/tools/kitchen_tools.dm index bb763ada9911..2cff941be8d6 100644 --- a/code/game/objects/items/tools/kitchen_tools.dm +++ b/code/game/objects/items/tools/kitchen_tools.dm @@ -218,7 +218,7 @@ var/cooldown = 0 /obj/item/tool/kitchen/tray/attack(mob/living/carbon/M, mob/living/carbon/user) - to_chat(user, SPAN_WARNING("You accidentally slam yourself with the [src]!")) + to_chat(user, SPAN_WARNING("You accidentally slam yourself with [src]!")) user.apply_effect(1, WEAKEN) user.take_limb_damage(2) diff --git a/code/game/objects/items/tools/maintenance_tools.dm b/code/game/objects/items/tools/maintenance_tools.dm index a326808bf491..a02536800f15 100644 --- a/code/game/objects/items/tools/maintenance_tools.dm +++ b/code/game/objects/items/tools/maintenance_tools.dm @@ -96,8 +96,8 @@ if(E) var/safety = H.get_eye_protection() if(!safety) - to_chat(user, SPAN_DANGER("You stab [H] in the eyes with the [src]!")) - visible_message(SPAN_DANGER("[user] stabs [H] in the eyes with the [src]!")) + user.visible_message(SPAN_DANGER("[user] stabs [H] in the eyes with [src]!"), + SPAN_DANGER("You stab [H] in the eyes with [src]!")) E.take_damage(rand(8,20)) return ..() /obj/item/tool/screwdriver/tactical diff --git a/code/game/objects/items/tools/misc_tools.dm b/code/game/objects/items/tools/misc_tools.dm index f70f93497021..44aaab771db8 100644 --- a/code/game/objects/items/tools/misc_tools.dm +++ b/code/game/objects/items/tools/misc_tools.dm @@ -132,7 +132,7 @@ qdel(I) //delete the paper item labels_left = initial(labels_left) else - to_chat(user, SPAN_NOTICE("The [src] is already full.")) + to_chat(user, SPAN_NOTICE("[src] is already full.")) /* Instead of updating labels_left to user every label used, diff --git a/code/game/objects/items/tools/shovel_tools.dm b/code/game/objects/items/tools/shovel_tools.dm index 008b37705fe3..ad74dca54e88 100644 --- a/code/game/objects/items/tools/shovel_tools.dm +++ b/code/game/objects/items/tools/shovel_tools.dm @@ -151,7 +151,7 @@ /obj/item/tool/shovel/proc/dump_shovel(atom/target, mob/user) var/turf/T = target - to_chat(user, SPAN_NOTICE("you dump the [dirt_type_to_name(dirt_type)]!")) + to_chat(user, SPAN_NOTICE("You dump the [dirt_type_to_name(dirt_type)]!")) playsound(user.loc, "rustle", 30, 1, 6) if(dirt_type == DIRT_TYPE_SNOW) var/obj/item/stack/snow/S = locate() in T diff --git a/code/game/objects/items/toys/toy_weapons.dm b/code/game/objects/items/toys/toy_weapons.dm index ed66be43dbc7..ce32cfdb67a9 100644 --- a/code/game/objects/items/toys/toy_weapons.dm +++ b/code/game/objects/items/toys/toy_weapons.dm @@ -156,10 +156,10 @@ O.show_message(SPAN_DANGER("[user] realized they were out of ammo and starting scrounging for some!"), SHOW_MESSAGE_VISIBLE) -/obj/item/toy/crossbow/attack(mob/M as mob, mob/user as mob) +/obj/item/toy/crossbow/attack(mob/living/M as mob, mob/user as mob) src.add_fingerprint(user) - if (src.bullets > 0 && M.lying) + if (src.bullets > 0 && M.body_position == LYING_DOWN) for(var/mob/O in viewers(M, null)) if(O.client) @@ -169,7 +169,7 @@ playsound(user.loc, 'sound/items/syringeproj.ogg', 15, 1) new /obj/item/toy/crossbow_ammo(M.loc) src.bullets-- - else if (M.lying && src.bullets == 0) + else if (M.body_position == LYING_DOWN && src.bullets == 0) for(var/mob/O in viewers(M, null)) if (O.client) O.show_message(SPAN_DANGER("[user] casually lines up a shot with [M]'s head, pulls the trigger, then realizes they are out of ammo and drops to the floor in search of some!"), SHOW_MESSAGE_VISIBLE, SPAN_DANGER("You hear someone fall"), SHOW_MESSAGE_AUDIBLE) diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 88946f5fa446..65234c59b89b 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -44,7 +44,7 @@ if(!proximity) return if (istype(A, /obj/structure/reagent_dispensers/watertank) && get_dist(src,A) <= 1) A.reagents.trans_to(src, 10) - to_chat(user, SPAN_NOTICE(" You fill the balloon with the contents of [A].")) + to_chat(user, SPAN_NOTICE("You fill the balloon with the contents of [A].")) src.desc = "A translucent balloon with some form of liquid sloshing around in it." src.update_icon() return @@ -53,22 +53,22 @@ if(istype(O, /obj/item/reagent_container/glass)) if(O.reagents) if(O.reagents.total_volume < 1) - to_chat(user, "The [O] is empty.") + to_chat(user, SPAN_WARNING("[O] is empty.")) else if(O.reagents.total_volume >= 1) if(O.reagents.has_reagent("pacid", 1)) - to_chat(user, "The acid chews through the balloon!") + to_chat(user, SPAN_WARNING("The acid chews through the balloon!")) O.reagents.reaction(user) qdel(src) else src.desc = "A translucent balloon with some form of liquid sloshing around in it." - to_chat(user, SPAN_NOTICE(" You fill the balloon with the contents of [O].")) + to_chat(user, SPAN_NOTICE("You fill the balloon with the contents of [O].")) O.reagents.trans_to(src, 10) src.update_icon() return /obj/item/toy/balloon/launch_impact(atom/hit_atom) if(src.reagents.total_volume >= 1) - src.visible_message(SPAN_DANGER("The [src] bursts!"),"You hear a pop and a splash.") + src.visible_message(SPAN_DANGER("[src] bursts!"),"You hear a pop and a splash.") src.reagents.reaction(get_turf(hit_atom)) for(var/atom/A in get_turf(hit_atom)) src.reagents.reaction(A) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 82fdf30f0fc4..310c53dd5d0f 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -106,7 +106,7 @@ bcell.update_icon() bcell.forceMove(get_turf(src.loc)) bcell = null - to_chat(user, SPAN_NOTICE("You remove the cell from the [src].")) + to_chat(user, SPAN_NOTICE("You remove the cell from [src].")) status = 0 update_icon() return @@ -183,10 +183,10 @@ // Logging if(user == L) - user.attack_log += "\[[time_stamp()]\] [key_name(user)] stunned themselves with the [src] in [get_area(user)]" + user.attack_log += "\[[time_stamp()]\] [key_name(user)] stunned themselves with [src] in [get_area(user)]" else - msg_admin_attack("[key_name(user)] stunned [key_name(L)] with the [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) - var/logentry = "\[[time_stamp()]\] [key_name(user)] stunned [key_name(L)] with the [src] in [get_area(user)]" + msg_admin_attack("[key_name(user)] stunned [key_name(L)] with [src] in [get_area(user)] ([user.loc.x],[user.loc.y],[user.loc.z]).", user.loc.x, user.loc.y, user.loc.z) + var/logentry = "\[[time_stamp()]\] [key_name(user)] stunned [key_name(L)] with [src] in [get_area(user)]" L.attack_log += logentry user.attack_log += logentry diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 0baa83f8e791..f3c76bcff638 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -113,7 +113,7 @@ w_class = SIZE_MEDIUM attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") else - to_chat(user, SPAN_NOTICE("The [src] can now be concealed.")) + to_chat(user, SPAN_NOTICE("[src] can now be concealed.")) force = initial(force) edge = 0 sharp = 0 diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index db90ea1728dd..9d730c71970b 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -14,7 +14,8 @@ /// If we have a user using us, this will be set on. We will check if the user has stopped using us, and thus stop updating and LAGGING EVERYTHING! var/in_use = FALSE var/mob/living/buckled_mob - var/buckle_lying = FALSE //Is the mob buckled in a lying position + /// Bed-like behaviour, forces mob.lying = buckle_lying if not set to [NO_BUCKLE_LYING]. + var/buckle_lying = NO_BUCKLE_LYING var/can_buckle = FALSE /**Applied to surgery times for mobs buckled prone to it or lying on the same tile, if the surgery cares about surface conditions. The lowest multiplier of objects on the tile is used.**/ @@ -224,7 +225,7 @@ else . = ..() /obj/proc/afterbuckle(mob/M as mob) // Called after somebody buckled / unbuckled - handle_rotation() + handle_rotation() // To be removed when we have full dir support in set_buckled SEND_SIGNAL(src, COSMIG_OBJ_AFTER_BUCKLE, buckled_mob) if(!buckled_mob) UnregisterSignal(M, COMSIG_PARENT_QDELETING) @@ -235,9 +236,8 @@ /obj/proc/unbuckle() SIGNAL_HANDLER if(buckled_mob && buckled_mob.buckled == src) - buckled_mob.buckled = null + buckled_mob.set_buckled(null) buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() var/M = buckled_mob REMOVE_TRAITS_IN(buckled_mob, TRAIT_SOURCE_BUCKLE) @@ -268,7 +268,7 @@ //trying to buckle a mob /obj/proc/buckle_mob(mob/M, mob/user) - if (!ismob(M) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.lying || user.stat || buckled_mob || M.buckled || !isturf(user.loc)) + if (!ismob(M) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.stat || buckled_mob || M.buckled || !isturf(user.loc)) return if (isxeno(user)) @@ -299,20 +299,15 @@ // the actual buckling proc // Yes I know this is not style but its unreadable otherwise -/obj/proc/do_buckle(mob/target, mob/user) +/obj/proc/do_buckle(mob/living/target, mob/user) send_buckling_message(target, user) if (src && src.loc) - target.buckled = src + target.set_buckled(src) target.forceMove(src.loc) target.setDir(dir) - target.update_canmove() src.buckled_mob = target src.add_fingerprint(user) afterbuckle(target) - if(buckle_lying) // Make sure buckling to beds/nests etc only turns, and doesn't give a random offset - var/matrix/new_matrix = matrix() - new_matrix.Turn(90) - target.apply_transform(new_matrix) return TRUE /obj/proc/send_buckling_message(mob/M, mob/user) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 9b0b8cf30aae..2519ed2940d5 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -150,7 +150,8 @@ for(var/mob/living/M in get_turf(src)) - if(M.lying) return //No spamming this on people. + if(HAS_TRAIT(M, TRAIT_FLOORED)) + return //No spamming this on people. M.apply_effect(5, WEAKEN) to_chat(M, SPAN_WARNING("You topple as \the [src] moves under you!")) @@ -191,7 +192,7 @@ H.updatehealth() return -/obj/structure/proc/can_touch(mob/user) +/obj/structure/proc/can_touch(mob/living/user) if(!user) return 0 if(!Adjacent(user) || !isturf(user.loc)) @@ -199,7 +200,7 @@ if(user.is_mob_restrained() || user.buckled) to_chat(user, SPAN_NOTICE("You need your hands and legs free for this.")) return 0 - if(user.is_mob_incapacitated(TRUE) || user.lying) + if(user.is_mob_incapacitated(TRUE) || user.body_position == LYING_DOWN) return 0 if(isRemoteControlling(user)) to_chat(user, SPAN_NOTICE("You need hands for this.")) @@ -208,7 +209,7 @@ /obj/structure/proc/toggle_anchored(obj/item/W, mob/user) if(!wrenchable) - to_chat(user, SPAN_WARNING("The [src] cannot be [anchored ? "un" : ""]anchored.")) + to_chat(user, SPAN_WARNING("[src] cannot be [anchored ? "un" : ""]anchored.")) return FALSE else // Wrenching is faster if we are better at engineering diff --git a/code/game/objects/structures/barricade/deployable.dm b/code/game/objects/structures/barricade/deployable.dm index 77aa6b7e6816..0d5275f98a3d 100644 --- a/code/game/objects/structures/barricade/deployable.dm +++ b/code/game/objects/structures/barricade/deployable.dm @@ -63,7 +63,7 @@ if(!ishuman(usr)) return - if(usr.lying) + if(usr.is_mob_incapacitated()) return if(over_object == usr && Adjacent(usr)) diff --git a/code/game/objects/structures/barricade/metal.dm b/code/game/objects/structures/barricade/metal.dm index 4056ac9021f8..4f250eed50e9 100644 --- a/code/game/objects/structures/barricade/metal.dm +++ b/code/game/objects/structures/barricade/metal.dm @@ -110,7 +110,7 @@ to_chat(user, SPAN_NOTICE("You lack the required metal.")) return if((usr.get_active_hand()) != metal) - to_chat(user, SPAN_WARNING("You must be holding the [metal] to upgrade \the [src]!")) + to_chat(user, SPAN_WARNING("You must be holding [metal] to upgrade [src]!")) return switch(choice) @@ -150,7 +150,7 @@ to_chat(user, SPAN_NOTICE("You lack the required metal.")) return if((usr.get_active_hand()) != metal) - to_chat(user, SPAN_WARNING("You must be holding the [metal] to upgrade \the [src]!")) + to_chat(user, SPAN_WARNING("You must be holding [metal] to upgrade [src]!")) return switch(choice) diff --git a/code/game/objects/structures/barricade/plasteel.dm b/code/game/objects/structures/barricade/plasteel.dm index 85057f9a0596..dd95aa3f1baf 100644 --- a/code/game/objects/structures/barricade/plasteel.dm +++ b/code/game/objects/structures/barricade/plasteel.dm @@ -125,7 +125,7 @@ user.visible_message(SPAN_NOTICE("[user] sets up [src] for linking."), SPAN_NOTICE("You set up [src] for linking.")) else - to_chat(user, SPAN_WARNING("The [src] has no linking points...")) + to_chat(user, SPAN_WARNING("[src] has no linking points...")) return linked = !linked for(var/direction in GLOB.cardinals) @@ -210,7 +210,7 @@ if(closed) if(recentlyflipped) - to_chat(user, SPAN_NOTICE("The [src] has been flipped too recently!")) + to_chat(user, SPAN_NOTICE("[src] has been flipped too recently!")) return user.visible_message(SPAN_NOTICE("[user] flips [src] open."), SPAN_NOTICE("You flip [src] open.")) @@ -222,7 +222,7 @@ else if(recentlyflipped) - to_chat(user, SPAN_NOTICE("The [src] has been flipped too recently!")) + to_chat(user, SPAN_NOTICE("[src] has been flipped too recently!")) return user.visible_message(SPAN_NOTICE("[user] flips [src] closed."), SPAN_NOTICE("You flip [src] closed.")) diff --git a/code/game/objects/structures/bookcase.dm b/code/game/objects/structures/bookcase.dm index becb0906e3c6..ce338de47b35 100644 --- a/code/game/objects/structures/bookcase.dm +++ b/code/game/objects/structures/bookcase.dm @@ -33,7 +33,7 @@ if(contents.len) var/obj/item/book/choice = input("Which book would you like to remove from the shelf?") as null|obj in contents if(choice) - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !in_range(loc, usr)) + if(usr.is_mob_incapacitated() || !in_range(loc, usr)) return if(ishuman(user)) if(!user.get_active_hand()) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index a7394f3a7586..fa87cd6b2b71 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -79,10 +79,11 @@ M.forceMove(loc) if(exit_stun) M.apply_effect(exit_stun, STUN) //Action delay when going out of a closet - M.update_canmove() //Force the delay to go in action immediately - if(!M.lying) - M.visible_message(SPAN_WARNING("[M] suddenly gets out of [src]!"), - SPAN_WARNING("You get out of [src] and get your bearings!")) + if(isliving(M)) + var/mob/living/living_M = M + if(living_M.mobility_flags & MOBILITY_MOVE) + M.visible_message(SPAN_WARNING("[M] suddenly gets out of [src]!"), + SPAN_WARNING("You get out of [src] and get your bearings!")) /obj/structure/closet/proc/open() if(opened) @@ -157,10 +158,15 @@ /obj/structure/closet/proc/take_damage(damage) + if(health <= 0) + return + health = max(health - damage, 0) if(health <= 0) - for(var/atom/movable/A as anything in src) - A.forceMove(src.loc) + for(var/atom/movable/movable as anything in src) + if(!loc) + break + movable.forceMove(loc) playsound(loc, 'sound/effects/meteorimpact.ogg', 25, 1) qdel(src) @@ -194,7 +200,7 @@ /obj/structure/closet/attack_animal(mob/living/user) if(user.wall_smash) - visible_message(SPAN_DANGER("[user] destroys the [src]. ")) + visible_message(SPAN_DANGER("[user] destroys [src].")) for(var/atom/movable/A as mob|obj in src) A.forceMove(src.loc) qdel(src) @@ -333,7 +339,7 @@ set category = "Object" set name = "Toggle Open" - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return if(usr.loc == src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/kitchen.dm b/code/game/objects/structures/crates_lockers/closets/secure/kitchen.dm new file mode 100644 index 000000000000..d8b0c984d4b1 --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/secure/kitchen.dm @@ -0,0 +1,143 @@ +//standart fridge + +/obj/structure/closet/secure_closet/fridge + name = "Refrigerator" + icon = 'icons/obj/structures/machinery/kitchen.dmi' + icon_state = "fridge1" + icon_closed = "fridge" + icon_locked = "fridge1" + icon_opened = "fridgeopen" + icon_broken = "fridgebroken" + icon_off = "fridge1" + storage_capacity = 60 //give extra storage capacity so that everything can fit. + +/obj/structure/closet/secure_closet/fridge/update_icon() + if(broken) + icon_state = icon_broken + else + if(!opened) + if(locked) + icon_state = icon_locked + else + icon_state = icon_closed + else + icon_state = icon_opened + +// for almayer. + +// Kitchen preparation room small quantity out of boxes... + +//standart organic storage. + +/obj/structure/closet/secure_closet/fridge/organic + name = "Organic" + +/obj/structure/closet/secure_closet/fridge/organic/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/reagent_container/food/snacks/grown/apple(src) + new /obj/item/reagent_container/food/snacks/grown/cabbage(src) + new /obj/item/reagent_container/food/snacks/grown/carrot(src) + new /obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle(src) + new /obj/item/reagent_container/food/snacks/grown/chili(src) + new /obj/item/reagent_container/food/snacks/grown/corn(src) + new /obj/item/reagent_container/food/snacks/grown/eggplant(src) + new /obj/item/reagent_container/food/snacks/grown/potato(src) + new /obj/item/reagent_container/food/snacks/grown/tomato(src) + new /obj/item/reagent_container/food/snacks/grown/whitebeet(src) + new /obj/item/reagent_container/food/snacks/grown/cherries(src) + new /obj/item/reagent_container/food/snacks/grown/lime(src) + new /obj/item/reagent_container/food/snacks/grown/lemon(src) + new /obj/item/reagent_container/food/snacks/grown/orange(src) + new /obj/item/reagent_container/food/snacks/grown/banana(src) + +//DRy + +/obj/structure/closet/secure_closet/fridge/dry + name = "dry" + +/obj/structure/closet/secure_closet/fridge/dry/Initialize() + . = ..() + for(var/i in 1 to 6) + new /obj/item/reagent_container/food/snacks/flour(src) + for(var/i in 1 to 2) + new /obj/item/reagent_container/food/condiment/sugar(src) + +//grocery + +/obj/structure/closet/secure_closet/fridge/groceries + name = "Groceries" + +/obj/structure/closet/secure_closet/fridge/groceries/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/reagent_container/food/drinks/milk(src) + new /obj/item/reagent_container/food/drinks/soymilk(src) + new /obj/item/storage/fancy/egg_box(src) + new /obj/item/reagent_container/food/condiment/enzyme(src) + +// Kitchen Reserve big quantity stored in boxes + +//meat surplus +/obj/structure/closet/secure_closet/fridge/meat/stock + name = "meat" + +/obj/structure/closet/secure_closet/fridge/meat/stock/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/storage/box/meat(src) + +//fish surplus +/obj/structure/closet/secure_closet/fridge/fish/stock + name = "fish" + +/obj/structure/closet/secure_closet/fridge/fish/stock/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/storage/box/fish(src) + +//groceries to hold milk in bulk +/obj/structure/closet/secure_closet/fridge/groceries/stock + name = "Groceries" + +/obj/structure/closet/secure_closet/fridge/groceries/stock/Initialize() + . = ..() + for(var/i in 1 to 2) + new /obj/item/storage/box/milk(src) + new /obj/item/storage/box/soymilk(src) + for(var/i in 1 to 7) + new /obj/item/storage/fancy/egg_box(src) + new /obj/item/storage/box/enzyme(src) + +//dry storage for dry food only... not a fridge +/obj/structure/closet/secure_closet/fridge/dry/stock + name = "dry" + +/obj/structure/closet/secure_closet/fridge/dry/stock/Initialize() + . = ..() + for(var/i in 1 to 4) + new /obj/item/storage/box/flour(src) + new /obj/item/storage/box/sugar(src) + +// organic storage in bulk + +/obj/structure/closet/secure_closet/fridge/organic/stock + name = "Organic" + +/obj/structure/closet/secure_closet/fridge/organic/stock/Initialize() + . = ..() + new /obj/item/storage/box/apple(src) + new /obj/item/storage/box/banana(src) + new /obj/item/storage/box/chanterelle(src) + new /obj/item/storage/box/cherries(src) + new /obj/item/storage/box/chili(src) + new /obj/item/storage/box/cabbage(src) + new /obj/item/storage/box/carrot(src) + new /obj/item/storage/box/corn(src) + new /obj/item/storage/box/eggplant(src) + new /obj/item/storage/box/lemon(src) + new /obj/item/storage/box/lime(src) + new /obj/item/storage/box/orange(src) + new /obj/item/storage/box/potato(src) + new /obj/item/storage/box/tomato(src) + new /obj/item/storage/box/whitebeet(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index d6b4a35b04f7..3206da86b197 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -78,7 +78,7 @@ set src in oview(1) // One square distance set category = "Object" set name = "Reset Lock" - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain + if(usr.is_mob_incapacitated()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain return if(ishuman(usr)) src.add_fingerprint(usr) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 331cb884bd59..ba974a8e722a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -121,7 +121,7 @@ set category = "Object" set name = "Toggle Lock" - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain + if(usr.is_mob_incapacitated()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain return if(ishuman(usr)) diff --git a/code/game/objects/structures/crates_lockers/secure_crates.dm b/code/game/objects/structures/crates_lockers/secure_crates.dm index 28a77e0c81c0..6b025a57c78b 100644 --- a/code/game/objects/structures/crates_lockers/secure_crates.dm +++ b/code/game/objects/structures/crates_lockers/secure_crates.dm @@ -53,7 +53,7 @@ set category = "Object" set name = "Toggle Lock" - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain + if(usr.is_mob_incapacitated()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain return if(ishuman(usr)) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index f1c9daa514c1..0e4a20cf989a 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -725,7 +725,7 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. //this bush marks the edge of the map, you can't destroy it to_chat(user, SPAN_DANGER("You flail away at the undergrowth, but it's too thick here.")) else - user.visible_message(SPAN_DANGER("[user] flails away at the [src] with [I]."),SPAN_DANGER("You flail away at the [src] with [I].")) + user.visible_message(SPAN_DANGER("[user] flails away at [src] with [I]."), SPAN_DANGER("You flail away at [src] with [I].")) playsound(src.loc, 'sound/effects/vegetation_hit.ogg', 25, 1) health -= damage if(health < 0) @@ -758,4 +758,3 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. desc = "Looks like some of that fruit might be edible." icon_tag = "plant" variations = 7 - diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 0f864ee2f116..063f6a337290 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -166,7 +166,7 @@ if (ST.use(1)) var/obj/structure/window/WD = new wtype(loc) WD.set_constructed_window(dir_to_set) - to_chat(user, SPAN_NOTICE("You place the [WD] on [src].")) + to_chat(user, SPAN_NOTICE("You place [WD] on [src].")) return //window placing end diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index f2e6b172ad88..da6d4f1a8254 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -67,8 +67,8 @@ else //wtf make your ladders properly assholes icon_state = "ladder00" -/obj/structure/ladder/attack_hand(mob/user) - if(user.stat || get_dist(user, src) > 1 || user.blinded || user.lying || user.buckled || user.anchored) return +/obj/structure/ladder/attack_hand(mob/living/user) + if(user.stat || get_dist(user, src) > 1 || user.blinded || user.body_position == LYING_DOWN || user.buckled || user.anchored) return if(busy) to_chat(user, SPAN_WARNING("Someone else is currently using [src].")) return @@ -94,7 +94,7 @@ SPAN_NOTICE("You start climbing [ladder_dir_name] [src].")) busy = TRUE if(do_after(user, 20, INTERRUPT_INCAPACITATED|INTERRUPT_OUT_OF_RANGE|INTERRUPT_RESIST, BUSY_ICON_GENERIC, src, INTERRUPT_NONE)) - if(!user.is_mob_incapacitated() && get_dist(user, src) <= 1 && !user.blinded && !user.lying && !user.buckled && !user.anchored) + if(!user.is_mob_incapacitated() && get_dist(user, src) <= 1 && !user.blinded && user.body_position != LYING_DOWN && !user.buckled && !user.anchored) visible_message(SPAN_NOTICE("[user] climbs [ladder_dir_name] [src].")) //Hack to give a visible message to the people here without duplicating user message user.visible_message(SPAN_NOTICE("[user] climbs [ladder_dir_name] [src]."), SPAN_NOTICE("You climb [ladder_dir_name] [src].")) @@ -103,9 +103,9 @@ busy = FALSE add_fingerprint(user) -/obj/structure/ladder/check_eye(mob/user) +/obj/structure/ladder/check_eye(mob/living/user) //Are we capable of looking? - if(user.is_mob_incapacitated() || get_dist(user, src) > 1 || user.blinded || user.lying || !user.client) + if(user.is_mob_incapacitated() || get_dist(user, src) > 1 || user.blinded || user.body_position == LYING_DOWN || !user.client) user.unset_interaction() //Are ladder cameras ok? @@ -140,7 +140,7 @@ //Peeking up/down /obj/structure/ladder/MouseDrop(over_object, src_location, over_location) if((over_object == usr && (in_range(src, usr)))) - if(islarva(usr) || isobserver(usr) || usr.is_mob_incapacitated() || usr.blinded || usr.lying) + if(islarva(usr) || isobserver(usr) || usr.is_mob_incapacitated() || usr.blinded) to_chat(usr, "You can't do that in your current state.") return if(is_watching) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index b3fb2423008a..f1717f5bf0f5 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -117,9 +117,8 @@ if(user.is_mob_incapacitated()) return if(exit_stun) - user.stunned = max(user.stunned, exit_stun) //Action delay when going out of a closet (or morgue in this case) - user.update_canmove() //Force the delay to go in action immediately - if(!user.lying) + user.apply_effect(exit_stun, STUN) + if(user.mobility_flags & MOBILITY_MOVE) user.visible_message(SPAN_WARNING("[user] suddenly gets out of [src]!"), SPAN_WARNING("You get out of [src] and get your bearings!")) toggle_morgue(user) diff --git a/code/game/objects/structures/props.dm b/code/game/objects/structures/props.dm index 6e6f6d5f8247..e14eee13b1dd 100644 --- a/code/game/objects/structures/props.dm +++ b/code/game/objects/structures/props.dm @@ -1187,7 +1187,7 @@ var/obj/item/dogtag/dog = W if(!tagged) tagged = TRUE - user.visible_message(SPAN_NOTICE("[user] drapes the [W] around the [src].")) + user.visible_message(SPAN_NOTICE("[user] drapes [W] around [src].")) dogtag_name = popleft(dog.fallen_names) dogtag_assign = popleft(dog.fallen_assgns) dogtag_blood = popleft(dog.fallen_blood_types) @@ -1198,7 +1198,7 @@ else return else - to_chat(user, SPAN_WARNING("There's already a dog tag on the [src]!")) + to_chat(user, SPAN_WARNING("There's already a dog tag on [src]!")) balloon_alert(user, "already a tag here!") if(istype(W, /obj/item/clothing/head)) @@ -1372,4 +1372,3 @@ if(initial(emote.sound)) playsound(loc, initial(emote.sound), 50, FALSE) return TRUE - diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index fbf193a4abab..34b0fb01e9d6 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -13,7 +13,7 @@ icon_state = "bed" icon = 'icons/obj/objects.dmi' can_buckle = TRUE - buckle_lying = TRUE + buckle_lying = 90 throwpass = TRUE debris = list(/obj/item/stack/sheet/metal) var/buildstacktype = /obj/item/stack/sheet/metal diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 4186ae8608a9..e523906f4cfe 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -6,7 +6,7 @@ name = "chair" desc = "A rectangular metallic frame sitting on four legs with a back panel. Designed to fit the sitting position, more or less comfortably." icon_state = "chair" - buckle_lying = FALSE + buckle_lying = 0 var/propelled = FALSE //Check for fire-extinguisher-driven chairs var/can_rotate = TRUE var/picked_up_item = /obj/item/weapon/twohanded/folded_metal_chair diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm index 2b42e641f0cf..986ae99739aa 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm @@ -20,7 +20,7 @@ if(world.time <= l_move_time + move_delay) return // Redundant check? - if(user.is_mob_incapacitated() || user.lying) + if(user.is_mob_incapacitated()) return if(propelled) //can't manually move it mid-propelling. diff --git a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm index 6375fcd13823..65bb2fd6a963 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm @@ -10,7 +10,7 @@ health = 100 layer = ABOVE_MOB_LAYER plane = GAME_PLANE - buckle_lying = FALSE + buckle_lying = 0 var/on_fire = 0 var/resisting = 0 var/resisting_ready = 0 @@ -145,7 +145,7 @@ if(!(buckled_mob && buckled_mob.buckled == src && buckled_mob != user)) return - if(user.stat || user.lying || user.is_mob_restrained()) + if(user.body_position == LYING_DOWN || user.is_mob_incapacitated()) return if(isxeno(user)) @@ -167,7 +167,7 @@ if(H.stat != DEAD) if(alert(user, "[H] is still alive and kicking! Are you sure you want to remove them from the nest?", "Confirmation", "Yes", "No") != "Yes") return - if(!buckled_mob || !user.Adjacent(H) || user.stat || user.lying || user.is_mob_restrained()) + if(!buckled_mob || !user.Adjacent(H) || user.is_mob_incapacitated(FALSE)) return if(ishuman(user)) @@ -191,7 +191,7 @@ /obj/structure/bed/nest/buckle_mob(mob/mob, mob/user) . = FALSE - if(!isliving(mob) || islarva(user) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.stat || user.lying || mob.buckled || !iscarbon(user)) + if(!isliving(mob) || islarva(user) || (get_dist(src, user) > 1) || user.is_mob_incapacitated(FALSE)) return if(isxeno(mob)) @@ -220,7 +220,7 @@ var/mob/living/carbon/human/human = null if(ishuman(mob)) human = mob - if(!human.lying) //Don't ask me why is has to be + if(human.body_position != LYING_DOWN) //Don't ask me why is has to be to_chat(user, SPAN_WARNING("[mob] is resisting, ground them.")) return @@ -242,7 +242,7 @@ return if(human) //Improperly stunned Marines won't be nested - if(!human.lying) //Don't ask me why is has to be + if(human.body_position != LYING_DOWN) //Don't ask me why is has to be to_chat(user, SPAN_WARNING("[mob] is resisting, ground them.")) return diff --git a/code/game/objects/structures/vulture_spotter.dm b/code/game/objects/structures/vulture_spotter.dm index 682a13be98fc..d90a1ec1615a 100644 --- a/code/game/objects/structures/vulture_spotter.dm +++ b/code/game/objects/structures/vulture_spotter.dm @@ -78,7 +78,7 @@ try_scope(user) -/obj/structure/vulture_spotter_tripod/on_set_interaction(mob/user) +/obj/structure/vulture_spotter_tripod/on_set_interaction(mob/living/user) var/obj/item/attachable/vulture_scope/scope = get_vulture_scope() scope.spotter_spotting = TRUE to_chat(scope.scope_user, SPAN_NOTICE("You notice that [scope] drifts less.")) @@ -102,7 +102,7 @@ give_action(user, /datum/action/vulture_tripod_unscope, null, null, src) set_scope_loc(user, scope) -/obj/structure/vulture_spotter_tripod/on_unset_interaction(mob/user) +/obj/structure/vulture_spotter_tripod/on_unset_interaction(mob/living/user) user.status_flags &= ~IMMOBILE_ACTION user.visible_message(SPAN_NOTICE("[user] looks up from [src]."),SPAN_NOTICE("You look up from [src].")) REMOVE_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Vulture spotter")) diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index cccc1211bfb0..daf4a47a8ef6 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -8,6 +8,7 @@ density = FALSE anchored = TRUE can_buckle = TRUE + buckle_lying = 0 var/open = 0 //if the lid is up var/cistern = 0 //if the cistern bit is open var/w_items = 0 //the combined w_class of all the items in the cistern @@ -150,7 +151,7 @@ GM.apply_damage(5, OXY) swirlie = null else - user.visible_message(SPAN_DANGER("[user] slams [GM.name] into the [src]!"), SPAN_NOTICE("You slam [GM.name] into the [src]!")) + user.visible_message(SPAN_DANGER("[user] slams [GM.name] into [src]!"), SPAN_NOTICE("You slam [GM.name] into [src]!")) GM.apply_damage(8, BRUTE) else to_chat(user, SPAN_NOTICE("You need a tighter grip.")) @@ -188,7 +189,7 @@ if(!GM.loc == get_turf(src)) to_chat(user, SPAN_NOTICE("[GM.name] needs to be on the urinal.")) return - user.visible_message(SPAN_DANGER("[user] slams [GM.name] into the [src]!"), SPAN_NOTICE("You slam [GM.name] into the [src]!")) + user.visible_message(SPAN_DANGER("[user] slams [GM.name] into [src]!"), SPAN_NOTICE("You slam [GM.name] into [src]!")) GM.apply_damage(8, BRUTE) else to_chat(user, SPAN_NOTICE("You need a tighter grip.")) diff --git a/code/game/turfs/auto_turf.dm b/code/game/turfs/auto_turf.dm index 75501a1a7ecd..e07f7324bcc2 100644 --- a/code/game/turfs/auto_turf.dm +++ b/code/game/turfs/auto_turf.dm @@ -169,7 +169,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 72624aff99c8..7d9dd6303c64 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -292,7 +292,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") @@ -787,7 +787,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") diff --git a/code/game/turfs/snow.dm b/code/game/turfs/snow.dm index 42cc9bd544c5..f7fb746cfbbc 100644 --- a/code/game/turfs/snow.dm +++ b/code/game/turfs/snow.dm @@ -16,7 +16,7 @@ if(istype(I, /obj/item/lightstick)) var/obj/item/lightstick/L = I if(locate(/obj/item/lightstick) in get_turf(src)) - to_chat(user, "There's already a [L] at this position!") + to_chat(user, "There's already \a [L] at this position!") return to_chat(user, "Now planting \the [L].") @@ -148,6 +148,3 @@ /turf/open/snow/layer3 icon_state = "snow_3" bleed_layer = 3 - - - diff --git a/code/game/turfs/walls/walls.dm b/code/game/turfs/walls/walls.dm index 437f203c5fbb..303a9a7655e8 100644 --- a/code/game/turfs/walls/walls.dm +++ b/code/game/turfs/walls/walls.dm @@ -88,8 +88,6 @@ if(istype(found_object, /obj/structure/sign/poster)) var/obj/structure/sign/poster/found_poster = found_object found_poster.roll_and_drop(src) - if(istype(found_object, /obj/effect/alien/weeds)) - qdel(found_object) var/list/turf/cardinal_neighbors = list(get_step(src, NORTH), get_step(src, SOUTH), get_step(src, EAST), get_step(src, WEST)) for(var/turf/cardinal_turf as anything in cardinal_neighbors) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 45590c3fa006..9cad56cdabe8 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -182,7 +182,7 @@ for(var/category in listings) dat += "
Current [category] ([length(listings[category])]):
\n" for(var/client/entry in listings[category]) - dat += "\t[entry.key] is a [entry.admin_holder.rank]" + dat += "\t[entry.key] is \a [entry.admin_holder.rank]" if(entry.admin_holder.extra_titles?.len) for(var/srank in entry.admin_holder.extra_titles) dat += " & [srank]" diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index 7a6359ccf090..ff558c341c4b 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -441,8 +441,8 @@ GLOB.supply_controller.shoppinglist += new_order marine_announcement("A nuclear device has been supplied and will be delivered to requisitions via ASRS.", "NUCLEAR ARSENAL ACQUIRED", 'sound/misc/notice2.ogg') - message_admins("[key_name_admin(usr)] admin-spawned a [encrypt] nuke.") - log_game("[key_name_admin(usr)] admin-spawned a [encrypt] nuke.") + message_admins("[key_name_admin(usr)] admin-spawned \a [encrypt] nuke.") + log_game("[key_name_admin(usr)] admin-spawned \a [encrypt] nuke.") /client/proc/turn_everyone_into_primitives() var/random_names = FALSE @@ -524,7 +524,7 @@ else marine_announcement(input, customname, 'sound/AI/commandreport.ogg', faction) - message_admins("[key_name_admin(src)] has created a [faction] command report") + message_admins("[key_name_admin(src)] has created \a [faction] command report") log_admin("[key_name_admin(src)] [faction] command report: [input]") /client/proc/cmd_admin_xeno_report() diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index 93cd66d586c4..10ba5b0f1091 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -585,23 +585,12 @@ message_admins("[key_name_admin(usr)] attempting to monkeyize [key_name_admin(H)]") H.monkeyize() - else if(href_list["corgione"]) - if(!check_rights(R_SPAWN)) return - - var/mob/living/carbon/human/H = locate(href_list["corgione"]) - if(!istype(H)) - to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") - return - - message_admins("[key_name_admin(usr)] attempting to corgize [key_name_admin(H)]") - H.corgize() - else if(href_list["forcespeech"]) if(!check_rights(R_ADMIN)) return var/mob/M = locate(href_list["forcespeech"]) if(!ismob(M)) - to_chat(usr, "this can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") return var/speech = input("What will [key_name(M)] say?.", "Force speech", "")// Don't need to sanitize, since it does that in say(), we also trust our admins. @@ -614,7 +603,7 @@ if(!check_rights(R_ADMIN)) return var/mob/living/carbon/human/H = locate(href_list["zombieinfect"]) if(!istype(H)) - to_chat(usr, "this can only be used on instances of type /human") + to_chat(usr, "This can only be used on instances of type /human") return if(alert(usr, "Are you sure you want to infect them with a ZOMBIE VIRUS? This can trigger a major event!", "Message", "Yes", "No") != "Yes") @@ -633,7 +622,7 @@ if(!check_rights(R_ADMIN)) return var/mob/living/carbon/human/H = locate(href_list["larvainfect"]) if(!istype(H)) - to_chat(usr, "this can only be used on instances of type /human") + to_chat(usr, "This can only be used on instances of type /human") return if(alert(usr, "Are you sure you want to infect them with a xeno larva?", "Message", "Yes", "No") != "Yes") @@ -715,7 +704,7 @@ var/mob/M = locate(href_list["forceemote"]) if(!ismob(M)) - to_chat(usr, "this can only be used on instances of type /mob") + to_chat(usr, "This can only be used on instances of type /mob") var/speech = input("What will [key_name(M)] emote?.", "Force emote", "")// Don't need to sanitize, since it does that in say(), we also trust our admins. if(!speech) return @@ -1797,7 +1786,7 @@ var/prompt = tgui_alert(usr, "Do you want the nuke to be Encrypted?", "Nuke Type", list("Encrypted", "Decrypted"), 20 SECONDS) if(prompt == "Decrypted") nuketype = "Decrypted Operational Nuke" - prompt = tgui_alert(usr, "Are you sure you want to authorize a [nuketype] to the marines? This will greatly affect the round!", "DEFCON 1", list("No", "Yes")) + prompt = tgui_alert(usr, "Are you sure you want to authorize \a [nuketype] to the marines? This will greatly affect the round!", "DEFCON 1", list("No", "Yes")) if(prompt != "Yes") return @@ -1814,8 +1803,8 @@ GLOB.ares_datacore.nuke_available = FALSE marine_announcement("A nuclear device has been authorized by High Command and will be delivered to requisitions via ASRS.", "NUCLEAR ORDNANCE AUTHORIZED", 'sound/misc/notice2.ogg', logging = ARES_LOG_MAIN) - log_game("[key_name_admin(usr)] has authorized a [nuketype], requested by [key_name_admin(ref_person)]") - message_admins("[key_name_admin(usr)] has authorized a [nuketype], requested by [key_name_admin(ref_person)]") + log_game("[key_name_admin(usr)] has authorized \a [nuketype], requested by [key_name_admin(ref_person)]") + message_admins("[key_name_admin(usr)] has authorized \a [nuketype], requested by [key_name_admin(ref_person)]") if(href_list["nukedeny"]) var/mob/ref_person = locate(href_list["nukedeny"]) diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index e0210e4577a0..66ed690a0e80 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -17,13 +17,14 @@ liaison = 1 if(liaison) - msg = SPAN_STAFF_IC("LIAISON: [key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]") + msg = "[SPAN_STAFF_IC("LIAISON:")][key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]" else - msg = SPAN_STAFF_IC("PRAY: [key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]") + msg = "[SPAN_STAFF_IC("PRAY: ")][key_name(src, 1)] [CC_MARK(src)] [ADMIN_PP(src)] [ADMIN_VV(src)] [ADMIN_SM(src)] [ADMIN_JMP_USER(src)] [ADMIN_SC(src)]: [msg]" log_admin(msg) for(var/client/C in GLOB.admins) if(AHOLD_IS_MOD(C.admin_holder) && C.prefs.toggles_chat & CHAT_PRAYER) to_chat(C, msg) + C << 'sound/machines/terminal_alert.ogg' if(liaison) to_chat(usr, "Your corporate overlords at Weyland-Yutani have received your message.") else @@ -31,7 +32,7 @@ /proc/high_command_announce(text , mob/Sender , iamessage) var/msg = copytext(sanitize(text), 1, MAX_MESSAGE_LEN) - msg = "[SPAN_STAFF_IC("USCM[iamessage ? "IA" : ""]:")][key_name(Sender, 1)] [CC_MARK(Sender)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] [ADMIN_JMP_USER(Sender)] [CC_REPLY(Sender)]: [msg]" + msg = "[SPAN_STAFF_IC("USCM[iamessage ? "IA" : ""]:")][key_name(Sender, 1)] [CC_MARK(Sender)] [ADMIN_PP(Sender)] [ADMIN_VV(Sender)] [ADMIN_SM(Sender)] [ADMIN_JMP_USER(Sender)] [CC_REPLY(Sender)]: [msg]" log_admin(msg) for(var/client/C in GLOB.admins) if((R_ADMIN|R_MOD) & C.admin_holder.rights) diff --git a/code/modules/animations/animation_library.dm b/code/modules/animations/animation_library.dm index 2bbff8d4cfcd..d4fd8feeaf24 100644 --- a/code/modules/animations/animation_library.dm +++ b/code/modules/animations/animation_library.dm @@ -249,7 +249,7 @@ Can look good elsewhere as well.*/ var/pre_rappel_alpha = alpha alpha = 20 dir = WEST - canmove = FALSE + ADD_TRAIT(src, TRAIT_IMMOBILIZED, INTERACTION_TRAIT) var/matrix/initial_matrix = matrix() initial_matrix.Turn(45) apply_transform(initial_matrix) @@ -257,4 +257,4 @@ Can look good elsewhere as well.*/ var/matrix/reset_matrix = matrix() animate(src, 3, transform = reset_matrix, pixel_y = 0, alpha = pre_rappel_alpha, flags = ANIMATION_PARALLEL) sleep(3) - canmove = TRUE + REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, INTERACTION_TRAIT) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index 05ad7c5a87c7..929e2d6af7b2 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -137,7 +137,7 @@ /obj/item/device/assembly/infra/Topic(href, href_list) ..() - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !in_range(loc, usr)) + if(usr.is_mob_incapacitated() || !in_range(loc, usr)) close_browser(usr, "infra") return diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index cb9bb98d339d..300c999b885b 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -315,7 +315,9 @@ log_debug("not atom! [item]") continue - if (sprites[icon_file]) + var/imgid = replacetext(replacetext("[k]", "/obj/item/", ""), "/", "-") + + if(sprites[imgid]) continue if(icon_state in icon_states(icon_file)) @@ -339,7 +341,6 @@ item = new k() I = icon(item.icon, item.icon_state, SOUTH) qdel(item) - var/imgid = replacetext(replacetext("[k]", "/obj/item/", ""), "/", "-") Insert(imgid, I) return ..() diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index c976f9b5715e..a71f7dbcb3e9 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -161,6 +161,18 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name) display_name = "USCM balaclava, tan" path = /obj/item/clothing/mask/rebreather/scarf/tan +/datum/gear/mask/uscm/skull_balaclava_blue + display_name = "USCM balaclava, blue skull" + path = /obj/item/clothing/mask/rebreather/skull + cost = 4 //same as skull facepaint + slot = WEAR_FACE + +/datum/gear/mask/uscm/skull_balaclava_black + display_name = "USCM balaclava, black skull" + path = /obj/item/clothing/mask/rebreather/skull/black + cost = 4 + slot = WEAR_FACE + /datum/gear/headwear category = "Headwear" cost = 3 @@ -876,6 +888,11 @@ GLOBAL_LIST_EMPTY(gear_datums_by_name) display_name = "Facepaint, black" path = /obj/item/facepaint/black +/datum/gear/misc/facepaint_skull + display_name = "Facepaint, skull" + path = /obj/item/facepaint/skull + cost = 3 + /datum/gear/misc/facepaint_body display_name = "Fullbody paint" path = /obj/item/facepaint/sniper diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index e80e5bd8c5ba..4ba42c0e39c3 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -188,11 +188,6 @@ S["co_affiliation"] >> affiliation S["yautja_status"] >> yautja_status S["synth_status"] >> synth_status - S["key_bindings"] >> key_bindings - check_keybindings() - - var/list/remembered_key_bindings - S["remembered_key_bindings"] >> remembered_key_bindings S["lang_chat_disabled"] >> lang_chat_disabled S["show_permission_errors"] >> show_permission_errors @@ -206,6 +201,10 @@ S["autofit_viewport"] >> auto_fit_viewport S["adaptive_zoom"] >> adaptive_zoom S["tooltips"] >> tooltips + S["key_bindings"] >> key_bindings + + var/list/remembered_key_bindings + S["remembered_key_bindings"] >> remembered_key_bindings //Sanitize ooccolor = sanitize_hexcolor(ooccolor, CONFIG_GET(string/ooc_color_default)) @@ -274,6 +273,8 @@ pref_job_slots = sanitize_islist(pref_job_slots, list()) vars["fps"] = fps + check_keybindings() + if(remembered_key_bindings) for(var/i in GLOB.keybindings_by_name) if(!(i in remembered_key_bindings)) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 4eafeed6c378..d6596474885c 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -48,6 +48,11 @@ return ..() +/obj/item/clothing/hear_talk(mob/M, msg) + for(var/obj/item/clothing/accessory/attached in accessories) + attached.hear_talk(M, msg) + ..() + /obj/item/clothing/proc/get_armor(armortype) var/armor_total = 0 var/armor_count = 0 diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 8bf58c680798..dae7f633f05d 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -507,38 +507,40 @@ set name = "Adjust welding goggles" set src in usr - if(usr.canmove && !usr.stat && !usr.is_mob_restrained()) - if(active) - active = 0 - vision_impair = vision_impair_off - flags_inventory &= ~COVEREYES - flags_inv_hide &= ~HIDEEYES - flags_armor_protection &= ~BODY_FLAG_EYES - update_icon() - eye_protection = EYE_PROTECTION_NONE - to_chat(usr, "You push [src] up out of your face.") - else - active = 1 - vision_impair = vision_impair_on - flags_inventory |= COVEREYES - flags_inv_hide |= HIDEEYES - flags_armor_protection |= BODY_FLAG_EYES - update_icon() - eye_protection = initial(eye_protection) - to_chat(usr, "You flip [src] down to protect your eyes.") - - - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - if(H.glasses == src) - H.update_tint() + if(usr.is_mob_incapacitated()) + return + + if(active) + active = 0 + vision_impair = vision_impair_off + flags_inventory &= ~COVEREYES + flags_inv_hide &= ~HIDEEYES + flags_armor_protection &= ~BODY_FLAG_EYES + update_icon() + eye_protection = EYE_PROTECTION_NONE + to_chat(usr, "You push [src] up out of your face.") + else + active = 1 + vision_impair = vision_impair_on + flags_inventory |= COVEREYES + flags_inv_hide |= HIDEEYES + flags_armor_protection |= BODY_FLAG_EYES + update_icon() + eye_protection = initial(eye_protection) + to_chat(usr, "You flip [src] down to protect your eyes.") + + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + if(H.glasses == src) + H.update_tint() - update_clothing_icon() + update_clothing_icon() - for(var/X in actions) - var/datum/action/A = X - if(istype(A, /datum/action/item_action/toggle)) - A.update_button_icon() + for(var/X in actions) + var/datum/action/A = X + if(istype(A, /datum/action/item_action/toggle)) + A.update_button_icon() /obj/item/clothing/glasses/welding/superior name = "superior welding goggles" diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 9ddaed35826a..7406e6baa754 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -36,7 +36,7 @@ return /datum/action/item_action/view_publications/can_use_action() - if(owner && !owner.is_mob_incapacitated() && !owner.lying && owner.faction != FACTION_SURVIVOR) + if(owner && !owner.is_mob_incapacitated() && owner.faction != FACTION_SURVIVOR) return TRUE /datum/action/item_action/view_publications/action_activate() diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index e6c8391ac0a1..15a4cf742464 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -88,7 +88,7 @@ playsound(loc, knockout_sound, 50, FALSE) M.show_message(FONT_SIZE_LARGE(SPAN_WARNING("KNOCKOUT!")), SHOW_MESSAGE_VISIBLE) return 1 - if (L.lying == 1 || L.stat == UNCONSCIOUS)//Can't beat 'em while they're down. + if (L.body_position == LYING_DOWN || L.stat == UNCONSCIOUS)//Can't beat 'em while they're down. to_chat(M, SPAN_WARNING("You can't box with [A], they're already down!")) return 1 M.visible_message(SPAN_DANGER("[M] [boxing_verb] [A]!")) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 102d8241754f..edc4a81b364a 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -45,33 +45,35 @@ set name = "Adjust welding mask" set src in usr - if(usr.canmove && !usr.stat && !usr.is_mob_restrained()) - if(up) - vision_impair = VISION_IMPAIR_MAX - flags_inventory |= COVEREYES|COVERMOUTH|BLOCKSHARPOBJ - flags_inv_hide |= HIDEEARS|HIDEEYES|HIDEFACE - icon_state = initial(icon_state) - eye_protection = initial(eye_protection) - to_chat(usr, "You flip the [src] down to protect your eyes.") - else - vision_impair = VISION_IMPAIR_NONE - flags_inventory &= ~(COVEREYES|COVERMOUTH|BLOCKSHARPOBJ) - flags_inv_hide &= ~(HIDEEARS|HIDEEYES|HIDEFACE) - icon_state = "[initial(icon_state)]up" - eye_protection = EYE_PROTECTION_NONE - to_chat(usr, "You push the [src] up out of your face.") - up = !up - - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - if(H.head == src) - H.update_tint() - - update_clothing_icon() //so our mob-overlays update - - for(var/X in actions) - var/datum/action/A = X - A.update_button_icon() + if(usr.is_mob_incapacitated()) + return + + if(up) + vision_impair = VISION_IMPAIR_MAX + flags_inventory |= COVEREYES|COVERMOUTH|BLOCKSHARPOBJ + flags_inv_hide |= HIDEEARS|HIDEEYES|HIDEFACE + icon_state = initial(icon_state) + eye_protection = initial(eye_protection) + to_chat(usr, SPAN_NOTICE("You flip [src] down to protect your eyes.")) + else + vision_impair = VISION_IMPAIR_NONE + flags_inventory &= ~(COVEREYES|COVERMOUTH|BLOCKSHARPOBJ) + flags_inv_hide &= ~(HIDEEARS|HIDEEYES|HIDEFACE) + icon_state = "[initial(icon_state)]up" + eye_protection = EYE_PROTECTION_NONE + to_chat(usr, SPAN_NOTICE("You push [src] up out of your face.")) + up = !up + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + if(H.head == src) + H.update_tint() + + update_clothing_icon() //so our mob-overlays update + + for(var/X in actions) + var/datum/action/A = X + A.update_button_icon() /* * Cakehat diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 76d61b4e3cc9..ffdda93f8a73 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -16,7 +16,7 @@ set name = "Adjust mask" set src in usr - if(usr.canmove && !usr.stat && !usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) if(!src.hanging) src.hanging = !src.hanging gas_transfer_coefficient = 1 //gas is now escaping to the turf and vice versa diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index a28a143f4ff0..5b97051852a6 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -385,7 +385,7 @@ set category = "Object" set src in usr - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return 0 switch(icon_state) diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 278ffb666bfd..54e9d91576f1 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -52,7 +52,7 @@ set category = "Object" set src in usr - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return 0 if(src.buttoned == TRUE) @@ -299,3 +299,21 @@ name = "liaison's winter coat" desc = "A Weyland-Yutani winter coat. Only the best comfort for the liaison in a cold environment." icon_state = "snowsuit_liaison" + +/obj/item/clothing/suit/storage/snow_suit/liaison/modified + name = "modified liaison's winter coat" + desc = "A Weyland-Yutani winter coat. This one has been modified to holster guns and other objects. Only the best comfort and utility for the liaison surviving in a cold, hostile environment." + allowed = list( + /obj/item/weapon/gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine, + /obj/item/explosive/grenade, + /obj/item/device/binoculars, + /obj/item/attachable/bayonet, + /obj/item/storage/large_holster/machete, + /obj/item/weapon/baseballbat, + /obj/item/weapon/baseballbat/metal, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index d5dda73c061f..e505d458e496 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -644,7 +644,7 @@ set category = "Object" set src in usr - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return 0 if(!injections) @@ -923,7 +923,6 @@ H.alpha = full_camo_alpha H.FF_hit_evade = 1000 ADD_TRAIT(H, TRAIT_UNDENSE, SPECIALIST_GEAR_TRAIT) - H.density = FALSE RegisterSignal(H, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(handle_mob_move_or_look)) @@ -948,7 +947,6 @@ COMSIG_MOB_FIRED_GUN, COMSIG_MOB_FIRED_GUN_ATTACHMENT, COMSIG_MOB_DEATH, - COMSIG_MOB_POST_UPDATE_CANMOVE, COMSIG_HUMAN_EXTINGUISH, COMSIG_MOB_MOVE_OR_LOOK )) @@ -957,7 +955,6 @@ animate(H, alpha = initial(H.alpha), flags = ANIMATION_END_NOW) H.FF_hit_evade = initial(H.FF_hit_evade) REMOVE_TRAIT(H, TRAIT_UNDENSE, SPECIALIST_GEAR_TRAIT) - H.update_canmove() var/datum/mob_hud/security/advanced/SA = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] SA.add_to_hud(H) @@ -1002,7 +999,7 @@ /datum/action/item_action/specialist/prepare_position/can_use_action() var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && !H.lying && holder_item == H.wear_suit) + if(istype(H) && !H.is_mob_incapacitated() && H.body_position == STANDING_UP && holder_item == H.wear_suit) return TRUE /datum/action/item_action/specialist/prepare_position/action_activate() diff --git a/code/modules/clothing/suits/marine_coat.dm b/code/modules/clothing/suits/marine_coat.dm index 73d7e0981859..3aa43706c7d8 100644 --- a/code/modules/clothing/suits/marine_coat.dm +++ b/code/modules/clothing/suits/marine_coat.dm @@ -53,7 +53,7 @@ set category = "Object" set src in usr - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return 0 if(src.buttoned == TRUE) diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 2a3cff05ee1e..b5859bb6f2d4 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -332,7 +332,7 @@ set category = "Object" set src in usr - if(!usr.canmove || usr.stat || usr.is_mob_restrained()) + if(usr.is_mob_incapacitated()) return 0 if(src.icon_state == "suitjacket_blue_open") diff --git a/code/modules/clothing/under/under.dm b/code/modules/clothing/under/under.dm index a48111690271..a48967d88538 100644 --- a/code/modules/clothing/under/under.dm +++ b/code/modules/clothing/under/under.dm @@ -106,7 +106,7 @@ if ((flags_item & NODROP) || loc != usr) return - if (!usr.is_mob_incapacitated() && !(usr.buckled && usr.lying)) + if (!usr.is_mob_incapacitated() && !(usr.buckled)) if(over_object) switch(over_object.name) if("r_hand") @@ -326,7 +326,7 @@ return update_rollsuit_status() //we need the _d version of the sprite anyways. In the future we might need to make a different version of the sprite to accomodate for rolling sleeves and hoods. if(user.head && !istype(user.head, hood_state)) - to_chat(user, SPAN_WARNING("You can't wear a hood while also wearing the [user.head]!")) + to_chat(user, SPAN_WARNING("You can't wear a hood while also wearing [user.head]!")) return if(!HAS_TRAIT(src, TRAIT_CLOTHING_HOOD)) diff --git a/code/modules/cm_aliens/XenoStructures.dm b/code/modules/cm_aliens/XenoStructures.dm index 0802295110c4..81978bb01ba0 100644 --- a/code/modules/cm_aliens/XenoStructures.dm +++ b/code/modules/cm_aliens/XenoStructures.dm @@ -160,7 +160,8 @@ /obj/effect/alien/resin/sticky/Crossed(atom/movable/AM) . = ..() var/mob/living/carbon/human/H = AM - if(istype(H) && !H.lying && !H.ally_of_hivenumber(hivenumber)) + // Wait doesn't this stack slows if you get dragged over it? What's going on here? + if(istype(H) && !H.ally_of_hivenumber(hivenumber)) H.next_move_slowdown = H.next_move_slowdown + slow_amt return . var/mob/living/carbon/xenomorph/X = AM @@ -565,7 +566,7 @@ return FALSE burning_friendly = TRUE - else if(current_mob.lying || current_mob.is_mob_incapacitated(TRUE)) + else if(current_mob.body_position == LYING_DOWN || current_mob.is_mob_incapacitated(TRUE)) return FALSE if(!burning_friendly && current_mob.health < 0) @@ -780,7 +781,7 @@ /obj/effect/alien/resin/resin_pillar/proc/brittle() //playsound(granite cracking) - visible_message(SPAN_DANGER("You hear cracking sounds from the [src] as splinters start falling off from the structure! It seems brittle now.")) + visible_message(SPAN_DANGER("You hear cracking sounds from [src] as splinters start falling off from the structure! It seems brittle now.")) health = vulnerable_health for(var/i in walls) var/turf/closed/wall/T = i @@ -813,7 +814,7 @@ /obj/effect/alien/resin/resin_pillar/hitby(atom/movable/AM) if(!brittle) - visible_message(SPAN_DANGER("[AM] harmlessly bounces off the [src]!")) + visible_message(SPAN_DANGER("[AM] harmlessly bounces off [src]!")) return return ..() diff --git a/code/modules/cm_aliens/structures/egg.dm b/code/modules/cm_aliens/structures/egg.dm index c23f4f3e2b20..eda9803c8784 100644 --- a/code/modules/cm_aliens/structures/egg.dm +++ b/code/modules/cm_aliens/structures/egg.dm @@ -296,3 +296,67 @@ linked_egg.HasProximity(C) if(linked_eggmorph) linked_eggmorph.HasProximity(C) + +/* +SPECIAL EGG USED BY EGG CARRIER +*/ + +#define CARRIER_EGG_UNSUSTAINED_LIFE 1 MINUTES +#define CARRIER_EGG_MAXIMUM_LIFE 5 MINUTES + +/obj/effect/alien/egg/carrier_egg + name = "fragile egg" + desc = "It looks like a weird, fragile egg." + ///Owner of the fragile egg, must be a mob/living/carbon/xenomorph/carrier + var/mob/living/carbon/xenomorph/carrier/owner = null + ///Time that the carrier was last within refresh range of the egg (14 tiles) + var/last_refreshed = null + /// Timer holder for the maximum lifetime of the egg as defined CARRIER_EGG_MAXIMUM_LIFE + var/life_timer = null + +/obj/effect/alien/egg/carrier_egg/Initialize(mapload, hivenumber, planter = null) + . = ..() + last_refreshed = world.time + if(!planter) + //If we have no owner when created... this really shouldn't happen but start decaying the egg immediately. + start_unstoppable_decay() + else + //Die after maximum lifetime + life_timer = addtimer(CALLBACK(src, PROC_REF(start_unstoppable_decay)), CARRIER_EGG_MAXIMUM_LIFE, TIMER_STOPPABLE) + set_owner(planter) + +/obj/effect/alien/egg/carrier_egg/Destroy() + if(life_timer) + deltimer(life_timer) + //Remove reference to src in owner's behavior_delegate and set owner to null + if(owner) + var/mob/living/carbon/xenomorph/carrier/my_owner = owner + var/datum/behavior_delegate/carrier_eggsac/behavior = my_owner.behavior_delegate + behavior.eggs_sustained -= src + my_owner = null + return ..() + +/// Set the owner of the egg to the planter. +/obj/effect/alien/egg/carrier_egg/proc/set_owner(mob/living/carbon/xenomorph/carrier/planter) + var/datum/behavior_delegate/carrier_eggsac/my_delegate = planter.behavior_delegate + my_delegate.eggs_sustained += src + owner = planter + +///Check the last refreshed time and burst the egg if we're over the lifetime of the egg +/obj/effect/alien/egg/carrier_egg/proc/check_decay() + if(last_refreshed + CARRIER_EGG_UNSUSTAINED_LIFE < world.time) + start_unstoppable_decay() + +///Burst the egg without hugger release after a 10 second timer & remove the life timer. +/obj/effect/alien/egg/carrier_egg/proc/start_unstoppable_decay() + addtimer(CALLBACK(src, PROC_REF(Burst), TRUE), 10 SECONDS) + if(life_timer) + deltimer(life_timer) + +/obj/effect/alien/egg/carrier_egg/Burst(kill, instant_trigger, mob/living/carbon/xenomorph/X, is_hugger_player_controlled) + . = ..() + if(owner) + var/datum/behavior_delegate/carrier_eggsac/behavior = owner.behavior_delegate + behavior.remove_egg_owner(src) + if(life_timer) + deltimer(life_timer) diff --git a/code/modules/cm_aliens/structures/fruit.dm b/code/modules/cm_aliens/structures/fruit.dm index 318bc6ba6cf2..09983c930031 100644 --- a/code/modules/cm_aliens/structures/fruit.dm +++ b/code/modules/cm_aliens/structures/fruit.dm @@ -442,7 +442,7 @@ /obj/effect/alien/resin/fruit/MouseDrop(atom/over_object) var/mob/living/carbon/xenomorph/X = over_object - if(!istype(X) || !Adjacent(X) || X != usr || X.is_mob_incapacitated() || X.lying) return ..() + if(!istype(X) || !Adjacent(X) || X != usr || X.is_mob_incapacitated() || X.body_position == LYING_DOWN) return ..() X.pickup_fruit(src) // Handles xenos picking up fruit diff --git a/code/modules/cm_aliens/structures/trap.dm b/code/modules/cm_aliens/structures/trap.dm index bc8eb7e6c7c0..d885e4d14a91 100644 --- a/code/modules/cm_aliens/structures/trap.dm +++ b/code/modules/cm_aliens/structures/trap.dm @@ -106,7 +106,7 @@ var/mob/living/carbon/human/H = AM if(issynth(H) || isyautja(H)) return - if(H.stat == DEAD || H.lying) + if(H.stat == DEAD || H.body_position == LYING_DOWN) return if(H.ally_of_hivenumber(hivenumber)) return diff --git a/code/modules/cm_aliens/structures/tunnel.dm b/code/modules/cm_aliens/structures/tunnel.dm index 6ac90338045d..8c467be695b4 100644 --- a/code/modules/cm_aliens/structures/tunnel.dm +++ b/code/modules/cm_aliens/structures/tunnel.dm @@ -127,7 +127,7 @@ /obj/structure/tunnel/proc/pick_tunnel(mob/living/carbon/xenomorph/X) . = FALSE //For peace of mind when it comes to dealing with unintended proc failures - if(!istype(X) || X.stat || X.lying || !isfriendly(X) || !hive) + if(!istype(X) || X.is_mob_incapacitated(TRUE) || !isfriendly(X) || !hive) return FALSE if(X in contents) var/list/tunnels = list() @@ -195,7 +195,7 @@ . = attack_alien(M) /obj/structure/tunnel/attack_alien(mob/living/carbon/xenomorph/M) - if(!istype(M) || M.stat || M.lying) + if(!istype(M) || M.is_mob_incapacitated(TRUE)) return XENO_NO_DELAY_ACTION if(!isfriendly(M)) diff --git a/code/modules/cm_marines/Donator_Items.dm b/code/modules/cm_marines/Donator_Items.dm index e8eb3f75ae60..6d2f46490d13 100644 --- a/code/modules/cm_marines/Donator_Items.dm +++ b/code/modules/cm_marines/Donator_Items.dm @@ -23,7 +23,7 @@ set src in usr if(!ishuman(usr)) return - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !usr.loc || !isturf(usr.loc)) + if(usr.is_mob_incapacitated() || !isturf(usr.loc)) to_chat(usr, SPAN_WARNING("Not right now!")) return @@ -35,7 +35,7 @@ set src in usr if(!ishuman(usr)) return - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !usr.loc || !isturf(usr.loc)) + if(usr.is_mob_incapacitated() || !isturf(usr.loc)) to_chat(usr, SPAN_WARNING("Not right now!")) return @@ -91,7 +91,7 @@ set src in usr if(!ishuman(usr)) return - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !usr.loc || !isturf(usr.loc)) + if(usr.is_mob_incapacitated() || !isturf(usr.loc)) to_chat(usr, SPAN_WARNING("Not right now!")) return @@ -103,7 +103,7 @@ set src in usr if(!ishuman(usr)) return - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !usr.loc || !isturf(usr.loc)) + if(usr.is_mob_incapacitated() || !isturf(usr.loc)) to_chat(usr, SPAN_WARNING("Not right now!")) return diff --git a/code/modules/cm_marines/NonLethalRestraints.dm b/code/modules/cm_marines/NonLethalRestraints.dm index a7f0277c8aaa..3b2439a22a82 100644 --- a/code/modules/cm_marines/NonLethalRestraints.dm +++ b/code/modules/cm_marines/NonLethalRestraints.dm @@ -45,7 +45,7 @@ if(status) M.apply_effect(6, WEAKEN) charges -= 2 - M.visible_message(SPAN_DANGER("[M] has been prodded with the [src] by [user]!")) + M.visible_message(SPAN_DANGER("[M] has been prodded with [src] by [user]!")) user.attack_log += "\[[time_stamp()]\] Stunned [key_name(M)] with [src.name]" M.attack_log += "\[[time_stamp()]\] Stunned by [key_name(user)] with [src.name]" diff --git a/code/modules/cm_marines/equipment/gear.dm b/code/modules/cm_marines/equipment/gear.dm index b3ec6c800c68..00f956fdd4ed 100644 --- a/code/modules/cm_marines/equipment/gear.dm +++ b/code/modules/cm_marines/equipment/gear.dm @@ -149,15 +149,6 @@ return FALSE . = ..() handle_cloaking() - -/obj/item/coin/marine - name = "marine specialist weapon token" - desc = "Insert this into a specialist vendor in order to access a single highly dangerous weapon." - icon_state = "coin_platinum" - -/obj/item/coin/marine/attackby(obj/item/W as obj, mob/user as mob) //To remove attaching a string functionality - return - /obj/structure/broken_apc name = "\improper M577 armored personnel carrier" desc = "A large, armored behemoth capable of ferrying marines around. \nThis one is sitting nonfunctional." diff --git a/code/modules/cm_marines/equipment/kit_boxes.dm b/code/modules/cm_marines/equipment/kit_boxes.dm index 342f9a775718..d99da8f59f2c 100644 --- a/code/modules/cm_marines/equipment/kit_boxes.dm +++ b/code/modules/cm_marines/equipment/kit_boxes.dm @@ -165,9 +165,13 @@ var/squad_assignment_update = TRUE //this one is delivered via ASRS as a reward for DEFCON/techwebs/whatever else we will have -/obj/item/spec_kit/asrs +/obj/item/spec_kit/rifleman + squad_assignment_update = FALSE allowed_roles_list = list(JOB_SQUAD_MARINE, JOB_WO_SQUAD_MARINE) +/obj/item/spec_kit/rifleman/jobless + allowed_roles_list = list() + /obj/item/spec_kit/cryo squad_assignment_update = FALSE @@ -212,6 +216,17 @@ return FALSE return TRUE +/obj/item/spec_kit/rifleman/can_use(mob/living/carbon/human/user) + if(!length(allowed_roles_list)) + return TRUE + + for(var/allowed_role in allowed_roles_list) + if(user.job == allowed_role)//Alternate check to normal kit as this is distributed to people without SKILL_SPEC_TRAINED. + if(skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_KITTED) && !skillcheckexplicit(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL)) + to_chat(user, SPAN_WARNING("You already have specialization, give this kit to someone else!")) + return FALSE + return TRUE + /obj/item/spec_kit/proc/select_and_spawn(mob/living/carbon/human/user) var/selection = tgui_input_list(user, "Pick your specialist equipment type.", "Specialist Kit Selection", GLOB.available_specialist_kit_boxes) if(!selection || QDELETED(src)) diff --git a/code/modules/cm_marines/m2c.dm b/code/modules/cm_marines/m2c.dm index 820e318b2777..f61c9ef89659 100644 --- a/code/modules/cm_marines/m2c.dm +++ b/code/modules/cm_marines/m2c.dm @@ -445,7 +445,7 @@ //ATTACK WITH BOTH HANDS COMBO -/obj/structure/machinery/m56d_hmg/auto/attack_hand(mob/user) +/obj/structure/machinery/m56d_hmg/auto/attack_hand(mob/living/user) ..() var/turf/user_turf = get_turf(user) @@ -515,16 +515,13 @@ ..() ADD_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(disable_interaction)) - RegisterSignal(user, COMSIG_MOB_POST_UPDATE_CANMOVE, PROC_REF(disable_canmove_interaction)) + RegisterSignal(user, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(body_position_changed)) // DISMOUNT THE MG /obj/structure/machinery/m56d_hmg/auto/on_unset_interaction(mob/user) REMOVE_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) - UnregisterSignal(user, list( - COMSIG_MOVABLE_PRE_MOVE, - COMSIG_MOB_POST_UPDATE_CANMOVE - )) + UnregisterSignal(user, COMSIG_MOVABLE_PRE_MOVE) ..() // GET ANIMATED @@ -598,16 +595,16 @@ to_chat(user, SPAN_NOTICE("You rotate [src], using the tripod to support your pivoting movement.")) -/obj/structure/machinery/m56d_hmg/auto/proc/disable_interaction(mob/user, NewLoc, direction) +/obj/structure/machinery/m56d_hmg/auto/proc/disable_interaction(mob/living/user, NewLoc, direction) SIGNAL_HANDLER - if(user.lying || get_dist(user,src) > 0 || user.is_mob_incapacitated() || !user.client) + if(user.body_position != STANDING_UP || get_dist(user,src) > 0 || user.is_mob_incapacitated() || !user.client) user.unset_interaction() -/obj/structure/machinery/m56d_hmg/auto/proc/disable_canmove_interaction(mob/user, canmove, laid_down, lying) +/obj/structure/machinery/m56d_hmg/auto/proc/body_position_changed(mob/living/user, body_position, old_body_position) SIGNAL_HANDLER - if(laid_down) + if(body_position != STANDING_UP) user.unset_interaction() /obj/structure/machinery/m56d_hmg/auto/proc/handle_rotating_gun(mob/user) diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index d05233e57937..994e9f1ddcb2 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -432,7 +432,7 @@ set name = "Eject ID Card" set src in oview(1) - if(!usr || usr.stat || usr.lying) return + if(!usr || usr.is_mob_incapacitated()) return if(user_id_card) user_id_card.loc = get_turf(src) @@ -498,7 +498,7 @@ set name = "Eject ID Card" set src in view(1) - if(!usr || usr.stat || usr.lying) return + if(!usr || usr.is_mob_incapacitated()) return if(ishuman(usr) && ID_to_modify) to_chat(usr, "You remove \the [ID_to_modify] from \the [src].") diff --git a/code/modules/cm_marines/orbital_cannon.dm b/code/modules/cm_marines/orbital_cannon.dm index 612c43ae1dc9..b003237f68ee 100644 --- a/code/modules/cm_marines/orbital_cannon.dm +++ b/code/modules/cm_marines/orbital_cannon.dm @@ -82,15 +82,15 @@ GLOBAL_LIST(ob_type_fuel_requirements) if(!tray.warhead) if(user) - to_chat(user, "no warhead in the tray, loading operation cancelled.") + to_chat(user, SPAN_WARNING("No warhead in the tray, loading operation cancelled.")) return if(tray.fuel_amt < 1) - to_chat(user, "no solid fuel in the tray, loading operation cancelled.") + to_chat(user, SPAN_WARNING("No solid fuel in the tray, loading operation cancelled.")) return if(loaded_tray) - to_chat(user, "Tray is already loaded.") + to_chat(user, SPAN_WARNING("Tray is already loaded.")) return tray.forceMove(src) @@ -446,7 +446,7 @@ GLOBAL_LIST_EMPTY(orbital_cannon_cancellation) shake_camera(user, 3, total_shake_factor, shake_frequency) user.KnockDown(rand(max_knockdown_time * distance_percent, (max_knockdown_time * distance_percent + 1))) - if(!user.knocked_down) + if(HAS_TRAIT(user, TRAIT_FLOORED)) continue to_chat(user, SPAN_WARNING("You are thrown off balance and fall to the ground!")) @@ -685,4 +685,3 @@ GLOBAL_LIST_EMPTY(orbital_cannon_cancellation) return TRUE tgui_interact(user) - diff --git a/code/modules/cm_marines/smartgun_mount.dm b/code/modules/cm_marines/smartgun_mount.dm index dd9053810042..01183ebceca5 100644 --- a/code/modules/cm_marines/smartgun_mount.dm +++ b/code/modules/cm_marines/smartgun_mount.dm @@ -1,12 +1,6 @@ ////////////////////////////////////////////////////////////// //Mounted MG, Replacment for the current jury rig code. -//Adds a coin for engi vendors -/obj/item/coin/marine/engineer - name = "marine engineer support token" - desc = "Insert this into an engineer vendor in order to access a support weapon." - icon_state = "coin_platinum" - // First thing we need is the ammo drum for this thing. /obj/item/ammo_magazine/m56d name = "M56D drum magazine (10x28mm Caseless)" @@ -839,7 +833,7 @@ to_chat(usr, SPAN_NOTICE("You are too far from the handles to man [src]!")) /obj/structure/machinery/m56d_hmg/on_set_interaction(mob/user) - RegisterSignal(user, list(COMSIG_MOB_MG_EXIT, COMSIG_MOB_RESISTED, COMSIG_MOB_DEATH, COMSIG_MOB_KNOCKED_DOWN), PROC_REF(exit_interaction)) + RegisterSignal(user, list(COMSIG_MOB_MG_EXIT, COMSIG_MOB_RESISTED, COMSIG_MOB_DEATH, COMSIG_LIVING_SET_BODY_POSITION), PROC_REF(exit_interaction)) flags_atom |= RELAY_CLICK user.status_flags |= IMMOBILE_ACTION user.visible_message(SPAN_NOTICE("[user] mans \the [src]."),SPAN_NOTICE("You man \the [src], locked and loaded!")) @@ -854,7 +848,7 @@ update_pixels(user) operator = user -/obj/structure/machinery/m56d_hmg/on_unset_interaction(mob/user) +/obj/structure/machinery/m56d_hmg/on_unset_interaction(mob/living/user) flags_atom &= ~RELAY_CLICK SEND_SIGNAL(src, COMSIG_GUN_INTERRUPT_FIRE) user.status_flags &= ~IMMOBILE_ACTION @@ -875,7 +869,7 @@ COMSIG_MOB_MG_EXIT, COMSIG_MOB_RESISTED, COMSIG_MOB_DEATH, - COMSIG_MOB_KNOCKED_DOWN, + COMSIG_LIVING_SET_BODY_POSITION, )) @@ -915,8 +909,8 @@ user.client.pixel_y = 0 animate(user, pixel_x=user_old_x, pixel_y=user_old_y, 4, 1) -/obj/structure/machinery/m56d_hmg/check_eye(mob/user) - if(user.lying || get_dist(user,src) > 0 || user.is_mob_incapacitated() || !user.client) +/obj/structure/machinery/m56d_hmg/check_eye(mob/living/user) + if(user.body_position != STANDING_UP || get_dist(user,src) > 0 || user.is_mob_incapacitated() || !user.client) user.unset_interaction() /obj/structure/machinery/m56d_hmg/clicked(mob/user, list/mods) diff --git a/code/modules/cm_preds/thrall_procs.dm b/code/modules/cm_preds/thrall_procs.dm index 8ea0f2abb51a..a28f6eba2662 100644 --- a/code/modules/cm_preds/thrall_procs.dm +++ b/code/modules/cm_preds/thrall_procs.dm @@ -14,7 +14,7 @@ to_chat(wearer, SPAN_WARNING("You've already claimed your equipment.")) return - if(wearer.is_mob_incapacitated() || wearer.lying || wearer.buckled) + if(wearer.is_mob_incapacitated() || wearer.body_position == LYING_DOWN /* replace by mobility_flags */ || wearer.buckled) to_chat(wearer, SPAN_WARNING("You're not able to do that right now.")) return diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm index d18ca4c153df..df8ab136ea18 100644 --- a/code/modules/cm_preds/yaut_bracers.dm +++ b/code/modules/cm_preds/yaut_bracers.dm @@ -106,6 +106,7 @@ /// handles decloaking only on HUNTER gloves /obj/item/clothing/gloves/yautja/proc/decloak() + SIGNAL_HANDLER return /// Called to update the minimap icon of the predator @@ -408,7 +409,7 @@ . = wristblades_internal(usr, FALSE) /obj/item/clothing/gloves/yautja/hunter/proc/wristblades_internal(mob/living/carbon/human/caller, forced = FALSE) - if(!caller.loc || !caller.canmove || caller.stat || !ishuman(caller)) + if(!caller.loc || caller.is_mob_incapacitated() || !ishuman(caller)) return . = check_random_function(caller, forced) @@ -648,7 +649,7 @@ . = caster_internal(usr, FALSE) /obj/item/clothing/gloves/yautja/hunter/proc/caster_internal(mob/living/carbon/human/caller, forced = FALSE) - if(!caller.loc || !caller.canmove || caller.stat || !ishuman(caller)) + if(!caller.loc || caller.is_mob_incapacitated() || !ishuman(caller)) return . = check_random_function(caller, forced) @@ -927,7 +928,7 @@ addtimer(VARSET_CALLBACK(src, disc_timer, FALSE), 10 SECONDS) for(var/mob/living/simple_animal/hostile/smartdisc/S in range(7)) - to_chat(caller, SPAN_WARNING("The [S] skips back towards you!")) + to_chat(caller, SPAN_WARNING("[S] skips back towards you!")) new /obj/item/explosive/grenade/spawnergrenade/smartdisc(S.loc) qdel(S) diff --git a/code/modules/cm_preds/yaut_procs.dm b/code/modules/cm_preds/yaut_procs.dm index 32d532da72a0..728e548dfd2f 100644 --- a/code/modules/cm_preds/yaut_procs.dm +++ b/code/modules/cm_preds/yaut_procs.dm @@ -48,7 +48,7 @@ set name = "Butcher" set desc = "Butcher a corpse you're standing on for its tasty meats." - if(is_mob_incapacitated() || lying || buckled) + if(is_mob_incapacitated() || body_position != STANDING_UP || buckled) return var/list/choices = list() @@ -77,7 +77,7 @@ to_chat(src, SPAN_WARNING("This tiny worm is not even worth using your tools on.")) return - if(is_mob_incapacitated() || lying || buckled) + if(is_mob_incapacitated() || body_position != STANDING_UP || buckled) return if(issynth(T)) @@ -236,7 +236,7 @@ to_chat(src, SPAN_WARNING("You've already claimed your equipment.")) return - if(is_mob_incapacitated() || lying || buckled) + if(is_mob_incapacitated() || body_position != STANDING_UP || buckled) to_chat(src, SPAN_WARNING("You're not able to do that right now.")) return diff --git a/code/modules/cm_tech/hologram.dm b/code/modules/cm_tech/hologram.dm index 5c0e986f45b2..3509c0a73a7d 100644 --- a/code/modules/cm_tech/hologram.dm +++ b/code/modules/cm_tech/hologram.dm @@ -5,7 +5,6 @@ GLOBAL_LIST_EMPTY_TYPED(hologram_list, /mob/hologram) desc = "It seems to be a visual projection of someone" //jinkies! icon = 'icons/mob/mob.dmi' icon_state = "hologram" - canmove = TRUE blinded = FALSE invisibility = INVISIBILITY_OBSERVER diff --git a/code/modules/cm_tech/implements/engi_czsp.dm b/code/modules/cm_tech/implements/engi_czsp.dm index 8e1ab8248c19..f3024129b3eb 100644 --- a/code/modules/cm_tech/implements/engi_czsp.dm +++ b/code/modules/cm_tech/implements/engi_czsp.dm @@ -35,7 +35,7 @@ return if((user.get_active_hand()) != src) - to_chat(user, SPAN_WARNING("You must be holding the [src] to upgrade \the [D]!")) + to_chat(user, SPAN_WARNING("You must be holding [src] to upgrade [D]!")) return var/type_to_change_to = D.upgrade_string_to_type(chosen_upgrade) diff --git a/code/modules/defenses/defenses.dm b/code/modules/defenses/defenses.dm index 099b41aee72b..633b51801e27 100644 --- a/code/modules/defenses/defenses.dm +++ b/code/modules/defenses/defenses.dm @@ -408,9 +408,9 @@ damaged_action(damage) if(stat == DEFENSE_DAMAGED) - density = FALSE + set_density(FALSE) else - density = initial(density) + set_density(initial(density)) update_icon() diff --git a/code/modules/desert_dam/filtration/filtration.dm b/code/modules/desert_dam/filtration/filtration.dm index 33c3e265e182..c289ae878bad 100644 --- a/code/modules/desert_dam/filtration/filtration.dm +++ b/code/modules/desert_dam/filtration/filtration.dm @@ -186,7 +186,7 @@ Each var depends on others M.apply_damage(0.5,BURN) else var/dam_amount = 3 - if(M.lying) + if(M.body_position == LYING_DOWN) M.apply_damage(dam_amount,BURN) M.apply_damage(dam_amount,BURN) M.apply_damage(dam_amount,BURN) diff --git a/code/modules/desert_dam/motion_sensor/sensortower.dm b/code/modules/desert_dam/motion_sensor/sensortower.dm index 6a718607aaf6..50aeede45f66 100644 --- a/code/modules/desert_dam/motion_sensor/sensortower.dm +++ b/code/modules/desert_dam/motion_sensor/sensortower.dm @@ -211,7 +211,7 @@ if(do_after(M, 40, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) if(M.loc != cur_loc) return XENO_NO_DELAY_ACTION //Make sure we're still there - if(M.lying) + if(M.is_mob_incapacitated()) return XENO_NO_DELAY_ACTION if(buildstate == SENSORTOWER_BUILDSTATE_BLOWTORCH) return XENO_NO_DELAY_ACTION diff --git a/code/modules/droppod/container_droppod.dm b/code/modules/droppod/container_droppod.dm index 270f15011c5c..a9432933fa90 100644 --- a/code/modules/droppod/container_droppod.dm +++ b/code/modules/droppod/container_droppod.dm @@ -126,7 +126,7 @@ . = ..() if(loc) collect_objects(loc.contents) - density = TRUE + set_density(TRUE) /obj/structure/droppod/container/proc/collect_objects(list/L) for(var/atom/movable/A in L) diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index a1cbce7a40a6..1345164fcf34 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -465,7 +465,7 @@ log transactions set name = "Eject ID Card" set src in view(1) - if(!usr || usr.stat || usr.lying) return + if(!usr || usr.is_mob_incapacitated()) return if(ishuman(usr) && held_card) to_chat(usr, "You remove \the [held_card] from \the [src].") diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm index 9503eee267e0..e62ad15a649e 100644 --- a/code/modules/flufftext/Dreaming.dm +++ b/code/modules/flufftext/Dreaming.dm @@ -21,7 +21,7 @@ for(var/i = rand(1,4),i > 0, i--) to_chat(src, SPAN_NOTICE("... [pick(POSSIBLE_DREAM_TOPICS)] ...")) sleep(rand(40,70)) - if(knocked_out <= 0) + if(!stat) dreaming = 0 return dreaming = 0 diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index ee3d749ec4fa..ceff47b5b63c 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -351,7 +351,7 @@ GLOBAL_LIST_INIT(non_fakeattack_weapons, list(/obj/item/device/aicard,\ var/clone_weapon = null for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(H.stat || H.lying) continue + if(H.stat) continue // possible_clones += H clone = H break //changed the code a bit. Less randomised, but less work to do. Should be ok, world.contents aren't stored in any particular order. diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm index 70f4e2206002..de24f1f84ff3 100644 --- a/code/modules/gear_presets/corpses.dm +++ b/code/modules/gear_presets/corpses.dm @@ -39,7 +39,6 @@ if(nest) new_human.buckled = nest new_human.setDir(nest.dir) - new_human.update_canmove() nest.buckled_mob = new_human nest.afterbuckle(new_human) new_human.spawned_corpse = TRUE diff --git a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm index 532b422a13a9..f53f25326b69 100644 --- a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm +++ b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm @@ -1,6 +1,6 @@ /datum/equipment_preset/survivor/engineer/soro - name = "Survivor - Sorokyne Strata Political Prisioner" - assignment = "Sorokyne Strata Political Prisioner" + name = "Survivor - Sorokyne Strata Political Prisoner" + assignment = "Sorokyne Strata Political Prisoner" /datum/equipment_preset/survivor/engineer/soro/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP(new_human), WEAR_BODY) @@ -58,3 +58,17 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) ..() + +/datum/equipment_preset/survivor/corporate/soro + name = "Survivor - Sorokyne Strata Corporate Liaison" + assignment = "Sorokyne Strata Corporate Liaison" + +/datum/equipment_preset/survivor/corporate/soro/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/charcoal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/liaison/modified(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/lockable/liaison, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() + diff --git a/code/modules/gear_presets/uscm_event.dm b/code/modules/gear_presets/uscm_event.dm index 5f7c40c016e0..12db6323ac40 100644 --- a/code/modules/gear_presets/uscm_event.dm +++ b/code/modules/gear_presets/uscm_event.dm @@ -303,6 +303,9 @@ new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/taperecorder(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/listening_bug/radio_linked/hc/pvst(new_human), WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/listening_bug/radio_linked/hc/pvst(new_human), WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/listening_bug/radio_linked/hc/pvst(new_human), WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/MP/provost/light/flexi(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/flash(new_human), WEAR_IN_JACKET) diff --git a/code/modules/hydroponics/vines.dm b/code/modules/hydroponics/vines.dm index 9268d3279539..bfca73e8d01b 100644 --- a/code/modules/hydroponics/vines.dm +++ b/code/modules/hydroponics/vines.dm @@ -124,7 +124,6 @@ if(V && (V.stat != DEAD) && (V.buckled != src)) // If mob exists and is not dead or captured. V.buckled = src V.forceMove(src.loc) - V.update_canmove() src.buckled_mob = V to_chat(V, SPAN_DANGER("The vines [pick("wind", "tangle", "tighten")] around you!")) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index cf3f9e8b4702..430f959a7718 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -25,7 +25,6 @@ icon = 'icons/mob/mob.dmi' icon_state = "ghost" density = FALSE - canmove = TRUE blinded = FALSE anchored = TRUE // don't get pushed around invisibility = INVISIBILITY_OBSERVER @@ -80,6 +79,9 @@ GLOB.observer_list += src + // Ghosts don't move, they teleport via a special case in mob code + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_INHERENT) + var/turf/spawn_turf if(ismob(body)) spawn_turf = get_turf(body) //Where is the body located? @@ -756,12 +758,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(!tx || !ty || !tz) return following = null - spawn(0) - // To stop the ghost flickering. - x = tx - y = ty - z = tz - sleep(15) + forceMove(locate(tx, ty, tz)) /mob/dead/observer/verb/dead_teleport_mob() //Moves the ghost instead of just changing the ghosts's eye -Nodrak set category = "Ghost" diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index 06e404a43555..5fe27c5e5167 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -65,7 +65,7 @@ var/is_admin = FALSE if(user && user.client) - is_admin = check_other_rights(user.client, R_ADMIN, FALSE) + is_admin = check_client_rights(user.client, R_ADMIN, FALSE) var/list/pois = getpois(skip_mindless = !is_admin, specify_dead_role = FALSE) for(var/name in pois) var/list/serialized = list() diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm index 608458e2dd0d..8aea59b96a81 100644 --- a/code/modules/mob/death.dm +++ b/code/modules/mob/death.dm @@ -57,8 +57,6 @@ set_stat(DEAD) - update_canmove() - dizziness = 0 jitteriness = 0 diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 5ce40810e0b2..d71a908d627a 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -29,8 +29,6 @@ //Puts the item into your l_hand if possible and calls all necessary triggers/updates. returns 1 on success. /mob/proc/put_in_l_hand(obj/item/W) - if(lying) - return FALSE if(!istype(W)) return FALSE if(!l_hand) @@ -48,8 +46,6 @@ //Puts the item into your r_hand if possible and calls all necessary triggers/updates. returns 1 on success. /mob/proc/put_in_r_hand(obj/item/W) - if(lying) - return FALSE if(!istype(W)) return FALSE if(!r_hand) diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index ec55e6c51b59..b815fe4e3621 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -41,15 +41,6 @@ return 1 return ..() - -/mob/living/brain/update_canmove() - canmove = FALSE - return canmove - - - - - /mob/living/brain/update_sight() if (stat == DEAD) sight |= SEE_TURFS diff --git a/code/modules/mob/living/brain/life.dm b/code/modules/mob/living/brain/life.dm index 82cbb155b516..7f84b6466144 100644 --- a/code/modules/mob/living/brain/life.dm +++ b/code/modules/mob/living/brain/life.dm @@ -18,7 +18,6 @@ //Status updates, death etc. handle_regular_status_updates() - update_canmove() if(client) handle_regular_hud_updates() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 0d33503bcef4..b63ce0174a22 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -74,7 +74,7 @@ /mob/living/carbon/ex_act(severity, direction, datum/cause_data/cause_data) - if(lying) + if(body_position == LYING_DOWN) severity *= EXPLOSION_PRONE_MULTIPLIER if(severity >= 30) @@ -260,19 +260,24 @@ /mob/living/carbon/proc/help_shake_act(mob/living/carbon/M) if(src == M) return - var/t_him = "it" - if(gender == MALE) - t_him = "him" - else if(gender == FEMALE) - t_him = "her" - if(lying || sleeping) + var/t_him = p_them() + + var/shake_action + if(stat == DEAD || HAS_TRAIT(src, TRAIT_INCAPACITATED) || sleeping) // incap implies also unconscious or knockedout + shake_action = "wake [t_him] up!" + else if(HAS_TRAIT(src, TRAIT_FLOORED)) + shake_action = "get [t_him] up!" + + if(shake_action) // We are incapacitated in some fashion if(client) sleeping = max(0,sleeping-5) - if(sleeping == 0) - resting = 0 - update_canmove() - 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) + M.visible_message(SPAN_NOTICE("[M] shakes [src] trying to [shake_action]"), \ + SPAN_NOTICE("You shake [src] trying to [shake_action]"), null, 4) + + else if(body_position == LYING_DOWN) // We're just chilling on the ground, let us be + M.visible_message(SPAN_NOTICE("[M] stares and waves impatiently at [src] lying on the ground."), \ + SPAN_NOTICE("You stare and wave at [src] just lying on the ground."), null, 4) + else var/mob/living/carbon/human/H = M if(istype(H)) @@ -452,19 +457,19 @@ /mob/living/carbon/slip(slip_source_name, stun_level, weaken_level, run_only, override_noslip, slide_steps) set waitfor = 0 if(buckled) return FALSE //can't slip while buckled - if(lying) return FALSE //can't slip if already lying down. + if(body_position != STANDING_UP) return FALSE //can't slip if already lying down. stop_pulling() to_chat(src, SPAN_WARNING("You slipped on \the [slip_source_name? slip_source_name : "floor"]!")) playsound(src.loc, 'sound/misc/slip.ogg', 25, 1) apply_effect(stun_level, STUN) apply_effect(weaken_level, WEAKEN) . = TRUE - if(slide_steps && lying)//lying check to make sure we downed the mob + if(slide_steps && HAS_TRAIT(src, TRAIT_FLOORED))//lying check to make sure we downed the mob var/slide_dir = dir for(var/i=1, i<=slide_steps, i++) step(src, slide_dir) sleep(2) - if(!lying) + if(!HAS_TRAIT(src, TRAIT_FLOORED)) // just watch this break in the most horrible way possible break @@ -518,3 +523,17 @@ . += SPAN_GREEN("[src] was thralled by [src.hunter_data.thralled_set.real_name] for '[src.hunter_data.thralled_reason]'.") else if(src.hunter_data.gear) . += SPAN_RED("[src] was marked as carrying gear by [src.hunter_data.gear_set].") + + +/mob/living/carbon/on_lying_down(new_lying_angle) + . = ..() + if(!buckled || buckled.buckle_lying != 0) + lying_angle_on_lying_down(new_lying_angle) + + +/// Special carbon interaction on lying down, to transform its sprite by a rotation. +/mob/living/carbon/proc/lying_angle_on_lying_down(new_lying_angle) + if(!new_lying_angle) + set_lying_angle(pick(90, 270)) + else + set_lying_angle(new_lying_angle) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 5cac9db53cc6..6ff2a96b72f0 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -1,5 +1,6 @@ /mob/living/carbon gender = MALE + mobility_flags = MOBILITY_FLAGS_CARBON_DEFAULT var/list/stomach_contents = list() var/life_tick = 0 // The amount of life ticks that have processed on this mob. diff --git a/code/modules/mob/living/carbon/give.dm b/code/modules/mob/living/carbon/give.dm index c493559ff0d8..3f88d6beccb1 100644 --- a/code/modules/mob/living/carbon/give.dm +++ b/code/modules/mob/living/carbon/give.dm @@ -28,7 +28,7 @@ I = giver.r_hand if(!istype(I) || (I.flags_item & (DELONDROP|NODROP|ITEM_ABSTRACT))) return - if(lying) + if(body_position == LYING_DOWN) // replace by mobiilty_flags probably to_chat(giver, SPAN_WARNING("[src] can't hold that while lying down.")) return if(r_hand && l_hand) @@ -47,7 +47,7 @@ to_chat(giver, SPAN_WARNING("You need to keep the item in your active hand.")) to_chat(src, SPAN_WARNING("[giver] seem to have given up on giving [I] to you.")) return - if(lying) + if(body_position == LYING_DOWN) to_chat(src, SPAN_WARNING("You can't hold that while lying down.")) to_chat(giver, SPAN_WARNING("[src] can't hold that while lying down.")) return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 38969c01488a..6170aec3031c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -133,7 +133,7 @@ . += "Self Destruct Status: [SShijack.get_sd_eta()]" /mob/living/carbon/human/ex_act(severity, direction, datum/cause_data/cause_data) - if(lying) + if(body_position == LYING_DOWN) severity *= EXPLOSION_PRONE_MULTIPLIER @@ -172,6 +172,7 @@ var/obj/item/item1 = get_active_hand() var/obj/item/item2 = get_inactive_hand() apply_effect(round(knockdown_minus_armor), WEAKEN) + apply_effect(round(knockdown_minus_armor), STUN) // Remove this to let people crawl after an explosion. Funny but perhaps not desirable. var/knockout_value = damage * 0.1 var/knockout_minus_armor = min(knockout_value * bomb_armor_mult * 0.5, 0.5 SECONDS) // the KO time is halved from the knockdown timer. basically same stun time, you just spend less time KO'd. apply_effect(round(knockout_minus_armor), PARALYZE) @@ -1052,7 +1053,7 @@ /mob/living/carbon/human/proc/handle_embedded_objects() - if((stat == DEAD) || lying || buckled) // Shouldnt be needed, but better safe than sorry + if((stat == DEAD) || body_position || buckled) // Shouldnt be needed, but better safe than sorry return for(var/obj/item/W in embedded_items) diff --git a/code/modules/mob/living/carbon/human/human_abilities.dm b/code/modules/mob/living/carbon/human/human_abilities.dm index 37329c53b275..b5a401bc5649 100644 --- a/code/modules/mob/living/carbon/human/human_abilities.dm +++ b/code/modules/mob/living/carbon/human/human_abilities.dm @@ -455,9 +455,7 @@ CULT return to_chat(chosen, SPAN_HIGHDANGER("You feel a dangerous presence in the back of your head. You find yourself unable to move!")) - ADD_TRAIT(chosen, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Cultist Stun")) - chosen.update_canmove() chosen.update_xeno_hostile_hud() diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 805b3d7e1744..2bb113d67739 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -206,12 +206,11 @@ w_uniform.add_fingerprint(M) - if(lying || sleeping) + if(body_position == LYING_DOWN || sleeping) if(client) sleeping = max(0,src.sleeping-5) if(!sleeping) - resting = 0 - update_canmove() + 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) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 1dd7ff5fe124..dd25a13538af 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,5 +1,6 @@ /mob/living/carbon/human light_system = MOVABLE_LIGHT + rotate_on_lying = TRUE //Hair color and style var/r_hair = 0 var/g_hair = 0 diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index c4690c03068f..08ddd11da5b3 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -219,14 +219,6 @@ return 0 - -/mob/living/carbon/human/has_legs() - . = 0 - if(has_limb("r_foot") && has_limb("r_leg")) - .++ - if(has_limb("l_foot") && has_limb("l_leg")) - .++ - /mob/living/carbon/human/proc/disable_special_flags() status_flags |= CANPUSH anchored = FALSE diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 1a906dfa5c11..1803e289114e 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -108,7 +108,7 @@ //Do we have a working jetpack if(istype(back, /obj/item/tank/jetpack)) var/obj/item/tank/jetpack/J = back - if(((!check_drift) || (check_drift && J.stabilization_on)) && (!lying) && (J.allow_thrust(0.01, src))) + if(((!check_drift) || (check_drift && J.stabilization_on)) && (body_position == STANDING_UP) && (J.allow_thrust(0.01, src))) inertia_dir = 0 return 1 // if(!check_drift && J.allow_thrust(0.01, src)) @@ -140,3 +140,10 @@ prob_slip = round(prob_slip) return(prob_slip) + +/// Updates [TRAIT_FLOORED] based on whether the mob has appropriate limbs to stand or not +/mob/living/carbon/human/proc/update_leg_status() + if((has_limb("r_foot") && has_limb("r_leg")) || (has_limb("l_foot") && has_limb("l_leg"))) + REMOVE_TRAIT(src, TRAIT_FLOORED, BODY_TRAIT) + else + ADD_TRAIT(src, TRAIT_FLOORED, BODY_TRAIT) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index fded3d5e3f77..be1c7833c5c1 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -82,8 +82,6 @@ //Status updates, death etc. handle_regular_status_updates() //Optimized a bit - update_canmove() - handle_regular_hud_updates() pulse = handle_pulse() diff --git a/code/modules/mob/living/carbon/human/life/handle_disabilities.dm b/code/modules/mob/living/carbon/human/life/handle_disabilities.dm index 9ab234212108..77358ca45b89 100644 --- a/code/modules/mob/living/carbon/human/life/handle_disabilities.dm +++ b/code/modules/mob/living/carbon/human/life/handle_disabilities.dm @@ -3,7 +3,7 @@ /mob/living/carbon/human/proc/handle_disabilities() if(disabilities & EPILEPSY) - if((prob(1) && knocked_out < 1)) + if(prob(1) && !HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) visible_message(SPAN_DANGER("\The [src] starts having a seizure!"), \ SPAN_DANGER("You start having a seizure!"), null, 5) apply_effect(10, PARALYZE) @@ -11,14 +11,14 @@ return if(disabilities & COUGHING) - if((prob(5) && knocked_out <= 1)) + if(prob(5) && !HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) drop_held_item() INVOKE_ASYNC(src, PROC_REF(emote), "cough") return if(disabilities & TOURETTES) speech_problem_flag = TRUE - if((prob(10) && knocked_out <= 1)) + if((prob(10) && !HAS_TRAIT(src, TRAIT_KNOCKEDOUT))) apply_effect(10, STUN) spawn() switch(rand(1, 3)) @@ -56,6 +56,6 @@ to_chat(src, SPAN_DANGER("Your hand won't respond properly, you drop what you're holding.")) drop_held_item() if(10 to 12) - if(getBrainLoss() >= 50 && !lying) + if(getBrainLoss() >= 50 && body_position == STANDING_UP) to_chat(src, SPAN_DANGER("Your legs won't respond properly, you fall down.")) resting = 1 diff --git a/code/modules/mob/living/carbon/human/life/handle_organs.dm b/code/modules/mob/living/carbon/human/life/handle_organs.dm index 2c978f2295ed..706e8567a50c 100644 --- a/code/modules/mob/living/carbon/human/life/handle_organs.dm +++ b/code/modules/mob/living/carbon/human/life/handle_organs.dm @@ -16,7 +16,7 @@ else E.process() - if(!lying && world.time - l_move_time < 15) + if(body_position == STANDING_UP && world.time - l_move_time < 15) // Moving around with fractured ribs won't do you any good if(E.is_broken() && E.internal_organs && prob(15)) var/datum/internal_organ/I = pick(E.internal_organs) @@ -32,7 +32,7 @@ custom_pain("You feel broken bones cutting at you in your [E.display_name]!", 1) pain.apply_pain(damage * 1.5) - if(!lying && !buckled && prob(2)) + if(body_position == STANDING_UP && !buckled && prob(2)) var/left_leg_crippled = FALSE var/right_leg_crippled = FALSE 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 5c951a8112bf..41554f056744 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 @@ -1,6 +1,6 @@ //Refer to life.dm for caller -/mob/living/carbon/human/handle_regular_status_updates(regular_update = TRUE) +/mob/living/carbon/human/handle_regular_status_updates(regular_update = TRUE) // you're next, evil proc --fira if(status_flags & GODMODE) return 0 @@ -53,9 +53,8 @@ if(!already_in_crit) new /datum/effects/crit/human(src) - if(knocked_out) + if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) blinded = TRUE - set_stat(UNCONSCIOUS) if(regular_update && halloss > 0) apply_damage(-3, HALLOSS) else if(sleeping) 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 9d257da720b9..16d9955395b0 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,6 +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() 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 fedeaf9fd48c..25f020a9f8b6 100644 --- a/code/modules/mob/living/carbon/human/life/life_helpers.dm +++ b/code/modules/mob/living/carbon/human/life/life_helpers.dm @@ -25,33 +25,6 @@ pressure_adjustment_coefficient = min(1, max(pressure_adjustment_coefficient, 0)) //So it isn't less than 0 or larger than 1. return pressure_adjustment_coefficient -//Calculate how much of the enviroment pressure-difference affects the human. -/mob/living/carbon/human/calculate_affecting_pressure(pressure) - var/pressure_difference - - //First get the absolute pressure difference. - if(pressure < ONE_ATMOSPHERE) //We are in an underpressure. - pressure_difference = ONE_ATMOSPHERE - pressure - - else //We are in an overpressure or standard atmosphere. - pressure_difference = pressure - ONE_ATMOSPHERE - - if(pressure_difference < 5) //If the difference is small, don't bother calculating the fraction. - pressure_difference = 0 - - else - //Otherwise calculate how much of that absolute pressure difference affects us, can be 0 to 1 (equals 0% to 100%). - //This is our relative difference. - pressure_difference *= get_pressure_weakness() - - //The difference is always positive to avoid extra calculations. - //Apply the relative difference on a standard atmosphere to get the final result. - //The return value will be the adjusted_pressure of the human that is the basis of pressure warnings and damage. - if(pressure < ONE_ATMOSPHERE) - return ONE_ATMOSPHERE - pressure_difference - else - return ONE_ATMOSPHERE + pressure_difference - /mob/living/carbon/human/proc/stabilize_body_temperature() @@ -320,9 +293,7 @@ emote("gasp") regenerate_icons() reload_fullscreens() - update_canmove() flash_eyes() apply_effect(10, EYE_BLUR) apply_effect(10, PARALYZE) - update_canmove() updatehealth() //One more time, so it doesn't show the target as dead on HUDs diff --git a/code/modules/mob/living/carbon/human/powers/human_powers.dm b/code/modules/mob/living/carbon/human/powers/human_powers.dm index b31d7cbcce76..be7848b2a936 100644 --- a/code/modules/mob/living/carbon/human/powers/human_powers.dm +++ b/code/modules/mob/living/carbon/human/powers/human_powers.dm @@ -9,7 +9,7 @@ if(last_special > world.time) return - if(is_mob_incapacitated() || lying || buckled) + if(is_mob_incapacitated() || buckled) to_chat(src, "You cannot tackle someone in your current state.") return @@ -27,7 +27,7 @@ if(last_special > world.time) return - if(is_mob_incapacitated() || lying || buckled) + if(is_mob_incapacitated() || buckled) to_chat(src, "You cannot tackle in your current state.") return @@ -56,7 +56,7 @@ if(last_special > world.time) return - if(is_mob_incapacitated() || lying || buckled) + if(is_mob_incapacitated() || body_position != STANDING_UP || buckled) to_chat(src, "You cannot leap in your current state.") return @@ -74,7 +74,7 @@ if(last_special > world.time) return - if(is_mob_incapacitated() || lying || buckled) + if(is_mob_incapacitated() || body_position != STANDING_UP || buckled) to_chat(src, "You cannot leap in your current state.") return @@ -110,7 +110,7 @@ if(last_special > world.time) return - if(is_mob_incapacitated(TRUE) || lying) + if(is_mob_incapacitated() || body_position != STANDING_UP) to_chat(src, SPAN_DANGER("You cannot do that in your current state.")) return @@ -193,13 +193,46 @@ /mob/living/verb/lay_down() set name = "Rest" set category = "IC" + set_resting(!resting, FALSE, TRUE) - if(!resting) - apply_effect(1, WEAKEN) //so that the mob immediately falls over - - resting = !resting +///Proc to hook behavior to the change of value in the resting variable. +/mob/living/proc/set_resting(new_resting, silent = TRUE, instant = FALSE) + if(!(mobility_flags & MOBILITY_REST)) + return + if(new_resting == resting) + return + if(!COOLDOWN_FINISHED(src, rest_cooldown)) + to_chat(src, SPAN_WARNING("You can't 'rest' that fast. Take a breather!")) + return + COOLDOWN_START(src, rest_cooldown, 1 SECONDS) + + . = resting + resting = new_resting + if(new_resting) + if(body_position == LYING_DOWN) + if(!silent) + to_chat(src, SPAN_NOTICE("You will now try to stay lying down on the floor.")) + else if(HAS_TRAIT(src, TRAIT_FORCED_STANDING) || (buckled && buckled.buckle_lying != NO_BUCKLE_LYING)) + if(!silent) + to_chat(src, SPAN_NOTICE("You will now lay down as soon as you are able to.")) + else + if(!silent) + to_chat(src, SPAN_NOTICE("You lay down.")) + set_lying_down() + else + if(body_position == STANDING_UP) + if(!silent) + to_chat(src, SPAN_NOTICE("You will now try to remain standing up.")) + else if(HAS_TRAIT(src, TRAIT_FLOORED) || (buckled && buckled.buckle_lying != NO_BUCKLE_LYING)) + if(!silent) + to_chat(src, SPAN_NOTICE("You will now stand up as soon as you are able to.")) + else + if(!silent) + to_chat(src, SPAN_NOTICE("You stand up.")) + get_up(instant) - to_chat(src, SPAN_NOTICE("You are now [resting ? "resting." : "getting up."]")) +// SEND_SIGNAL(src, COMSIG_LIVING_RESTING, new_resting, silent, instant) +// update_resting() // HUD icons /mob/living/carbon/human/proc/toggle_inherent_nightvison() set category = "Synthetic" diff --git a/code/modules/mob/living/carbon/human/species/monkey.dm b/code/modules/mob/living/carbon/human/species/monkey.dm index f1ef5d40ec69..8e8d2443293d 100644 --- a/code/modules/mob/living/carbon/human/species/monkey.dm +++ b/code/modules/mob/living/carbon/human/species/monkey.dm @@ -46,7 +46,7 @@ /datum/species/monkey/handle_npc(mob/living/carbon/human/H) if(H.stat != CONSCIOUS) return - if(prob(33) && isturf(H.loc) && !H.pulledby && !H.lying && !H.is_mob_restrained()) //won't move if being pulled + if(prob(33) && isturf(H.loc) && !H.pulledby && (H.mobility_flags & MOBILITY_MOVE) && !H.is_mob_restrained()) //won't move if being pulled step(H, pick(GLOB.cardinals)) var/obj/held = H.get_active_hand() diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 52f0a54b7a4f..397a478a2779 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -166,6 +166,13 @@ for(var/datum/internal_organ/I in H.internal_organs) I.mechanize() + // We just deleted the legs so they fell down. + // Update again now that the legs are back so they can stand properly during rest of species code and before outside updates kick in. + // I hate this code. + H.update_leg_status() + // While we're deep in shitcode we also force instant transition so this nonsense isn't visually noticeable + H.update_transform(instant_update = TRUE) + /datum/species/proc/initialize_pain(mob/living/carbon/human/H) if(pain_type) QDEL_NULL(H.pain) @@ -179,12 +186,7 @@ /datum/species/proc/hug(mob/living/carbon/human/H, mob/living/carbon/target, target_zone = "chest") if(H.flags_emote) return - var/t_him = "them" - switch(target.gender) - if(MALE) - t_him = "him" - if(FEMALE) - t_him = "her" + var/t_him = target.p_them() if(target_zone == "head") attempt_rock_paper_scissors(H, target) @@ -195,6 +197,9 @@ else if(target_zone in list("l_hand", "r_hand")) attempt_fist_bump(H, target) return + else if(H.body_position == LYING_DOWN) // Keep other interactions above lying check for maximum awkwardness potential + H.visible_message(SPAN_NOTICE("[H] waves at [target] to make [t_him] feel better!"), \ + SPAN_NOTICE("You wave at [target] to make [t_him] feel better!"), null, 4) else if(target_zone == "groin") H.visible_message(SPAN_NOTICE("[H] hugs [target] to make [t_him] feel better!"), \ SPAN_NOTICE("You hug [target] to make [t_him] feel better!"), null, 4) diff --git a/code/modules/mob/living/carbon/human/species/zombie.dm b/code/modules/mob/living/carbon/human/species/zombie.dm index 251816c03468..76b1c3928659 100644 --- a/code/modules/mob/living/carbon/human/species/zombie.dm +++ b/code/modules/mob/living/carbon/human/species/zombie.dm @@ -53,9 +53,6 @@ if(zombie.glasses) zombie.drop_inv_item_on_ground(zombie.glasses, FALSE, TRUE) if(zombie.wear_mask) zombie.drop_inv_item_on_ground(zombie.wear_mask, FALSE, TRUE) - if(zombie.lying) - zombie.lying = FALSE - var/obj/item/weapon/zombie_claws/ZC = new(zombie) ZC.icon_state = "claw_r" zombie.equip_to_slot_or_del(ZC, WEAR_R_HAND, TRUE) @@ -116,7 +113,7 @@ /datum/species/zombie/proc/revive_from_death(mob/living/carbon/human/zombie) if(zombie && zombie.loc && zombie.stat == DEAD) zombie.revive(TRUE) - zombie.stunned = 4 + zombie.apply_effect(4, STUN) zombie.make_jittery(500) zombie.visible_message(SPAN_WARNING("[zombie] rises from the ground!")) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 6aaf05ff9f12..c7427384f0a4 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -89,25 +89,6 @@ There are several things that need to be remembered: overlays -= I overlays_standing[cache_index] = null - -/mob/living/carbon/human/update_transform(force = FALSE) - if(lying == lying_prev && !force) - return - lying_prev = lying - var/matrix/new_matrix = matrix() - if(lying) - if(pulledby && pulledby.grab_level >= GRAB_CARRY) - new_matrix.Turn(90) - else - if(prob(50)) - new_matrix.Turn(90) - else - new_matrix.Turn(270) - new_matrix.Translate(rand(-10,10), rand(-10,10)) - apply_transform(new_matrix) - else - apply_transform(new_matrix) - /mob/living/carbon/human/UpdateDamageIcon() for(var/obj/limb/O in limbs) if(!(O.status & LIMB_DESTROYED)) @@ -131,6 +112,8 @@ There are several things that need to be remembered: //BASE MOB SPRITE /mob/living/carbon/human/proc/update_body() + update_leg_status() // Not icon ops, but placed here due to lack of a non-icons update_body + appearance_flags |= KEEP_TOGETHER // sanity update_damage_overlays() @@ -807,3 +790,11 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, /mob/living/carbon/human/on_immobilized_trait_loss(datum/source) . = ..() update_xeno_hostile_hud() + +/mob/living/carbon/human/on_floored_trait_gain(datum/source) + . = ..() + update_xeno_hostile_hud() + +/mob/living/carbon/human/on_floored_trait_loss(datum/source) + . = ..() + update_xeno_hostile_hud() diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index cc76999358a2..e08a71f81e12 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -4,8 +4,3 @@ /mob/living/carbon/proc/remove_overlay(cache_index) return - -/mob/living/carbon/update_transform() - if(lying != lying_prev ) - lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again - update_icons() diff --git a/code/modules/mob/living/carbon/xenomorph/Abilities.dm b/code/modules/mob/living/carbon/xenomorph/Abilities.dm index 0a6e0ff2ca26..cb46b3c6cc26 100644 --- a/code/modules/mob/living/carbon/xenomorph/Abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/Abilities.dm @@ -75,6 +75,7 @@ X.tunnel_delay = 1 addtimer(CALLBACK(src, PROC_REF(cooldown_end)), 4 MINUTES) var/msg = strip_html(input("Add a description to the tunnel:", "Tunnel Description") as text|null) + msg = replace_non_alphanumeric_plus(msg) var/description if(msg) description = msg diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index ee948b8ef1e0..0d522c142f36 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -102,7 +102,7 @@ switch(stage) if(2) if(prob(4)) - if(affected_mob.knocked_out < 1) + if(!HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) affected_mob.pain.apply_pain(PAIN_CHESTBURST_WEAK) affected_mob.visible_message(SPAN_DANGER("[affected_mob] starts shaking uncontrollably!"), \ SPAN_DANGER("You feel something moving inside you! You start shaking uncontrollably!")) @@ -123,7 +123,7 @@ else if(prob(2)) affected_mob.emote("[pick("sneeze", "cough")]") if(prob(5)) - if(affected_mob.knocked_out < 1) + if(!HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) affected_mob.pain.apply_pain(PAIN_CHESTBURST_WEAK) affected_mob.visible_message(SPAN_DANGER("\The [affected_mob] starts shaking uncontrollably!"), \ SPAN_DANGER("You feel something moving inside you! You start shaking uncontrollably!")) @@ -139,7 +139,7 @@ if(prob(50)) affected_mob.emote("scream") if(prob(6)) - if(affected_mob.knocked_out < 1) + if(!HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) affected_mob.pain.apply_pain(PAIN_CHESTBURST_WEAK) affected_mob.visible_message(SPAN_DANGER("[affected_mob] starts shaking uncontrollably!"), \ SPAN_DANGER("You feel something moving inside you! You start shaking uncontrollably!")) @@ -295,7 +295,7 @@ return victim.chestburst = TRUE to_chat(src, SPAN_DANGER("You start bursting out of [victim]'s chest!")) - if(victim.knocked_out < 1) + if(!HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) victim.apply_effect(20, DAZE) victim.visible_message(SPAN_DANGER("\The [victim] starts shaking uncontrollably!"), \ SPAN_DANGER("You feel something ripping up your insides!")) diff --git a/code/modules/mob/living/carbon/xenomorph/Evolution.dm b/code/modules/mob/living/carbon/xenomorph/Evolution.dm index 63aa7b09a633..af6be8265cc0 100644 --- a/code/modules/mob/living/carbon/xenomorph/Evolution.dm +++ b/code/modules/mob/living/carbon/xenomorph/Evolution.dm @@ -26,8 +26,15 @@ if(!length(castes_available)) to_chat(src, SPAN_WARNING("The Hive is not capable of supporting any castes you can evolve to yet.")) return + var/castepick + if((client.prefs && client.prefs.no_radials_preference) || !hive.evolution_menu_images) + castepick = tgui_input_list(usr, "You are growing into a beautiful alien! It is time to choose a caste.", "Evolve", castes_available, theme="hive_status") + else + var/list/fancy_caste_list = list() + for(var/caste in castes_available) + fancy_caste_list[caste] = hive.evolution_menu_images[caste] - var/castepick = tgui_input_list(usr, "You are growing into a beautiful alien! It is time to choose a caste.", "Evolve", castes_available, theme="hive_status") + castepick = show_radial_menu(src, src.client?.eye, fancy_caste_list) if(!castepick) //Changed my mind return diff --git a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm index 997d84465332..3ed4bf036e12 100644 --- a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm +++ b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm @@ -116,8 +116,8 @@ attack_hand(user)//Not a carrier, or already full? Just pick it up. return XENO_NO_DELAY_ACTION -/obj/item/clothing/mask/facehugger/attack(mob/M, mob/user) - if(!can_hug(M, hivenumber) || !(M.is_mob_incapacitated() || M.lying || M.buckled && !isyautja(M))) +/obj/item/clothing/mask/facehugger/attack(mob/living/M, mob/user) + if(!can_hug(M, hivenumber) || !(M.is_mob_incapacitated() || M.body_position == LYING_DOWN || M.buckled && !isyautja(M))) to_chat(user, SPAN_WARNING("The facehugger refuses to attach.")) ..() return @@ -130,7 +130,7 @@ if(!do_after(user, 2 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE, M, INTERRUPT_MOVED, BUSY_ICON_HOSTILE)) return - if(!can_hug(M, hivenumber) || !(M.is_mob_incapacitated() || M.lying || M.buckled)) + if(!can_hug(M, hivenumber) || !(M.is_mob_incapacitated() || M.body_position == LYING_DOWN || M.buckled)) return attach(M) @@ -525,7 +525,7 @@ var/catch_chance = 50 if(target.dir == GLOB.reverse_dir[hugger.dir]) catch_chance += 20 - if(target.lying) + if(target.body_position == LYING_DOWN) catch_chance -= 50 catch_chance -= ((target.maxHealth - target.health) / 3) if(target.get_active_hand()) diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm index 7b13e0010057..225a5ac91184 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm @@ -150,7 +150,7 @@ //A simple handler for checking your state. Used in pretty much all the procs. /mob/living/carbon/xenomorph/proc/check_state(permissive = FALSE) if(!permissive) - if(is_mob_incapacitated() || lying || buckled || evolving || !isturf(loc)) + if(is_mob_incapacitated() || body_position == LYING_DOWN || buckled || evolving || !isturf(loc)) to_chat(src, SPAN_WARNING("You cannot do this in your current state.")) return FALSE else if(caste_type != XENO_CASTE_QUEEN && observed_xeno) @@ -319,7 +319,6 @@ if (pounceAction.freeze_self) if(pounceAction.freeze_play_sound) playsound(loc, rand(0, 100) < 95 ? 'sound/voice/alien_pounce.ogg' : 'sound/voice/alien_pounce2.ogg', 25, 1) - canmove = FALSE ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) pounceAction.freeze_timer_id = addtimer(CALLBACK(src, PROC_REF(unfreeze_pounce)), pounceAction.freeze_time, TIMER_STOPPABLE) pounceAction.additional_effects(M) @@ -556,7 +555,7 @@ if(!TC) TC = new(tackle_min + tackle_min_offset, tackle_max + tackle_max_offset, tackle_chance*tackle_mult) LAZYSET(tackle_counter, M, TC) - RegisterSignal(M, COMSIG_MOB_KNOCKED_DOWN, PROC_REF(tackle_handle_lying_changed)) + RegisterSignal(M, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(tackle_handle_lying_changed)) if (TC.tackle_reset_id) deltimer(TC.tackle_reset_id) @@ -568,8 +567,11 @@ else reset_tackle(M) -/mob/living/carbon/xenomorph/proc/tackle_handle_lying_changed(mob/M) +/mob/living/carbon/xenomorph/proc/tackle_handle_lying_changed(mob/living/M, body_position) SIGNAL_HANDLER + if(body_position != LYING_DOWN) + return + // Infected mobs do not have their tackle counter reset if // they get knocked down or get up from a knockdown if(M.status_flags & XENO_HOST) @@ -582,7 +584,7 @@ if (TC) qdel(TC) LAZYREMOVE(tackle_counter, M) - UnregisterSignal(M, COMSIG_MOB_KNOCKED_DOWN) + UnregisterSignal(M, COMSIG_LIVING_SET_BODY_POSITION) /mob/living/carbon/xenomorph/burn_skin(burn_amount) @@ -620,7 +622,7 @@ target.xenos_tracking |= src tracked_marker = target to_chat(src, SPAN_XENONOTICE("You start tracking the [target.mark_meaning.name] resin mark.")) - to_chat(src, SPAN_INFO("shift click the compass to watch the mark, alt click to stop tracking")) + to_chat(src, SPAN_INFO("Shift click the compass to watch the mark, alt click to stop tracking")) /mob/living/carbon/xenomorph/proc/stop_tracking_resin_mark(destroyed, silent = FALSE) //tracked_marker shouldnt be nulled outside this PROC!! >:C if(QDELETED(src)) @@ -707,3 +709,6 @@ SSminimaps.remove_marker(src) add_minimap_marker() + +/mob/living/carbon/xenomorph/lying_angle_on_lying_down(new_lying_angle) + return // Do not rotate xenos around on the floor, their sprite is already top-down'ish diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index cf3be6de9086..cc0065733e21 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -347,157 +347,158 @@ var/atom/movable/vis_obj/xeno_wounds/wound_icon_holder var/atom/movable/vis_obj/xeno_pack/backpack_icon_holder -/mob/living/carbon/xenomorph/Initialize(mapload, mob/living/carbon/xenomorph/oldXeno, h_number) - var/area/A = get_area(src) - if(A && A.statistic_exempt) - statistic_exempt = TRUE +/mob/living/carbon/xenomorph/Initialize(mapload, mob/living/carbon/xenomorph/old_xeno, hivenumber) + + if(old_xeno && old_xeno.hivenumber) + src.hivenumber = old_xeno.hivenumber + else if(hivenumber) + src.hivenumber = hivenumber + + var/datum/hive_status/hive = GLOB.hive_datum[src.hivenumber] + + if(hive) + hive.add_xeno(src) wound_icon_holder = new(null, src) vis_contents += wound_icon_holder - if(oldXeno) - set_movement_intent(oldXeno.m_intent) - hivenumber = oldXeno.hivenumber - nicknumber = oldXeno.nicknumber - life_kills_total = oldXeno.life_kills_total - life_damage_taken_total = oldXeno.life_damage_taken_total - evolution_stored = oldXeno.evolution_stored - if(oldXeno.iff_tag) - iff_tag = oldXeno.iff_tag - iff_tag.forceMove(src) - oldXeno.iff_tag = null - else if (h_number) - hivenumber = h_number - set_languages(list(LANGUAGE_XENOMORPH, LANGUAGE_HIVEMIND)) - if(oldXeno) - for(var/datum/language/L in oldXeno.languages) - add_language(L.name)//Make sure to keep languages (mostly for event Queens that know English) - // Well, not yet, technically - var/datum/hive_status/in_hive = GLOB.hive_datum[hivenumber] - if(in_hive) - in_hive.add_xeno(src) - // But now we are! + ///Handle transferring things from the old Xeno if we have one in the case of evolve, devolve etc. + if(old_xeno) + src.nicknumber = old_xeno.nicknumber + src.life_kills_total = old_xeno.life_kills_total + src.life_damage_taken_total = old_xeno.life_damage_taken_total + src.evolution_stored = old_xeno.evolution_stored - for(var/T in in_hive.hive_inherant_traits) - ADD_TRAIT(src, T, TRAIT_SOURCE_HIVE) + for(var/datum/language/language as anything in old_xeno.languages) + add_language(language.name)//Make sure to keep languages (mostly for event Queens that know English) + + //Carry over intents & targeted limb to the new Xeno + set_movement_intent(old_xeno.m_intent) + a_intent_change(old_xeno.a_intent) + + //We are hiding, let's keep hiding if we can! + if(old_xeno.layer == XENO_HIDING_LAYER) + for(var/datum/action/xeno_action/onclick/xenohide/hide in actions) + layer = XENO_HIDING_LAYER + hide.button.icon_state = "template_active" + + //If we're holding things drop them + for(var/obj/item/item in old_xeno.contents) //Drop stuff + old_xeno.drop_inv_item_on_ground(item) + old_xeno.empty_gut() + + if(old_xeno.iff_tag) + iff_tag = old_xeno.iff_tag + iff_tag.forceMove(src) + old_xeno.iff_tag = null + + if(hive) + for(var/trait in hive.hive_inherant_traits) + ADD_TRAIT(src, trait, TRAIT_SOURCE_HIVE) mutators.xeno = src + //Set caste stuff if(caste_type && GLOB.xeno_datum_list[caste_type]) caste = GLOB.xeno_datum_list[caste_type] - else - to_world("something went very wrong") - return - update_icon_source() + //Fire immunity signals + if (caste.fire_immunity != FIRE_IMMUNITY_NONE) + if(caste.fire_immunity & FIRE_IMMUNITY_NO_IGNITE) + RegisterSignal(src, COMSIG_LIVING_PREIGNITION, PROC_REF(fire_immune)) - acid_splash_cooldown = caste.acid_splash_cooldown + RegisterSignal(src, list(COMSIG_LIVING_FLAMER_CROSSED, COMSIG_LIVING_FLAMER_FLAMED), PROC_REF(flamer_crossed_immune)) + else + UnregisterSignal(src, list( + COMSIG_LIVING_PREIGNITION, + COMSIG_LIVING_FLAMER_CROSSED, + COMSIG_LIVING_FLAMER_FLAMED + )) - if (caste.fire_immunity != FIRE_IMMUNITY_NONE) - if(caste.fire_immunity & FIRE_IMMUNITY_NO_IGNITE) - RegisterSignal(src, COMSIG_LIVING_PREIGNITION, PROC_REF(fire_immune)) - RegisterSignal(src, list( - COMSIG_LIVING_FLAMER_CROSSED, - COMSIG_LIVING_FLAMER_FLAMED, - ), PROC_REF(flamer_crossed_immune)) - else - UnregisterSignal(src, list( - COMSIG_LIVING_PREIGNITION, - COMSIG_LIVING_FLAMER_CROSSED, - COMSIG_LIVING_FLAMER_FLAMED, - )) + if(caste.spit_types && length(caste.spit_types)) + ammo = GLOB.ammo_list[caste.spit_types[1]] - recalculate_everything() + acid_splash_cooldown = caste.acid_splash_cooldown + + if(caste.adjust_size_x != 1) + var/matrix/matrix = matrix() + matrix.Scale(caste.adjust_size_x, caste.adjust_size_y) + apply_transform(matrix) + + behavior_delegate = new caste.behavior_delegate_type() + behavior_delegate.bound_xeno = src + behavior_delegate.add_to_xeno() + resin_build_order = caste.resin_build_order + + job = caste.caste_type // Used for tracking the caste playtime + + else + CRASH("Attempted to create a new xenomorph [src] without caste datum.") if(mob_size < MOB_SIZE_BIG) mob_flags |= SQUEEZE_UNDER_VEHICLES + // More setup stuff for names, abilities etc + update_icon_source() generate_name() + add_inherent_verbs() + add_abilities() + create_reagents(100) + regenerate_icons() - if(isqueen(src)) - SStracking.set_leader("hive_[hivenumber]", src) - SStracking.start_tracking("hive_[hivenumber]", src) + toggle_xeno_hostilehud() + recalculate_everything() + toggle_xeno_mobhud() //This is a verb, but fuck it, it just werks . = ..() + + //Set leader to the new mob + if(old_xeno && hive && IS_XENO_LEADER(old_xeno)) + hive.replace_hive_leader(old_xeno, src) + + //Begin SStracking + SStracking.start_tracking("hive_[src.hivenumber]", src) + + GLOB.living_xeno_list += src + GLOB.xeno_mob_list += src + //WO GAMEMODE if(SSticker?.mode?.hardcore) hardcore = 1 //Prevents healing and queen evolution time_of_birth = world.time - add_inherent_verbs() - add_abilities() - recalculate_actions() - + //Minimap if(z) INVOKE_NEXT_TICK(src, PROC_REF(add_minimap_marker)) + //Sight sight |= SEE_MOBS see_invisible = SEE_INVISIBLE_LIVING see_in_dark = 12 + if(client) set_lighting_alpha_from_prefs(client) else lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - if(caste && caste.spit_types && caste.spit_types.len) - ammo = GLOB.ammo_list[caste.spit_types[1]] - - create_reagents(100) - - GLOB.living_xeno_list += src - GLOB.xeno_mob_list += src - - if(caste && caste.adjust_size_x != 1) - var/matrix/M = matrix() - M.Scale(caste.adjust_size_x, caste.adjust_size_y) - apply_transform(M) - - if(caste) - behavior_delegate = new caste.behavior_delegate_type() - behavior_delegate.bound_xeno = src - behavior_delegate.add_to_xeno() - resin_build_order = caste.resin_build_order - else - CRASH("Xenomorph [src] has no caste datum! Tell the devs!") - - regenerate_icons() - toggle_xeno_mobhud() //This is a verb, but fuck it, it just werks - toggle_xeno_hostilehud() - - if(oldXeno) - a_intent_change(oldXeno.a_intent)//Keep intent - - if(oldXeno.layer == XENO_HIDING_LAYER) - //We are hiding, let's keep hiding if we can! - for(var/datum/action/xeno_action/onclick/xenohide/hide in actions) - if(istype(hide)) - layer = XENO_HIDING_LAYER - hide.button.icon_state = "template_active" - - for(var/obj/item/W in oldXeno.contents) //Drop stuff - oldXeno.drop_inv_item_on_ground(W) - - oldXeno.empty_gut() - - if(IS_XENO_LEADER(oldXeno)) - hive.replace_hive_leader(oldXeno, src) - // Only handle free slots if the xeno is not in tdome - if(!is_admin_level(z)) + if(hive && !is_admin_level(z)) var/selected_caste = GLOB.xeno_datum_list[caste_type]?.type hive.used_slots[selected_caste]++ + //Statistics + var/area/current_area = get_area(src) + if(current_area && current_area.statistic_exempt) + statistic_exempt = TRUE if(GLOB.round_statistics && !statistic_exempt) GLOB.round_statistics.track_new_participant(faction, 1) - generate_name() // This can happen if a xeno gets made before the game starts if (hive && hive.hive_ui) hive.hive_ui.update_all_xeno_data() - job = caste.caste_type // Used for tracking the caste playtime Decorate() RegisterSignal(src, COMSIG_MOB_SCREECH_ACT, PROC_REF(handle_screech_act)) @@ -551,22 +552,16 @@ if(caste.fire_immunity & FIRE_IMMUNITY_XENO_FRENZY) . |= COMPONENT_XENO_FRENZY +//Off-load this proc so it can be called freely +//Since Xenos change names like they change shoes, we need somewhere to hammer in all those legos +//We set their name first, then update their real_name AND their mind name //Off-load this proc so it can be called freely //Since Xenos change names like they change shoes, we need somewhere to hammer in all those legos //We set their name first, then update their real_name AND their mind name /mob/living/carbon/xenomorph/proc/generate_name() //We don't have a nicknumber yet, assign one to stick with us if(!nicknumber) - var/tempnumber = rand(1, 999) - var/list/numberlist = list() - for(var/mob/living/carbon/xenomorph/X in GLOB.xeno_mob_list) - numberlist += X.nicknumber - - while(tempnumber in numberlist) - tempnumber = rand(1, 999) - - nicknumber = tempnumber - + generate_and_set_nicknumber() // Even if we don't have the hive datum we usually still have the hive number var/datum/hive_status/in_hive = hive if(!in_hive) @@ -575,12 +570,10 @@ //Im putting this in here, because this proc gets called when a player inhabits a SSD xeno and it needs to go somewhere (sorry) hud_set_marks() - handle_name(in_hive) - -/mob/living/carbon/xenomorph/proc/handle_name(datum/hive_status/in_hive) var/name_prefix = in_hive.prefix var/name_client_prefix = "" var/name_client_postfix = "" + var/number_decorator = "" if(client) name_client_prefix = "[(client.xeno_prefix||client.xeno_postfix) ? client.xeno_prefix : "XX"]-" name_client_postfix = client.xeno_postfix ? ("-"+client.xeno_postfix) : "" @@ -591,9 +584,12 @@ var/age_display = show_age_prefix ? age_prefix : "" var/name_display = "" + // Rare easter egg + if(nicknumber == 666) + number_decorator = "Infernal " if(show_name_numbers) name_display = show_only_numbers ? " ([nicknumber])" : " ([name_client_prefix][nicknumber][name_client_postfix])" - name = "[name_prefix][age_display][caste.display_name || caste.caste_type][name_display]" + name = "[name_prefix][number_decorator][age_display][caste.display_name || caste.caste_type][name_display]" //Update linked data so they show up properly change_real_name(src, name) @@ -813,23 +809,17 @@ /mob/living/carbon/xenomorph/proc/set_hive_and_update(new_hivenumber = XENO_HIVE_NORMAL) var/datum/hive_status/new_hive = GLOB.hive_datum[new_hivenumber] if(!new_hive) - return + return FALSE - for(var/T in _status_traits) // They can't keep getting away with this!!! - REMOVE_TRAIT(src, T, TRAIT_SOURCE_HIVE) + for(var/trait in _status_traits) // They can't keep getting away with this!!! + REMOVE_TRAIT(src, trait, TRAIT_SOURCE_HIVE) new_hive.add_xeno(src) - for(var/T in new_hive.hive_inherant_traits) - ADD_TRAIT(src, T, TRAIT_SOURCE_HIVE) + for(var/trait in new_hive.hive_inherant_traits) + ADD_TRAIT(src, trait, TRAIT_SOURCE_HIVE) - if(istype(src, /mob/living/carbon/xenomorph/larva)) - var/mob/living/carbon/xenomorph/larva/L = src - L.update_icons() // larva renaming done differently - else - generate_name() - if(istype(src, /mob/living/carbon/xenomorph/queen)) - update_living_queens() + generate_name() lock_evolve = FALSE banished = FALSE @@ -840,6 +830,9 @@ // Update the hive status UI new_hive.hive_ui.update_all_xeno_data() + return TRUE + + //*********************************************************// //********************Mutator functions********************// //*********************************************************// @@ -1112,3 +1105,16 @@ . = ..() 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) + //If hive doesn't exist make it 0 + nicknumber = 0 + return + var/datum/hive_status/hive_status = hive + if(length(hive_status.available_nicknumbers)) + nicknumber = pick_n_take(hive_status.available_nicknumbers) + else + //If we somehow use all 999 numbers fallback on 0 + nicknumber = 0 diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm index 6f8ccd157481..35024d7304af 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm @@ -165,7 +165,6 @@ return REMOVE_TRAIT(H, TRAIT_IMMOBILIZED, trait_source) - H.update_canmove() if(ishuman(H)) var/mob/living/carbon/human/T = H diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm index 8b8e3f9c86a3..3276705ce9b7 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm @@ -37,18 +37,14 @@ to_chat(src, SPAN_XENOWARNING("You burrow yourself into the ground.")) invisibility = 101 anchored = TRUE - density = FALSE if(caste.fire_immunity == FIRE_IMMUNITY_NONE) RegisterSignal(src, COMSIG_LIVING_PREIGNITION, PROC_REF(fire_immune)) RegisterSignal(src, list( COMSIG_LIVING_FLAMER_CROSSED, COMSIG_LIVING_FLAMER_FLAMED, ), PROC_REF(flamer_crossed_immune)) - ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Burrow")) - ADD_TRAIT(src, TRAIT_ABILITY_BURROWED, TRAIT_SOURCE_ABILITY("Burrow")) - ADD_TRAIT(src, TRAIT_UNDENSE, TRAIT_SOURCE_ABILITY("Burrow")) + add_traits(list(TRAIT_ABILITY_BURROWED, TRAIT_UNDENSE, TRAIT_IMMOBILIZED), TRAIT_SOURCE_ABILITY("Burrow")) playsound(src.loc, 'sound/effects/burrowing_b.ogg', 25) - update_canmove() update_icons() addtimer(CALLBACK(src, PROC_REF(do_burrow_cooldown)), (caste ? caste.burrow_cooldown : 5 SECONDS)) burrow_timer = world.time + 90 // How long we can be burrowed @@ -74,19 +70,15 @@ COMSIG_LIVING_FLAMER_CROSSED, COMSIG_LIVING_FLAMER_FLAMED, )) - REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Burrow")) - REMOVE_TRAIT(src, TRAIT_ABILITY_BURROWED, TRAIT_SOURCE_ABILITY("Burrow")) - REMOVE_TRAIT(src, TRAIT_UNDENSE, TRAIT_SOURCE_ABILITY("Burrow")) + remove_traits(list(TRAIT_ABILITY_BURROWED, TRAIT_UNDENSE, TRAIT_IMMOBILIZED), TRAIT_SOURCE_ABILITY("Burrow")) invisibility = FALSE anchored = FALSE - density = TRUE playsound(loc, 'sound/effects/burrowoff.ogg', 25) for(var/mob/living/carbon/mob in loc) if(!can_not_harm(mob)) mob.apply_effect(2, WEAKEN) addtimer(CALLBACK(src, PROC_REF(do_burrow_cooldown)), (caste ? caste.burrow_cooldown : 5 SECONDS)) - update_canmove() update_icons() /mob/living/carbon/xenomorph/proc/do_burrow_cooldown() @@ -185,6 +177,7 @@ return var/new_name = strip_html(input("Change the description of the tunnel:", "Tunnel Description") as text|null) + new_name = replace_non_alphanumeric_plus(new_name) if(new_name) new_name = "[new_name] ([get_area_name(T)])" log_admin("[key_name(src)] has renamed the tunnel \"[T.tunnel_desc]\" as \"[new_name]\".") diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm index 6405428de7cb..63051a94efa9 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_abilities.dm @@ -120,6 +120,10 @@ var/momentum = 0 +/datum/action/xeno_action/onclick/charger_charge/proc/handle_position_change(mob/living/carbon/xenomorph/xeno, body_position) + SIGNAL_HANDLER + if(body_position == LYING_DOWN) + handle_movement(xeno) /datum/action/xeno_action/onclick/charger_charge/proc/handle_movement(mob/living/carbon/xenomorph/Xeno, atom/oldloc, dir, forced) SIGNAL_HANDLER @@ -178,7 +182,7 @@ playsound(Xeno, 'sound/effects/alien_footstep_charge1.ogg', 50) for(var/mob/living/carbon/human/Mob in Xeno.loc) - if(Mob.lying && Mob.stat != DEAD) + if(Mob.body_position == LYING_DOWN && Mob.stat != DEAD) Xeno.visible_message(SPAN_DANGER("[Xeno] runs [Mob] over!"), SPAN_DANGER("You run [Mob] over!") ) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm index ce4a631e281f..34a9a4833fec 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/crusher/crusher_powers.dm @@ -252,7 +252,7 @@ to_chat(Xeno, SPAN_XENONOTICE("You will [will_charge] charge when moving.")) if(activated) RegisterSignal(Xeno, COMSIG_MOVABLE_MOVED, PROC_REF(handle_movement)) - RegisterSignal(Xeno, COMSIG_MOB_KNOCKED_DOWN, PROC_REF(handle_movement)) + RegisterSignal(Xeno, COMSIG_LIVING_SET_BODY_POSITION, PROC_REF(handle_position_change)) RegisterSignal(Xeno, COMSIG_ATOM_DIR_CHANGE, PROC_REF(handle_dir_change)) RegisterSignal(Xeno, COMSIG_XENO_RECALCULATE_SPEED, PROC_REF(update_speed)) RegisterSignal(Xeno, COMSIG_XENO_STOP_MOMENTUM, PROC_REF(stop_momentum)) @@ -264,7 +264,7 @@ stop_momentum() UnregisterSignal(Xeno, list( COMSIG_MOVABLE_MOVED, - COMSIG_MOB_KNOCKED_DOWN, + COMSIG_LIVING_SET_BODY_POSITION, COMSIG_ATOM_DIR_CHANGE, COMSIG_XENO_RECALCULATE_SPEED, COMSIG_MOVABLE_ENTERED_RIVER, diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm index 249271c5f050..0709f2b17717 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm @@ -220,7 +220,6 @@ ADD_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Fortify")) X.anchored = TRUE X.small_explosives_stun = FALSE - X.update_canmove() RegisterSignal(owner, COMSIG_XENO_PRE_CALCULATE_ARMOURED_DAMAGE_PROJECTILE, PROC_REF(check_directional_armor)) X.mob_size = MOB_SIZE_IMMOBILE //knockback immune X.mob_flags &= ~SQUEEZE_UNDER_VEHICLES @@ -242,7 +241,6 @@ UnregisterSignal(owner, COMSIG_XENO_PRE_CALCULATE_ARMOURED_DAMAGE_PROJECTILE) X.mob_size = MOB_SIZE_XENO //no longer knockback immune X.mob_flags |= SQUEEZE_UNDER_VEHICLES - X.update_canmove() X.update_icons() X.fortify = FALSE 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 5e3ab3b0afd9..00a7ceaba97e 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm @@ -252,7 +252,6 @@ return var/mob/living/carbon/xenomorph/X = owner REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) - X.update_canmove() deltimer(freeze_timer_id) freeze_timer_id = TIMER_ID_NULL to_chat(X, SPAN_XENONOTICE("Slashing frenzies you! You feel free to move immediately!")) @@ -285,7 +284,7 @@ /datum/action/xeno_action/onclick/toggle_long_range/can_use_action() var/mob/living/carbon/xenomorph/xeno = owner - if(xeno && !xeno.is_mob_incapacitated() && !xeno.lying && !xeno.buckled) + if(xeno && !xeno.is_mob_incapacitated() && !xeno.buckled) return TRUE /datum/action/xeno_action/onclick/toggle_long_range/give_to(mob/living/living_mob) @@ -542,6 +541,14 @@ hide_from(owner) +/datum/action/xeno_action/onclick/tacmap/can_use_action() + if(!owner) + return FALSE + var/mob/living/carbon/xenomorph/xeno = owner + if(xeno.is_mob_incapacitated() || xeno.dazed) + return FALSE + return TRUE + /datum/action/xeno_action/onclick/tacmap/use_ability(atom/target) var/mob/living/carbon/xenomorph/xeno = owner xeno.xeno_tacmap() 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 f362be4358e3..74a46a30e9ba 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm @@ -413,7 +413,6 @@ if (!windup_interruptable) ADD_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) X.anchored = TRUE - X.update_canmove() pre_windup_effects() if (!do_after(X, windup_duration, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) @@ -421,14 +420,12 @@ if (!windup_interruptable) REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) X.anchored = FALSE - X.update_canmove() post_windup_effects(interrupted = TRUE) return if (!windup_interruptable) REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) X.anchored = FALSE - X.update_canmove() post_windup_effects() X.visible_message(SPAN_XENOWARNING("\The [X] [ability_name][findtext(ability_name, "e", -1) || findtext(ability_name, "p", -1) ? "s" : "es"] at [A]!"), SPAN_XENOWARNING("You [ability_name] at [A]!")) @@ -573,6 +570,13 @@ to_chat(X, SPAN_XENOWARNING("You can only shape on weeds. Find some resin before you start building!")) return FALSE + // This snowflake check exists because stairs specifically are indestructable, tile-covering, and cannot be moved, which allows resin holes to be + // planted under them without any possible counterplay. In the future if resin holes stop being able to be hidden under objects, remove this check. + var/obj/structure/stairs/staircase = locate() in src + if(staircase) + to_chat(X, SPAN_XENOWARNING("You cannot make a hole beneath a staircase!")) + return FALSE + if(alien_weeds.linked_hive.hivenumber != X.hivenumber) to_chat(X, SPAN_XENOWARNING("These weeds don't belong to your hive!")) return FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/hivelord/hivelord_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/hivelord/hivelord_abilities.dm index 8c39228e3567..02e7fd814453 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/hivelord/hivelord_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/hivelord/hivelord_abilities.dm @@ -18,7 +18,7 @@ /datum/action/xeno_action/active_toggle/toggle_speed/can_use_action() var/mob/living/carbon/xenomorph/hivelord/xeno = owner - if(xeno && !xeno.is_mob_incapacitated() && !xeno.lying && !xeno.buckled) + if(xeno && !xeno.is_mob_incapacitated() && xeno.body_position == STANDING_UP && !xeno.buckled) // do we rly need standing up? return TRUE /datum/action/xeno_action/active_toggle/toggle_speed/give_to(mob/living/living_mob) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm index 13734a5b9cf4..0c2b226cb268 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm @@ -268,7 +268,7 @@ if(xeno.can_not_harm(target_carbon)) return - if(!(target_carbon.knocked_out || target_carbon.stat == UNCONSCIOUS)) //called knocked out because for some reason .stat seems to have a delay . + if(!(HAS_TRAIT(target_carbon, TRAIT_KNOCKEDOUT) || target_carbon.stat == UNCONSCIOUS)) //called knocked out because for some reason .stat seems to have a delay . to_chat(xeno, SPAN_XENOHIGHDANGER("You can only headbite an unconscious, adjacent target!")) return diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm index 8fe8121a6d48..85a9ee8f054b 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm @@ -174,9 +174,7 @@ var/root_duration = buffed ? root_duration_buffed : root_duration_unbuffed vanguard_user.visible_message(SPAN_XENODANGER("[vanguard_user] slams [target_atom] into the ground!"), SPAN_XENOHIGHDANGER("You slam [target_atom] into the ground!")) - ADD_TRAIT(target_carbon, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Cleave")) - target_carbon.update_canmove() if (ishuman(target_carbon)) var/mob/living/carbon/human/Hu = target_carbon @@ -293,7 +291,6 @@ var/throw_target_turf = get_step(xeno.loc, facing) ADD_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) - xeno.update_canmove() if(!do_after(xeno, windup, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, numticks = 1)) to_chat(xeno, SPAN_XENOWARNING("You relax your tail.")) apply_cooldown() @@ -303,7 +300,6 @@ qdel(xenotelegraph) REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) - xeno.update_canmove() return @@ -311,7 +307,6 @@ return REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) - xeno.update_canmove() playsound(get_turf(xeno), 'sound/effects/bang.ogg', 25, 0) xeno.visible_message(SPAN_XENODANGER("\The [xeno] suddenly uncoils its tail, firing it towards [atom]!"), SPAN_XENODANGER("You uncoil your tail, sending it out towards \the [atom]!")) @@ -339,13 +334,11 @@ new /datum/effects/xeno_slow(target, xeno, , ,25) target.apply_effect(1, SLOW) else if (LAZYLEN(targets) == 2) - ADD_TRAIT(target, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) - target.update_canmove() if (ishuman(target)) - var/mob/living/carbon/human/human = target - human.update_xeno_hostile_hud() - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), target), get_xeno_stun_duration(target, 25)) + var/mob/living/carbon/human/target_human = target + target_human.update_xeno_hostile_hud() + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), target, TRAIT_SOURCE_ABILITY("Abduct")), get_xeno_stun_duration(target, 25)) to_chat(target, SPAN_XENOHIGHDANGER("[xeno] has pinned you to the ground! You cannot move!")) target.set_effect(2, DAZE) @@ -409,10 +402,9 @@ oppressor_user.animation_attack_on(target_carbon) oppressor_user.flick_attack_overlay(target_carbon, "punch") - if (HAS_TRAIT(target_carbon, TRAIT_IMMOBILIZED) || target_carbon.slowed || target_carbon.knocked_down) + if (!(target_carbon.mobility_flags & MOBILITY_MOVE) || !(target_carbon.mobility_flags & MOBILITY_STAND) || target_carbon.slowed) target_carbon.apply_damage(get_xeno_damage_slash(target_carbon, damage), BRUTE, target_limb? target_limb.name : "chest") ADD_TRAIT(target_carbon, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Oppressor Punch")) - target_carbon.update_canmove() if (ishuman(target_carbon)) var/mob/living/carbon/human/Hu = target_carbon @@ -1013,7 +1005,6 @@ throw_target_turf = behind_turf ADD_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Praetorian Retrieve")) - X.update_canmove() if(windup) if(!do_after(X, windup, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, numticks = 1)) to_chat(X, SPAN_XENOWARNING("You cancel your retrieve.")) @@ -1024,12 +1015,10 @@ qdel(XT) REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Praetorian Retrieve")) - X.update_canmove() return REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Praetorian Retrieve")) - X.update_canmove() playsound(get_turf(X), 'sound/effects/bang.ogg', 25, 0) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm index a26cc922c528..3c475743c0bf 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm @@ -79,7 +79,6 @@ for(var/mob/living/carbon/carbon in oview(round(behavior.kills * 0.5 + 2), xeno)) if(!xeno.can_not_harm(carbon) && carbon.stat != DEAD) ADD_TRAIT(carbon, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Smash")) - carbon.update_canmove() if (ishuman(carbon)) var/mob/living/carbon/human/human = carbon @@ -126,7 +125,6 @@ return ADD_TRAIT(carbon, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Devastate")) - carbon.update_canmove() if (ishuman(carbon)) var/mob/living/carbon/human/human = carbon @@ -136,7 +134,6 @@ ADD_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Devastate")) xeno.anchored = TRUE - xeno.update_canmove() if (do_after(xeno, activation_delay, INTERRUPT_ALL | BEHAVIOR_IMMOBILE, BUSY_ICON_HOSTILE)) xeno.visible_message(SPAN_XENOHIGHDANGER("[xeno] rips open the guts of [carbon]!"), SPAN_XENOHIGHDANGER("You rip open the guts of [carbon]!")) @@ -154,9 +151,6 @@ REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Devastate")) xeno.anchored = FALSE unroot_human(carbon, TRAIT_SOURCE_ABILITY("Devastate")) - xeno.update_canmove() - - unroot_human(carbon) xeno.visible_message(SPAN_XENODANGER("[xeno] rapidly slices into [carbon]!")) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm index 34e84866304b..22f119faf234 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm @@ -388,7 +388,6 @@ ADD_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Eviscerate")) xeno.anchored = TRUE - xeno.update_canmove() if (do_after(xeno, (activation_delay - windup_reduction), INTERRUPT_ALL | BEHAVIOR_IMMOBILE, BUSY_ICON_HOSTILE)) xeno.emote("roar") @@ -433,7 +432,6 @@ REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Eviscerate")) xeno.anchored = FALSE - xeno.update_canmove() return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/xeno_action.dm b/code/modules/mob/living/carbon/xenomorph/abilities/xeno_action.dm index e0d1db45c9a7..11b8f0db0075 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/xeno_action.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/xeno_action.dm @@ -71,7 +71,7 @@ if(!owner) return FALSE var/mob/living/carbon/xenomorph/X = owner - if(X && !X.is_mob_incapacitated() && !X.dazed && !X.lying && !X.buckled && X.plasma_stored >= plasma_cost) + if(X && !X.is_mob_incapacitated() && !X.dazed && X.body_position == STANDING_UP && !X.buckled && X.plasma_stored >= plasma_cost) return TRUE /datum/action/xeno_action/give_to(mob/living/L) diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm index ba8099cea404..0ad84fc49e42 100644 --- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm +++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm @@ -209,7 +209,7 @@ SPAN_DANGER("You tackle down [src]!"), null, 5, CHAT_TYPE_XENO_COMBAT) else playsound(loc, 'sound/weapons/alien_claw_swipe.ogg', 25, 1) - if (knocked_down) + if (HAS_TRAIT(src, TRAIT_FLOORED)) M.visible_message(SPAN_DANGER("[M] tries to tackle [src], but they are already down!"), \ SPAN_DANGER("You try to tackle [src], but they are already down!"), null, 5, CHAT_TYPE_XENO_COMBAT) else @@ -555,7 +555,7 @@ if(M.action_busy) return XENO_NO_DELAY_ACTION - if(M.lying) + if(M.is_mob_incapacitated() || M.body_position != STANDING_UP) return XENO_NO_DELAY_ACTION var/delay @@ -574,7 +574,7 @@ if(do_after(M, delay, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) if(M.loc != cur_loc) return XENO_NO_DELAY_ACTION //Make sure we're still there - if(M.lying) + if(M.is_mob_incapacitated() || M.body_position != STANDING_UP) return XENO_NO_DELAY_ACTION if(locked) to_chat(M, SPAN_WARNING("[src] is bolted down tight.")) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm b/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm index e7118164cf07..ee882bc14fdf 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm @@ -84,13 +84,6 @@ . = ..() sight |= SEE_TURFS -/mob/living/carbon/xenomorph/burrower/update_canmove() - . = ..() - if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) - density = FALSE - canmove = FALSE - return canmove - /mob/living/carbon/xenomorph/burrower/ex_act(severity) if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm b/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm index c13555cba12c..07f161f4c6f7 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm @@ -117,8 +117,8 @@ for(var/i in hugger_image_index) if(stat == DEAD) hugger_overlays_icon.overlays += icon(icon, "clinger_[i] Knocked Down") - else if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) hugger_overlays_icon.overlays += icon(icon, "clinger_[i] Sleeping") else hugger_overlays_icon.overlays +=icon(icon, "clinger_[i] Knocked Down") @@ -162,8 +162,8 @@ i = 1 if(stat != DEAD) - if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) eggsac_overlays_icon.overlays += icon(icon, "eggsac_[i] Sleeping") else eggsac_overlays_icon.overlays +=icon(icon, "eggsac_[i] Knocked Down") diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm b/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm index c9ceaaa85cfb..3e01cc2af139 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm @@ -70,7 +70,7 @@ if(stat == DEAD) return ..() - if(!lying && !(mutation_type == FACEHUGGER_WATCHER) && !(locate(/obj/effect/alien/weeds) in get_turf(src))) + if(body_position == STANDING_UP && !(mutation_type == FACEHUGGER_WATCHER) && !(locate(/obj/effect/alien/weeds) in get_turf(src))) adjustBruteLoss(1) return ..() @@ -86,8 +86,8 @@ if(stat == DEAD) icon_state = "[mutation_type] [caste.caste_type] Dead" - else if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) icon_state = "[mutation_type] [caste.caste_type] Sleeping" else icon_state = "[mutation_type] [caste.caste_type] Knocked Down" @@ -110,8 +110,8 @@ if(!caste) return FALSE - if(lying) //No attacks while laying down - return FALSE + if(body_position == LYING_DOWN) //No attacks while laying down + return FALSE // Yoooo replace this by a mobility_flag for attacks or something if(istype(A, /obj/effect/alien/resin/special/eggmorph)) var/obj/effect/alien/resin/special/eggmorph/morpher = A @@ -130,7 +130,7 @@ if(ishuman(A)) var/mob/living/carbon/human/human = A - if(!human.lying) + if(human.body_position != LYING_DOWN) to_chat(src, SPAN_WARNING("You can't reach \the [human], they need to be lying down.")) return if(!can_hug(human, hivenumber)) @@ -139,7 +139,7 @@ visible_message(SPAN_WARNING("\The [src] starts climbing onto \the [human]'s face..."), SPAN_XENONOTICE("You start climbing onto \the [human]'s face...")) if(!do_after(src, FACEHUGGER_WINDUP_DURATION, INTERRUPT_ALL, BUSY_ICON_HOSTILE, human, INTERRUPT_MOVED, BUSY_ICON_HOSTILE)) return - if(!human.lying) + if(human.body_position != LYING_DOWN) to_chat(src, SPAN_WARNING("You can't reach \the [human], they need to be lying down.")) return if(!can_hug(human, hivenumber)) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Larva.dm b/code/modules/mob/living/carbon/xenomorph/castes/Larva.dm index 82d80752ec54..6d5c6699b929 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Larva.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Larva.dm @@ -50,15 +50,22 @@ var/burrowable = TRUE //Can it be safely burrowed if it has no player? var/state_override + var/is_bloody = TRUE //We're still "bloody" icon_xeno = 'icons/mob/xenos/larva.dmi' icon_xenonid = 'icons/mob/xenonids/larva.dmi' -/mob/living/carbon/xenomorph/larva/initialize_pass_flags(datum/pass_flags_container/PF) +/mob/living/carbon/xenomorph/larva/Life() + if(is_bloody && (evolution_stored >= evolution_threshold / 2)) //We're no longer bloody so update our name... + generate_name() + is_bloody = FALSE + return ..() + +/mob/living/carbon/xenomorph/larva/initialize_pass_flags(datum/pass_flags_container/pass_flags) ..() - if (PF) - PF.flags_pass = PASS_MOB_THRU|PASS_FLAGS_CRAWLER - PF.flags_can_pass_all = PASS_ALL^PASS_OVER_THROW_ITEM + if (pass_flags) + pass_flags.flags_pass = PASS_MOB_THRU|PASS_FLAGS_CRAWLER + pass_flags.flags_can_pass_all = PASS_ALL^PASS_OVER_THROW_ITEM /mob/living/carbon/xenomorph/larva/corrupted hivenumber = XENO_HIVE_CORRUPTED @@ -101,37 +108,18 @@ //Larva code is just a mess, so let's get it over with /mob/living/carbon/xenomorph/larva/update_icons() - var/progress = "" //Naming convention, three different names var/state = "" //Icon convention, two different sprite sets - var/name_prefix = "" - - if(hive) - name_prefix = hive.prefix - color = hive.color - - if(evolution_stored >= evolution_threshold) - progress = "Mature " - else if(evolution_stored < evolution_threshold / 2) //We're still bloody - progress = "Bloody " + if(evolution_stored < evolution_threshold / 2) //We're still bloody state = "Bloody " - else - progress = "" - - name = "[name_prefix][progress]Larva ([nicknumber])" - - if(istype(src,/mob/living/carbon/xenomorph/larva/predalien)) state = "Predalien " //Sort of a hack. - - //Update linked data so they show up properly - change_real_name(src, name) if(stat == DEAD) icon_state = "[state_override || state]Larva Dead" else if(handcuffed || legcuffed) icon_state = "[state_override || state]Larva Cuff" - else if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) icon_state = "[state_override || state]Larva Sleeping" else icon_state = "[state_override || state]Larva Stunned" @@ -141,38 +129,64 @@ /mob/living/carbon/xenomorph/larva/alter_ghost(mob/dead/observer/ghost) ghost.icon_state = "[caste.caste_type]" -/mob/living/carbon/xenomorph/larva/handle_name() - return - /mob/living/carbon/xenomorph/larva/start_pulling(atom/movable/AM) return /mob/living/carbon/xenomorph/larva/pull_response(mob/puller) return TRUE -/mob/living/carbon/xenomorph/larva/UnarmedAttack(atom/A, proximity, click_parameters, tile_attack, ignores_resin = FALSE) +/mob/living/carbon/xenomorph/larva/UnarmedAttack(atom/atom, proximity, click_parameters, tile_attack, ignores_resin = FALSE) a_intent = INTENT_HELP //Forces help intent for all interactions. if(!caste) return FALSE - if(lying) //No attacks while laying down + if(body_position) //No attacks while laying down return FALSE - A.attack_larva(src) + atom.attack_larva(src) xeno_attack_delay(src) //Adds some lag to the 'attack' -/proc/spawn_hivenumber_larva(atom/A, hivenumber) - if(!GLOB.hive_datum[hivenumber] || isnull(A)) +/proc/spawn_hivenumber_larva(atom/atom, hivenumber) + if(!GLOB.hive_datum[hivenumber] || isnull(atom)) return - var/mob/living/carbon/xenomorph/larva/L = new /mob/living/carbon/xenomorph/larva(A) + var/mob/living/carbon/xenomorph/larva/larva = new /mob/living/carbon/xenomorph/larva(atom) - L.set_hive_and_update(hivenumber) + larva.set_hive_and_update(hivenumber) - return L + return larva /mob/living/carbon/xenomorph/larva/emote(act, m_type, message, intentional, force_silence) playsound(loc, "alien_roar_larva", 15) /mob/living/carbon/xenomorph/larva/is_xeno_grabbable() return TRUE + +/* +Larva name generation, set nicknumber = (number between 1 & 999) which isn't taken by any other xenos in GLOB.xeno_mob_list if doesn't already exist. +Also handles the "Mature / Bloody naming convention. Call this to update the name." +*/ +/mob/living/carbon/xenomorph/larva/generate_name() + if(!nicknumber) + generate_and_set_nicknumber() + + var/progress = "" //Naming convention, three different names + var/name_prefix = "" // Prefix for hive + + if(hive) + name_prefix = hive.prefix + color = hive.color + + if(evolution_stored >= evolution_threshold) + progress = "Mature " + else if(evolution_stored < evolution_threshold / 2) //We're still bloody + progress = "Bloody " + + name = "[name_prefix][progress]Larva ([nicknumber])" + + //Update linked data so they show up properly + change_real_name(src, name) + //Update the hive status UI + if(hive) + var/datum/hive_status/hive_status = hive + hive_status.hive_ui.update_xeno_info() diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm b/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm index 1c7ba8503d4d..a34913b2ff5c 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm @@ -102,7 +102,7 @@ if (!isxeno_human(target_carbon)) return - if (target_carbon.knocked_down) + if (HAS_TRAIT(target_carbon, TRAIT_FLOORED)) new /datum/effects/xeno_slow(target_carbon, bound_xeno, null, null, get_xeno_stun_duration(target_carbon, slash_slow_duration)) return diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm index b83b33e2eee5..63802d5023c2 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm @@ -389,6 +389,7 @@ /mob/living/carbon/xenomorph/queen/Initialize() . = ..() + SStracking.set_leader("hive_[hivenumber]", src) if(!is_admin_level(z))//so admins can safely spawn Queens in Thunderdome for tests. xeno_message(SPAN_XENOANNOUNCE("A new Queen has risen to lead the Hive! Rejoice!"),3,hivenumber) notify_ghosts(header = "New Queen", message = "A new Queen has risen.", source = src, action = NOTIFY_ORBIT) @@ -409,8 +410,10 @@ AddComponent(/datum/component/footstep, 2 , 35, 11, 4, "alien_footstep_large") -/mob/living/carbon/xenomorph/queen/handle_name(datum/hive_status/in_hive) - var/name_prefix = in_hive.prefix +/mob/living/carbon/xenomorph/queen/generate_name() + if(!nicknumber) + generate_and_set_nicknumber() + var/name_prefix = hive.prefix if(queen_aged) age_xeno() switch(age) @@ -439,11 +442,16 @@ name_client_prefix = "[(client.xeno_prefix||client.xeno_postfix) ? client.xeno_prefix : "XX"]-" name_client_postfix = client.xeno_postfix ? ("-"+client.xeno_postfix) : "" full_designation = "[name_client_prefix][nicknumber][name_client_postfix]" - color = in_hive.color + color = hive.color //Update linked data so they show up properly change_real_name(src, name) +/mob/living/carbon/xenomorph/queen/set_hive_and_update(new_hivenumber) + if(!..()) + return FALSE + update_living_queens() + /mob/living/carbon/xenomorph/queen/proc/make_combat_effective() queen_aged = TRUE @@ -791,6 +799,9 @@ if(ovipositor) return //sanity check ovipositor = TRUE + ADD_TRAIT(src, TRAIT_IMMOBILIZED, OVIPOSITOR_TRAIT) + set_body_position(STANDING_UP) + set_resting(FALSE) set_resin_build_order(GLOB.resin_build_order_ovipositor) // This needs to occur before we update the abilities so we can update the choose resin icon for(var/datum/action/xeno_action/action in actions) @@ -843,7 +854,6 @@ egg_planting_range = 3 anchored = TRUE resting = FALSE - update_canmove() update_icons() bubble_icon_x_offset = 32 bubble_icon_y_offset = 32 @@ -871,6 +881,7 @@ if(!ovipositor) return ovipositor = FALSE + REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, OVIPOSITOR_TRAIT) update_icons() bubble_icon_x_offset = initial(bubble_icon_x_offset) bubble_icon_y_offset = initial(bubble_icon_y_offset) @@ -899,7 +910,6 @@ ovi_ability.apply_cooldown() break anchored = FALSE - update_canmove() for(var/mob/living/carbon/xenomorph/L in hive.xeno_leader_list) L.handle_xeno_leader_pheromones() @@ -909,14 +919,6 @@ SEND_SIGNAL(src, COMSIG_QUEEN_DISMOUNT_OVIPOSITOR, instant_dismount) -/mob/living/carbon/xenomorph/queen/update_canmove() - . = ..() - if(ovipositor) - lying = FALSE - density = TRUE - canmove = FALSE - return canmove - /mob/living/carbon/xenomorph/queen/handle_special_state() if(ovipositor) return TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm index 51ceee153368..b6ceb2043458 100644 --- a/code/modules/mob/living/carbon/xenomorph/damage_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/damage_procs.dm @@ -36,7 +36,7 @@ /mob/living/carbon/xenomorph/ex_act(severity, direction, datum/cause_data/cause_data, pierce=0) - if(lying) + if(body_position == LYING_DOWN) severity *= EXPLOSION_PRONE_MULTIPLIER if(severity >= 30) diff --git a/code/modules/mob/living/carbon/xenomorph/egg_item.dm b/code/modules/mob/living/carbon/xenomorph/egg_item.dm index 77c5548d9f9f..b9304b33b15a 100644 --- a/code/modules/mob/living/carbon/xenomorph/egg_item.dm +++ b/code/modules/mob/living/carbon/xenomorph/egg_item.dm @@ -98,7 +98,7 @@ to_chat(user, SPAN_XENOWARNING("[src] must be planted on [lowertext(hive.prefix)]weeds.")) return - if(!hive_weeds) + if(!hive_weeds && user.mutation_type != CARRIER_EGGSAC) to_chat(user, SPAN_XENOWARNING("[src] can only be planted on [lowertext(hive.prefix)]hive weeds.")) return @@ -117,9 +117,16 @@ return for(var/obj/effect/alien/weeds/weed in T) - if(weed.weed_strength >= WEED_LEVEL_HIVE) + if(weed.weed_strength >= WEED_LEVEL_HIVE || user.mutation_type == CARRIER_EGGSAC) user.use_plasma(30) - var/obj/effect/alien/egg/newegg = new /obj/effect/alien/egg(T, hivenumber) + var/obj/effect/alien/egg/newegg + if(weed.weed_strength >= WEED_LEVEL_HIVE) + newegg = new /obj/effect/alien/egg(T, hivenumber) + else if(weed.weed_strength >= WEED_LEVEL_STANDARD) + newegg = new /obj/effect/alien/egg/carrier_egg(T,hivenumber, user) + else + to_chat(user, SPAN_XENOWARNING("[src] can't be planted on these weeds.")) + return newegg.flags_embryo = flags_embryo diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index 09a4f5014bc4..f794c051dbff 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -10,7 +10,8 @@ ..() - if(is_zoomed && (stat || lying)) + // replace this by signals or trait signals + if(is_zoomed && (stat || body_position == LYING_DOWN)) zoom_out() if(stat != DEAD) //Stop if dead. Performance boost @@ -23,7 +24,6 @@ handle_regular_status_updates() handle_stomach_contents() handle_overwatch() // For new Xeno hivewide overwatch - Fourk, 6/24/19 - update_canmove() update_icons() handle_luminosity() handle_blood() @@ -187,9 +187,8 @@ ear_damage = 0 SetEyeBlind(0) - if(knocked_out) //If they're down, make sure they are actually down. + if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) //If they're down, make sure they are actually down. blinded = TRUE - set_stat(UNCONSCIOUS) if(regular_update && halloss > 0) apply_damage(-3, HALLOSS) else if(sleeping) @@ -342,7 +341,7 @@ Make sure their actual health updates immediately.*/ if(recovery_aura) plasma_stored += round(plasma_gain * plasma_max / 100 * recovery_aura/4) //Divided by four because it gets massive fast. 1 is equivalent to weed regen! Only the strongest pheromones should bypass weeds if(health < maxHealth && !hardcore && is_hive_living(hive) && last_hit_time + caste.heal_delay_time <= world.time) - if(lying || resting) + if(body_position == LYING_DOWN || resting) if(health < 0) //Unconscious heal_wounds(caste.heal_knocked_out * regeneration_multiplier, recoveryActual) //Healing is much slower. Warding pheromones make up for the rest if you're curious else @@ -536,8 +535,6 @@ Make sure their actual health updates immediately.*/ if(layer != initial(layer)) //Unhide layer = initial(layer) recalculate_move_delay = TRUE - if(!lying) - update_canmove() /mob/living/carbon/xenomorph/proc/handle_luminosity() var/new_luminosity = 0 @@ -583,16 +580,14 @@ Make sure their actual health updates immediately.*/ return superslowed /mob/living/carbon/xenomorph/handle_knocked_down() - if(knocked_down) + if(HAS_TRAIT(src, TRAIT_FLOORED)) adjust_effect(life_knockdown_reduction, WEAKEN, EFFECT_FLAG_LIFE) knocked_down_callback_check() - return knocked_down /mob/living/carbon/xenomorph/handle_knocked_out() - if(knocked_out) + if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) adjust_effect(life_knockout_reduction, PARALYZE, EFFECT_FLAG_LIFE) knocked_out_callback_check() - return knocked_out //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) diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm index 524571fc0dfd..3b321ca259c9 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm @@ -1,6 +1,6 @@ /datum/xeno_mutator/eggsac name = "STRAIN: Carrier - Eggsac" - description = "In exchange for your ability to store huggers and place traps, you gain larger plasma stores, strong pheromones, and the ability to lay eggs by using your plasma stores. In addition, you can now carry twelve eggs at once and can place eggs one pace further than normal" + description = "In exchange for your ability to store huggers and place traps, you gain larger plasma stores, strong pheromones, and the ability to lay eggs by using your plasma stores. In addition, you can now carry twelve eggs at once and can place eggs one pace further than normal. \n\nYou can also place a small number of fragile eggs on normal weeds. These eggs have a lifetime of five minutes while you remain within 14 tiles. Or one minute if you leave this range." flavor_description = "An egg is always an adventure; the next one may be different." cost = MUTATOR_COST_EXPENSIVE individual_only = TRUE @@ -15,6 +15,7 @@ /datum/action/xeno_action/active_toggle/generate_egg, /datum/action/xeno_action/activable/retrieve_egg, // readding it so it gets at the end of the ability list ) + behavior_delegate_type = /datum/behavior_delegate/carrier_eggsac keystone = TRUE /datum/xeno_mutator/eggsac/apply_mutator(datum/mutator_set/individual_mutators/mutator_set) @@ -40,8 +41,58 @@ carrier.update_eggsac_overlays() carrier.eggs_max = 12 carrier.egg_planting_range = 2 + apply_behavior_holder(carrier) return TRUE +#define EGGSAC_OFF_WEED_EGGCAP 4 +#define EGGSAC_EGG_SUSTAIN_DISTANCE 14 + +/datum/behavior_delegate/carrier_eggsac + name = "Eggsac Carrier Behavior Delegate" + ///List of /obj/effect/alien/egg/carrier_egg sustained by the carrier on normal weeds + var/list/eggs_sustained = list() + ///Total number of eggs which can be sustained defined as EGGSAC_OFF_WEED_EGGCAP + var/egg_sustain_cap = EGGSAC_OFF_WEED_EGGCAP + ///Distance from the egg that the carrier can go before it stops sustaining it + var/sustain_distance = EGGSAC_EGG_SUSTAIN_DISTANCE + +/datum/behavior_delegate/carrier_eggsac/append_to_stat() + . = list() + . += "Eggs sustained: [length(eggs_sustained)] / [egg_sustain_cap]" + +/datum/behavior_delegate/carrier_eggsac/on_life() + if(length(eggs_sustained) > egg_sustain_cap) + var/obj/effect/alien/egg/carrier_egg/my_egg = eggs_sustained[1] + if(my_egg) + remove_egg_owner(my_egg) + my_egg.start_unstoppable_decay() + to_chat(bound_xeno, SPAN_XENOWARNING("You can only sustain [egg_sustain_cap] eggs off hive weeds! Your oldest placed egg is decaying rapidly.")) + + for(var/obj/effect/alien/egg/carrier_egg/my_egg as anything in eggs_sustained) + //Get the distance from us to our sustained egg + if(get_dist(bound_xeno, my_egg) <= sustain_distance) + my_egg.last_refreshed = world.time + else + my_egg.check_decay() + +///Remove owner of egg +/datum/behavior_delegate/carrier_eggsac/proc/remove_egg_owner(obj/effect/alien/egg/carrier_egg/egg) + if(!egg.owner || egg.owner != bound_xeno) + return + eggs_sustained -= egg + egg.owner = null + +/datum/behavior_delegate/carrier_eggsac/handle_death(mob/M) + for(var/obj/effect/alien/egg/carrier_egg/my_egg as anything in eggs_sustained) + remove_egg_owner(my_egg) + my_egg.start_unstoppable_decay() + +///Remove all references to src in eggs_sustained +/datum/behavior_delegate/carrier_eggsac/Destroy() + for(var/obj/effect/alien/egg/carrier_egg/my_egg as anything in eggs_sustained) + my_egg.owner = null + return ..() + /datum/action/xeno_action/active_toggle/generate_egg name = "Generate Eggs (50)" action_icon_state = "lay_egg" @@ -77,3 +128,6 @@ xeno.eggs_cur++ to_chat(xeno, SPAN_XENONOTICE("You generate a egg. Now sheltering: [xeno.eggs_cur] / [xeno.eggs_max].")) xeno.update_icons() + +#undef EGGSAC_OFF_WEED_EGGCAP +#undef EGGSAC_EGG_SUSTAIN_DISTANCE diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/crusher/charger.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/crusher/charger.dm index b455cbf9e0a4..1fc746829acd 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/crusher/charger.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/crusher/charger.dm @@ -82,7 +82,7 @@ return /datum/behavior_delegate/crusher_charger/on_update_icons() - if(HAS_TRAIT(bound_xeno, TRAIT_CHARGING) && !bound_xeno.lying) + if(HAS_TRAIT(bound_xeno, TRAIT_CHARGING) && bound_xeno.body_position == STANDING_UP) bound_xeno.icon_state = "[bound_xeno.mutation_icon_state || bound_xeno.mutation_type] Crusher Charging" return TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/gardener.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/gardener.dm index 303e1c94692d..c11f0e11f399 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/gardener.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/gardener.dm @@ -379,8 +379,8 @@ if(bound_xeno.stat == DEAD) fruit_sac_overlay_icon.icon_state = "Gardener Drone Dead" - else if(bound_xeno.lying) - if((bound_xeno.resting || bound_xeno.sleeping) && (!bound_xeno.knocked_down && !bound_xeno.knocked_out && bound_xeno.health > 0)) + else if(bound_xeno.body_position == LYING_DOWN) + if(!HAS_TRAIT(bound_xeno, TRAIT_INCAPACITATED) && !HAS_TRAIT(bound_xeno, TRAIT_FLOORED)) fruit_sac_overlay_icon.icon_state = "Gardener Drone Sleeping" else fruit_sac_overlay_icon.icon_state = "Gardener Drone Knocked Down" diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/healer.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/healer.dm index 5caab38529e6..2e562ceac6a9 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/healer.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/drone/healer.dm @@ -160,8 +160,8 @@ if(bound_xeno.stat == DEAD) salve_applied_icon.icon_state = "Healer Drone Dead" - else if(bound_xeno.lying) - if((bound_xeno.resting || bound_xeno.sleeping) && (!bound_xeno.knocked_down && !bound_xeno.knocked_out && bound_xeno.health > 0)) + else if(bound_xeno.body_position == LYING_DOWN) + if(!HAS_TRAIT(bound_xeno, TRAIT_INCAPACITATED) && !HAS_TRAIT(bound_xeno, TRAIT_FLOORED)) salve_applied_icon.icon_state = "Healer Drone Sleeping" else salve_applied_icon.icon_state = "Healer Drone Knocked Down" diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/oppressor.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/oppressor.dm index ecb0e1eff51e..4beaedf8d6a8 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/oppressor.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/oppressor.dm @@ -52,14 +52,12 @@ var/tearing_damage = 15 /datum/behavior_delegate/oppressor_praetorian/melee_attack_additional_effects_target(mob/living/carbon/target_carbon) - if(target_carbon.stat == DEAD) return - if(!(target_carbon.knocked_down || HAS_TRAIT(target_carbon, TRAIT_IMMOBILIZED) || target_carbon.slowed)) - return + // impaired in some capacity + if(!(target_carbon.mobility_flags & MOBILITY_STAND) || !(target_carbon.mobility_flags & MOBILITY_MOVE) || target_carbon.slowed) + target_carbon.apply_armoured_damage(get_xeno_damage_slash(target_carbon, tearing_damage), ARMOR_MELEE, BRUTE, bound_xeno.zone_selected ? bound_xeno.zone_selected : "chest") + target_carbon.visible_message(SPAN_DANGER("[bound_xeno] tears into [target_carbon]!")) + playsound(bound_xeno, 'sound/weapons/alien_tail_attack.ogg', 25, TRUE) - target_carbon.apply_armoured_damage(get_xeno_damage_slash(target_carbon, tearing_damage), ARMOR_MELEE, BRUTE, bound_xeno.zone_selected ? bound_xeno.zone_selected : "chest") - target_carbon.visible_message(SPAN_DANGER("[bound_xeno] tears into [target_carbon]!")) - playsound(bound_xeno, 'sound/weapons/alien_tail_attack.ogg', 25, TRUE) - return diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/runner/acid.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/runner/acid.dm index 630edf26d353..490e5ca36cba 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/runner/acid.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/runner/acid.dm @@ -87,7 +87,7 @@ if(embryo?.stage >= 4) //very late stage hugged in case the runner unnests them return - if(target_mob.lying) + if(target_mob.body_position == LYING_DOWN) modify_acid(acid_slash_regen_lying) return modify_acid(acid_slash_regen_standing) diff --git a/code/modules/mob/living/carbon/xenomorph/update_icons.dm b/code/modules/mob/living/carbon/xenomorph/update_icons.dm index 27e7ec3225ed..e576b23e2855 100644 --- a/code/modules/mob/living/carbon/xenomorph/update_icons.dm +++ b/code/modules/mob/living/carbon/xenomorph/update_icons.dm @@ -69,8 +69,8 @@ icon_state = "[mutation_caste_state] Dead" if(!(icon_state in icon_states(icon_xeno))) icon_state = "Normal [caste.caste_type] Dead" - else if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) icon_state = "[mutation_caste_state] Sleeping" if(!(icon_state in icon_states(icon_xeno))) icon_state = "Normal [caste.caste_type] Sleeping" @@ -93,6 +93,28 @@ update_inv_resource() update_icons() +/* CRUTCH ZONE - Update icons when relevant status happen - Ideally do this properly and for everything, then kill update_icons() someday */ +// set_body_position is needed on addition of floored start/stop because we can be switching between resting and knockeddown +/mob/living/carbon/xenomorph/set_body_position(new_value) + . = ..() + if(. != new_value) + update_icons() // Snowflake handler for xeno resting icons + +/mob/living/carbon/xenomorph/on_floored_start() + . = ..() + update_icons() +/mob/living/carbon/xenomorph/on_floored_end() + . = ..() + update_icons() +/mob/living/carbon/xenomorph/on_incapacitated_trait_gain() + . = ..() + update_icons() +/mob/living/carbon/xenomorph/on_incapacitated_trait_loss() + . = ..() + update_icons() + +/* ^^^^^^^^^^^^^^ End Icon updates */ + /mob/living/carbon/xenomorph/update_inv_pockets() var/datum/custom_hud/alien/ui_datum = GLOB.custom_huds_list[HUD_ALIEN] if(l_store) @@ -142,8 +164,8 @@ var/state_modifier = "" if(stat == DEAD) state_modifier = " Dead" - else if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) state_modifier = " Sleeping" else state_modifier = " Knocked Down" @@ -237,7 +259,7 @@ if(on_fire && fire_reagent) var/image/I if(mob_size >= MOB_SIZE_BIG) - if((!initial(pixel_y) || lying) && !resting && !sleeping) + if((!initial(pixel_y) || body_position != LYING_DOWN)) // what's that pixel_y doing here??? I = image("icon"='icons/mob/xenos/overlay_effects64x64.dmi', "icon_state"="alien_fire", "layer"=-X_FIRE_LAYER) else I = image("icon"='icons/mob/xenos/overlay_effects64x64.dmi', "icon_state"="alien_fire_lying", "layer"=-X_FIRE_LAYER) @@ -278,8 +300,8 @@ if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) wound_icon_holder.icon_state = "none" - else if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) wound_icon_holder.icon_state = "[caste.caste_type]_rest_[health_threshold]" else wound_icon_holder.icon_state = "[caste.caste_type]_downed_[health_threshold]" diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 810c8f58666b..a5da9763047d 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -365,6 +365,15 @@ var/datum/tacmap/drawing/xeno/tacmap var/minimap_type = MINIMAP_FLAG_XENO + var/list/available_nicknumbers = list() + + /*Stores the image()'s for the xeno evolution radial menu + To add an image for your caste - add an icon to icons/mob/xenos/radial_xenos.dmi + Icon size should be 32x32, to make them fit within the radial menu border size your icon 22x22 and leave 10px transparent border. + The name of the icon should be the same as the XENO_CASTE_ define for that caste eg. #define XENO_CASTE_DRONE "Drone" + */ + var/static/list/evolution_menu_images + /datum/hive_status/New() mutators.hive = src hive_ui = new(src) @@ -374,11 +383,22 @@ tacmap = new(src, minimap_type) if(!internal_faction) internal_faction = name + for(var/number in 1 to 999) + available_nicknumbers += number if(hivenumber != XENO_HIVE_NORMAL) return + if(!evolution_menu_images) + evolution_menu_images = list() + generate_evo_menu_images() + RegisterSignal(SSdcs, COMSIG_GLOB_POST_SETUP, PROC_REF(post_setup)) +///Generate the image()'s requried for the evolution radial menu. +/datum/hive_status/proc/generate_evo_menu_images() + for(var/datum/caste_datum/caste as anything in subtypesof(/datum/caste_datum)) + evolution_menu_images[initial(caste.caste_type)] = image('icons/mob/xenos/radial_xenos.dmi', initial(caste.caste_type)) + /datum/hive_status/proc/post_setup() SIGNAL_HANDLER diff --git a/code/modules/mob/living/init_signals.dm b/code/modules/mob/living/init_signals.dm index d7edd02893b3..696eaa3f0120 100644 --- a/code/modules/mob/living/init_signals.dm +++ b/code/modules/mob/living/init_signals.dm @@ -1,21 +1,91 @@ /// Called on [/mob/living/Initialize(mapload)], for the mob to register to relevant signals. /mob/living/proc/register_init_signals() + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_KNOCKEDOUT), PROC_REF(on_knockedout_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_KNOCKEDOUT), PROC_REF(on_knockedout_trait_loss)) RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_IMMOBILIZED), PROC_REF(on_immobilized_trait_gain)) RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_IMMOBILIZED), PROC_REF(on_immobilized_trait_loss)) + + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FLOORED), PROC_REF(on_floored_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FLOORED), PROC_REF(on_floored_trait_loss)) + + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_FORCED_STANDING), PROC_REF(on_forced_standing_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_FORCED_STANDING), PROC_REF(on_forced_standing_trait_loss)) + + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_INCAPACITATED), PROC_REF(on_incapacitated_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_INCAPACITATED), PROC_REF(on_incapacitated_trait_loss)) + RegisterSignal(src, list(SIGNAL_ADDTRAIT(TRAIT_UNDENSE), SIGNAL_REMOVETRAIT(TRAIT_UNDENSE)), PROC_REF(undense_changed)) +/// Called when [TRAIT_KNOCKEDOUT] is added to the mob. +/mob/living/proc/on_knockedout_trait_gain(datum/source) + SIGNAL_HANDLER + if(stat < UNCONSCIOUS) + set_stat(UNCONSCIOUS) + +/// Called when [TRAIT_KNOCKEDOUT] is removed from the mob. +/mob/living/proc/on_knockedout_trait_loss(datum/source) + SIGNAL_HANDLER + if(stat <= UNCONSCIOUS) + update_stat() + /// Called when [TRAIT_IMMOBILIZED] is added to the mob. /mob/living/proc/on_immobilized_trait_gain(datum/source) SIGNAL_HANDLER -// mobility_flags &= ~MOBILITY_MOVE - update_canmove() + mobility_flags &= ~MOBILITY_MOVE /// Called when [TRAIT_IMMOBILIZED] is removed from the mob. /mob/living/proc/on_immobilized_trait_loss(datum/source) SIGNAL_HANDLER -// mobility_flags |= MOBILITY_MOVE - update_canmove() + mobility_flags |= MOBILITY_MOVE + +/// Called when [TRAIT_FLOORED] is added to the mob. +/mob/living/proc/on_floored_trait_gain(datum/source) + SIGNAL_HANDLER + if(buckled && buckled.buckle_lying != NO_BUCKLE_LYING) + return // Handled by the buckle. + if(HAS_TRAIT(src, TRAIT_FORCED_STANDING)) + return // Don't go horizontal if mob has forced standing trait. + mobility_flags &= ~MOBILITY_STAND + on_floored_start() + + +/// Called when [TRAIT_FLOORED] is removed from the mob. +/mob/living/proc/on_floored_trait_loss(datum/source) + SIGNAL_HANDLER + mobility_flags |= MOBILITY_STAND + on_floored_end() + +/// Called when [TRAIT_FORCED_STANDING] is added to the mob. +/mob/living/proc/on_forced_standing_trait_gain(datum/source) + SIGNAL_HANDLER + + set_body_position(STANDING_UP) + set_lying_angle(0) + +/// Called when [TRAIT_FORCED_STANDING] is removed from the mob. +/mob/living/proc/on_forced_standing_trait_loss(datum/source) + SIGNAL_HANDLER + + if(HAS_TRAIT(src, TRAIT_FLOORED)) + on_fall() + set_lying_down() + else if(resting) + set_lying_down() + +/// Called when [TRAIT_INCAPACITATED] is added to the mob. +/mob/living/proc/on_incapacitated_trait_gain(datum/source) + SIGNAL_HANDLER + //add_traits(list(TRAIT_UI_BLOCKED, TRAIT_PULL_BLOCKED), TRAIT_INCAPACITATED) + //update_appearance() + return + +/// Called when [TRAIT_INCAPACITATED] is removed from the mob. +/mob/living/proc/on_incapacitated_trait_loss(datum/source) + SIGNAL_HANDLER + //remove_traits(list(TRAIT_UI_BLOCKED, TRAIT_PULL_BLOCKED), TRAIT_INCAPACITATED) + //update_appearance() + return /// Called when [TRAIT_UNDENSE] is gained or lost /mob/living/proc/undense_changed(datum/source) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 9f01b8037e0f..6205c4f919a4 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -34,11 +34,6 @@ QDEL_NULL(stamina) QDEL_NULL(hallucinations) -//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually -//affects them once clothing is factored in. ~Errorage -/mob/living/proc/calculate_affecting_pressure(pressure) - return - /mob/living/proc/initialize_pain() pain = new /datum/pain(src) @@ -151,6 +146,8 @@ return /mob/living/Move(NewLoc, direct) + if(lying_angle != 0) + lying_angle_on_movement(direct) if (buckled && buckled.loc != NewLoc) //not updating position if (!buckled.anchored) return buckled.Move(NewLoc, direct) @@ -454,16 +451,170 @@ for(var/h in src.hud_possible) src.clone.hud_list[h].icon_state = src.hud_list[h].icon_state +// Note that this might CLASH with handle_regular_status_updates until it is ELIMINATED +// and everything is switched from updates to signaling - due to not accounting for all cases. +// If this proc causes issues you can probably disable it until then. +/mob/living/carbon/update_stat() + if(stat != DEAD) + if(health <= HEALTH_THRESHOLD_DEAD) + death() + return + else if(HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) + set_stat(UNCONSCIOUS) + else + set_stat(CONSCIOUS) + /mob/living/set_stat(new_stat) . = ..() if(isnull(.)) return - switch(.) + + switch(.) //Previous stat. + if(CONSCIOUS) + if(stat >= UNCONSCIOUS) + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_KNOCKEDOUT) + 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 if(DEAD) SEND_SIGNAL(src, COMSIG_MOB_STAT_SET_ALIVE) - switch(stat) +// remove_from_dead_mob_list() +// add_to_alive_mob_list() + + switch(stat) //Current stat. + if(CONSCIOUS) + if(. >= UNCONSCIOUS) + REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_KNOCKEDOUT) + 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) 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() + +/** + * Changes the inclination angle of a mob, used by humans and others to differentiate between standing up and prone positions. + * + * In BYOND-angles 0 is NORTH, 90 is EAST, 180 is SOUTH and 270 is WEST. + * This usually means that 0 is standing up, 90 and 270 are horizontal positions to right and left respectively, and 180 is upside-down. + * Mobs that do now follow these conventions due to unusual sprites should require a special handling or redefinition of this proc, due to the density and layer changes. + * The return of this proc is the previous value of the modified lying_angle if a change was successful (might include zero), or null if no change was made. + */ +/mob/living/proc/set_lying_angle(new_lying, on_movement = FALSE) + if(new_lying == lying_angle) + return + . = lying_angle + lying_angle = new_lying + if(lying_angle != lying_prev) + update_transform(instant_update = on_movement) // Don't use transition for eg. crawling movement, because we already have the movement glide + lying_prev = lying_angle + +///Called by mob Move() when the lying_angle is different than zero, to better visually simulate crawling. +/mob/living/proc/lying_angle_on_movement(direct) + if(direct & EAST) + set_lying_angle(90, on_movement = TRUE) + else if(direct & WEST) + set_lying_angle(270, on_movement = TRUE) + +///Reports the event of the change in value of the buckled variable. +/mob/living/proc/set_buckled(new_buckled) + if(new_buckled == buckled) + return + SEND_SIGNAL(src, COMSIG_LIVING_SET_BUCKLED, new_buckled) + . = buckled + buckled = new_buckled + if(buckled) +// if(!HAS_TRAIT(buckled, TRAIT_NO_IMMOBILIZE)) +// ADD_TRAIT(src, TRAIT_IMMOBILIZED, BUCKLED_TRAIT) + ADD_TRAIT(src, TRAIT_IMMOBILIZED, BUCKLED_TRAIT) + switch(buckled.buckle_lying) + if(NO_BUCKLE_LYING) // The buckle doesn't force a lying angle. + REMOVE_TRAIT(src, TRAIT_FLOORED, BUCKLED_TRAIT) + if(0) // Forcing to a standing position. + REMOVE_TRAIT(src, TRAIT_FLOORED, BUCKLED_TRAIT) + set_body_position(STANDING_UP) + set_lying_angle(0) + else // Forcing to a lying position. + ADD_TRAIT(src, TRAIT_FLOORED, BUCKLED_TRAIT) + set_body_position(LYING_DOWN) + set_lying_angle(buckled.buckle_lying) + else + remove_traits(list(TRAIT_IMMOBILIZED, TRAIT_FLOORED), BUCKLED_TRAIT) + if(.) // We unbuckled from something. + //var/atom/movable/old_buckled = . + var/obj/old_buckled = . // /tg/ code has buckling defined on /atom/movable - consider refactoring this sometime + if(old_buckled.buckle_lying == 0 && (resting || HAS_TRAIT(src, TRAIT_FLOORED))) // The buckle forced us to stay up (like a chair) + set_lying_down() // We want to rest or are otherwise floored, so let's drop on the ground. + +/mob/living/proc/get_up(instant = FALSE) // arg ignored +// set waitfor = FALSE +// if(!instant && !do_after(src, 1 SECONDS, src, timed_action_flags = (IGNORE_USER_LOC_CHANGE|IGNORE_TARGET_LOC_CHANGE|IGNORE_HELD_ITEM), extra_checks = CALLBACK(src, TYPE_PROC_REF(/mob/living, rest_checks_callback)), interaction_key = DOAFTER_SOURCE_GETTING_UP)) +// return + if(resting || body_position == STANDING_UP || HAS_TRAIT(src, TRAIT_FLOORED)) + return + set_body_position(STANDING_UP) + set_lying_angle(0) + +/// Change the [body_position] to [LYING_DOWN] and update associated behavior. +/mob/living/proc/set_lying_down(new_lying_angle) + set_body_position(LYING_DOWN) + +/// Proc to append behavior related to lying down. +/mob/living/proc/on_lying_down(new_lying_angle) +// if(layer == initial(layer)) //to avoid things like hiding larvas. +// layer = LYING_MOB_LAYER //so mob lying always appear behind standing mobs + add_traits(list(/*TRAIT_UI_BLOCKED, TRAIT_PULL_BLOCKED,*/ TRAIT_UNDENSE), LYING_DOWN_TRAIT) + if(HAS_TRAIT(src, TRAIT_FLOORED) && !(dir & (NORTH|SOUTH))) + setDir(pick(NORTH, SOUTH)) // We are and look helpless. +// if(rotate_on_lying) +// body_position_pixel_y_offset = PIXEL_Y_OFFSET_LYING + + // CM legacy canmove procs, replace this with signal procs probably + drop_l_hand() + drop_r_hand() + add_temp_pass_flags(PASS_MOB_THRU) + //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) + layer = LYING_DEAD_MOB_LAYER // Dead mobs should layer under living ones + else if(layer == initial(layer)) //to avoid things like hiding larvas. + 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. +/mob/living/proc/on_fall() + return + +/// Changes the value of the [living/body_position] variable. Call this before set_lying_angle() +/mob/living/proc/set_body_position(new_value) + if(body_position == new_value) + return + if((new_value == LYING_DOWN) && !(mobility_flags & MOBILITY_LIEDOWN)) + return + . = body_position + body_position = new_value + SEND_SIGNAL(src, COMSIG_LIVING_SET_BODY_POSITION, new_value, .) + if(new_value == LYING_DOWN) // From standing to lying down. + on_lying_down() + else // From lying down to standing up. + on_standing_up() + +/// Proc to append behavior related to lying down. +/mob/living/proc/on_standing_up() + //if(layer == LYING_MOB_LAYER) + // layer = initial(layer) + remove_traits(list(/*TRAIT_UI_BLOCKED, TRAIT_PULL_BLOCKED,*/ TRAIT_UNDENSE), LYING_DOWN_TRAIT) + // Make sure it doesn't go out of the southern bounds of the tile when standing. + //body_position_pixel_y_offset = get_pixel_y_offset_standing(current_size) + // CM stuff below + remove_temp_pass_flags(PASS_MOB_THRU) + if(layer == LYING_DEAD_MOB_LAYER || layer == LYING_LIVING_MOB_LAYER) + layer = initial(layer) + /// Uses presence of [TRAIT_UNDENSE] to figure out what is the correct density state for the mob. Triggered by trait signal. /mob/living/proc/update_density() @@ -471,3 +622,40 @@ set_density(FALSE) else set_density(TRUE) + +/// Proc to append behavior to the condition of being floored. Called when the condition starts. +/mob/living/proc/on_floored_start() + if(body_position == STANDING_UP) //force them on the ground + set_body_position(LYING_DOWN) + set_lying_angle(pick(90, 270), on_movement = TRUE) +// on_fall() + + +/// Proc to append behavior to the condition of being floored. Called when the condition ends. +/mob/living/proc/on_floored_end() + if(!resting) + get_up() + + +/mob/living/update_transform(instant_update = FALSE) + var/visual_angle = lying_angle + if(!rotate_on_lying) + return + var/matrix/base = matrix() + if(pulledby && pulledby.grab_level >= GRAB_CARRY) + visual_angle = 90 // CM code - for fireman carry + if(instant_update) + apply_transform(base.Turn(visual_angle)) + else + apply_transform(base.Turn(visual_angle), UPDATE_TRANSFORM_ANIMATION_TIME) + + +// legacy procs +/mob/living/put_in_l_hand(obj/item/W) + if(body_position == LYING_DOWN) + return + return ..() +/mob/living/put_in_r_hand(obj/item/W) + if(body_position == LYING_DOWN) + return + return ..() diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 97d71fcb4e8e..ce4634a102fc 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -14,6 +14,18 @@ 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 + var/dazed = 0 + var/slowed = 0 // X_SLOW_AMOUNT + var/superslowed = 0 // X_SUPERSLOW_AMOUNT + var/sleeping = 0 + + /// Cooldown for manually toggling resting to avoid spamming + COOLDOWN_DECLARE(rest_cooldown) + var/hallucination = 0 //Directly affects how long a mob will hallucinate for var/list/atom/hallucinations = list() //A list of hallucinated people that try to attack the mob. See /obj/effect/fake_attacker in hallucinations.dm @@ -99,7 +111,6 @@ var/current_weather_effect_type - var/slash_verb = "attack" var/slashes_verb = "attacks" @@ -111,10 +122,15 @@ /// This is what the value is changed to when the mob dies. Actual BMV definition in atom/movable. var/dead_black_market_value = 0 - var/dazed = 0 - var/knocked_out = 0 - var/stunned = 0 - var/knocked_down = 0 - var/slowed = 0 // X_SLOW_AMOUNT - var/superslowed = 0 // X_SUPERSLOW_AMOUNT - var/sleeping = 0 + /// Variable to track the body position of a mob, regardgless of the actual angle of rotation (usually matching it, but not necessarily). + var/body_position = STANDING_UP + /// Number of degrees of rotation of a mob. 0 means no rotation, up-side facing NORTH. 90 means up-side rotated to face EAST, and so on. + VAR_PROTECTED/lying_angle = 0 + /// Value of lying lying_angle before last change. TODO: Remove the need for this. + var/lying_prev = 0 + /// Does the mob rotate when lying + var/rotate_on_lying = FALSE + + /// Flags that determine the potential of a mob to perform certain actions. Do not change this directly. + var/mobility_flags = MOBILITY_FLAGS_DEFAULT + diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index 3a96400ade6a..e4c9659db827 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -86,6 +86,7 @@ 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) @@ -93,9 +94,14 @@ 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) return + if(!stunned) // Force reset since the timer wasn't called + stun_callback() + return if(stun_timer != TIMER_ID_NULL) deltimer(stun_timer) @@ -172,15 +178,23 @@ VAR_PRIVATE/knocked_down_timer /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/knocked_down_callback_check() + if(knocked_down) + add_traits(list(TRAIT_FLOORED, TRAIT_INCAPACITATED), KNOCKEDDOWN_TRAIT) + 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 return + if(!knocked_down) // Force reset since the timer wasn't called + knocked_down_callback() + return + if(knocked_down_timer) deltimer(knocked_down_timer) knocked_down_timer = null @@ -192,11 +206,14 @@ 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 return @@ -219,7 +236,6 @@ knocked_down_callback_check() return - /mob/living/proc/SetKnockDown(amount) if(status_flags & CANKNOCKDOWN) knocked_down = max(amount,0) @@ -362,12 +378,6 @@ to_chat(src, SPAN_WARNING("You start hearing things again!")) SEND_SIGNAL(src, COMSIG_MOB_REGAINED_HEARING) - - - - - - // heal ONE limb, organ gets randomly selected from damaged ones. /mob/living/proc/heal_limb_damage(brute, burn) apply_damage(-brute, BRUTE) @@ -491,14 +501,13 @@ return if(stat >= UNCONSCIOUS) return + face_dir(direction) return ..() -/mob/living/is_laid_down() - if(knocked_down || knocked_out) - return TRUE - return ..() - -/mob/living/is_mob_incapacitated(ignore_restrained) - if(stunned || knocked_down || knocked_out) - return TRUE - 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 77b996ff6bb0..45f5a25fce2c 100644 --- a/code/modules/mob/living/living_verbs.dm +++ b/code/modules/mob/living/living_verbs.dm @@ -163,7 +163,7 @@ return //breaking out of handcuffs & putting out fires - if(canmove && !knocked_down) + if(!is_mob_incapacitated(TRUE)) if(on_fire) resist_fire() @@ -179,7 +179,7 @@ if(!iscarbon(src)) return var/mob/living/carbon/C = src - if((C.handcuffed || C.legcuffed) && C.canmove && (C.last_special <= world.time)) + if((C.handcuffed || C.legcuffed) && (C.mobility_flags & MOBILITY_MOVE) && (C.last_special <= world.time)) resist_restraints() /mob/living/proc/resist_buckle() diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 36ae23587a28..9fa38d1ecb43 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -118,6 +118,13 @@ GLOBAL_LIST_INIT(department_radio_keys, list( listening += M hearturfs += M.locs[1] for(var/obj/O in M.contents) + var/obj/item/clothing/worn_item = O + if((O.flags_atom & USES_HEARING) || ((istype(worn_item) && worn_item.accessories))) + listening_obj |= O + else if(istype(I, /obj/structure/surface)) + var/obj/structure/surface/table = I + hearturfs += table.locs[1] + for(var/obj/O in table.contents) if(O.flags_atom & USES_HEARING) listening_obj |= O else if(istype(I, /obj/)) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 0cd43361e22a..6782e3174579 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -101,8 +101,8 @@ GLOBAL_LIST_INIT(ai_verbs_default, list( // aiPDA = new/obj/item/device/pda/ai(src) SetName(pickedName) anchored = TRUE - canmove = 0 - density = TRUE + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_INHERENT) + set_density(TRUE) forceMove(loc) holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1")) diff --git a/code/modules/mob/living/silicon/decoy/decoy.dm b/code/modules/mob/living/silicon/decoy/decoy.dm index 5294631a70ec..bc7271554352 100644 --- a/code/modules/mob/living/silicon/decoy/decoy.dm +++ b/code/modules/mob/living/silicon/decoy/decoy.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/structures/machinery/ai.dmi' icon_state = "hydra" anchored = TRUE - canmove = 0 density = TRUE //Do not want to see past it. bound_height = 64 //putting this in so we can't walk through our machine. bound_width = 96 @@ -23,6 +22,7 @@ ai_headset = new(src) GLOB.ai_mob_list += src real_name = MAIN_AI_SYSTEM + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_INHERENT) /mob/living/silicon/decoy/ship_ai/Destroy() QDEL_NULL(ai_headset) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index b0230bba5dba..b4a6e59e52e2 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -18,7 +18,6 @@ use_power() process_killswitch() process_locks() - update_canmove() /mob/living/silicon/robot/proc/clamp_values() @@ -79,14 +78,14 @@ death() if (stat != DEAD) //Alive. - if (knocked_out || stunned || knocked_down || !has_power) //Stunned etc. + if (HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || HAS_TRAIT(src, TRAIT_INCAPACITATED) || !has_power) //Stunned etc. set_stat(UNCONSCIOUS) if(regular_update) - if (src.stunned > 0) + if (HAS_TRAIT(src, TRAIT_INCAPACITATED)) adjust_effect(-1, STUN) - if (src.knocked_down > 0) + if (HAS_TRAIT(src, TRAIT_FLOORED)) adjust_effect(-1, WEAKEN) - if (src.knocked_out > 0) + if (HAS_TRAIT(src, TRAIT_KNOCKEDOUT)) adjust_effect(-1, PARALYZE) src.blinded = TRUE else @@ -113,8 +112,6 @@ src.ear_damage -= 0.05 src.ear_damage = max(src.ear_damage, 0) - src.density = !( src.lying ) - if ((src.sdisabilities & DISABILITY_BLIND)) src.blinded = TRUE if ((src.sdisabilities & DISABILITY_DEAF)) @@ -271,8 +268,3 @@ to_chat(src, SPAN_DANGER("Weapon Lock Timed Out!")) weapon_lock = 0 weaponlock_time = 120 - -/mob/living/silicon/robot/update_canmove() - if(knocked_out || stunned || knocked_down || buckled || lockcharge || !is_component_functioning("actuator")) canmove = 0 - else canmove = 1 - return canmove diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 7a3ed2868389..888b484fab06 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -840,7 +840,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( cleaned_item.clean_blood() else if(istype(A, /mob/living/carbon/human)) var/mob/living/carbon/human/cleaned_human = A - if(cleaned_human.lying) + if(cleaned_human.body_position == LYING_DOWN) if(cleaned_human.head) cleaned_human.head.clean_blood() cleaned_human.update_inv_head(0) @@ -866,7 +866,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list( src.connected_ai = null lawupdate = 0 lockcharge = 0 - canmove = 1 + //canmove = 1 // Yes this will probably break something, whatevver it is scrambledcodes = 1 //Disconnect it's camera so it's not so easily tracked. if(src.camera) diff --git a/code/modules/mob/living/simple_animal/bat.dm b/code/modules/mob/living/simple_animal/bat.dm index a95d97be6e1a..eea7998bda67 100644 --- a/code/modules/mob/living/simple_animal/bat.dm +++ b/code/modules/mob/living/simple_animal/bat.dm @@ -27,4 +27,3 @@ set_stat(CONSCIOUS) icon_state = "bat" wander = 1 - canmove = 1 diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index fa93399683d8..11064634d498 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -46,7 +46,6 @@ set_stat(CONSCIOUS) icon_state = "mouse_[body_color]" wander = 1 - canmove = 1 else if(prob(5)) INVOKE_ASYNC(src, PROC_REF(emote), "snuffles") diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index 5e56b0204777..6e8d0b8a2867 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -63,19 +63,19 @@ icon_living = "Normal [caste_name] Running" icon_dead = "Normal [caste_name] Dead" -/mob/living/simple_animal/hostile/alien/update_transform() - if(lying != lying_prev) - lying_prev = lying +/mob/living/simple_animal/hostile/alien/update_transform(instant_update = FALSE) + // TODO: Move all this mess outside of update_transform if(stat == DEAD) icon_state = "Normal [caste_name] Dead" - else if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) icon_state = "Normal [caste_name] Sleeping" else icon_state = "Normal [caste_name] Knocked Down" else icon_state = "Normal [caste_name] Running" update_wounds() + return ..() /mob/living/simple_animal/hostile/alien/evaluate_target(mob/living/carbon/target) . = ..() @@ -114,8 +114,8 @@ if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) wound_icon_holder.icon_state = "none" - else if(lying) - if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) + else if(body_position == LYING_DOWN) + if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) wound_icon_holder.icon_state = "[caste_name]_rest_[health_threshold]" else wound_icon_holder.icon_state = "[caste_name]_downed_[health_threshold]" diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 9d0dfc869d8c..5a5791eb8311 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -125,7 +125,7 @@ if(client) return 0 - if(!stat && canmove) + if(!stat && mobility_flags & MOBILITY_MOVE) switch(stance) if(HOSTILE_STANCE_IDLE) target_mob = FindTarget() diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index a5109685e41b..d1b140305d60 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -127,7 +127,7 @@ /mob/living/simple_animal/parrot/Topic(href, href_list) //Can the usr physically do this? - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !in_range(loc, usr)) + if(usr.is_mob_incapacitated() || !in_range(loc, usr)) return //Is the usr's mob type able to do this? @@ -284,7 +284,7 @@ if(client || stat) return //Lets not force players or dead/incap parrots to move - if(!isturf(src.loc) || !canmove || buckled) + if(!isturf(src.loc) || !(mobility_flags & MOBILITY_MOVE) || buckled) return //If it can't move, dont let it move. (The buckled check probably isn't necessary thanks to canmove) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index e18d8e8f066f..3d3a4b491950 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -81,8 +81,8 @@ GLOB.dead_mob_list -= src GLOB.alive_mob_list += src set_stat(CONSCIOUS) - lying = 0 - density = TRUE +// lying = 0 +// density = TRUE reload_fullscreens() return 0 @@ -96,11 +96,10 @@ handle_stunned() handle_knocked_down(TRUE) handle_knocked_out(TRUE) - update_canmove() //Movement if(!client && !stop_automated_movement && wander && !anchored) - if(isturf(src.loc) && !resting && !buckled && canmove) //This is so it only moves if it's not inside a closet, gentics machine, etc. + 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. turns_since_move++ if(turns_since_move >= turns_per_move) if(!(stop_automated_movement_when_pulled && pulledby)) //Soma animals don't move when pulled @@ -361,10 +360,17 @@ ..(message, null, verb, nolog = !ckey) //if the animal has a ckey then it will log the message -/mob/living/simple_animal/update_canmove() +/mob/living/simple_animal/on_immobilized_trait_gain(datum/source) . = ..() - if(!canmove) - stop_moving() + stop_moving() + +/mob/living/simple_animal/on_knockedout_trait_gain(datum/source) + . = ..() + stop_moving() + +/mob/living/simple_animal/on_incapacitated_trait_gain(datum/source) + . = ..() + stop_moving() /mob/living/simple_animal/proc/stop_moving() walk_to(src, 0) // stops us dead in our tracks diff --git a/code/modules/mob/living/simple_animal/slug.dm b/code/modules/mob/living/simple_animal/slug.dm index e09d2c715e54..3f2ceb57b838 100644 --- a/code/modules/mob/living/simple_animal/slug.dm +++ b/code/modules/mob/living/simple_animal/slug.dm @@ -33,7 +33,6 @@ set_stat(CONSCIOUS) icon_state = "slug_movement" wander = 1 - canmove = 1 /mob/living/simple_animal/alien_slug/Initialize() . = ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 03fc6c24ca26..c256f05e74b4 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -454,7 +454,7 @@ if(!Adjacent(usr)) return if(!ishuman(M) && !ismonkey(M)) return if(!ishuman(src) && !ismonkey(src)) return - if(M.lying || M.is_mob_incapacitated()) + if(M.is_mob_incapacitated()) return if(M.pulling == src && (M.a_intent & INTENT_GRAB) && M.grab_level == GRAB_AGGRESSIVE) return @@ -693,71 +693,15 @@ note dizziness decrements automatically in the mob's Life() proc. // facing verbs /mob/proc/canface() - if(!canmove) return 0 if(client.moving) return 0 if(stat==2) return 0 if(anchored) return 0 if(monkeyizing) return 0 if(is_mob_restrained()) return 0 + if(HAS_TRAIT(src, TRAIT_INCAPACITATED)) // We allow rotation if simply floored + return FALSE return 1 -//Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. -/mob/proc/update_canmove() - var/laid_down = is_laid_down() - - if(laid_down) - lying = TRUE - flags_atom &= ~DIRLOCK - else - lying = FALSE - if(buckled) - if(buckled.buckle_lying) - lying = TRUE - flags_atom &= ~DIRLOCK - else - lying = FALSE - - canmove = !HAS_TRAIT(src, TRAIT_IMMOBILIZED) - - if(isliving(src)) // Temporary I SWEAR. This whole proc is going down - var/mob/living/living = src - if(living.stunned) - canmove = FALSE - - if(!can_crawl && lying) - canmove = FALSE - - if(lying_prev != lying) - if(lying) - ADD_TRAIT(src, TRAIT_UNDENSE, LYING_TRAIT) - add_temp_pass_flags(PASS_MOB_THRU) - drop_l_hand() - drop_r_hand() - SEND_SIGNAL(src, COMSIG_MOB_KNOCKED_DOWN) - else - REMOVE_TRAIT(src, TRAIT_UNDENSE, LYING_TRAIT) - SEND_SIGNAL(src, COMSIG_MOB_GETTING_UP) - remove_temp_pass_flags(PASS_MOB_THRU) - update_transform() - - if(lying) - //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) - layer = LYING_DEAD_MOB_LAYER // Dead mobs should layer under living ones - else if(layer == initial(layer)) //to avoid things like hiding larvas. - layer = LYING_LIVING_MOB_LAYER - else if(layer == LYING_DEAD_MOB_LAYER || layer == LYING_LIVING_MOB_LAYER) - layer = initial(layer) - - SEND_SIGNAL(src, COMSIG_MOB_POST_UPDATE_CANMOVE, canmove, laid_down, lying) - - return canmove - -/mob/proc/is_laid_down() - return (stat || !has_legs() || resting || (status_flags & FAKEDEATH) || (pulledby && pulledby.grab_level >= GRAB_AGGRESSIVE)) - /mob/proc/face_dir(ndir, specific_dir) if(!canface()) return 0 if(dir != ndir) @@ -924,13 +868,13 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/living/proc/handle_knocked_down(bypass_client_check = FALSE) if(knocked_down && (bypass_client_check || client)) - knocked_down = max(knocked_down-1,0) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times + 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) //before you get mad Rockdtben: I done this so update_canmove isn't called multiple times + knocked_out = max(knocked_out-1,0) knocked_out_callback_check() return knocked_out @@ -1123,6 +1067,9 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/set_stat(new_stat) if(new_stat == stat) return - . = stat //old stat + . = stat stat = new_stat SEND_SIGNAL(src, COMSIG_MOB_STATCHANGE, new_stat, .) + +/mob/proc/update_stat() + return diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index dc107e1bd190..f0e5bc48a855 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -87,9 +87,6 @@ var/exploit_record = "" var/gibbing = FALSE - var/lying = FALSE - var/lying_prev = 0 - var/canmove = 1 var/lastpuke = 0 unacidable = FALSE var/mob_size = MOB_SIZE_HUMAN diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index a234c5962f72..071728195e3f 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -83,21 +83,21 @@ if(GRAB_AGGRESSIVE) progress_aggressive(user, victim) -/obj/item/grab/proc/progress_passive(mob/living/carbon/human/user, mob/victim) + if(user.grab_level >= GRAB_AGGRESSIVE) + ADD_TRAIT(victim, TRAIT_FLOORED, CHOKEHOLD_TRAIT) + +/obj/item/grab/proc/progress_passive(mob/living/carbon/human/user, mob/living/victim) user.grab_level = GRAB_AGGRESSIVE playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) user.visible_message(SPAN_WARNING("[user] has grabbed [victim] aggressively!"), null, null, 5) - victim.update_canmove() -/obj/item/grab/proc/progress_aggressive(mob/living/carbon/human/user, mob/victim) +/obj/item/grab/proc/progress_aggressive(mob/living/carbon/human/user, mob/living/victim) user.grab_level = GRAB_CHOKE playsound(src.loc, 'sound/weapons/thudswoosh.ogg', 25, 1, 7) user.visible_message(SPAN_WARNING("[user] holds [victim] by the neck and starts choking them!"), null, null, 5) victim.Move(user.loc, get_dir(victim.loc, user.loc)) victim.update_transform(TRUE) - victim.update_canmove() - /obj/item/grab/attack(mob/living/M, mob/living/user) if(M == grabbed_thing) attack_self(user) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 4529580859de..5d1baac3a534 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -311,14 +311,11 @@ GLOBAL_LIST_INIT(limb_types_by_name, list( /mob/proc/is_mob_restrained() return +/// Returns if the mob is incapacitated and unable to perform general actions /mob/proc/is_mob_incapacitated(ignore_restrained) - return (stat || (!ignore_restrained && is_mob_restrained()) || status_flags & FAKEDEATH) - - -//returns how many non-destroyed legs the mob has (currently only useful for humans) -/mob/proc/has_legs() - return 2 - + // 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 @@ -480,7 +477,7 @@ GLOBAL_LIST_INIT(limb_types_by_name, list( set name = "Pick Up" set category = "Object" - if(!canmove || stat || is_mob_restrained() || !Adjacent(pickupify)) + if(is_mob_incapacitated() || !Adjacent(pickupify)) return if(world.time <= next_move) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 86ce622824db..65489944211a 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -95,7 +95,13 @@ mob.next_delay_update = world.time + mob.next_delay_delay /client/Move(n, direct) - if(world.time < next_movement || (mob.lying && mob.crawling)) + var/mob/living/living_mob + if(isliving(mob)) + living_mob = mob + + if(world.time < next_movement) + return + if(living_mob && living_mob.body_position == LYING_DOWN && mob.crawling) return next_move_dir_add = 0 @@ -134,7 +140,17 @@ if(!isliving(mob)) return mob.Move(n, direct) - if(!mob.canmove || mob.is_mob_incapacitated(TRUE) || (mob.lying && !mob.can_crawl)) + if(mob.is_mob_incapacitated(TRUE)) + return + + if(mob.buckled) + // Handle buckled relay before mobility because buckling inherently immobilizes + // This means you can (try to) move with a cargo tug or powerloader while immobilized, which i think makes sense + return mob.buckled.relaymove(mob, direct) + + if(!(living_mob.mobility_flags & MOBILITY_MOVE)) + return + if(living_mob.body_position == LYING_DOWN && !living_mob.can_crawl) return //Check if you are being grabbed and if so attemps to break it @@ -150,9 +166,6 @@ next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL return - if(mob.buckled) - return mob.buckled.relaymove(mob, direct) - if(!mob.z)//Inside an object, tell it we moved var/atom/O = mob.loc if(!O) @@ -172,7 +185,7 @@ //We are now going to move moving = TRUE mob.move_intentionally = TRUE - if(mob.lying) + if(living_mob && living_mob.body_position == LYING_DOWN) //check for them not being a limbless blob (only humans have limbs) if(ishuman(mob)) var/mob/living/carbon/human/human = mob diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index 92e46454cc5e..cd76618f3243 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -4,7 +4,7 @@ //Note that this proc does NOT do MMI related stuff! /mob/proc/change_mob_type(new_type = null, turf/location = null, new_name = null as text, delete_old_mob = 0 as num, subspecies) if(istype(src,/mob/new_player)) - to_chat(usr, SPAN_DANGER("cannot convert players who have not entered yet.")) + to_chat(usr, SPAN_DANGER("Cannot convert players who have not entered yet.")) return if(!new_type) @@ -18,7 +18,7 @@ return if( new_type == /mob/new_player ) - to_chat(usr, SPAN_DANGER("cannot convert into a new_player mob type.")) + to_chat(usr, SPAN_DANGER("Cannot convert into a new_player mob type.")) return var/mob/M diff --git a/code/modules/mob/mob_verbs.dm b/code/modules/mob/mob_verbs.dm index b6b27bcf6605..a941dfc51090 100644 --- a/code/modules/mob/mob_verbs.dm +++ b/code/modules/mob/mob_verbs.dm @@ -98,7 +98,8 @@ if(length(mind.memory) < 4000) mind.store_memory(msg) else - message_admins("[key_name(usr)] auto-slept for attempting to exceed mob memory limit.]", loc.x, loc.y, loc.z) + message_admins("[key_name(usr)] warned for attempting to exceed mob memory limit.]", loc.x, loc.y, loc.z) + to_chat(src, "You have exceeded the maximum memory limit. Sorry!") else to_chat(src, "The game appears to have misplaced your mind datum, so we can't show you your notes.") @@ -221,6 +222,7 @@ set category = "IC" if(pulling) + REMOVE_TRAIT(pulling, TRAIT_FLOORED, CHOKEHOLD_TRAIT) var/mob/M = pulling pulling.pulledby = null pulling = null @@ -243,4 +245,3 @@ //so we must undo it here so the victim can move right away M.client.next_movement = world.time M.update_transform(TRUE) - M.update_canmove() diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 5938f7f51a2d..ee99f6836473 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -6,7 +6,6 @@ invisibility = 101 density = FALSE - canmove = FALSE anchored = TRUE universal_speak = TRUE stat = DEAD @@ -15,6 +14,7 @@ . = ..() GLOB.new_player_list += src GLOB.dead_mob_list -= src + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_INHERENT) /mob/new_player/Destroy() if(ready) @@ -63,7 +63,7 @@ output += "" if (refresh) close_browser(src, "playersetup") - show_browser(src, output, null, "playersetup", "size=240x[round_start ? 330 : 460];can_close=0;can_minimize=0") + show_browser(src, output, null, "playersetup", "size=240x[round_start ? 360 : 460];can_close=0;can_minimize=0") return /mob/new_player/Topic(href, href_list[]) diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index aa292c39245b..6dda93e4d9c2 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -7,8 +7,8 @@ drop_inv_item_on_ground(W) regenerate_icons() monkeyizing = 1 - canmove = 0 - stunned = 1 + anchored = TRUE + ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") icon = null invisibility = 101 for(var/t in limbs) @@ -68,7 +68,7 @@ for(var/obj/item/W in src) drop_inv_item_on_ground(W) monkeyizing = 1 - canmove = 0 + ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") icon = null invisibility = 101 return ..() @@ -85,7 +85,7 @@ drop_inv_item_on_ground(W) regenerate_icons() monkeyizing = 1 - canmove = 0 + ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") icon = null invisibility = 101 for(var/t in limbs) @@ -131,7 +131,7 @@ drop_inv_item_on_ground(W) regenerate_icons() monkeyizing = 1 - canmove = 0 + ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") icon = null invisibility = 101 for(var/t in limbs) @@ -186,28 +186,6 @@ qdel(src) return -/mob/living/carbon/human/proc/corgize() - if (monkeyizing) - return - for(var/obj/item/W in src) - drop_inv_item_on_ground(W) - regenerate_icons() - monkeyizing = 1 - canmove = 0 - icon = null - invisibility = 101 - for(var/t in limbs) //this really should not be necessary - qdel(t) - - var/mob/living/simple_animal/corgi/new_corgi = new /mob/living/simple_animal/corgi (loc) - new_corgi.a_intent = INTENT_HARM - new_corgi.key = key - if(new_corgi.client) new_corgi.client.change_view(GLOB.world_view_size) - - to_chat(new_corgi, "You are now a Corgi. Yap Yap!") - qdel(src) - return - /mob/living/carbon/human/Animalize() var/list/mobtypes = typesof(/mob/living/simple_animal) @@ -224,7 +202,7 @@ regenerate_icons() monkeyizing = 1 - canmove = 0 + ADD_TRAIT(src, TRAIT_INCAPACITATED, "Terminal Monkeyziation") icon = null invisibility = 101 diff --git a/code/modules/nano/nanoui.dm b/code/modules/nano/nanoui.dm index 7d24db7d529f..46a30b313bb8 100644 --- a/code/modules/nano/nanoui.dm +++ b/code/modules/nano/nanoui.dm @@ -177,9 +177,13 @@ nanoui is used to open and update nano browser uis close() return + var/mob/living/living_user + if(isliving(user)) + living_user = user + if ((allowed_user_stat > -1) && (user.stat > allowed_user_stat)) set_status(STATUS_DISABLED, push_update) // no updates, completely disabled (red visibility) - else if (user.is_mob_restrained() || user.lying) + else if (user.is_mob_restrained() || (living_user && living_user.body_position == LYING_DOWN)) set_status(STATUS_UPDATE, push_update) // update only (orange visibility) else if (!(src_object in view(4, user))) // If the src object is not in visable, set status to 0 set_status(STATUS_DISABLED, push_update) // interactive (green visibility) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 258132a112e1..b572b5d9e87b 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -569,6 +569,10 @@ name = "crumpled note" info = "there is cotten candy in the walls" +/obj/item/paper/bigred/lambda + name = "ripped diary entry" + info = "Director Smith's Diary\nEntry Date: 15 December 2181\nToday, I've felt true progress! The XX-121 reproduction program is in full effect, and Administrator Cooper have given us the all clear to continue producing specimens. To think that all this is coming from just that first specimen, a single 'Queen' form... It's grown to almost 5 meters tall and shows no signs of ceasing egg production! These creatures will be the next Synthetic of our time, we'll show those Seegson bastards." + /obj/item/paper/bigred/union name = "Shaft miners union" info = "Today we have had enough of being underpaid and treated like shit for not reaching the higher up's unreasonable quotas of ore. They say this place has a \"sea of valuable ores,\" yet we have been mining for years and are yet to find a single diamond. We have had it, enough is enough. They think they can control everything we do, they thought wrong! We, the oppressed workers, shall rise up against the capitalist dogs in a mutiny and take back our pay by force. \n If they send their dogs here to bust us, we will kill each and every single one of them." diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index f5a680c5076a..cebb4ad613b0 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -213,7 +213,7 @@ // Check if we're looking at a mob that's lying down if(istype(cur_atom, /mob/living)) var/mob/living/cur_mob = cur_atom - if(!isxeno(cur_mob) && cur_mob.lying) //xenos don't use icon rotatin for lying. + if(!isxeno(cur_mob) && cur_mob.body_position == LYING_DOWN) //xenos don't use icon rotatin for lying. cur_icon.BecomeLying() // Calculate where we are relative to the center of the photo diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index df4e9badc598..dd0327e3821d 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1000,7 +1000,7 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( SEND_SIGNAL(user, COMSIG_MOB_APC_POWER_PULSE, src) addtimer(VARSET_CALLBACK(src, shorted, FALSE), 2 MINUTES) -/obj/structure/machinery/power/apc/proc/can_use(mob/user as mob, loud = 0) //used by attack_hand() and Topic() +/obj/structure/machinery/power/apc/proc/can_use(mob/living/user as mob, loud = 0) //used by attack_hand() and Topic() if(user.client && user.client.remote_control) return TRUE @@ -1016,7 +1016,7 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( if(user.is_mob_restrained()) to_chat(user, SPAN_WARNING("You must have free hands to use [src].")) return 0 - if(user.lying) + if(user.body_position == LYING_DOWN) to_chat(user, SPAN_WARNING("You can't reach [src]!")) return 0 autoflag = 5 diff --git a/code/modules/projectiles/ammo_boxes/handful_boxes.dm b/code/modules/projectiles/ammo_boxes/handful_boxes.dm index 28eab8463011..9ac2aeea8870 100644 --- a/code/modules/projectiles/ammo_boxes/handful_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/handful_boxes.dm @@ -48,6 +48,15 @@ /obj/item/ammo_box/magazine/shotgun/incendiary/empty empty = TRUE +/obj/item/ammo_box/magazine/shotgun/incendiarybuck + name = "\improper shotgun shell box (Incendiary buckshot x 100)" + icon_state = "base_incbuck" + overlay_content = "_incenbuck" + magazine_type = /obj/item/ammo_magazine/shotgun/incendiarybuck + +/obj/item/ammo_box/magazine/shotgun/incendiarybuck/empty + empty = TRUE + /obj/item/ammo_box/magazine/shotgun/beanbag name = "\improper shotgun shell box (Beanbag x 100)" icon_state = "base_bean" diff --git a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm index ff90a6659fb2..6d20dcc75949 100644 --- a/code/modules/projectiles/ammo_boxes/magazine_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/magazine_boxes.dm @@ -286,6 +286,15 @@ /obj/item/ammo_box/magazine/m4a3/hp/empty empty = TRUE +/obj/item/ammo_box/magazine/m4a3/incen + name = "\improper magazine box (Incen M4A3 x 16)" + overlay_ammo_type = "_incen" + overlay_content = "_incen" + magazine_type = /obj/item/ammo_magazine/pistol/incendiary + +/obj/item/ammo_box/magazine/m4a3/incen/empty + empty = TRUE + //-----------------------M44 Revolver Speed Loaders Box----------------------- /obj/item/ammo_box/magazine/m44 @@ -410,3 +419,306 @@ /obj/item/ammo_box/magazine/nailgun/empty empty = TRUE + +//-----------------------M56B Drum Box----------------------- + +/obj/item/ammo_box/magazine/m56b + name = "\improper drum box (M56B x 8)" + icon_state = "base_m56b" + overlay_ammo_type = "_reg_heavy" + overlay_gun_type = "_sg" + overlay_content = "_sg" + magazine_type = /obj/item/ammo_magazine/smartgun + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m56b/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m56b/dirty + name = "\improper drum box (M56B 'Dirty' x 8)" + overlay_ammo_type = "_red_heavy" + overlay_content = "_sgdirty" + magazine_type = /obj/item/ammo_magazine/smartgun/dirty + +/obj/item/ammo_box/magazine/m56b/dirty/empty + empty = TRUE + +//-----------------------M56D Drum Box----------------------- + +/obj/item/ammo_box/magazine/m56d + name = "\improper drum box (M56D x 8)" + icon_state = "base_m56d" + overlay_ammo_type = "" + overlay_gun_type = "_m56d" + overlay_content = "_m56d" + magazine_type = /obj/item/ammo_magazine/m56d + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m56d/update_icon() + if(overlays) + overlays.Cut() + overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid + overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text + +/obj/item/ammo_box/magazine/m56d/empty + empty = TRUE + + +//-----------------------M2C Ammo Box----------------------- + +/obj/item/ammo_box/magazine/m2c + name = "\improper ammo box (M2C x 8)" + icon_state = "base_m2c" + overlay_ammo_type = "" + overlay_gun_type = "_m2c" + overlay_content = "_m2c" + magazine_type = /obj/item/ammo_magazine/m2c + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m2c/update_icon() + if(overlays) + overlays.Cut() + overlays += image(icon, icon_state = "[icon_state]_lid") //adding lid + overlays += image(text_markings_icon, icon_state = "text[overlay_gun_type]") //adding text + +/obj/item/ammo_box/magazine/m2c/empty + empty = TRUE + +//-----------------------M41AE2 Ammo Box----------------------- + +/obj/item/ammo_box/magazine/m41ae2 + name = "\improper magazine (M41AE2 x 8)" + icon_state = "base_m41ae2" + overlay_ammo_type = "_reg_heavy" + overlay_gun_type = "_m41ae2" + overlay_content = "_m41ae2" + magazine_type = /obj/item/ammo_magazine/rifle/lmg + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/m41ae2/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m41ae2/holo + name = "\improper magazine box (M41AE2 Holo-Target x 8)" + overlay_ammo_type = "_holo_heavy" + overlay_content = "_m41ae2_holo" + magazine_type = /obj/item/ammo_magazine/rifle/lmg/holo_target + +/obj/item/ammo_box/magazine/m41ae2/holo/empty + empty = TRUE + +/obj/item/ammo_box/magazine/m41ae2/heap + name = "\improper magazine box (M41AE2 HEAP x 8)" + overlay_ammo_type = "_heap_heavy" + overlay_content = "_m41ae2_heap" + magazine_type = /obj/item/ammo_magazine/rifle/lmg/heap + +/obj/item/ammo_box/magazine/m41ae2/heap/empty + empty = TRUE + +//-----------------------Flamer Fuel Tank Box----------------------- + +/obj/item/ammo_box/magazine/flamer + name = "\improper flamer tank box (UT-Napthal Fuel x 8)" + icon_state = "base_flamer" + overlay_ammo_type = "_flamer" + overlay_gun_type = "_blank" + overlay_content = "_flamer" + magazine_type = /obj/item/ammo_magazine/flamer_tank + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/flamer/empty + empty = TRUE + +/obj/item/ammo_box/magazine/flamer/bgel + name = "\improper flamer fuel box (Napalm B-Gel x 8)" + overlay_ammo_type = "_flamer_bgel" + overlay_content = "_flamer_bgel" + magazine_type = /obj/item/ammo_magazine/flamer_tank/gellied + +/obj/item/ammo_box/magazine/flamer/bgel/empty + empty = TRUE + +//-----------------------M41A MK1 Rifle Mag Boxes----------------------- + +/obj/item/ammo_box/magazine/mk1 + name = "\improper magazine box (M41A MK1 x 8)" + overlay_ammo_type = "_reg_mk1" + overlay_gun_type = "_mk1" + overlay_content = "_reg" + magazine_type = /obj/item/ammo_magazine/rifle/m41aMK1 + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/mk1/empty + empty = TRUE + +/obj/item/ammo_box/magazine/mk1/ap + name = "\improper magazine box (M41A MK1 AP x 8)" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_ap_mk1" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/rifle/m41aMK1/ap + +/obj/item/ammo_box/magazine/mk1/ap/empty + empty = TRUE + +//-----------------------NSG 23 Rifle Mag Boxes----------------------- + +/obj/item/ammo_box/magazine/nsg23 + name = "\improper magazine box (NSG 23 x 16)" + icon_state = "base_nsg23" + overlay_gun_type = "_nsg23" + overlay_content = "_reg" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23 + num_of_magazines = 16 + +/obj/item/ammo_box/magazine/nsg23/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/ap + name = "\improper magazine box (NSG 23 AP x 12)" + overlay_ammo_type = "_ap" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/ap + num_of_magazines = 12 + +/obj/item/ammo_box/magazine/nsg23/ap/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/ex + name = "\improper magazine box (NSG 23 Extended x 8)" + overlay_ammo_type = "_ext" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/extended + num_of_magazines = 8 + +/obj/item/ammo_box/magazine/nsg23/ex/empty + empty = TRUE + +/obj/item/ammo_box/magazine/nsg23/heap + name = "\improper magazine box (NSG 23 HEAP x 16)" + overlay_ammo_type = "_heap" + overlay_content = "_heap" + magazine_type = /obj/item/ammo_magazine/rifle/nsg23/heap + +/obj/item/ammo_box/magazine/nsg23/heap/empty + empty = TRUE + +//-----------------------Spearhead Autorevolver Speed Loaders Box----------------------- + +/obj/item/ammo_box/magazine/spearhead + name = "\improper speed loaders box (Spearhead HP x 12)" + icon_state = "base_cmb" + overlay_ammo_type = "_357_hp" + overlay_gun_type = "_357" + overlay_content = "_speed" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/revolver/cmb + +/obj/item/ammo_box/magazine/spearhead/empty + empty = TRUE + +/obj/item/ammo_box/magazine/spearhead/normalpoint + name = "\improper speed loaders box (Spearhead x 12)" + overlay_ammo_type = "_357_reg" + magazine_type = /obj/item/ammo_magazine/revolver/cmb/normalpoint + +/obj/item/ammo_box/magazine/spearhead/normalpoint/empty + empty = TRUE + +//-----------------------Type 73 Pistol Mag Box----------------------- + +/obj/item/ammo_box/magazine/type73 + name = "\improper magazine box (Type 73 x 16)" + icon_state = "base_type73" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_type71_reg" + overlay_gun_type = "_type73" + overlay_content = "_type71_reg" + num_of_magazines = 16 + magazine_type = /obj/item/ammo_magazine/pistol/t73 + +/obj/item/ammo_box/magazine/type73/empty + empty = TRUE + +/obj/item/ammo_box/magazine/type73/impact + name = "\improper magazine box (Type 73 High-Impact x 10)" + overlay_ammo_type = "_type73_impact" + overlay_content = "_type73_impact" + num_of_magazines = 10 + magazine_type = /obj/item/ammo_magazine/pistol/t73_impact + +/obj/item/ammo_box/magazine/type73/impact/empty + empty = TRUE + + +//-----------------------AR10 Rifle Mag Box----------------------- + +/obj/item/ammo_box/magazine/ar10 + name = "\improper magazine box (AR10 x 12)" + icon_state = "base_ar10" + flags_equip_slot = SLOT_BACK + overlay_gun_type = "_ar10" + overlay_content = "_reg" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/rifle/ar10 + +/obj/item/ammo_box/magazine/ar10/empty + empty = TRUE + +//-----------------------MP5 Smg Mag Box----------------------- + +/obj/item/ammo_box/magazine/mp5 + name = "\improper magazine box (MP5 x 12)" + icon_state = "base_m16" + flags_equip_slot = SLOT_BACK + overlay_gun_type = "_mp5" + overlay_content = "_reg" + num_of_magazines = 12 + magazine_type = /obj/item/ammo_magazine/smg/mp5 + +/obj/item/ammo_box/magazine/mp5/empty + empty = TRUE + + +//-----------------------Desert Eagle Pistol Mag Box----------------------- + +/obj/item/ammo_box/magazine/deagle + name = "\improper magazine box (Desert Eagle x 12)" + icon_state = "base_deagle" + flags_equip_slot = SLOT_BACK + overlay_ammo_type = "_reg" + overlay_gun_type = "_deagle" + overlay_content = "_reg" + num_of_magazines = 16 + magazine_type = /obj/item/ammo_magazine/pistol/heavy + +/obj/item/ammo_box/magazine/deagle/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super + name = "\improper magazine box (Heavy Desert Eagle x 8)" + overlay_ammo_type = "_hp" + overlay_content = "_hp" + num_of_magazines = 8 + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super + +/obj/item/ammo_box/magazine/deagle/super/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super/highimpact + name = "\improper magazine box (High Impact Desert Eagle x 8)" + overlay_ammo_type = "_impact" + overlay_content = "_impact" + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super/highimpact + +/obj/item/ammo_box/magazine/deagle/super/highimpact/empty + empty = TRUE + +/obj/item/ammo_box/magazine/deagle/super/highimpact/ap + name = "\improper magazine box (High Impact Armor-Piercing Desert Eagle x 8)" + overlay_ammo_type = "_ap" + overlay_content = "_ap" + magazine_type = /obj/item/ammo_magazine/pistol/heavy/super/highimpact/ap + +/obj/item/ammo_box/magazine/deagle/super/highimpact/ap/empty + empty = TRUE diff --git a/code/modules/projectiles/ammo_boxes/misc_boxes.dm b/code/modules/projectiles/ammo_boxes/misc_boxes.dm index d09a69e5bb50..7b19555f4de5 100644 --- a/code/modules/projectiles/ammo_boxes/misc_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/misc_boxes.dm @@ -75,6 +75,15 @@ overlay_gun_type = "_m94" overlay_content = "_flares" +//------------------------M89 Signal Flare Packs Box-------------------------- + +/obj/item/ammo_box/magazine/misc/flares/signal + name = "\improper box of M89 signal flare packs" + desc = "A box of M89 signal flare packs, to mark up the way." + magazine_type = /obj/item/storage/box/m94/signal + overlay_gun_type = "_m89" + overlay_content = "_flares_signal" + //---------------------FIRE HANDLING PROCS //flare box has unique stuff @@ -139,6 +148,9 @@ /obj/item/ammo_box/magazine/misc/flares/empty empty = TRUE +/obj/item/ammo_box/magazine/misc/flares/signal/empty + empty = TRUE + //------------------------Flashlight Box-------------------------- /obj/item/ammo_box/magazine/misc/flashlight diff --git a/code/modules/projectiles/ammo_boxes/round_boxes.dm b/code/modules/projectiles/ammo_boxes/round_boxes.dm index 95115b76df43..ab1d1667c15f 100644 --- a/code/modules/projectiles/ammo_boxes/round_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/round_boxes.dm @@ -130,3 +130,43 @@ /obj/item/ammo_box/rounds/type71/heap/empty empty = TRUE + +//----------------9mm Pistol Ammunition Boxes (for mod88, M4A3 pistols)------------------ + +/obj/item/ammo_box/rounds/pistol + name = "\improper pistol ammunition box (9mm)" + desc = "A 9mm ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + caliber = "9mm" + icon_state = "base_m4a3" + overlay_content = "_reg" + default_ammo = /datum/ammo/bullet/pistol + +/obj/item/ammo_box/rounds/pistol/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/ap + name = "\improper pistol ammunition box (9mm AP)" + desc = "A 9mm armor-piercing ammunition box. Used to refill mod88 and M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_ap" + default_ammo = /datum/ammo/bullet/pistol/ap + +/obj/item/ammo_box/rounds/pistol/ap/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/hp + name = "\improper pistol ammunition box (9mm HP)" + desc = "A 9mm hollow-point ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_hp" + default_ammo = /datum/ammo/bullet/pistol/hollow + +/obj/item/ammo_box/rounds/pistol/hp/empty + empty = TRUE + +/obj/item/ammo_box/rounds/pistol/incen + name = "\improper pistol ammunition box (9mm Incendiary)" + desc = "A 9mm incendiary ammunition box. Used to refill M4A3 magazines. It comes with a leather strap allowing to wear it on the back." + overlay_content = "_incen" + default_ammo = /datum/ammo/bullet/pistol/incendiary + +/obj/item/ammo_box/rounds/pistol/incen/empty + empty = TRUE diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 4767f443506b..8d7ab1532ade 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1400,7 +1400,7 @@ and you're good to go. var/damage_buff = BASE_BULLET_DAMAGE_MULT //if target is lying or unconscious - add damage bonus - if(attacked_mob.lying == TRUE || attacked_mob.stat == UNCONSCIOUS) + if(!(attacked_mob.mobility_flags & MOBILITY_STAND) || attacked_mob.stat == UNCONSCIOUS) damage_buff += BULLET_DAMAGE_MULT_TIER_4 projectile_to_fire.damage *= damage_buff //Multiply the damage for point blank. if(bullets_fired == 1) //First shot gives the PB message. @@ -1424,7 +1424,7 @@ and you're good to go. projectile_to_fire.give_bullet_traits(BP) if(bullets_fired > 1) BP.original = attacked_mob //original == the original target of the projectile. If the target is downed and this isn't set, the projectile will try to fly over it. Of course, it isn't going anywhere, but it's the principle of the thing. Very embarrassing. - if(!BP.handle_mob(attacked_mob) && attacked_mob.lying) //This is the 'handle impact' proc for a flying projectile, including hit RNG, on_hit_mob and bullet_act. If it misses, it doesn't go anywhere. We'll pretend it slams into the ground or punches a hole in the ceiling, because trying to make it bypass the xeno or shoot from the tile beyond it is probably more spaghet than my life is worth. + if(!BP.handle_mob(attacked_mob) && attacked_mob.body_position == LYING_DOWN) //This is the 'handle impact' proc for a flying projectile, including hit RNG, on_hit_mob and bullet_act. If it misses, it doesn't go anywhere. We'll pretend it slams into the ground or punches a hole in the ceiling, because trying to make it bypass the xeno or shoot from the tile beyond it is probably more spaghet than my life is worth. if(BP.ammo.sound_bounce) playsound(attacked_mob.loc, BP.ammo.sound_bounce, 35, 1) attacked_mob.visible_message(SPAN_AVOIDHARM("[BP] slams into [get_turf(attacked_mob)]!"), //Managing to miss an immobile target flat on the ground deserves some recognition, don't you think? @@ -1437,7 +1437,7 @@ and you're good to go. if(bullets_fired > 1) projectile_to_fire.original = attacked_mob - if(!projectile_to_fire.handle_mob(attacked_mob) && attacked_mob.lying) + if(!projectile_to_fire.handle_mob(attacked_mob) && attacked_mob.body_position == LYING_DOWN) if(projectile_to_fire.ammo.sound_bounce) playsound(attacked_mob.loc, projectile_to_fire.ammo.sound_bounce, 35, 1) attacked_mob.visible_message(SPAN_AVOIDHARM("[projectile_to_fire] slams into [get_turf(attacked_mob)]!"), diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index c567f7d684a2..9f0ddd04fc11 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -2685,7 +2685,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/attached_gun/grenade/unique_action(mob/user) if(!ishuman(usr)) return - if(!user.canmove || user.stat || user.is_mob_restrained() || !user.loc || !isturf(usr.loc)) + if(user.is_mob_incapacitated() || !isturf(usr.loc)) to_chat(user, SPAN_WARNING("Not right now.")) return diff --git a/code/modules/projectiles/gun_helpers.dm b/code/modules/projectiles/gun_helpers.dm index ba5f8e491590..8e73124a8b92 100644 --- a/code/modules/projectiles/gun_helpers.dm +++ b/code/modules/projectiles/gun_helpers.dm @@ -462,7 +462,7 @@ DEFINES in setup.dm, referenced here. /obj/item/weapon/gun/proc/get_active_firearm(mob/user, restrictive = TRUE) if(!ishuman(usr)) return - if(!user.canmove || user.stat || user.is_mob_restrained() || !user.loc || !isturf(usr.loc)) + if(user.is_mob_incapacitated() || !isturf(usr.loc)) to_chat(user, SPAN_WARNING("Not right now.")) return diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index 0e56efe7ab5d..18fb0bf44cd8 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -375,29 +375,6 @@ . = ..() set_fire_delay(FIRE_DELAY_TIER_7) -GLOBAL_LIST_EMPTY(flamer_particles) -/particles/flamer_fire - icon = 'icons/effects/particles/fire.dmi' - icon_state = "bonfire" - width = 100 - height = 100 - count = 1000 - spawning = 8 - lifespan = 0.7 SECONDS - fade = 1 SECONDS - grow = -0.01 - velocity = list(0, 0) - position = generator("box", list(-16, -16), list(16, 16), NORMAL_RAND) - drift = generator("vector", list(0, -0.2), list(0, 0.2)) - gravity = list(0, 0.95) - scale = generator("vector", list(0.3, 0.3), list(1,1), NORMAL_RAND) - rotation = 30 - spin = generator("num", -20, 20) - -/particles/flamer_fire/New(set_color) - ..() - color = set_color - /obj/flamer_fire name = "fire" desc = "Ouch!" @@ -454,10 +431,6 @@ GLOBAL_LIST_EMPTY(flamer_particles) set_light(l_color = R.burncolor) - if(!GLOB.flamer_particles[R.burncolor]) - GLOB.flamer_particles[R.burncolor] = new /particles/flamer_fire(R.burncolor) - particles = GLOB.flamer_particles[R.burncolor] - tied_reagent = new R.type() // Can't get deleted this way tied_reagent.make_alike(R) diff --git a/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm b/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm index 6d998002134c..356d0e6c3b48 100644 --- a/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm +++ b/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm @@ -190,7 +190,7 @@ smoke.start() playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) for(var/mob/living/carbon/C in backblast_loc) - if(!C.lying && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff + if(C.body_position == STANDING_UP && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life C.apply_effect(4, STUN) //For good measure C.apply_effect(6, STUTTER) @@ -362,7 +362,7 @@ smoke.start() playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) for(var/mob/living/carbon/C in backblast_loc) - if(!C.lying && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff + if(C.body_position == STANDING_UP && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life C.apply_effect(4, STUN) //For good measure C.apply_effect(6, STUTTER) diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm index 3fe2934259bf..0cd9d8dd16c8 100644 --- a/code/modules/projectiles/guns/specialist/sniper.dm +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -75,7 +75,7 @@ /datum/action/item_action/specialist/aimed_shot/can_use_action() var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && !H.lying && (holder_item == H.r_hand || holder_item || H.l_hand)) + if(istype(H) && !H.is_mob_incapacitated() && (holder_item == H.r_hand || holder_item || H.l_hand)) return TRUE /datum/action/item_action/specialist/aimed_shot/proc/use_ability(atom/A) @@ -450,7 +450,7 @@ . = ..() if(.) var/mob/living/carbon/human/PMC_sniper = user - if(PMC_sniper.lying == 0 && !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)) + 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) diff --git a/code/modules/projectiles/magazines/shotguns.dm b/code/modules/projectiles/magazines/shotguns.dm index 9f137b1c2316..6c103aaa9677 100644 --- a/code/modules/projectiles/magazines/shotguns.dm +++ b/code/modules/projectiles/magazines/shotguns.dm @@ -46,6 +46,14 @@ GLOBAL_LIST_INIT(shotgun_boxes_12g, list( default_ammo = /datum/ammo/bullet/shotgun/incendiary handful_state = "incendiary_slug" +/obj/item/ammo_magazine/shotgun/incendiarybuck + name = "box of incendiary buckshots" + desc = "A box filled with self-detonating buckshot incendiary shotgun rounds. 12 Gauge." + icon_state = "incendiarybuck" + item_state = "incendiarybuck" + default_ammo = /datum/ammo/bullet/shotgun/buckshot/incendiary + handful_state = "incen_buckshot" + /obj/item/ammo_magazine/shotgun/buckshot name = "box of buckshot shells" desc = "A box filled with buckshot spread shotgun shells. 12 Gauge." diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 0582b8a710d8..36bbcc03a8dc 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -565,7 +565,7 @@ X.behavior_delegate.on_hitby_projectile(ammo) . = TRUE - else if(!L.lying) + else if(L.body_position != LYING_DOWN) animatation_displace_reset(L) if(ammo.sound_miss) playsound_client(L.client, ammo.sound_miss, get_turf(L), 75, TRUE) L.visible_message(SPAN_AVOIDHARM("[src] misses [L]!"), @@ -814,8 +814,8 @@ //mobs use get_projectile_hit_chance instead of get_projectile_hit_boolean /mob/living/proc/get_projectile_hit_chance(obj/projectile/P) - if(lying && src != P.original) - return FALSE + if((body_position == LYING_DOWN || HAS_TRAIT(src, TRAIT_NESTED)) && src != P.original) + return FALSE // Snowflake check for xeno nests, because we want bullets to fly through even though they're standing in it var/ammo_flags = P.ammo.flags_ammo_behavior | P.projectile_override_flags if(ammo_flags & AMMO_XENO) if((status_flags & XENO_HOST) && HAS_TRAIT(src, TRAIT_NESTED)) @@ -823,7 +823,7 @@ . = P.get_effective_accuracy() - if(lying && stat) + if(body_position == LYING_DOWN && stat) . += 15 //Bonus hit against unconscious people. if(isliving(P.firer)) diff --git a/code/modules/reagents/chemistry_machinery/acid_harness.dm b/code/modules/reagents/chemistry_machinery/acid_harness.dm index ae54474c3aed..52a1a5f13bd7 100644 --- a/code/modules/reagents/chemistry_machinery/acid_harness.dm +++ b/code/modules/reagents/chemistry_machinery/acid_harness.dm @@ -443,7 +443,7 @@ else if(inject_conditions & ACID_SCAN_CONDITION_DEFIB && vitals_scan < ACID_VITALS_DEAD && last_vitals_scan & ACID_SCAN_CONDITION_DEATH) condition_scan |= ACID_SCAN_CONDITION_DEFIB //If we were previously dead and are now alive, we assume we got defibbed - if(inject_conditions & ACID_SCAN_CONDITION_CONCUSSION && (user.knocked_down || user.knocked_out)) + if(inject_conditions & ACID_SCAN_CONDITION_CONCUSSION && (HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || HAS_TRAIT(src, TRAIT_FLOORED))) condition_scan |= ACID_SCAN_CONDITION_CONCUSSION if(inject_conditions & ACID_SCAN_CONDITION_INTOXICATION && (user.dazed || user.slowed || user.confused || user.drowsyness || user.dizziness || user.druggy)) diff --git a/code/modules/reagents/chemistry_properties/prop_neutral.dm b/code/modules/reagents/chemistry_properties/prop_neutral.dm index a35fb5e554bf..3048b12ee296 100644 --- a/code/modules/reagents/chemistry_properties/prop_neutral.dm +++ b/code/modules/reagents/chemistry_properties/prop_neutral.dm @@ -199,7 +199,7 @@ M.druggy = min(M.druggy + 0.5 * potency * delta_time, potency * 10) /datum/chem_property/neutral/hallucinogenic/process_overdose(mob/living/M, potency = 1, delta_time) - if(isturf(M.loc) && !istype(M.loc, /turf/open/space) && M.canmove && !M.is_mob_restrained()) + if(isturf(M.loc) && !istype(M.loc, /turf/open/space) && (M.mobility_flags & MOBILITY_MOVE) && !M.is_mob_restrained()) step(M, pick(GLOB.cardinals)) M.hallucination += 10 M.make_jittery(5) diff --git a/code/modules/reagents/chemistry_properties/prop_positive.dm b/code/modules/reagents/chemistry_properties/prop_positive.dm index 971051e9bf88..8bf7eadc5d77 100644 --- a/code/modules/reagents/chemistry_properties/prop_positive.dm +++ b/code/modules/reagents/chemistry_properties/prop_positive.dm @@ -455,7 +455,7 @@ if(prob(10 * delta_time)) to_chat(M, SPAN_WARNING("You feel like you have the worst brain freeze ever!")) M.apply_effect(20, PARALYZE) - M.stunned = max(M.stunned,21) + M.apply_effect(20, STUN) /datum/chem_property/positive/neurocryogenic/process_overdose(mob/living/M, potency = 1, delta_time) M.bodytemperature = max(M.bodytemperature - 2.5 * potency * delta_time,0) diff --git a/code/modules/reagents/chemistry_reagents/drink.dm b/code/modules/reagents/chemistry_reagents/drink.dm index 3bd7336c32b6..66ce0844556b 100644 --- a/code/modules/reagents/chemistry_reagents/drink.dm +++ b/code/modules/reagents/chemistry_reagents/drink.dm @@ -555,7 +555,8 @@ /datum/reagent/neurotoxin/on_mob_life(mob/living/carbon/M) . = ..() if(!.) return - M.knocked_down = max(M.knocked_down, 3) + if(!HAS_TRAIT(src, TRAIT_FLOORED)) + M.apply_effect(5, WEAKEN) 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 6ffd14ea8ae3..d9be565a85b2 100644 --- a/code/modules/reagents/chemistry_reagents/toxin.dm +++ b/code/modules/reagents/chemistry_reagents/toxin.dm @@ -113,6 +113,7 @@ if(!. || deleted) return M.status_flags |= FAKEDEATH + ADD_TRAIT(M, TRAIT_IMMOBILIZED, FAKEDEATH_TRAIT) M.apply_damage(0.5*REM, OXY) M.apply_effect(2, WEAKEN) M.silent = max(M.silent, 10) @@ -125,6 +126,7 @@ var/mob/living/holder_mob = . holder_mob.status_flags &= ~FAKEDEATH + REMOVE_TRAIT(holder_mob, TRAIT_IMMOBILIZED, FAKEDEATH_TRAIT) /datum/reagent/toxin/mindbreaker name = "Mindbreaker Toxin" diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index b468116da5f2..4c60a9e345e0 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -112,7 +112,7 @@ // attack with hand, move pulled object onto conveyor /obj/structure/machinery/conveyor/attack_hand(mob/user as mob) - if ((!( user.canmove ) || user.is_mob_restrained() || !( user.pulling ))) + if (( user.is_mob_incapacitated() || !( user.pulling ))) return if (user.pulling.anchored) return diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 2ce4c992b80c..1522f0100c4e 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -222,7 +222,7 @@ ///Attempt to move while inside /obj/structure/machinery/disposal/relaymove(mob/living/user) - if(user.stat || user.stunned || user.knocked_down || flushing) + if(user.is_mob_incapacitated(TRUE) || flushing) return FALSE if(user.loc == src) go_out(user) @@ -234,9 +234,8 @@ user.client.eye = user.client.mob user.client.perspective = MOB_PERSPECTIVE user.forceMove(loc) - user.stunned = max(user.stunned, 2) //Action delay when going out of a bin - user.update_canmove() //Force the delay to go in action immediately - if(!user.lying) + user.apply_effect(2, STUN) + if(user.mobility_flags & MOBILITY_MOVE) user.visible_message(SPAN_WARNING("[user] suddenly climbs out of [src]!"), SPAN_WARNING("You climb out of [src] and get your bearings!")) update() @@ -305,8 +304,7 @@ if(isliving(AM)) var/mob/living/living = AM living.Stun(2) - living.update_canmove() //Force the delay to go in action immediately - if(!living.lying) + if(living.body_position == STANDING_UP) living.visible_message(SPAN_WARNING("[living] is suddenly pushed out of [src]!"), SPAN_WARNING("You get pushed out of [src] and get your bearings!")) update() diff --git a/code/modules/shuttle/computer.dm b/code/modules/shuttle/computer.dm index 3d0c8fca142d..4d94ae05f8c9 100644 --- a/code/modules/shuttle/computer.dm +++ b/code/modules/shuttle/computer.dm @@ -281,6 +281,8 @@ icon_state = "terminal" req_access = list() breakable = FALSE + ///If true, the lifeboat is in the process of launching, and so the code will not allow another launch. + var/launch_initiated = FALSE /obj/structure/machinery/computer/shuttle/lifeboat/attack_hand(mob/user) . = ..() @@ -293,23 +295,40 @@ switch(lifeboat.mode) if(SHUTTLE_IDLE) if(!istype(user, /mob/living/carbon/human)) - to_chat(user, SPAN_NOTICE("[src]'s screen says \"Awaiting confirmation of the evacuation order\".")) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unauthorized access. Please inform your supervisor\".")) return var/mob/living/carbon/human/human_user = user - if(!(ACCESS_MARINE_COMMAND in human_user.wear_id?.access)) - to_chat(user, SPAN_NOTICE("[src]'s screen says \"Awaiting confirmation of the evacuation order\".")) + if(!(ACCESS_MARINE_SENIOR in human_user.wear_id?.access) && !(ACCESS_MARINE_DROPSHIP in human_user.wear_id?.access)) + to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unauthorized access. Please inform your supervisor\".")) return if(SShijack.current_progress < SShijack.early_launch_required_progress) to_chat(user, SPAN_NOTICE("[src]'s screen says \"Unable to launch, fuel insufficient\".")) return - if(tgui_alert(user, "Early launch the lifeboat?", "Confirm", list("Yes", "No"), 10 SECONDS) == "Yes") - to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Early launch accepted\".")) - lifeboat.evac_launch() + if(launch_initiated) + to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Launch sequence already initiated\".")) return + var/response = tgui_alert(user, "Launch the lifeboat?", "Confirm", list("Yes", "No", "Emergency Launch"), 10 SECONDS) + if(launch_initiated) + to_chat(user, SPAN_NOTICE("[src]'s screen blinks and says \"Launch sequence already initiated\".")) + return + switch(response) + if ("Yes") + launch_initiated = TRUE + to_chat(user, "[src]'s screen blinks and says \"Launch command accepted\".") + shipwide_ai_announcement("Launch command received. [lifeboat.id == MOBILE_SHUTTLE_LIFEBOAT_PORT ? "Port" : "Starboard"] Lifeboat doors will close in 10 seconds.") + addtimer(CALLBACK(lifeboat, TYPE_PROC_REF(/obj/docking_port/mobile/crashable/lifeboat, evac_launch)), 10 SECONDS) + return + if ("Emergency Launch") + launch_initiated = TRUE + to_chat(user, "[src]'s screen blinks and says \"Emergency Launch command accepted\".") + lifeboat.evac_launch() + shipwide_ai_announcement("Emergency Launch command received. Launching [lifeboat.id == MOBILE_SHUTTLE_LIFEBOAT_PORT ? "Port" : "Starboard"] Lifeboat.") + return + if(SHUTTLE_IGNITING) to_chat(user, SPAN_NOTICE("[src]'s screen says \"Engines firing\".")) if(SHUTTLE_CALL) diff --git a/code/modules/shuttles/shuttle_console.dm b/code/modules/shuttles/shuttle_console.dm index 816447658f13..96cc72970f3b 100644 --- a/code/modules/shuttles/shuttle_console.dm +++ b/code/modules/shuttles/shuttle_console.dm @@ -82,8 +82,6 @@ GLOBAL_LIST_EMPTY(shuttle_controls) user.visible_message(SPAN_NOTICE("[user] starts to type on the [src]."), SPAN_NOTICE("You try to take back the control over the shuttle. It will take around 3 minutes.")) if(do_after(user, 3 MINUTES, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) - if(user.lying) - return 0 shuttle.last_locked = world.time shuttle.queen_locked = 0 shuttle.last_door_override = world.time diff --git a/code/modules/sorokyne/sorokyne_cold_water.dm b/code/modules/sorokyne/sorokyne_cold_water.dm index adf7e3de6228..345014a1e460 100644 --- a/code/modules/sorokyne/sorokyne_cold_water.dm +++ b/code/modules/sorokyne/sorokyne_cold_water.dm @@ -48,13 +48,13 @@ var/dam_amount = COLD_WATER_DAMAGE if(issynth(M) || isyautja(M)) dam_amount -= 0.5 - if(M.lying) - M.apply_damage(5*dam_amount,BURN) - else + if(M.body_position == STANDING_UP) M.apply_damage(dam_amount,BURN,"l_leg") M.apply_damage(dam_amount,BURN,"l_foot") M.apply_damage(dam_amount,BURN,"r_leg") M.apply_damage(dam_amount,BURN,"r_foot") + else + M.apply_damage(5*dam_amount,BURN) if (ishuman(M)) if (M.bodytemperature > MINIMUM_TEMP) diff --git a/code/modules/surgery/surgery_initiator.dm b/code/modules/surgery/surgery_initiator.dm index 8b7506c9b7b8..706b28d0e94e 100644 --- a/code/modules/surgery/surgery_initiator.dm +++ b/code/modules/surgery/surgery_initiator.dm @@ -43,7 +43,7 @@ continue //Lying and self-surgery checks. - if(surgeryloop.lying_required && !target.lying) + if(surgeryloop.lying_required && target.body_position != LYING_DOWN) continue if(!surgeryloop.self_operable && target == user) continue @@ -134,7 +134,7 @@ [target_zone == "r_hand"||target_zone == "l_hand" ? "hand":"arm"] you're using!")) return TRUE - if(surgeryinstance.lying_required && !target.lying) + if(surgeryinstance.lying_required && target.body_position != LYING_DOWN) return TRUE if(surgery_limb) diff --git a/code/modules/surgery/surgery_procedure.dm b/code/modules/surgery/surgery_procedure.dm index 1e11516a8079..8620c557eb4b 100644 --- a/code/modules/surgery/surgery_procedure.dm +++ b/code/modules/surgery/surgery_procedure.dm @@ -90,7 +90,7 @@ to_chat(user, SPAN_WARNING("You can't operate on [target], \he is being carried by [target.pulledby]!")) return FALSE - if(lying_required && !target.lying) + if(lying_required && target.body_position != LYING_DOWN) to_chat(user, SPAN_WARNING("[user == target ? "You need" : "[target] needs"] to be lying down for this operation!")) return FALSE diff --git a/code/modules/tgui/status_composers.dm b/code/modules/tgui/status_composers.dm index 6d7b5897863e..ba1b29d8152e 100644 --- a/code/modules/tgui/status_composers.dm +++ b/code/modules/tgui/status_composers.dm @@ -56,17 +56,6 @@ /mob/living/silicon/proc/get_ui_access(atom/source) return UI_INTERACTIVE // Ubiquitous networking. Do not abuse. -/// Returns UI_INTERACTIVE if the user is conscious and lying down. -/// Returns UI_UPDATE otherwise. -/proc/ui_status_user_is_conscious_and_lying_down(mob/user) - if (!isliving(user)) - return UI_UPDATE - - var/mob/living/living_user = user - return (living_user.lying && living_user.stat == CONSCIOUS) \ - ? UI_INTERACTIVE \ - : UI_UPDATE - /// Return UI_INTERACTIVE if the user is strictly adjacent to the target atom, whether they can see it or not. /// Return UI_CLOSE otherwise. /proc/ui_status_user_strictly_adjacent(mob/user, atom/target) diff --git a/code/modules/vehicles/interior/interactable/seats.dm b/code/modules/vehicles/interior/interactable/seats.dm index 1e5df9fd1d81..ea961bc72593 100644 --- a/code/modules/vehicles/interior/interactable/seats.dm +++ b/code/modules/vehicles/interior/interactable/seats.dm @@ -388,17 +388,6 @@ handle_rotation() -/obj/structure/bed/chair/vehicle/unbuckle() - if(buckled_mob && buckled_mob.buckled == src) - buckled_mob.buckled = null - buckled_mob.anchored = initial(buckled_mob.anchored) - buckled_mob.update_canmove() - - var/M = buckled_mob - buckled_mob = null - - afterbuckle(M) - //attack handling /obj/structure/bed/chair/vehicle/attack_alien(mob/living/user) diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm index 92358a1e0f27..cbad4535df72 100644 --- a/code/modules/vehicles/train.dm +++ b/code/modules/vehicles/train.dm @@ -54,8 +54,8 @@ //------------------------------------------- -/obj/vehicle/train/MouseDrop_T(atom/movable/C, mob/user as mob) - if(user.buckled || user.stat || user.is_mob_restrained() || !Adjacent(user) || !user.Adjacent(C) || !istype(C) || (user == C && !user.canmove)) +/obj/vehicle/train/MouseDrop_T(atom/movable/C, mob/living/user as mob) + if(user.buckled || user.stat || user.is_mob_restrained() || !Adjacent(user) || !user.Adjacent(C) || !istype(C) || (user == C && !(user.mobility_flags & MOBILITY_MOVE))) return if(istype(C,/obj/vehicle/train)) latch(C, user) @@ -71,7 +71,7 @@ if(!istype(usr, /mob/living/carbon/human)) return - if(!usr.canmove || usr.stat || usr.is_mob_restrained() || !Adjacent(usr)) + if(usr.is_mob_incapacitated() || !Adjacent(usr)) return unattach(usr) diff --git a/code/modules/vehicles/van/van.dm b/code/modules/vehicles/van/van.dm index fdb2f397bb2e..c4aa64360ec0 100644 --- a/code/modules/vehicles/van/van.dm +++ b/code/modules/vehicles/van/van.dm @@ -92,13 +92,13 @@ if(mover in mobs_under) //can't collide with the thing you're buckled to return NO_BLOCKED_MOVEMENT - if(ismob(mover)) - var/mob/M = mover + if(isliving(mover)) + var/mob/living/M = mover if(M.mob_flags & SQUEEZE_UNDER_VEHICLES) add_under_van(M) return NO_BLOCKED_MOVEMENT - if(M.lying) + if(M.body_position == LYING_DOWN) return NO_BLOCKED_MOVEMENT if(M.mob_size >= MOB_SIZE_IMMOBILE && next_push < world.time) diff --git a/colonialmarines.dme b/colonialmarines.dme index df6c6c1bccb6..16b54d55aa98 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -144,6 +144,7 @@ #include "code\__HELPERS\#maths.dm" #include "code\__HELPERS\_lists.dm" #include "code\__HELPERS\_time.dm" +#include "code\__HELPERS\animations.dm" #include "code\__HELPERS\chat.dm" #include "code\__HELPERS\cmp.dm" #include "code\__HELPERS\datums.dm" @@ -165,6 +166,7 @@ #include "code\__HELPERS\qdel.dm" #include "code\__HELPERS\sanitize_values.dm" #include "code\__HELPERS\shell.dm" +#include "code\__HELPERS\status_effects.dm" #include "code\__HELPERS\text.dm" #include "code\__HELPERS\traits.dm" #include "code\__HELPERS\type2type.dm" @@ -1088,6 +1090,7 @@ #include "code\game\objects\items\devices\radio\encryptionkey.dm" #include "code\game\objects\items\devices\radio\headset.dm" #include "code\game\objects\items\devices\radio\intercom.dm" +#include "code\game\objects\items\devices\radio\listening_bugs.dm" #include "code\game\objects\items\devices\radio\radio.dm" #include "code\game\objects\items\explosives\explosive.dm" #include "code\game\objects\items\explosives\mine.dm" @@ -1287,6 +1290,7 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\hydroponics.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\kitchen.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\medical.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\personal.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\scientist.dm" diff --git a/html/changelogs/AutoChangeLog-pr-4976.yml b/html/changelogs/AutoChangeLog-pr-4976.yml new file mode 100644 index 000000000000..2a0de1ec20d0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4976.yml @@ -0,0 +1,4 @@ +author: "zzzmike, drathek, ihatethisengine2" +delete-after: True +changes: + - rscadd: "Lifeboat launch now has an ARES announcement followed by a 10 second delay before doors close. The current launch functionality is preserved as Emergency Launch." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5021.yml b/html/changelogs/AutoChangeLog-pr-5021.yml deleted file mode 100644 index 729b67fb29f1..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5021.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SabreML" -delete-after: True -changes: - - qol: "Made the squad prep attachments vendors vend items into the user's hands." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5024.yml b/html/changelogs/AutoChangeLog-pr-5024.yml deleted file mode 100644 index 2598c60a3320..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5024.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Fixes vendor sprites not updating icon when fully repaired\n/🆑" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5025.yml b/html/changelogs/AutoChangeLog-pr-5025.yml deleted file mode 100644 index 0144cc0b59fc..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5025.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "hislittlecuzingames" -delete-after: True -changes: - - bugfix: "Disables launch announcment alarm if it's sounding when queen hijacks" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5029.yml b/html/changelogs/AutoChangeLog-pr-5029.yml deleted file mode 100644 index 50be75c613d6..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5029.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Doubleumc" -delete-after: True -changes: - - bugfix: "CORSAT poddoors no longer have extra sprites overlaid on them" - - maptweak: "CORSAT LZs can be used by shuttles" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5033.yml b/html/changelogs/AutoChangeLog-pr-5033.yml deleted file mode 100644 index 6d3553d51576..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5033.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SabreML" -delete-after: True -changes: - - rscadd: "Made the character preview in the character creation menu show the 'Preferred Armor' setting." - - bugfix: "Fixed 'Padded' armour being replaced by the user's armour style preference when vended." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5036.yml b/html/changelogs/AutoChangeLog-pr-5036.yml deleted file mode 100644 index 668158a722a8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5036.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Zonespace27" -delete-after: True -changes: - - bugfix: "The Self Destruct timer in the status panel will now stop once SD has gone off." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5037.yml b/html/changelogs/AutoChangeLog-pr-5037.yml deleted file mode 100644 index eb67c0c171cc..000000000000 --- a/html/changelogs/AutoChangeLog-pr-5037.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Fix lesser drone crash on getting gibbed." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5083.yml b/html/changelogs/AutoChangeLog-pr-5083.yml new file mode 100644 index 000000000000..8688793c2ffb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5083.yml @@ -0,0 +1,4 @@ +author: "Ediblebomb" +delete-after: True +changes: + - rscadd: "M5 Helmet Gasmask now functions as a gasmask when in a marine helmet (and yes, gasmasks do still have some functionality)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5121.yml b/html/changelogs/AutoChangeLog-pr-5121.yml new file mode 100644 index 000000000000..5daa315b8e9f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5121.yml @@ -0,0 +1,4 @@ +author: "SabreML" +delete-after: True +changes: + - spellcheck: "Fixed instances of \"The the\" and \"A the\" in chat messages so that they're just \"The\" instead. (Part 2)" \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index f07814a4a06c..02e7bf43396b 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -367,3 +367,59 @@ for TL Nanu308: - rscdel: Removed the Pizza Cutter. +2023-11-27: + Birdtalon: + - bugfix: "Fixes vendor sprites not updating icon when fully repaired\n/\U0001F191" + - bugfix: Fix lesser drone crash on getting gibbed. + Doubleumc: + - bugfix: CORSAT poddoors no longer have extra sprites overlaid on them + - maptweak: CORSAT LZs can be used by shuttles + HeresKozmos: + - rscadd: Added eight new tunnels to Sorokyne + - rscdel: Removed the original five tunnels on Sorokyne + SabreML: + - rscadd: Made the character preview in the character creation menu show the 'Preferred + Armor' setting. + - bugfix: Fixed 'Padded' armour being replaced by the user's armour style preference + when vended. + - qol: Made the squad prep attachments vendors vend items into the user's hands. + Zonespace27: + - bugfix: The Self Destruct timer in the status panel will now stop once SD has + gone off. + hislittlecuzingames: + - bugfix: Disables launch announcment alarm if it's sounding when queen hijacks +2023-11-28: + Birdtalon: + - rscadd: Eggsac carrier can now place eggs on normal weeds to a maximum of 4 eggs. + - rscadd: Eggsac carrier eggs on normal weeds have an expiry date. + fira: + - code_imp: Ported basic /tg/ Status Backend. + - rscadd: Human transform changes such as lying down, knock down, buckling, are + now animated. + - bugfix: Some statuses will now take effect immediately instead of waiting for + a life tick, notably Resting. + - balance: Many interaction requirements were changed to eg. fail upon stuns rather + than if lying down. + stalkerino: + - rscadd: readds skull facepaint and skull balaclava (blue and black) +2023-11-29: + realforest2001: + - rscdel: Whiskey Outpost no longer rolls pred rounds naturally. +2023-11-30: + Birdtalon: + - code_imp: Refactiors xenomorph initialize & removes some duplicate proc calls + HeresKozmos: + - mapadd: added a new spring area to kutjevo's south caves + Huffie56: + - rscadd: Added a lot's of food boxes for that hold the basic ingredients for cooking. + - rscadd: Added a file to handle the fridges in almayer kitchen. + - rscadd: Added a vendor in the kitchen that sell boxes of ingredients. + - rscadd: Added a a food crate called surplus boxes ingredient containing random + boxes of ingredients. + - rscadd: Added a version of this crate that will be freely given via the ASR system. + SabreML: + - bugfix: Fixed a few space tiles under a window in Kutjevo Refinery. + harryob: + - bugfix: the health indicator in the tooltip and colorbox is still present when + a POI has 0 health + - bugfix: admins can refresh the orbit menu without runtimes diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml new file mode 100644 index 000000000000..f6213027ce92 --- /dev/null +++ b/html/changelogs/archive/2023-12.yml @@ -0,0 +1,85 @@ +2023-12-01: + Birdtalon: + - bugfix: Eggsac fragile eggs can be placed on hardy weeds. + Morrow: + - rscdel: Removed flame particles. Possibly increases performance for some players. + Zonespace27: + - bugfix: Resin holes can no longer be planted below stairs +2023-12-02: + 567Turtle: + - rscadd: Brown boots and gloves are now vendable from the surplus vendors. + Birdtalon: + - rscadd: '"Infernal" name prefix for xeno who rolls number 666' + - code_imp: Refactors xeno name generation. Larva name generation and removes some + istype(src) + - bugfix: 'Restricts burrower tunnels to alphanumeric characters as some other characters + break the tunnel. + + code; Adds new proc to replace non alphanumeric or space characters.' + Morrow: + - code_imp: Corrected a check to avoid repeat work in /datum/asset/spritesheet/vending_products/register() + realforest2001: + - rscadd: Added disguisable listening bugs/devices. MPs have two outside CMP office, + the CL has two in their bedroom. + - bugfix: Fixes incorrect frequencies being used to display channel names on radios. + - bugfix: Radios and tape recorders placed on tables or placed inside webbing can + now hear speech again. +2023-12-03: + BadAtThisGame302: + - rscadd: Added a flavor diary entry from the Director of Lambda + - mapadd: added back the old vault nightmare insert on Solaris which was removed + due to the creation of static comms where it spawned + - maptweak: tweaked the Lambda Director's Office + - maptweak: tweaked the Lambda Administration Office + - maptweak: tweaked the Lambda Relaxation Room + SpartanBobby: + - maptweak: Redetails Almayer Squad briefing rooms + blackdragonTOW: + - maptweak: Standardized the names of LZs to include the name of the LZ. + stalkerino: + - bugfix: fixes the skull facepaint, black mask, blue mask +2023-12-04: + Birdtalon: + - bugfix: "Upgraded resin walls can now nest hosts.\n/\U0001F191" + - rscadd: Radial Menu for xeno Evolve + IowaPotatoFarmer: + - rscadd: Added a Corporate Liaison survivor to Sorokyne. + - rscadd: Added a modified version of the liaison's winter coat that allows it to + holster guns and a few other things. Only available to the Sorokyne Strata Corporate + Liaison for now. + - spellcheck: Fixed a typo in the Sorokyne Strata Political Prisoner's ID tag. + MrDas: + - bugfix: Observer minimap should no longer occasionally show wrong / no map. + SabreML: + - ui: Removed the scrollbar from the 'Player setup' menu. + cuberound: + - bugfix: fixed a runtime in /datum/component/healing_reduction/process(delta_time) + ihatethisengine: + - rscadd: Whiskey outpost is voteable less often and requires 140 players. + realforest2001: + - bugfix: Fixes /spec_kit/asrs (now /spec_kit/rifleman) not allowing use. + - code_imp: Adds back-end functionality for token redeeming on cm_vending vendors, + and moves synth experimental tools token to use it. + - rscadd: Spec tokens are real. +2023-12-05: + Birdtalon: + - bugfix: "Fixes a runtime in vendors\n/\U0001F191" + Huffie56: + - rscadd: added new sections(Binoculars, Utilities, Helmet Optics, Radio keys, and + fill them with items already in the vendor. + - qol: move the section called pouches just above utilities section. + - qol: changed the section called "Supplies" to "engineering supplies" and fill + it with C4 and APC circuit board . + SabreML: + - spellcheck: Fixed instances of "The the" and "A the" in chat messages so that + they're just "The" instead. (Part 1) + Tsurupeta: + - bugfix: fixed saving of certain preferences. + silencer_pl: + - admin: Recieving prayers now makes a sound + - admin: Prayers and USCM emergency messages are now better highlighted for mods/admins +2023-12-06: + Birdtalon: + - bugfix: "Fixes runtime in spiders.dm\n/\U0001F191" + Blundir: + - rscadd: added new ammo boxes for various weapons and ammo diff --git a/icons/mob/xenos/radial_xenos.dmi b/icons/mob/xenos/radial_xenos.dmi new file mode 100644 index 000000000000..2832f42fda33 Binary files /dev/null and b/icons/mob/xenos/radial_xenos.dmi differ diff --git a/icons/obj/items/food.dmi b/icons/obj/items/food.dmi index 3c2e963e3804..54de858ffc9c 100644 Binary files a/icons/obj/items/food.dmi and b/icons/obj/items/food.dmi differ diff --git a/icons/obj/items/food_ingredients.dmi b/icons/obj/items/food_ingredients.dmi index 3e30f51153c0..c0a0213e6db4 100644 Binary files a/icons/obj/items/food_ingredients.dmi and b/icons/obj/items/food_ingredients.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi index 6c5d741ef9b8..42e7c54bbd2b 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/boxes_and_lids.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi b/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi index 3355358f72f9..eeef3f91412d 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/handfuls.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi b/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi index c56cb4deea9c..ff0c6d60d4ac 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/magazines.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi index dd08bf7e69b1..911b727ba5f6 100644 Binary files a/icons/obj/items/weapons/guns/ammo_boxes/text.dmi and b/icons/obj/items/weapons/guns/ammo_boxes/text.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi index 51bc441aefaa..f6bddae9b090 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi differ diff --git a/icons/rebase_icons.dmi b/icons/rebase_icons.dmi index 6b0a25a1f7e6..14c19d8b27e6 100644 Binary files a/icons/rebase_icons.dmi and b/icons/rebase_icons.dmi differ diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index 2cdf06d411c7..6a90f35e4de3 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -119,7 +119,7 @@ /area/bigredv2/outside/space_port) "aau" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Communications Landing Zone" + name = "LZ1: Communications Landing Zone" }, /turf/open/floor/plating, /area/bigredv2/outside/space_port) @@ -2548,7 +2548,8 @@ "ahv" = ( /obj/structure/surface/table/holotable/wood, /obj/item/paper_bin, -/turf/open/floor/wood, +/obj/item/tool/pen/clicky, +/turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "ahw" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -3147,6 +3148,15 @@ /area/bigredv2/outside/marshal_office) "ajd" = ( /obj/structure/surface/table/holotable/wood, +/obj/structure/transmitter/colony_net/rotary{ + phone_category = "Lambda Labs"; + phone_color = "blue"; + phone_id = "Administration" + }, +/obj/item/clothing/mask/cigarette{ + pixel_x = 5; + pixel_y = 6 + }, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "aje" = ( @@ -3198,7 +3208,8 @@ /area/bigredv2/outside/dorms) "ajm" = ( /obj/structure/filingcabinet, -/obj/effect/landmark/objective_landmark/science, +/obj/effect/landmark/objective_landmark/close, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "ajn" = ( @@ -3410,8 +3421,8 @@ /turf/open/floor, /area/bigredv2/outside/marshal_office) "ajO" = ( -/obj/structure/surface/table/holotable/wood, -/obj/item/tool/pen, +/obj/structure/machinery/prop/almayer/computer/PC, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "ajP" = ( @@ -3501,8 +3512,8 @@ }, /area/bigredv2/outside/nw) "aka" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/landmark/objective_landmark/close, +/obj/structure/machinery/faxmachine, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "akc" = ( @@ -4484,16 +4495,14 @@ /turf/open/floor/plating, /area/bigredv2/outside/dorms) "amW" = ( -/obj/structure/machinery/door_control{ - id = "safe_room"; - layer = 4; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -5; - req_access_txt = "7"; - specialfunctions = 4 +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/crate/freezer/rations, +/turf/open/floor{ + dir = 1; + icon_state = "elevatorshaft" }, -/turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/lambda/breakroom) "amX" = ( /obj/structure/window/framed/solaris/reinforced, @@ -5896,9 +5905,13 @@ }, /area/bigredv2/outside/general_offices) "aqX" = ( -/obj/structure/closet/crate/freezer/rations, /obj/item/storage/toolbox/mechanical, /obj/item/device/multitool, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/surface/rack, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -5914,8 +5927,15 @@ }, /area/bigredv2/caves/lambda/breakroom) "aqZ" = ( -/obj/structure/closet/fireaxecabinet{ - pixel_y = 32 +/obj/structure/noticeboard{ + dir = 1; + pixel_y = 30; + desc = "A board for pinning important items upon."; + name = "trophy board" + }, +/obj/item/XenoBio/Chitin{ + pixel_y = 27; + anchored = 1 }, /turf/open/floor{ dir = 1; @@ -5923,8 +5943,11 @@ }, /area/bigredv2/caves/lambda/breakroom) "ara" = ( -/obj/structure/surface/table/holotable/wood, -/obj/item/device/flashlight/lamp, +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp{ + pixel_y = 15 + }, +/obj/item/paper/bigred/lambda, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6141,9 +6164,7 @@ /obj/item/ammo_magazine/shotgun/incendiary, /obj/item/ammo_magazine/shotgun/incendiary, /obj/item/weapon/gun/shotgun/combat, -/obj/structure/window/reinforced{ - dir = 1 - }, +/obj/structure/machinery/door/window/eastleft, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6157,7 +6178,7 @@ /area/bigredv2/caves/lambda/breakroom) "arG" = ( /obj/structure/bed, -/obj/item/bedsheet/captain, +/obj/item/bedsheet/rd, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6387,8 +6408,9 @@ /area/bigredv2/outside/ne) "asn" = ( /obj/structure/surface/rack, -/obj/structure/window/reinforced, /obj/item/clothing/suit/armor/vest, +/obj/structure/machinery/door/window/eastright, +/obj/structure/window/reinforced, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6405,9 +6427,7 @@ }, /area/bigredv2/caves/lambda/breakroom) "asp" = ( -/obj/structure/bed/chair/office/light{ - dir = 4 - }, +/obj/structure/bed/chair/comfy/black, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "asq" = ( @@ -6417,7 +6437,7 @@ }, /area/bigredv2/outside/medical) "asr" = ( -/obj/structure/bed/chair{ +/obj/structure/bed/chair/comfy{ dir = 8 }, /turf/open/floor/carpet, @@ -6690,9 +6710,12 @@ /area/bigredv2/outside/chapel) "ate" = ( /obj/structure/machinery/door_control{ - id = "safe_blast"; - name = "Blast Door"; - pixel_y = -25 + id = "safe_room"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -28; + req_access_txt = "106"; + specialfunctions = 4 }, /turf/open/floor{ dir = 1; @@ -6700,12 +6723,8 @@ }, /area/bigredv2/caves/lambda/breakroom) "atf" = ( -/obj/structure/closet/crate/medical, -/obj/item/storage/firstaid/adv, -/obj/item/storage/firstaid/o2, -/obj/item/storage/firstaid/toxin, -/obj/item/storage/firstaid/rad, -/obj/effect/landmark/objective_landmark/medium, +/obj/structure/closet/secure_closet/RD, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 1; icon_state = "elevatorshaft" @@ -6918,7 +6937,7 @@ dir = 1; icon_state = "door_locked"; id = "safe_room"; - name = "\improper Lambda Lab Secure Storage" + name = "\improper Lambda Lab Director's Safe Room" }, /turf/open/floor{ icon_state = "delivery" @@ -7145,7 +7164,7 @@ /area/bigredv2/outside/office_complex) "aum" = ( /obj/structure/machinery/door/airlock/almayer/research/glass/colony{ - name = "\improper Lambda Lab Administration Office" + name = "\improper Lambda Lab Director's Office" }, /turf/open/floor{ icon_state = "delivery" @@ -7718,7 +7737,6 @@ /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "avN" = ( -/obj/structure/bed/chair, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) @@ -7982,8 +8000,19 @@ /turf/open/mars, /area/bigredv2/outside/ne) "awz" = ( -/obj/structure/surface/table/holotable/wood, -/obj/item/XenoBio/Chitin, +/obj/item/ashtray/bronze{ + pixel_x = -7 + }, +/obj/item/trash/cigbutt, +/obj/item/trash/cigbutt{ + pixel_x = 7; + pixel_y = 7 + }, +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 14 + }, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "awA" = ( @@ -7998,13 +8027,12 @@ }, /area/bigredv2/caves/lambda/research) "awB" = ( -/obj/structure/surface/table/holotable/wood, -/obj/item/reagent_container/food/drinks/coffee, /obj/structure/transmitter/colony_net/rotary{ phone_category = "Lambda Labs"; phone_color = "blue"; - phone_id = "Administration" + phone_id = "Director" }, +/obj/structure/surface/table/woodentable/fancy, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "awC" = ( @@ -8253,10 +8281,10 @@ }, /area/bigredv2/caves/lambda/virology) "axo" = ( -/obj/structure/bed/chair/office/light{ +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/structure/bed/chair/comfy/black{ dir = 8 }, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "axp" = ( @@ -8711,6 +8739,12 @@ /area/bigredv2/caves/lambda/breakroom) "ayB" = ( /obj/structure/machinery/light, +/obj/structure/surface/table/woodentable, +/obj/item/storage/fancy/cigarettes/wypacket{ + pixel_x = -5; + pixel_y = 4 + }, +/obj/item/tool/lighter/zippo, /turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "ayC" = ( @@ -10831,8 +10865,10 @@ }, /area/bigredv2/caves/lambda/research) "aEs" = ( -/obj/structure/surface/table/holotable/wood, -/turf/open/floor/wood, +/obj/structure/bed/chair/comfy/lime{ + dir = 8 + }, +/turf/open/floor/carpet, /area/bigredv2/caves/lambda/breakroom) "aEt" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -11491,9 +11527,7 @@ }, /area/bigredv2/caves/lambda/research) "aGh" = ( -/obj/structure/bed/chair/office/light{ - dir = 1 - }, +/obj/structure/filingcabinet/filingcabinet, /turf/open/floor/wood, /area/bigredv2/caves/lambda/breakroom) "aGi" = ( @@ -19537,7 +19571,7 @@ /turf/open/floor, /area/bigredv2/outside/cargo) "bcy" = ( -/obj/structure/machinery/vending/cigarette, +/obj/structure/machinery/vending/cigarette/colony, /turf/open/floor, /area/bigredv2/outside/cargo) "bcz" = ( @@ -21454,7 +21488,7 @@ /area/bigredv2/outside/space_port_lz2) "biI" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Engineering Landing Zone" + name = "LZ2: Engineering Landing Zone" }, /turf/open/floor/plating, /area/bigredv2/outside/space_port_lz2) @@ -29670,6 +29704,10 @@ icon_state = "darkyellowcorners2" }, /area/bigredv2/caves/eta/living) +"fnv" = ( +/obj/structure/bed/chair/comfy, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "fnO" = ( /turf/open/mars_cave{ icon_state = "mars_cave_13" @@ -30300,7 +30338,7 @@ do_not_disturb = 1; phone_category = "Lambda Labs"; phone_color = "red"; - phone_id = "Secure Storage"; + phone_id = "Director's Safe Room"; pixel_x = -18 }, /turf/open/floor{ @@ -30986,7 +31024,7 @@ }, /area/bigredv2/outside/lambda_cave_cas) "hSP" = ( -/obj/structure/machinery/vending/cigarette, +/obj/structure/machinery/vending/cigarette/colony, /turf/open/mars_cave{ icon_state = "mars_dirt_6" }, @@ -32672,6 +32710,12 @@ icon_state = "wood" }, /area/bigredv2/outside/admin_building) +"kIF" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "kIW" = ( /obj/structure/fence, /turf/open/floor{ @@ -33067,6 +33111,12 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves) +"lAF" = ( +/obj/item/paper_bin, +/obj/item/tool/pen, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/wood, +/area/bigredv2/caves/lambda/breakroom) "lAK" = ( /obj/effect/landmark/static_comms/net_two, /turf/open/floor{ @@ -34629,6 +34679,10 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/research) +"orT" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "orZ" = ( /obj/structure/closet/secure_closet/atmos_personal, /obj/effect/landmark/objective_landmark/medium, @@ -36192,6 +36246,12 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"reL" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "vault_v2" + }, +/turf/closed/wall/solaris/rock, +/area/bigredv2/caves) "rfe" = ( /obj/structure/platform/kutjevo/rock{ dir = 8 @@ -36653,6 +36713,17 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"rUs" = ( +/obj/structure/machinery/door_control{ + id = "safe_room"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 28; + req_access_txt = "106"; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/bigredv2/caves/lambda/breakroom) "rUN" = ( /obj/structure/platform{ dir = 4 @@ -37316,6 +37387,10 @@ icon_state = "mars_cave_19" }, /area/bigredv2/outside/lz2_south_cas) +"sUQ" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/wood, +/area/bigredv2/caves/lambda/breakroom) "sWa" = ( /obj/item/ore{ pixel_x = 12; @@ -39478,6 +39553,10 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"wCs" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/carpet, +/area/bigredv2/caves/lambda/breakroom) "wDa" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = 6 @@ -76696,9 +76775,9 @@ asn gvI amk ajm -aqc +sUQ avM -aqc +lAF aka amk tQw @@ -76914,9 +76993,9 @@ atc amk auj auY -auY +fnv awz -ahv +aqc amk aao tQw @@ -77341,14 +77420,14 @@ adZ afd afd adZ -aqY +amW arF arF ate -amW -aqc -auY +amk +rUs auY +fnv awB aqc amk @@ -78001,7 +78080,7 @@ agd agd amX awC -axp +kIF axp ayA amk @@ -78220,7 +78299,7 @@ avO auY aqc axT -auY +wCs amk anI aAM @@ -78437,7 +78516,7 @@ auy auY aqc aqc -auY +orT amk anI aAN @@ -78652,8 +78731,8 @@ agd agd amX awD -auY -auY +aEs +aEs ayB amk anI @@ -78859,8 +78938,8 @@ adZ anQ amK adZ -aEs -aGh +sUQ +aqc aqc asp aqc @@ -79077,7 +79156,7 @@ anR amM adZ adZ -aqc +aGh ahv ajd aqc @@ -79295,7 +79374,7 @@ anS apv adZ adZ -aqc +auY asr aqc amX @@ -82127,7 +82206,7 @@ aao aao jgW aig -aao +reL aao anI anI diff --git a/maps/map_files/BigRed/sprinkles/25.vault_v2.dmm b/maps/map_files/BigRed/sprinkles/25.vault_v2.dmm index 566f892d6fdd..f62f085e7ea2 100644 --- a/maps/map_files/BigRed/sprinkles/25.vault_v2.dmm +++ b/maps/map_files/BigRed/sprinkles/25.vault_v2.dmm @@ -1,508 +1,652 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( -/turf/open/mars, -/area/bigredv2/outside/c) +/obj/structure/inflatable/popped/door, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -11; + pixel_y = 10 + }, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ab" = ( -/turf/open/mars{ - icon_state = "mars_dirt_8" +/obj/effect/decal/cleanable/blood/drip{ + pixel_y = 6 }, -/area/bigredv2/outside/c) +/turf/open/floor{ + dir = 4; + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ac" = ( +/obj/item/tool/pickaxe/drill, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ - icon_state = "mars_dirt_4" + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "ad" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/outside/c) +/obj/effect/glowshroom, +/turf/open/mars_cave, +/area/bigredv2/caves_lambda) "ae" = ( -/turf/open/mars{ - icon_state = "mars_dirt_3" +/obj/effect/glowshroom, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "af" = ( -/obj/effect/landmark/crap_item, -/turf/open/mars, -/area/bigredv2/outside/c) +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" + }, +/area/bigredv2/caves_lambda) "ag" = ( -/turf/open/mars{ - icon_state = "mars_dirt_9" +/obj/structure/barricade/wooden, +/turf/open/floor{ + dir = 4; + icon_state = "darkpurplecorners2" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves/lambda/breakroom) "ah" = ( -/turf/open/mars{ - icon_state = "mars_dirt_13" +/obj/effect/glowshroom, +/turf/open/mars_cave{ + icon_state = "mars_cave_10" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "ai" = ( -/turf/open/mars{ - icon_state = "mars_dirt_10" +/turf/open/mars_cave{ + icon_state = "mars_cave_6" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "aj" = ( -/turf/open/mars{ - icon_state = "mars_dirt_14" +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_cave_11" }, -/area/bigredv2/outside/c) +/area/bigredv2/caves_lambda) "ak" = ( +/turf/closed/wall/solaris/rock, +/area/bigredv2/caves) +"al" = ( +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor{ - dir = 1; - icon_state = "asteroidwarning" + dir = 4; + icon_state = "darkpurplecorners2" }, -/area/bigredv2/outside/c) -"al" = ( -/turf/closed/wall/solaris/reinforced, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "am" = ( -/obj/structure/largecrate/hunter_games_guns/mediocre, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/machinery/door_control{ + id = "sci_br"; + name = "Observation Shutters"; + pixel_y = 28 + }, +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "an" = ( -/obj/structure/largecrate/supply/floodlights, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/effect/decal/cleanable/mucus, +/obj/structure/machinery/door_control{ + id = "sci_br"; + name = "Observation Shutters"; + pixel_y = 28 + }, +/obj/effect/landmark/corpsespawner/pmc, +/obj/effect/decal/cleanable/vomit, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ao" = ( -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = -8; + pixel_y = 6 + }, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ap" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/technology_scanner, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/sign/safety/bulkhead_door, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/caves/lambda/breakroom) "aq" = ( -/obj/structure/surface/table, -/obj/structure/machinery/power/apc{ - dir = 1 +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y0" }, -/obj/effect/spawner/random/powercell, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "ar" = ( -/obj/structure/surface/table, -/obj/structure/machinery/light{ - dir = 1 +/obj/structure/filingcabinet{ + density = 0; + layer = 3.1; + pixel_x = 8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 20 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" }, -/obj/effect/spawner/random/tech_supply, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "as" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/tool, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/filingcabinet{ + pixel_x = 7 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -7; + pixel_y = 19 + }, +/obj/structure/filingcabinet{ + pixel_x = -9 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) "at" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/tech_supply, -/turf/open/floor, -/area/bigredv2/outside/storage) +/turf/open/floor/plating/almayer, +/area/bigredv2/caves/lambda/breakroom) "au" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/toolbox, -/turf/open/floor, -/area/bigredv2/outside/storage) +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) "av" = ( -/obj/structure/surface/table, -/obj/item/tool/extinguisher, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 20 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 16 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) "aw" = ( -/obj/structure/largecrate/supply/generator, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/inflatable/popped/door, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "ax" = ( -/obj/structure/largecrate/random/secure, -/turf/open/floor, -/area/bigredv2/outside/storage) -"aA" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 6 +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + icon_state = "darkpurplecorners2" }, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) +"aA" = ( +/turf/template_noop, +/area/template_noop) "aB" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4; - layer = 2.4 +/turf/open/floor/almayer{ + dir = 1; + icon_state = "w-y1" }, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "aC" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +/obj/structure/machinery/light, +/turf/open/floor{ dir = 4; - layer = 2.4 - }, -/obj/structure/machinery/door/airlock/almayer/secure/colony{ - icon_state = "door_locked"; - locked = 0; - name = "\improper Emergency Vault" + icon_state = "darkpurplecorners2" }, -/turf/open/floor, -/area/bigredv2/outside/storage) +/area/bigredv2/caves/lambda/breakroom) "aD" = ( -/obj/structure/largecrate/supply/supplies/water, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/inflatable/popped/door, +/turf/open/floor{ + dir = 4; + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "aE" = ( -/obj/structure/largecrate/random, -/turf/open/floor, -/area/bigredv2/outside/storage) +/turf/open/floor{ + dir = 4; + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "aF" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/machinery/door/window/brigdoor/southright, +/obj/item/clothing/accessory/medal/gold{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/clothing/accessory/medal/bronze/science{ + pixel_x = -5 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) "aG" = ( -/obj/structure/largecrate/supply/medicine/medkits, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/window/framed/solaris/reinforced, +/obj/structure/machinery/door/poddoor/almayer{ + id = "sci_br"; + name = "\improper Lambda Observation Shutters" + }, +/turf/open/floor/plating, +/area/bigredv2/caves/lambda/breakroom) "aH" = ( -/obj/structure/largecrate/supply/medicine/blood, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 7 + }, +/turf/open/floor{ + icon_state = "darkpurplecorners2" + }, +/area/bigredv2/caves/lambda/breakroom) "aI" = ( -/obj/structure/largecrate/supply/medicine/iv, -/turf/open/floor, -/area/bigredv2/outside/storage) +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/caves/lambda/breakroom) "aJ" = ( /obj/structure/machinery/light, -/turf/open/floor, -/area/bigredv2/outside/storage) -"aK" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/obj/structure/surface/table, -/obj/effect/spawner/random/toolbox, -/turf/open/floor, -/area/bigredv2/outside/storage) -"aL" = ( -/obj/structure/surface/table, -/obj/structure/machinery/light, -/obj/effect/spawner/random/powercell, -/turf/open/floor, -/area/bigredv2/outside/storage) -"aM" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +/turf/open/floor/strata{ dir = 4; - layer = 2.4 + icon_state = "white_cyan1" }, -/turf/open/floor{ - icon_state = "asteroidwarning" +/area/bigredv2/caves/lambda/breakroom) +"aK" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/door_control{ + id = "vault"; + name = "Vault Lockdown" }, -/area/bigredv2/outside/s) -"aN" = ( -/obj/structure/pipes/standard/simple/hidden/green{ +/turf/open/floor/strata{ dir = 4; - layer = 2.4 - }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidfloor" + icon_state = "white_cyan1" }, -/area/bigredv2/outside/s) -"aO" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 +/area/bigredv2/caves/lambda/breakroom) +"aL" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c1000, +/turf/open/floor/strata{ + dir = 4; + icon_state = "white_cyan1" }, -/turf/open/floor{ +/area/bigredv2/caves/lambda/breakroom) +"aM" = ( +/turf/open/floor/almayer{ dir = 1; - icon_state = "asteroidfloor" + icon_state = "w-y2" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves/lambda/breakroom) +"aN" = ( +/turf/open/mars_cave, +/area/bigredv2/caves_lambda) "aP" = ( -/turf/open/mars{ - icon_state = "mars_dirt_3" +/turf/open/mars_cave{ + icon_state = "mars_cave_7" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aQ" = ( /turf/open/mars_cave{ - icon_state = "mars_dirt_4" + icon_state = "mars_cave_18" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aR" = ( -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 19 }, -/area/bigredv2/outside/s) -"aS" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -9; + pixel_y = 20 + }, +/turf/open/floor/strata{ dir = 4; - icon_state = "asteroidwarning" + icon_state = "white_cyan1" + }, +/area/bigredv2/caves/lambda/breakroom) +"aS" = ( +/obj/effect/glowshroom, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aT" = ( -/turf/open/mars, -/area/bigredv2/outside/s) -"aU" = ( -/turf/open/mars{ - icon_state = "mars_dirt_11" +/turf/open/mars_cave{ + icon_state = "mars_cave_4" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aV" = ( -/turf/open/mars{ - icon_state = "mars_dirt_9" +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aW" = ( -/turf/open/mars{ - icon_state = "mars_dirt_8" +/obj/structure/machinery/door/airlock/almayer/secure/reinforced/colony{ + icon_state = "door_locked" }, -/area/bigredv2/outside/s) +/obj/structure/machinery/door/poddoor/almayer/closed{ + dir = 4; + id = "vault"; + name = "Vault Lockdown" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/caves/lambda/breakroom) "aX" = ( -/turf/open/mars{ - icon_state = "mars_dirt_10" +/turf/open/mars_cave{ + icon_state = "mars_cave_8" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aY" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" +/turf/open/mars_cave{ + icon_state = "mars_cave_10" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "aZ" = ( -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/mars_cave{ + icon_state = "mars_cave_5" }, -/area/bigredv2/outside/s) +/area/bigredv2/caves_lambda) "ba" = ( -/obj/effect/landmark/crap_item, -/turf/open/mars, -/area/bigredv2/outside/s) +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_lambda) +"vm" = ( +/obj/item/shard{ + icon_state = "small" + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_18" + }, +/area/bigredv2/caves_lambda) "zP" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/technology_scanner, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/storage) +/obj/effect/glowshroom, +/turf/open/mars_cave{ + icon_state = "mars_cave_5" + }, +/area/bigredv2/caves_lambda) +"EW" = ( +/obj/structure/machinery/door/poddoor/almayer{ + id = "sci_br"; + name = "\improper Lambda Observation Shutters" + }, +/obj/item/shard{ + icon_state = "medium" + }, +/obj/structure/window_frame/solaris/reinforced, +/turf/open/floor/plating, +/area/bigredv2/caves/lambda/breakroom) +"Gv" = ( +/obj/structure/machinery/door/poddoor/almayer{ + id = "sci_br"; + name = "\improper Lambda Observation Shutters" + }, +/obj/item/shard, +/obj/structure/window_frame/solaris/reinforced, +/turf/open/floor/plating, +/area/bigredv2/caves/lambda/breakroom) +"RW" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/mars_cave{ + icon_state = "mars_cave_6" + }, +/area/bigredv2/caves_lambda) (1,1,1) = {" -aa -aa -aa -ak -al -al -al -al -al +aA +aA +aA +aA +aA +aI +am al -aM -aP +aI +aA +aA +aY aT -aX +ak "} (2,1,1) = {" -aa -aa -aa -ak -al -am +aA +aA +aA +aA +zP +aG aw aD aG -al -aM -aP -aT +ai +ai +aZ +ba aX "} (3,1,1) = {" -aa -aa +aA +aA ah -ak -al -an -ax -aE +ai +ai +aG aH -al -aM +aE +aG aP -aT -aX +ba +aP +ai +aZ "} (4,1,1) = {" -aa -aa -ai -ak -al -ao +aA +ae +aP +ba +aZ +aI ax -ao +aC aI -al -aM -aP -aT -aX +ae +RW +ac +ba +aZ "} (5,1,1) = {" -aa -aa ai -ak -al -ao -ao +ai +aj +ad +aZ +aG ao -aJ -al -aM -aQ -aU -aQ +ag +EW +af +ba +ba +ba +aZ "} (6,1,1) = {" -aa -aa +aY ai -ak -al -zP -ao -ao -as -al +ai +ba +ba +aG +aa +aD +Gv +vm aN -aR -aR -aY +aS +ba +aZ "} (7,1,1) = {" -aa -aa -aj +ba +ba ak -al -aq -ao -ao +ak +ak +aI +an +ab ap -al -aO -aS -aS +aA +aA +aP aS +aZ "} (8,1,1) = {" -aa -aa -aa +ba ak -al -ar -ao -ao -as -al -aM -aQ -aQ -aQ +ak +aI +aI +aI +aI +aW +aI +aI +aA +ba +aP +aZ "} (9,1,1) = {" -aa -aa -aa +aZ ak -al +ak +aI +aR as -aA -aF +au +au aK -al -aM -aQ -aQ -aQ +aI +aA +aY +ba +aZ "} (10,1,1) = {" -aa -af -aa ak -al -as -aB -ao +aA +aA +aI au -al -aM -aQ -aQ +at +aq +at +au +aI +aA +aP +ba aZ "} (11,1,1) = {" -ab -aa -aa ak -al +aA +aA +aI +aF at aB -ao -as -al -aM -aQ -aQ -aT +at +aJ +aI +aA +aP +ba +aZ "} (12,1,1) = {" -ac -ab -aa -ak -al +aA +aA +aA +aI au -aB -ao -aL -al +at aM +at +aL +aI +aA aQ aV -aT +ba "} (13,1,1) = {" -ad -ag -aa -ak -al +aA +aA +aA +aI +ar av -aB -ao -at -al -aM -aP -aT +aL +aL +aL +aI +aA +ba +ba ba "} (14,1,1) = {" -ae -aa -aa -ak -al -al -aC -al -al -al -aM -aQ -aW -aT +aA +aA +aA +aI +aI +aI +aI +aI +aI +aI +aA +ba +ba +ba "} diff --git a/maps/map_files/CORSAT/Corsat.dmm b/maps/map_files/CORSAT/Corsat.dmm index b00a12dc86bd..7029d71a6076 100644 --- a/maps/map_files/CORSAT/Corsat.dmm +++ b/maps/map_files/CORSAT/Corsat.dmm @@ -37445,7 +37445,7 @@ /area/corsat/gamma/biodome/virology) "drp" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Gamma Landing Zone" + name = "LZ1: Gamma Landing Zone" }, /turf/open/floor/plating, /area/corsat/gamma/hangar) @@ -38222,7 +38222,7 @@ /area/corsat/omega/complex) "dUj" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Sigma Landing Zone" + name = "LZ2: Sigma Landing Zone" }, /turf/open/floor/plating, /area/corsat/sigma/hangar) diff --git a/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm b/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm index 5da17a318887..ba9986948eed 100644 --- a/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm +++ b/maps/map_files/FOP_v2_Cellblocks/Prison_Station_FOP.dmm @@ -5305,7 +5305,7 @@ /area/prison/hanger/research) "aoj" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Research Landing Zone" + name = "LZ2: Research Landing Zone" }, /turf/open/floor/plating, /area/prison/hanger/research) @@ -19201,7 +19201,7 @@ /area/prison/hanger/main) "bcF" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Hangar Landing Zone" + name = "LZ1: Hangar Landing Zone" }, /turf/open/floor/plating, /area/prison/hanger/main) diff --git a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm index 7238b5ab66cb..bffe3f990722 100644 --- a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm +++ b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm @@ -6510,7 +6510,7 @@ /area/fiorina/station/disco) "dYp" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Hangar Landing Zone" + name = "LZ1: Hangar Landing Zone" }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) diff --git a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm index 73bac536752f..485760ebc2af 100644 --- a/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm +++ b/maps/map_files/Ice_Colony_v2/Ice_Colony_v2.dmm @@ -34904,7 +34904,7 @@ /area/ice_colony/surface/hangar/alpha) "sto" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Hangar Landing Zone" + name = "LZ1: Hangar Landing Zone" }, /turf/open/floor/plating, /area/ice_colony/exterior/surface/landing_pad) diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm index f5e2f597ef24..60847e12bae1 100644 --- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm +++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm @@ -17375,7 +17375,7 @@ /area/shiva/interior/caves/s_lz2) "mlX" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Research Landing Zone" + name = "LZ2: Research Landing Zone" }, /turf/open/floor/plating, /area/shiva/exterior/lz2_fortress) diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index 676bd49576f0..2e1ebb3ea204 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -62,6 +62,10 @@ "adD" = ( /turf/open/floor/almayer/research/containment/floor1, /area/kutjevo/exterior/lz_dunes) +"adG" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_South) "adX" = ( /obj/item/stack/sheet/wood, /obj/structure/machinery/light, @@ -362,6 +366,15 @@ dir = 4 }, /area/kutjevo/interior/complex/Northwest_Dorms) +"axi" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + pixel_x = -4; + pixel_y = 10 + }, +/turf/open/gm/river/desert/shallow_edge{ + dir = 9 + }, +/area/kutjevo/exterior/spring) "axK" = ( /obj/item/trash/cigbutt/bcigbutt, /obj/structure/stairs/perspective/kutjevo{ @@ -563,6 +576,10 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/scrubland) +"aKg" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_South) "aKl" = ( /obj/structure/machinery/landinglight/ds1{ dir = 1 @@ -679,6 +696,13 @@ icon = 'icons/turf/floors/desert_water_toxic.dmi' }, /area/kutjevo/interior/oob) +"aXU" = ( +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 13 + }, +/turf/open/desert/desert_shore/shore_edge1, +/area/kutjevo/exterior/spring) "aXV" = ( /obj/structure/machinery/colony_floodlight_switch, /turf/closed/wall/kutjevo/colony/reinforced, @@ -964,7 +988,7 @@ "bsq" = ( /obj/structure/tunnel, /turf/open/auto_turf/sand/layer0, -/area/kutjevo/interior/colony_central) +/area/kutjevo/interior/colony_north) "bsw" = ( /obj/structure/platform/kutjevo/smooth{ dir = 8 @@ -1958,6 +1982,14 @@ }, /turf/open/asphalt/cement_sunbleached, /area/kutjevo/interior/power) +"cKY" = ( +/obj/structure/prop/brazier/frame/full/campfire, +/obj/item/tool/match/paper{ + pixel_y = -2; + pixel_x = -11 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "cLn" = ( /obj/structure/stairs/perspective/kutjevo{ dir = 1; @@ -2286,6 +2318,11 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/complex/botany) +"dcC" = ( +/turf/open/desert/desert_shore/shore_edge1{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "ddi" = ( /obj/structure/platform/kutjevo, /obj/structure/blocker/invisible_wall, @@ -2418,6 +2455,11 @@ dir = 10 }, /area/kutjevo/interior/colony_South/power2) +"dnd" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "dnl" = ( /obj/structure/platform/kutjevo/rock, /turf/open/auto_turf/sand/layer1, @@ -2676,6 +2718,15 @@ dir = 8 }, /area/kutjevo/exterior/runoff_river) +"dBt" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + pixel_x = -8; + pixel_y = 10 + }, +/turf/open/gm/river/desert/shallow_edge{ + dir = 5 + }, +/area/kutjevo/exterior/spring) "dBO" = ( /obj/structure/ladder, /obj/structure/blocker/invisible_wall, @@ -2744,6 +2795,12 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_South) +"dGi" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 1 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "dGx" = ( /obj/structure/window/framed/kutjevo, /turf/open/floor/kutjevo/tan, @@ -2867,6 +2924,11 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_north) +"dOj" = ( +/turf/open/gm/river/desert/shallow_corner{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "dOJ" = ( /obj/structure/barricade/deployable, /turf/open/floor/kutjevo/colors/purple/edge, @@ -2957,6 +3019,10 @@ }, /turf/open/gm/river/desert/shallow, /area/kutjevo/exterior/runoff_river) +"dUc" = ( +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/spring) "dUy" = ( /obj/structure/platform/kutjevo/smooth, /turf/open/floor/kutjevo/multi_tiles{ @@ -3046,6 +3112,15 @@ /obj/structure/blocker/invisible_wall, /turf/open/floor/plating/kutjevo, /area/kutjevo/exterior/runoff_dunes) +"eaT" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/interior/colony_South) +"ebv" = ( +/turf/open/desert/desert_shore/shore_corner2{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "ebB" = ( /turf/open/auto_turf/sand/layer1, /area/kutjevo/interior/colony_S_East) @@ -3427,6 +3502,9 @@ "evZ" = ( /turf/open/floor/almayer/research/containment/floor2, /area/kutjevo/interior/power) +"ewl" = ( +/turf/open/desert/desert_shore/desert_shore1, +/area/kutjevo/exterior/spring) "ewF" = ( /obj/item/phone{ pixel_x = 1; @@ -3548,6 +3626,20 @@ }, /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/construction) +"eCE" = ( +/obj/item/clipboard{ + pixel_y = 4; + pixel_x = -4 + }, +/obj/item/tool/pen{ + name = "stained pen"; + desc = "It's a seemingly normal pen... aside from the faint red fingerprints on the side..."; + pixel_x = 2; + pixel_y = 10 + }, +/obj/item/paper/crumpled/bloody, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "eCY" = ( /obj/structure/machinery/cryo_cell, /turf/open/floor/kutjevo/grey/plate, @@ -3604,6 +3696,10 @@ "eHX" = ( /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/telecomm/lz1_south) +"eIq" = ( +/obj/item/tool/hatchet, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "eIL" = ( /turf/open/floor/kutjevo/colors/cyan/edge{ dir = 4 @@ -3859,6 +3955,9 @@ dir = 4 }, /area/kutjevo/interior/colony_South/power2) +"eVR" = ( +/turf/open/gm/river/desert/deep, +/area/kutjevo/exterior/spring) "eWP" = ( /obj/effect/landmark/corpsespawner/colonist/kutjevo, /turf/open/floor/kutjevo/multi_tiles, @@ -3943,6 +4042,10 @@ icon = 'icons/turf/floors/desert_water_toxic.dmi' }, /area/kutjevo/interior/power) +"fdH" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "fdS" = ( /obj/effect/decal/cleanable/blood/xeno{ icon_state = "xgib1" @@ -4114,6 +4217,10 @@ dir = 4 }, /area/kutjevo/interior/construction) +"fne" = ( +/obj/item/trash/barcardine, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "foE" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/barricade/handrail/kutjevo{ @@ -4411,6 +4518,12 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/colony_South/power2) +"fMB" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 5 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "fNc" = ( /obj/structure/platform/kutjevo{ dir = 4 @@ -4589,6 +4702,14 @@ /obj/structure/prop/dam/gravestone, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_N_East) +"fYr" = ( +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "fYE" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/shuttle/dropship/flight/lz2, @@ -4711,6 +4832,10 @@ dir = 8 }, /area/kutjevo/interior/power/comms) +"giY" = ( +/obj/item/device/flashlight/lamp/tripod/grey, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "giZ" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{ pixel_y = 28 @@ -4762,7 +4887,7 @@ /area/kutjevo/interior/oob) "gnj" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Dunes Landing Zone" + name = "LZ1: Dunes Landing Zone" }, /turf/open/floor/plating/kutjevo, /area/shuttle/drop1/kutjevo) @@ -4782,6 +4907,13 @@ dir = 10 }, /area/kutjevo/exterior/runoff_dunes) +"gok" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_y = 14 + }, +/turf/open/desert/desert_shore/desert_shore1, +/area/kutjevo/exterior/spring) "goT" = ( /turf/closed/wall/kutjevo/rock, /area/kutjevo/exterior/runoff_dunes) @@ -4813,6 +4945,15 @@ /obj/item/clipboard, /turf/open/floor/kutjevo/colors/green, /area/kutjevo/interior/complex/botany) +"gsn" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_y = 14 + }, +/turf/open/desert/desert_shore/desert_shore1{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "gsq" = ( /obj/structure/filingcabinet, /obj/structure/window/reinforced/tinted{ @@ -4956,6 +5097,13 @@ "gBl" = ( /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/oob) +"gBu" = ( +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/spring) "gBI" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -5053,6 +5201,9 @@ dir = 8 }, /area/kutjevo/interior/complex/Northwest_Flight_Control) +"gFA" = ( +/turf/open/desert/desert_shore/shore_edge1, +/area/kutjevo/exterior/spring) "gHh" = ( /obj/structure/flora/grass/desert/lightgrass_9, /turf/open/auto_turf/sand/layer0, @@ -5072,6 +5223,15 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/foremans_office) +"gHV" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) +"gJx" = ( +/turf/open/gm/river/desert/shallow_corner{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "gJB" = ( /obj/structure/stairs/perspective/kutjevo{ dir = 8; @@ -5720,6 +5880,11 @@ }, /turf/open/floor/kutjevo/plate, /area/kutjevo/interior/colony_central) +"hET" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 10 + }, +/area/kutjevo/exterior/spring) "hFi" = ( /obj/structure/barricade/wooden{ dir = 1; @@ -5848,6 +6013,10 @@ icon_state = "platingdmg3" }, /area/kutjevo/interior/complex/Northwest_Dorms) +"hRG" = ( +/obj/structure/prop/dam/boulder/boulder2, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "hSo" = ( /obj/structure/flora/grass/tallgrass/desert/corner{ dir = 10 @@ -5961,6 +6130,11 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/exterior/construction) +"hZx" = ( +/obj/structure/flora/grass/tallgrass/desert, +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "iaj" = ( /turf/closed/wall/kutjevo/rock, /area/kutjevo/exterior/lz_river) @@ -6108,6 +6282,12 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/complex/med/triage) +"irb" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 8 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "ird" = ( /obj/structure/blocker/invisible_wall, /obj/structure/platform/kutjevo{ @@ -6381,6 +6561,9 @@ /obj/item/storage/box/trackimp, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/botany/east_tech) +"iNI" = ( +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "iNY" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -6541,6 +6724,13 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/complex_border/med_rec) +"jac" = ( +/obj/item/device/radio{ + name = "damp shortwave radio"; + desc = "A regular shortwave radio, this one has experienced minor water damage but is still functional." + }, +/turf/open/desert/desert_shore/shore_corner2, +/area/kutjevo/exterior/spring) "jav" = ( /obj/structure/closet/secure_closet/engineering_welding, /obj/item/ammo_box/magazine/nailgun, @@ -6712,6 +6902,16 @@ /obj/item/stack/sheet/wood, /turf/open/floor/kutjevo/colors, /area/kutjevo/interior/power/comms) +"jnD" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 13 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "jnS" = ( /obj/structure/window/framed/kutjevo, /turf/open/floor/plating/kutjevo, @@ -7282,6 +7482,10 @@ /obj/structure/platform/kutjevo, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/colony_north) +"kgx" = ( +/obj/structure/flora/grass/tallgrass/desert, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "khI" = ( /obj/structure/window/framed/kutjevo/reinforced/hull, /turf/open/floor/kutjevo/grey/plate, @@ -7668,6 +7872,9 @@ "kDS" = ( /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/botany) +"kEh" = ( +/turf/open/gm/river/desert/shallow_edge, +/area/kutjevo/exterior/spring) "kEG" = ( /obj/structure/sign/poster{ pixel_y = -32 @@ -7724,6 +7931,10 @@ "kIn" = ( /turf/open/auto_turf/sand/layer2, /area/kutjevo/exterior/scrubland) +"kIQ" = ( +/obj/structure/prop/dam/large_boulder/boulder2, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "kKb" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -7837,10 +8048,20 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/colony_South/power2) +"kQa" = ( +/obj/structure/bed/bedroll, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "kQo" = ( /obj/structure/girder, /turf/open/auto_turf/sand/layer1, /area/kutjevo/interior/construction) +"kQD" = ( +/turf/open/desert/desert_shore/desert_shore1{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "kQU" = ( /obj/structure/platform/kutjevo{ dir = 8 @@ -8099,7 +8320,7 @@ /area/kutjevo/interior/power/comms) "lkY" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "NW Colony Landing Zone" + name = "LZ2: NW Colony Landing Zone" }, /turf/open/floor/plating/kutjevo, /area/shuttle/drop2/kutjevo) @@ -8361,6 +8582,11 @@ /obj/item/stack/sheet/wood, /turf/open/floor/kutjevo/colors/purple, /area/kutjevo/interior/complex/med/locks) +"lEf" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 6 + }, +/area/kutjevo/exterior/spring) "lEA" = ( /turf/closed/wall/kutjevo/colony/reinforced, /area/kutjevo/interior/colony_central) @@ -8631,11 +8857,9 @@ /turf/open/floor/almayer/research/containment/floor2, /area/kutjevo/interior/complex/med/auto_doc) "lZT" = ( -/obj/structure/tunnel{ - id = "hole1" - }, -/turf/open/auto_turf/sand/layer2, -/area/kutjevo/interior/colony_north) +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/construction) "lZZ" = ( /obj/structure/platform_decoration/kutjevo{ dir = 4 @@ -8682,6 +8906,11 @@ "mbS" = ( /turf/closed/wall/kutjevo/colony, /area/kutjevo/interior/complex/botany) +"mct" = ( +/turf/open/gm/river/desert/shallow_corner{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "mcv" = ( /obj/structure/window/framed/kutjevo/reinforced/hull, /obj/structure/blocker/invisible_wall, @@ -8977,6 +9206,10 @@ dir = 6 }, /area/kutjevo/interior/complex/med/locks) +"mvX" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "mwh" = ( /obj/structure/window/framed/kutjevo/reinforced, /turf/open/floor/kutjevo/colors/green/tile, @@ -8996,6 +9229,11 @@ /obj/item/frame/rack, /turf/open/floor/kutjevo/tan/multi_tiles, /area/kutjevo/interior/complex/botany/east_tech) +"myk" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "mzn" = ( /obj/structure/platform/kutjevo{ dir = 1 @@ -9015,6 +9253,18 @@ /obj/item/storage/pill_bottle/dexalin/skillless, /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/complex/med) +"mAD" = ( +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 13 + }, +/obj/structure/barricade/wooden{ + desc = "This barricade is heavily reinforced. Nothing short of blasting it open seems like it'll do the trick, that or melting the breams supporting it..."; + dir = 8; + health = 25000 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "mAH" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/kutjevo_decals/catwalk, @@ -9308,6 +9558,11 @@ color = "#990000" }, /area/kutjevo/interior/oob) +"mNv" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 5 + }, +/area/kutjevo/exterior/spring) "mNM" = ( /turf/closed/wall/kutjevo/colony, /area/kutjevo/exterior/runoff_bridge) @@ -9543,11 +9798,9 @@ /turf/open/desert/desert_shore/shore_corner2, /area/kutjevo/exterior/runoff_river) "niP" = ( -/obj/structure/tunnel{ - id = "hole3" - }, +/obj/structure/tunnel, /turf/open/auto_turf/sand/layer0, -/area/kutjevo/exterior/complex_border/botany_medical_cave) +/area/kutjevo/exterior/runoff_river) "niT" = ( /obj/structure/flora/grass/tallgrass/desert/corner{ dir = 1 @@ -10083,6 +10336,12 @@ /obj/structure/platform/kutjevo/rock, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_central) +"nPq" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 6 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "nPs" = ( /obj/structure/blocker/invisible_wall, /turf/open/auto_turf/sand/layer1, @@ -10096,6 +10355,11 @@ /obj/structure/machinery/iv_drip, /turf/open/floor/kutjevo/colors/cyan, /area/kutjevo/interior/complex/med/triage) +"nPX" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 9 + }, +/area/kutjevo/exterior/spring) "nQc" = ( /obj/structure/platform_decoration/kutjevo/rock, /obj/structure/platform_decoration/kutjevo/rock{ @@ -10234,6 +10498,12 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/med/operating) +"nZC" = ( +/obj/structure/bed/bedroll, +/obj/effect/landmark/corpsespawner/colonist/kutjevo, +/obj/effect/decal/cleanable/blood/splatter, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "nZK" = ( /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/Northwest_Flight_Control) @@ -10251,6 +10521,12 @@ }, /turf/open/floor/kutjevo/tan/alt_inner_edge, /area/kutjevo/interior/complex/Northwest_Flight_Control) +"obv" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 10 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "oca" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp, @@ -10787,6 +11063,10 @@ /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/carpet, /area/kutjevo/interior/oob) +"oQb" = ( +/obj/structure/flora/grass/tallgrass/desert/corner, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "oQc" = ( /turf/closed/wall/kutjevo/colony, /area/kutjevo/interior/power_pt2_electric_boogaloo) @@ -10990,6 +11270,13 @@ icon_state = "0,5" }, /area/kutjevo/interior/construction) +"pfK" = ( +/obj/structure/barricade/wooden{ + dir = 1; + pixel_y = 13 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "pfR" = ( /obj/structure/platform/kutjevo/rock{ dir = 4 @@ -11116,6 +11403,15 @@ "pmv" = ( /turf/closed/wall/kutjevo/colony/reinforced, /area/kutjevo/exterior/complex_border/med_rec) +"pmD" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + pixel_x = -6; + pixel_y = 10 + }, +/turf/open/gm/river/desert/shallow_edge{ + dir = 6 + }, +/area/kutjevo/exterior/spring) "pmR" = ( /obj/structure/largecrate/supply/supplies/flares, /turf/open/auto_turf/sand/layer1, @@ -11686,6 +11982,10 @@ }, /turf/open/floor/kutjevo/colors/cyan/inner_corner, /area/kutjevo/interior/complex/med/triage) +"pVH" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/runoff_river) "pWe" = ( /obj/structure/platform_decoration/kutjevo/rock{ dir = 1 @@ -11733,6 +12033,11 @@ dir = 4 }, /area/kutjevo/interior/complex/botany/east_tech) +"qaU" = ( +/turf/open/desert/desert_shore/shore_corner2{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "qaY" = ( /obj/structure/blocker/invisible_wall, /turf/open/desert/desert_shore/shore_corner2{ @@ -12102,6 +12407,12 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_S_East) +"qFh" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 4 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "qFU" = ( /turf/open/desert/desert_shore/shore_corner2{ dir = 8 @@ -12195,11 +12506,9 @@ }, /area/kutjevo/interior/oob) "qLV" = ( -/obj/structure/tunnel{ - id = "hole2" - }, -/turf/open/auto_turf/sand/layer1, -/area/kutjevo/exterior/stonyfields) +/obj/structure/tunnel, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_S_East) "qMC" = ( /obj/structure/machinery/light{ dir = 4 @@ -12493,6 +12802,10 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/kutjevo/colors/red, /area/kutjevo/interior/complex/botany) +"riT" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "rjS" = ( /obj/structure/blocker/invisible_wall, /obj/structure/platform/kutjevo{ @@ -12661,6 +12974,10 @@ /obj/structure/window/framed/kutjevo/reinforced/hull, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/power) +"rwC" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/interior/colony_South) "rwL" = ( /obj/item/frame/table/almayer, /turf/open/floor/kutjevo/tan, @@ -12739,6 +13056,10 @@ "rCp" = ( /turf/open/desert/desert_shore/desert_shore1, /area/kutjevo/exterior/runoff_bridge) +"rDe" = ( +/obj/structure/prop/dam/boulder/boulder2, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "rDO" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomright" @@ -12998,6 +13319,13 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/complex_border/botany_medical_cave) +"rUE" = ( +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "rUM" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /obj/structure/girder, @@ -13212,6 +13540,9 @@ /obj/effect/spawner/random/tool, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/construction) +"skx" = ( +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "slb" = ( /obj/structure/machinery/light{ dir = 4 @@ -13299,6 +13630,10 @@ }, /turf/open/auto_turf/sand/layer1, /area/kutjevo/exterior/scrubland) +"soL" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "soP" = ( /obj/structure/platform/kutjevo/smooth{ dir = 1 @@ -13544,6 +13879,11 @@ }, /turf/open/floor/kutjevo/colors, /area/kutjevo/interior/complex/botany) +"sGS" = ( +/turf/open/desert/desert_shore/shore_edge1{ + dir = 8 + }, +/area/kutjevo/exterior/spring) "sHg" = ( /obj/structure/bed/chair{ dir = 4 @@ -13859,6 +14199,12 @@ "tax" = ( /turf/open/gm/river/desert/shallow_edge, /area/kutjevo/exterior/runoff_dunes) +"tbx" = ( +/obj/structure/flora/grass/tallgrass/desert/corner{ + dir = 9 + }, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "tdC" = ( /obj/structure/bed/chair{ dir = 4 @@ -14531,6 +14877,11 @@ /obj/structure/blocker/invisible_wall, /turf/open/gm/river/desert/deep, /area/kutjevo/interior/oob) +"uaz" = ( +/turf/open/desert/desert_shore/desert_shore1{ + dir = 1 + }, +/area/kutjevo/exterior/spring) "ubm" = ( /obj/structure/machinery/light{ dir = 8 @@ -14558,6 +14909,11 @@ /obj/structure/platform/kutjevo/rock, /turf/open/auto_turf/sand/layer0, /area/kutjevo/interior/colony_N_East) +"ueM" = ( +/turf/open/desert/desert_shore/shore_corner2{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "ueO" = ( /obj/structure/prop/dam/boulder/boulder1, /turf/open/auto_turf/sand/layer0, @@ -14899,6 +15255,9 @@ }, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/complex_border/med_rec) +"uzJ" = ( +/turf/open/auto_turf/sand/layer2, +/area/kutjevo/exterior/spring) "uAh" = ( /obj/structure/platform/kutjevo/smooth, /turf/open/floor/kutjevo/multi_tiles, @@ -15150,6 +15509,10 @@ icon = 'icons/turf/floors/desert_water_toxic.dmi' }, /area/kutjevo/interior/oob) +"uNW" = ( +/obj/structure/prop/dam/boulder/boulder2, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/interior/colony_South) "uNZ" = ( /obj/structure/machinery/colony_floodlight, /obj/structure/platform/kutjevo/smooth{ @@ -15424,6 +15787,10 @@ /obj/structure/machinery/vending/snack, /turf/open/floor/kutjevo/colors/red, /area/kutjevo/interior/complex/botany) +"vdK" = ( +/obj/item/stack/sheet/wood/small_stack, +/turf/open/desert/desert_shore/desert_shore1, +/area/kutjevo/exterior/spring) "vdV" = ( /obj/structure/blocker/invisible_wall, /obj/structure/filtration/machine_96x96/indestructible{ @@ -15498,6 +15865,10 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/kutjevo/colors/green, /area/kutjevo/interior/complex/botany) +"vhC" = ( +/obj/structure/flora/grass/desert/lightgrass_11, +/turf/open/auto_turf/sand/layer1, +/area/kutjevo/exterior/spring) "vhQ" = ( /obj/structure/platform_decoration/kutjevo/rock{ dir = 8 @@ -15689,11 +16060,9 @@ /turf/open/floor/kutjevo/multi_tiles, /area/kutjevo/exterior/runoff_bridge) "vzy" = ( -/obj/structure/tunnel{ - id = "hole4" - }, -/turf/open/auto_turf/sand/layer0, -/area/kutjevo/exterior/scrubland) +/obj/structure/tunnel, +/turf/open/gm/dirtgrassborder2, +/area/kutjevo/exterior/complex_border/med_park) "vzC" = ( /obj/structure/platform/kutjevo{ dir = 1 @@ -16316,6 +16685,16 @@ }, /turf/open/floor/kutjevo/multi_tiles, /area/kutjevo/exterior/Northwest_Colony) +"wrO" = ( +/turf/open/gm/river/desert/shallow_edge{ + dir = 1 + }, +/area/kutjevo/exterior/spring) +"wrV" = ( +/turf/open/desert/desert_shore/desert_shore1{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "wsf" = ( /obj/structure/platform_decoration/kutjevo/rock{ dir = 8 @@ -16343,6 +16722,13 @@ dir = 1 }, /area/kutjevo/interior/foremans_office) +"wtk" = ( +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/turf/open/auto_turf/sand/layer0, +/area/kutjevo/exterior/spring) "wtu" = ( /obj/structure/platform_decoration/kutjevo{ dir = 4 @@ -17014,6 +17400,11 @@ dir = 8 }, /area/kutjevo/interior/complex/med/operating) +"xuN" = ( +/turf/open/desert/desert_shore/shore_edge1{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "xuY" = ( /obj/structure/barricade/wooden, /turf/open/floor/kutjevo/multi_tiles{ @@ -17034,6 +17425,9 @@ /obj/structure/window/framed/kutjevo/reinforced, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/complex/med/pano) +"xxf" = ( +/turf/open/gm/river/desert/shallow_corner, +/area/kutjevo/exterior/spring) "xxz" = ( /obj/structure/prop/dam/gravestone{ icon_state = "gravestone3" @@ -17487,6 +17881,15 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/kutjevo/tan/alt_inner_edge, /area/kutjevo/interior/complex/Northwest_Flight_Control) +"yic" = ( +/obj/structure/flora/bush/desert{ + icon_state = "tree_2"; + pixel_y = 14 + }, +/turf/open/desert/desert_shore/desert_shore1{ + dir = 4 + }, +/area/kutjevo/exterior/spring) "yir" = ( /turf/open/floor/kutjevo/colors/orange, /area/kutjevo/interior/complex/botany/east) @@ -27671,7 +28074,7 @@ sYd bXl bXl bXl -vzy +bXl sYd bXl sYd @@ -31167,7 +31570,7 @@ bEp bEp bEp bEp -tKY +niP dic dic dic @@ -33232,7 +33635,7 @@ xJg xJg xJg xJg -qLV +xJg jfQ jfQ xJg @@ -34516,7 +34919,7 @@ jhS jhS jhS wff -niP +wff wff wff jhS @@ -35144,7 +35547,7 @@ dxF mxB mxB mxB -quy +vzy tUm wYp bGV @@ -37390,7 +37793,7 @@ nKh nKh nKh wtH -sbX +pVH mtS fPH dTM @@ -42333,7 +42736,7 @@ bkR wTt bkR bEH -lZT +bEH hUk hUk hUk @@ -42680,7 +43083,7 @@ hUk hUk hUk hUk -xWK +lZT nlA xWK xWK @@ -43246,11 +43649,11 @@ bpj bpj bpj bpj -dxF -dxF -dxF -dxF -dxF +bpj +bpj +uzJ +skx +hRG dxF dxF dxF @@ -43413,12 +43816,12 @@ bpj bpj bpj bpj -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +skx +skx +skx +skx dxF dxF dxF @@ -43580,14 +43983,14 @@ bpj bpj oXH bpj -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +skx +skx +skx +skx +iNI +iNI dxF dxF dxF @@ -43748,14 +44151,14 @@ npL bpj bpj bpj -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +skx +skx +skx +uzJ +skx +skx +iNI dxF dxF dxF @@ -43915,16 +44318,16 @@ npL bpj bpj bpj +bpj dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +skx +skx +skx +skx +iNI dxF dxF dxF @@ -44086,13 +44489,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +hRG +skx +mvX +uzJ +skx +skx +hRG dxF dxF dxF @@ -44254,14 +44657,14 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +skx +skx +skx +skx +iNI dxF dxF dxF @@ -44421,15 +44824,15 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +skx +skx +skx +skx +skx +skx +skx dxF dxF dxF @@ -44589,15 +44992,15 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +skx +uzJ +skx +skx +skx +skx +iNI dxF dxF dxF @@ -44757,14 +45160,14 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +skx +skx +uzJ +uzJ +skx dxF dxF dxF @@ -44926,13 +45329,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +skx +skx +mvX +skx +iNI dxF dxF dxF @@ -45095,12 +45498,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +rDe +skx +skx +skx +skx +iNI dxF dxF dxF @@ -45263,12 +45666,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +uzJ +skx +skx +iNI dxF dxF dxF @@ -45430,12 +45833,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +iNI +skx +uzJ +uzJ +skx +skx dxF dxF dxF @@ -45598,15 +46001,15 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +mAD +fYr +riT +fYr +skx +skx +skx +pfK dxF dxF dxF @@ -45766,16 +46169,16 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +eIq +skx +gHV +skx +uzJ +kIQ +skx +skx +skx dxF dxF dxF @@ -45933,17 +46336,17 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +giY +skx +skx +skx +mvX +skx +skx +skx +skx +kQa +vhC dxF dxF dxF @@ -46099,19 +46502,19 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +uzJ +skx +skx +iNI +iNI +fdH +iNI +soL +uzJ +cKY +mvX +hRG dxF dxF dxF @@ -46265,21 +46668,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +hRG +skx +skx +skx +iNI +dcC +kQD +kQD +kQD +aXU +nZC +gHV +eCE +skx +fne dxF dxF dxF @@ -46404,7 +46807,7 @@ wXd wXd wXd wXd -mMH +aKg bpj npL bpj @@ -46432,21 +46835,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +uzJ +skx +iNI +dcC +qaU +axi +dnd +hET +vdK +wtk +riT +rUE +gBu +rUE dxF dxF dxF @@ -46599,21 +47002,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +fMB +mvX +iNI +dcC +qaU +nPX +dOj +eVR +kEh +jac +gFA +iNI +skx +nPq +qFh dxF dxF dxF @@ -46765,23 +47168,23 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +kgx +dGi +uzJ +iNI +gsn +nPX +dOj +eVR +eVR +mct +hET +ewl +iNI +skx +oQb +kgx +dUc dxF dxF dxF @@ -46932,23 +47335,23 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +kgx +dGi +skx +iNI +uaz +wrO +eVR +eVR +eVR +eVR +kEh +gok +iNI +giY +oQb +kgx +kgx dxF dxF dxF @@ -47099,23 +47502,23 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +irb +tbx +skx +iNI +uaz +wrO +eVR +eVR +eVR +eVR +kEh +ewl +iNI +skx +oQb +kgx +kgx dxF dxF dxF @@ -47266,23 +47669,23 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +iNI +uaz +dBt +xxf +eVR +eVR +gJx +pmD +ewl +iNI +skx +obv +dUc +kgx dxF dxF dxF @@ -47433,22 +47836,22 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +vhC +uzJ +skx +iNI +xuN +ebv +mNv +myk +myk +lEf +ueM +sGS +iNI +kIQ +skx +obv dxF dxF dxF @@ -47601,21 +48004,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +iNI +xuN +wrV +wrV +yic +wrV +sGS +iNI +skx +skx +skx +skx dxF dxF dxF @@ -47768,21 +48171,21 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +skx +skx +mvX +iNI +iNI +iNI +iNI +iNI +iNI +skx +uzJ +skx +skx +uzJ dxF dxF dxF @@ -47921,24 +48324,8 @@ npL bpj bpj bpj -mMH -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +gBl dxF dxF dxF @@ -47949,6 +48336,22 @@ dxF dxF dxF dxF +iNI +iNI +jnD +skx +skx +uzJ +skx +kIQ +skx +skx +skx +skx +skx +mvX +skx +hRG dxF dxF dxF @@ -48088,6 +48491,8 @@ tCm bpj bpj bpj +bpj +bpj dxF dxF dxF @@ -48097,24 +48502,22 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +rDe +iNI +uzJ +skx +riT +skx +giY +skx +skx +skx +nPq +qFh +qFh +fMB +uzJ +vhC dxF dxF dxF @@ -48254,26 +48657,10 @@ mMH bpj bpj bpj -mMH -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +bpj dxF dxF dxF @@ -48281,6 +48668,22 @@ dxF dxF dxF dxF +iNI +skx +skx +skx +skx +jnD +skx +skx +skx +skx +uzJ +oQb +dUc +kgx +dGi +skx dxF dxF dxF @@ -48327,7 +48730,7 @@ bkR bkR bkR wTt -wTt +bsq hUk hUk hUk @@ -48421,31 +48824,31 @@ wXd npL bpj bpj +bpj +bpj +bpj +bpj +mMH mMH dxF dxF dxF dxF +iNI +skx +mvX +skx +skx +iNI +iNI dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +skx +oQb +kgx +hZx dxF dxF dxF @@ -48588,21 +48991,21 @@ wXd bpj npL bpj -qOP -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +oXH +bpj +bpj +bpj +bpj +bpj +mMH dxF dxF +skx +skx +uzJ +skx +iNI +iNI dxF dxF dxF @@ -48757,18 +49160,18 @@ bpj bpj mMH dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +npL +bpj +bpj +mMH +bpj +bpj +skx +skx +skx +iNI dxF dxF dxF @@ -48925,16 +49328,16 @@ bpj dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +oXH +bpj +bpj +bpj +uzJ +skx +iNI dxF dxF dxF @@ -49093,14 +49496,14 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +bpj +bpj +bpj +skx +skx dxF dxF dxF @@ -49260,12 +49663,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +npL +bpj +mMH dxF dxF dxF @@ -49429,10 +49832,10 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +mMH dxF dxF dxF @@ -49596,11 +49999,11 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj +mMH dxF dxF dxF @@ -49701,7 +50104,7 @@ kZz feg feg feg -bsq +uiK mnT mnT mnT @@ -49763,11 +50166,11 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF +uNW +bpj +bpj +bpj +mMH dxF dxF dxF @@ -49931,10 +50334,10 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF +adG +eaT +rwC +eaT dxF dxF dxF @@ -50098,10 +50501,10 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF +mMH +oXH +bpj +bpj dxF dxF dxF @@ -50265,10 +50668,10 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj dxF dxF dxF @@ -50431,11 +50834,11 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj +mMH dxF dxF dxF @@ -50597,12 +51000,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +npL +bpj +mMH dxF dxF dxF @@ -50762,13 +51165,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj +bpj +bpj +mMH dxF dxF dxF @@ -50929,13 +51332,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +npL +bpj +bpj +bpj +mMH dxF dxF dxF @@ -51095,13 +51498,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +bpj +bpj +bpj +npL dxF dxF dxF @@ -51262,12 +51665,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +oXH +bpj +bpj +bpj dxF dxF dxF @@ -51428,13 +51831,13 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +npL +bpj +bpj +bpj +bpj dxF dxF dxF @@ -51595,12 +51998,12 @@ dxF dxF dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF +mMH +bpj +bpj +bpj +bpj +mMH dxF dxF dxF @@ -51760,13 +52163,13 @@ bpj bpj dxF dxF -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +bpj +npL +bpj +mMH dxF dxF dxF @@ -51926,13 +52329,13 @@ bpj bpj bpj mMH -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +npL +bpj +bpj +bpj +bpj +bpj dxF dxF dxF @@ -52093,13 +52496,13 @@ bpj oXH bpj bpj -dxF -dxF -dxF -dxF -dxF -dxF -dxF +bpj +bpj +oXH +bpj +bpj +mMH +mMH dxF dxF dxF @@ -52260,11 +52663,11 @@ bpj bpj bpj bpj -dxF -dxF -dxF -dxF -dxF +bpj +bpj +bpj +npL +mMH dxF dxF dxF @@ -52428,9 +52831,9 @@ bpj bpj bpj mMH -dxF -dxF -dxF +bpj +bpj +bpj dxF dxF dxF @@ -53907,7 +54310,7 @@ ptY ebB ebB bOc -ptY +qLV dxF dxF dxF diff --git a/maps/map_files/Kutjevo/sprinkles/35.communications.dmm b/maps/map_files/Kutjevo/sprinkles/35.communications.dmm index 235f370b4321..bc89cfab0105 100644 --- a/maps/map_files/Kutjevo/sprinkles/35.communications.dmm +++ b/maps/map_files/Kutjevo/sprinkles/35.communications.dmm @@ -108,10 +108,6 @@ dir = 1 }, /area/template_noop) -"qI" = ( -/obj/structure/window/framed/kutjevo, -/turf/open/space/basic, -/area/template_noop) "qM" = ( /obj/structure/machinery/light, /obj/effect/decal/cleanable/blood/oil, @@ -492,7 +488,7 @@ Re EK "} (5,1,1) = {" -qI +EK wC rG LO @@ -506,7 +502,7 @@ cm YO "} (6,1,1) = {" -qI +EK rm lZ nn diff --git a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm index 50240fcd8d55..5a4fa0fbdf91 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -1030,7 +1030,7 @@ /area/lv522/outdoors/colony_streets/north_east_street) "aDE" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Southeast Landing Zone" + name = "LZ2: Southeast Landing Zone" }, /turf/open/floor/plating, /area/shuttle/drop2/lv522) @@ -7115,7 +7115,7 @@ /area/lv522/indoors/a_block/dorms) "dos" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Southwest Landing Zone" + name = "LZ1: Southwest Landing Zone" }, /turf/open/floor/plating, /area/shuttle/drop1/lv522) diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index af507ab907fd..9c84577bbbdd 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -5862,7 +5862,7 @@ /area/lv624/ground/river/west_river) "aBo" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "Robotics Landing Zone" + name = "LZ2: Robotics Landing Zone" }, /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz2) @@ -8590,7 +8590,7 @@ /area/lv624/ground/jungle/south_west_jungle) "aLz" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "Nexus Landing Zone" + name = "LZ1: Nexus Landing Zone" }, /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz1) diff --git a/maps/map_files/New_Varadero/New_Varadero.dmm b/maps/map_files/New_Varadero/New_Varadero.dmm index aeddb1aa1021..656c4a7f48b1 100644 --- a/maps/map_files/New_Varadero/New_Varadero.dmm +++ b/maps/map_files/New_Varadero/New_Varadero.dmm @@ -788,7 +788,7 @@ /area/varadero/exterior/pool) "aAX" = ( /obj/docking_port/stationary/marine_dropship/lz2{ - name = "LZ2 - Palm Airfield" + name = "LZ2: Palm Airfield" }, /turf/open/gm/dirt, /area/varadero/exterior/lz2_near) @@ -23224,7 +23224,7 @@ /area/varadero/interior/security) "oXw" = ( /obj/docking_port/stationary/marine_dropship/lz1{ - name = "LZ1 - Pontoon Dock" + name = "LZ1: Pontoon Dock" }, /turf/open/floor/plating/icefloor, /area/varadero/exterior/lz1_near) diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm index 19a7717a7e67..84355a59b16d 100644 --- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm +++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm @@ -7794,7 +7794,9 @@ }, /area/strata/ag/interior/outpost/engi) "axf" = ( -/obj/structure/surface/table/reinforced/prison, +/obj/structure/tunnel/maint_tunnel{ + pixel_y = 16 + }, /turf/open/floor/strata, /area/strata/ag/interior/outpost/engi) "axg" = ( @@ -10464,11 +10466,13 @@ }, /area/strata/ag/interior/outpost/canteen) "aFC" = ( -/obj/structure/tunnel{ - id = "hole3" +/obj/structure/machinery/light/small, +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" }, -/turf/open/auto_turf/snow/brown_base/layer0, -/area/strata/ag/exterior/paths/north_outpost) +/area/strata/ag/interior/outpost/engi/drome) "aFD" = ( /turf/closed/wall/strata_ice/jungle, /area/strata/ag/interior/outpost/maint/canteen_e_1) @@ -16510,11 +16514,9 @@ /turf/open/auto_turf/snow/brown_base/layer2, /area/strata/ag/interior/disposals) "bad" = ( -/obj/structure/tunnel{ - id = "hole4" - }, -/turf/open/auto_turf/snow/brown_base/layer2, -/area/strata/ag/exterior/north_lz_caves) +/obj/structure/tunnel, +/turf/open/auto_turf/strata_grass/layer1, +/area/strata/ug/interior/jungle/deep/tearlake) "bae" = ( /obj/structure/prop/almayer/computers/mapping_computer, /turf/open/floor/strata{ @@ -18476,12 +18478,9 @@ }, /area/strata/ug/interior/outpost/jung/dorms/admin4) "bgX" = ( -/obj/structure/flora/bush/ausbushes/grassybush, -/obj/structure/tunnel{ - id = "hole2" - }, -/turf/open/auto_turf/strata_grass/layer1, -/area/strata/ug/exterior/jungle/deep/carplake_center) +/obj/structure/tunnel, +/turf/open/auto_turf/ice/layer1, +/area/strata/ag/exterior/marsh/center) "bha" = ( /obj/structure/pipes/standard/simple/hidden/cyan, /turf/open/auto_turf/snow/brown_base/layer1, @@ -21979,11 +21978,9 @@ /turf/open/auto_turf/snow/brown_base/layer2, /area/strata/ag/exterior/marsh/center) "bui" = ( -/obj/structure/tunnel{ - id = "hole1" - }, -/turf/open/auto_turf/snow/brown_base/layer3, -/area/strata/ag/exterior/tcomms/tcomms_deck) +/obj/structure/tunnel, +/turf/open/auto_turf/strata_grass/layer1, +/area/strata/ug/interior/jungle/deep/minehead) "bul" = ( /obj/item/tool/shovel/snow, /turf/open/auto_turf/snow/brown_base/layer1, @@ -34633,6 +34630,12 @@ "lbh" = ( /turf/open/asphalt/cement, /area/strata/ag/exterior/tcomms/tcomms_deck) +"lbW" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/strata{ + icon_state = "floor3" + }, +/area/strata/ag/interior/outpost/admin) "lcq" = ( /obj/item/clothing/suit/storage/militia, /obj/item/clothing/suit/storage/snow_suit/doctor, @@ -36226,6 +36229,10 @@ }, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/jungle/deep/hotsprings) +"nPr" = ( +/obj/structure/tunnel, +/turf/open/auto_turf/strata_grass/layer1, +/area/strata/ug/interior/jungle/deep/east_carp) "nPJ" = ( /obj/structure/pipes/standard/manifold/hidden/cyan, /turf/open/floor/strata, @@ -37410,12 +37417,14 @@ }, /area/strata/ag/interior/tcomms) "pMU" = ( -/obj/structure/flora/bush/ausbushes/grassybush, -/obj/structure/tunnel{ - id = "hole1" +/obj/structure/tunnel/maint_tunnel{ + pixel_y = 16 }, -/turf/open/auto_turf/strata_grass/layer1, -/area/strata/ug/interior/jungle/platform/east/scrub) +/turf/open/floor/strata{ + dir = 10; + icon_state = "multi_tiles" + }, +/area/strata/ag/interior/outpost/canteen/personal_storage) "pNL" = ( /obj/structure/stairs/perspective{ color = "#6e6e6e"; @@ -49411,7 +49420,7 @@ aXP aYd aac aac -bad +aYd aYd aXP aXP @@ -49825,7 +49834,7 @@ aac aac rsm coC -coC +bgX coC wrw aac @@ -55882,7 +55891,7 @@ aac aac aac aac -bui +btX btq btq btv @@ -60485,7 +60494,7 @@ ayr ayr aCu aAb -aFC +ayw ayw aAR awJ @@ -64616,7 +64625,7 @@ biK blQ biH bsC -bll +lbW cik bCo bGO @@ -69514,7 +69523,7 @@ bvz gUj snV srk -pMU +wij wZZ htD wZZ @@ -69706,7 +69715,7 @@ bgO bht bzl cfg -ppA +aFC snV tnM srk @@ -73738,7 +73747,7 @@ awb agR agR aiM -bPZ +pMU bPZ bPZ bSv @@ -74254,7 +74263,7 @@ jLb jLb sKX jLb -jLb +bad aad aad aad @@ -78846,7 +78855,7 @@ cpg cpg cpg cpg -bgX +kvY piY piY cwD @@ -84455,7 +84464,7 @@ aad aad bHj bHj -vVK +bui bon bon bon @@ -86083,7 +86092,7 @@ sKg sKg sKg daq -daq +nPr daq daq sKg diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 42e343e1b713..263bce521d2a 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -529,17 +529,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"abQ" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "abR" = ( /obj/item/tank/phoron, /turf/open/floor/almayer{ @@ -798,6 +787,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) +"acE" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/north2) "acF" = ( /obj/structure/machinery/light{ dir = 1 @@ -920,20 +915,12 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"acS" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -29 - }, +"acT" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "silver" + icon_state = "cargo" }, -/area/almayer/command/cichallway) +/area/almayer/lifeboat_pumps/north2) "acU" = ( /obj/structure/closet/basketball, /turf/open/floor/almayer{ @@ -1183,6 +1170,15 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) +"adQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "adR" = ( /obj/structure/machinery/door/airlock/almayer/generic{ access_modified = 1; @@ -1211,6 +1207,13 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) +"adZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north2) "aea" = ( /obj/structure/machinery/light{ dir = 1 @@ -1560,6 +1563,17 @@ icon_state = "redfull" }, /area/almayer/shipboard/starboard_missiles) +"afc" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 17 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_s) "afd" = ( /obj/structure/largecrate/random/barrel/white, /obj/structure/sign/safety/bulkhead_door{ @@ -2559,14 +2573,6 @@ icon_state = "red" }, /area/almayer/living/starboard_garden) -"aiQ" = ( -/obj/structure/machinery/faxmachine, -/obj/structure/surface/table/almayer, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "aiR" = ( /obj/structure/stairs{ dir = 8; @@ -2614,16 +2620,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) -"aiW" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "aiX" = ( /turf/closed/wall/almayer, /area/almayer/living/pilotbunks) @@ -2667,12 +2663,6 @@ "ajl" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/upper_medical) -"ajm" = ( -/obj/structure/closet/secure_closet/securecom, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "ajp" = ( /obj/structure/surface/table/almayer, /obj/structure/dropship_equipment/fuel/cooling_system{ @@ -2973,14 +2963,12 @@ icon_state = "redcorner" }, /area/almayer/shipboard/weapon_room) -"ako" = ( +"akr" = ( /obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 + dir = 8; + icon_state = "pipe-c" }, -/turf/open/floor/carpet, +/turf/open/floor/wood/ship, /area/almayer/living/commandbunks) "akt" = ( /obj/structure/cable/heavyduty{ @@ -3516,15 +3504,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"amE" = ( -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "amF" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -3727,6 +3706,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"anl" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "anm" = ( /obj/structure/stairs{ icon_state = "ramptop" @@ -3747,47 +3732,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) -"anp" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) -"anq" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/structure/surface/rack, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) -"anr" = ( -/obj/structure/sign/safety/intercom{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "ans" = ( /turf/open/floor/almayer{ dir = 8; @@ -5410,16 +5354,6 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) -"asu" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "asv" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/machinery/light{ @@ -5837,12 +5771,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) -"atx" = ( -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "aty" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -6018,6 +5946,14 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"atY" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "atZ" = ( /obj/structure/machinery/door_control{ id = "OTStore"; @@ -7339,16 +7275,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) -"axR" = ( -/obj/structure/machinery/shower, -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ - dir = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) "axV" = ( /obj/structure/machinery/telecomms/server/presets/command, /turf/open/floor/almayer{ @@ -7795,33 +7721,6 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"azm" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/paper_bin/uscm{ - pixel_y = 7; - pixel_x = -17 - }, -/obj/item/tool/pen/clicky{ - pixel_x = -13; - pixel_y = -1 - }, -/obj/item/tool/pen/clicky{ - pixel_y = 5; - pixel_x = -13 - }, -/obj/structure/machinery/door_control{ - id = "CO-Office"; - name = "Door Control"; - normaldoorcontrol = 1; - req_access_txt = "31"; - pixel_y = 7 - }, -/obj/item/ashtray/bronze{ - pixel_y = 1; - pixel_x = 12 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "azn" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -7837,12 +7736,6 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"azp" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "azq" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -8853,6 +8746,14 @@ icon_state = "orangecorner" }, /area/almayer/command/telecomms) +"aDc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "aDe" = ( /obj/structure/machinery/light{ dir = 8 @@ -9646,6 +9547,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) +"aGi" = ( +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "aGj" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -9824,6 +9731,24 @@ "aHe" = ( /turf/closed/wall/almayer, /area/almayer/command/lifeboat) +"aHk" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_y = 21 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/numbertwobunks) "aHl" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine, @@ -9978,6 +9903,12 @@ }, /turf/open/floor/engine, /area/almayer/engineering/airmix) +"aHT" = ( +/obj/structure/bed/chair/wood/normal, +/obj/item/bedsheet/brown, +/obj/item/toy/plush/farwa, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/cells) "aHU" = ( /obj/structure/platform{ dir = 1 @@ -10204,12 +10135,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"aIV" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "aIX" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -10472,11 +10397,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"aKk" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "aKn" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -10768,6 +10688,25 @@ icon_state = "dark_sterile" }, /area/almayer/living/numbertwobunks) +"aLt" = ( +/obj/structure/surface/rack, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/numbertwobunks) +"aLA" = ( +/obj/item/trash/uscm_mre, +/obj/structure/bed/chair/comfy/charlie{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "aLB" = ( /turf/closed/wall/almayer, /area/almayer/hallways/starboard_hallway) @@ -11109,6 +11048,14 @@ icon_state = "red" }, /area/almayer/squads/alpha) +"aNe" = ( +/obj/structure/closet/firecloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "aNi" = ( /turf/closed/wall/almayer, /area/almayer/living/chapel) @@ -11264,18 +11211,6 @@ /obj/effect/landmark/start/nurse, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices) -"aOj" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom"; - dir = 2 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) "aOq" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, @@ -12095,12 +12030,25 @@ }, /area/almayer/medical/upper_medical) "aSh" = ( -/obj/structure/bed/chair/comfy/alpha{ - dir = 1 +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = -11; + pixel_y = 5 + }, +/obj/item/tool/pen{ + pixel_x = -10; + pixel_y = -2 }, -/obj/item/prop/helmetgarb/helmet_nvg/cosmetic, /turf/open/floor/almayer{ - icon_state = "redfull" + icon_state = "plate" }, /area/almayer/living/briefing) "aSl" = ( @@ -12352,11 +12300,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) -"aTl" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/command/cichallway) "aTm" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north1) @@ -12530,6 +12473,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"aTV" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "aTW" = ( /obj/structure/bed/chair{ dir = 8 @@ -12714,6 +12663,12 @@ icon_state = "green" }, /area/almayer/living/offices) +"aUP" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "aUY" = ( /obj/structure/machinery/light{ dir = 4 @@ -13053,6 +13008,23 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) +"aWA" = ( +/obj/structure/toilet{ + pixel_y = 13 + }, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = -3 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/item/prop/magazine/dirty{ + pixel_x = -6; + pixel_y = -10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/captain_mess) "aWD" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -14653,6 +14625,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"bfe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "bfl" = ( /turf/open/floor/almayer{ dir = 5; @@ -15172,10 +15154,6 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) -"bhM" = ( -/obj/structure/safe/cl_office, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "bhT" = ( /obj/structure/cargo_container/lockmart/mid{ layer = 3.1; @@ -15270,22 +15248,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) -"biJ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) "biL" = ( /obj/structure/platform{ dir = 4 @@ -15449,13 +15411,6 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_umbilical) -"bjQ" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "bjR" = ( /obj/structure/cargo_container/arious/right, /turf/open/floor/almayer, @@ -16276,16 +16231,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) -"boc" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "bof" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -16541,15 +16486,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"bpw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "bpz" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -17986,16 +17922,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"bxA" = ( -/obj/structure/machinery/power/apc/almayer/hardened, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "bxB" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -19957,16 +19883,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"bGz" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "green" - }, -/area/almayer/squads/req) "bGF" = ( /obj/structure/machinery/landinglight/ds2{ dir = 1 @@ -20270,6 +20186,28 @@ "bHP" = ( /turf/open/floor/plating/almayer, /area/almayer/shipboard/weapon_room) +"bHS" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/USCMtray{ + pixel_y = 4 + }, +/obj/item/trash/USCMtray{ + pixel_y = 6 + }, +/obj/item/trash/USCMtray{ + pixel_y = 8 + }, +/obj/item/trash/USCMtray{ + pixel_y = 10 + }, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "bHT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20438,6 +20376,25 @@ }, /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/navigation) +"bIA" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 29 + }, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/auxiliary_officer_office) "bII" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 8; @@ -22323,23 +22280,6 @@ icon_state = "tcomms" }, /area/almayer/engineering/engine_core) -"bQl" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/item/prop/magazine/boots/n160{ - pixel_y = -8; - pixel_x = 4; - layer = 2.8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/commandbunks) "bQm" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -22442,12 +22382,6 @@ }, /turf/closed/wall/almayer, /area/almayer/squads/req) -"bQS" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, -/turf/open/floor/almayer{ - icon_state = "green" - }, -/area/almayer/squads/req) "bQU" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -22541,6 +22475,14 @@ icon_state = "red" }, /area/almayer/shipboard/brig/lobby) +"bRo" = ( +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/airoom) "bRr" = ( /obj/structure/machinery/fuelcell_recycler, /turf/open/floor/almayer{ @@ -23207,19 +23149,6 @@ icon_state = "blue" }, /area/almayer/squads/charlie_delta_shared) -"bUo" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = -32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = -32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/squads/req) "bUp" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -23432,6 +23361,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) +"bVg" = ( +/obj/structure/machinery/status_display{ + pixel_x = 32; + pixel_y = 16 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "bVi" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -23465,12 +23401,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"bVs" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "bVw" = ( /turf/open/floor/almayer{ dir = 4; @@ -23785,18 +23715,10 @@ /area/almayer/engineering/engineering_workshop) "bXc" = ( /obj/structure/surface/table/almayer, -/obj/item/reagent_container/food/snacks/mre_pack/xmas2{ - pixel_x = 5; +/obj/structure/machinery/microwave{ pixel_y = 9 }, -/obj/effect/landmark/map_item{ - layer = 3.03; - pixel_x = -7; - pixel_y = 4 - }, -/obj/item/reagent_container/food/snacks/mre_pack/xmas3{ - pixel_x = 5 - }, +/obj/item/reagent_container/food/snacks/packaged_burger, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -24036,13 +23958,6 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"bYa" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "green" - }, -/area/almayer/squads/req) "bYc" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -24997,6 +24912,15 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"ccm" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/closet/secure_closet/fridge/organic, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "ccq" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -25132,14 +25056,14 @@ }, /area/almayer/engineering/lower_engineering) "ccF" = ( -/obj/structure/bed/chair/comfy/alpha{ - dir = 1 - }, /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "redfull" + icon_state = "plate" }, /area/almayer/living/briefing) "ccG" = ( @@ -25359,13 +25283,6 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/hangar) -"cdB" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "cdE" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/cans/waterbottle{ @@ -25749,15 +25666,27 @@ /turf/open/floor/almayer, /area/almayer/squads/charlie) "cgz" = ( -/obj/structure/bed/chair/comfy/charlie, /obj/structure/sign/poster{ desc = "Eat an EAT bar! ...Aren't they called MEAT bars?"; icon_state = "poster7"; name = "EAT - poster"; pixel_x = 27 }, +/obj/structure/surface/table/almayer, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 2 + }, /turf/open/floor/almayer{ - icon_state = "emeraldfull" + icon_state = "plate" }, /area/almayer/living/briefing) "cgA" = ( @@ -26016,6 +25945,12 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) +"cij" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "cil" = ( /obj/structure/machinery/light, /obj/structure/sign/safety/waterhazard{ @@ -26402,6 +26337,15 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_s) +"ckE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "ckI" = ( /obj/structure/disposalpipe/segment, /obj/item/device/radio/intercom{ @@ -26881,16 +26825,6 @@ icon_state = "plating" }, /area/almayer/shipboard/port_point_defense) -"cmo" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/tool, -/obj/item/packageWrap, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "green" - }, -/area/almayer/squads/req) "cmp" = ( /turf/closed/wall/almayer, /area/almayer/engineering/engineering_workshop/hangar) @@ -27219,10 +27153,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"com" = ( -/obj/structure/largecrate/supply/weapons/pistols, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "cop" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/tankerbunks) @@ -27244,14 +27174,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) -"coD" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_18"; - pixel_y = 12 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "coG" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer{ @@ -27437,21 +27359,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"crw" = ( -/obj/structure/bed/bedroll{ - name = "cat bed"; - desc = "A bed of cotton fabric, purposely made for a cat to comfortably sleep on."; - pixel_y = 0 - }, -/mob/living/simple_animal/cat/Jones{ - dir = 8 - }, -/obj/structure/machinery/firealarm{ - pixel_y = 28; - pixel_x = -1 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "crD" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -27460,10 +27367,8 @@ }, /area/almayer/squads/req) "crK" = ( -/obj/structure/bed/chair/comfy/alpha{ - dir = 1 - }, /obj/structure/pipes/vents/pump, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer{ icon_state = "redfull" }, @@ -27493,8 +27398,15 @@ }, /area/almayer/hull/upper_hull/u_m_p) "csG" = ( -/obj/structure/bed/chair/comfy/delta, -/obj/item/trash/popcorn, +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 + }, +/obj/item/paper, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = -10; + pixel_y = 4 + }, /turf/open/floor/almayer{ icon_state = "bluefull" }, @@ -27588,6 +27500,15 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cryo) +"cum" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "cus" = ( /obj/docking_port/stationary/lifeboat_dock/starboard, /turf/open/floor/almayer_hull{ @@ -27733,6 +27654,13 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/main_office) +"cxZ" = ( +/obj/structure/bed/chair/comfy/delta, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "cyo" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -27778,6 +27706,12 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/execution) +"czG" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) "czJ" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = 8; @@ -28094,7 +28028,9 @@ pixel_x = -27 }, /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "cEO" = ( /obj/structure/largecrate/supply/floodlights, @@ -28202,6 +28138,17 @@ "cHu" = ( /turf/closed/wall/almayer/research/containment/wall/south, /area/almayer/medical/containment/cell/cl) +"cHA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "silver" + }, +/area/almayer/command/cichallway) "cHE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -28240,6 +28187,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_s) +"cIl" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "cIr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28385,11 +28339,17 @@ }, /area/almayer/engineering/upper_engineering/port) "cKX" = ( -/obj/structure/platform, /obj/structure/pipes/vents/scrubber{ dir = 4 }, -/turf/open/floor/almayer, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, /area/almayer/living/briefing) "cKY" = ( /obj/structure/machinery/light, @@ -28529,15 +28489,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell/cl) -"cNK" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "cNX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28625,6 +28576,23 @@ "cQv" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/general_equipment) +"cQD" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -29 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/commandbunks) "cQF" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer{ @@ -28663,6 +28631,16 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) +"cRg" = ( +/obj/item/tool/weldpack{ + pixel_y = 15 + }, +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/welding, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "cRi" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -28785,12 +28763,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_f_p) -"cVb" = ( -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "cVs" = ( /obj/structure/platform_decoration{ dir = 8 @@ -28900,16 +28872,6 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_s) -"cWE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/port) "cWI" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -29270,6 +29232,12 @@ icon_state = "plating" }, /area/almayer/engineering/engine_core) +"ddN" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/squads/req) "deb" = ( /obj/structure/bed, /obj/structure/machinery/flasher{ @@ -29375,6 +29343,17 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) +"dfP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "dgg" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -29415,11 +29394,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"dha" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "dhQ" = ( /obj/structure/sign/safety/terminal{ pixel_x = -17 @@ -29467,12 +29441,13 @@ }, /area/almayer/hallways/starboard_umbilical) "diw" = ( -/obj/structure/bed/chair/comfy/delta, /obj/structure/machinery/light{ dir = 8 }, +/obj/structure/bed/chair/comfy/delta, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "bluefull" + icon_state = "plate" }, /area/almayer/living/briefing) "diz" = ( @@ -29513,6 +29488,14 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) +"diM" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "djm" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -29567,6 +29550,14 @@ icon_state = "orange" }, /area/almayer/engineering/engineering_workshop/hangar) +"djN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "djQ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -29604,6 +29595,25 @@ icon_state = "redfull" }, /area/almayer/living/offices/flight) +"dkn" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + density = 0; + pixel_y = 16 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/door_control{ + id = "bot_uniforms"; + name = "Uniform Vendor Lockdown"; + pixel_x = -24; + pixel_y = 18; + req_access_txt = "31" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/cic) "dkq" = ( /obj/structure/machinery/door_control{ id = "hangarentrancenorth"; @@ -29622,10 +29632,10 @@ }, /area/almayer/living/briefing) "dkH" = ( -/obj/structure/bed/chair/comfy/delta, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 }, +/obj/structure/bed/chair/comfy/delta, /turf/open/floor/almayer{ icon_state = "bluefull" }, @@ -29646,6 +29656,17 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) +"dkS" = ( +/obj/structure/machinery/shower, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/door/window/tinted{ + dir = 2 + }, +/obj/item/clothing/mask/cigarette/weed, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "dll" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -29667,6 +29688,15 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) +"dlN" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "dmg" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -29762,6 +29792,22 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) +"dnJ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "dnS" = ( /obj/structure/safe, /turf/open/floor/almayer{ @@ -29825,28 +29871,6 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"doU" = ( -/obj/structure/surface/rack, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) -"dpn" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/item/reagent_container/food/condiment/enzyme, -/obj/item/reagent_container/food/condiment/enzyme, -/obj/structure/transmitter{ - name = "Kitchen Telephone"; - phone_category = "Almayer"; - phone_id = "Kitchen"; - pixel_x = -8; - pixel_y = 29 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/grunt_rnr) "dpo" = ( /obj/structure/machinery/light{ dir = 1 @@ -29959,6 +29983,12 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"dqQ" = ( +/obj/structure/closet/secure_closet/fridge/groceries, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "dqV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -30001,6 +30031,18 @@ icon_state = "silver" }, /area/almayer/engineering/port_atmos) +"drp" = ( +/obj/structure/toilet{ + dir = 8; + layer = 2.9; + pixel_y = 8 + }, +/obj/structure/window{ + layer = 2.95; + pixel_y = -2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/commandbunks) "drt" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -30058,6 +30100,12 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) +"dtv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "dtH" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -30141,15 +30189,6 @@ icon_state = "mono" }, /area/almayer/living/starboard_garden) -"duz" = ( -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) "duF" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/almayer{ @@ -30344,15 +30383,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"dyj" = ( -/obj/structure/closet/secure_closet/commander, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/device/whistle, -/obj/item/device/megaphone, -/obj/item/device/radio, -/obj/item/clothing/shoes/laceup, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "dyp" = ( /obj/structure/machinery/ares/cpu, /turf/open/floor/almayer/no_build{ @@ -30418,6 +30448,17 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) +"dAi" = ( +/obj/structure/sign/nosmoking_2{ + pixel_x = 32 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "dAq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -30435,7 +30476,9 @@ dir = 8 }, /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "dAX" = ( /obj/structure/machinery/camera/autoname/almayer{ @@ -30685,12 +30728,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"dEJ" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/lifeboat_pumps/north2) "dEQ" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/tabasco, @@ -30705,24 +30742,6 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) -"dFb" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/storage/bible{ - desc = "As the legendary US Army chaplain once said, 'There are no Athiests in fancy offices'."; - name = "Holy Bible"; - pixel_x = -3; - pixel_y = 9 - }, -/obj/item/prop/helmetgarb/rosary{ - pixel_y = 5; - pixel_x = -4 - }, -/obj/item/device/flashlight/lamp{ - pixel_y = 1; - pixel_x = 3 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "dFk" = ( /turf/open/floor/almayer{ dir = 8; @@ -30938,16 +30957,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"dID" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "dII" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/marine/shared/alpha_bravo, /obj/effect/decal/warning_stripes{ @@ -30970,12 +30979,6 @@ icon_state = "cargo" }, /area/almayer/hull/lower_hull/l_m_s) -"dKa" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_s) "dKm" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -31018,16 +31021,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"dLe" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2" - }, -/turf/open/floor/almayer{ - icon_state = "silver" - }, -/area/almayer/command/cichallway) "dLt" = ( /obj/structure/sign/safety/hazard{ pixel_x = -17; @@ -31052,20 +31045,6 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) -"dMf" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/photo_album{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/folder/black{ - pixel_x = 7; - pixel_y = -3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "dMB" = ( /turf/open/floor/almayer{ dir = 8; @@ -31195,25 +31174,6 @@ icon_state = "silver" }, /area/almayer/command/airoom) -"dQp" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/cells) "dQs" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -31257,12 +31217,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/hydroponics) -"dRs" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/port) "dRv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -31326,6 +31280,19 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/main_office) +"dSn" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/cells) "dSp" = ( /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" @@ -31573,13 +31540,6 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) -"dXo" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/taperecorder, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "dXr" = ( /obj/structure/bed/chair{ dir = 8; @@ -31633,6 +31593,17 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) +"dYH" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/bed/chair/comfy/alpha{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "dYK" = ( /obj/item/folder/red{ desc = "A red folder. The previous contents are a mystery, though the number 28 has been written on the inside of each flap numerous times. Smells faintly of cough syrup."; @@ -31732,6 +31703,12 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) +"eaX" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/starboard) "ebd" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk, @@ -31745,6 +31722,26 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"ebt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) +"ebz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "ebD" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -31874,6 +31871,26 @@ icon_state = "sterile_green" }, /area/almayer/medical/medical_science) +"edx" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) +"edM" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hallways/vehiclehangar) "eed" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -32163,6 +32180,15 @@ dir = 1 }, /area/almayer/medical/containment/cell) +"eiH" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "eiK" = ( /obj/structure/bed/chair{ dir = 4 @@ -32323,20 +32349,27 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_one) -"elM" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "elR" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 1 }, /area/almayer/medical/containment/cell) +"elX" = ( +/obj/structure/surface/table/almayer, +/obj/item/trash/uscm_mre, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/reagent_container/food/drinks/cans/souto/diet/grape{ + pixel_x = -7; + pixel_y = 10 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "eme" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -32479,10 +32512,6 @@ }, /area/almayer/hallways/aft_hallway) "epq" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, /obj/structure/sign/poster{ desc = "One of those hot, tanned babes back the beaches of good ol' Earth."; icon_state = "poster12"; @@ -32490,7 +32519,13 @@ pixel_x = 27; serial_number = 12 }, -/turf/open/floor/almayer, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "epu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -32513,6 +32548,18 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"epK" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/smg/m39{ + pixel_y = 6 + }, +/obj/item/weapon/gun/smg/m39{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "eqb" = ( /obj/structure/surface/table/almayer, /obj/item/tool/stamp/denied{ @@ -32635,6 +32682,14 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) +"erz" = ( +/obj/structure/closet/crate, +/obj/item/ammo_box/magazine/l42a, +/obj/item/ammo_box/magazine/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "erG" = ( /obj/structure/disposalpipe/junction{ dir = 2; @@ -32678,23 +32733,20 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) -"esC" = ( -/obj/structure/toilet{ - pixel_y = 13 - }, -/obj/item/paper_bin/uscm{ - pixel_x = 9; - pixel_y = -3 +"esy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/machinery/light/small{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/prop/magazine/dirty{ - pixel_x = -6; - pixel_y = -10 +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -29 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/captain_mess) +/turf/open/floor/almayer{ + icon_state = "silver" + }, +/area/almayer/command/cichallway) "esF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -32728,14 +32780,6 @@ icon_state = "plating_striped" }, /area/almayer/command/lifeboat) -"etn" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) "ets" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -32791,6 +32835,33 @@ icon_state = "test_floor4" }, /area/almayer/living/officer_study) +"euM" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/paper_bin/uscm{ + pixel_x = -17; + pixel_y = 7 + }, +/obj/item/tool/pen/clicky{ + pixel_x = -13; + pixel_y = -1 + }, +/obj/item/tool/pen/clicky{ + pixel_x = -13; + pixel_y = 5 + }, +/obj/structure/machinery/door_control{ + id = "CO-Office"; + name = "Door Control"; + normaldoorcontrol = 1; + pixel_y = 7; + req_access_txt = "31" + }, +/obj/item/ashtray/bronze{ + pixel_x = 12; + pixel_y = 1 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "euN" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -32822,6 +32893,12 @@ icon_state = "logo_c" }, /area/almayer/command/cic) +"euY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/port) "eva" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 @@ -32964,6 +33041,12 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cryo) +"eyv" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "eyG" = ( /obj/structure/platform, /turf/open/floor/almayer{ @@ -33112,12 +33195,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_umbilical) -"eBE" = ( -/obj/structure/machinery/photocopier{ - anchored = 0 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "eBO" = ( /obj/structure/bed, /turf/open/floor/almayer{ @@ -33179,8 +33256,6 @@ }, /area/almayer/lifeboat_pumps/south2) "eCS" = ( -/obj/structure/bed/chair/comfy/delta, -/obj/item/trash/popcorn, /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 }, @@ -33286,17 +33361,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) -"eFG" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/surface/table/almayer, -/obj/item/tool/hand_labeler, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/chemistry) "eFH" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_s) @@ -33774,6 +33838,19 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"eRt" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hull/lower_hull/l_f_s) "eRu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -33841,6 +33918,27 @@ /obj/effect/landmark/crap_item, /turf/open/floor/almayer, /area/almayer/living/briefing) +"eTh" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/surface/rack, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "eTo" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -33854,6 +33952,13 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"eTx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "eTO" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -34015,14 +34120,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"eXk" = ( -/obj/effect/landmark/late_join/working_joe, -/obj/effect/landmark/start/working_joe, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/airoom) "eXo" = ( /obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, @@ -34034,17 +34131,15 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/offices) -"eXS" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 +"eXU" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 2; - pixel_y = 2 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/hull/upper_hull/u_m_s) "eYr" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -34177,25 +34272,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"faE" = ( -/obj/structure/bookcase{ - icon_state = "book-5"; - name = "law and engineering manuals bookcase"; - opacity = 0 - }, -/obj/item/book/manual/marine_law, -/obj/item/book/manual/detective, -/obj/item/book/manual/security_space_law, -/obj/item/book/manual/engineering_guide, -/obj/item/book/manual/engineering_construction, -/obj/item/book/manual/orbital_cannon_manual, -/obj/item/book/manual/ripley_build_and_repair, -/obj/item/book/manual/engineering_hacking, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "faO" = ( /obj/item/stack/cable_coil, /turf/open/floor/plating/plating_catwalk, @@ -34457,6 +34533,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_two) +"ffl" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/map_item, +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "ffE" = ( /turf/open/floor/almayer/no_build{ icon_state = "plating" @@ -34580,14 +34667,6 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) -"fhQ" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, -/obj/structure/machinery/light, -/obj/item/reagent_container/food/condiment/sugar, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/grunt_rnr) "fiq" = ( /turf/closed/wall/almayer, /area/almayer/hull/lower_hull/l_m_p) @@ -34602,6 +34681,27 @@ icon_state = "orange" }, /area/almayer/engineering/engine_core) +"fiP" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/fancy/cigar{ + layer = 3.04; + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = -11; + pixel_y = 16 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = -2; + pixel_y = 16 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 7; + pixel_y = 16 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "fjO" = ( /obj/item/tool/wet_sign, /obj/effect/decal/cleanable/blood, @@ -34706,12 +34806,6 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/execution) -"fnv" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "fnx" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/door/window/eastright{ @@ -34753,6 +34847,18 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) +"fnQ" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/door/window/tinted{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "fnZ" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /obj/structure/machinery/light/small{ @@ -34873,6 +34979,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliason) +"fqg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south2) "fqu" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer, @@ -34929,20 +35041,6 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) -"frJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "frM" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -34956,19 +35054,6 @@ icon_state = "tcomms" }, /area/almayer/command/airoom) -"frY" = ( -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = -6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "fsd" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -35105,6 +35190,21 @@ /obj/structure/largecrate/random/barrel/green, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"fuR" = ( +/obj/structure/bed/bedroll{ + desc = "A bed of cotton fabric, purposely made for a cat to comfortably sleep on."; + name = "cat bed"; + pixel_y = 0 + }, +/mob/living/simple_animal/cat/Jones{ + dir = 8 + }, +/obj/structure/machinery/firealarm{ + pixel_x = -1; + pixel_y = 28 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "fuS" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -35416,6 +35516,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/lifeboat) +"fCt" = ( +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "fCL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -35556,6 +35665,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"fFq" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "fFD" = ( /obj/structure/window/reinforced{ dir = 4; @@ -35591,16 +35710,6 @@ icon_state = "plate" }, /area/almayer/medical/morgue) -"fGa" = ( -/obj/structure/surface/rack, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/numbertwobunks) "fGg" = ( /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer, @@ -35665,6 +35774,17 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"fHe" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/prop/helmetgarb/helmet_nvg/cosmetic, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) "fHh" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -35995,6 +36115,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"fNu" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper, +/obj/item/tool/pen{ + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) "fNA" = ( /obj/structure/closet/fireaxecabinet{ pixel_y = 32 @@ -36011,21 +36142,19 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"fOh" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4; + icon_state = "exposed01-supply" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/combat_correspondent) "fOk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"fOv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "fOz" = ( /obj/structure/target{ name = "punching bag" @@ -36131,20 +36260,6 @@ /obj/effect/step_trigger/clone_cleaner, /turf/closed/wall/almayer, /area/almayer/hull/upper_hull/u_m_p) -"fQY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/largecrate/supply/weapons/m39{ - pixel_x = 2 - }, -/obj/structure/largecrate/supply/weapons/m41a{ - layer = 3.1; - pixel_x = 6; - pixel_y = 17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "fRr" = ( /obj/structure/machinery/light{ dir = 1 @@ -36271,18 +36386,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) -"fWi" = ( -/obj/structure/toilet{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) "fWT" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -36311,6 +36414,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) +"fXt" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "green" + }, +/area/almayer/squads/req) "fXx" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -36331,33 +36444,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"fXE" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"fXM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/area/almayer/command/combat_correspondent) +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "fXN" = ( /obj/effect/landmark/start/marine/delta, /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"fXP" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "silver" - }, -/area/almayer/command/cichallway) "fYb" = ( /turf/open/floor/almayer{ dir = 8; @@ -36569,6 +36666,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) +"gcw" = ( +/obj/structure/bed/chair/comfy/bravo, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "gcK" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -36752,6 +36855,10 @@ /obj/structure/machinery/recharge_station, /turf/open/floor/plating, /area/almayer/command/airoom) +"gfK" = ( +/obj/structure/bed/chair/comfy/blue, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "gfS" = ( /obj/structure/sign/safety/cryo{ pixel_y = -26 @@ -36816,6 +36923,14 @@ /obj/effect/landmark/start/liaison, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"ghX" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/item/toy/inflatable_duck, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "gio" = ( /obj/structure/closet/emcloset, /obj/structure/sign/safety/restrictedarea{ @@ -36952,12 +37067,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) -"gka" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "gks" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/plating, @@ -36966,7 +37075,10 @@ /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 }, -/turf/open/floor/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "gkK" = ( /obj/structure/pipes/standard/simple/hidden/supply, @@ -37046,6 +37158,16 @@ icon_state = "plate" }, /area/almayer/shipboard/starboard_point_defense) +"gmp" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) "gms" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -37173,6 +37295,15 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) +"gqF" = ( +/obj/structure/machinery/photocopier, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "gqK" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -37392,12 +37523,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"gvW" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_p) "gwm" = ( /obj/structure/largecrate/random/case/small, /obj/item/device/taperecorder{ @@ -37424,6 +37549,15 @@ icon_state = "bluecorner" }, /area/almayer/living/basketball) +"gwu" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "gww" = ( /obj/structure/bed/chair, /obj/structure/machinery/light{ @@ -37564,6 +37698,12 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"gye" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/cic) "gyt" = ( /obj/item/storage/firstaid/regular, /obj/structure/surface/rack, @@ -37623,13 +37763,6 @@ icon_state = "orange" }, /area/almayer/engineering/ce_room) -"gyU" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north2) "gzn" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 8 @@ -37823,19 +37956,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"gCB" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - cell_type = /obj/item/cell/hyper; - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "gCI" = ( /obj/structure/machinery/light{ dir = 4 @@ -37855,14 +37975,16 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"gDP" = ( -/obj/structure/closet/crate, -/obj/item/ammo_box/magazine/l42a, -/obj/item/ammo_box/magazine/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" +"gDq" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, -/area/almayer/hull/upper_hull/u_m_s) +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "gDW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37896,6 +38018,36 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"gEI" = ( +/obj/item/device/flashlight/lamp/green{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/structure/machinery/door_control{ + id = "cl_shutters"; + name = "Privacy Shutters"; + pixel_x = -5; + pixel_y = 8; + req_access_txt = "200" + }, +/obj/structure/machinery/door_control{ + id = "RoomDivider"; + name = "Room Divider"; + pixel_x = -5; + pixel_y = -4; + req_access_txt = "200" + }, +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/door_control{ + id = "cl_evac"; + name = "Evac Pod Door Control"; + normaldoorcontrol = 1; + pixel_x = -5; + pixel_y = 2; + req_access_txt = "200" + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliason) "gEK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37943,22 +38095,38 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"gGp" = ( +"gGl" = ( /obj/structure/surface/table/almayer, -/obj/item/clothing/mask/cigarette/pipe{ - pixel_x = 8 +/obj/item/device/taperecorder, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/structure/transmitter/rotary{ - name = "Reporter Telephone"; - phone_category = "Almayer"; - phone_id = "Reporter"; +/area/almayer/command/combat_correspondent) +"gGo" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 + }, +/obj/item/reagent_container/food/condiment/hotsauce/cholula{ + pixel_x = 10; + pixel_y = 14 + }, +/obj/item/trash/USCMtray{ pixel_x = -4; - pixel_y = 6 + pixel_y = 4 + }, +/obj/item/reagent_container/food/snacks/hotdog{ + pixel_x = -7; + pixel_y = 5 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/command/combat_correspondent) +/area/almayer/living/briefing) "gGr" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -38091,6 +38259,12 @@ icon_state = "orange" }, /area/almayer/engineering/lower_engineering) +"gJs" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/squads/req) "gJP" = ( /obj/structure/machinery/light, /obj/structure/disposalpipe/segment{ @@ -38120,10 +38294,10 @@ }, /area/almayer/shipboard/port_missiles) "gKH" = ( -/obj/structure/bed/chair/comfy/charlie, /obj/item/trash/uscm_mre, +/obj/structure/bed/chair/comfy/charlie, /turf/open/floor/almayer{ - icon_state = "emeraldfull" + icon_state = "plate" }, /area/almayer/living/briefing) "gKJ" = ( @@ -38303,7 +38477,6 @@ }, /area/almayer/engineering/engine_core) "gNi" = ( -/obj/structure/bed/chair/comfy/delta, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, @@ -38336,6 +38509,18 @@ /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"gOm" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "gOs" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -38546,6 +38731,14 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"gUr" = ( +/obj/item/stack/folding_barricade/three, +/obj/item/stack/folding_barricade/three, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hull/lower_hull/l_f_s) "gUv" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -38605,18 +38798,18 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) -"gVd" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/folder/black{ - pixel_y = 8 +"gVm" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 }, -/obj/item/folder/yellow, -/obj/item/device/flashlight/lamp/green{ - pixel_y = 8; - pixel_x = -16 +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/arcturianstopsign{ + pixel_y = 32 }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "gVq" = ( /obj/structure/machinery/light, /obj/effect/decal/warning_stripes{ @@ -38898,16 +39091,6 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) -"hbI" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "hbZ" = ( /obj/structure/surface/table/almayer, /obj/structure/sign/safety/terminal{ @@ -38993,16 +39176,6 @@ "hcZ" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices) -"hdb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "hdd" = ( /turf/open/floor/almayer{ dir = 9; @@ -39083,6 +39256,13 @@ icon_state = "plate" }, /area/almayer/engineering/engine_core) +"hey" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "heK" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -39138,6 +39318,22 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"hfw" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "hfy" = ( /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, @@ -39283,14 +39479,6 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"hiy" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/lifeboat_pumps/north1) "hiB" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -39304,6 +39492,13 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) +"hiN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "hiQ" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -39354,6 +39549,13 @@ icon_state = "test_floor4" }, /area/almayer/living/grunt_rnr) +"hjT" = ( +/obj/structure/bed/chair/comfy/alpha, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "hki" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer{ @@ -39526,19 +39728,17 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) -"hnI" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ - access_modified = 1; - name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" +"hnH" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/magazine/boots/n117{ + pixel_x = 2; + pixel_y = 5 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "bluefull" }, -/area/almayer/living/pilotbunks) +/area/almayer/living/briefing) "hnV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -39572,6 +39772,19 @@ /obj/structure/flora/pottedplant{ icon_state = "pottedplant_10" }, +/obj/structure/closet/secure_closet/cmdcabinet{ + pixel_y = 24; + desc = "A bulletproof cabinet containing communications equipment."; + name = "communications cabinet"; + 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) "hpk" = ( @@ -39729,18 +39942,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) -"htG" = ( -/obj/item/tool/soap, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "htI" = ( /obj/structure/platform_decoration{ dir = 1 @@ -39772,6 +39973,18 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"huR" = ( +/obj/structure/sign/prop1{ + pixel_y = 32 + }, +/obj/structure/filingcabinet/security{ + pixel_x = -8 + }, +/obj/structure/filingcabinet/medical{ + pixel_x = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "huU" = ( /obj/structure/machinery/door/airlock/almayer/security{ access_modified = 1; @@ -39982,13 +40195,6 @@ "hyQ" = ( /turf/closed/wall/almayer, /area/almayer/living/synthcloset) -"hzb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4; - icon_state = "exposed01-supply" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/combat_correspondent) "hzc" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/upper_engineering/notunnel) @@ -40156,12 +40362,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"hBL" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/lifeboat) "hBU" = ( /obj/structure/largecrate/random/secure, /obj/effect/decal/warning_stripes{ @@ -40171,6 +40371,25 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) +"hBW" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp/green{ + pixel_x = -7; + pixel_y = 20 + }, +/obj/item/ashtray/bronze{ + pixel_x = 4; + pixel_y = 19 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/landmark/map_item{ + pixel_x = -1; + pixel_y = 3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "hCo" = ( /obj/structure/surface/table/almayer, /obj/structure/flora/pottedplant{ @@ -40309,14 +40528,23 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) -"hGB" = ( -/obj/structure/machinery/light, -/obj/structure/flora/pottedplant{ - pixel_y = 3; - pixel_x = -1 +"hFX" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"hGa" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "hGD" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -40403,6 +40631,23 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"hIt" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/kitchen/tray{ + pixel_y = 9 + }, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 + }, +/obj/item/reagent_container/food/snacks/meatpizzaslice{ + pixel_x = -5; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "hII" = ( /obj/structure/machinery/cm_vending/gear/tl{ density = 0; @@ -40438,6 +40683,19 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"hJh" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "hJk" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -40511,61 +40769,6 @@ icon_state = "cargo_arrow" }, /area/almayer/engineering/engineering_workshop/hangar) -"hLB" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "hLC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -40620,6 +40823,14 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) +"hMJ" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "hMN" = ( /obj/structure/machinery/power/apc/almayer, /turf/open/floor/almayer{ @@ -40752,6 +40963,13 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"hQh" = ( +/obj/structure/machinery/light, +/obj/structure/closet/secure_closet/fridge/groceries/stock, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "hQU" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -41114,12 +41332,24 @@ icon_state = "blue" }, /area/almayer/command/cichallway) +"hWS" = ( +/obj/structure/closet/secure_closet/fridge/organic/stock, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "hWU" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"hWX" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_p) "hXb" = ( /turf/open/floor/almayer{ dir = 1; @@ -41157,18 +41387,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"hXG" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, +"hXD" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 + icon_state = "SW-out"; + pixel_x = -1 }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "mono" }, -/area/almayer/engineering/upper_engineering/port) +/area/almayer/lifeboat_pumps/south1) "hXS" = ( /obj/structure/sign/safety/water{ pixel_x = 8; @@ -41259,12 +41486,6 @@ 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{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "iag" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, @@ -41315,6 +41536,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) +"iaE" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "iaF" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -41386,6 +41613,22 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"idJ" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/paper, +/obj/item/tool/pen{ + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "idX" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/prison{ @@ -41502,6 +41745,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"ift" = ( +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "ifR" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -41517,6 +41769,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"ign" = ( +/obj/structure/closet/secure_closet/fridge/fish/stock, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "igp" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp{ @@ -41604,6 +41862,19 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_m_p) +"iii" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = -32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = -32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/squads/req) "iit" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -41808,13 +42079,14 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/offices/flight) -"imJ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 +"imW" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "ina" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -42066,6 +42338,18 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"isu" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/item/bedsheet/hop{ + pixel_y = 0 + }, +/obj/structure/bed{ + pixel_y = 0 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "isC" = ( /obj/effect/projector{ name = "Almayer_AresDown"; @@ -42093,17 +42377,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) -"isI" = ( -/obj/structure/sign/nosmoking_2{ - pixel_x = 32 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/lifeboat_pumps/north1) "isN" = ( /obj/structure/sink{ dir = 8; @@ -42115,6 +42388,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) +"isS" = ( +/obj/item/stack/sheet/cardboard{ + amount = 50 + }, +/obj/structure/surface/rack, +/obj/item/packageWrap, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "green" + }, +/area/almayer/squads/req) "isW" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -42204,6 +42488,16 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"iuw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "iuz" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/warhead, @@ -42221,6 +42515,16 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"iuT" = ( +/obj/structure/closet/emcloset, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_s) "ivf" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/camera, @@ -42313,15 +42617,6 @@ /obj/structure/bed/chair/comfy/beige, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"iwZ" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/fancy/cigarettes/lucky_strikes, -/obj/item/packageWrap, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "green" - }, -/area/almayer/squads/req) "ixj" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/crew/alt, @@ -42437,14 +42732,14 @@ }, /area/almayer/living/offices) "izr" = ( -/obj/structure/bed/chair/comfy/alpha{ - dir = 1 - }, /obj/structure/sign/poster/propaganda{ pixel_x = -27 }, +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, /turf/open/floor/almayer{ - icon_state = "redfull" + icon_state = "plate" }, /area/almayer/living/briefing) "izx" = ( @@ -42657,12 +42952,12 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_p) -"iEz" = ( -/obj/structure/machinery/light, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21"; - pixel_y = 3 +"iET" = ( +/obj/structure/machinery/light{ + dir = 1 }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) "iFc" = ( @@ -42710,6 +43005,21 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/sea_office) +"iFG" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/deployable{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "iFH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -42799,6 +43109,18 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"iIm" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 2; + name = "\improper Bathroom" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/commandbunks) "iIP" = ( /obj/structure/toilet{ pixel_y = 16 @@ -43009,13 +43331,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"iNY" = ( -/obj/structure/machinery/status_display{ - pixel_x = 32; - pixel_y = 16 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "iNZ" = ( /obj/structure/machinery/light{ dir = 8 @@ -43040,18 +43355,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"iPu" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/item/bedsheet/hop{ - pixel_y = 0 - }, -/obj/structure/bed{ - pixel_y = 0 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "iPv" = ( /obj/structure/bed/chair/comfy, /obj/structure/window/reinforced/ultra, @@ -43251,25 +43554,6 @@ /obj/item/facepaint/black, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"iTd" = ( -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) -"iTe" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "iTf" = ( /obj/structure/closet/crate/trashcart, /obj/item/clothing/gloves/yellow, @@ -43366,6 +43650,14 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"iUC" = ( +/obj/structure/machinery/faxmachine, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "iUW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -43414,6 +43706,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"iWb" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "iWc" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -43444,13 +43746,18 @@ /turf/open/floor/almayer, /area/almayer/hallways/hangar) "iWE" = ( -/obj/structure/platform{ - dir = 1 - }, /obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor/almayer, +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 + }, +/obj/structure/barricade/deployable{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, /area/almayer/living/briefing) "iWL" = ( /obj/structure/pipes/standard/simple/hidden/supply, @@ -43479,6 +43786,11 @@ icon_state = "bluefull" }, /area/almayer/living/briefing) +"iXd" = ( +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "iXt" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -43486,6 +43798,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"iXR" = ( +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "iXT" = ( /obj/item/trash/uscm_mre, /turf/open/floor/almayer, @@ -43577,6 +43898,15 @@ icon_state = "plate" }, /area/almayer/living/gym) +"iYR" = ( +/obj/structure/closet/secure_closet/bar{ + name = "Success Cabinet"; + req_access_txt = "1" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/captain_mess) "iZg" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -43672,15 +44002,6 @@ icon_state = "plating" }, /area/almayer/command/airoom) -"jaK" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/vehiclehangar) "jaP" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/almayer_network{ @@ -43798,6 +44119,19 @@ icon_state = "plating_striped" }, /area/almayer/engineering/upper_engineering/starboard) +"jcZ" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "jdk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -44026,28 +44360,22 @@ icon_state = "test_floor4" }, /area/almayer/living/auxiliary_officer_office) -"jgr" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/camera{ - pixel_x = -8; - pixel_y = 12 - }, -/obj/item/paper_bin/uscm{ - pixel_x = 6; - pixel_y = 6 +"jgu" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 }, -/obj/item/tool/pen{ - pixel_x = 4; - pixel_y = -4 +/obj/structure/mirror{ + pixel_x = 29 }, -/obj/item/storage/box/donkpockets{ - pixel_x = -8; - pixel_y = -1 +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, -/area/almayer/command/combat_correspondent) +/area/almayer/living/captain_mess) "jgw" = ( /obj/structure/sign/safety/nonpress_0g{ pixel_x = 32 @@ -44130,21 +44458,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) -"jhB" = ( -/obj/structure/bookcase{ - icon_state = "book-5"; - name = "medical manuals bookcase"; - opacity = 0 - }, -/obj/item/book/manual/surgery, -/obj/item/book/manual/research_and_development, -/obj/item/book/manual/medical_diagnostics_manual, -/obj/item/book/manual/medical_cloning, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "jhD" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -44314,6 +44627,11 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"jkL" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldingtool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "jkS" = ( /obj/structure/window/framed/almayer/hull/hijack_bustable, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -44498,12 +44816,36 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/command/cic) +"jog" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/photo_album{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/folder/black{ + pixel_x = 7; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "jox" = ( /obj/structure/machinery/brig_cell/cell_3{ pixel_x = -32 }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/processing) +"joE" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" + }, +/turf/open/floor/almayer{ + icon_state = "silver" + }, +/area/almayer/command/cichallway) "joG" = ( /obj/structure/machinery/washing_machine, /obj/structure/sign/poster{ @@ -44613,6 +44955,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"jrV" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "jss" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -44662,6 +45014,12 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) +"juf" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "jup" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -44827,13 +45185,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"jxP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/vehiclehangar) "jyi" = ( /obj/structure/machinery/power/port_gen/pacman, /turf/open/floor/almayer{ @@ -44861,15 +45212,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) -"jzE" = ( -/obj/structure/closet/secure_closet/bar{ - name = "Success Cabinet"; - req_access_txt = "1" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/captain_mess) "jzZ" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ @@ -44964,6 +45306,36 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"jBY" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = 9 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = -3 + }, +/obj/structure/noticeboard{ + desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "jCa" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -44972,6 +45344,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"jCn" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "jCK" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -45017,6 +45398,27 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"jEI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/computer/cameras/wooden_tv/prop{ + pixel_y = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) +"jEX" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/folder/black{ + pixel_y = 8 + }, +/obj/item/folder/yellow, +/obj/item/device/flashlight/lamp/green{ + pixel_x = -16; + pixel_y = 8 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "jFe" = ( /obj/structure/prop/holidays/string_lights{ pixel_y = 27 @@ -45074,12 +45476,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_s) -"jFY" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/port) "jGn" = ( /obj/structure/machinery/light{ dir = 1 @@ -45166,6 +45562,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) +"jIG" = ( +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "jIV" = ( /obj/structure/surface/rack, /obj/item/book/manual/marine_law{ @@ -45372,16 +45777,6 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) -"jMx" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 11; - pixel_y = -26 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "jMG" = ( /obj/structure/largecrate/random/case/small, /obj/structure/largecrate/random/mini/wooden{ @@ -45465,12 +45860,13 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"jND" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 +"jNY" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_18"; + pixel_y = 12 }, -/turf/open/floor/wood/ship, +/turf/open/floor/carpet, /area/almayer/living/commandbunks) "jOi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ @@ -45559,6 +45955,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_s) +"jPn" = ( +/obj/structure/machinery/photocopier{ + anchored = 0 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "jPq" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/almayer{ @@ -45610,6 +46012,15 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"jRZ" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "jSo" = ( /obj/item/tool/warning_cone, /turf/open/floor/almayer{ @@ -45741,9 +46152,6 @@ /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) "jUo" = ( -/obj/structure/bed/chair/comfy/bravo{ - dir = 1 - }, /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer{ icon_state = "orangefull" @@ -45871,6 +46279,29 @@ icon_state = "plate" }, /area/almayer/living/offices) +"jWC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"jWH" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "jWU" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -45899,54 +46330,18 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"jXW" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "jXY" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"jYc" = ( -/obj/item/bedsheet/blue{ - layer = 3.2 - }, -/obj/item/bedsheet/blue{ - pixel_y = 13 - }, -/obj/item/toy/plush/therapy/red{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_y = 15; - throwforce = 15 - }, -/obj/item/clothing/head/cmcap{ - layer = 4.1; - pixel_x = -1; - pixel_y = 22 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "blue" - }, -/area/almayer/living/port_emb) "jYd" = ( /obj/structure/machinery/gear{ id = "vehicle_elevator_gears" @@ -45987,6 +46382,16 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/processing) +"jZr" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) "jZs" = ( /obj/structure/machinery/light/containment{ dir = 4 @@ -46131,20 +46536,20 @@ icon_state = "bluefull" }, /area/almayer/squads/charlie_delta_shared) +"kaJ" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "kaN" = ( /obj/structure/platform{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_p) -"kaS" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "kbc" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -46257,14 +46662,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"kdv" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/starboard) "kdB" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -46276,27 +46673,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/starboard) -"keT" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/storage/fancy/cigar{ - pixel_y = 2; - layer = 3.04; - pixel_x = -2 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = -11; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_y = 16; - pixel_x = -2 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - pixel_x = 7; - pixel_y = 16 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "kff" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -46324,6 +46700,16 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"kfG" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, +/area/almayer/living/briefing) "kfN" = ( /obj/structure/closet/secure_closet/brig, /turf/open/floor/almayer{ @@ -46336,17 +46722,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"kfR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_x = -1; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "kfU" = ( /turf/open/floor/plating, /area/almayer/powered/agent) @@ -46448,6 +46823,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"khX" = ( +/obj/structure/closet/secure_closet/fridge/dry/stock, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "kif" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -46552,6 +46933,15 @@ icon_state = "plating" }, /area/almayer/engineering/engine_core) +"klG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "klH" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -46569,12 +46959,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"kmk" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hallways/vehiclehangar) "kmp" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -46627,6 +47011,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_s) +"kmY" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kng" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -46651,12 +47041,10 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) -"knL" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/lifeboat_pumps/south2) +"knT" = ( +/obj/structure/safe/cl_office, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "koc" = ( /obj/structure/machinery/status_display{ pixel_y = -30 @@ -46910,15 +47298,12 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) -"ksA" = ( -/obj/structure/closet/secure_closet/freezer/fridge/groceries, -/obj/structure/machinery/light{ - dir = 8 - }, +"ksv" = ( +/obj/structure/closet/secure_closet/securecom, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "redfull" }, -/area/almayer/living/grunt_rnr) +/area/almayer/command/cic) "ksN" = ( /turf/open/floor/almayer/uscm/directional{ dir = 6 @@ -46955,17 +47340,12 @@ icon_state = "red" }, /area/almayer/shipboard/brig/evidence_storage) -"ktn" = ( +"ktc" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "S" }, -/area/almayer/shipboard/brig/armory) +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "ktB" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ @@ -47109,6 +47489,13 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) +"kxF" = ( +/obj/structure/bed/chair/comfy/charlie, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "kxL" = ( /obj/structure/closet/coffin/woodencrate, /obj/structure/largecrate/random/mini/wooden{ @@ -47422,10 +47809,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"kDK" = ( -/obj/structure/pipes/vents/scrubber, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "kDR" = ( /obj/structure/disposalpipe/junction{ dir = 1; @@ -47645,12 +48028,6 @@ icon_state = "plate" }, /area/almayer/squads/alpha) -"kJm" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "kJC" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -47692,19 +48069,6 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) -"kJW" = ( -/obj/structure/machinery/door/window/westright, -/obj/structure/machinery/shower{ - dir = 8; - layer = 3.10; - plane = -4 - }, -/obj/item/tool/soap{ - pixel_x = 2; - pixel_y = 7 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/commandbunks) "kKb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -47751,11 +48115,20 @@ }, /area/almayer/hull/lower_hull/l_f_s) "kKL" = ( -/obj/structure/stairs/perspective{ - dir = 4; - icon_state = "p_stair_sn_full_cap" +/obj/structure/bed/chair/comfy/bravo{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster{ + desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; + icon_state = "poster11"; + name = "YOU ALWAYS KNOW A WORKING JOE."; + pixel_x = -27; + serial_number = 11 + }, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, /area/almayer/living/briefing) "kKR" = ( /obj/structure/pipes/vents/pump{ @@ -47873,18 +48246,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) -"kNq" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/faxmachine/uscm/command/capt{ - name = "Commanding Officer's Fax Machine"; - pixel_y = 3; - pixel_x = -4 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "kNx" = ( /obj/structure/sign/safety/ref_bio_storage{ pixel_x = -17; @@ -48035,12 +48396,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"kPH" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south2) "kPJ" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -48093,11 +48448,13 @@ /obj/structure/bed/chair/comfy/bravo{ dir = 1 }, -/obj/structure/machinery/light{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 }, /turf/open/floor/almayer{ - icon_state = "orangefull" + icon_state = "plate" }, /area/almayer/living/briefing) "kRd" = ( @@ -48109,12 +48466,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) -"kRg" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/lifeboat) "kRu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48166,18 +48517,6 @@ icon_state = "tcomms" }, /area/almayer/command/airoom) -"kSH" = ( -/obj/structure/sign/prop1{ - pixel_y = 32 - }, -/obj/structure/filingcabinet/security{ - pixel_x = -8 - }, -/obj/structure/filingcabinet/medical{ - pixel_x = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "kSJ" = ( /obj/structure/disposalpipe/junction{ dir = 4; @@ -48207,16 +48546,6 @@ icon_state = "plating" }, /area/almayer/squads/req) -"kTc" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "kTq" = ( /obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ @@ -48233,14 +48562,16 @@ }, /area/almayer/command/telecomms) "kTx" = ( -/obj/structure/stairs/perspective{ - dir = 1; - icon_state = "p_stair_full" - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, -/turf/open/floor/almayer, +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "kTM" = ( /obj/item/frame/rack{ @@ -48272,18 +48603,23 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"kUh" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ - access_modified = 1; - dir = 1; - name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" - }, +"kUb" = ( +/obj/structure/closet/secure_closet, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/item/storage/box/tapes, +/obj/item/clothing/head/fedora, +/obj/item/clothing/suit/storage/marine/light/reporter, +/obj/item/clothing/head/helmet/marine/reporter, +/obj/item/clothing/head/cmcap/reporter, +/obj/item/device/flashlight, +/obj/item/device/toner, +/obj/item/device/toner, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/living/pilotbunks) +/area/almayer/command/combat_correspondent) "kUt" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -48328,27 +48664,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) -"kVT" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/tool/stamp/hop{ - name = "Commanding Officer's rubber stamp"; - pixel_x = -5; - pixel_y = 9 - }, -/obj/item/paper_bin/uscm{ - pixel_y = 6; - pixel_x = 7 - }, -/obj/item/tool/pen/red/clicky{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/item/tool/pen/blue/clicky{ - pixel_x = -6; - pixel_y = -3 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "kVX" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -48447,6 +48762,13 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"kXH" = ( +/obj/structure/bed/chair/comfy/delta, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, +/area/almayer/living/briefing) "kXJ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/secure_data{ @@ -48528,12 +48850,6 @@ icon_state = "orange" }, /area/almayer/hallways/port_umbilical) -"kZH" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "kZN" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -48558,6 +48874,23 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"lad" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/tool/kitchen/tray{ + pixel_y = 9 + }, +/obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza{ + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "lah" = ( /turf/open/floor/almayer{ dir = 6; @@ -48584,6 +48917,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"laG" = ( +/obj/structure/safe/co_office, +/obj/item/weapon/pole/fancy_cane, +/obj/item/tool/lighter/zippo/gold{ + layer = 3.05; + pixel_y = 3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "laO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48627,16 +48969,6 @@ }, /turf/open/floor/plating, /area/almayer/command/cic) -"laY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 4; - pixel_y = -3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "lbb" = ( /obj/structure/surface/table/almayer, /obj/item/organ/heart/prosthetic{ @@ -48712,8 +49044,9 @@ /area/almayer/shipboard/brig/chief_mp_office) "ldj" = ( /obj/structure/pipes/vents/pump, -/obj/structure/platform, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, /area/almayer/living/briefing) "ldl" = ( /obj/structure/sign/safety/maint{ @@ -48846,6 +49179,14 @@ icon_state = "plating" }, /area/almayer/engineering/engine_core) +"lfT" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer/card{ + dir = 4; + pixel_x = 2 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "lfW" = ( /obj/structure/sign/safety/high_voltage{ pixel_y = -32 @@ -49035,6 +49376,15 @@ /obj/effect/landmark/late_join/bravo, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/bravo) +"ljz" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "ljG" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_container/food/condiment/coldsauce, @@ -49083,12 +49433,6 @@ icon_state = "red" }, /area/almayer/living/offices/flight) -"lkm" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/starboard) "lkM" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -49113,6 +49457,22 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"llt" = ( +/obj/structure/machinery/conveyor{ + id = "req_belt" + }, +/obj/structure/plasticflaps, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/squads/req) +"llD" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/combat_correspondent) "llM" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -49209,6 +49569,11 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"lnZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "lok" = ( /obj/structure/machinery/cm_vending/clothing/marine/charlie{ density = 0; @@ -49496,11 +49861,6 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) -"ltc" = ( -/obj/effect/landmark/late_join/working_joe, -/obj/effect/landmark/start/working_joe, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/airoom) "lto" = ( /obj/structure/machinery/iv_drip, /turf/open/floor/almayer{ @@ -49527,14 +49887,6 @@ }, /turf/open/floor/plating, /area/almayer/hull/upper_hull/u_m_p) -"ltU" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "ltX" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -49550,17 +49902,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) -"lul" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/almayer/command/reinforced{ - name = "\improper Commanding Officer's Quarters"; - req_access = null; - req_access_txt = "31" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) "lut" = ( /obj/structure/machinery/computer/crew, /turf/open/floor/almayer{ @@ -49853,6 +50194,61 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) +"lAj" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "lAl" = ( /turf/open/floor/almayer{ dir = 4; @@ -49975,6 +50371,20 @@ icon_state = "plate" }, /area/almayer/engineering/engineering_workshop/hangar) +"lCn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "lCt" = ( /turf/open/floor/almayer{ dir = 10; @@ -50027,22 +50437,13 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"lDn" = ( +"lDj" = ( /obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 + icon_state = "NW-out"; + pixel_y = 2 }, /turf/open/floor/almayer, -/area/almayer/command/lifeboat) -"lDD" = ( -/obj/structure/safe/co_office, -/obj/item/weapon/pole/fancy_cane, -/obj/item/tool/lighter/zippo/gold{ - pixel_y = 3; - layer = 3.05 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) +/area/almayer/hull/upper_hull/u_f_p) "lDJ" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -50052,6 +50453,20 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) +"lDK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/supply/weapons/m39{ + pixel_x = 2 + }, +/obj/structure/largecrate/supply/weapons/m41a{ + layer = 3.1; + pixel_x = 6; + pixel_y = 17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "lDL" = ( /obj/structure/machinery/light{ dir = 4 @@ -50323,15 +50738,6 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) -"lIl" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - name = "\improper Armourer's Workshop"; - req_access = null - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "lIp" = ( /obj/structure/bed/chair/comfy/beige{ dir = 1 @@ -50424,19 +50830,6 @@ icon_state = "cargo" }, /area/almayer/living/offices) -"lJL" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/cells) "lJO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50485,6 +50878,20 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/squads/charlie) +"lLN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = -30 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/brig/armory) "lLS" = ( /obj/structure/sign/safety/galley{ pixel_x = 32 @@ -50525,12 +50932,6 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) -"lMx" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/starboard) "lMM" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -50680,6 +51081,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"lPG" = ( +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "silver" + }, +/area/almayer/command/cichallway) "lPO" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -50687,14 +51097,6 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"lQi" = ( -/obj/structure/machinery/cm_vending/clothing/commanding_officer{ - pixel_y = 0 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/living/commandbunks) "lQj" = ( /obj/structure/machinery/door_control{ id = "InnerShutter"; @@ -50836,16 +51238,20 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) -"lUA" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, +"lUv" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "redfull" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/hull/lower_hull/l_f_s) +"lUw" = ( +/obj/structure/machinery/light, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "lVl" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer, @@ -50898,6 +51304,16 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"lWD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = 11; + pixel_y = -26 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "lXg" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -51093,6 +51509,25 @@ icon_state = "greencorner" }, /area/almayer/hallways/aft_hallway) +"mcl" = ( +/obj/structure/sign/safety/ladder{ + pixel_x = -16 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/vehiclehangar) +"mcK" = ( +/obj/structure/closet/secure_closet/commander, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/device/whistle, +/obj/item/device/megaphone, +/obj/item/device/radio, +/obj/item/clothing/shoes/laceup, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "mcL" = ( /obj/structure/machinery/vending/snack, /obj/structure/sign/safety/maint{ @@ -51268,6 +51703,19 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/charlie_delta_shared) +"mgR" = ( +/obj/structure/surface/table/almayer, +/obj/item/prop/magazine/dirty{ + pixel_y = 5 + }, +/obj/item/tool/pen{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, +/area/almayer/living/briefing) "mha" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -51352,13 +51800,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"mje" = ( -/obj/structure/machinery/light, -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "mji" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -51439,16 +51880,6 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/lobby) -"mko" = ( -/obj/item/tool/weldpack{ - pixel_y = 15 - }, -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/welding, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "mkx" = ( /obj/structure/machinery/door_control{ id = "cl_shutters 2"; @@ -51673,12 +52104,6 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/almayer, /area/almayer/squads/req) -"mqb" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "mqg" = ( /obj/structure/bed/chair{ dir = 4 @@ -51864,17 +52289,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"mts" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "mtD" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -51919,6 +52333,48 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"mus" = ( +/obj/item/bedsheet/blue{ + layer = 3.2 + }, +/obj/item/bedsheet/blue{ + pixel_y = 13 + }, +/obj/item/toy/plush/therapy/red{ + desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; + force = 15; + layer = 4.1; + name = "Sergeant Huggs"; + pixel_y = 15; + throwforce = 15 + }, +/obj/item/clothing/head/cmcap{ + layer = 4.1; + pixel_x = -1; + pixel_y = 22 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "blue" + }, +/area/almayer/living/port_emb) "mux" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -51938,6 +52394,18 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"muQ" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + density = 0; + pixel_y = 16 + }, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/cic) "mvl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -51951,6 +52419,15 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) +"mvH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "mvI" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -51964,6 +52441,11 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"mwz" = ( +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "mwA" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -52025,19 +52507,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_p) -"myl" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - cell_type = /obj/item/cell/hyper; - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "myn" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -52124,6 +52593,25 @@ /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"mzG" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + name = "law and engineering manuals bookcase"; + opacity = 0 + }, +/obj/item/book/manual/marine_law, +/obj/item/book/manual/detective, +/obj/item/book/manual/security_space_law, +/obj/item/book/manual/engineering_guide, +/obj/item/book/manual/engineering_construction, +/obj/item/book/manual/orbital_cannon_manual, +/obj/item/book/manual/ripley_build_and_repair, +/obj/item/book/manual/engineering_hacking, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "mzO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -52151,13 +52639,6 @@ /obj/effect/spawner/random/tool, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"mAr" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "mAT" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 8; @@ -52302,23 +52783,6 @@ icon_state = "emerald" }, /area/almayer/living/briefing) -"mDX" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/command/reinforced{ - dir = 1; - id_tag = "CO-Office"; - name = "\improper Commanding Officer's Office"; - req_access = null; - req_access_txt = "31" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) "mEb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -52346,6 +52810,10 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"mES" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "mFq" = ( /obj/structure/machinery/door_control{ dir = 1; @@ -52499,6 +52967,12 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"mIA" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/south2) "mIB" = ( /obj/structure/machinery/cm_vending/sorted/medical/marinemed, /obj/structure/sign/safety/medical{ @@ -52509,26 +52983,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"mIJ" = ( -/obj/structure/sign/safety/ladder{ - pixel_x = -16 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/vehiclehangar) -"mIP" = ( -/obj/structure/pipes/vents/pump, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "mIW" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -52658,15 +53112,6 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) -"mKy" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "mKJ" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -52722,18 +53167,22 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_hallway) "mLb" = ( -/obj/structure/platform{ - dir = 1 +/obj/structure/surface/table/almayer, +/obj/item/toy/deck{ + pixel_x = -6; + pixel_y = -2 }, /obj/item/toy/deck/uno{ pixel_x = 6; pixel_y = -1 }, -/obj/item/toy/deck{ - pixel_x = -6; - pixel_y = -2 +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, /area/almayer/living/briefing) "mLu" = ( /obj/effect/decal/warning_stripes{ @@ -53021,33 +53470,6 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"mRp" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = -28 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) -"mRQ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "mRS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -53058,6 +53480,13 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"mRU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "mRW" = ( /turf/open/floor/almayer/research/containment/corner1, /area/almayer/medical/containment/cell/cl) @@ -53123,14 +53552,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"mTc" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/computer/emails{ - dir = 4; - pixel_y = 2 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "mTd" = ( /obj/structure/machinery/smartfridge/chemistry{ pixel_x = -3; @@ -53272,7 +53693,13 @@ pixel_x = -27 }, /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "mWe" = ( /obj/structure/machinery/camera/autoname/almayer{ @@ -53353,6 +53780,19 @@ dir = 1 }, /area/almayer/medical/containment/cell) +"mXa" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "mXj" = ( /turf/closed/wall/almayer, /area/almayer/living/commandbunks) @@ -53390,6 +53830,17 @@ icon_state = "blue" }, /area/almayer/hallways/port_hallway) +"mYX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/m41a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "mYY" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -53477,6 +53928,17 @@ "naB" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/perma) +"naQ" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "naR" = ( /obj/structure/machinery/iv_drip, /obj/effect/decal/warning_stripes{ @@ -53504,12 +53966,15 @@ icon_state = "test_floor4" }, /area/almayer/living/gym) -"nbB" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, +"nbr" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "redfull" }, -/area/almayer/living/grunt_rnr) +/area/almayer/command/cic) "ncp" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -53616,15 +54081,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"neG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"neF" = ( +/obj/structure/machinery/light{ + dir = 1 }, +/obj/structure/transmitter{ + name = "Kitchen Telephone"; + phone_category = "Almayer"; + phone_id = "Kitchen"; + pixel_x = -8; + pixel_y = 29 + }, +/obj/structure/machinery/vending/ingredients, /turf/open/floor/almayer{ - dir = 6; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/command/lifeboat) +/area/almayer/living/grunt_rnr) "neO" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -54038,6 +54510,12 @@ icon_state = "silver" }, /area/almayer/command/securestorage) +"nna" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_s) "nnc" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -54103,12 +54581,16 @@ /obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) -"nnX" = ( -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" +"nnG" = ( +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" }, -/area/almayer/lifeboat_pumps/south1) +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "noj" = ( /obj/structure/largecrate, /obj/structure/prop/server_equipment/laptop{ @@ -54171,6 +54653,35 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) +"npB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_s) +"npK" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer/emails{ + dir = 4; + pixel_y = 2 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"npS" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/structure/prop/server_equipment/laptop{ + pixel_x = -2; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "nqx" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -54283,22 +54794,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_s) -"nsQ" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 29 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/captain_mess) "nsY" = ( /turf/closed/wall/almayer, /area/almayer/living/port_emb) @@ -54421,6 +54916,17 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) +"nuI" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/surface/table/almayer, +/obj/item/tool/hand_labeler, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/chemistry) "nuK" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/franks{ @@ -54442,24 +54948,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) -"nvG" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/sink{ - pixel_y = 16 - }, -/obj/structure/mirror{ - pixel_y = 21 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/numbertwobunks) "nvM" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -54507,6 +54995,17 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"nww" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "nwx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ @@ -54641,11 +55140,12 @@ /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) "nza" = ( -/obj/structure/bed/chair/comfy/charlie, /obj/structure/pipes/vents/scrubber{ dir = 4 }, -/obj/item/trash/uscm_mre, +/obj/structure/bed/chair/comfy/charlie{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "emeraldfull" }, @@ -54670,6 +55170,18 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"nzI" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "nzO" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/warning_stripes{ @@ -54771,46 +55283,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"nCx" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - pixel_x = -5; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - desc = "A premium double-malt whiskey, this bottle was gifted to the Captain of the USS Almayer after the completion of the ship's space trials by the VADM. himself."; - pixel_x = 3; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - pixel_x = 11; - pixel_y = 16 - }, -/obj/item/storage/box/drinkingglasses{ - pixel_x = -1; - pixel_y = 2 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"nCR" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 29 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/auxiliary_officer_office) "nCT" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -54819,33 +55291,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"nCU" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/obj/structure/coatrack{ - pixel_y = 1; - pixel_x = -5 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"nDd" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "nDh" = ( /obj/structure/transmitter/rotary{ name = "CL Office Telephone"; @@ -54885,6 +55330,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"nDV" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/command/cichallway) "nEo" = ( /obj/structure/surface/table/almayer, /obj/item/storage/donut_box{ @@ -55051,12 +55501,6 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"nGY" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/lifeboat_pumps/north2) "nHg" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -55151,12 +55595,12 @@ /turf/open/floor/almayer, /area/almayer/living/basketball) "nIW" = ( -/obj/structure/bed/chair/comfy/bravo{ - dir = 1 - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 }, +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "orangefull" }, @@ -55202,6 +55646,15 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"nKs" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + pixel_y = 0; + req_access = list(1) + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/commandbunks) "nLa" = ( /obj/structure/bed/chair{ dir = 4 @@ -55324,6 +55777,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"nMM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "nMV" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -55501,18 +55964,6 @@ icon_state = "plate" }, /area/almayer/squads/req) -"nPY" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "nQg" = ( /obj/structure/sink{ pixel_y = 24 @@ -55532,6 +55983,13 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"nQH" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "nRq" = ( /obj/effect/decal/cleanable/blood/oil/streak, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -55547,6 +56005,17 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"nRQ" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/almayer/command/reinforced{ + name = "\improper Commanding Officer's Quarters"; + req_access = null; + req_access_txt = "31" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/commandbunks) "nRR" = ( /turf/open/floor/almayer{ dir = 1; @@ -55557,6 +56026,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) +"nSj" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "green" + }, +/area/almayer/squads/req) "nSG" = ( /obj/structure/machinery/door_control{ id = "tcomms"; @@ -55613,10 +56089,6 @@ }, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"nTA" = ( -/obj/structure/bed/chair/comfy/blue, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "nTH" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -56041,6 +56513,23 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/bravo) +"odC" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/item/prop/magazine/boots/n160{ + layer = 2.8; + pixel_x = 4; + pixel_y = -8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/commandbunks) "odD" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -56160,6 +56649,16 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) +"ohl" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/almayer/squads/req) "ohA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -56207,18 +56706,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) -"ohS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/captain_mess) "oih" = ( /obj/structure/bed{ icon_state = "abed" @@ -56377,9 +56864,6 @@ }, /area/almayer/engineering/engine_core) "okB" = ( -/obj/structure/bed/chair/comfy/alpha{ - dir = 1 - }, /obj/structure/pipes/vents/scrubber{ dir = 4 }, @@ -56409,6 +56893,21 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/execution) +"olk" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/port) "olv" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler{ @@ -56478,13 +56977,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"omu" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "omy" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -56558,17 +57050,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"ooo" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "oos" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) @@ -56606,6 +57087,16 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/perma) +"opj" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/tool, +/obj/item/packageWrap, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/squads/req) "opC" = ( /obj/structure/machinery/door/airlock/almayer/command/reinforced{ name = "\improper Combat Information Center" @@ -56617,23 +57108,6 @@ "opD" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/gym) -"opI" = ( -/obj/structure/closet/secure_closet, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/item/storage/box/tapes, -/obj/item/clothing/head/fedora, -/obj/item/clothing/suit/storage/marine/light/reporter, -/obj/item/clothing/head/helmet/marine/reporter, -/obj/item/clothing/head/cmcap/reporter, -/obj/item/device/flashlight, -/obj/item/device/toner, -/obj/item/device/toner, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "opJ" = ( /obj/docking_port/stationary/emergency_response/external/port4, /turf/open/space/basic, @@ -56696,6 +57170,14 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"oqP" = ( +/obj/structure/bed/chair/comfy/delta{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "oqS" = ( /obj/structure/toilet{ dir = 1 @@ -56710,16 +57192,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) -"oqY" = ( -/obj/structure/machinery/conveyor{ - id = "req_belt" - }, -/obj/structure/plasticflaps, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/squads/req) "oqZ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/microwave{ @@ -56870,6 +57342,18 @@ "otu" = ( /turf/closed/wall/almayer/research/containment/wall/connect_w, /area/almayer/medical/containment/cell) +"otK" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + dir = 1; + name = "\improper Flight Crew Quarters"; + req_one_access_txt = "19;22" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/pilotbunks) "otX" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -56928,6 +57412,23 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"ouT" = ( +/obj/item/trash/plate{ + pixel_x = 9; + pixel_y = 11 + }, +/obj/item/reagent_container/food/snacks/carpmeat{ + layer = 3.3; + pixel_x = 8; + pixel_y = 11 + }, +/obj/item/reagent_container/food/snacks/carpmeat{ + layer = 3.3; + pixel_x = 8; + pixel_y = 11 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "ouV" = ( /obj/structure/sign/safety/cryo{ pixel_x = 1; @@ -57069,6 +57570,23 @@ icon_state = "orangecorner" }, /area/almayer/hull/upper_hull/u_a_s) +"oys" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/command/reinforced{ + dir = 1; + id_tag = "CO-Office"; + name = "\improper Commanding Officer's Office"; + req_access = null; + req_access_txt = "31" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/commandbunks) "oyw" = ( /obj/structure/platform_decoration{ dir = 8 @@ -57223,6 +57741,24 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"oBW" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/bible{ + desc = "As the legendary US Army chaplain once said, 'There are no Athiests in fancy offices'."; + name = "Holy Bible"; + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/prop/helmetgarb/rosary{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/device/flashlight/lamp{ + pixel_x = 3; + pixel_y = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "oCf" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -57315,6 +57851,12 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"oDO" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "oDR" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -57536,15 +58078,18 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) -"oIt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "oIB" = ( /turf/closed/wall/almayer, /area/almayer/command/combat_correspondent) +"oIY" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) "oJp" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -57683,12 +58228,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/hydroponics) -"oMd" = ( -/obj/structure/closet/secure_closet/freezer/meat, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/grunt_rnr) "oMe" = ( /obj/structure/machinery/light{ dir = 8 @@ -57717,6 +58256,13 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) +"oMC" = ( +/obj/structure/machinery/light, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "oMH" = ( /obj/structure/bed/chair{ dir = 4 @@ -57739,14 +58285,6 @@ icon_state = "mono" }, /area/almayer/engineering/ce_room) -"oNf" = ( -/obj/item/stack/folding_barricade/three, -/obj/item/stack/folding_barricade/three, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "oNj" = ( /obj/structure/sign/prop1{ pixel_x = -32; @@ -58060,40 +58598,6 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) -"oTM" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/item/clothing/mask/cigarette/pipe{ - pixel_y = -7; - layer = 2.8 - }, -/obj/item/reagent_container/spray/cleaner{ - pixel_x = -4; - pixel_y = 7; - layer = 3.04 - }, -/obj/structure/machinery/door_control/brbutton{ - pixel_y = 26; - pixel_x = -12; - id = "Brig Lockdown Shutters"; - name = "Brig Lockdown" - }, -/obj/structure/machinery/door_control/brbutton{ - pixel_y = 26; - id = "ARES StairsLock"; - name = "ARES Exterior Lockdown Override"; - pixel_x = -2 - }, -/obj/structure/machinery/door_control/brbutton{ - pixel_y = 26; - pixel_x = 8; - name = "ARES Emergency Lockdown Override"; - id = "ARES Emergency" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "oUG" = ( /obj/structure/machinery/light{ dir = 8 @@ -58300,6 +58804,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"pbl" = ( +/obj/structure/bed, +/obj/item/toy/plush/farwa{ + pixel_x = 5 + }, +/obj/item/clothing/under/redpyjamas, +/obj/item/bedsheet/orange, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "pbp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -58433,12 +58946,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_p) -"pdt" = ( -/obj/structure/closet/secure_closet/freezer/fridge/groceries, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/grunt_rnr) "pdG" = ( /obj/structure/machinery/door/airlock/almayer/security{ dir = 2; @@ -58494,6 +59001,7 @@ /obj/item/facepaint/black{ pixel_x = -10 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -58516,6 +59024,18 @@ allow_construction = 0 }, /area/almayer/stair_clone) +"pfA" = ( +/obj/item/tool/soap, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "pfH" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ @@ -58544,15 +59064,6 @@ icon_state = "orange" }, /area/almayer/hull/lower_hull/l_m_s) -"pgw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "pgD" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/south1) @@ -58588,15 +59099,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"phj" = ( -/obj/structure/machinery/photocopier, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "piO" = ( /obj/structure/surface/rack, /obj/item/tool/weldingtool, @@ -58672,16 +59174,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) -"pjR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "pky" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ @@ -58768,16 +59260,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"pmI" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "pmV" = ( /obj/structure/prop/server_equipment/yutani_server/broken{ density = 0; @@ -58802,23 +59284,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"pnL" = ( -/obj/structure/machinery/constructable_frame{ - icon_state = "box_2" - }, -/obj/item/weapon/baseballbat/metal{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/starboard) "pop" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -59204,6 +59669,20 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"pxL" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/coatrack{ + pixel_x = -5; + pixel_y = 1 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "pyc" = ( /obj/structure/bed/stool, /turf/open/floor/almayer{ @@ -59683,15 +60162,16 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"pIZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 +"pJe" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/prop/tableflag/uscm{ + pixel_x = -5 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/item/prop/tableflag/uscm2{ + pixel_x = 5 }, -/area/almayer/lifeboat_pumps/north1) +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "pJi" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -59699,6 +60179,18 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) +"pJn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/secure{ + pixel_x = -5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "pJD" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -59745,6 +60237,21 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"pJK" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + name = "medical manuals bookcase"; + opacity = 0 + }, +/obj/item/book/manual/surgery, +/obj/item/book/manual/research_and_development, +/obj/item/book/manual/medical_diagnostics_manual, +/obj/item/book/manual/medical_cloning, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "pJR" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_AresUp"; @@ -59816,15 +60323,6 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) -"pMk" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "pMp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -59871,6 +60369,14 @@ /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"pNK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/auxiliary_officer_office) "pNM" = ( /obj/structure/platform{ dir = 4 @@ -59977,6 +60483,16 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"pPF" = ( +/obj/structure/machinery/power/apc/almayer/hardened, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "pPM" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -59991,6 +60507,28 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"pPV" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/structure/machinery/door_control{ + id = "Alpha_2"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 23; + specialfunctions = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) "pQq" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -60117,6 +60655,12 @@ icon_state = "test_floor5" }, /area/almayer/medical/hydroponics) +"pSH" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "pSL" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -60172,6 +60716,16 @@ icon_state = "mono" }, /area/almayer/command/computerlab) +"pUe" = ( +/obj/structure/machinery/power/apc/almayer/hardened, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "pUf" = ( /obj/structure/bed/chair{ dir = 4 @@ -60195,6 +60749,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"pUl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hallways/vehiclehangar) "pUp" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -60250,12 +60813,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) -"pVx" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/squads/req) "pVA" = ( /obj/item/trash/cigbutt/ucigbutt{ pixel_x = 2; @@ -60452,6 +61009,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/containment) +"pYp" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "pYu" = ( /obj/item/tool/warning_cone{ pixel_x = -12; @@ -60523,6 +61086,23 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"qan" = ( +/obj/item/device/radio/listening_bug/radio_linked/mp{ + pixel_y = 8 + }, +/obj/item/device/radio/listening_bug/radio_linked/mp, +/obj/structure/closet/secure_closet/cmdcabinet{ + pixel_y = 24; + desc = "A bulletproof cabinet containing communications equipment."; + name = "communications cabinet"; + req_access = null; + req_one_access_txt = "3" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "qau" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -60579,6 +61159,15 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"qbh" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "qbt" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -60835,12 +61424,6 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"qfD" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "qfR" = ( /obj/structure/machinery/light{ dir = 1 @@ -60859,10 +61442,13 @@ }, /area/almayer/living/starboard_garden) "qgw" = ( -/obj/structure/stairs/perspective{ - icon_state = "p_stair_sn_full_cap" +/obj/structure/bed/chair/comfy/alpha{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, /area/almayer/living/briefing) "qgG" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -60905,16 +61491,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/delta) -"qgU" = ( -/obj/structure/machinery/power/apc/almayer/hardened, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "qhb" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -61001,7 +61577,9 @@ pixel_x = 27 }, /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "qit" = ( /obj/structure/surface/table/reinforced/almayer_B, @@ -61069,19 +61647,15 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"qkm" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/obj/structure/sign/poster/io{ - pixel_y = 32; - name = "propaganda poster" +"qkj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/command/lifeboat) "qkn" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -61116,16 +61690,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/starboard_umbilical) -"qlp" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/prop/tableflag/uscm{ - pixel_x = -5 - }, -/obj/item/prop/tableflag/uscm2{ - pixel_x = 5 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "qlz" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -61135,14 +61699,6 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/sea_office) -"qlI" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "qmk" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -61157,6 +61713,21 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) +"qmr" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver, +/obj/item/prop/helmetgarb/gunoil{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/item/weapon/gun/rifle/l42a{ + pixel_x = 17; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "qmt" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -61205,6 +61776,18 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/medical_science) +"qmB" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 + }, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "qmC" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -61267,17 +61850,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) -"qmZ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/transmitter/rotary{ - name = "Commanding Officer's Office"; - phone_category = "Offices"; - phone_id = "Commanding Officer's Office"; - pixel_y = 8; - pixel_x = 16 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "qnd" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -61404,6 +61976,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) +"qpU" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 12 + }, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "qqn" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -61411,15 +61993,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"qqr" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "qqu" = ( /turf/open/floor/almayer{ dir = 1; @@ -61485,6 +62058,15 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"qsa" = ( +/obj/structure/bed/chair/comfy/bravo{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "qsd" = ( /obj/structure/largecrate/random, /turf/open/floor/almayer{ @@ -61528,6 +62110,12 @@ icon_state = "plate" }, /area/almayer/living/gym) +"qtR" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "qtS" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer, @@ -61553,20 +62141,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/cryo_tubes) -"quy" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "quI" = ( /obj/structure/machinery/door_control{ id = "laddersouthwest"; @@ -61812,6 +62386,35 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"qyH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) +"qyJ" = ( +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) +"qyM" = ( +/obj/structure/surface/table/almayer, +/obj/item/clothing/mask/cigarette/pipe{ + pixel_x = 8 + }, +/obj/structure/transmitter/rotary{ + name = "Reporter Telephone"; + phone_category = "Almayer"; + phone_id = "Reporter"; + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "qyW" = ( /obj/structure/bed/chair{ dir = 4 @@ -61897,12 +62500,15 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"qCi" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 +"qCg" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 24 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/area/almayer/engineering/upper_engineering/port) "qCo" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -62083,12 +62689,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_two) -"qGU" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/lifeboat_pumps/south2) "qHb" = ( /obj/structure/bed/chair{ dir = 8 @@ -62172,15 +62772,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"qJf" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "qJj" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -62236,15 +62827,6 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"qJU" = ( -/obj/structure/bed, -/obj/item/toy/plush/farwa{ - pixel_x = 5 - }, -/obj/item/clothing/under/redpyjamas, -/obj/item/bedsheet/orange, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "qJY" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/bottle/orangejuice{ @@ -62290,16 +62872,6 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"qKt" = ( -/obj/structure/closet/emcloset, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_s) "qKz" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -62328,16 +62900,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) -"qKY" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/port) "qLi" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -62580,15 +63142,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"qPX" = ( -/obj/structure/machinery/light, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) "qQc" = ( /obj/structure/closet/secure_closet/personal/patient{ name = "morgue closet" @@ -62606,6 +63159,16 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"qQL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "qQM" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -62667,6 +63230,19 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) +"qRL" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + name = "\improper Flight Crew Quarters"; + req_one_access_txt = "19;22" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/pilotbunks) "qRT" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -62845,6 +63421,12 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"qWy" = ( +/obj/structure/bed/chair/comfy/delta, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "qWI" = ( /obj/structure/machinery/status_display{ pixel_y = -30 @@ -63094,15 +63676,6 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) -"rbE" = ( -/obj/structure/machinery/cm_vending/clothing/dress{ - req_access = list(1); - pixel_y = 0 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/living/commandbunks) "rbF" = ( /obj/effect/landmark/late_join, /obj/effect/landmark/ert_spawns/distress_cryo, @@ -63175,6 +63748,37 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"rcW" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) +"rdb" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 2 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "rde" = ( /obj/structure/sign/prop1, /turf/closed/wall/almayer, @@ -63290,6 +63894,18 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_m_s) +"rfv" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/faxmachine/uscm/command/capt{ + name = "Commanding Officer's Fax Machine"; + pixel_x = -4; + pixel_y = 3 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "rfI" = ( /obj/structure/sign/safety/airlock{ pixel_y = -32 @@ -63337,14 +63953,6 @@ "rgJ" = ( /obj/structure/machinery/light, /obj/structure/machinery/disposal, -/obj/item/bananapeel{ - desc = "An experimental B8 Smart-Scope. Based on the technologies used in the Smart Gun by ARMAT, this sight has integrated IFF systems. It can only attach to the L42A Battle Rifle, M44 Combat Revolver, and M46C Pulse Rifle. This one appears to be covered in gun oil"; - icon = 'icons/obj/items/weapons/guns/attachments.dmi'; - icon_state = "iffbarrel"; - name = "Broken B8 Smart-Scope"; - pixel_x = -1; - pixel_y = 11 - }, /obj/structure/disposalpipe/trunk{ dir = 1 }, @@ -63376,6 +63984,17 @@ icon_state = "emeraldcorner" }, /area/almayer/living/briefing) +"rhD" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "rhO" = ( /obj/structure/machinery/vending/cola/research{ pixel_x = 4 @@ -63670,17 +64289,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"rmE" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "rmN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -63851,6 +64459,17 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"rqH" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/transmitter/rotary{ + name = "Commanding Officer's Office"; + phone_category = "Offices"; + phone_id = "Commanding Officer's Office"; + pixel_x = 16; + pixel_y = 8 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "rra" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ dir = 8; @@ -63958,6 +64577,16 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"rsW" = ( +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "rsY" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -64037,22 +64666,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) -"rur" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S"; - pixel_y = -1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/port_emb) "rux" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -64103,6 +64716,12 @@ /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"rwT" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "rwY" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -64163,12 +64782,11 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"ryR" = ( -/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) +"rzf" = ( +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/airoom) "rzj" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -64210,6 +64828,13 @@ icon_state = "bluecorner" }, /area/almayer/living/briefing) +"rAv" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "rAx" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -64515,6 +65140,14 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"rEJ" = ( +/obj/structure/machinery/light, +/obj/structure/flora/pottedplant{ + pixel_x = -1; + pixel_y = 3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "rEL" = ( /obj/structure/machinery/cm_vending/gear/intelligence_officer, /turf/open/floor/almayer{ @@ -64577,6 +65210,29 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"rFV" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = -10; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = -10; + pixel_y = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "rFY" = ( /turf/open/floor/almayer{ dir = 5; @@ -64752,6 +65408,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"rJg" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "rJh" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -64876,28 +65537,6 @@ dir = 8 }, /area/almayer/medical/containment/cell/cl) -"rNb" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/obj/structure/machinery/door_control{ - id = "Alpha_2"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = 23; - specialfunctions = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/port_emb) "rNF" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -64949,6 +65588,17 @@ icon_state = "plate" }, /area/almayer/living/gym) +"rOZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "rPh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -65193,6 +65843,27 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"rUB" = ( +/obj/structure/pipes/vents/pump, +/obj/item/tool/soap, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/cells) "rUU" = ( /obj/structure/machinery/door/airlock/almayer/maint{ req_access = null; @@ -65228,6 +65899,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"rWF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "rWL" = ( /obj/structure/barricade/metal, /turf/open/floor/almayer{ @@ -65334,6 +66013,14 @@ icon_state = "plate" }, /area/almayer/living/offices/flight) +"rYZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/vehiclehangar) "rZz" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -65665,6 +66352,17 @@ icon_state = "plating" }, /area/almayer/hull/lower_hull/l_f_s) +"sgE" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/reagent_dispensers/water_cooler{ + density = 0; + pixel_x = 12; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "sgM" = ( /obj/structure/closet/toolcloset, /turf/open/floor/almayer{ @@ -65804,6 +66502,18 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"skg" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "skl" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -65955,6 +66665,25 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"soa" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/cells) "soq" = ( /obj/structure/machinery/computer/working_joe{ dir = 4; @@ -66157,6 +66886,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/repair_bay) +"ssn" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "ssD" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -66185,15 +66920,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"ssW" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "ssX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -66228,12 +66954,6 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) -"stu" = ( -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "stY" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -66292,18 +67012,16 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"svC" = ( -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/smg/m39{ - pixel_y = 6 - }, -/obj/item/weapon/gun/smg/m39{ - pixel_y = -6 +"svp" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 }, -/area/almayer/hull/upper_hull/u_m_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "swn" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -66404,28 +67122,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"sxT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/m41a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) -"sxW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "silver" - }, -/area/almayer/command/cichallway) "syH" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -66543,6 +67239,18 @@ icon_state = "orange" }, /area/almayer/engineering/ce_room) +"sBs" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper, +/obj/item/tool/pen{ + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) "sBH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -66814,6 +67522,17 @@ /obj/structure/mirror, /turf/closed/wall/almayer, /area/almayer/living/gym) +"sGX" = ( +/obj/structure/machinery/firealarm{ + pixel_y = -28 + }, +/obj/structure/bed/chair/comfy/charlie{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "sGZ" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -67008,25 +67727,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"sLZ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/device/flashlight/lamp/green{ - pixel_y = 20; - pixel_x = -7 - }, -/obj/item/ashtray/bronze{ - pixel_y = 19; - pixel_x = 4 - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/landmark/map_item{ - pixel_y = 3; - pixel_x = -1 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "sMs" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ dir = 1 @@ -67132,15 +67832,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"sOZ" = ( -/obj/structure/sign/safety/ammunition{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "sPc" = ( /obj/structure/machinery/light{ dir = 1 @@ -67445,27 +68136,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cryo) -"sWs" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_p) -"sWC" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 2 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/upper_engineering/port) "sWW" = ( /obj/structure/machinery/flasher{ alpha = 1; @@ -67586,14 +68256,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) -"sYB" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "sYC" = ( /obj/structure/machinery/door/airlock/almayer/maint, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -67723,12 +68385,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"tan" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "tat" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -67807,14 +68463,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/perma) -"tcZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "tda" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -67925,15 +68573,6 @@ /obj/effect/landmark/late_join, /turf/open/floor/almayer, /area/almayer/living/cryo_cells) -"teE" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "teH" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -68013,6 +68652,11 @@ icon_state = "plating" }, /area/almayer/shipboard/brig/armory) +"tgE" = ( +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/living/briefing) "tgK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -68060,6 +68704,15 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) +"thE" = ( +/obj/structure/bed/chair/comfy/charlie{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "thL" = ( /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) @@ -68074,18 +68727,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"thR" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/secure{ - pixel_x = -5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "thT" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -68146,6 +68787,23 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) +"tiw" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, +/obj/item/weapon/baseballbat/metal{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "tiE" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -68462,6 +69120,12 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_m_s) +"tpt" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "tpD" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -68488,21 +69152,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) -"tqd" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/screwdriver, -/obj/item/prop/helmetgarb/gunoil{ - pixel_x = -7; - pixel_y = 12 - }, -/obj/item/weapon/gun/rifle/l42a{ - pixel_x = 17; - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "tqe" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -68554,6 +69203,32 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"tqB" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) +"tqI" = ( +/obj/structure/machinery/door/window/westright, +/obj/structure/machinery/shower{ + dir = 8; + layer = 3.10; + plane = -4 + }, +/obj/item/tool/soap{ + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/commandbunks) "tqV" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 26 @@ -68838,25 +69513,6 @@ icon_state = "outerhull_dir" }, /area/space) -"twI" = ( -/obj/structure/machinery/cm_vending/clothing/dress{ - density = 0; - pixel_y = 16 - }, -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/machinery/door_control{ - id = "bot_uniforms"; - name = "Uniform Vendor Lockdown"; - pixel_x = -24; - pixel_y = 18; - req_access_txt = "31" - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/cic) "twT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -69008,6 +69664,12 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"tAh" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/port) "tAi" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -69031,6 +69693,12 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"tAJ" = ( +/obj/structure/closet/secure_closet/fridge/dry, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "tAL" = ( /obj/structure/machinery/cryopod, /turf/open/floor/almayer{ @@ -69075,13 +69743,6 @@ /obj/item/tool/crowbar, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) -"tBu" = ( -/obj/effect/decal/cleanable/blood/oil/streak, -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "tBz" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -69267,15 +69928,6 @@ /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) -"tGj" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "tGq" = ( /obj/effect/projector{ name = "Almayer_Up4"; @@ -69352,12 +70004,18 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/shipboard/brig/cells) -"tId" = ( -/obj/structure/machinery/recharge_station, -/turf/open/floor/almayer{ - icon_state = "cargo" +"tHU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/area/almayer/command/airoom) +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/obj/item/storage/briefcase{ + pixel_y = 15 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "tIp" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Dorms" @@ -69423,6 +70081,17 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"tJo" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_p) "tJp" = ( /obj/structure/surface/table/almayer, /obj/item/tool/crowbar/red, @@ -69454,15 +70123,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"tJN" = ( -/obj/structure/machinery/cryopod/right{ - layer = 3.1; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/airoom) "tJR" = ( /obj/structure/machinery/vending/cigarette, /obj/structure/sign/safety/medical{ @@ -69536,6 +70196,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) +"tMc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/bed/chair/comfy/alpha{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "tMf" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -69548,6 +70219,14 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) +"tMu" = ( +/obj/structure/machinery/cm_vending/clothing/commanding_officer{ + pixel_y = 0 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/commandbunks) "tMW" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -69771,6 +70450,28 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) +"tSv" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 + }, +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = -9; + pixel_y = 3 + }, +/obj/item/tool/pen{ + pixel_x = 4; + pixel_y = -4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "tSw" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -69783,12 +70484,28 @@ icon_state = "orangecorner" }, /area/almayer/living/briefing) -"tTk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"tSF" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/camera{ + pixel_x = -8; + pixel_y = 12 }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/obj/item/paper_bin/uscm{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -8; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "tTp" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/sriracha{ @@ -69955,6 +70672,13 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) +"tXz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/vehiclehangar) "tXM" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -70013,6 +70737,12 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"tYv" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_p) "tYw" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -70034,12 +70764,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) -"tYM" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "tYX" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -70189,13 +70913,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"uaX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "uaZ" = ( /obj/structure/surface/table/almayer, /obj/item/weapon/gun/rifle/m41a, @@ -70219,6 +70936,17 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"uck" = ( +/obj/structure/surface/rack, +/obj/item/stack/cable_coil, +/obj/item/attachable/flashlight/grip, +/obj/item/ammo_box/magazine/l42a{ + pixel_y = 14 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "ucp" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -70251,36 +70979,15 @@ icon_state = "plate" }, /area/almayer/command/cic) -"ucI" = ( -/obj/item/device/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/structure/machinery/door_control{ - id = "cl_shutters"; - name = "Privacy Shutters"; - pixel_x = -5; - pixel_y = 8; - req_access_txt = "200" - }, -/obj/structure/machinery/door_control{ - id = "RoomDivider"; - name = "Room Divider"; - pixel_x = -5; - pixel_y = -4; - req_access_txt = "200" +"udb" = ( +/obj/structure/sign/safety/ammunition{ + pixel_y = 32 }, -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/door_control{ - id = "cl_evac"; - name = "Evac Pod Door Control"; - normaldoorcontrol = 1; - pixel_x = -5; - pixel_y = 2; - req_access_txt = "200" +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) +/area/almayer/medical/upper_medical) "udi" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -70338,6 +71045,10 @@ /obj/structure/machinery/firealarm{ pixel_y = -28 }, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -70381,6 +71092,15 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/evidence_storage) +"ueD" = ( +/obj/structure/machinery/light, +/obj/structure/machinery/cm_vending/gear/commanding_officer{ + pixel_y = 0 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/commandbunks) "ueG" = ( /obj/item/bedsheet/orange, /obj/structure/bed{ @@ -70447,12 +71167,16 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"ufL" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors, +"ufS" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = 7; + pixel_y = 29 + }, +/obj/structure/filingcabinet, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/command/cic) +/area/almayer/command/combat_correspondent) "ugs" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/marine_law{ @@ -70635,11 +71359,13 @@ /turf/open/floor/plating, /area/almayer/engineering/engineering_workshop/hangar) "ukA" = ( -/obj/structure/platform, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, /area/almayer/living/briefing) "ukS" = ( /obj/structure/disposalpipe/segment{ @@ -70728,6 +71454,19 @@ icon_state = "mono" }, /area/almayer/medical/upper_medical) +"umR" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "umS" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -70745,6 +71484,17 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_p) +"umY" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "unh" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/o2, @@ -70795,6 +71545,40 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"uoh" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/yellow{ + layer = 3.2 + }, +/obj/item/bedsheet/yellow{ + pixel_y = 13 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = -16; + pixel_y = 8 + }, +/obj/item/toy/plush/barricade, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/port_emb) "uoi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -71039,6 +71823,27 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering) +"utw" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + desc = "A premium double-malt whiskey, this bottle was gifted to the Captain of the USS Almayer after the completion of the ship's space trials by the VADM. himself."; + pixel_x = 3; + pixel_y = 16 + }, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + pixel_x = 11; + pixel_y = 16 + }, +/obj/item/storage/box/drinkingglasses{ + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "utK" = ( /obj/structure/machinery/light{ dir = 4 @@ -71150,24 +71955,14 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"uva" = ( -/obj/structure/surface/table/almayer, -/obj/effect/landmark/map_item{ - pixel_x = -8 - }, -/obj/item/toy/plush/therapy/red{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_x = 7; - pixel_y = -1; - throwforce = 15 +"uvk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "orange" }, -/area/almayer/living/briefing) +/area/almayer/engineering/upper_engineering/starboard) "uvs" = ( /obj/structure/machinery/conveyor{ id = "lower_garbage" @@ -71359,6 +72154,25 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) +"uzb" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 + }, +/obj/item/tool/screwdriver, +/obj/item/bananapeel{ + desc = "An experimental B8 Smart-Scope. Based on the technologies used in the Smart Gun by ARMAT, this sight has integrated IFF systems. It can only attach to the L42A Battle Rifle, M44 Combat Revolver, and M46C Pulse Rifle. This one appears to be covered in gun oil"; + icon = 'icons/obj/items/weapons/guns/attachments.dmi'; + icon_state = "iffbarrel"; + name = "Broken B8 Smart-Scope"; + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, +/area/almayer/living/briefing) "uzg" = ( /obj/structure/sign/safety/water{ pixel_x = 8; @@ -71450,16 +72264,6 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) -"uAl" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/port) "uAs" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -71498,12 +72302,6 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) -"uAL" = ( -/obj/structure/bed/chair/wood/normal, -/obj/item/bedsheet/brown, -/obj/item/toy/plush/farwa, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/cells) "uAW" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -71543,12 +72341,6 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) -"uBM" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/combat_correspondent) "uBN" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -71728,6 +72520,12 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) +"uGa" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/south2) "uGc" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /obj/structure/sign/safety/hazard{ @@ -71948,6 +72746,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/starboard) +"uLe" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "uLn" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -72201,19 +73007,6 @@ icon_state = "plate" }, /area/almayer/engineering/engineering_workshop/hangar) -"uRs" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "uRt" = ( /obj/structure/machinery/light{ dir = 8 @@ -72408,6 +73201,16 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"uUV" = ( +/obj/structure/machinery/shower, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/door/window/tinted{ + dir = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "uVb" = ( /obj/structure/closet/toolcloset, /turf/open/floor/almayer{ @@ -72573,16 +73376,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"uYd" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 12 - }, -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "uYg" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -72610,16 +73403,17 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/repair_bay) -"uZY" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"uZX" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper{ + pixel_x = -4; + pixel_y = 5 }, -/obj/structure/machinery/light/small{ - dir = 1 +/obj/item/tool/pen, +/turf/open/floor/almayer{ + icon_state = "bluefull" }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) +/area/almayer/living/briefing) "uZZ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Basketball Court" @@ -72638,6 +73432,15 @@ }, /turf/closed/wall/almayer, /area/almayer/hallways/starboard_umbilical) +"vba" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "vbf" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 8 @@ -72667,23 +73470,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"vbP" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) -"vbR" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "green" - }, -/area/almayer/squads/req) "vbS" = ( /obj/structure/closet/secure_closet/personal/patient{ name = "morgue closet" @@ -73162,16 +73948,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) -"vjd" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "vjg" = ( /obj/structure/prop/almayer/missile_tube{ icon_state = "missiletubesouth" @@ -73182,6 +73958,19 @@ icon_state = "plating" }, /area/almayer/shipboard/port_missiles) +"vjn" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/obj/structure/sign/poster/io{ + name = "propaganda poster"; + pixel_y = 32 + }, +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "vjx" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ @@ -73276,6 +74065,15 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/general_equipment) +"vkN" = ( +/obj/structure/bed/chair/comfy/charlie{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "vkR" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -73302,14 +74100,6 @@ icon_state = "orange" }, /area/almayer/shipboard/brig/processing) -"vlk" = ( -/obj/structure/closet/emcloset, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/lifeboat) "vln" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -73327,46 +74117,14 @@ icon_state = "redfull" }, /area/almayer/shipboard/port_missiles) -"vlO" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/item/bedsheet/yellow{ - layer = 3.2 - }, -/obj/item/bedsheet/yellow{ - pixel_y = 13 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = -16; - pixel_y = 8 - }, -/obj/item/toy/plush/barricade, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/port_emb) "vlR" = ( /obj/structure/machinery/light{ dir = 4 }, /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/briefing) "vlX" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, @@ -73481,32 +74239,27 @@ }, /area/almayer/lifeboat_pumps/south1) "vpt" = ( -/obj/structure/bed/chair/comfy/bravo{ - dir = 1 +/obj/structure/surface/table/almayer, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = 6 }, -/obj/structure/sign/poster{ - desc = "YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE. YOU ALWAYS KNOW A WORKING JOE."; - icon_state = "poster11"; - name = "YOU ALWAYS KNOW A WORKING JOE."; - pixel_x = 27; - serial_number = 11 +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 2 }, -/obj/item/stack/folding_barricade, -/turf/open/floor/almayer{ - icon_state = "orangefull" +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 9 }, -/area/almayer/living/briefing) -"vpv" = ( -/obj/structure/machinery/shower, -/obj/structure/window/reinforced/tinted{ - dir = 8 +/obj/structure/prop/holidays/string_lights{ + dir = 8; + pixel_x = 29 }, -/obj/structure/machinery/door/window/tinted{ - dir = 2 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/obj/item/clothing/mask/cigarette/weed, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) +/area/almayer/living/briefing) "vpI" = ( /obj/effect/landmark/start/police, /turf/open/floor/plating/plating_catwalk, @@ -73699,16 +74452,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"vsI" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "vsJ" = ( /obj/structure/machinery/door/airlock/almayer/maint{ access_modified = 1; @@ -73766,6 +74509,12 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) +"vtt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "vtx" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Bathroom" @@ -74052,12 +74801,15 @@ /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/port) "vyU" = ( -/obj/structure/bed/chair/comfy/charlie, /obj/structure/machinery/light{ dir = 4 }, +/obj/structure/bed/chair/comfy/charlie{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "emeraldfull" + icon_state = "plate" }, /area/almayer/living/briefing) "vzl" = ( @@ -74233,6 +74985,14 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) +"vCz" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "vCG" = ( /obj/structure/toilet{ dir = 8 @@ -74257,14 +75017,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/hydroponics) -"vEf" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "vEj" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -74273,11 +75025,15 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/living/synthcloset) "vEn" = ( -/obj/structure/bed/chair/comfy/bravo{ - dir = 1 +/obj/structure/surface/table/almayer, +/obj/item/device/flashlight/lamp{ + layer = 3.3; + pixel_x = 15 }, -/obj/item/stack/sheet/mineral/uranium{ - layer = 2.99 +/obj/item/paper, +/obj/item/tool/pen{ + pixel_x = -5; + pixel_y = 2 }, /turf/open/floor/almayer{ icon_state = "orangefull" @@ -74395,6 +75151,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) +"vHl" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "vHq" = ( /obj/item/device/assembly/mousetrap/armed, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -74712,6 +75478,14 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"vMC" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "vME" = ( /turf/open/floor/almayer{ dir = 9; @@ -75047,6 +75821,7 @@ /obj/structure/machinery/firealarm{ pixel_y = 28 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -75109,14 +75884,6 @@ /obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) -"vUk" = ( -/obj/item/storage/toolbox/mechanical{ - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "vUI" = ( /obj/structure/largecrate/random/barrel/white, /obj/structure/sign/safety/security{ @@ -75183,13 +75950,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) -"vVu" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "vVw" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -75292,27 +76052,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"vWG" = ( -/obj/structure/pipes/vents/pump, -/obj/item/tool/soap, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/obj/structure/mirror{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/cells) "vWJ" = ( /obj/structure/machinery/landinglight/ds1/delaytwo{ dir = 4 @@ -75475,6 +76214,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull) +"vZJ" = ( +/obj/structure/sign/safety/intercom{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "wan" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/brown, @@ -75505,18 +76254,15 @@ /area/almayer/hallways/aft_hallway) "wbe" = ( /obj/structure/surface/table/almayer, -/obj/effect/landmark/map_item{ - layer = 3.03; - pixel_x = 7; - pixel_y = 4 - }, -/obj/item/prop/helmetgarb/spacejam_tickets{ +/obj/item/reagent_container/food/drinks/coffeecup{ pixel_x = -8; - pixel_y = 5 + pixel_y = -1 }, -/obj/item/prop/helmetgarb/spacejam_tickets{ - pixel_x = -8; - pixel_y = -3 +/obj/item/reagent_container/food/drinks/coffee{ + pixel_y = 9 + }, +/obj/item/tool/pen{ + pixel_x = 5 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -75552,6 +76298,40 @@ icon_state = "mono" }, /area/almayer/living/pilotbunks) +"wbw" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/item/clothing/mask/cigarette/pipe{ + layer = 2.8; + pixel_y = -7 + }, +/obj/item/reagent_container/spray/cleaner{ + layer = 3.04; + pixel_x = -4; + pixel_y = 7 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "Brig Lockdown Shutters"; + name = "Brig Lockdown"; + pixel_x = -12; + pixel_y = 26 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown Override"; + pixel_x = -2; + pixel_y = 26 + }, +/obj/structure/machinery/door_control/brbutton{ + id = "ARES Emergency"; + name = "ARES Emergency Lockdown Override"; + pixel_x = 8; + pixel_y = 26 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "wbx" = ( /obj/structure/sign/safety/hazard{ desc = "A sign that warns of a hazardous environment nearby"; @@ -75687,6 +76467,15 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"wdv" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "wdz" = ( /obj/effect/landmark/start/marine/engineer/charlie, /obj/effect/landmark/late_join/charlie, @@ -75765,6 +76554,27 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_p) +"wfd" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/tool/stamp/hop{ + name = "Commanding Officer's rubber stamp"; + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/paper_bin/uscm{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/tool/pen/red/clicky{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/tool/pen/blue/clicky{ + pixel_x = -6; + pixel_y = -3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "wft" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -75913,6 +76723,19 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"wiF" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/photocopier{ + anchored = 0 + }, +/obj/structure/sign/poster/io{ + name = "propaganda poster"; + pixel_y = 32 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "wiG" = ( /obj/structure/sign/poster{ pixel_x = -30; @@ -76021,12 +76844,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) -"wkA" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "wkH" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/whistle{ @@ -76039,17 +76856,6 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"wkL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "wkM" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "ARES StairsLower"; @@ -76152,6 +76958,16 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) +"wlH" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "emeraldfull" + }, +/area/almayer/living/briefing) "wlK" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -76291,6 +77107,13 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) +"wpj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "wpw" = ( /obj/structure/bed/chair/comfy/ares{ dir = 1 @@ -76344,16 +77167,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"wqr" = ( -/obj/structure/sign/safety/terminal{ - pixel_x = 7; - pixel_y = 29 - }, -/obj/structure/filingcabinet, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "wqu" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -76432,29 +77245,31 @@ /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) "wsP" = ( -/obj/structure/platform{ - dir = 1 - }, /obj/item/prop/helmetgarb/gunoil{ layer = 4.2; pixel_x = -3; - pixel_y = 1 + pixel_y = 6 }, /obj/item/prop/helmetgarb/gunoil{ layer = 4.2; pixel_x = -10; - pixel_y = 1 + pixel_y = 10 }, /obj/item/prop/helmetgarb/gunoil{ layer = 4.2; pixel_x = 4; - pixel_y = 1 + pixel_y = 9 }, /obj/item/weapon/broken_bottle{ - pixel_x = 11; - pixel_y = -2 + layer = 4.51; + pixel_x = 9; + pixel_y = 1 + }, +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, /area/almayer/living/briefing) "wsR" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -76541,18 +77356,6 @@ /obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) -"wuT" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/starboard) "wvb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -76601,13 +77404,8 @@ }, /area/almayer/living/synthcloset) "wwk" = ( -/obj/structure/bed/chair/comfy/bravo{ - dir = 1 - }, -/obj/item/stack/folding_barricade, -/obj/item/stack/sheet/mineral/uranium{ - layer = 2.99 - }, +/obj/structure/surface/table/almayer, +/obj/effect/landmark/map_item, /turf/open/floor/almayer{ icon_state = "orangefull" }, @@ -76729,6 +77527,18 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"wyv" = ( +/obj/structure/machinery/door_control{ + id = "ARES JoeCryo"; + name = "Working Joe Cryogenics Lockdown"; + pixel_x = -24; + pixel_y = -8; + req_one_access_txt = "91;92" + }, +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/airoom) "wyO" = ( /obj/structure/largecrate/random/barrel/red, /obj/structure/prop/invuln/overhead_pipe{ @@ -76780,6 +77590,13 @@ icon_state = "sterile_green" }, /area/almayer/medical/lower_medical_medbay) +"wAd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "wAR" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -76792,12 +77609,32 @@ }, /area/almayer/hallways/port_hallway) "wAU" = ( -/obj/structure/bed/chair/comfy/delta, /obj/structure/sign/poster/music{ pixel_x = -27 }, +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/device/flashlight/lamp{ + pixel_x = 15 + }, +/obj/item/paper_bin/uscm{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = -10; + pixel_y = -1 + }, +/obj/item/tool/pen{ + pixel_x = 3; + pixel_y = -4 + }, +/obj/item/tool/pen{ + pixel_x = -11; + pixel_y = 5 + }, /turf/open/floor/almayer{ - icon_state = "bluefull" + icon_state = "plate" }, /area/almayer/living/briefing) "wBY" = ( @@ -77013,18 +77850,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"wFJ" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 8; - layer = 2.9 - }, -/obj/structure/window{ - pixel_y = -2; - layer = 2.95 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/commandbunks) "wFR" = ( /turf/open/floor/almayer, /area/almayer/living/gym) @@ -77065,13 +77890,6 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) -"wGI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "wGX" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -77178,12 +77996,6 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) -"wJB" = ( -/obj/structure/machinery/cryopod/right, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/airoom) "wJD" = ( /obj/structure/bed/chair{ dir = 8; @@ -77205,23 +78017,11 @@ "wJH" = ( /turf/closed/wall/almayer/research/containment/wall/east, /area/almayer/medical/containment/cell/cl) -"wJQ" = ( -/obj/item/trash/plate{ - pixel_x = 9; - pixel_y = 11 - }, -/obj/item/reagent_container/food/snacks/carpmeat{ - layer = 3.3; - pixel_y = 11; - pixel_x = 8 - }, -/obj/item/reagent_container/food/snacks/carpmeat{ - layer = 3.3; - pixel_y = 11; - pixel_x = 8 +"wJL" = ( +/turf/open/floor/almayer{ + icon_state = "bluefull" }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/area/almayer/living/briefing) "wKn" = ( /obj/structure/surface/rack, /obj/item/facepaint/sniper, @@ -77253,6 +78053,15 @@ }, /turf/open/floor/plating, /area/almayer/medical/containment) +"wKS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "wLi" = ( /obj/structure/machinery/door_control/airlock{ id = "s_engi"; @@ -77351,9 +78160,13 @@ }, /area/almayer/medical/containment) "wLV" = ( -/obj/structure/bed/chair/comfy/charlie, +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 16 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "emeraldfull" + icon_state = "plate" }, /area/almayer/living/briefing) "wMm" = ( @@ -77365,14 +78178,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"wMv" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/auxiliary_officer_office) "wMG" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -77422,14 +78227,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull) -"wNS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "wNT" = ( /obj/structure/platform, /turf/open/floor/almayer, @@ -77511,6 +78308,16 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"wQa" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "wQg" = ( /turf/open/floor/almayer{ dir = 1; @@ -77772,17 +78579,6 @@ "wVb" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/lower_hull/l_a_s) -"wVw" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "wVy" = ( /obj/structure/window/reinforced{ dir = 8 @@ -77894,6 +78690,22 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) +"wWJ" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) "wWL" = ( /obj/item/tool/screwdriver, /obj/structure/platform_decoration{ @@ -78013,18 +78825,14 @@ /turf/open/floor/plating, /area/almayer/engineering/ce_room) "wYZ" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/photocopier{ - anchored = 0 +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper Armourer's Workshop"; + req_access = null }, -/obj/structure/sign/poster/io{ - pixel_y = 32; - name = "propaganda poster" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +/area/almayer/hull/upper_hull/u_m_s) "wZa" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -78273,22 +79081,20 @@ icon_state = "tcomms" }, /area/almayer/engineering/engine_core) -"xfk" = ( -/obj/structure/surface/rack, -/obj/item/stack/cable_coil, -/obj/item/attachable/flashlight/grip, -/obj/item/ammo_box/magazine/l42a{ - pixel_y = 14 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "xfm" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/cafeteria_officer) +"xfw" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/fancy/cigarettes/lucky_strikes, +/obj/item/packageWrap, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/almayer/squads/req) "xfO" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -78357,6 +79163,16 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"xgE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "xgJ" = ( /obj/structure/machinery/cm_vending/sorted/medical/blood, /obj/structure/machinery/light{ @@ -78385,9 +79201,6 @@ desc = "A supply crate containing everything you need to stop a CLF uprising."; name = "\improper USCM crate 'FOB supplies'" }, -/obj/structure/sign/arcturianstopsign{ - pixel_y = 32 - }, /obj/item/folded_tent/big{ pixel_x = -6; pixel_y = 10 @@ -78450,14 +79263,6 @@ }, /turf/open/floor/carpet, /area/almayer/command/cichallway) -"xik" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/obj/item/toy/inflatable_duck, -/obj/structure/window/reinforced, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "xiz" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice12"; @@ -78485,14 +79290,18 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"xjt" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/computer/card{ - dir = 4; - pixel_x = 2 +"xjw" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "xjz" = ( /turf/open/floor/almayer{ icon_state = "plating_striped" @@ -78569,6 +79378,14 @@ icon_state = "emerald" }, /area/almayer/hallways/port_hallway) +"xkY" = ( +/obj/structure/bed/chair/comfy/alpha{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "xlk" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer, @@ -78671,32 +79488,16 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_a_p) -"xns" = ( -/obj/structure/machinery/door_control{ - id = "ARES JoeCryo"; - name = "Working Joe Cryogenics Lockdown"; - pixel_x = -24; - pixel_y = -8; - req_one_access_txt = "91;92" - }, -/obj/effect/landmark/late_join/working_joe, -/obj/effect/landmark/start/working_joe, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/airoom) -"xnz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "xnI" = ( /obj/effect/landmark/start/requisition, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/req) +"xnQ" = ( +/obj/structure/closet/secure_closet/fridge/meat/stock, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "xnR" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -78749,20 +79550,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"xoS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -30 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/shipboard/brig/armory) "xpd" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -78780,23 +79567,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) -"xpi" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/structure/mirror{ - pixel_x = -29 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/commandbunks) "xpo" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -78889,9 +79659,13 @@ /turf/closed/wall/almayer, /area/almayer/command/securestorage) "xqM" = ( -/obj/structure/platform, /obj/structure/pipes/vents/pump, -/turf/open/floor/almayer, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, /area/almayer/living/briefing) "xqS" = ( /obj/effect/decal/warning_stripes{ @@ -78908,14 +79682,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) -"xrq" = ( -/obj/structure/closet/firecloset, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/lifeboat) "xrr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -78966,6 +79732,12 @@ icon_state = "cargo" }, /area/almayer/hallways/vehiclehangar) +"xtg" = ( +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "xtD" = ( /obj/structure/surface/table/almayer, /obj/item/tool/weldpack, @@ -78983,36 +79755,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"xtQ" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = -6; - pixel_y = -3 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = 5; - pixel_y = 9 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = 5; - pixel_y = -3 - }, -/obj/structure/noticeboard{ - desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; - pixel_y = 29 +"xub" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "plating" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/shipboard/brig/armory) "xuc" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, @@ -79195,17 +79948,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) -"xxa" = ( -/obj/item/stack/sheet/cardboard{ - amount = 50 - }, -/obj/structure/surface/rack, -/obj/item/packageWrap, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "green" - }, -/area/almayer/squads/req) "xxe" = ( /obj/structure/surface/rack, /obj/item/tool/crowbar, @@ -79367,15 +80109,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) -"xyL" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "xyY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ @@ -79405,9 +80138,6 @@ /turf/open/floor/plating, /area/almayer/hull/upper_hull/u_a_p) "xzp" = ( -/obj/structure/bed/chair/comfy/bravo{ - dir = 1 - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, @@ -79424,6 +80154,18 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"xzB" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 + }, +/obj/structure/bed/chair/comfy/delta{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "xAe" = ( /turf/closed/wall/almayer/research/containment/wall/corner, /area/almayer/medical/containment/cell) @@ -79453,6 +80195,10 @@ icon_state = "green" }, /area/almayer/squads/req) +"xAC" = ( +/obj/structure/surface/rack, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "xAI" = ( /obj/structure/platform{ dir = 1 @@ -79478,6 +80224,12 @@ "xBe" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/engineering/upper_engineering) +"xBg" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "xBn" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/blastdoor{ id_tag = "Boat1-D3"; @@ -79553,13 +80305,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_m_p) -"xDj" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "xDn" = ( /turf/open/floor/almayer{ dir = 1; @@ -79585,20 +80330,22 @@ }, /area/almayer/command/airoom) "xDQ" = ( -/obj/structure/platform, -/obj/item/trash/USCMtray{ - pixel_y = 4 +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/snacks/mre_pack/xmas3{ + pixel_x = 5 }, -/obj/item/trash/USCMtray{ - pixel_y = 6 +/obj/item/reagent_container/food/snacks/mre_pack/xmas2{ + pixel_x = 5; + pixel_y = 9 }, -/obj/item/trash/USCMtray{ - pixel_y = 8 +/obj/effect/landmark/map_item{ + layer = 3.03; + pixel_x = -7; + pixel_y = 4 }, -/obj/item/trash/USCMtray{ - pixel_y = 10 +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, /area/almayer/living/briefing) "xEc" = ( /turf/open/floor/almayer{ @@ -79749,6 +80496,25 @@ icon_state = "red" }, /area/almayer/living/briefing) +"xGL" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = 6 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 2 + }, +/obj/item/tool/pen{ + pixel_x = 9; + pixel_y = 9 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/briefing) "xHe" = ( /obj/structure/pipes/vents/pump{ dir = 4 @@ -79857,6 +80623,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"xJn" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/starboard) "xJC" = ( /obj/structure/machinery/door/airlock/almayer/generic/corporate{ name = "Corporate Liaison's Closet" @@ -79880,12 +80652,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"xJT" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "xKM" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -80075,14 +80841,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"xNL" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_x = -1; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/vehiclehangar) "xOL" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -80111,13 +80869,20 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) "xPR" = ( -/obj/structure/platform{ - dir = 1 - }, /obj/structure/pipes/vents/scrubber{ dir = 4 }, -/turf/open/floor/almayer, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + dir = 1 + }, +/obj/item/reagent_container/food/snacks/grown/banana{ + pixel_x = 18; + pixel_y = 5 + }, +/turf/open/floor/almayer{ + icon_state = "orangefull" + }, /area/almayer/living/briefing) "xPZ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ @@ -80447,14 +81212,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) -"xUV" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "xVc" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/door_control{ @@ -80593,11 +81350,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"xYe" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "xYf" = ( /obj/structure/machinery/cm_vending/clothing/sea, /turf/open/floor/almayer{ @@ -80621,15 +81373,6 @@ icon_state = "orange" }, /area/almayer/shipboard/brig/cells) -"xYr" = ( -/obj/structure/machinery/light, -/obj/structure/machinery/cm_vending/gear/commanding_officer{ - pixel_y = 0 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/living/commandbunks) "xYB" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -80663,6 +81406,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering) +"xZf" = ( +/obj/structure/machinery/light, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "xZI" = ( /obj/structure/prop/invuln/lattice_prop{ dir = 1; @@ -80856,6 +81606,10 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"ydr" = ( +/obj/structure/largecrate/supply/weapons/pistols, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "ydx" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -80953,6 +81707,16 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"yeO" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "yeP" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -80968,18 +81732,13 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) -"yff" = ( -/obj/structure/machinery/cm_vending/clothing/dress{ - density = 0; - pixel_y = 16 - }, -/obj/structure/machinery/light{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" +"yeX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/area/almayer/command/cic) +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "yfm" = ( /obj/effect/landmark/start/marine/delta, /obj/effect/landmark/late_join/delta, @@ -81024,18 +81783,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"yfG" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/power/apc/almayer{ - dir = 8 - }, -/obj/item/storage/briefcase{ - pixel_y = 15 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "yfS" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -81052,6 +81799,18 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"ygs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/captain_mess) "ygy" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -81067,6 +81826,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"ygM" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "yhI" = ( /turf/open/floor/almayer{ dir = 4; @@ -81114,6 +81883,17 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) +"yiL" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_s) "yiW" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -81188,6 +81968,16 @@ icon_state = "cargo" }, /area/almayer/hull/lower_hull/l_m_s) +"ykD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "ykF" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /turf/open/floor/almayer{ @@ -81238,6 +82028,12 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"ylg" = ( +/obj/structure/machinery/cryopod/right, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) "ylJ" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -89850,15 +90646,15 @@ tak tak bvx xys -ldu +qan eRL eRL mLJ eiO xFs xkd -teE -xJT +eiH +aTV xkd xkd xkd @@ -90060,9 +90856,9 @@ iqn eRL tmy xkd -vWG -lJL -dQp +rUB +dSn +soa xzu xkd xkd @@ -90263,8 +91059,8 @@ aJz dXy nHg xkd -xik -bjQ +ghX +rAv xkd eTo iHG @@ -92097,7 +92893,7 @@ eZH ohJ thL thL -uAL +aHT liZ rUk jVa @@ -92679,9 +93475,9 @@ pCi rPC rwS lrq -kTc +fFq uqo -wVw +rhD cqn gTx eRL @@ -92882,9 +93678,9 @@ ahE rPC nfI lrq -omu +eTx uqo -sYB +hGa cqn ldu eRL @@ -93085,9 +93881,9 @@ ahE rPC heV lrq -frJ +lCn uqo -ktn +xub cqn nBb mdS @@ -93288,9 +94084,9 @@ ahE wcn nBc lrq -vsI +ebt uqo -xoS +lLN lrq mAT lrq @@ -93491,7 +94287,7 @@ pCi wcn wcn lrq -mAr +yeX uqo fsT jnA @@ -93694,7 +94490,7 @@ pCi oCL wcn lrq -uZY +ebz uqo uqo uqo @@ -93897,7 +94693,7 @@ pCi rPC aou lrq -mAr +yeX uqo uvy tfO @@ -94210,8 +95006,8 @@ poR mGL pNp kcp -wMv -nCR +pNK +bIA alU uDn bKf @@ -94618,9 +95414,9 @@ bTS lxo qcy kcp -kmk -kmk -mIJ +edM +edM +mcl bLt bXX bKh @@ -94821,9 +95617,9 @@ oQM aqI aqI kcp -jaK -jxP -xNL +pUl +tXz +rYZ bLu bBB bBB @@ -98053,7 +98849,7 @@ aaa nXP ndx uNL -nDd +eRt soS sgy nsu @@ -98256,9 +99052,9 @@ aaa nXP hJp uNL -gka +lUv bwQ -oNf +gUr uNL aNw kXJ @@ -98600,7 +99396,7 @@ ukU bfP fvv vcK -wGI +wAd tuA tuA tuA @@ -99614,9 +100410,9 @@ vCO vCO vCO jxB -xDj -boc -eXS +wpj +gDq +tJo bGr hnV xEF @@ -99817,9 +100613,9 @@ wmT jhW mWD jxB -gvW -sWs -imJ +hWX +tYv +mRU xuB gpe xEF @@ -99980,7 +100776,7 @@ aad aai aai pCi -pmI +nMM avl avl agj @@ -100022,7 +100818,7 @@ aES aES aES aES -vbP +lDj uEv gpe xEF @@ -100181,20 +100977,20 @@ aaa aaa aad ahE -qKt -dKa -hdb +iuT +nna +svp avl agj agj -oTM -mTc -sLZ -yfG -lQi +wbw +npK +hBW +tHU +tMu kcN -twI -ufL +dkn +gye aic aov wVW @@ -100384,20 +101180,20 @@ aaa aaa aad ahE -ooo -uaX -kfR +afc +npB +umY avl agj -lDD +laG agc -qfD +aUP agc -kJm -xYr +ktc +ueD kcN cod -ufL +gye aic aov wVW @@ -100590,17 +101386,17 @@ ahE aiV wBY hJJ -qCi +anl agj -crw -wJQ +fuR +ouT agc agc -kJm -rbE +ktc +nKs kcN -yff -ufL +muQ +gye aic aKq luZ @@ -100793,13 +101589,13 @@ pCi kwS avl avl -mRp +yiL agj -nCx -tYM -mqb -kDK -jMx +utw +kmY +pSH +mES +lWD mXj kcN kcN @@ -100998,14 +101794,14 @@ avl hCo lIh agj -keT +fiP hvH -bVs +pYp hvH hvH -aOj -bQl -xpi +iIm +odC +cQD agj bFA aov @@ -101201,14 +101997,14 @@ avl hMI lFb agj -dyj -fnv -bVs -iPu -dFb +mcK +xBg +pYp +isu +oBW mXj -wFJ -kJW +drp +tqI agj aic aoA @@ -101406,7 +102202,7 @@ tDx agj mXj mXj -lul +nRQ mXj mXj mXj @@ -101608,12 +102404,12 @@ jgM lFb agj mXj -pjR -jND -aKk -aKk -nCU -faE +yeO +nQH +lnZ +lnZ +pxL +mzG mXj agj amI @@ -101810,17 +102606,17 @@ avl jpJ lzH agj -qlI -cdB -xjt -coD +iET +akr +lfT +jNY agc -ako -tYM -hGB +jCn +kmY +rEJ agj aic -acS +esy wVW asQ awG @@ -102013,19 +102809,19 @@ avl llM lGL agj -eBE +jPn hvH agc -azm +euM pxG -fOv +klG agc agc agj aic -sxW +cHA wVW -abQ +nww atN cEl sOi @@ -102216,21 +103012,21 @@ avl avl mrc agj -kSH +huR hvH -nTA -qmZ +gfK +rqH agc -aiW +nnG xyk xyk -mDX -aTl -dLe +oys +nDV +joE wVW -atx +qyJ qEk -ajm +ksv wVW arP alX @@ -102242,7 +103038,7 @@ hkG wVW fvB qEk -iaa +aGi wVW aKn aKz @@ -102419,19 +103215,19 @@ pCi jTi nRq agj -kVT +wfd hvH agc -qlp +pJe pxG -tTk +vtt agc agc agj -fXP +lPG aov wVW -atx +qyJ qEk ato wVW @@ -102445,7 +103241,7 @@ aEB wVW fvB qEk -iaa +aGi wVW aKn aKz @@ -102622,19 +103418,19 @@ pCi avl myn agj -kNq +rfv hvH qck -gVd +jEX agc -tan -kDK -iEz +ssn +mES +lUw agj aic aov wVW -ssW +nbr qEk hrm wVW @@ -102648,7 +103444,7 @@ aEC wVW dNZ qEk -mje +xZf wVW aKn aKz @@ -102826,18 +103622,18 @@ cnX lIh agj mXj -fnv +xBg hvH hvH -iNY +bVg hvH -jhB +pJK mXj agj aic aoA wVW -atx +qyJ jvX ato wVW @@ -102849,9 +103645,9 @@ alX aIf aED wVW -ryR +xtg jvX -iaa +aGi wVW aKn aKy @@ -103872,7 +104668,7 @@ aJc ecr ecr ecr -ohS +ygs aET nUv aJU @@ -104074,8 +104870,8 @@ cST aTz aUl aET -esC -nsQ +aWA +jgu aET mSi wHp @@ -104273,7 +105069,7 @@ aGV rvA aKE awF -jzE +iYR aUw aUm aET @@ -104648,7 +105444,7 @@ awW add add add -stu +juf add add add @@ -104694,7 +105490,7 @@ baw aJU aJU aJU -tBu +hey aJU aJU aJU @@ -105048,7 +105844,7 @@ bdH aaC abs adq -myl +jWH ajI add fsU @@ -105106,7 +105902,7 @@ qys gBW aJU tiW -qgU +pUe pgD tQV aaC @@ -105278,13 +106074,13 @@ umS yjM qbO aqw -hnI +qRL bYe amO wZM aPm awF -nvG +aHk vGI aLp awF @@ -105489,7 +106285,7 @@ ejp awF aHn szU -fGa +aLt awF aRC aUw @@ -105657,7 +106453,7 @@ aaa aaY abs adq -tGj +ckE ajI add fsU @@ -105715,7 +106511,7 @@ qys gBW aJU tiW -bpw +hXD pgD tQV aaY @@ -106069,7 +106865,7 @@ aoC add add add -stu +juf add add add @@ -106115,7 +106911,7 @@ baw aJU aJU aJU -nnX +eyv aJU aJU aJU @@ -106793,7 +107589,7 @@ bsk sxu cBI bkA -eFG +nuI bej arX vSG @@ -106898,7 +107694,7 @@ aiX aiX aiX sHM -kUh +otK aiX aiX aiX @@ -107094,7 +107890,7 @@ awW awW awW fSm -hiy +vCz apl bbL bbL @@ -107297,7 +108093,7 @@ ajf ajf ajf oAO -pIZ +dlN aod qgG amC @@ -107500,7 +108296,7 @@ awW awW awW aSJ -isI +dAi dtM aii mce @@ -109535,7 +110331,7 @@ dtM akU ajC sqf -anp +wQa wjz fnA jZY @@ -109738,7 +110534,7 @@ dtM aii ajC sqf -sOZ +udb oNJ eDo eDo @@ -109941,7 +110737,7 @@ dtM ajt aik sqf -anq +eTh awn xsz jTj @@ -110144,11 +110940,11 @@ dtM aii ajC sqf -anr +vZJ awn tEi -asu -hbI +iWb +ygM sqf ajl vtx @@ -111895,8 +112691,8 @@ bJt xOL gGI eeu -nbB -ksA +dqQ +ccm gAz fiq uaa @@ -112298,7 +113094,7 @@ buH bHL buH lhB -nbB +tAJ bDs bIJ bDs @@ -112603,7 +113399,7 @@ kSJ avj cGr awE -qkm +vjn wQv rne guC @@ -112918,7 +113714,7 @@ jFE jFE idx hAz -fhQ +hQh bJt vhI oed @@ -113117,11 +113913,11 @@ vzP bJt hjB bJt -dpn +neF bDs gSk bDs -pdt +khX bJt kTq oed @@ -113215,7 +114011,7 @@ awE bqy bYj eUR -ucI +gEI nDh bYj xne @@ -113730,7 +114526,7 @@ rBj bDs gSk bDs -oMd +hWS bJt oDf uqH @@ -113933,7 +114729,7 @@ bJt oKb gSk bDs -pdt +ign bJt sIx bxX @@ -114538,7 +115334,7 @@ qBM wXI nUd lkd -oMd +xnQ bDs gSk oDE @@ -115038,12 +115834,12 @@ ajr aii avm awE -wYZ +wiF rne rne fAo awE -bhM +knT wQv bBi awE @@ -115450,7 +116246,7 @@ rne wft awE hpf -qJU +pbl igp awE hoX @@ -115515,8 +116311,8 @@ wsP izr aSh ccF -tGG -tGG +rFV +iXR bdg aLG awb @@ -115546,12 +116342,12 @@ buH hOR buH bdg -sNI +cxZ wAU diw -csG -sNI -wNT +tSv +cxZ +ffl wbe bdd qXo @@ -115713,13 +116509,13 @@ hhw umv hhw bdd -bqZ -kbV -tGG -tGG -tGG +hjT +jZr tGG +fHe tGG +sBs +iXR bdg aLG aYO @@ -115749,13 +116545,13 @@ buH bHL buH bdg -sNI -sNI -sNI -sNI +cxZ +hnH +kXH +kfG dkH cKX -bqZ +oqP bdd tLc rsM @@ -115908,7 +116704,7 @@ kxd jgk nsY rSG -rur +wWJ oqS nsY lhu @@ -115917,12 +116713,12 @@ aSm eoM bdd vTt -kbV -tGG -tGG -tGG -tGG +tgE +tgE +fNu tGG +gmp +iXR bdg aLG aYO @@ -115952,13 +116748,13 @@ buH bHL buH bdg -sNI +cxZ csG sNI -sNI +mgR gNi -wNT -cab +wJL +oMC bdd hxZ rsM @@ -116119,14 +116915,14 @@ aSm aSm kOf bdd -bDQ -kbV -tGG +dYH +bDP +tgE okB -tGG +tgE crK -tGG -bdg +xkY +bdd beB aYT beB @@ -116154,11 +116950,11 @@ bCx buH bHL buH -bdg -sNI -sNI -sNI -sNI +bdd +qWy +uZX +wJL +wJL eCS xqM udV @@ -116313,7 +117109,7 @@ gsg vHq vvY nsY -rNb +pPV bxC jiU nsY @@ -116322,12 +117118,12 @@ mhl aSm ylY bdd -bqZ qgw -beH -qMR +qgw +qgw +tMc vlR -dRT +uLe qin pmv tBF @@ -116358,13 +117154,13 @@ bFu omW bFu hLS -eBg -eBg -eBg -eBg -fOk +vKe +vKe +sgE +ljz +xzB epq -bqZ +fCt bdd hTf rKO @@ -116721,20 +117517,20 @@ wNl nGh fPp lqN -vlO +uoh nsY xCN pOB hfk aLf bdd -bqZ +gVm kKL -aLJ -eBg +gOm +hFX dAO cEG -eBg +vKe dYX tBF lBz @@ -116764,13 +117560,13 @@ buH uXu bFu iUk -eBg +cIl gkJ -eBg -eBg +vKe +cum mVZ kTx -bqZ +jIG bdd hTf wRO @@ -116931,14 +117727,14 @@ lQu lQu aSm bdd -bDQ +iFG iWE jUo -wmz -wmz +iXd +iXd wwk -wmz -bdg +hMJ +bdd aLG awb aLG @@ -116966,14 +117762,14 @@ bdg buH hOR buH -bdg +bdd wLV nza -wLV -wLV -wLV +mwz +mwz +mwz ukA -bqZ +jIG bdd gKB rsM @@ -117134,13 +117930,13 @@ yfy ugV vUi bdd -vTt -kbV +jEI +iXd xzp vEn wmz -wmz -wmz +npS +qsa bdg aLG aYO @@ -117170,13 +117966,13 @@ bGe bHL buH bdg -wLV -wLV -wLV -wLV -gKH +kxF +elX +gAj +bHS +aLA ldj -cab +oMC bdd sOt cNX @@ -117337,13 +118133,13 @@ aLf qce aSm bdd -bqZ +gcw xPR nIW +uzb wmz -wmz -wmz -wmz +idJ +qsa bdg beB aYT @@ -117373,13 +118169,13 @@ bJz bHT bJz bdg -wLV -wLV -wLV -wLV -wLV -wNT -udV +kxF +lad +thE +hIt +gAj +wlH +sGX bdd pEl roU @@ -117388,7 +118184,7 @@ uVh nsY kzK lFh -jYc +mus pVA mzV pML @@ -117540,13 +118336,13 @@ aLf tRc qEW bdd -uva +gGo mLb -wmz +qmB vpt kQU -wmz -wmz +rdb +kQU bdg aLG aYO @@ -117579,8 +118375,8 @@ bdg gKH cgz vyU -wLV -wLV +xGL +vkN xDQ bXc bdd @@ -118457,7 +119253,7 @@ abg caF aar aar -lIl +wYZ aar aar ael @@ -118659,10 +119455,10 @@ bWs abg caF aar -vUk +rcW sTB -lUA -tqd +jrV +qmr ael afE agT @@ -118862,9 +119658,9 @@ acO aJs cbN aar -fQY +lDK aap -elM +eXU vFb ael afH @@ -119065,10 +119861,10 @@ pNQ abx hTy aar -thR +pJn aao aao -gDP +erz ael afI agY @@ -119268,10 +120064,10 @@ acP bUE qFQ aar -xtQ +jBY aap aao -sxT +mYX ael afJ agY @@ -119471,10 +120267,10 @@ acG abx caF aar -com +ydr aap aao -sxT +mYX ael afK ahc @@ -119676,7 +120472,7 @@ lCz aar tAV sTB -xfk +uck wKn ael afL @@ -119877,7 +120673,7 @@ acG abx caF aar -lIl +wYZ aar aar aar @@ -120082,8 +120878,8 @@ arJ aar aao aao -wkL -mts +rOZ +dfP adO afM fpR @@ -120283,10 +121079,10 @@ jSY abx hTy aar -hLB +lAj aao aao -laY +xgE adO afN ahh @@ -120486,10 +121282,10 @@ acP bUE qFQ aar -xYe -kZH +jkL +iaE aao -frY +mXa adO afO ahh @@ -120689,10 +121485,10 @@ aJa abg ccf aar -mko +cRg uaZ aap -svC +epK adO jkj ahh @@ -121621,7 +122417,7 @@ rbY gwD bOK bPD -bYa +nSj bPD jOk bNB @@ -121824,7 +122620,7 @@ rbY bEc bKA bCA -bQS +gJs bCA bKA bEc @@ -121902,7 +122698,7 @@ aeA aeC aeC aeC -cVb +tpt aeC aeC aeC @@ -121950,7 +122746,7 @@ lJY vcE vcE vcE -iTd +oDO vcE vcE vcE @@ -122237,7 +123033,7 @@ bmD mYv doP jac -xxa +isS cai bdl bII @@ -122302,7 +123098,7 @@ aag aag abh acx -pMk +adQ ajs aeC wXh @@ -122362,7 +123158,7 @@ eyG kpo vcE kUV -xyL +mvH rRq uOi aag @@ -122504,8 +123300,8 @@ aah aah aah abi -nGY -gyU +acE +adZ ajk aeA asY @@ -122565,8 +123361,8 @@ deg wLu lJY xVS -kPH -knL +fqg +uGa uyC aah aah @@ -122628,7 +123424,7 @@ aYW bzV beB mCo -iwZ +xfw lBF bKA sbM @@ -122643,7 +123439,7 @@ bmD lyk bOR eHa -cmo +opj xAB mCo bJz @@ -122707,8 +123503,8 @@ bdH bdH bdH abi -dEJ -gyU +acT +adZ ajk aeA atp @@ -122768,8 +123564,8 @@ pfH wlF lJY xVS -kPH -qGU +fqg +mIA uyC bdH aaa @@ -122911,7 +123707,7 @@ aaa bdH abh acx -gCB +umR ajs aeC wXh @@ -122971,7 +123767,7 @@ eyG kpo vcE kUV -bxA +pPF rRq uOi bdH @@ -123323,7 +124119,7 @@ amH aeC aeC aeC -cVb +tpt aeC aeC aeC @@ -123371,7 +124167,7 @@ kKR vcE vcE vcE -iTd +oDO vcE vcE vcE @@ -123456,7 +124252,7 @@ bZr bNQ bNQ bNQ -bGz +ohl hMs cbw iEb @@ -123659,7 +124455,7 @@ bZr krN krN krN -oqY +llt can buH iEb @@ -123765,9 +124561,9 @@ alG anG apf oIB -jgr -gGp -dMf +tSF +qyM +jog oIB sFR vuv @@ -123862,7 +124658,7 @@ bZr ibc uly bNN -vbR +fXt pky cbv cbS @@ -123968,9 +124764,9 @@ alG aYD uPI oIB -fXE -kaS -aiQ +hJh +vMC +iUC oIB sFR vuv @@ -124171,9 +124967,9 @@ sUF anG apd oIB -wqr +ufS bZw -xUV +kaJ oIB sFR hPo @@ -124268,7 +125064,7 @@ bZr bKA dyx eYr -bUo +iii uys cbz cbU @@ -124375,8 +125171,8 @@ aYD aTS qgK tEB -uBM -dXo +llD +gGl oIB lBR nVu @@ -124471,7 +125267,7 @@ bmD bKA dyx hGN -pVx +ddN uys ttM iEb @@ -124578,8 +125374,8 @@ anG mPX oIB wKF -hzb -ltU +fOh +diM oIB fbx cFA @@ -124780,9 +125576,9 @@ aSC aZH iAB oIB -phj -vEf -cNK +gqF +imW +qbh oIB fbx cxo @@ -124983,8 +125779,8 @@ rFY ctC gPF oIB -opI -dha +kUb +rJg pxj oIB fbx @@ -127005,8 +127801,8 @@ auu aoT aFm xBe -aIV -qqr +cij +jRZ arH xBe alG @@ -127413,7 +128209,7 @@ anO nFX atv auV -amE +ift xBe alG aDZ @@ -127616,7 +128412,7 @@ atc nFX atv auV -amE +ift xBe alG aYj @@ -128020,8 +128816,8 @@ atq aDr aFu xBe -azp -qJf +rwT +wdv anV xBe alG @@ -131277,7 +132073,7 @@ vuv vuv jWh jWh -sWC +olk jWh jWh jWh @@ -131479,10 +132275,10 @@ vuv nfS emx jWh -duz -hXG -htG -doU +qCg +xjw +pfA +xAC jWh lbB uIv @@ -131682,10 +132478,10 @@ iEs cxo cxo jWh -axR -mIP -tcZ -fWi +uUV +rsW +djN +fnQ jWh lbB cKL @@ -131885,10 +132681,10 @@ vuv xct cxo jWh -vpv -pgw -rmE -fWi +dkS +vba +naQ +fnQ jWh xPZ pcv @@ -132069,7 +132865,7 @@ ptK dmQ psm psm -lDn +qyH arV wZX eky @@ -132083,7 +132879,7 @@ aDQ eky wZX arV -wkA +dtv vuv vuv cxo @@ -132271,8 +133067,8 @@ hWU dmQ aeq psm -xrq -vVu +aNe +hiN arV wZX eky @@ -132286,8 +133082,8 @@ aHe eky wZX arV -oIt -xrq +fXM +aNe vuv ahb cxo @@ -132474,8 +133270,8 @@ rwb dmQ jXY psm -vlk -mKy +atY +qkj aMT svl pzJ @@ -132489,8 +133285,8 @@ qDt pzJ sQO aMT -wNS -vlk +rWF +atY vuv woM nqD @@ -132678,7 +133474,7 @@ dmQ atD psm psm -vjd +vHl aRp jBX akS @@ -132692,7 +133488,7 @@ aHe tKf jBX aRp -quy +edx vuv vuv myC @@ -133074,8 +133870,8 @@ cuC bNM tgK tfb -wuT -lMx +skg +eaX pVZ pVZ pVZ @@ -133107,8 +133903,8 @@ qMu qMu qMu qMu -jFY -qKY +euY +iuw jHL wOK uIv @@ -133277,8 +134073,8 @@ cuC riJ kHY uhM -kdv -lkm +uvk +xJn cuC aag aag @@ -133310,8 +134106,8 @@ aag aag aag bYn -dRs -uAl +tAh +bfe rDb qjV rID @@ -133480,7 +134276,7 @@ cuC cuC umy iKZ -pnL +tiw cuC cuC mNX @@ -133514,7 +134310,7 @@ mNX qOk bYn bYn -cWE +qQL kHS rID bYn @@ -134507,8 +135303,8 @@ xVk xVk aad jbq -kRg -uRs +jXW +jcZ aDO qqu eky @@ -134516,8 +135312,8 @@ aNl eky dFk aDO -nPY -kRg +nzI +jXW jbq ajZ xVk @@ -134710,8 +135506,8 @@ xVk xVk aad jbq -hBL -dID +qtR +jWC eky eky nJu @@ -134719,8 +135515,8 @@ aNl eky eky eky -etn -hBL +aDc +qtR jbq ajZ xVk @@ -134914,7 +135710,7 @@ xVk eJQ aPw aHe -mRQ +dnJ eky eky eky @@ -134922,7 +135718,7 @@ aNl eky eky eky -biJ +hfw aHe aPw eJQ @@ -136741,7 +137537,7 @@ xVk oee aPw aHe -iTe +tqB eky eky atg @@ -136749,7 +137545,7 @@ aBE ouB eky eky -qPX +gwu aHe aPw oee @@ -136943,8 +137739,8 @@ xVk xVk aad jbq -xrq -dID +aNe +jWC eky eky esT @@ -136952,8 +137748,8 @@ nYE orH eky eky -etn -xrq +aDc +aNe jbq ajZ xVk @@ -137146,8 +137942,8 @@ xVk xVk aad jbq -vlk -dID +atY +jWC eky eky bAe @@ -137155,8 +137951,8 @@ aBG sGh eky eky -etn -vlk +aDc +atY jbq ajZ xVk @@ -137349,8 +138145,8 @@ xVk xVk aad aPw -uYd -xnz +qpU +ykD dqj eky xaS @@ -137358,8 +138154,8 @@ ejt mPf eky gUV -neG -uYd +wKS +qpU aPw ajZ xVk @@ -140446,9 +141242,9 @@ lmz lmz lmz daz -ltc -eXk -xns +rzf +bRo +wyv pTt gAe rCi @@ -140649,9 +141445,9 @@ lmz lmz lmz daz -tId -wJB -tJN +czG +ylg +oIY daz daz daz diff --git a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm index 36c8e9abe717..917759783a2a 100644 --- a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm +++ b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm @@ -2220,9 +2220,6 @@ icon_state = "floor_plate" }, /area/whiskey_outpost/inside/living) -"hP" = ( -/turf/open/space/basic, -/area/whiskey_outpost/inside/caves) "hQ" = ( /turf/open/floor/prison{ icon_state = "floor_plate" @@ -22778,7 +22775,7 @@ mT mT mT mT -hP +mT mT mT dl @@ -23177,12 +23174,12 @@ mT mT mT mT -hP mT mT mT mT -hP +mT +mT mT mT qz diff --git a/maps/sorokyne_strata.json b/maps/sorokyne_strata.json index 61c3a7fd3f69..5a0f6d67c410 100644 --- a/maps/sorokyne_strata.json +++ b/maps/sorokyne_strata.json @@ -11,6 +11,7 @@ "/datum/equipment_preset/survivor/scientist/soro", "/datum/equipment_preset/survivor/doctor/soro", "/datum/equipment_preset/survivor/engineer/soro", + "/datum/equipment_preset/survivor/corporate/soro", "/datum/equipment_preset/survivor/security/soro", "/datum/equipment_preset/survivor/interstellar_human_rights_observer/soro" ], diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss index 835a94341708..b4e59f32c121 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss @@ -956,10 +956,6 @@ em { color: #844300; } -.sentryradio { - color: #844300; -} - .medradio { color: #008160; } diff --git a/tgui/packages/tgui/constants.js b/tgui/packages/tgui/constants.js index 3d7530e7ead8..0ec51380a322 100644 --- a/tgui/packages/tgui/constants.js +++ b/tgui/packages/tgui/constants.js @@ -80,153 +80,233 @@ export const CSS_COLORS = [ export const RADIO_CHANNELS = [ { name: 'Yautja', - freq: 1214, + freq: 1205, color: '#1ecc43', }, { - name: 'PMC', - freq: 1235, + name: "Dutch's Dozen", + freq: 1210, color: '#1ecc43', }, + { + name: 'VAI', + freq: 1215, + color: '#e3580e', + }, + { + name: 'CMB', + freq: 1220, + color: '#1b748c', + }, { name: 'WY', - freq: 1236, - color: '#1ecc43', + freq: 1231, + color: '#fe9b24', }, { - name: "Dutch's Dozen", - freq: 1340, - color: '#1ecc43', + name: 'PMC CMD', + freq: 1232, + color: '#4dc5ce', }, { - name: 'VAI', - freq: 1218, - color: '#1ecc43', + name: 'PMC', + freq: 1233, + color: '#4dc5ce', }, { - name: 'ERT', - freq: 1342, - color: '#1ecc43', + name: 'PMC ENG', + freq: 1234, + color: '#4dc5ce', + }, + { + name: 'PMC MED', + freq: 1235, + color: '#4dc5ce', + }, + { + name: 'PMC CCT', + freq: 1236, + color: '#4dc5ce', + }, + { + name: 'Deathsquad', + freq: 1239, + color: '#fe9b24', }, { name: 'UPP', - freq: 1338, - color: '#1ecc43', + freq: 1251, + color: '#8f4a4b', + }, + { + name: 'UPP CMD', + freq: 1252, + color: '#8f4a4b', + }, + { + name: 'UPP ENG', + freq: 1253, + color: '#8f4a4b', + }, + { + name: 'UPP MED', + freq: 1254, + color: '#8f4a4b', + }, + { + name: 'UPP CCT', + freq: 1255, + color: '#8f4a4b', + }, + { + name: 'UPP KDO', + freq: 1259, + color: '#8f4a4b', }, { name: 'CLF', - freq: 1339, - color: '#1ecc43', + freq: 1271, + color: '#8e83ca', }, { - name: 'Deathsquad', - freq: 1344, + name: 'CLF CMD', + freq: 1272, + color: '#8e83ca', + }, + { + name: 'CLF ENG', + freq: 1273, + color: '#8e83ca', + }, + { + name: 'CLF MED', + freq: 1274, + color: '#8e83ca', + }, + { + name: 'CLF CCT', + freq: 1275, + color: '#8e83ca', + }, + { + name: 'LSTN BUG A', + freq: 1290, + color: '#d65d95', + }, + { + name: 'LSTN BUG B', + freq: 1291, + color: '#d65d95', + }, + { + name: 'Common', + freq: 1461, color: '#1ecc43', }, { - name: 'ARES', - freq: 1447, + name: 'Colony', + freq: 1469, color: '#1ecc43', }, { name: 'High Command', - freq: 1240, - color: '#1ecc43', + freq: 1471, + color: '#318779', }, { - name: 'CCT', - freq: 1350, - color: '#1ecc43', + name: 'SOF', + freq: 1472, + color: '#318779', + }, + { + name: 'Provost', + freq: 1473, + color: '#9b0612', + }, + { + name: 'Sentry', + freq: 1480, + color: '#844300', }, { name: 'Command', - freq: 1353, - color: '#1ecc43', + freq: 1481, + color: '#779cc2', }, { name: 'Medsci', - freq: 1355, - color: '#1ecc43', + freq: 1482, + color: '#008160', }, { name: 'Engineering', - freq: 1357, - color: '#1ecc43', + freq: 1483, + color: '#a66300', }, { name: 'MP', - freq: 1359, - color: '#1ecc43', + freq: 1484, + color: '#a52929', }, { name: 'Req', - freq: 1354, - color: '#1ecc43', + freq: 1485, + color: '#ba8e41', }, { name: 'JTAC', - freq: 1358, - color: '#1ecc43', + freq: 1486, + color: '#ad3b98', }, { name: 'Intel', - freq: 1356, - color: '#1ecc43', + freq: 1487, + color: '#027d02', }, { name: 'Alamo', - freq: 1441, + freq: 1488, color: '#1ecc43', }, { name: 'Normandy', - freq: 1443, + freq: 1489, color: '#1ecc43', }, { name: 'Alpha', - freq: 1449, - color: '#1ecc43', + freq: 1491, + color: '#db2626', }, { name: 'Bravo', - freq: 1451, - color: '#1ecc43', - }, - { - name: 'Common', - freq: 1461, - color: '#1ecc43', + freq: 1492, + color: '#c68610', }, { - name: 'Colony', - freq: 1469, - color: '#1ecc43', - }, - { - name: 'MARSOC', - freq: 1241, - color: '#1ecc43', + name: 'Charlie', + freq: 1493, + color: '#aa55aa', }, { - name: 'Reserves', - freq: 1457, - color: '#1ecc43', + name: 'Delta', + freq: 1494, + color: '#007fcf', }, { name: 'Echo', - freq: 1456, - color: '#1ecc43', + freq: 1495, + color: '#3eb489', }, { - name: 'Delta', - freq: 1455, - color: '#1ecc43', + name: 'Reserves', + freq: 1496, + color: '#ad6d48', }, { - name: 'Charlie', - freq: 1453, - color: '#1ecc43', + name: 'ARES', + freq: 1500, + color: '#ff00ff', }, ]; diff --git a/tgui/packages/tgui/interfaces/Orbit/helpers.ts b/tgui/packages/tgui/interfaces/Orbit/helpers.ts index a43aaf1ff0b0..9facaf339b29 100644 --- a/tgui/packages/tgui/interfaces/Orbit/helpers.ts +++ b/tgui/packages/tgui/interfaces/Orbit/helpers.ts @@ -31,7 +31,9 @@ export const getDisplayName = (full_name: string, nickname?: string) => { }; /** Returns the display color for certain health percentages */ -export const getHealthColor = (health: number) => { +export const getHealthColor = (health?: number) => { + if (!health) return 'bad'; + switch (true) { case health > HEALTH.Good: return 'good'; diff --git a/tgui/packages/tgui/interfaces/Orbit/index.tsx b/tgui/packages/tgui/interfaces/Orbit/index.tsx index e9e345995271..83dfe3b361b2 100644 --- a/tgui/packages/tgui/interfaces/Orbit/index.tsx +++ b/tgui/packages/tgui/interfaces/Orbit/index.tsx @@ -215,6 +215,8 @@ const ObservableItem = ( const [autoObserve] = useLocalState(context, 'autoObserve', false); + const displayHealth = typeof health === 'number'; + return (