diff --git a/.github/guides/AUTODOC.md b/.github/guides/AUTODOC.md index dd2f30627b7d..90e5b2d1ac66 100644 --- a/.github/guides/AUTODOC.md +++ b/.github/guides/AUTODOC.md @@ -1,9 +1,9 @@ # dmdoc -[DOCUMENTATION]: **PUT DOCUMENTATION LINK HERE** +[DOCUMENTATION]: https://docs.cm-ss13.com/ [BYOND]: https://secure.byond.com/ -[DMDOC]: https://github.com/SpaceManiac/SpacemanDMM/tree/master/src/dmdoc +[DMDOC]: https://github.com/SpaceManiac/SpacemanDMM/tree/master/crates/dmdoc [DMDOC] is a documentation generator for DreamMaker, the scripting language of the [BYOND] game engine. It produces simple static HTML files based on @@ -13,9 +13,9 @@ We use **dmdoc** to generate [DOCUMENTATION] for our code, and that documentatio is automatically generated and built on every new commit to the master branch This gives new developers a clickable reference [DOCUMENTATION] they can browse to better help -gain understanding of the /tg/station codebase structure and api reference. +gain understanding of the CM-SS13 codebase structure and api reference. -## Documenting code on /tg/station +## Documenting code on CM-SS13 We use block comments to document procs and classes, and we use `///` line comments when documenting individual variables. diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm index 61eb757e9c4d..f4df347c62db 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm @@ -75,9 +75,13 @@ #define COMSIG_MOB_PRE_CLICK "mob_pre_click" #define COMPONENT_INTERRUPT_CLICK (1<<0) -///from base of /mob/Login(): () +/// From base of /mob/Login(), called when a client logs into this mob: () +/// Not to be confused with [COMSIG_MOB_LOGGED_IN] #define COMSIG_MOB_LOGIN "mob_login" -///from base of /mob/Logout(): () +/// From base of /mob/Login(), called after a client logs into this mob: () +/// Not to be confused with [COMSIG_MOB_LOGIN] +#define COMSIG_MOB_LOGGED_IN "mob_logged_in" +/// From base of /mob/Logout(): () #define COMSIG_MOB_LOGOUT "mob_logout" /// From /mob/proc/change_real_name(): (old_name, new_name) diff --git a/code/__DEFINES/dcs/signals/signals_client.dm b/code/__DEFINES/dcs/signals/signals_client.dm index 3968f654c486..36a60c153d0f 100644 --- a/code/__DEFINES/dcs/signals/signals_client.dm +++ b/code/__DEFINES/dcs/signals/signals_client.dm @@ -19,8 +19,8 @@ /// Called after one or more verbs are added: (list of verbs added) #define COMSIG_CLIENT_VERB_REMOVED "client_verb_removed" -/// Called after a client logs into a mob: (mob) -#define COMSIG_CLIENT_MOB_LOGIN "client_mob_changed" +/// Called from /mob/Login() after a client logs into a mob: (mob) +#define COMSIG_CLIENT_MOB_LOGGED_IN "client_mob_logged_in" /// Called when something is added to a client's screen : /client/proc/add_to_screen(screen_add) #define COMSIG_CLIENT_SCREEN_ADD "client_screen_add" diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm index 8aa700f4fb3a..378948347a81 100644 --- a/code/__DEFINES/dcs/signals/signals_global.dm +++ b/code/__DEFINES/dcs/signals/signals_global.dm @@ -34,9 +34,11 @@ #define COMSIG_GLOB_REMOVE_VOTE_BUTTON "!remove_vote_button" -#define COMSIG_GLOB_CLIENT_LOGIN "!client_login" +/// Called from /client/New() when a client logs in to the game: (client) +#define COMSIG_GLOB_CLIENT_LOGGED_IN "!client_logged_in" -#define COMSIG_GLOB_MOB_LOGIN "!mob_login" +/// Called from /mob/Login() when a client logs into a mob: (mob) +#define COMSIG_GLOB_MOB_LOGGED_IN "!mob_logged_in" ///from /datum/controller/subsystem/ticker/PostSetup #define COMSIG_GLOB_POST_SETUP "!post_setup" diff --git a/code/__DEFINES/dropships.dm b/code/__DEFINES/dropships.dm index f7df570a2864..d53e7c68d8db 100644 --- a/code/__DEFINES/dropships.dm +++ b/code/__DEFINES/dropships.dm @@ -10,3 +10,8 @@ #define DROPSHIP_MIN_AUTO_DELAY 10 SECONDS #define DROPSHIP_AUTO_RETRY_COOLDOWN 20 SECONDS #define DROPSHIP_MEDEVAC_COOLDOWN 20 SECONDS + +//Hatches states +#define SHUTTLE_DOOR_BROKEN -1 +#define SHUTTLE_DOOR_UNLOCKED 0 +#define SHUTTLE_DOOR_LOCKED 1 diff --git a/code/__DEFINES/mob_hud.dm b/code/__DEFINES/mob_hud.dm index 02f992694832..c451d01d3c90 100644 --- a/code/__DEFINES/mob_hud.dm +++ b/code/__DEFINES/mob_hud.dm @@ -35,7 +35,7 @@ #define MOB_HUD_XENO_INFECTION 6 #define MOB_HUD_XENO_STATUS 7 #define MOB_HUD_XENO_HOSTILE 8 -#define MOB_HUD_FACTION_USCM 9 +#define MOB_HUD_FACTION_MARINE 9 #define MOB_HUD_FACTION_OBSERVER 10 #define MOB_HUD_FACTION_UPP 11 #define MOB_HUD_FACTION_WY 12 diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index 2b018c0a2810..ef3dfb03b337 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -279,6 +279,7 @@ DEFINE_BITFIELD(whitelist_status, list( #define FACTION_LIST_MERCENARY list(FACTION_MERCENARY) #define FACTION_LIST_MARSHAL list(FACTION_MARSHAL) #define FACTION_LIST_DUTCH list(FACTION_DUTCH) +#define FACTION_LIST_SURVIVOR_WY list(FACTION_SURVIVOR, FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) #define FACTION_LIST_MARINE_WY list(FACTION_MARINE, FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) #define FACTION_LIST_MARINE_UPP list(FACTION_MARINE, FACTION_UPP) #define FACTION_LIST_MARINE_TWE list(FACTION_MARINE, FACTION_TWE) diff --git a/code/__DEFINES/sentry_laptop_configurations.dm b/code/__DEFINES/sentry_laptop_configurations.dm index 8626ba2cfaee..6f4e2bec14ca 100644 --- a/code/__DEFINES/sentry_laptop_configurations.dm +++ b/code/__DEFINES/sentry_laptop_configurations.dm @@ -1,4 +1,3 @@ -#define FACTION_USCM "USCM" #define FACTION_WEYLAND "WY" #define FACTION_HUMAN "HUMAN" #define FACTION_COLONY "COLONY" diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index dc49d2c6f02c..a4fb6d40be73 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "7.1.0" +#define TGS_DMAPI_VERSION "7.1.1" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -496,7 +496,7 @@ /// Returns a list of connected [/datum/tgs_chat_channel]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsChatChannelInfo() return - + /** * Trigger an event in TGS. Requires TGS version >= 6.3.0. Returns [TRUE] if the event was triggered successfully, [FALSE] otherwise. This function may sleep! * diff --git a/code/__DEFINES/vendors.dm b/code/__DEFINES/vendors.dm index 086b70a92428..dc78f7caa4d3 100644 --- a/code/__DEFINES/vendors.dm +++ b/code/__DEFINES/vendors.dm @@ -19,6 +19,8 @@ #define MARINE_CAN_BUY_COMBAT_ARMOR "combat_armor" #define MARINE_CAN_BUY_KIT "kit" #define MARINE_CAN_BUY_DRESS "dress" +#define CIVILIAN_CAN_BUY_BACKPACK "civilian_backpack" +#define CIVILIAN_CAN_BUY_UTILITY "civilian_utility" #define MARINE_CAN_BUY_ALL list(MARINE_CAN_BUY_UNIFORM = 1, MARINE_CAN_BUY_SHOES = 1, MARINE_CAN_BUY_HELMET = 1, MARINE_CAN_BUY_ARMOR = 1, MARINE_CAN_BUY_GLOVES = 1, MARINE_CAN_BUY_EAR = 1, MARINE_CAN_BUY_BACKPACK = 1, MARINE_CAN_BUY_POUCH = 2, MARINE_CAN_BUY_BELT = 1, MARINE_CAN_BUY_GLASSES = 1, MARINE_CAN_BUY_MASK = 1, MARINE_CAN_BUY_ESSENTIALS = 1, MARINE_CAN_BUY_SECONDARY = 1, MARINE_CAN_BUY_ATTACHMENT = 1, MARINE_CAN_BUY_MRE = 1, MARINE_CAN_BUY_ACCESSORY = 1, MARINE_CAN_BUY_COMBAT_SHOES = 1, MARINE_CAN_BUY_COMBAT_HELMET = 1, MARINE_CAN_BUY_COMBAT_ARMOR = 1, MARINE_CAN_BUY_KIT = 1, MARINE_CAN_BUY_DRESS = 99) diff --git a/code/_globalvars/lists/mapping_globals.dm b/code/_globalvars/lists/mapping_globals.dm index 47cc22dae5e1..772561dbf4a6 100644 --- a/code/_globalvars/lists/mapping_globals.dm +++ b/code/_globalvars/lists/mapping_globals.dm @@ -53,6 +53,7 @@ GLOBAL_LIST_EMPTY(teleporter_landmarks) GLOBAL_LIST_INIT(cardinals, list(NORTH, SOUTH, EAST, WEST)) GLOBAL_LIST_EMPTY(nightmare_landmarks) +GLOBAL_LIST_EMPTY(nightmare_landmark_tags_removed) GLOBAL_LIST_EMPTY(ship_areas) diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index c47531f5fc45..d71bf1d747c9 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -4,6 +4,7 @@ #define KEY_MODE_TEXT 0 #define KEY_MODE_TYPE 1 +#define KEY_MODE_TEXT_UNALTERED 2 /datum/config_entry var/name //read-only, this is determined by the last portion of the derived entry type @@ -153,7 +154,9 @@ var/key_value = null if(key_pos || value_mode == VALUE_MODE_FLAG) - key_name = lowertext(copytext(str_val, 1, key_pos)) + key_name = copytext(str_val, 1, key_pos) + if(key_mode != KEY_MODE_TEXT_UNALTERED) + key_name = lowertext(key_name) if(key_pos) key_value = copytext(str_val, key_pos + length(str_val[key_pos])) var/new_key @@ -161,7 +164,7 @@ var/continue_check_value var/continue_check_key switch(key_mode) - if(KEY_MODE_TEXT) + if(KEY_MODE_TEXT, KEY_MODE_TEXT_UNALTERED) new_key = key_name continue_check_key = new_key if(KEY_MODE_TYPE) diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 83929ecf8803..e2572e5e2d61 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -629,3 +629,14 @@ This maintains a list of ip addresses that are able to bypass topic filtering. /datum/config_entry/flag/guest_ban /datum/config_entry/flag/auto_profile + +/// Relay Ping Browser configuration +/datum/config_entry/keyed_list/connection_relay_ping + splitter = "|" + key_mode = KEY_MODE_TEXT_UNALTERED + value_mode = VALUE_MODE_TEXT + +/datum/config_entry/keyed_list/connection_relay_con + splitter = "|" + key_mode = KEY_MODE_TEXT_UNALTERED + value_mode = VALUE_MODE_TEXT diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 2b9812abade4..f265315460e3 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -8,6 +8,10 @@ SUBSYSTEM_DEF(ticker) var/current_state = GAME_STATE_STARTUP //State of current round used by process() var/force_ending = FALSE //Round was ended by admin intervention + + /// If TRUE, there is no lobby phase, the game starts immediately. + var/start_immediately = FALSE + var/bypass_checks = FALSE //Bypass mode init checks var/setup_failed = FALSE //If the setup has failed at any point var/setup_started = FALSE @@ -80,6 +84,10 @@ SUBSYSTEM_DEF(ticker) var/mob/new_player/player = i if(player.ready) // TODO: port this == PLAYER_READY_TO_PLAY) ++totalPlayersReady + + if(start_immediately) + time_left = 0 + if(time_left < 0 || delay_start) return @@ -207,7 +215,7 @@ SUBSYSTEM_DEF(ticker) CHECK_TICK mode.announce() if(mode.taskbar_icon) - RegisterSignal(SSdcs, COMSIG_GLOB_CLIENT_LOGIN, PROC_REF(handle_mode_icon)) + RegisterSignal(SSdcs, COMSIG_GLOB_CLIENT_LOGGED_IN, PROC_REF(handle_mode_icon)) set_clients_taskbar_icon(mode.taskbar_icon) if(GLOB.perf_flags & PERF_TOGGLE_LAZYSS) diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 6188e38e8d60..2438577a1771 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -59,7 +59,7 @@ SUBSYSTEM_DEF(vote) voting.Cut() remove_action_buttons() - UnregisterSignal(SSdcs, COMSIG_GLOB_CLIENT_LOGIN) + UnregisterSignal(SSdcs, COMSIG_GLOB_CLIENT_LOGGED_IN) for(var/c in GLOB.player_list) update_static_data(c) @@ -373,7 +373,7 @@ SUBSYSTEM_DEF(vote) if(send_clients_vote) C.mob.vote() - RegisterSignal(SSdcs, COMSIG_GLOB_CLIENT_LOGIN, PROC_REF(handle_client_joining)) + RegisterSignal(SSdcs, COMSIG_GLOB_CLIENT_LOGGED_IN, PROC_REF(handle_client_joining)) SStgui.update_uis(src) return TRUE return FALSE @@ -525,7 +525,7 @@ GLOBAL_LIST_INIT(possible_vote_types, list( if(!(params["vote_type"] in GLOB.possible_vote_types)) return - if(!check_rights(R_ADMIN)) + if(!check_rights(R_MOD)) var/list/vote_type = GLOB.possible_vote_types[params["vote_type"]] if(vote_type["admin_only"]) return diff --git a/code/datums/ammo/ammo.dm b/code/datums/ammo/ammo.dm index 7a4006deee73..229c10b31e3a 100644 --- a/code/datums/ammo/ammo.dm +++ b/code/datums/ammo/ammo.dm @@ -84,7 +84,7 @@ /// that will be given to a projectile with the current ammo datum var/list/list/traits_to_give - var/flamer_reagent_type = /datum/reagent/napalm/ut + var/flamer_reagent_id = "utnapthal" /// The flicker that plays when a bullet hits a target. Usually red. Can be nulled so it doesn't show up at all. var/hit_effect_color = "#FF0000" @@ -237,11 +237,12 @@ P.fire_at(new_target, original_P.firer, original_P.shot_from, P.ammo.max_range, P.ammo.shell_speed, original_P.original) //Fire! -/datum/ammo/proc/drop_flame(turf/T, datum/cause_data/cause_data) // ~Art updated fire 20JAN17 - if(!istype(T)) +/datum/ammo/proc/drop_flame(turf/turf, datum/cause_data/cause_data) // ~Art updated fire 20JAN17 + if(!istype(turf)) return - if(locate(/obj/flamer_fire) in T) + if(locate(/obj/flamer_fire) in turf) return - var/datum/reagent/R = new flamer_reagent_type() - new /obj/flamer_fire(T, cause_data, R) + var/datum/reagent/chemical = GLOB.chemical_reagents_list[flamer_reagent_id] + + new /obj/flamer_fire(turf, cause_data, chemical) diff --git a/code/datums/ammo/misc.dm b/code/datums/ammo/misc.dm index 62a78539b6a2..bcb9673548db 100644 --- a/code/datums/ammo/misc.dm +++ b/code/datums/ammo/misc.dm @@ -49,11 +49,11 @@ drop_flame(get_turf(P), P.weapon_cause_data) /datum/ammo/flamethrower/tank_flamer - flamer_reagent_type = /datum/reagent/napalm/blue + flamer_reagent_id = "napalmx" /datum/ammo/flamethrower/sentry_flamer flags_ammo_behavior = AMMO_IGNORE_ARMOR|AMMO_IGNORE_COVER|AMMO_FLAME - flamer_reagent_type = /datum/reagent/napalm/blue + flamer_reagent_id = "napalmx" accuracy = HIT_ACCURACY_TIER_8 accurate_range = 6 diff --git a/code/datums/diseases/black_goo.dm b/code/datums/diseases/black_goo.dm index 7d94ef8ed8e2..a5f67c8445be 100644 --- a/code/datums/diseases/black_goo.dm +++ b/code/datums/diseases/black_goo.dm @@ -2,6 +2,7 @@ #define ZOMBIE_INFECTION_STAGE_ONE 1 #define ZOMBIE_INFECTION_STAGE_TWO 2 #define ZOMBIE_INFECTION_STAGE_THREE 3 +#define ZOMBIE_INFECTION_STAGE_FOUR 4 #define SLOW_INFECTION_RATE 1 #define FAST_INFECTION_RATE 7 #define STAGE_LEVEL_THRESHOLD 360 @@ -9,7 +10,7 @@ /datum/disease/black_goo name = "Black Goo" - max_stages = 3 + max_stages = 4 cure = "Anti-Zed" cure_id = "antiZed" spread = "Bites" @@ -120,17 +121,23 @@ stage_level += 42 if(ZOMBIE_INFECTION_STAGE_THREE) - //check if the mob is already a zombie and just return to avoid weird stuff, edge case if zombie_is_transforming deoesn't work. + // if zombie or transforming we upgrade it to stage four. if(iszombie(infected_mob)) + stage++ return - - if(infected_mob.stat == DEAD && stage_counter != stage) - to_chat(infected_mob, SPAN_CENTERBOLD("Your zombie infection is now at stage three! Zombie transformation begin!")) - stage_counter = stage - hidden = list(0,0) + // if not a zombie(above check) and isn't transforming then we transform you into a zombie. if(!zombie_is_transforming) + // if your dead we inform you that you're going to turn into a zombie. + if(infected_mob.stat == DEAD && stage_counter != stage) + to_chat(infected_mob, SPAN_CENTERBOLD("Your zombie infection is now at stage three! Zombie transformation begin!")) + stage_counter = stage zombie_transform(infected_mob) - infected_mob.next_move_slowdown = max(infected_mob.next_move_slowdown, 2) + hidden = list(0,0) + infected_mob.next_move_slowdown = max(infected_mob.next_move_slowdown, 2) + + if(ZOMBIE_INFECTION_STAGE_FOUR) + return + // final stage of infection it's to avoid running the above test once you're a zombie for now. maybe more later. /datum/disease/black_goo/proc/zombie_transform(mob/living/carbon/human/human) set waitfor = 0 @@ -149,7 +156,7 @@ playsound(human.loc, 'sound/hallucinations/wail.ogg', 25, 1) human.jitteriness = 0 human.set_species(SPECIES_ZOMBIE) - stage = 3 + stage = 4 human.faction = FACTION_ZOMBIE zombie_is_transforming = FALSE @@ -309,6 +316,7 @@ #undef ZOMBIE_INFECTION_STAGE_ONE #undef ZOMBIE_INFECTION_STAGE_TWO #undef ZOMBIE_INFECTION_STAGE_THREE +#undef ZOMBIE_INFECTION_STAGE_FOUR #undef STAGE_LEVEL_THRESHOLD #undef SLOW_INFECTION_RATE #undef FAST_INFECTION_RATE diff --git a/code/datums/mob_hud.dm b/code/datums/mob_hud.dm index 778ec2b75a36..b7b5544777b3 100644 --- a/code/datums/mob_hud.dm +++ b/code/datums/mob_hud.dm @@ -10,7 +10,7 @@ GLOBAL_LIST_INIT_TYPED(huds, /datum/mob_hud, list( MOB_HUD_XENO_INFECTION = new /datum/mob_hud/xeno_infection(), MOB_HUD_XENO_STATUS = new /datum/mob_hud/xeno(), MOB_HUD_XENO_HOSTILE = new /datum/mob_hud/xeno_hostile(), - MOB_HUD_FACTION_USCM = new /datum/mob_hud/faction(), + MOB_HUD_FACTION_MARINE = new /datum/mob_hud/faction(), MOB_HUD_FACTION_OBSERVER = new /datum/mob_hud/faction/observer(), MOB_HUD_FACTION_UPP = new /datum/mob_hud/faction/upp(), MOB_HUD_FACTION_WY = new /datum/mob_hud/faction/wy(), diff --git a/code/datums/supply_packs/ammo.dm b/code/datums/supply_packs/ammo.dm index 326ca075a343..0929f24f7c95 100644 --- a/code/datums/supply_packs/ammo.dm +++ b/code/datums/supply_packs/ammo.dm @@ -346,15 +346,15 @@ //------------------------Sentries Ammo---------------- -/datum/supply_packs/ammo_sentry - name = "UA 571-C sentry ammunition (x2)" +/datum/supply_packs/ammo_sentry_shotgun + name = "UA 12-G sentry shotgun ammunition (x2)" contains = list( - /obj/item/ammo_magazine/sentry, - /obj/item/ammo_magazine/sentry, + /obj/item/ammo_magazine/sentry/shotgun, + /obj/item/ammo_magazine/sentry/shotgun, ) cost = 40 containertype = /obj/structure/closet/crate/ammo - containername = "\improper sentry ammo crate" + containername = "\improper sentry shotgun ammo crate" group = "Ammo" /datum/supply_packs/ammo_sentry_flamer @@ -368,15 +368,37 @@ containername = "\improper sentry flamer ammo crate" group = "Ammo" -/datum/supply_packs/ammo_sentry_shotgun - name = "UA 12-G sentry shotgun ammunition (x2)" +/datum/supply_packs/ammo_mini_sentry_flamer + name = "UA 45-F mini sentry flamer ammunition (x2)" contains = list( - /obj/item/ammo_magazine/sentry/shotgun, - /obj/item/ammo_magazine/sentry/shotgun, + /obj/item/ammo_magazine/sentry_flamer/mini, + /obj/item/ammo_magazine/sentry_flamer/mini, ) cost = 40 containertype = /obj/structure/closet/crate/ammo - containername = "\improper sentry shotgun ammo crate" + containername = "\improper mini sentry flamer ammo crate" + group = "Ammo" + +/datum/supply_packs/ammo_glob_sentry_flamer + name = "UA 60-FP sentry plasma incinerator tank (x2)" + contains = list( + /obj/item/ammo_magazine/sentry_flamer/glob, + /obj/item/ammo_magazine/sentry_flamer/glob, + ) + cost = 40 + containertype = /obj/structure/closet/crate/ammo + containername = "\improper sentry plasma incinerator ammo crate" + group = "Ammo" + +/datum/supply_packs/ammo_sentry + name = "UA 571-C sentry ammunition (x2)" + contains = list( + /obj/item/ammo_magazine/sentry, + /obj/item/ammo_magazine/sentry, + ) + cost = 40 + containertype = /obj/structure/closet/crate/ammo + containername = "\improper sentry ammo crate" group = "Ammo" //------------------------M240 flamer tanks---------------- @@ -419,6 +441,28 @@ containertype = /obj/structure/closet/crate/ammo/alt/flame group = "Ammo" +//------------------------Mounted guns ammo---------------- +/datum/supply_packs/ammo_m2c + name = "M2C ammunition crate (x2)" + contains = list( + /obj/item/ammo_magazine/m2c, + /obj/item/ammo_magazine/m2c, + ) + cost = 25 + containertype = /obj/structure/closet/crate/ammo + containername = "\improper m2c ammunition crate" + group = "Ammo" + +/datum/supply_packs/ammo_m56d + name = "M56D drum magazine crate (x1)" + contains = list( + /obj/item/ammo_magazine/m56d, + ) + cost = 25 + containertype = /obj/structure/closet/crate/ammo + containername = "\improper m56d drum magazine crate" + group = "Ammo" + //This crate has a little bit of everything, mostly okay stuff, but it does have some really unique picks. /datum/supply_packs/ammo_surplus name = "Surplus ammo crate (various USCM magazines x10)" diff --git a/code/game/area/almayer.dm b/code/game/area/almayer.dm index 14bc1891ea1f..c3898283cbbb 100644 --- a/code/game/area/almayer.dm +++ b/code/game/area/almayer.dm @@ -241,8 +241,11 @@ /area/almayer/shipboard/brig/armory name = "\improper Brig Armory" -/area/almayer/shipboard/brig/main_office - name = "\improper Brig Main Office" +/area/almayer/shipboard/brig/mp_bunks + name = "\improper Brig MP Bunks" + +/area/almayer/shipboard/brig/starboard_hallway + name = "\improper Brig Starboard Hallway" /area/almayer/shipboard/brig/perma name = "\improper Brig Perma Cells" @@ -250,8 +253,11 @@ /area/almayer/shipboard/brig/cryo name = "\improper Brig Cryo Pods" -/area/almayer/shipboard/brig/surgery - name = "\improper Brig Surgery" +/area/almayer/shipboard/brig/medical + name = "\improper Brig Medical" + +/area/almayer/shipboard/brig/interrogation + name = "\improper Brig Interrogation Room" /area/almayer/shipboard/brig/general_equipment name = "\improper Brig General Equipment" @@ -262,11 +268,15 @@ /area/almayer/shipboard/brig/execution name = "\improper Brig Execution Room" +/area/almayer/shipboard/brig/execution_storage + name = "\improper Brig Execution Storage" + /area/almayer/shipboard/brig/cic_hallway name = "\improper Brig CiC Hallway" /area/almayer/shipboard/brig/dress name = "\improper CIC Dress Uniform Room" + /area/almayer/shipboard/brig/processing name = "\improper Brig Processing and Holding" @@ -278,6 +288,10 @@ name = "\improper Brig Chief MP Office" icon_state = "chiefmpoffice" +/area/almayer/shipboard/brig/warden_office + name = "\improper Brig Warden Office" + icon_state = "chiefmpoffice" + /area/almayer/shipboard/sea_office name = "\improper Lower Deck Senior Enlisted Advisor Office" icon_state = "chiefmpoffice" diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index f8c8be5c10ad..30e179949be5 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -934,7 +934,7 @@ Additional game mode variables. var/marine_pop_size = 0 var/uscm_personnel_count = 0 for(var/mob/living/carbon/human/human as anything in GLOB.alive_human_list) - if(human.faction == FACTION_USCM) + if(human.faction == FACTION_MARINE) uscm_personnel_count++ var/datum/job/job = GET_MAPPED_ROLE(human.job) marine_pop_size += GLOB.RoleAuthority.calculate_role_weight(job) diff --git a/code/game/jobs/job/civilians/other/survivors.dm b/code/game/jobs/job/civilians/other/survivors.dm index a85731aa781a..71dd5f1b96e8 100644 --- a/code/game/jobs/job/civilians/other/survivors.dm +++ b/code/game/jobs/job/civilians/other/survivors.dm @@ -85,6 +85,8 @@ if(hostile) to_chat(survivor, SPAN_HIGHDANGER("You are HOSTILE to the USCM!")) + else if(survivor.faction == FACTION_CLF) + to_chat(survivor, SPAN_HIGHDANGER("You are HOSTILE to the USCM, but NOT to other survivors!")) else to_chat(survivor, SPAN_XENOHIGHDANGER("You are NON-HOSTILE to the USCM!")) diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index f943cd696897..9e734a0152e7 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -241,10 +241,43 @@ no_panel = 1 not_weldable = 1 var/queen_pryable = TRUE + var/obj/docking_port/mobile/marine_dropship/linked_dropship + /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ex_act(severity) return +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/attackby(obj/item/item, mob/user) + if(HAS_TRAIT(item, TRAIT_TOOL_MULTITOOL)) + var/direction + switch(id) + if("starboard_door") + direction = "starboard" + if("port_door") + direction = "port" + if("aft_door") + direction = "aft" + if(!linked_dropship || !linked_dropship.door_control.door_controllers[direction]) + return ..() + var/datum/door_controller/single/control = linked_dropship.door_control.door_controllers[direction] + if (control.status != SHUTTLE_DOOR_BROKEN) + return ..() + if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) + to_chat(user, SPAN_WARNING("You don't seem to understand how to restore a remote connection to [src].")) + return + if(user.action_busy) + return + + to_chat(user, SPAN_WARNING("You begin to restore the remote connection to [src].")) + if(!do_after(user, 5 SECONDS, INTERRUPT_ALL, BUSY_ICON_BUILD)) + to_chat(user, SPAN_WARNING("You fail to restore a remote connection to [src].")) + return + unlock(TRUE) + close(FALSE) + control.status = SHUTTLE_DOOR_UNLOCKED + to_chat(user, SPAN_WARNING("You successfully restored the remote connection to [src].")) + return + ..() /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/unlock() if(is_reserved_level(z)) @@ -261,11 +294,26 @@ if(!locked) return ..() + if(xeno.action_busy) + return + to_chat(xeno, SPAN_NOTICE("You try and force the doors open")) if(do_after(xeno, 3 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) unlock(TRUE) open(1) lock(TRUE) + var/direction + switch(id) + if("starboard_door") + direction = "starboard" + if("port_door") + direction = "port" + if("aft_door") + direction = "aft" + if(linked_dropship && linked_dropship.door_control.door_controllers[direction]) + var/datum/door_controller/single/control = linked_dropship.door_control.door_controllers[direction] + control.status = SHUTTLE_DOOR_BROKEN + /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds1 name = "\improper Alamo cargo door" @@ -569,4 +617,3 @@ icon = 'icons/obj/structures/doors/2x1almayerdoor_glass.dmi' opacity = FALSE glass = TRUE - diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm index 53b8736f75f3..b3c981a0cf71 100644 --- a/code/game/machinery/fax_machine.dm +++ b/code/game/machinery/fax_machine.dm @@ -87,7 +87,7 @@ GLOBAL_LIST_EMPTY(alldepartments) else to_chat(user, SPAN_NOTICE("\The [src] jammed! It can only accept up to five papers at once.")) playsound(src, "sound/machines/terminal_insert_disc.ogg", 50, TRUE) - flick("faxsend", src) + flick("[initial(icon_state)]send", src) updateUsrDialog() return @@ -245,7 +245,7 @@ GLOBAL_LIST_EMPTY(alldepartments) else to_chat(ui.user, SPAN_NOTICE("\The [src] jammed! It can only accept up to five papers at once.")) playsound(src, "sound/machines/terminal_insert_disc.ogg", 50, TRUE) - flick("faxsend", src) + flick("[initial(icon_state)]send", src) . = TRUE if("ejectid") @@ -408,10 +408,10 @@ GLOBAL_LIST_EMPTY(alldepartments) return if(! (F.inoperable() ) ) - flick("faxreceive", F) + flick("[initial(icon_state)]receive", F) // give the sprite some time to flick - spawn(20) + spawn(30) var/obj/item/paper/P = new(F.loc,faxcontents.photo_list) P.name = "faxed message" P.info = "[faxcontents.data]" @@ -515,6 +515,85 @@ GLOBAL_LIST_EMPTY(alldepartments) target_department = "Brig" network = "USCM High Command Quantum Relay" + +///The deployed fax machine backpack +/obj/structure/machinery/faxmachine/backpack + name = "\improper Portable Press Fax Machine" + desc = "A standard issue portable fax machine for civilian reporters. Functions off of an internal battery. Cannot receive faxes while being worn. It is currently deployed. Click-drag the device towards you to pick it up." + icon_state = "fax_backpack" + needs_power = FALSE + use_power = USE_POWER_NONE + health = 150 + +///The wearable and deployable part of the fax machine backpack +/obj/item/device/fax_backpack + name = "\improper Portable Press Fax Machine" + desc = "A standard issue portable fax machine for civilian reporters. Functions off of an internal battery. Cannot receive faxes while being worn. It is currently undeployed. Activate the device inhand to deploy it." + icon = 'icons/obj/structures/machinery/library.dmi' + icon_state = "fax_backpack" + item_state = "fax_backpack" + w_class = SIZE_HUGE + flags_equip_slot = SLOT_BACK + flags_item = ITEM_OVERRIDE_NORTHFACE + +/obj/item/device/fax_backpack/attack_self(mob/user) //activate item version fax inhand to deploy + if(!ishuman(user)) + return + var/turf/deployturf = get_turf(user) + if(istype(deployturf, /turf/open)) + var/turf/open/floor = deployturf + if(!floor.allow_construction) + to_chat(user, SPAN_WARNING("You cannot deploy [src] here, find a more secure surface!")) + return FALSE + var/fail = FALSE + if(deployturf.density) + fail = TRUE + else + var/static/list/blocking_types = typecacheof(list( + /obj/structure/machinery/defenses, + /obj/structure/window, + /obj/structure/windoor_assembly, + /obj/structure/machinery/door, + )) + for(var/obj/blockingobj in deployturf.contents) + if(blockingobj.density && !(blockingobj.flags_atom & ON_BORDER)) + fail = TRUE + break + if(is_type_in_typecache(blockingobj, blocking_types)) + fail = TRUE + break + if(fail) + to_chat(user, SPAN_WARNING("You can't deploy [src] here, something is in the way.")) + return + to_chat(user, SPAN_NOTICE("You begin to deploy [src]...")) + if(do_after(user, 4.5 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + to_chat(user, SPAN_NOTICE("You deploy [src].")) + var/obj/structure/machinery/faxmachine/backpack/deployedfax = new(deployturf) + transfer_label_component(deployedfax) + playsound(src.loc, 'sound/machines/print.ogg', 40, 1) + qdel(src) + return + return ..() + +/obj/structure/machinery/faxmachine/backpack/MouseDrop(over_object, src_location, over_location) //Drag the deployed fax onto you to pick it up. + if(!ishuman(usr)) + return + var/mob/living/carbon/human/user = usr + if(over_object == user && in_range(src, user)) + if(original_fax || scan) + to_chat(user, SPAN_NOTICE("There is still something in [src]. Remove it before you pick it up.")) + return + to_chat(user, SPAN_NOTICE("You begin to pick up [src]...")) + if(do_after(user, 4.5 SECONDS, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) + to_chat(user, SPAN_NOTICE("You pick up [src].")) + var/obj/item/device/fax_backpack/faxbag = new(loc) + transfer_label_component(faxbag) + user.put_in_hands(faxbag) + qdel(src) + return + return ..() + /datum/fax var/data var/list/photo_list diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index e87bb56da489..d86a5c0e30d0 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -8,14 +8,23 @@ use_power = USE_POWER_IDLE idle_power_usage = 50 active_power_usage = 50 + can_buckle = TRUE + /// the borg inside var/mob/living/occupant = null - var/max_internal_charge = 15000 // Two charged borgs in a row with default cell - var/current_internal_charge = 15000 // Starts charged, to prevent power surges on round start - var/charging_cap_active = 25000 // Active Cap - When cyborg is inside - var/charging_cap_passive = 2500 // Passive Cap - Recharging internal capacitor when no cyborg is inside - var/icon_update_tick = 0 // Used to update icon only once every 10 ticks + /// Two charged borgs in a row with default cell + var/max_internal_charge = 15000 + /// Starts charged, to prevent power surges on round start + var/current_internal_charge = 15000 + /// Active Cap - When cyborg is inside + var/charging_cap_active = 25000 + /// Passive Cap - Recharging internal capacitor when no cyborg is inside + var/charging_cap_passive = 2500 + /// Used to update icon only once every 10 ticks + var/icon_update_tick = 0 + /// implants to not remove var/known_implants = list(/obj/item/implant/chem, /obj/item/implant/death_alarm, /obj/item/implant/loyalty, /obj/item/implant/tracking, /obj/item/implant/neurostim) - can_buckle = TRUE + ///stun time upon exiting, if at all + var/exit_stun = 2 /obj/structure/machinery/recharge_station/Initialize(mapload, ...) @@ -183,18 +192,23 @@ /obj/structure/machinery/recharge_station/proc/go_out() - if(!( src.occupant )) + if(!occupant) return - //for(var/obj/O in src) - // O.forceMove(src.loc) - if (src.occupant.client) - src.occupant.client.eye = src.occupant.client.mob - src.occupant.client.perspective = MOB_PERSPECTIVE - src.occupant.forceMove(loc) - src.occupant = null + var/mob/living/synth = occupant + + if(synth.client) + synth.client.eye = synth.client.mob + synth.client.perspective = MOB_PERSPECTIVE + + synth.forceMove(loc) + if(exit_stun) + synth.Stun(exit_stun) //Action delay when going out of a closet + if(synth.mobility_flags & MOBILITY_MOVE) + synth.visible_message(SPAN_WARNING("[synth] suddenly gets out of [src]!"), SPAN_WARNING("You get out of [src] and get your bearings!")) + + occupant = null update_icon() update_use_power(USE_POWER_IDLE) - return /obj/structure/machinery/recharge_station/verb/move_eject() set category = "Object" diff --git a/code/game/machinery/telecomms/presets.dm b/code/game/machinery/telecomms/presets.dm index c97a28932262..7a9f5babbd7a 100644 --- a/code/game/machinery/telecomms/presets.dm +++ b/code/game/machinery/telecomms/presets.dm @@ -267,7 +267,7 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) to_chat(user, SPAN_WARNING("\The [src.name] needs repairs to have frequencies added to its software!")) return var/choice = tgui_input_list(user, "What do you wish to do?", "TC-3T comms tower", list("Wipe communication frequencies", "Add your faction's frequencies")) - if(choice == "Wipe frequencies") + if(choice == "Wipe communication frequencies") freq_listening = null to_chat(user, SPAN_NOTICE("You wipe the preexisting frequencies from \the [src].")) return @@ -277,12 +277,16 @@ GLOBAL_LIST_EMPTY(all_static_telecomms_towers) switch(user.faction) if(FACTION_SURVIVOR) freq_listening |= COLONY_FREQ + if(FACTION_MARINE in user.faction_group) //FORECON survivors + freq_listening |= SOF_FREQ if(FACTION_CLF) freq_listening |= CLF_FREQS if(FACTION_UPP) freq_listening |= UPP_FREQS if(FACTION_WY,FACTION_PMC) freq_listening |= PMC_FREQS + if(FACTION_TWE) + freq_listening |= RMC_FREQ if(FACTION_YAUTJA) to_chat(user, SPAN_WARNING("You decide to leave the human machine alone.")) return diff --git a/code/game/machinery/vending/vendor_types/crew/combat_correspondent.dm b/code/game/machinery/vending/vendor_types/crew/combat_correspondent.dm new file mode 100644 index 000000000000..b0894ca2a5a2 --- /dev/null +++ b/code/game/machinery/vending/vendor_types/crew/combat_correspondent.dm @@ -0,0 +1,51 @@ +//------------ CC CLOTHING VENDOR--------------- + +GLOBAL_LIST_INIT(cm_vending_clothing_combat_correspondent, list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Essential Reporter's Set", 0, /obj/effect/essentials_set/cc, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + list("Portable Press Fax Machine", 0, /obj/item/device/fax_backpack, CIVILIAN_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + list("Press Broadcasting Camera", 0, /obj/item/device/camera/broadcasting, CIVILIAN_CAN_BUY_UTILITY, VENDOR_ITEM_RECOMMENDED), + list("Leather Satchel", 0, /obj/item/storage/backpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + + list("UNIFORM (CHOOSE 1)", 0, null, null, null), + list("Black Uniform", 0, /obj/item/clothing/under/marine/reporter/black, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Orange Uniform", 0, /obj/item/clothing/under/marine/reporter/orange, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Red Uniform", 0, /obj/item/clothing/under/marine/reporter/red, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("Combat Correspondent's Armor", 0, /obj/item/clothing/suit/storage/marine/light/reporter, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("Blue Vest", 0, /obj/item/clothing/suit/storage/jacket/marine/reporter/blue, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Black Vest", 0, /obj/item/clothing/suit/storage/hazardvest/black, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Black Coat", 0, /obj/item/clothing/suit/storage/jacket/marine/reporter/black, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Green Coat", 0, /obj/item/clothing/suit/storage/jacket/marine/reporter/green, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Combat Correspondent's Helmet", 0, /obj/item/clothing/head/helmet/marine/reporter, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Combat Correspondent's Cap", 0, /obj/item/clothing/head/cmcap/reporter, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Fedora", 0, /obj/item/clothing/head/fedora, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + + list("REFILLS", 0, null, null, null), + list("Camera", 10, /obj/item/device/camera, null, VENDOR_ITEM_REGULAR), + list("Camera Film", 5, /obj/item/device/camera_film, null, VENDOR_ITEM_REGULAR), + list("Toner", 5, /obj/item/device/toner, null, VENDOR_ITEM_REGULAR), + list("Regulation Tapes", 15, /obj/item/storage/box/tapes, null, VENDOR_ITEM_REGULAR), + list("Paper Bin", 10, /obj/item/paper_bin/uscm, null, VENDOR_ITEM_REGULAR), + )) + +/obj/structure/machinery/cm_vending/clothing/combat_correspondent + name = "\improper ColMarTech Combat Correspondent Equipment Rack" + desc = "An automated rack hooked up to a colossal storage of Reporter standard-issue equipment." + req_access = list(ACCESS_PRESS) + vendor_role = list(JOB_COMBAT_REPORTER) + +/obj/structure/machinery/cm_vending/clothing/combat_correspondent/get_listed_products(mob/user) + return GLOB.cm_vending_clothing_combat_correspondent + +/obj/effect/essentials_set/cc + spawned_gear_list = list( + /obj/item/device/flashlight, + /obj/item/tool/pen, + /obj/item/device/binoculars, + /obj/item/notepad, + /obj/item/device/taperecorder, + ) diff --git a/code/game/machinery/vending/vendor_types/crew/engineering.dm b/code/game/machinery/vending/vendor_types/crew/engineering.dm new file mode 100644 index 000000000000..9d5a809e52f7 --- /dev/null +++ b/code/game/machinery/vending/vendor_types/crew/engineering.dm @@ -0,0 +1,74 @@ +//------------ MT CLOTHING VENDOR--------------- + +GLOBAL_LIST_INIT(cm_vending_clothing_maintenance_technician, list( + list("MAINTENANCE SET (MANDATORY)", 0, null, null, null), + list("Essential Maintenance Set", 0, /obj/effect/essentials_set/maintenance, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Insulated Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/almayer/mt, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Map", 0, /obj/item/map/current_map, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Beret, Engineering", 0, /obj/item/clothing/head/beret/eng, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("White Hardhat", 0, /obj/item/clothing/head/hardhat/white, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Orange Hardhat", 0, /obj/item/clothing/head/hardhat/orange, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Blue Hardhat", 0, /obj/item/clothing/head/hardhat/dblue, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Welding Helmet", 0, /obj/item/clothing/head/welding, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + + list("SUIT (CHOOSE 1)", 0, null, null, null), + list("Black Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/black, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Blue Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/blue, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Orange Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("Yellow Hazard Vest", 0, /obj/item/clothing/suit/storage/hazardvest/yellow, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + + list("BACKPACK (CHOOSE 1)", 0, null, null, null), + list("Technician Backpack", 0, /obj/item/storage/backpack/marine/tech, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Satchel", 0, /obj/item/storage/backpack/marine/satchel/tech, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Welderpack", 0, /obj/item/storage/backpack/marine/engineerpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + list("Technician Welder-Satchel", 0, /obj/item/storage/backpack/marine/engineerpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), + list("Technician Welder Chestrig", 0, /obj/item/storage/backpack/marine/engineerpack/welder_chestrig, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 Toolbelt Rig (Full)", 0, /obj/item/storage/belt/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Electronics Pouch (Full)", 0, /obj/item/storage/pouch/electronics/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Rebreather", 0, /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + + list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + )) + +/obj/structure/machinery/cm_vending/clothing/maintenance_technician + name = "\improper ColMarTech Maintenance Technician Equipment Rack" + desc = "An automated rack hooked up to a colossal storage of Maintenance Technician standard-issue equipment." + req_access = list(ACCESS_MARINE_ENGINEERING) + vendor_role = list(JOB_MAINT_TECH) + +/obj/structure/machinery/cm_vending/clothing/maintenance_technician/get_listed_products(mob/user) + return GLOB.cm_vending_clothing_maintenance_technician + +/obj/effect/essentials_set/maintenance + spawned_gear_list = list( + /obj/item/device/lightreplacer, + /obj/item/device/demo_scanner, + /obj/item/storage/bag/trash, + /obj/item/storage/toolbox/mechanical, + /obj/item/device/flashlight, + ) diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm index 4053b9294c13..95864404f4e8 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_engineer.dm @@ -51,7 +51,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list( list("ARMORS", 0, null, null, null), list("M3 B12 Pattern Marine Armor", 24, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 16, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), list("RESTRICTED FIREARMS", 0, null, null, null), list("VP78 Pistol", 8, /obj/item/storage/box/guncase/vp78, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm index 845d169a701a..0039d5b03250 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_leader.dm @@ -16,7 +16,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_leader, list( list("Basic Engineering Supplies", 0, /obj/item/storage/box/kit/engineering_supply_kit, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), list("ARMORS", 0, null, null, null), - list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 16, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), list("CLOTHING ITEMS", 0, null, null, null), list("Machete Scabbard (Full)", 4, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm index 7d16d15af6fd..b29b528ded13 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_medic.dm @@ -72,8 +72,8 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list( list("VP78 Magazine", 3, /obj/item/ammo_magazine/pistol/vp78, null, VENDOR_ITEM_REGULAR), list("ARMORS", 0, null, null, null), - list("M3 B12 Pattern Marine Armor", 28, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 28, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), + list("M3 B12 Pattern Marine Armor", 24, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 16, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), list("RESTRICTED FIREARMS", 0, null, null, null), list("VP78 Pistol", 8, /obj/item/storage/box/guncase/vp78, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm index b132d8d4f13d..0b980fc31960 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_rifleman.dm @@ -82,13 +82,13 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list( list("ARMORS", 0, null, null, null), list("M3 B12 Pattern Marine Armor", 30, /obj/item/clothing/suit/storage/marine/medium/leader, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 20, /obj/item/clothing/suit/storage/marine/medium/rto, null, VENDOR_ITEM_REGULAR), list("CLOTHING ITEMS", 0, null, null, null), list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), list("Brown Webbing Vest", 15, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_REGULAR), list("Black Webbing Vest", 15, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_REGULAR), - list("Drop Pouch", 15, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), list("Shoulder Holster", 15, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), list("Machete Scabbard (Full)", 15, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), list("Machete Pouch (Full)", 15, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm index a7afb80ef080..bf3b952edcf5 100644 --- a/code/game/objects/effects/landmarks/landmarks.dm +++ b/code/game/objects/effects/landmarks/landmarks.dm @@ -90,9 +90,11 @@ return GLOB.nightmare_landmarks[insert_tag] = get_turf(src) /obj/effect/landmark/nightmare/Destroy() - if(insert_tag && autoremove \ - && GLOB.nightmare_landmarks[insert_tag] == get_turf(src)) - GLOB.nightmare_landmarks.Remove(insert_tag) + if(insert_tag) + var/turf/turf = get_turf(src) + if(autoremove && GLOB.nightmare_landmarks[insert_tag] == turf) + GLOB.nightmare_landmarks.Remove(insert_tag) + GLOB.nightmare_landmark_tags_removed += insert_tag return ..() /obj/effect/landmark/ert_spawns/distress diff --git a/code/game/objects/effects/landmarks/survivor_spawner.dm b/code/game/objects/effects/landmarks/survivor_spawner.dm index 2250ebf3edf2..a22198d3d703 100644 --- a/code/game/objects/effects/landmarks/survivor_spawner.dm +++ b/code/game/objects/effects/landmarks/survivor_spawner.dm @@ -144,6 +144,47 @@ spawn_priority = SPAWN_PRIORITY_VERY_HIGH +/obj/effect/landmark/survivor_spawner/shivas_panic_room_cl + equipment = /datum/equipment_preset/survivor/wy/asstmanager + synth_equipment = /datum/equipment_preset/synth/survivor/wy/corporate_synth + intro_text = list("

You are the last alive Senior Administrator on the Colony!

",\ + "You are aware of the xenomorph threat.",\ + "Your primary objective is to survive the outbreak.") + story_text = "You are the Assistant Operations Manager stationed on 'Ifrit' by Weyland-Yutani. This whole outbreak has been a giant mess, you and all other Company personnel ran to the Operations Panic Room, until you heard shooting outside and closed the shutters. You are running low on food, water and ammunition for the weapons you one-day said were 'useless' and a waste of Company dollars. You remember that Administrator Stahl sent out a distress beacon to any ship in range, hoping to get picked up by the Company, he ran to the Spaceport. You have not seen him since. In their attempts at trying to breach in, the so called 'xenomorphs' have tried attacking the shutters, but to no avail. They will soon try again. You must survive and find a way to contact Weyland-Yutani." + + spawn_priority = SPAWN_PRIORITY_VERY_HIGH + +/obj/effect/landmark/survivor_spawner/shivas_panic_room_doc + equipment = /datum/equipment_preset/survivor/doctor + synth_equipment = /datum/equipment_preset/synth/survivor/emt_synth + intro_text = list("

You are a Medical Doctor on the Colony!

",\ + "You are aware of the xenomorph threat.",\ + "Your primary objective is to survive the outbreak.") + story_text = "You are a Doctor working on 'Ifrit' for Weyland-Yutani. This whole outbreak has been a giant mess, you and all other Company personnel ran to the Operations Panic Room, until you heard shooting outside and closed the shutters. You are running low on food, water and ammunition for the weapons. You remember that the xenomorphs have a sort of implanter which latches on to your face and then... something bursts out of your chest, through the rib cage. You had plenty of those cases at the Medical Bay. In their attempts at trying to breach in, the so called 'xenomorphs' have tried attacking the shutters, but to no avail. They will soon try again. You must survive and find a way to contact Weyland-Yutani." + + spawn_priority = SPAWN_PRIORITY_HIGH + +/obj/effect/landmark/survivor_spawner/shivas_panic_room_sci + equipment = /datum/equipment_preset/survivor/scientist + synth_equipment = /datum/equipment_preset/synth/survivor/scientist_synth + intro_text = list("

You are a Weyland-Yutani Scientist on the Colony!

",\ + "You are aware of the xenomorph threat.",\ + "Your primary objective is to survive the outbreak.") + story_text = "You are a Scientist working on 'Ifrit' for Weyland-Yutani. This whole outbreak has been a giant mess, you and all other Company personnel ran to the Operations Panic Room, until you heard shooting outside and closed the shutters. You are running low on food, water and ammunition for the weapons. You remember that the XX-121 species, codenamed that by Research Director Clarke, have a variety of different species, what you can assume a 'leader' of some sort and that their acid is deadly should it come in contact with you or the shutters. You ran far from the labs and have not seen some your coworkers since. In their attempts at trying to breach in, these so called 'xenomorphs' have tried attacking the shutters, but to no avail. They will soon try again. You must survive and find a way to contact Weyland-Yutani." + + spawn_priority = SPAWN_PRIORITY_HIGH + +/obj/effect/landmark/survivor_spawner/shivas_panic_room_civ + equipment = /datum/equipment_preset/survivor/civilian + synth_equipment = /datum/equipment_preset/synth/survivor/chef_synth + intro_text = list("

You are a worker on the Colony!

",\ + "You are aware of the xenomorph threat.",\ + "Your primary objective is to survive the outbreak.") + story_text = "You are a civilian working on 'Ifrit' for Weyland-Yutani. This whole outbreak has been a giant mess, you and all other Company personnel ran to the Operations Panic Room, until you heard shooting outside and closed the shutters. You are running low on food, water and ammunition for the weapons. You remember hearing the alarms blaring and decided to run with a couple others to the Panic Room, hoping to be safe from the threat until rescue arrives. Now you wait along with others for their second attack on the Panic Room. In their first attempt at trying to breach in, the so called 'xenomorphs' have tried attacking the shutters, but to no avail. They will soon try again. You must survive and find a way to contact Weyland-Yutani." + + spawn_priority = SPAWN_PRIORITY_MEDIUM + + //Military Survivors// /obj/effect/landmark/survivor_spawner/lv522_forecon_tech diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 58e86998f39a..2af343c8de26 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -238,7 +238,7 @@ desc = "A red USCM issued flare. There are instructions on the side, it reads 'pull cord, make light'." w_class = SIZE_SMALL light_power = 2 - light_range = 7 + light_range = 5 icon_state = "flare" item_state = "flare" actions = list() //just pull it manually, neckbeard. diff --git a/code/game/objects/items/devices/helmet_visors.dm b/code/game/objects/items/devices/helmet_visors.dm index 05d75a9fefd6..4d1b38491791 100644 --- a/code/game/objects/items/devices/helmet_visors.dm +++ b/code/game/objects/items/devices/helmet_visors.dm @@ -6,7 +6,7 @@ w_class = SIZE_TINY ///The type of HUD our visor shows - var/hud_type = MOB_HUD_FACTION_USCM + var/hud_type = MOB_HUD_FACTION_MARINE ///The sound when toggling on the visor var/toggle_on_sound = 'sound/handling/hud_on.ogg' @@ -302,7 +302,7 @@ /obj/item/device/helmet_visor/night_vision/marine_raider name = "advanced night vision optic" desc = "An insertable visor HUD into a standard USCM helmet. This type gives a form of night vision and is standard issue in special forces units." - hud_type = list(MOB_HUD_FACTION_USCM, MOB_HUD_MEDICAL_ADVANCED) + hud_type = list(MOB_HUD_FACTION_MARINE, MOB_HUD_MEDICAL_ADVANCED) helmet_overlay = "nvg_sight_right_raider" power_use = 0 visor_glows = FALSE diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 7b987752011c..00f0ad16220c 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -35,7 +35,7 @@ var/headset_hud_on = FALSE var/locate_setting = TRACKER_SL var/misc_tracking = FALSE - var/hud_type = MOB_HUD_FACTION_USCM + var/hud_type = MOB_HUD_FACTION_MARINE var/default_freq ///The type of minimap this headset is added to @@ -233,7 +233,7 @@ ), PROC_REF(turn_on)) wearer = user RegisterSignal(user, COMSIG_MOB_STAT_SET_ALIVE, PROC_REF(update_minimap_icon)) - RegisterSignal(user, COMSIG_MOB_LOGIN, PROC_REF(add_hud_tracker)) + RegisterSignal(user, COMSIG_MOB_LOGGED_IN, PROC_REF(add_hud_tracker)) RegisterSignal(user, COMSIG_MOB_DEATH, PROC_REF(update_minimap_icon)) RegisterSignal(user, COMSIG_HUMAN_SET_UNDEFIBBABLE, PROC_REF(update_minimap_icon)) if(headset_hud_on) @@ -250,7 +250,7 @@ UnregisterSignal(user, list( COMSIG_LIVING_REJUVENATED, COMSIG_HUMAN_REVIVED, - COMSIG_MOB_LOGIN, + COMSIG_MOB_LOGGED_IN, COMSIG_MOB_DEATH, COMSIG_HUMAN_SET_UNDEFIBBABLE, COMSIG_MOB_STAT_SET_ALIVE @@ -341,7 +341,7 @@ var/z_level = turf_gotten.z if(wearer.assigned_equipment_preset.always_minimap_visible == TRUE || wearer.stat == DEAD) //We show to all marines if we have this flag, separated by faction - if(hud_type == MOB_HUD_FACTION_USCM) + if(hud_type == MOB_HUD_FACTION_MARINE) marker_flags = MINIMAP_FLAG_USCM else if(hud_type == MOB_HUD_FACTION_UPP) marker_flags = MINIMAP_FLAG_UPP @@ -1013,7 +1013,7 @@ icon_state = "cmb_headset" initial_keys = list(/obj/item/device/encryptionkey/cmb) has_hud = TRUE - hud_type = MOB_HUD_FACTION_USCM + hud_type = MOB_HUD_FACTION_MARINE /obj/item/device/radio/headset/distress/CMB/limited name = "\improper Damaged CMB Earpiece" @@ -1058,7 +1058,7 @@ initial_keys = list(/obj/item/device/encryptionkey/soc/forecon) volume = RADIO_VOLUME_QUIET has_hud = TRUE - hud_type = MOB_HUD_FACTION_USCM + hud_type = MOB_HUD_FACTION_MARINE /obj/item/device/radio/headset/almayer/mcom/vc name = "marine vehicle crew radio headset" diff --git a/code/game/objects/items/toys/trading_cards.dm b/code/game/objects/items/toys/trading_cards.dm index 23a35abec45e..9fb83cd1e5e1 100644 --- a/code/game/objects/items/toys/trading_cards.dm +++ b/code/game/objects/items/toys/trading_cards.dm @@ -14,11 +14,11 @@ var/front_description = "A red trading card with a picture of the United Americas flag emblazoned on it. It is number one out of the five red cards." var/back_icon_state = "trading_red" var/front_icon_state = "trading_red_one" - var/picture_descriptions = list("5" = list("red" = "a Holy Order of the HEFA cultist", "green" = "General Delyla S. Vaughn (the Assistant Commandant of the United States Colonial Marines)", "blue" = "the Weyland Yutani logo"), - "4" = list("red" = "a UPPA officer", "green" = "General Diego Dellamarggio (the Commandant of the United States Colonial Marines)", "blue" = "the Independent Core System Colonies logo"), + var/picture_descriptions = list("5" = list("red" = "a fanatical colonial seditionist", "green" = "Almirante Joelle De La Cruz (the United Americas Secretary of Defense)", "blue" = "the United Americas flag"), + "4" = list("red" = "a UPPA soldier", "green" = "Marechal-do-ar Enzo Gabriel Lurdes (the Chief of Naval Operations of the Latin American Colonial Navy)", "blue" = "the Union of Progressive Peoples flag"), "3" = list("red" = "a UPPA minigunner", "green" = "Generale d'armee Felix Couture (the Commandant of the Canadian Colonial Armed Forces)", "blue" = "the Three World Empire flag"), - "2" = list("red" = "a UPPA soldier", "green" = "Marechal-do-ar Enzo Gabriel Lurdes (the Chief of Naval Operations of the Latin American Colonial Navy)", "blue" = "the Union of Progressive Peoples flag"), - "1" = list("red" = "a fanatical colonial seditionist", "green" = "Almirante Joelle De La Cruz (the United Americas Secretary of Defense)", "blue" = "the United Americas flag",) + "2" = list("red" = "a UPPA officer", "green" = "General Diego Dellamarggio (the Commandant of the United States Colonial Marines)", "blue" = "the Weyland Yutani logo"), + "1" = list("red" = "a Holy Order of the HEFA cultist", "green" = "General Delyla S. Vaughn (the Assistant Commandant of the United States Colonial Marines)", "blue" = "the Independent Core System Colonies logo",) ) /obj/item/toy/trading_card/Initialize() diff --git a/code/game/objects/structures/barricade/barricade.dm b/code/game/objects/structures/barricade/barricade.dm index 37975d4a8960..313067ca6a56 100644 --- a/code/game/objects/structures/barricade/barricade.dm +++ b/code/game/objects/structures/barricade/barricade.dm @@ -366,9 +366,8 @@ if(50 to 75) damage_state = BARRICADE_DMG_SLIGHT if(75 to INFINITY) damage_state = BARRICADE_DMG_NONE -/obj/structure/barricade/proc/weld_cade(obj/item/tool/weldingtool/welder, mob/user) - if(!metallic) - user.visible_message(SPAN_WARNING("You can't weld \the [src]!")) +/obj/structure/barricade/proc/try_weld_cade(obj/item/tool/weldingtool/welder, mob/user, repeat = TRUE, skip_check = FALSE) + if(!skip_check && !can_weld(welder, user)) return FALSE if(!(welder.remove_fuel(2, user))) @@ -387,6 +386,16 @@ user.count_niche_stat(STATISTICS_NICHE_REPAIR_CADES) update_health(-200) playsound(src.loc, 'sound/items/Welder2.ogg', 25, TRUE) + + var/current_tool = user.get_active_hand() + if(current_tool != welder) + return TRUE // Swapped hands or tool + if(repeat && can_weld(welder, user, silent = TRUE)) + // Assumption: The implementation of can_weld will return false if fully repaired + if(!try_weld_cade(welder, user, repeat = TRUE, skip_check = TRUE)) + // If this returned false, then we were interrupted or ran out of fuel, so stop looping + return TRUE + return TRUE /obj/structure/barricade/verb/count_rotate() @@ -476,20 +485,28 @@ nailgun.load_into_chamber() return TRUE -// This proc is to check a bunch of condition to cancel the action that a welder user is trying to do while giving -// a explanation on why... +/obj/structure/barricade/proc/can_weld(obj/item/item, mob/user, silent) + if(user.action_busy) + return FALSE + + if(!metallic) + if(!silent) + user.visible_message(SPAN_WARNING("You can't weld \the [src]!")) + return FALSE -/obj/structure/barricade/proc/attackby_welder(obj/item/item, mob/user) if(!HAS_TRAIT(item, TRAIT_TOOL_BLOWTORCH)) - to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) + if(!silent) + to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) return FALSE if(health == maxhealth) - to_chat(user, SPAN_WARNING("[src] doesn't need repairs.")) + if(!silent) + to_chat(user, SPAN_WARNING("[src] doesn't need repairs.")) return FALSE if(!(isnull(damage_state)) && !(isnull(welder_lower_damage_limit)) && damage_state >= welder_lower_damage_limit) - to_chat(user, SPAN_WARNING("[src] has sustained too much structural damage to be repaired.")) + if(!silent) + to_chat(user, SPAN_WARNING("[src] has sustained too much structural damage to be repaired.")) return FALSE return TRUE diff --git a/code/game/objects/structures/barricade/deployable.dm b/code/game/objects/structures/barricade/deployable.dm index 3de5ba1928a2..ca35f82bdde5 100644 --- a/code/game/objects/structures/barricade/deployable.dm +++ b/code/game/objects/structures/barricade/deployable.dm @@ -24,34 +24,28 @@ . += SPAN_INFO("Drag its sprite onto yourself to undeploy.") /obj/structure/barricade/deployable/attackby(obj/item/item, mob/user) - if(iswelder(item)) - if(!attackby_welder(item, user)) - return FALSE - - - weld_cade(item, user) + try_weld_cade(item, user) return - else if(HAS_TRAIT(item, TRAIT_TOOL_CROWBAR)) + if(HAS_TRAIT(item, TRAIT_TOOL_CROWBAR)) if(user.action_busy) return if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) to_chat(user, SPAN_WARNING("You do not know how to collapse [src] using a crowbar...")) return + user.visible_message(SPAN_NOTICE("[user] starts collapsing [src]."), \ + SPAN_NOTICE("You begin collapsing [src]...")) + playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) + if(do_after(user, 1.5 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY, src)) + collapse(usr) else - user.visible_message(SPAN_NOTICE("[user] starts collapsing [src]."), \ - SPAN_NOTICE("You begin collapsing [src]...")) - playsound(loc, 'sound/items/Crowbar.ogg', 25, 1) - if(do_after(user, 1.5 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY, src)) - collapse(usr) - else - to_chat(user, SPAN_WARNING("You stop collapsing [src].")) + to_chat(user, SPAN_WARNING("You stop collapsing [src].")) if(try_nailgun_usage(item, user)) return - . = ..() + return ..() /obj/structure/barricade/deployable/MouseDrop(obj/over_object as obj) if(!ishuman(usr)) @@ -196,7 +190,7 @@ to_chat(user, SPAN_INFO("You transfer [to_transfer] between the stacks.")) return - else if(iswelder(item)) + if(iswelder(item)) if(!HAS_TRAIT(item, TRAIT_TOOL_BLOWTORCH)) to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) return @@ -242,7 +236,7 @@ playsound(loc, 'sound/items/Welder2.ogg', 25, TRUE) return - . = ..() + return ..() /obj/item/stack/folding_barricade/attack_hand(mob/user) var/mob/living/carbon/human/human = user diff --git a/code/game/objects/structures/barricade/metal.dm b/code/game/objects/structures/barricade/metal.dm index 59f4ad314878..3e79af2e21e1 100644 --- a/code/game/objects/structures/barricade/metal.dm +++ b/code/game/objects/structures/barricade/metal.dm @@ -44,18 +44,20 @@ if(BARRICADE_UPGRADE_ANTIFF) . += SPAN_NOTICE("The cade is protected by a composite upgrade.") -/obj/structure/barricade/metal/attackby(obj/item/item, mob/user) - if(iswelder(item)) - if(!attackby_welder(item, user)) - return FALSE +/obj/structure/barricade/metal/can_weld(obj/item/item, mob/user, silent) + if(!..()) + return FALSE - - if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) + if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) + if(!silent) to_chat(user, SPAN_WARNING("You're not trained to repair [src]...")) - return FALSE + return FALSE - weld_cade(item, user) + return TRUE +/obj/structure/barricade/metal/attackby(obj/item/item, mob/user) + if(iswelder(item)) + try_weld_cade(item, user) return if(try_nailgun_usage(item, user)) @@ -198,11 +200,13 @@ to_chat(user, SPAN_WARNING("You are not trained to assemble [src]...")) return playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, 1) - if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) return + if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) + return user.visible_message(SPAN_NOTICE("[user] set [src]'s protection panel back."), SPAN_NOTICE("You set [src]'s protection panel back.")) build_state = BARRICADE_BSTATE_SECURED return + if(HAS_TRAIT(item, TRAIT_TOOL_WRENCH)) if(user.action_busy) return @@ -210,13 +214,15 @@ to_chat(user, SPAN_WARNING("You are not trained to disassemble [src]...")) return playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) - if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) return + if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) + return user.visible_message(SPAN_NOTICE("[user] loosens [src]'s anchor bolts."), SPAN_NOTICE("You loosen [src]'s anchor bolts.")) anchored = FALSE build_state = BARRICADE_BSTATE_MOVABLE update_icon() //unanchored changes layer return + if(BARRICADE_BSTATE_MOVABLE) //Anchor bolts loosened step. Apply crowbar to unseat the panel and take apart the whole thing. Apply wrench to resecure anchor bolts if(HAS_TRAIT(item, TRAIT_TOOL_WRENCH)) if(user.action_busy) @@ -233,13 +239,15 @@ to_chat(user, SPAN_WARNING("[src] must be secured on a proper surface!")) return playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) - if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) return + if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) + return user.visible_message(SPAN_NOTICE("[user] secures [src]'s anchor bolts."), SPAN_NOTICE("You secure [src]'s anchor bolts.")) build_state = BARRICADE_BSTATE_UNSECURED anchored = TRUE update_icon() //unanchored changes layer return + if(HAS_TRAIT(item, TRAIT_TOOL_CROWBAR)) if(user.action_busy) return @@ -256,7 +264,7 @@ deconstruct(TRUE) //Note : Handles deconstruction too ! return - . = ..() + return ..() /obj/structure/barricade/metal/wired/New() maxhealth += 50 @@ -265,7 +273,7 @@ is_wired = TRUE climbable = FALSE update_icon() - . = ..() + return ..() /obj/structure/barricade/metal/wired/initialize_pass_flags(datum/pass_flags_container/PF) ..() diff --git a/code/game/objects/structures/barricade/misc.dm b/code/game/objects/structures/barricade/misc.dm index 5e0958f974b1..a0465de8f070 100644 --- a/code/game/objects/structures/barricade/misc.dm +++ b/code/game/objects/structures/barricade/misc.dm @@ -44,8 +44,8 @@ user.visible_message(SPAN_NOTICE("\The [user] removes \the [src].")) deconstruct(TRUE) return - else - . = ..() + + return ..() /obj/structure/barricade/snow/hit_barricade(obj/item/I) switch(I.damtype) @@ -101,7 +101,7 @@ if(try_nailgun_usage(W, user)) return - . = ..() + return ..() /obj/structure/barricade/wooden/hit_barricade(obj/item/I) switch(I.damtype) diff --git a/code/game/objects/structures/barricade/plasteel.dm b/code/game/objects/structures/barricade/plasteel.dm index bba07832f790..1acedae9997d 100644 --- a/code/game/objects/structures/barricade/plasteel.dm +++ b/code/game/objects/structures/barricade/plasteel.dm @@ -47,7 +47,7 @@ if(!closed) // Closed = gate down for plasteel for some reason return ..() else - return 0 + return FALSE /obj/structure/barricade/plasteel/get_examine_text(mob/user) . = ..() @@ -60,22 +60,25 @@ if(BARRICADE_BSTATE_MOVABLE) . += SPAN_INFO("The protection panel has been removed and the anchor bolts loosened. It's ready to be taken apart.") -/obj/structure/barricade/plasteel/weld_cade(obj/item/item, mob/user) +/obj/structure/barricade/plasteel/try_weld_cade(obj/item/item, mob/user, repeat = TRUE, skip_check = FALSE) busy = TRUE ..() busy = FALSE -/obj/structure/barricade/plasteel/attackby(obj/item/item, mob/user) - if(iswelder(item)) - if(!attackby_welder(item, user)) - return FALSE +/obj/structure/barricade/plasteel/can_weld(obj/item/item, mob/user, silent) + if(!..()) + return FALSE - - if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) + if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) + if(!silent) to_chat(user, SPAN_WARNING("You're not trained to repair [src]...")) - return FALSE + return FALSE + + return TRUE - weld_cade(item, user) +/obj/structure/barricade/plasteel/attackby(obj/item/item, mob/user) + if(iswelder(item)) + try_weld_cade(item, user) return if(try_nailgun_usage(item, user)) @@ -87,7 +90,7 @@ return switch(build_state) - if(2) //Fully constructed step. Use screwdriver to remove the protection panels to reveal the bolts + if(BARRICADE_BSTATE_SECURED) //Fully constructed step. Use screwdriver to remove the protection panels to reveal the bolts if(HAS_TRAIT(item, TRAIT_TOOL_SCREWDRIVER)) if(busy || tool_cooldown > world.time) return @@ -100,12 +103,14 @@ if(B != src && B.dir == dir) to_chat(user, SPAN_WARNING("There's already a barricade here.")) return - if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) return + if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) + return user.visible_message(SPAN_NOTICE("[user] removes [src]'s protection panel."), SPAN_NOTICE("You remove [src]'s protection panels, exposing the anchor bolts.")) playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, 1) build_state = BARRICADE_BSTATE_UNSECURED return + if(HAS_TRAIT(item, TRAIT_TOOL_CROWBAR)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) to_chat(user, SPAN_WARNING("You are not trained to modify [src]...")) @@ -125,7 +130,8 @@ for(var/obj/structure/barricade/plasteel/cade in get_step(src, direction)) cade.update_icon() update_icon() - if(1) //Protection panel removed step. Screwdriver to put the panel back, wrench to unsecure the anchor bolts + + if(BARRICADE_BSTATE_UNSECURED) //Protection panel removed step. Screwdriver to put the panel back, wrench to unsecure the anchor bolts if(HAS_TRAIT(item, TRAIT_TOOL_SCREWDRIVER)) if(busy || tool_cooldown > world.time) return @@ -133,12 +139,14 @@ if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) to_chat(user, SPAN_WARNING("You are not trained to assemble [src]...")) return - if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) return + if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) + return user.visible_message(SPAN_NOTICE("[user] set [src]'s protection panel back."), SPAN_NOTICE("You set [src]'s protection panel back.")) playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, 1) build_state = BARRICADE_BSTATE_SECURED return + if(HAS_TRAIT(item, TRAIT_TOOL_WRENCH)) if(busy || tool_cooldown > world.time) return @@ -146,7 +154,8 @@ if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) to_chat(user, SPAN_WARNING("You are not trained to assemble [src]...")) return - if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) return + if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) + return user.visible_message(SPAN_NOTICE("[user] loosens [src]'s anchor bolts."), SPAN_NOTICE("You loosen [src]'s anchor bolts.")) playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) @@ -155,7 +164,7 @@ update_icon() //unanchored changes layer return - if(0) //Anchor bolts loosened step. Apply crowbar to unseat the panel and take apart the whole thing. Apply wrench to rescure anchor bolts + if(BARRICADE_BSTATE_MOVABLE) //Anchor bolts loosened step. Apply crowbar to unseat the panel and take apart the whole thing. Apply wrench to rescure anchor bolts if(HAS_TRAIT(item, TRAIT_TOOL_WRENCH)) if(busy || tool_cooldown > world.time) return @@ -167,7 +176,8 @@ if(!(istype(T) && T.allow_construction)) to_chat(user, SPAN_WARNING("[src] must be secured on a proper surface!")) return - if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) return + if(!do_after(user, 10, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) + return user.visible_message(SPAN_NOTICE("[user] secures [src]'s anchor bolts."), SPAN_NOTICE("You secure [src]'s anchor bolts.")) playsound(src.loc, 'sound/items/Ratchet.ogg', 25, 1) @@ -175,6 +185,7 @@ build_state = BARRICADE_BSTATE_UNSECURED update_icon() //unanchored changes layer return + if(HAS_TRAIT(item, TRAIT_TOOL_CROWBAR)) if(busy || tool_cooldown > world.time) return @@ -187,15 +198,14 @@ playsound(src.loc, 'sound/items/Crowbar.ogg', 25, 1) busy = TRUE if(do_after(user, 50 * user.get_skill_duration_multiplier(SKILL_CONSTRUCTION), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD, src)) - busy = FALSE user.visible_message(SPAN_NOTICE("[user] takes [src]'s panels apart."), SPAN_NOTICE("You take [src]'s panels apart.")) playsound(loc, 'sound/items/Deconstruct.ogg', 25, 1) deconstruct(TRUE) //Note : Handles deconstruction too ! - else busy = FALSE + busy = FALSE return - . = ..() + return ..() /obj/structure/barricade/plasteel/attack_hand(mob/user as mob) if(isxeno(user)) @@ -257,7 +267,7 @@ is_wired = TRUE climbable = FALSE update_icon() - . = ..() + return ..() /obj/structure/barricade/plasteel/wired/initialize_pass_flags(datum/pass_flags_container/PF) ..() diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 39a659c5f397..5620f106b560 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -22,32 +22,18 @@ playsound(src, unpacking_sound, 35) - /// Store the reference of the crate material - var/obj/item/stack/sheet/material_sheet - if(parts_type) // Create the crate material and store its reference - material_sheet = new parts_type(current_turf, 2) - - // Move the objects back to the turf, above the crate material + // Move the contents back to the turf for(var/atom/movable/moving_atom as anything in contents) moving_atom.forceMove(current_turf) - deconstruct(TRUE) - - // Move the crate material to the bottom of the turf's contents - if(material_sheet) - move_to_bottom(material_sheet, current_turf) + if(parts_type) // Create the crate material + new parts_type(current_turf, 2) -/// Custom proc to move an object to the bottom of the turf's contents -/obj/structure/largecrate/proc/move_to_bottom(obj/moving_down, turf/current_turf) - if(!istype(moving_down) || !istype(current_turf)) - return - for(var/atom/movable/checking_atom in current_turf.contents) - if(checking_atom != moving_down) - checking_atom.layer = max(checking_atom.layer, moving_down.layer + 0.1) + deconstruct(TRUE) /obj/structure/largecrate/deconstruct(disassembled = TRUE) if(!disassembled) - new /obj/item/stack/sheet/wood(loc) + new parts_type(loc) return ..() diff --git a/code/game/objects/structures/vulture_spotter.dm b/code/game/objects/structures/vulture_spotter.dm index d90a1ec1615a..4d8e5d06749b 100644 --- a/code/game/objects/structures/vulture_spotter.dm +++ b/code/game/objects/structures/vulture_spotter.dm @@ -87,7 +87,7 @@ if(user.client) RegisterSignal(user.client, COMSIG_PARENT_QDELETING, PROC_REF(do_unscope)) user.client.change_view(scope_zoom, src) - RegisterSignal(user, list(COMSIG_MOB_PICKUP_ITEM, COMSIG_MOB_RESISTED), PROC_REF(do_unscope)) + RegisterSignal(user, list(COMSIG_MOB_PICKUP_ITEM, COMSIG_MOB_RESISTED, COMSIG_MOB_DEATH, COMSIG_LIVING_SET_BODY_POSITION), PROC_REF(do_unscope)) user.see_in_dark += darkness_view user.lighting_alpha = 127 user.sync_lighting_plane_alpha() @@ -234,7 +234,7 @@ user.lighting_alpha = user.default_lighting_alpha user.sync_lighting_plane_alpha() user.clear_fullscreen("vulture_spotter") - UnregisterSignal(user, list(COMSIG_MOB_PICKUP_ITEM, COMSIG_MOB_RESISTED)) + UnregisterSignal(user, list(COMSIG_MOB_PICKUP_ITEM, COMSIG_MOB_RESISTED, COMSIG_MOB_DEATH, COMSIG_LIVING_SET_BODY_POSITION)) user.pixel_x = 0 user.pixel_y = 0 if(user.client) @@ -295,6 +295,10 @@ return rifle.attachments["rail"] +/obj/structure/vulture_spotter_tripod/check_eye(mob/living/user) + if((user.body_position != STANDING_UP) || (get_dist(user, src) > 0) || user.is_mob_incapacitated() || !user.client) + do_unscope() + /datum/action/vulture_tripod_unscope name = "Stop Using Scope" action_icon_state = "vulture_tripod_close" diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 5871fdc7a152..a73a3b96e5e4 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -17,6 +17,7 @@ FACTION_PMC = 0, FACTION_CLF = 0, FACTION_UPP = 0, + FACTION_TWE = 0, FACTION_FREELANCER = 0, FACTION_SURVIVOR = 0, FACTION_WY_DEATHSQUAD = 0, diff --git a/code/game/world.dm b/code/game/world.dm index 958278042ea5..e55741ca71e5 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -374,6 +374,7 @@ GLOBAL_LIST_INIT(reboot_sfx, file2list("config/reboot_sfx.txt")) /world/proc/HandleTestRun() // Wait for the game ticker to initialize Master.sleep_offline_after_initializations = FALSE + SSticker.start_immediately = TRUE UNTIL(SSticker.initialized) //trigger things to run the whole process diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index f3eae1447ba0..b99394a52fee 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -111,6 +111,7 @@ GLOBAL_LIST_INIT(admin_verbs_minor_event, list( /client/proc/cmd_admin_change_custom_event, /datum/admins/proc/admin_force_distress, /datum/admins/proc/admin_force_ERT_shuttle, + /client/proc/enable_event_mob_verbs, /client/proc/force_hijack, /datum/admins/proc/force_predator_round, //Force spawns a predator round. /client/proc/adjust_predator_round, @@ -141,7 +142,6 @@ GLOBAL_LIST_INIT(admin_verbs_minor_event, list( )) GLOBAL_LIST_INIT(admin_verbs_major_event, list( - /client/proc/enable_event_mob_verbs, /client/proc/cmd_admin_dress_all, /client/proc/free_all_mobs_in_view, /client/proc/drop_bomb, @@ -238,6 +238,7 @@ GLOBAL_LIST_INIT(debug_verbs, list( )) GLOBAL_LIST_INIT(admin_verbs_possess, list( + /client/proc/cmd_assume_direct_control, /client/proc/possess, /client/proc/release )) @@ -262,10 +263,7 @@ GLOBAL_LIST_INIT(admin_mob_event_verbs_hideable, list( /client/proc/editappear, /client/proc/cmd_admin_addhud, /client/proc/cmd_admin_change_their_hivenumber, - /client/proc/cmd_assume_direct_control, /client/proc/free_mob_for_ghosts, - /client/proc/possess, - /client/proc/release, /client/proc/cmd_admin_grantfullaccess, /client/proc/cmd_admin_grantallskills, /client/proc/admin_create_account @@ -273,6 +271,7 @@ GLOBAL_LIST_INIT(admin_mob_event_verbs_hideable, list( //verbs which can be hidden - needs work GLOBAL_LIST_INIT(admin_verbs_hideable, list( + /client/proc/cmd_assume_direct_control, /client/proc/release, /client/proc/possess, /client/proc/callproc_datum, diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 5f10b8d24d22..4b52f03c1ec8 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -469,6 +469,11 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /datum/admin_help/proc/Close(key_name = key_name_admin(usr), silent = FALSE) if(state != AHELP_ACTIVE) return + + if(marked_admin != usr.key) + to_chat(usr, SPAN_WARNING("This ticket is currently marked by [marked_admin]. Please override their mark to interact with this ticket!")) + return + RemoveActive() state = AHELP_CLOSED GLOB.ahelp_tickets.ListInsert(src) @@ -483,6 +488,11 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /datum/admin_help/proc/Resolve(key_name = key_name_admin(usr), silent = FALSE) if(state != AHELP_ACTIVE) return + + if(marked_admin != usr.key) + to_chat(usr, SPAN_WARNING("This ticket is currently marked by [marked_admin]. Please override their mark to interact with this ticket!")) + return + RemoveActive() state = AHELP_RESOLVED GLOB.ahelp_tickets.ListInsert(src) @@ -501,6 +511,10 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(state != AHELP_ACTIVE || !initial_message) return + if(marked_admin != usr.key) + to_chat(usr, SPAN_WARNING("This ticket is currently marked by [marked_admin]. Please override their mark to interact with this ticket!")) + return + if(!initiator.current_mhelp) initiator.current_mhelp = new(initiator) @@ -559,6 +573,10 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(state != AHELP_ACTIVE) return + if(marked_admin != usr.key) + to_chat(usr, SPAN_WARNING("This ticket is currently marked by [marked_admin]. Please override their mark to interact with this ticket!")) + return + if(initiator) initiator.giveadminhelpverb() @@ -582,6 +600,10 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) to_chat(usr, SPAN_WARNING("This ticket is already closed!")) return + if(marked_admin != usr.key) + to_chat(usr, SPAN_WARNING("This ticket is currently marked by [marked_admin]. Please override their mark to interact with this ticket!")) + return + var/chosen = tgui_input_list(usr, "Which auto response do you wish to send?", "AutoReply", GLOB.adminreplies) var/datum/autoreply/admin/response = GLOB.adminreplies[chosen] diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index e5fed9db2fc4..a9a3a90ff35a 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -60,7 +60,7 @@ var/message_prompt = "Message:" - if((AH?.opening_responders && length(AH.ticket_interactions) == 1 ) || (AH?.marked_admin && AH?.marked_admin != usr.key) && length(AH.ticket_interactions) == 2) + if((AH?.opening_responders && length(AH.ticket_interactions) == 1 ) || ((AH?.marked_admin && AH?.marked_admin != usr.key) && length(AH.ticket_interactions) == 2)) SEND_SOUND(src, sound('sound/machines/buzz-sigh.ogg', volume=30)) message_prompt += "\n\n**This ticket is already being responded to by: [length(AH.opening_responders) ? english_list(AH.opening_responders) : AH.marked_admin]**" diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index ede1cd029d9d..60c2092d8dc3 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -117,8 +117,8 @@ var/datum/space_level/cur_level = SSmapping.z_list[cur_z] cur_x += cur_level.bounds[MAP_MINX] - 1 cur_y += cur_level.bounds[MAP_MINY] - 1 - width = cur_level.bounds[MAP_MAXX] - cur_level.bounds[MAP_MINX] - half_chunk_size + 1 - height = cur_level.bounds[MAP_MAXY] - cur_level.bounds[MAP_MINY] - half_chunk_size + 1 + width = cur_level.bounds[MAP_MAXX] - cur_level.bounds[MAP_MINX] - half_chunk_size + 3 + height = cur_level.bounds[MAP_MAXY] - cur_level.bounds[MAP_MINY] - half_chunk_size + 3 else width = world.maxx - half_chunk_size + 2 height = world.maxy - half_chunk_size + 2 @@ -283,6 +283,8 @@ account_user.mind.store_memory(remembered_info) account_user.mind.initial_account = generated_account + log_admin("[key_name(usr)] has created a new bank account for [key_name(account_user)].") + /client/proc/cmd_assume_direct_control(mob/M in GLOB.mob_list) set name = "Control Mob" set desc = "Assume control of the mob" diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 44820444a955..5796d5ff505e 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -444,7 +444,7 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( view = GLOB.world_view_size - SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CLIENT_LOGIN, src) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CLIENT_LOGGED_IN, src) ////////////// //DISCONNECT// diff --git a/code/modules/clothing/head/head.dm b/code/modules/clothing/head/head.dm index 9121485ee76a..86527457bfce 100644 --- a/code/modules/clothing/head/head.dm +++ b/code/modules/clothing/head/head.dm @@ -416,10 +416,8 @@ /obj/item/clothing/head/cmcap/reporter name = "combat correspondent cap" desc = "A faithful cap for any terrain war correspondents may find themselves in." - icon = 'icons/mob/humans/onmob/contained/war_correspondent.dmi' - icon_state = "wc_flagcap" - item_state = "wc_flagcap" - contained_sprite = TRUE + icon_state = "cc_flagcap" + item_state = "cc_flagcap" flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE flags_marine_hat = HAT_GARB_OVERLAY diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index adfbfb023309..26c92f632ee2 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -511,7 +511,17 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( new_action.give_to(user) return - if(HAS_TRAIT(attacking_item, TRAIT_TOOL_SCREWDRIVER) && length(inserted_visors)) + if(HAS_TRAIT(attacking_item, TRAIT_TOOL_SCREWDRIVER)) + // If there isn't anything to remove, return. + if(!length(inserted_visors)) + // If the user is trying to remove a built-in visor, give them a more helpful failure message. + switch(length(built_in_visors)) + if(1) // Messy plural handling + to_chat(user, SPAN_WARNING("The visor on [src] is built-in!")) + if(2 to INFINITY) + to_chat(user, SPAN_WARNING("The visors on [src] are built-in!")) + return + if(active_visor) var/obj/item/device/helmet_visor/temp_visor_holder = active_visor active_visor = null @@ -1403,10 +1413,8 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( /obj/item/clothing/head/helmet/marine/reporter name = "press helmet" desc = "A helmet designed to make it clear that the wearer is safety aware and not looking for a fight." - icon = 'icons/mob/humans/onmob/contained/war_correspondent.dmi' - icon_state = "wc_helm" - item_state = "wc_helm" - contained_sprite = TRUE + icon_state = "cc_helmet" + item_state = "cc_helmet" flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE built_in_visors = list() diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm deleted file mode 100644 index bc29b0a33570..000000000000 --- a/code/modules/clothing/suits/marine_armor.dm +++ /dev/null @@ -1,2008 +0,0 @@ -#define DEBUG_ARMOR_PROTECTION 0 - -#if DEBUG_ARMOR_PROTECTION -/mob/living/carbon/human/verb/check_overall_protection() - set name = "Get Armor Value" - set category = "Debug" - set desc = "Shows the armor value of the bullet category." - - var/armor = 0 - var/counter = 0 - for(var/X in H.limbs) - var/obj/limb/E = X - armor = getarmor_organ(E, ARMOR_BULLET) - to_chat(src, SPAN_DEBUG("[E.name] is protected with [armor] armor against bullets.")) - counter += armor - to_chat(src, SPAN_DEBUG("The overall armor score is: [counter].")) -#endif - -//=======================================================================\\ -//=======================================================================\\ - -#define ALPHA 1 -#define BRAVO 2 -#define CHARLIE 3 -#define DELTA 4 -#define ECHO 5 -#define CRYO 6 -#define SOF 7 -#define NOSQUAD 8 - -// MARINE STORAGE ARMOR - -/obj/item/clothing/suit/storage/marine - name = "\improper M3 pattern marine armor" - desc = "A standard Colonial Marines M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." - icon = 'icons/obj/items/clothing/cm_suits.dmi' - icon_state = "1" - item_state = "marine_armor" //Make unique states for Officer & Intel armors. - item_icons = list( - WEAR_JACKET = 'icons/mob/humans/onmob/suit_1.dmi' - ) - flags_atom = FPRINT|CONDUCT - flags_inventory = BLOCKSHARPOBJ - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - min_cold_protection_temperature = HELMET_MIN_COLD_PROT - max_heat_protection_temperature = HELMET_MAX_HEAT_PROT - blood_overlay_type = "armor" - armor_melee = CLOTHING_ARMOR_MEDIUM - armor_bullet = CLOTHING_ARMOR_MEDIUM - armor_laser = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_NONE - armor_bomb = CLOTHING_ARMOR_MEDIUMLOW - armor_bio = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUMLOW - armor_internaldamage = CLOTHING_ARMOR_MEDIUM - movement_compensation = SLOWDOWN_ARMOR_LIGHT - storage_slots = 3 - siemens_coefficient = 0.7 - slowdown = SLOWDOWN_ARMOR_MEDIUM - allowed = list( - /obj/item/weapon/gun, - /obj/item/prop/prop_gun, - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/storage/bible, - /obj/item/attachable/bayonet, - /obj/item/storage/backpack/general_belt, - /obj/item/storage/large_holster/machete, - /obj/item/storage/belt/gun/type47, - /obj/item/storage/belt/gun/m4a3, - /obj/item/storage/belt/gun/m44, - /obj/item/storage/belt/gun/smartpistol, - /obj/item/storage/belt/gun/flaregun, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - /obj/item/storage/belt/gun/m39, - /obj/item/storage/belt/gun/xm51, - ) - valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_PONCHO) - - light_power = 3 - light_range = 4 - light_system = MOVABLE_LIGHT - - var/flashlight_cooldown = 0 //Cooldown for toggling the light - var/locate_cooldown = 0 //Cooldown for SL locator - var/armor_overlays[] - actions_types = list(/datum/action/item_action/toggle) - var/flags_marine_armor = ARMOR_SQUAD_OVERLAY|ARMOR_LAMP_OVERLAY - var/specialty = "M3 pattern marine" //Same thing here. Give them a specialty so that they show up correctly in vendors. speciality does NOTHING if you have NO_NAME_OVERRIDE - w_class = SIZE_HUGE - uniform_restricted = list(/obj/item/clothing/under/marine) - sprite_sheets = list(SPECIES_MONKEY = 'icons/mob/humans/species/monkeys/onmob/suit_monkey_1.dmi') - time_to_unequip = 20 - time_to_equip = 20 - pickup_sound = "armorequip" - drop_sound = "armorequip" - equip_sounds = list('sound/handling/putting_on_armor1.ogg') - var/armor_variation = 0 - /// The dmi where the grayscale squad overlays are contained - var/squad_overlay_icon = 'icons/mob/humans/onmob/suit_1.dmi' - - var/atom/movable/marine_light/light_holder - -/obj/item/clothing/suit/storage/marine/Initialize(mapload) - . = ..() - if(!(flags_atom & NO_NAME_OVERRIDE)) - name = "[specialty]" - if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) - name += " snow armor" //Leave marine out so that armors don't have to have "Marine" appended (see: generals). - else - name += " armor" - - if(!(flags_atom & NO_SNOW_TYPE)) - select_gamemode_skin(type) - armor_overlays = list("lamp") //Just one for now, can add more later. - if(armor_variation && mapload) - set_armor_style("Random") - update_icon() - pockets.max_w_class = SIZE_SMALL //Can contain small items AND rifle magazines. - pockets.bypass_w_limit = list( - /obj/item/ammo_magazine/rifle, - /obj/item/ammo_magazine/smg, - /obj/item/ammo_magazine/sniper, - ) - pockets.max_storage_space = 8 - - light_holder = new(src) - -/obj/item/clothing/suit/storage/marine/Destroy() - QDEL_NULL(light_holder) - return ..() - -/obj/item/clothing/suit/storage/marine/update_icon(mob/user) - var/image/I - armor_overlays["lamp"] = null - if(flags_marine_armor & ARMOR_LAMP_OVERLAY) - if(flags_marine_armor & ARMOR_LAMP_ON) - I = image('icons/obj/items/clothing/cm_suits.dmi', src, "lamp-on") - else - I = image('icons/obj/items/clothing/cm_suits.dmi', src, "lamp-off") - armor_overlays["lamp"] = I - overlays += I - else armor_overlays["lamp"] = null - if(user) user.update_inv_wear_suit() - - -/obj/item/clothing/suit/storage/marine/post_vendor_spawn_hook(mob/living/carbon/human/user) //used for randomizing/selecting a variant for armors. - if(!armor_variation) - return - - if(user?.client?.prefs) - // Set the armor style to the user's preference. - set_armor_style(user.client.prefs.preferred_armor) - else - // Or if that isn't possible, just pick a random one. - set_armor_style("Random") - update_icon(user) - -/obj/item/clothing/suit/storage/marine/attack_self(mob/user) - ..() - - if(!isturf(user.loc)) - to_chat(user, SPAN_WARNING("You cannot turn the light [light_on ? "off" : "on"] while in [user.loc].")) //To prevent some lighting anomalies. - return - - if(flashlight_cooldown > world.time) - return - if(!ishuman(user)) - return - - var/mob/living/carbon/human/H = user - if(H.wear_suit != src) - return - - turn_light(user, !light_on) - -/obj/item/clothing/suit/storage/marine/item_action_slot_check(mob/user, slot) - if(!ishuman(user)) - return FALSE - if(slot != WEAR_JACKET) - return FALSE - return TRUE //only give action button when armor is worn. - -/obj/item/clothing/suit/storage/marine/turn_light(mob/user, toggle_on) - . = ..() - if(. != CHECKS_PASSED) - return - set_light_range(initial(light_range)) - set_light_power(Floor(initial(light_power) * 0.5)) - set_light_on(toggle_on) - flags_marine_armor ^= ARMOR_LAMP_ON - - light_holder.set_light_flags(LIGHT_ATTACHED) - light_holder.set_light_range(initial(light_range)) - light_holder.set_light_power(initial(light_power)) - light_holder.set_light_on(toggle_on) - - if(!toggle_on) - playsound(src, 'sound/handling/click_2.ogg', 50, 1) - - playsound(src, 'sound/handling/suitlight_on.ogg', 50, 1) - update_icon(user) - - for(var/X in actions) - var/datum/action/A = X - A.update_button_icon() - -/obj/item/clothing/suit/storage/marine/mob_can_equip(mob/living/carbon/human/M, slot, disable_warning = 0) - . = ..() - if (.) - if(issynth(M) && M.allow_gun_usage == FALSE && !(flags_marine_armor & SYNTH_ALLOWED)) - M.visible_message(SPAN_DANGER("Your programming prevents you from wearing this!")) - return 0 - -/** - * Updates the armor's `icon_state` to the style represented by `new_style`. - * - * Arguments: - * * new_style - The new armor style. May only be one of `GLOB.armor_style_list`'s keys, or `"Random"`. - */ -/obj/item/clothing/suit/storage/marine/proc/set_armor_style(new_style) - // Regex to match one or more digits. - var/static/regex/digits = new("\\d+") - // Integer for the new armor style's `icon_state`. - var/new_look - - if(new_style == "Random") - // The style icon states are all numbers between 1 and `armor_variation`, so this picks a random one. - new_look = rand(1, armor_variation) - else - new_look = GLOB.armor_style_list[new_style] - - // Replace the digits in the current icon state with `new_look`. (E.g. "L6" -> "L2") - icon_state = digits.Replace(icon_state, new_look) - -/obj/item/clothing/suit/storage/marine/medium/padded - name = "M3 pattern padded marine armor" - icon_state = "1" - specialty = "M3 pattern padded marine" - -/obj/item/clothing/suit/storage/marine/medium/padless - name = "M3 pattern padless marine armor" - icon_state = "2" - specialty = "M3 pattern padless marine" - -/obj/item/clothing/suit/storage/marine/medium/padless_lines - name = "M3 pattern ridged marine armor" - icon_state = "3" - specialty = "M3 pattern ridged marine" - -/obj/item/clothing/suit/storage/marine/medium/carrier - name = "M3 pattern carrier marine armor" - icon_state = "4" - specialty = "M3 pattern carrier marine" - -/obj/item/clothing/suit/storage/marine/medium/skull - name = "M3 pattern skull marine armor" - icon_state = "5" - specialty = "M3 pattern skull marine" - -/obj/item/clothing/suit/storage/marine/medium/smooth - name = "M3 pattern smooth marine armor" - icon_state = "6" - specialty = "M3 pattern smooth marine" - -/obj/item/clothing/suit/storage/marine/medium/rto - icon_state = "io" - armor_variation = 0 - name = "\improper M4 pattern marine armor" - desc = "A well tinkered and crafted hybrid of Smart-Gunner mesh and M3 pattern plates. Robust, yet nimble, with room for all your pouches." - armor_bio = CLOTHING_ARMOR_MEDIUMHIGH - armor_rad = CLOTHING_ARMOR_MEDIUM - storage_slots = 4 - light_range = 5 //slightly higher - specialty = "M4 pattern marine" - -/obj/item/clothing/suit/storage/marine/medium/rto/intel - name = "\improper XM4 pattern intelligence officer armor" - uniform_restricted = list(/obj/item/clothing/under/marine/officer/intel) - specialty = "XM4 pattern intel" - desc = "Tougher than steel, quieter than whispers, the XM4 Intel Armor provides capable protection combined with an experimental integrated motion tracker. It took an R&D team a weekend to develop and costs more than the Chinook Station... probably. When worn, uniform accessories such as webbing cannot be attached due to the motion sensors occupying the clips." - desc_lore = "ARMAT Perfection. The XM4 Soldier Awareness System mixes M4-style hard armor and a distributed series of motion sensors clipped onto the breastplate. When connected to any HUD optic, it replicates the effects of an M314 Motion Detector unit, increasing user situational awareness. It is currently undergoing field trials by intelligence operatives." - storage_slots = 5 - /// XM4 Integral Motion Detector Ability - actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/intel/toggle_motion_detector) - var/motion_detector = FALSE - var/obj/item/device/motiondetector/xm4/proximity - var/long_range_cooldown = 2 - var/recycletime = 120 - -/obj/item/clothing/suit/storage/marine/medium/rto/intel/Initialize(mapload, ...) - . = ..() - proximity = new(src) - update_icon() - -/datum/action/item_action/intel/action_activate() - if(!ishuman(owner)) - return - -/datum/action/item_action/intel/update_button_icon() - return - -/datum/action/item_action/intel/toggle_motion_detector/New(Target, obj/item/holder) - . = ..() - name = "Toggle Motion Detector" - action_icon_state = "motion_detector" - button.name = name - button.overlays.Cut() - button.overlays += image('icons/mob/hud/actions.dmi', button, action_icon_state) - -/datum/action/item_action/intel/toggle_motion_detector/action_activate() - . = ..() - var/obj/item/clothing/suit/storage/marine/medium/rto/intel/recon = holder_item - recon.toggle_motion_detector(owner) - -/datum/action/item_action/intel/toggle_motion_detector/proc/update_icon() - if(!holder_item) - return - var/obj/item/clothing/suit/storage/marine/medium/rto/intel/recon = holder_item - if(recon.motion_detector) - button.icon_state = "template_on" - else - button.icon_state = "template" - -/obj/item/clothing/suit/storage/marine/medium/rto/intel/process() - if(!motion_detector) - STOP_PROCESSING(SSobj, src) - if(motion_detector) - recycletime-- - if(!recycletime) - recycletime = initial(recycletime) - proximity.refresh_blip_pool() - long_range_cooldown-- - if(long_range_cooldown) - return - long_range_cooldown = initial(long_range_cooldown) - proximity.scan() - -/obj/item/clothing/suit/storage/marine/medium/rto/intel/proc/toggle_motion_detector(mob/user) - to_chat(user,SPAN_NOTICE("You [motion_detector? "disable" : "enable"] \the [src]'s motion detector.")) - if(!motion_detector) - playsound(loc,'sound/items/detector_turn_on.ogg', 25, 1) - else - playsound(loc,'sound/items/detector_turn_off.ogg', 25, 1) - motion_detector = !motion_detector - var/datum/action/item_action/intel/toggle_motion_detector/TMD = locate(/datum/action/item_action/intel/toggle_motion_detector) in actions - TMD.update_icon() - motion_detector() - -/obj/item/clothing/suit/storage/marine/medium/rto/intel/proc/motion_detector() - if(motion_detector) - START_PROCESSING(SSobj, src) - else - STOP_PROCESSING(SSobj, src) - -/obj/item/clothing/suit/storage/marine/medium/rto/intel/mob_can_equip(mob/living/carbon/human/user, slot, disable_warning) //Thanks to Drathek for the help on this part! - if(!..()) - return FALSE - - // Only equip if uniform doesn't already have a utility accessory slot equipped - var/obj/item/clothing/under/uniform = user.w_uniform - var/accessory = locate(/obj/item/clothing/accessory/storage) in uniform.accessories - if(accessory) - to_chat(user, SPAN_WARNING("[src] can't be worn with [accessory].")) - return FALSE - // Only equip if user has expert intel skill level - if(!skillcheck(user, SKILL_INTEL, SKILL_INTEL_EXPERT)) - to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) - return FALSE - return TRUE - -/obj/item/clothing/suit/storage/marine/medium/rto/intel/equipped(mob/user, slot, silent) //When XM4 is equipped this removes ACCESSORY_SLOT_UTILITY as a valid accessory for the uniform - . = ..() - if(slot == WEAR_JACKET) - var/mob/living/carbon/human/human = user - var/obj/item/clothing/under/uniform = human.w_uniform - if(uniform?.valid_accessory_slots) - uniform?.valid_accessory_slots -= ACCESSORY_SLOT_UTILITY - -/obj/item/clothing/suit/storage/marine/medium/rto/intel/unequipped(mob/user, slot) //When unequipped this adds the ACCESSORY_SLOT_UTILITY back as a valid accessory - . = ..() - if(slot == WEAR_JACKET) - var/mob/living/carbon/human/human = user - var/obj/item/clothing/under/uniform = human.w_uniform - if(uniform) - // Figure out if the uniform originally allowed ACCESSORY_SLOT_UTILITY - var/obj/item/clothing/under/temp_uniform = new uniform.type - if(temp_uniform.valid_accessory_slots) - for(var/allowed in temp_uniform.valid_accessory_slots) - if(allowed == ACCESSORY_SLOT_UTILITY) - // It was allowed previously, now add it back - uniform.valid_accessory_slots += ACCESSORY_SLOT_UTILITY - break - qdel(temp_uniform) - -/obj/item/clothing/suit/storage/marine/MP - name = "\improper M2 pattern MP armor" - desc = "A standard Colonial Marines M2 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." - icon_state = "mp_armor" - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - armor_bullet = CLOTHING_ARMOR_LOW - armor_laser = CLOTHING_ARMOR_LOW - armor_energy = CLOTHING_ARMOR_LOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_internaldamage = CLOTHING_ARMOR_MEDIUMLOW - storage_slots = 2 - slowdown = SLOWDOWN_ARMOR_LIGHT - allowed = list( - /obj/item/weapon/gun, - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/ammo_magazine/, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/weapon/baton, - /obj/item/handcuffs, - /obj/item/explosive/grenade, - /obj/item/device/binoculars, - /obj/item/attachable/bayonet, - /obj/item/storage/backpack/general_belt, - /obj/item/device/hailer, - /obj/item/storage/belt/gun, - /obj/item/weapon/sword/ceremonial, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - ) - uniform_restricted = list(/obj/item/clothing/under/marine/mp) - specialty = "M2 pattern MP" - item_state_slots = list(WEAR_JACKET = "mp_armor") - black_market_value = 20 - -/obj/item/clothing/suit/storage/marine/MP/warden - icon_state = "warden" - name = "\improper M3 pattern warden MP armor" - desc = "A well-crafted suit of M3 Pattern Armor typically distributed to Wardens. Useful for letting your men know who is in charge." - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_rad = CLOTHING_ARMOR_MEDIUMLOW - uniform_restricted = list(/obj/item/clothing/under/marine/warden) - specialty = "M3 pattern warden MP" - item_state_slots = list(WEAR_JACKET = "warden") - -/obj/item/clothing/suit/storage/marine/MP/WO - icon_state = "warrant_officer" - name = "\improper M3 pattern chief MP armor" - desc = "A well-crafted suit of M3 Pattern Armor typically distributed to Chief MPs. Useful for letting your men know who is in charge." - uniform_restricted = list(/obj/item/clothing/under/marine/officer/warrant) - specialty = "M3 pattern chief MP" - item_state_slots = list(WEAR_JACKET = "warrant_officer") - black_market_value = 30 - -/obj/item/clothing/suit/storage/marine/MP/general - name = "\improper M3 pattern general officer armor" - desc = "A well-crafted suit of M3 Pattern Armor with a gold shine. It looks very expensive, but shockingly fairly easy to carry and wear." - icon_state = "general" - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_bio = CLOTHING_ARMOR_MEDIUM - uniform_restricted = list(/obj/item/clothing/under/marine/officer/general) - specialty = "M3 pattern general" - item_state_slots = list(WEAR_JACKET = "general") - w_class = SIZE_MEDIUM - -/obj/item/clothing/suit/storage/marine/MP/SO - name = "\improper M3 pattern officer armor" - desc = "A well-crafted suit of M3 Pattern Armor typically found in the hands of higher-ranking officers. Useful for letting your men know who is in charge when taking to the field." - icon_state = "officer" - storage_slots = 3 - flags_atom = null - uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/rank/chief_medical_officer, /obj/item/clothing/under/marine/dress) - specialty = "M3 pattern officer" - item_state_slots = list(WEAR_JACKET = "officer") - -//Making a new object because we might want to edit armor values and such. -//Or give it its own sprite. It's more for the future. -/obj/item/clothing/suit/storage/marine/MP/CO - name = "\improper M3 pattern commanding officer armor" - desc = "A robust, well-polished suit of armor for the Commanding Officer. Custom-made to fit its owner with special straps to operate a smartgun. Show those Marines who's really in charge." - icon_state = "co_officer" - item_state = "co_officer" - armor_bullet = CLOTHING_ARMOR_HIGH - storage_slots = 3 - flags_atom = NO_SNOW_TYPE - flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS - uniform_restricted = list(/obj/item/clothing/under/marine, /obj/item/clothing/under/rank/qm_suit) - specialty = "M3 pattern captain" - item_state_slots = list(WEAR_JACKET = "co_officer") - valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_PONCHO) - black_market_value = 35 - - -/obj/item/clothing/suit/storage/marine/MP/CO/jacket - name = "\improper M3 pattern commanding officer armored coat" - desc = "A robust, well-polished suit of armor for the Commanding Officer. Custom-made to fit its owner with special straps to operate a smartgun. Show those Marines who's really in charge. This one has a coat over it for added warmth." - icon_state = "bridge_coat_armored" - item_state = "bridge_coat_armored" - item_state_slots = list(WEAR_JACKET = "bridge_coat_armored") - valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_RANK) - - -/obj/item/clothing/suit/storage/marine/smartgunner - name = "\improper M56 combat harness" - desc = "A heavy protective vest designed to be worn with the M56 Smartgun System. \nIt has specially designed straps and reinforcement to carry the Smartgun and accessories." - icon_state = "8" - item_state = "armor" - armor_laser = CLOTHING_ARMOR_LOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - storage_slots = 2 - slowdown = SLOWDOWN_ARMOR_LIGHT - flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS - allowed = list( - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/ammo_magazine, - /obj/item/explosive/mine, - /obj/item/attachable/bayonet, - /obj/item/weapon/gun/smartgun, - /obj/item/storage/backpack/general_belt, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - ) - -/obj/item/clothing/suit/storage/marine/smartgunner/Initialize() - . = ..() - if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD] && name == "M56 combat harness") - name = "M56 snow combat harness" - else - name = "M56 combat harness" - //select_gamemode_skin(type) - -/obj/item/clothing/suit/storage/marine/smartgunner/mob_can_equip(mob/equipping_mob, slot, disable_warning = FALSE) - . = ..() - - if(equipping_mob.back) - to_chat(equipping_mob, SPAN_WARNING("You can't equip [src] while wearing a backpack.")) - return FALSE - -/obj/item/clothing/suit/storage/marine/smartgunner/equipped(mob/user, slot, silent) - . = ..() - - if(slot == WEAR_JACKET) - RegisterSignal(user, COMSIG_HUMAN_ATTEMPTING_EQUIP, PROC_REF(check_equipping)) - -/obj/item/clothing/suit/storage/marine/smartgunner/proc/check_equipping(mob/living/carbon/human/equipping_human, obj/item/equipping_item, slot) - SIGNAL_HANDLER - - if(slot != WEAR_BACK) - return - - . = COMPONENT_HUMAN_CANCEL_ATTEMPT_EQUIP - - if(equipping_item.flags_equip_slot == SLOT_BACK) - to_chat(equipping_human, SPAN_WARNING("You can't equip [equipping_item] on your back while wearing [src].")) - return - -/obj/item/clothing/suit/storage/marine/smartgunner/unequipped(mob/user, slot) - . = ..() - - UnregisterSignal(user, COMSIG_HUMAN_ATTEMPTING_EQUIP) - -/obj/item/clothing/suit/storage/marine/medium/leader - name = "\improper B12 pattern marine armor" - desc = "A lightweight suit of carbon fiber body armor built for quick movement. Designed in a lovely forest green. Use it to toggle the built-in flashlight." - icon_state = "7" - armor_variation = 0 - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_MEDIUMHIGH - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - specialty = "B12 pattern marine" - light_range = 5 - -/obj/item/clothing/suit/storage/marine/tanker - name = "\improper M3 pattern tanker armor" - desc = "A modified and refashioned suit of M3 Pattern armor designed to be worn by the loader of a USCM vehicle crew. While the suit is a bit more encumbering to wear with the crewman uniform, it offers the loader a degree of protection that would otherwise not be enjoyed." - icon_state = "tanker" - uniform_restricted = list(/obj/item/clothing/under/marine/officer/tanker) - specialty = "M3 pattern tanker" - storage_slots = 2 - -//===========================//PFC ARMOR CLASSES\\================================\\ -//=================================================================================\\ - -/obj/item/clothing/suit/storage/marine/medium - armor_variation = 6 - light_power = 4 - -/obj/item/clothing/suit/storage/marine/medium/padded - name = "M3 pattern padded marine armor" - icon_state = "1" - armor_variation = 0 - specialty = "M3 pattern padded marine" - -/obj/item/clothing/suit/storage/marine/medium/padless - name = "M3 pattern padless marine armor" - icon_state = "2" - armor_variation = 0 - specialty = "M3 pattern padless marine" - -/obj/item/clothing/suit/storage/marine/medium/padless_lines - name = "M3 pattern ridged marine armor" - icon_state = "3" - armor_variation = 0 - specialty = "M3 pattern ridged marine" - -/obj/item/clothing/suit/storage/marine/medium/carrier - name = "M3 pattern carrier marine armor" - icon_state = "4" - armor_variation = 0 - specialty = "M3 pattern carrier marine" - -/obj/item/clothing/suit/storage/marine/medium/skull - name = "M3 pattern skull marine armor" - icon_state = "5" - armor_variation = 0 - specialty = "M3 pattern skull marine" - -/obj/item/clothing/suit/storage/marine/medium/smooth - name = "M3 pattern smooth marine armor" - icon_state = "6" - armor_variation = 0 - specialty = "M3 pattern smooth marine" - -/obj/item/clothing/suit/storage/marine/light - name = "\improper M3-L pattern light armor" - desc = "A lighter, cut down version of the standard M3 pattern armor. It sacrifices durability for more speed." - specialty = "\improper M3-L pattern light" - icon_state = "L1" - armor_variation = 6 - slowdown = SLOWDOWN_ARMOR_LIGHT - armor_melee = CLOTHING_ARMOR_MEDIUMLOW - armor_bullet = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_rad = CLOTHING_ARMOR_MEDIUMHIGH - armor_internaldamage = CLOTHING_ARMOR_LOW - storage_slots = 2 - -/obj/item/clothing/suit/storage/marine/light/padded - icon_state = "L1" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/padless - icon_state = "L2" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/padless_lines - icon_state = "L3" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/carrier - icon_state = "L4" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/skull - icon_state = "L5" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/smooth - icon_state = "L6" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/light/vest - name = "\improper M3-VL pattern ballistics vest" - desc = "Up until 2182 USCM non-combat personnel were issued non-standardized ballistics vests, though the lack of IMP compatibility and suit lamps proved time and time again inefficient. This modified M3-L shell is the result of a 6-year R&D program; It provides utility, protection, AND comfort to all USCM non-combat personnel." - icon_state = "VL" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - flags_marine_armor = ARMOR_LAMP_OVERLAY //No squad colors when wearing this since it'd look funny. - armor_melee = CLOTHING_ARMOR_MEDIUMLOW - armor_bullet = CLOTHING_ARMOR_HIGH - armor_energy = CLOTHING_ARMOR_LOW - armor_bomb = CLOTHING_ARMOR_LOW - armor_bio = CLOTHING_ARMOR_VERYLOW - armor_rad = CLOTHING_ARMOR_NONE - armor_internaldamage = CLOTHING_ARMOR_MEDIUM - storage_slots = 1 - time_to_unequip = 0.5 SECONDS - time_to_equip = 1 SECONDS - siemens_coefficient = 0.7 - uniform_restricted = null - -/obj/item/clothing/suit/storage/marine/light/vest/dcc - name = "\improper M3-VL pattern flak vest" - desc = "A combination of the standard non-combat M3-VL ballistics vest and M70 flak jacket, this piece of armor has been distributed to dropship crew to keep them safe from threats external and internal..." - icon_state = "VL_FLAK" - storage_slots = 2 - -/obj/item/clothing/suit/storage/marine/light/synvest - name = "\improper M3A1 Synthetic Utility Vest" - desc = "This variant of the ubiquitous M3 pattern ballistics vest has been extensively modified, providing no protection in exchange for maximum mobility and storage space. Synthetic programming compliant." - icon_state = "VL_syn_camo" - flags_atom = NO_NAME_OVERRIDE - flags_marine_armor = ARMOR_LAMP_OVERLAY|SYNTH_ALLOWED //No squad colors + can be worn by synths. - armor_melee = CLOTHING_ARMOR_NONE - armor_bullet = CLOTHING_ARMOR_NONE - armor_laser = CLOTHING_ARMOR_NONE - armor_energy = CLOTHING_ARMOR_NONE - armor_bomb = CLOTHING_ARMOR_NONE - armor_bio = CLOTHING_ARMOR_NONE - armor_rad = CLOTHING_ARMOR_NONE - armor_internaldamage = CLOTHING_ARMOR_NONE - storage_slots = 3 - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT - time_to_unequip = 0.5 SECONDS - time_to_equip = 1 SECONDS - uniform_restricted = null - -/obj/item/clothing/suit/storage/marine/light/synvest/grey - icon_state = "VL_syn" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - -/obj/item/clothing/suit/storage/marine/light/synvest/jungle - icon_state = "VL_syn_camo" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - -/obj/item/clothing/suit/storage/marine/light/synvest/snow - icon_state = "s_VL_syn_camo" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - -/obj/item/clothing/suit/storage/marine/light/synvest/desert - icon_state = "d_VL_syn_camo" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - -/obj/item/clothing/suit/storage/marine/light/synvest/dgrey - icon_state = "c_VL_syn_camo" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - -/obj/item/clothing/suit/storage/marine/heavy - name = "\improper M3-EOD pattern heavy armor" - desc = "A heavier version of the standard M3 pattern armor, the armor is primarily designed to withstand ballistic, explosive, and internal damage, with the drawback of increased bulk and thus reduced movement speed, alongside little additional protection from standard blunt force impacts and biological threats." - desc_lore = "This configuration of the iconic armor was developed during the Canton War in 2160 between the UPP and USCM - Designed in response to a need for higher protection for ComTechs assigned as EODs during the conflict, this is the pinnacle of protection for your average marine. The shoulders and kneepads have both been expanded upon heavily, covering up the arteries on each limb. A special spall liner was developed for this suit, with the same technology being used in the M70 Flak Jacket being developed at the same time." - specialty = "\improper M3-EOD pattern" - icon_state = "H1" - armor_variation = 6 - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - armor_bullet = CLOTHING_ARMOR_HIGHPLUS - armor_bomb = CLOTHING_ARMOR_HIGHPLUS - armor_bio = CLOTHING_ARMOR_MEDIUMHIGH - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - storage_slots = 2 - slowdown = SLOWDOWN_ARMOR_LOWHEAVY - movement_compensation = SLOWDOWN_ARMOR_MEDIUM - light_power = 4 - light_range = 5 - -/obj/item/clothing/suit/storage/marine/heavy/padded - icon_state = "H1" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/heavy/padless - icon_state = "H2" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/heavy/padless_lines - icon_state = "H3" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/heavy/carrier - icon_state = "H4" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/heavy/skull - icon_state = "H5" - armor_variation = 0 - -/obj/item/clothing/suit/storage/marine/heavy/smooth - icon_state = "H6" - armor_variation = 0 - -//===========================//SPECIALIST\\================================\\ -//=======================================================================\\ - -/obj/item/clothing/suit/storage/marine/specialist - name = "\improper B18 defensive armor" - desc = "A heavy, rugged set of armor plates for when you really, really need to not die horribly. Slows you down though.\nComes with two tricord injectors in each arm guard." - icon_state = "xarmor" - armor_melee = CLOTHING_ARMOR_HIGH - armor_bullet = CLOTHING_ARMOR_HIGH - armor_bomb = CLOTHING_ARMOR_VERYHIGH - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_rad = CLOTHING_ARMOR_MEDIUMHIGH - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - storage_slots = 2 - flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - slowdown = SLOWDOWN_ARMOR_HEAVY - specialty = "B18 defensive" - unacidable = TRUE - var/injections = 4 - -/obj/item/clothing/suit/storage/marine/specialist/verb/inject() - set name = "Create Injector" - set category = "Object" - set src in usr - - if(usr.is_mob_incapacitated()) - return 0 - - if(!injections) - to_chat(usr, "Your armor is all out of injectors.") - return 0 - - if(usr.get_active_hand()) - to_chat(usr, "Your active hand must be empty.") - return 0 - - to_chat(usr, "You feel a faint hiss and an injector drops into your hand.") - var/obj/item/reagent_container/hypospray/autoinjector/skillless/O = new(usr) - usr.put_in_active_hand(O) - injections-- - playsound(src,'sound/machines/click.ogg', 15, 1) - return - -/obj/item/clothing/suit/storage/marine/M3G - name = "\improper M3-G4 grenadier armor" - desc = "A custom set of M3 armor packed to the brim with padding, plating, and every form of ballistic protection under the sun. Used exclusively by USCM Grenadiers." - icon_state = "grenadier" - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_bomb = CLOTHING_ARMOR_VERYHIGH - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN - flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - slowdown = SLOWDOWN_ARMOR_HEAVY - specialty = "M3-G4 grenadier" - unacidable = TRUE - -/obj/item/clothing/suit/storage/marine/M3T - name = "\improper M3-T light armor" - desc = "A custom set of M3 armor designed for users of long-ranged explosive weaponry." - icon_state = "demolitionist" - armor_bomb = CLOTHING_ARMOR_HIGH - slowdown = SLOWDOWN_ARMOR_LIGHT - specialty = "M3-T light" - flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE - unacidable = TRUE - -/obj/item/clothing/suit/storage/marine/M3S - name = "\improper M3-S light armor" - desc = "A custom set of M3 armor designed for USCM Scouts." - icon_state = "scout_armor" - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - slowdown = SLOWDOWN_ARMOR_LIGHT - specialty = "M3-S light" - flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE - unacidable = TRUE - -#define FIRE_SHIELD_CD 150 - -/obj/item/clothing/suit/storage/marine/M35 - name = "\improper M35 pyrotechnician armor" - desc = "A custom set of M35 armor designed for use by USCM Pyrotechnicians." - icon_state = "pyro_armor" - armor_bio = CLOTHING_ARMOR_MEDIUMHIGH - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - fire_intensity_resistance = BURN_LEVEL_TIER_1 - max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROT - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE - specialty = "M35 pyrotechnician" - actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/specialist/fire_shield) - unacidable = TRUE - var/fire_shield_on = FALSE - var/can_activate = TRUE - -/obj/item/clothing/suit/storage/marine/M35/equipped(mob/user, slot) - if(slot == WEAR_JACKET) - RegisterSignal(user, COMSIG_LIVING_FLAMER_CROSSED, PROC_REF(flamer_fire_callback)) - ..() - -/obj/item/clothing/suit/storage/marine/M35/verb/fire_shield() - set name = "Activate Fire Shield" - set desc = "Activate your armor's FIREWALK protocol for a short duration." - set category = "Pyro" - set src in usr - if(!usr || usr.is_mob_incapacitated(TRUE)) - return - if(!ishuman(usr)) - return - var/mob/living/carbon/human/H = usr - - if(H.wear_suit != src) - to_chat(H, SPAN_WARNING("You must be wearing the M35 pyro armor to activate FIREWALK protocol!")) - return - - if(!skillcheck(H, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && H.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_PYRO) - to_chat(H, SPAN_WARNING("You don't seem to know how to use [src]...")) - return - - if(fire_shield_on) - to_chat(H, SPAN_WARNING("You already have FIREWALK protocol activated!")) - return - - if(!can_activate) - to_chat(H, SPAN_WARNING("FIREWALK protocol was recently activated, wait before trying to activate it again.")) - return - - to_chat(H, SPAN_NOTICE("FIREWALK protocol has been activated. You will now be immune to fire for 6 seconds!")) - RegisterSignal(H, COMSIG_LIVING_PREIGNITION, PROC_REF(fire_shield_is_on)) - RegisterSignal(H, list( - COMSIG_LIVING_FLAMER_FLAMED, - ), PROC_REF(flamer_fire_callback)) - fire_shield_on = TRUE - can_activate = FALSE - for(var/X in actions) - var/datum/action/A = X - A.update_button_icon() - addtimer(CALLBACK(src, PROC_REF(end_fire_shield), H), 6 SECONDS) - - H.add_filter("firewalk_on", 1, list("type" = "outline", "color" = "#03fcc6", "size" = 1)) - -/obj/item/clothing/suit/storage/marine/M35/proc/end_fire_shield(mob/living/carbon/human/user) - if(!istype(user)) - return - to_chat(user, SPAN_NOTICE("FIREWALK protocol has finished.")) - UnregisterSignal(user, list( - COMSIG_LIVING_PREIGNITION, - COMSIG_LIVING_FLAMER_FLAMED, - )) - fire_shield_on = FALSE - - user.remove_filter("firewalk_on") - - addtimer(CALLBACK(src, PROC_REF(enable_fire_shield), user), FIRE_SHIELD_CD) - -/obj/item/clothing/suit/storage/marine/M35/proc/enable_fire_shield(mob/living/carbon/human/user) - if(!istype(user)) - return - to_chat(user, SPAN_NOTICE("FIREWALK protocol can be activated again.")) - can_activate = TRUE - - for(var/X in actions) - var/datum/action/A = X - A.update_button_icon() - -/// This proc is solely so that IgniteMob() fails -/obj/item/clothing/suit/storage/marine/M35/proc/fire_shield_is_on(mob/living/L) - SIGNAL_HANDLER - - if(L.fire_reagent?.fire_penetrating) - return - - return COMPONENT_CANCEL_IGNITION - -/obj/item/clothing/suit/storage/marine/M35/proc/flamer_fire_callback(mob/living/L, datum/reagent/R) - SIGNAL_HANDLER - - if(R.fire_penetrating) - return - - . = COMPONENT_NO_IGNITE - if(fire_shield_on) - . |= COMPONENT_NO_BURN - -/obj/item/clothing/suit/storage/marine/M35/dropped(mob/user) - if (!istype(user)) - return - UnregisterSignal(user, list( - COMSIG_LIVING_PREIGNITION, - COMSIG_LIVING_FLAMER_CROSSED, - COMSIG_LIVING_FLAMER_FLAMED, - )) - ..() - -#undef FIRE_SHIELD_CD - -/datum/action/item_action/specialist/fire_shield - ability_primacy = SPEC_PRIMARY_ACTION_2 - -/datum/action/item_action/specialist/fire_shield/New(mob/living/user, obj/item/holder) - ..() - name = "Activate Fire Shield" - button.name = name - button.overlays.Cut() - var/image/IMG = image('icons/obj/items/clothing/cm_suits.dmi', button, "pyro_armor") - button.overlays += IMG - -/datum/action/item_action/specialist/fire_shield/action_cooldown_check() - var/obj/item/clothing/suit/storage/marine/M35/armor = holder_item - if (!istype(armor)) - return FALSE - - return !armor.can_activate - -/datum/action/item_action/specialist/fire_shield/can_use_action() - var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && H.wear_suit == holder_item) - return TRUE - -/datum/action/item_action/specialist/fire_shield/action_activate() - var/obj/item/clothing/suit/storage/marine/M35/armor = holder_item - if (!istype(armor)) - return - - armor.fire_shield() - -#define FULL_CAMOUFLAGE_ALPHA 15 - -/obj/item/clothing/suit/storage/marine/ghillie - name = "\improper M45 pattern ghillie armor" - desc = "A lightweight ghillie camouflage suit, used by USCM snipers on recon missions. Very lightweight, but doesn't protect much." - icon_state = "ghillie_armor" - armor_bio = CLOTHING_ARMOR_MEDIUMHIGH - slowdown = SLOWDOWN_ARMOR_LIGHT - flags_marine_armor = ARMOR_LAMP_OVERLAY - flags_item = MOB_LOCK_ON_EQUIP - specialty = "M45 pattern ghillie" - valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_PONCHO) - restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) - - var/camo_active = FALSE - var/hide_in_progress = FALSE - var/full_camo_alpha = FULL_CAMOUFLAGE_ALPHA - var/incremental_shooting_camo_penalty = 35 - var/current_camo = FULL_CAMOUFLAGE_ALPHA - var/camouflage_break = 5 SECONDS - var/camouflage_enter_delay = 4 SECONDS - var/can_camo = TRUE - - actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/specialist/prepare_position) - -/obj/item/clothing/suit/storage/marine/ghillie/dropped(mob/user) - if(ishuman(user) && !issynth(user)) - deactivate_camouflage(user, FALSE) - - . = ..() - -/obj/item/clothing/suit/storage/marine/ghillie/verb/camouflage() - set name = "Prepare Position" - set desc = "Use the ghillie suit and the nearby environment to become near invisible." - set category = "Object" - set src in usr - if(!usr || usr.is_mob_incapacitated(TRUE)) - return - - if(!ishuman(usr) || hide_in_progress || !can_camo) - return - var/mob/living/carbon/human/H = usr - if(!skillcheck(H, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && H.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SNIPER && !(GLOB.character_traits[/datum/character_trait/skills/spotter] in H.traits)) - to_chat(H, SPAN_WARNING("You don't seem to know how to use [src]...")) - return - if(H.wear_suit != src) - to_chat(H, SPAN_WARNING("You must be wearing the ghillie suit to activate it!")) - return - - if(camo_active) - deactivate_camouflage(H) - return - - H.visible_message(SPAN_DANGER("[H] goes prone, and begins adjusting \his ghillie suit!"), SPAN_NOTICE("You go prone, and begins adjusting your ghillie suit."), max_distance = 4) - hide_in_progress = TRUE - H.unset_interaction() // If we're sticking to a machine gun or what not. - if(!do_after(H, camouflage_enter_delay, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) - hide_in_progress = FALSE - return - hide_in_progress = FALSE - RegisterSignal(H, list( - COMSIG_MOB_FIRED_GUN, - COMSIG_MOB_FIRED_GUN_ATTACHMENT) - , PROC_REF(fade_in)) - RegisterSignal(H, list( - COMSIG_MOB_DEATH, - COMSIG_HUMAN_EXTINGUISH - ), PROC_REF(deactivate_camouflage)) - camo_active = TRUE - H.alpha = full_camo_alpha - H.FF_hit_evade = 1000 - ADD_TRAIT(H, TRAIT_UNDENSE, SPECIALIST_GEAR_TRAIT) - - RegisterSignal(H, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(handle_mob_move_or_look)) - - var/datum/mob_hud/security/advanced/SA = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] - SA.remove_from_hud(H) - var/datum/mob_hud/xeno_infection/XI = GLOB.huds[MOB_HUD_XENO_INFECTION] - XI.remove_from_hud(H) - - anim(H.loc, H, 'icons/mob/mob.dmi', null, "cloak", null, H.dir) - - -/obj/item/clothing/suit/storage/marine/ghillie/proc/deactivate_camouflage(mob/user) - SIGNAL_HANDLER - var/mob/living/carbon/human/H = user - if(!istype(H)) - return FALSE - - if(!camo_active) - return - - UnregisterSignal(H, list( - COMSIG_MOB_FIRED_GUN, - COMSIG_MOB_FIRED_GUN_ATTACHMENT, - COMSIG_MOB_DEATH, - COMSIG_HUMAN_EXTINGUISH, - COMSIG_MOB_MOVE_OR_LOOK - )) - - camo_active = FALSE - 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) - - var/datum/mob_hud/security/advanced/SA = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] - SA.add_to_hud(H) - var/datum/mob_hud/xeno_infection/XI = GLOB.huds[MOB_HUD_XENO_INFECTION] - XI.add_to_hud(H) - - H.visible_message(SPAN_DANGER("[H]'s camouflage fails!"), SPAN_WARNING("Your camouflage fails!"), max_distance = 4) - -/obj/item/clothing/suit/storage/marine/ghillie/proc/fade_in(mob/user) - SIGNAL_HANDLER - var/mob/living/carbon/human/H = user - if(camo_active) - if(current_camo < full_camo_alpha) - current_camo = full_camo_alpha - current_camo = clamp(current_camo + incremental_shooting_camo_penalty, full_camo_alpha, 255) - H.alpha = current_camo - addtimer(CALLBACK(src, PROC_REF(fade_out_finish), H), camouflage_break, TIMER_OVERRIDE|TIMER_UNIQUE) - animate(H, alpha = full_camo_alpha + 5, time = camouflage_break, easing = LINEAR_EASING, flags = ANIMATION_END_NOW) - -/obj/item/clothing/suit/storage/marine/ghillie/proc/fade_out_finish(mob/living/carbon/human/H) - if(camo_active && H.wear_suit == src) - to_chat(H, SPAN_BOLDNOTICE("The smoke clears and your position is once again hidden completely!")) - animate(H, alpha = full_camo_alpha) - current_camo = full_camo_alpha - -/obj/item/clothing/suit/storage/marine/ghillie/proc/handle_mob_move_or_look(mob/living/mover, actually_moving, direction, specific_direction) - SIGNAL_HANDLER - - if(camo_active && actually_moving) - deactivate_camouflage(mover) - -/datum/action/item_action/specialist/prepare_position - ability_primacy = SPEC_PRIMARY_ACTION_1 - -/datum/action/item_action/specialist/prepare_position/New(mob/living/user, obj/item/holder) - ..() - name = "Prepare Position" - button.name = name - button.overlays.Cut() - var/image/IMG = image('icons/mob/hud/actions.dmi', button, "prepare_position") - button.overlays += IMG - -/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.body_position == STANDING_UP && holder_item == H.wear_suit) - return TRUE - -/datum/action/item_action/specialist/prepare_position/action_activate() - var/obj/item/clothing/suit/storage/marine/ghillie/GS = holder_item - GS.camouflage() - -#undef FULL_CAMOUFLAGE_ALPHA - -/obj/item/clothing/suit/storage/marine/ghillie/forecon - name = "UDEP Thermal Poncho" - desc = "UDEP or the Ultra Diffusive Environmental Poncho is a camouflaged rain-cover worn to protect against the elements and chemical spills. It's commonly treated with an infrared absorbing coating, making a marine almost invisible in the rain. Favoured by USCM specialists for it's comfort and practicality." - icon_state = "mercenary_miner_armor" - flags_atom = MOB_LOCK_ON_EQUIP|NO_SNOW_TYPE|NO_NAME_OVERRIDE - -/obj/item/clothing/suit/storage/marine/sof - name = "\improper SOF Armor" - desc = "A heavily customized suit of M3 armor. Used by Marine Raiders." - icon_state = "marsoc" - armor_melee = CLOTHING_ARMOR_HIGH - armor_bullet = CLOTHING_ARMOR_HIGH - armor_bomb = CLOTHING_ARMOR_VERYHIGH - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_rad = CLOTHING_ARMOR_MEDIUMHIGH - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - slowdown = SLOWDOWN_ARMOR_LIGHT - unacidable = TRUE - flags_atom = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE|NO_SNOW_TYPE - storage_slots = 4 - -//=============================//pmcS\\==================================\\ -//=======================================================================\\ - -/obj/item/clothing/suit/storage/marine/veteran - flags_marine_armor = ARMOR_LAMP_OVERLAY - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE //Let's make these keep their name and icon. - -/obj/item/clothing/suit/storage/marine/veteran/pmc - name = "\improper M4 pattern PMC armor" - desc = "A modification of the standard Armat Systems M3 armor. Designed for high-profile security operators and corporate mercenaries in mind." - icon_state = "pmc_armor" - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - storage_slots = 2 - slowdown = SLOWDOWN_ARMOR_LIGHT - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - allowed = list( - /obj/item/weapon/gun, - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/ammo_magazine/, - /obj/item/weapon/baton, - /obj/item/handcuffs, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/explosive/grenade, - /obj/item/storage/bible, - /obj/item/tool/crowbar, - /obj/item/storage/large_holster/katana, - /obj/item/storage/large_holster/machete, - /obj/item/weapon/sword/machete, - /obj/item/attachable/bayonet, - /obj/item/device/motiondetector, - /obj/item/tool/crew_monitor, - /obj/item/device/walkman, - ) - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/pmc) - item_state_slots = list(WEAR_JACKET = "pmc_armor") - -/obj/item/clothing/suit/storage/marine/veteran/pmc/light - name = "\improper M4 pattern light PMC armor" - desc = "A modification of the standard Armat Systems M3 armor. Designed for high-profile security operators and corporate mercenaries in mind. Has some armor plating removed for extra mobility." - icon_state = "pmc_sniper" - armor_melee = CLOTHING_ARMOR_MEDIUMLOW - armor_bullet = CLOTHING_ARMOR_MEDIUM - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUMLOW - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_MEDIUMLOW - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT - item_state_slots = list(WEAR_JACKET = "pmc_sniper") - -/obj/item/clothing/suit/storage/marine/veteran/pmc/light/corporate - name = "\improper M1 pattern corporate security armor" - desc = "A basic vest with a Weyland-Yutani badge on the right breast. This is commonly worn by low-level guards protecting Weyland-Yutani facilities." - icon = 'icons/mob/humans/onmob/contained/wy_goons.dmi' - icon_state = "armor" - item_state = "armor" - item_state_slots = null - contained_sprite = TRUE - - flags_armor_protection = BODY_FLAG_CHEST - flags_cold_protection = BODY_FLAG_CHEST - flags_heat_protection = BODY_FLAG_CHEST - - slowdown = SLOWDOWN_ARMOR_NONE // only protects chest, but enables rapid movement - -/obj/item/clothing/suit/storage/marine/veteran/pmc/light/corporate/lead - desc = "A basic vest with a Weyland-Yutani badge on the right breast. This variant is worn by low-level guards that have elevated in rank due to 'good conduct in the field', also known as corporate bootlicking." - icon_state = "lead_armor" - item_state = "lead_armor" - -/obj/item/clothing/suit/storage/marine/veteran/pmc/leader - name = "\improper M4 pattern PMC leader armor" - desc = "A modification of the standard Armat Systems M3 armor. Designed for high-profile security operators and corporate mercenaries in mind. This particular suit looks like it belongs to a high-ranking officer." - icon_state = "officer_armor" - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/pmc/leader) - item_state_slots = list(WEAR_JACKET = "officer_armor") - -/obj/item/clothing/suit/storage/marine/veteran/pmc/sniper - name = "\improper M4 pattern PMC sniper armor" - icon_state = "pmc_sniper" - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_MEDIUM - flags_inv_hide = HIDELOWHAIR - item_state_slots = list(WEAR_JACKET = "pmc_sniper") - -/obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth - name = "\improper M4 Synthetic PMC armor" - desc = "A serious modification of the standard Armat Systems M3 armor. This variant was designed for PMC Support Units in the field, with every armor insert removed. It's designed with the idea of a high speed lifesaver in mind." - time_to_unequip = 0.5 SECONDS - time_to_equip = 1 SECONDS - armor_melee = CLOTHING_ARMOR_NONE - armor_bullet = CLOTHING_ARMOR_NONE - armor_laser = CLOTHING_ARMOR_NONE - armor_energy = CLOTHING_ARMOR_NONE - armor_bomb = CLOTHING_ARMOR_NONE - armor_bio = CLOTHING_ARMOR_NONE - armor_rad = CLOTHING_ARMOR_NONE - armor_internaldamage = CLOTHING_ARMOR_NONE - storage_slots = 3 - slowdown = SLOWDOWN_ARMOR_SUPER_LIGHT - -/obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth/Initialize() - flags_atom |= NO_NAME_OVERRIDE - flags_marine_armor |= SYNTH_ALLOWED - return ..() - -/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc - name = "\improper PMC gunner armor" - desc = "A modification of the standard Armat Systems M3 armor. Hooked up with harnesses and straps allowing the user to carry an M56 Smartgun." - icon_state = "heavy_armor" - flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN|SMARTGUN_HARNESS - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_laser = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - item_state_slots = list(WEAR_JACKET = "heavy_armor") - -/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc/terminator - name = "\improper M5Xg exoskeleton gunner armor" - desc = "A complex system of overlapping plates intended to render the wearer all but impervious to small arms fire. A passive exoskeleton supports the weight of the armor, allowing a human to carry its massive bulk. This variant is designed to support a M56 Smartgun." - icon_state = "commando_armor" - slowdown = SLOWDOWN_ARMOR_MEDIUM - movement_compensation = SLOWDOWN_ARMOR_VERY_HEAVY - armor_melee = CLOTHING_ARMOR_HIGH - armor_bullet = CLOTHING_ARMOR_ULTRAHIGH - armor_laser = CLOTHING_ARMOR_MEDIUM - armor_energy = CLOTHING_ARMOR_MEDIUM - armor_bomb = CLOTHING_ARMOR_VERYHIGH - armor_rad = CLOTHING_ARMOR_MEDIUMHIGH - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/pmc/commando) - item_state_slots = list(WEAR_JACKET = "commando_armor") - unacidable = TRUE - -/obj/item/clothing/suit/storage/marine/veteran/pmc/commando - name = "\improper M5X exoskeleton armor" - desc = "A complex system of overlapping plates intended to render the wearer all but impervious to small arms fire. A passive exoskeleton supports the weight of the armor, allowing a human to carry its massive bulk." - icon_state = "commando_armor" - slowdown = SLOWDOWN_ARMOR_MEDIUM - movement_compensation = SLOWDOWN_ARMOR_VERY_HEAVY - armor_melee = CLOTHING_ARMOR_VERYHIGH - armor_bullet = CLOTHING_ARMOR_ULTRAHIGH - armor_energy = CLOTHING_ARMOR_MEDIUM - armor_bomb = CLOTHING_ARMOR_VERYHIGH - armor_rad = CLOTHING_ARMOR_MEDIUMHIGH - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - flags_inventory = BLOCK_KNOCKDOWN - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/pmc/commando) - item_state_slots = list(WEAR_JACKET = "commando_armor") - unacidable = TRUE - -//===========================//DISTRESS\\================================\\ -//=======================================================================\\ - -/obj/item/clothing/suit/storage/marine/veteran/bear - name = "\improper H1 Iron Bears vest" - desc = "A protective vest worn by Iron Bears mercenaries." - icon_state = "bear_armor" - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - storage_slots = 2 - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/bear) - -/obj/item/clothing/suit/storage/marine/veteran/dutch - name = "\improper D2 armored vest" - desc = "A protective vest worn by some seriously experienced mercs." - icon_state = "dutch_armor" - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS //Makes no sense but they need leg/arm armor too. - armor_melee = CLOTHING_ARMOR_HIGH - armor_bullet = CLOTHING_ARMOR_HIGHPLUS - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_HIGH - armor_rad = CLOTHING_ARMOR_MEDIUM - storage_slots = 2 - light_range = 7 - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/dutch) - -/obj/item/clothing/suit/storage/marine/veteran/van_bandolier - name = "safari jacket" - desc = "A tailored hunting jacket, cunningly lined with segmented armor plates. Sometimes the game shoots back." - icon_state = "van_bandolier" - item_state = "van_bandolier_jacket" - blood_overlay_type = "coat" - flags_marine_armor = NO_FLAGS //No shoulder light. - actions_types = list() - slowdown = SLOWDOWN_ARMOR_LIGHT - storage_slots = 2 - movement_compensation = SLOWDOWN_ARMOR_LIGHT - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/van_bandolier) - allowed = list( - /obj/item/weapon/gun, - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/storage/bible, - /obj/item/attachable/bayonet, - /obj/item/storage/backpack/general_belt, - /obj/item/storage/large_holster/machete, - /obj/item/storage/belt/gun/m4a3, - /obj/item/storage/belt/gun/m44, - /obj/item/storage/belt/gun/smartpistol, - /obj/item/storage/belt/gun/flaregun, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - /obj/item/storage/belt/shotgun/van_bandolier, - ) - -//===========================//U.P.P\\================================\\ -//=====================================================================\\ - -/obj/item/clothing/suit/storage/marine/faction - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - min_cold_protection_temperature = HELMET_MIN_COLD_PROT - max_heat_protection_temperature = HELMET_MAX_HEAT_PROT - blood_overlay_type = "armor" - armor_melee = CLOTHING_ARMOR_MEDIUM - armor_bullet = CLOTHING_ARMOR_MEDIUM - armor_laser = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - slowdown = SLOWDOWN_ARMOR_MEDIUM - movement_compensation = SLOWDOWN_ARMOR_LIGHT - - -/obj/item/clothing/suit/storage/marine/faction/UPP - name = "\improper UM5 personal armor" - desc = "Standard body armor of the UPP military, the UM5 (Union Medium MK5) is a medium body armor, roughly on par with the M3 pattern body armor in service with the USCM, specialized towards ballistics protection. Unlike the M3, however, the plate has a heavier neckplate. This has earned many UA members to refer to UPP soldiers as 'tin men'." - icon_state = "upp_armor" - armor_bullet = CLOTHING_ARMOR_HIGH - armor_energy = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_rad = CLOTHING_ARMOR_MEDIUMLOW - armor_internaldamage = CLOTHING_ARMOR_HIGH - storage_slots = 1 - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP, /obj/item/clothing/under/marine/veteran/UPP/medic, /obj/item/clothing/under/marine/veteran/UPP/engi) - -/obj/item/clothing/suit/storage/marine/faction/UPP/support - name = "\improper UL6 personal armor" - desc = "Standard body armor of the UPP military, the UL6 (Union Light MK6) is a light body armor, slightly weaker than the M3 pattern body armor in service with the USCM, specialized towards ballistics protection. This set of personal armor lacks the iconic neck piece and some of the armor in favor of user mobility." - storage_slots = 3 - icon_state = "upp_armor_support" - slowdown = SLOWDOWN_ARMOR_LIGHT - armor_melee = CLOTHING_ARMOR_HIGH - armor_energy = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_rad = CLOTHING_ARMOR_MEDIUMLOW - armor_internaldamage = CLOTHING_ARMOR_HIGH - -/obj/item/clothing/suit/storage/marine/faction/UPP/commando - name = "\improper UM5CU personal armor" - desc = "A modification of the UM5, designed for stealth operations." - icon_state = "upp_armor_commando" - storage_slots = 2 - slowdown = SLOWDOWN_ARMOR_LIGHT - -/obj/item/clothing/suit/storage/marine/faction/UPP/heavy - name = "\improper UH7 heavy plated armor" - desc = "An extremely heavy-duty set of body armor in service with the UPP military, the UH7 (Union Heavy MK7) is known for having powerful ballistic protection, alongside a noticeable neck guard, fortified in order to allow the wearer to endure the stresses of the bulky helmet." - icon_state = "upp_armor_heavy" - storage_slots = 3 - slowdown = SLOWDOWN_ARMOR_HEAVY - flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN - flags_armor_protection = BODY_FLAG_ALL_BUT_HEAD - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - armor_bullet = CLOTHING_ARMOR_HIGHPLUS - armor_laser = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_MEDIUM - armor_bomb = CLOTHING_ARMOR_HIGH - armor_bio = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUMLOW - armor_internaldamage = CLOTHING_ARMOR_HIGHPLUS - -/obj/item/clothing/suit/storage/marine/faction/UPP/heavy/Initialize() - . = ..() - pockets.bypass_w_limit = list( - /obj/item/ammo_magazine/minigun, - /obj/item/ammo_magazine/pkp, - ) - -/obj/item/clothing/suit/storage/marine/faction/UPP/officer - name = "\improper UL4 officer jacket" - desc = "A lightweight jacket, issued to officers of the UPP's military. Slightly protective from incoming damage, best off with proper armor however." - icon_state = "upp_coat_officer" - slowdown = SLOWDOWN_ARMOR_NONE - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS - armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat - armor_bullet = CLOTHING_ARMOR_LOW - armor_energy = CLOTHING_ARMOR_LOW - armor_bomb = CLOTHING_ARMOR_LOW - armor_bio = CLOTHING_ARMOR_LOW - armor_rad = CLOTHING_ARMOR_LOW - armor_internaldamage = CLOTHING_ARMOR_LOW - storage_slots = 3 - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP/officer) - -/obj/item/clothing/suit/storage/marine/faction/UPP/kapitan - name = "\improper UL4 senior officer jacket" - desc = "A lightweight jacket, issued to senior officers of the UPP's military. Made of high-quality materials, even going as far as having the ranks and insignia of the Kapitan and their Company emblazoned on the shoulders and front of the jacket. Slightly protective from incoming damage, best off with proper armor however." - icon_state = "upp_coat_kapitan" - slowdown = SLOWDOWN_ARMOR_NONE - armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat - armor_bullet = CLOTHING_ARMOR_LOW - armor_energy = CLOTHING_ARMOR_LOW - armor_bomb = CLOTHING_ARMOR_LOW - armor_bio = CLOTHING_ARMOR_LOW - armor_rad = CLOTHING_ARMOR_LOW - armor_internaldamage = CLOTHING_ARMOR_LOW - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS - storage_slots = 4 - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP/officer) - -/obj/item/clothing/suit/storage/marine/faction/UPP/mp - name = "\improper UL4 camouflaged jacket" - desc = "A lightweight jacket, issued to troops when they're not expected to engage in combat. Still studded to the brim with kevlar shards, though the synthread construction reduces its effectiveness." - icon_state = "upp_coat_mp" - slowdown = SLOWDOWN_ARMOR_NONE - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS - armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat - armor_bullet = CLOTHING_ARMOR_LOW - armor_energy = CLOTHING_ARMOR_LOW - armor_bomb = CLOTHING_ARMOR_LOW - armor_bio = CLOTHING_ARMOR_LOW - armor_rad = CLOTHING_ARMOR_LOW - armor_internaldamage = CLOTHING_ARMOR_LOW - storage_slots = 4 - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP) - valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL) - restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) - -/obj/item/clothing/suit/storage/marine/faction/UPP/jacket/ivan - name = "\improper UH4 Camo Jacket" - desc = "An experimental heavily armored variant of the UL4 given to only the most elite units... usually." - slowdown = SLOWDOWN_ARMOR_MEDIUM - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_ARMS|BODY_FLAG_HANDS|BODY_FLAG_FEET - armor_melee = CLOTHING_ARMOR_HIGH - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_HIGH - armor_bio = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_HIGH - storage_slots = 2 - - -//===========================//FREELANCER\\================================\\ -//=====================================================================\\ - -/obj/item/clothing/suit/storage/marine/faction/freelancer - name = "freelancer cuirass" - desc = "An armored protective chestplate scrapped together from various plates. It keeps up remarkably well, as the craftsmanship is solid, and the design mirrors such armors in the UPP and the USCM. The many skilled craftsmen in the freelancers ranks produce these vests at a rate about one a month." - icon_state = "freelancer_armor" - slowdown = SLOWDOWN_ARMOR_LIGHT - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - storage_slots = 2 - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/freelancer) - -//this one is for CLF -/obj/item/clothing/suit/storage/militia - name = "colonial militia hauberk" - desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops." - icon = 'icons/obj/items/clothing/cm_suits.dmi' - icon_state = "rebel_armor" - item_icons = list( - WEAR_JACKET = 'icons/mob/humans/onmob/suit_1.dmi' - ) - sprite_sheets = list(SPECIES_MONKEY = 'icons/mob/humans/species/monkeys/onmob/suit_monkey_1.dmi') - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_ARMS - movement_compensation = SLOWDOWN_ARMOR_MEDIUM - armor_melee = CLOTHING_ARMOR_MEDIUM - armor_bullet = CLOTHING_ARMOR_MEDIUMLOW - armor_laser = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_MEDIUMLOW - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_MEDIUM - storage_slots = 2 - uniform_restricted = list(/obj/item/clothing/under/colonist) - 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/backpack/general_belt, - /obj/item/storage/large_holster/machete, - /obj/item/weapon/baseballbat, - /obj/item/weapon/baseballbat/metal, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - ) - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_FEET|BODY_FLAG_ARMS|BODY_FLAG_HANDS - min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROT - valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL) - -/obj/item/clothing/suit/storage/militia/Initialize() - . = ..() - pockets.max_w_class = SIZE_SMALL //Can contain small items AND rifle magazines. - pockets.bypass_w_limit = list( - /obj/item/ammo_magazine/rifle, - /obj/item/ammo_magazine/smg, - /obj/item/ammo_magazine/sniper, - ) - pockets.max_storage_space = 8 - -/obj/item/clothing/suit/storage/militia/vest - name = "colonial militia vest" - desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops. This extremely light variant protects only the chest and abdomen." - icon_state = "clf_2" - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - slowdown = 0.2 - movement_compensation = SLOWDOWN_ARMOR_MEDIUM - -/obj/item/clothing/suit/storage/militia/brace - name = "colonial militia brace" - desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops. This extremely light variant has some of the chest pieces removed." - icon_state = "clf_3" - flags_armor_protection = BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - flags_cold_protection = BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - slowdown = 0.2 - movement_compensation = SLOWDOWN_ARMOR_MEDIUM - -/obj/item/clothing/suit/storage/militia/partial - name = "colonial militia partial hauberk" - desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops. This even lighter variant has some of the arm pieces removed." - icon_state = "clf_4" - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS - slowdown = 0.2 - -/obj/item/clothing/suit/storage/militia/smartgun - name = "colonial militia harness" - desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops. This one has straps interweaved with the plates, that allow the user to fire a captured smartgun, if a bit uncomfortably." - flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS - -/obj/item/clothing/suit/storage/CMB - name = "\improper CMB jacket" - desc = "A black jacket worn by Colonial Marshals. The back is enscribed with the powerful letters of 'MARSHAL' representing justice, authority, and protection in the outer rim. The laws of the Earth stretch beyond the Sol." - icon_state = "CMB_jacket" - blood_overlay_type = "coat" - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS - armor_melee = CLOTHING_ARMOR_MEDIUMLOW - armor_bullet = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_LOW - armor_bomb = CLOTHING_ARMOR_LOW - armor_bio = CLOTHING_ARMOR_LOW - armor_internaldamage = CLOTHING_ARMOR_LOW - allowed = list( - /obj/item/weapon/gun, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/weapon/baton, - /obj/item/handcuffs, - /obj/item/device/binoculars, - /obj/item/attachable/bayonet, - /obj/item/device/flashlight, - /obj/item/device/healthanalyzer, - /obj/item/device/radio, - /obj/item/tank/emergency_oxygen, - /obj/item/tool/crowbar, - /obj/item/tool/crew_monitor, - /obj/item/tool/pen, - /obj/item/storage/belt/gun/m4a3, - /obj/item/storage/belt/gun/m44, - /obj/item/storage/belt/gun/mateba, - /obj/item/storage/belt/gun/smartpistol, - /obj/item/storage/large_holster/machete, - /obj/item/storage/large_holster/katana, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - ) - valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR) - restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) - -/obj/item/clothing/suit/storage/CMB/Initialize() - . = ..() - pockets.max_w_class = SIZE_SMALL //Can contain small items AND rifle magazines. - pockets.bypass_w_limit = list( - /obj/item/ammo_magazine/rifle, - /obj/item/ammo_magazine/smg, - /obj/item/ammo_magazine/sniper, - ) - pockets.max_storage_space = 8 - -/obj/item/clothing/suit/storage/RO - name = "quartermaster jacket" - desc = "A green jacket worn by USCM personnel. The back has the flag of the United Americas on it." - icon_state = "RO_jacket" - blood_overlay_type = "coat" - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_ARMS - valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL) - restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) - -//===========================//HELGHAST - MERCENARY\\================================\\ -//=====================================================================\\ - -/obj/item/clothing/suit/storage/marine/veteran/mercenary - name = "\improper K12 ceramic plated armor" - desc = "A set of grey, heavy ceramic armor with dark blue highlights. It is the standard uniform of an unknown mercenary group working in the sector." - icon_state = "mercenary_heavy_armor" - flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN - armor_melee = CLOTHING_ARMOR_VERYHIGH - armor_bullet = CLOTHING_ARMOR_VERYHIGH - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_HIGHPLUS - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_HIGHPLUS - storage_slots = 2 - slowdown = SLOWDOWN_ARMOR_LIGHT - allowed = list( - /obj/item/weapon/gun, - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/ammo_magazine/, - /obj/item/weapon/baton, - /obj/item/handcuffs, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/explosive/grenade, - /obj/item/storage/bible, - /obj/item/weapon/sword/machete, - /obj/item/attachable/bayonet, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - ) - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/mercenary) - item_state_slots = list(WEAR_JACKET = "mercenary_heavy_armor") - -/obj/item/clothing/suit/storage/marine/veteran/mercenary/heavy - name = "\improper Modified K12 ceramic plated armor" - desc = "A set of grey, heavy ceramic armor with dark blue highlights. It has been modified with extra ceramic plates placed in its storage pouch, and seems intended to support an extremely heavy weapon." - armor_melee = CLOTHING_ARMOR_ULTRAHIGH - armor_bullet = CLOTHING_ARMOR_ULTRAHIGHPLUS - armor_bomb = CLOTHING_ARMOR_HIGHPLUS - armor_bio = CLOTHING_ARMOR_HIGHPLUS - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_VERYHIGHPLUS - storage_slots = 1 - -/obj/item/clothing/suit/storage/marine/veteran/mercenary/miner - name = "\improper Y8 armored miner vest" - desc = "A set of beige, light armor built for protection while mining. It is a specialized uniform of an unknown mercenary group working in the sector." - icon_state = "mercenary_miner_armor" - storage_slots = 3 - allowed = list( - /obj/item/weapon/gun, - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/ammo_magazine/, - /obj/item/weapon/baton, - /obj/item/handcuffs, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/explosive/grenade, - /obj/item/storage/bible, - /obj/item/weapon/sword/machete, - /obj/item/attachable/bayonet, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - ) - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/mercenary) - item_state_slots = list(WEAR_JACKET = "mercenary_miner_armor") - -/obj/item/clothing/suit/storage/marine/veteran/mercenary/support - name = "\improper Z7 armored vest" - desc = "A set of blue armor with yellow highlights built for protection while building or carrying out medical treatment in highly dangerous environments. It is a specialized uniform of an unknown mercenary group working in the sector." - icon_state = "mercenary_engineer_armor" - item_state_slots = list(WEAR_JACKET = "mercenary_engineer_armor") - -/obj/item/clothing/suit/storage/marine/M3G/hefa - name = "\improper HEFA Knight armor" - desc = "A thick piece of armor adorning a HEFA. Usually seen on a HEFA knight." - specialty = "HEFA Knight" - icon_state = "hefadier" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE - flags_item = NO_CRYO_STORE - flags_marine_armor = ARMOR_LAMP_OVERLAY - armor_bullet = CLOTHING_ARMOR_VERYHIGH - armor_melee = CLOTHING_ARMOR_VERYHIGH - armor_bomb = CLOTHING_ARMOR_GIGAHIGH - - -//=========================//PROVOST\\================================\\ -//=======================================================================\\ - -/obj/item/clothing/suit/storage/marine/MP/provost - name = "\improper M3 pattern Provost armor" - desc = "A standard Provost M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." - icon_state = "pvmedium" - item_state_slots = list(WEAR_JACKET = "pvmedium") - slowdown = SLOWDOWN_ARMOR_LIGHT - armor_bullet = CLOTHING_ARMOR_MEDIUM - armor_laser = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUMHIGH - armor_bio = CLOTHING_ARMOR_MEDIUMHIGH - armor_internaldamage = CLOTHING_ARMOR_MEDIUM - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - storage_slots = 3 - -/obj/item/clothing/suit/storage/marine/MP/provost/tml - name = "\improper M3 pattern Senior Provost armor" - desc = "A more refined Provost M3 Pattern Chestplate for senior officers. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." - icon_state = "pvleader" - item_state_slots = list(WEAR_JACKET = "pvleader") - -/obj/item/clothing/suit/storage/marine/MP/provost/marshal - name = "\improper M5 pattern Provost Marshal armor" - desc = "A custom fit luxury armor suit for Provost Marshals. Useful for letting your men know who is in charge when taking to the field." - icon_state = "pvmarshal" - item_state_slots = list(WEAR_JACKET = "pvmarshal") - w_class = SIZE_MEDIUM - storage_slots = 4 - -/obj/item/clothing/suit/storage/marine/MP/provost/light - name = "\improper M3 pattern Provost light armor" - desc = "A lighter Provost M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." - icon_state = "pvlight" - item_state_slots = list(WEAR_JACKET = "pvlight") - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT - -/obj/item/clothing/suit/storage/marine/MP/provost/light/flexi - name = "\improper M3 pattern Provost flexi-armor" - desc = "A flexible and easy to store M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." - w_class = SIZE_MEDIUM - icon_state = "pvlight_2" - item_state_slots = list(WEAR_JACKET = "pvlight_2") - storage_slots = 2 - -//================//UNITED AMERICAS ALLIED COMMAND\\=====================\\ -//=======================================================================\\ - -/obj/item/clothing/suit/storage/marine/uaac/tis/sa - name = "\improper M3 pattern UAAC-TIS Special Agent Armor" - desc = "A modified luxury armor, originally meant for a USCM Provost Marshall, modified to use the colors and insignia of the TIS. The Three Eyes is technically able to requisition any equipment or personnel to fulfill its mission and often uses this privilege to outfit their agents with high-quality gear from other UA military forces." - icon_state = "tis" - item_state_slots = list(WEAR_JACKET = "tis") - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_laser = CLOTHING_ARMOR_LOW - armor_energy = CLOTHING_ARMOR_LOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_MEDIUMLOW - storage_slots = 2 - slowdown = SLOWDOWN_ARMOR_LIGHT - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - allowed = list( - /obj/item/weapon/gun, - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/ammo_magazine/, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/weapon/baton, - /obj/item/handcuffs, - /obj/item/explosive/grenade, - /obj/item/device/binoculars, - /obj/item/attachable/bayonet, - /obj/item/storage/backpack/general_belt, - /obj/item/device/hailer, - /obj/item/storage/belt/gun, - /obj/item/weapon/sword/ceremonial, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - ) - uniform_restricted = list(/obj/item/clothing/under/uaac/tis) - -//================//UNITED AMERICAS RIOT CONTROL\\=====================\\ -//=======================================================================\\ - -/obj/item/clothing/suit/storage/marine/veteran/ua_riot - name = "\improper UA-M1 body armor" - desc = "Based on the M-3 pattern employed by the USCM, the UA-M1 body armor is employed by UA security, riot control and union-busting teams. While robust against melee and bullet attacks, it critically lacks coverage of the legs and arms." - icon_state = "ua_riot" - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - armor_melee = CLOTHING_ARMOR_MEDIUMHIGH - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_energy = CLOTHING_ARMOR_MEDIUM - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT // it's lighter - uniform_restricted = list(/obj/item/clothing/under/marine/ua_riot) - flags_atom = NO_SNOW_TYPE - -//==================War Correspondent==================\\ - -/obj/item/clothing/suit/storage/marine/light/reporter - name = "press body armor" - desc = "Body armor used by war correspondents in battles and wars across the universe." - icon = 'icons/mob/humans/onmob/contained/war_correspondent.dmi' - icon_state = "wc_armor" - flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE - contained_sprite = TRUE - - -//=ROYAL MARINES=\\ - -/obj/item/clothing/suit/storage/marine/veteran/royal_marine - name = "kestrel armoured vest" - desc = "A customizable personal armor system used by the Three World Empire's Royal Marines Commandos. Designers from a Weyland Yutani subsidary, Lindenthal-Ehrenfeld Militärindustrie, iterated on the USCMC's M3 pattern personal armor in their Tokonigara lab to create an armor systemed to suit the unique needs of the Three World Empire's smaller but better equipped Royal Marines." - icon_state = "rmc_light" - item_state = "rmc_light" - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE - allowed = list( - /obj/item/weapon/gun, - /obj/item/tank/emergency_oxygen, - /obj/item/device/flashlight, - /obj/item/ammo_magazine/, - /obj/item/weapon/baton, - /obj/item/handcuffs, - /obj/item/storage/fancy/cigarettes, - /obj/item/tool/lighter, - /obj/item/explosive/grenade, - /obj/item/storage/bible, - /obj/item/weapon/sword/machete, - /obj/item/attachable/bayonet, - /obj/item/device/motiondetector, - /obj/item/device/walkman, - ) - -/obj/item/clothing/suit/storage/marine/veteran/royal_marine/light //RMC Rifleman Armor - icon_state = "rmc_light" - item_state = "rmc_light" - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - slowdown = SLOWDOWN_ARMOR_LIGHT - -/obj/item/clothing/suit/storage/marine/veteran/royal_marine/light/team_leader //RMC TL & LT Armor - name = "kestrel armoured carry vest" - icon_state = "rmc_light_padded" - item_state = "rmc_light_padded" - storage_slots = 7 - -/obj/item/clothing/suit/storage/marine/veteran/royal_marine/smartgun //Smartgun Spec Armor - name = "kestrel armoured smartgun harness" - icon_state = "rmc_smartgun" - item_state = "rmc_smartgun" - flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN|SMARTGUN_HARNESS - -/obj/item/clothing/suit/storage/marine/veteran/royal_marine/pointman //Pointman Spec Armor - name = "kestrel pointman armour" - desc = "A heavier version of the armor system used by the Three World Empire's Royal Marines Commandos. Designers from a Weyland Yutani subsidary, Lindenthal-Ehrenfeld Militärindustrie, iterated on the USCMC's M3 pattern personal armor in their Tokonigara lab to create an armor systemed to suit the unique needs of the Three World Empire's smaller but better equipped Royal Marines." - icon_state = "rmc_pointman" - item_state = "rmc_pointman" - armor_melee = CLOTHING_ARMOR_HIGH - armor_bullet = CLOTHING_ARMOR_HIGHPLUS - armor_bomb = CLOTHING_ARMOR_HIGHPLUS - armor_bio = CLOTHING_ARMOR_MEDIUM - armor_rad = CLOTHING_ARMOR_MEDIUM - armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH - storage_slots = 7 - slowdown = SLOWDOWN_ARMOR_LOWHEAVY - movement_compensation = SLOWDOWN_ARMOR_MEDIUM - -/atom/movable/marine_light - light_system = DIRECTIONAL_LIGHT - -//CBRN -/obj/item/clothing/suit/storage/marine/cbrn - name = "\improper M3-M armor" - desc = "While lacking the appearance of the M3 pattern armor worn in regular service, this armor piece is still a derivative of it. It has been heavily modified to fit over the MOPP suit with additional padding and Venlar composite layers removed, so as not to restrict the wearer’s movement. However, with the reduction of composite layers, the personal protection offered is less than desired with complaints having been lodged since 2165." - icon_state = "cbrn" - item_state = "cbrn" - slowdown = SLOWDOWN_ARMOR_HEAVY - armor_melee = CLOTHING_ARMOR_MEDIUM - armor_bullet = CLOTHING_ARMOR_MEDIUM - armor_bomb = CLOTHING_ARMOR_MEDIUM - armor_bio = CLOTHING_ARMOR_LOW - armor_rad =CLOTHING_ARMOR_MEDIUMLOW - armor_internaldamage = CLOTHING_ARMOR_LOW - flags_marine_armor = NO_FLAGS - flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE - flags_inventory = BLOCKSHARPOBJ - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN - uniform_restricted = list(/obj/item/clothing/under/marine/cbrn) - -/obj/item/clothing/suit/storage/marine/cbrn/advanced - slowdown = SLOWDOWN_ARMOR_LOWHEAVY - armor_melee = CLOTHING_ARMOR_HIGH - armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH - armor_bomb = CLOTHING_ARMOR_ULTRAHIGH - armor_bio = CLOTHING_ARMOR_GIGAHIGHPLUS - armor_rad = CLOTHING_ARMOR_GIGAHIGHPLUS - armor_internaldamage = CLOTHING_ARMOR_HIGHPLUS diff --git a/code/modules/clothing/suits/marine_armor/_marine_armor.dm b/code/modules/clothing/suits/marine_armor/_marine_armor.dm new file mode 100644 index 000000000000..fd926c4ffd50 --- /dev/null +++ b/code/modules/clothing/suits/marine_armor/_marine_armor.dm @@ -0,0 +1,668 @@ +#define DEBUG_ARMOR_PROTECTION 0 + +#if DEBUG_ARMOR_PROTECTION +/mob/living/carbon/human/verb/check_overall_protection() + set name = "Get Armor Value" + set category = "Debug" + set desc = "Shows the armor value of the bullet category." + + var/armor = 0 + var/counter = 0 + for(var/X in H.limbs) + var/obj/limb/E = X + armor = getarmor_organ(E, ARMOR_BULLET) + to_chat(src, SPAN_DEBUG("[E.name] is protected with [armor] armor against bullets.")) + counter += armor + to_chat(src, SPAN_DEBUG("The overall armor score is: [counter].")) +#endif + +//=======================================================================\\ +//=======================================================================\\ + +#define ALPHA 1 +#define BRAVO 2 +#define CHARLIE 3 +#define DELTA 4 +#define ECHO 5 +#define CRYO 6 +#define SOF 7 +#define NOSQUAD 8 + +// MARINE STORAGE ARMOR + +/obj/item/clothing/suit/storage/marine + name = "\improper M3 pattern marine armor" + desc = "A standard Colonial Marines M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." + icon = 'icons/obj/items/clothing/cm_suits.dmi' + icon_state = "1" + item_state = "marine_armor" //Make unique states for Officer & Intel armors. + item_icons = list( + WEAR_JACKET = 'icons/mob/humans/onmob/suit_1.dmi' + ) + flags_atom = FPRINT|CONDUCT + flags_inventory = BLOCKSHARPOBJ + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + min_cold_protection_temperature = HELMET_MIN_COLD_PROT + max_heat_protection_temperature = HELMET_MAX_HEAT_PROT + blood_overlay_type = "armor" + armor_melee = CLOTHING_ARMOR_MEDIUM + armor_bullet = CLOTHING_ARMOR_MEDIUM + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_NONE + armor_bomb = CLOTHING_ARMOR_MEDIUMLOW + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_MEDIUM + movement_compensation = SLOWDOWN_ARMOR_LIGHT + storage_slots = 3 + siemens_coefficient = 0.7 + slowdown = SLOWDOWN_ARMOR_MEDIUM + allowed = list( + /obj/item/weapon/gun, + /obj/item/prop/prop_gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/storage/bible, + /obj/item/attachable/bayonet, + /obj/item/storage/backpack/general_belt, + /obj/item/storage/large_holster/machete, + /obj/item/storage/belt/gun/type47, + /obj/item/storage/belt/gun/m4a3, + /obj/item/storage/belt/gun/m44, + /obj/item/storage/belt/gun/smartpistol, + /obj/item/storage/belt/gun/flaregun, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + /obj/item/storage/belt/gun/m39, + /obj/item/storage/belt/gun/xm51, + ) + valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_PONCHO) + + light_power = 3 + light_range = 4 + light_system = MOVABLE_LIGHT + + var/flashlight_cooldown = 0 //Cooldown for toggling the light + var/locate_cooldown = 0 //Cooldown for SL locator + var/armor_overlays[] + actions_types = list(/datum/action/item_action/toggle) + var/flags_marine_armor = ARMOR_SQUAD_OVERLAY|ARMOR_LAMP_OVERLAY + var/specialty = "M3 pattern marine" //Same thing here. Give them a specialty so that they show up correctly in vendors. speciality does NOTHING if you have NO_NAME_OVERRIDE + w_class = SIZE_HUGE + uniform_restricted = list(/obj/item/clothing/under/marine) + sprite_sheets = list(SPECIES_MONKEY = 'icons/mob/humans/species/monkeys/onmob/suit_monkey_1.dmi') + time_to_unequip = 20 + time_to_equip = 20 + pickup_sound = "armorequip" + drop_sound = "armorequip" + equip_sounds = list('sound/handling/putting_on_armor1.ogg') + var/armor_variation = 0 + /// The dmi where the grayscale squad overlays are contained + var/squad_overlay_icon = 'icons/mob/humans/onmob/suit_1.dmi' + + var/atom/movable/marine_light/light_holder + +/obj/item/clothing/suit/storage/marine/Initialize(mapload) + . = ..() + if(!(flags_atom & NO_NAME_OVERRIDE)) + name = "[specialty]" + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + name += " snow armor" //Leave marine out so that armors don't have to have "Marine" appended (see: generals). + else + name += " armor" + + if(!(flags_atom & NO_SNOW_TYPE)) + select_gamemode_skin(type) + armor_overlays = list("lamp") //Just one for now, can add more later. + if(armor_variation && mapload) + set_armor_style("Random") + update_icon() + pockets.max_w_class = SIZE_SMALL //Can contain small items AND rifle magazines. + pockets.bypass_w_limit = list( + /obj/item/ammo_magazine/rifle, + /obj/item/ammo_magazine/smg, + /obj/item/ammo_magazine/sniper, + ) + pockets.max_storage_space = 8 + + light_holder = new(src) + +/obj/item/clothing/suit/storage/marine/Destroy() + QDEL_NULL(light_holder) + return ..() + +/obj/item/clothing/suit/storage/marine/update_icon(mob/user) + var/image/I + armor_overlays["lamp"] = null + if(flags_marine_armor & ARMOR_LAMP_OVERLAY) + if(flags_marine_armor & ARMOR_LAMP_ON) + I = image('icons/obj/items/clothing/cm_suits.dmi', src, "lamp-on") + else + I = image('icons/obj/items/clothing/cm_suits.dmi', src, "lamp-off") + armor_overlays["lamp"] = I + overlays += I + else armor_overlays["lamp"] = null + if(user) user.update_inv_wear_suit() + + +/obj/item/clothing/suit/storage/marine/post_vendor_spawn_hook(mob/living/carbon/human/user) //used for randomizing/selecting a variant for armors. + if(!armor_variation) + return + + if(user?.client?.prefs) + // Set the armor style to the user's preference. + set_armor_style(user.client.prefs.preferred_armor) + else + // Or if that isn't possible, just pick a random one. + set_armor_style("Random") + update_icon(user) + +/obj/item/clothing/suit/storage/marine/attack_self(mob/user) + ..() + + if(!isturf(user.loc)) + to_chat(user, SPAN_WARNING("You cannot turn the light [light_on ? "off" : "on"] while in [user.loc].")) //To prevent some lighting anomalies. + return + + if(flashlight_cooldown > world.time) + return + if(!ishuman(user)) + return + + var/mob/living/carbon/human/H = user + if(H.wear_suit != src) + return + + turn_light(user, !light_on) + +/obj/item/clothing/suit/storage/marine/item_action_slot_check(mob/user, slot) + if(!ishuman(user)) + return FALSE + if(slot != WEAR_JACKET) + return FALSE + return TRUE //only give action button when armor is worn. + +/obj/item/clothing/suit/storage/marine/turn_light(mob/user, toggle_on) + . = ..() + if(. != CHECKS_PASSED) + return + set_light_range(initial(light_range)) + set_light_power(Floor(initial(light_power) * 0.5)) + set_light_on(toggle_on) + flags_marine_armor ^= ARMOR_LAMP_ON + + light_holder.set_light_flags(LIGHT_ATTACHED) + light_holder.set_light_range(initial(light_range)) + light_holder.set_light_power(initial(light_power)) + light_holder.set_light_on(toggle_on) + + if(!toggle_on) + playsound(src, 'sound/handling/click_2.ogg', 50, 1) + + playsound(src, 'sound/handling/suitlight_on.ogg', 50, 1) + update_icon(user) + + for(var/X in actions) + var/datum/action/A = X + A.update_button_icon() + +/obj/item/clothing/suit/storage/marine/mob_can_equip(mob/living/carbon/human/M, slot, disable_warning = 0) + . = ..() + if (.) + if(issynth(M) && M.allow_gun_usage == FALSE && !(flags_marine_armor & SYNTH_ALLOWED)) + M.visible_message(SPAN_DANGER("Your programming prevents you from wearing this!")) + return 0 + +/** + * Updates the armor's `icon_state` to the style represented by `new_style`. + * + * Arguments: + * * new_style - The new armor style. May only be one of `GLOB.armor_style_list`'s keys, or `"Random"`. + */ +/obj/item/clothing/suit/storage/marine/proc/set_armor_style(new_style) + // Regex to match one or more digits. + var/static/regex/digits = new("\\d+") + // Integer for the new armor style's `icon_state`. + var/new_look + + if(new_style == "Random") + // The style icon states are all numbers between 1 and `armor_variation`, so this picks a random one. + new_look = rand(1, armor_variation) + else + new_look = GLOB.armor_style_list[new_style] + + // Replace the digits in the current icon state with `new_look`. (E.g. "L6" -> "L2") + icon_state = digits.Replace(icon_state, new_look) + +/obj/item/clothing/suit/storage/marine/medium/rto + icon_state = "io" + armor_variation = 0 + name = "\improper M4 pattern marine armor" + desc = "A well tinkered and crafted hybrid of Smart-Gunner mesh and M3 pattern plates. Robust, yet nimble, with room for all your pouches." + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + armor_rad = CLOTHING_ARMOR_MEDIUM + storage_slots = 4 + light_range = 5 //slightly higher + specialty = "M4 pattern marine" + +/obj/item/clothing/suit/storage/marine/MP + name = "\improper M2 pattern MP armor" + desc = "A standard Colonial Marines M2 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." + icon_state = "mp_armor" + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_LOW + armor_laser = CLOTHING_ARMOR_LOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_MEDIUMLOW + storage_slots = 2 + slowdown = SLOWDOWN_ARMOR_LIGHT + allowed = list( + /obj/item/weapon/gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine/, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/weapon/baton, + /obj/item/handcuffs, + /obj/item/explosive/grenade, + /obj/item/device/binoculars, + /obj/item/attachable/bayonet, + /obj/item/storage/backpack/general_belt, + /obj/item/device/hailer, + /obj/item/storage/belt/gun, + /obj/item/weapon/sword/ceremonial, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + uniform_restricted = list(/obj/item/clothing/under/marine/mp) + specialty = "M2 pattern MP" + item_state_slots = list(WEAR_JACKET = "mp_armor") + black_market_value = 20 + +/obj/item/clothing/suit/storage/marine/MP/warden + icon_state = "warden" + name = "\improper M3 pattern warden MP armor" + desc = "A well-crafted suit of M3 Pattern Armor typically distributed to Wardens. Useful for letting your men know who is in charge." + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUMLOW + uniform_restricted = list(/obj/item/clothing/under/marine/warden) + specialty = "M3 pattern warden MP" + item_state_slots = list(WEAR_JACKET = "warden") + +/obj/item/clothing/suit/storage/marine/MP/WO + icon_state = "warrant_officer" + name = "\improper M3 pattern chief MP armor" + desc = "A well-crafted suit of M3 Pattern Armor typically distributed to Chief MPs. Useful for letting your men know who is in charge." + uniform_restricted = list(/obj/item/clothing/under/marine/officer/warrant) + specialty = "M3 pattern chief MP" + item_state_slots = list(WEAR_JACKET = "warrant_officer") + black_market_value = 30 + +/obj/item/clothing/suit/storage/marine/MP/general + name = "\improper M3 pattern general officer armor" + desc = "A well-crafted suit of M3 Pattern Armor with a gold shine. It looks very expensive, but shockingly fairly easy to carry and wear." + icon_state = "general" + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_bio = CLOTHING_ARMOR_MEDIUM + uniform_restricted = list(/obj/item/clothing/under/marine/officer/general) + specialty = "M3 pattern general" + item_state_slots = list(WEAR_JACKET = "general") + w_class = SIZE_MEDIUM + +/obj/item/clothing/suit/storage/marine/MP/SO + name = "\improper M3 pattern officer armor" + desc = "A well-crafted suit of M3 Pattern Armor typically found in the hands of higher-ranking officers. Useful for letting your men know who is in charge when taking to the field." + icon_state = "officer" + storage_slots = 3 + flags_atom = null + uniform_restricted = list(/obj/item/clothing/under/marine/officer, /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/rank/chief_medical_officer, /obj/item/clothing/under/marine/dress) + specialty = "M3 pattern officer" + item_state_slots = list(WEAR_JACKET = "officer") + +//Making a new object because we might want to edit armor values and such. +//Or give it its own sprite. It's more for the future. +/obj/item/clothing/suit/storage/marine/MP/CO + name = "\improper M3 pattern commanding officer armor" + desc = "A robust, well-polished suit of armor for the Commanding Officer. Custom-made to fit its owner with special straps to operate a smartgun. Show those Marines who's really in charge." + icon_state = "co_officer" + item_state = "co_officer" + armor_bullet = CLOTHING_ARMOR_HIGH + storage_slots = 3 + flags_atom = NO_SNOW_TYPE + flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS + uniform_restricted = list(/obj/item/clothing/under/marine, /obj/item/clothing/under/rank/qm_suit) + specialty = "M3 pattern captain" + item_state_slots = list(WEAR_JACKET = "co_officer") + valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_PONCHO) + black_market_value = 35 + + +/obj/item/clothing/suit/storage/marine/MP/CO/jacket + name = "\improper M3 pattern commanding officer armored coat" + desc = "A robust, well-polished suit of armor for the Commanding Officer. Custom-made to fit its owner with special straps to operate a smartgun. Show those Marines who's really in charge. This one has a coat over it for added warmth." + icon_state = "bridge_coat_armored" + item_state = "bridge_coat_armored" + item_state_slots = list(WEAR_JACKET = "bridge_coat_armored") + valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_RANK) + +/obj/item/clothing/suit/storage/marine/medium/leader + name = "\improper B12 pattern marine armor" + desc = "A lightweight suit of carbon fiber body armor built for quick movement. Designed in a lovely forest green. Use it to toggle the built-in flashlight." + icon_state = "7" + armor_variation = 0 + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + specialty = "B12 pattern marine" + light_range = 5 + +/obj/item/clothing/suit/storage/marine/tanker + name = "\improper M3 pattern tanker armor" + desc = "A modified and refashioned suit of M3 Pattern armor designed to be worn by the loader of a USCM vehicle crew. While the suit is a bit more encumbering to wear with the crewman uniform, it offers the loader a degree of protection that would otherwise not be enjoyed." + icon_state = "tanker" + uniform_restricted = list(/obj/item/clothing/under/marine/officer/tanker) + specialty = "M3 pattern tanker" + storage_slots = 2 + +//===========================//PFC ARMOR CLASSES\\================================\\ +//=================================================================================\\ + +// M3 pattern marine armor +/obj/item/clothing/suit/storage/marine/medium + armor_variation = 6 + light_power = 4 + +/obj/item/clothing/suit/storage/marine/medium/padded + name = "M3 pattern padded marine armor" + icon_state = "1" + armor_variation = 0 + specialty = "M3 pattern padded marine" + +/obj/item/clothing/suit/storage/marine/medium/padless + name = "M3 pattern padless marine armor" + icon_state = "2" + armor_variation = 0 + specialty = "M3 pattern padless marine" + +/obj/item/clothing/suit/storage/marine/medium/padless_lines + name = "M3 pattern ridged marine armor" + icon_state = "3" + armor_variation = 0 + specialty = "M3 pattern ridged marine" + +/obj/item/clothing/suit/storage/marine/medium/carrier + name = "M3 pattern carrier marine armor" + icon_state = "4" + armor_variation = 0 + specialty = "M3 pattern carrier marine" + +/obj/item/clothing/suit/storage/marine/medium/skull + name = "M3 pattern skull marine armor" + icon_state = "5" + armor_variation = 0 + specialty = "M3 pattern skull marine" + +/obj/item/clothing/suit/storage/marine/medium/smooth + name = "M3 pattern smooth marine armor" + icon_state = "6" + armor_variation = 0 + specialty = "M3 pattern smooth marine" + +// M3-L pattern light armor +/obj/item/clothing/suit/storage/marine/light + name = "\improper M3-L pattern light armor" + desc = "A lighter, cut down version of the standard M3 pattern armor. It sacrifices durability for more speed." + specialty = "\improper M3-L pattern light" + icon_state = "L1" + armor_variation = 6 + slowdown = SLOWDOWN_ARMOR_LIGHT + armor_melee = CLOTHING_ARMOR_MEDIUMLOW + armor_bullet = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_LOW + storage_slots = 2 + +/obj/item/clothing/suit/storage/marine/light/padded + icon_state = "L1" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/light/padless + icon_state = "L2" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/light/padless_lines + icon_state = "L3" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/light/carrier + icon_state = "L4" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/light/skull + icon_state = "L5" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/light/smooth + icon_state = "L6" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/light/vest + name = "\improper M3-VL pattern ballistics vest" + desc = "Up until 2182 USCM non-combat personnel were issued non-standardized ballistics vests, though the lack of IMP compatibility and suit lamps proved time and time again inefficient. This modified M3-L shell is the result of a 6-year R&D program; It provides utility, protection, AND comfort to all USCM non-combat personnel." + icon_state = "VL" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_marine_armor = ARMOR_LAMP_OVERLAY //No squad colors when wearing this since it'd look funny. + armor_melee = CLOTHING_ARMOR_MEDIUMLOW + armor_bullet = CLOTHING_ARMOR_HIGH + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_LOW + armor_bio = CLOTHING_ARMOR_VERYLOW + armor_rad = CLOTHING_ARMOR_NONE + armor_internaldamage = CLOTHING_ARMOR_MEDIUM + storage_slots = 1 + time_to_unequip = 0.5 SECONDS + time_to_equip = 1 SECONDS + siemens_coefficient = 0.7 + uniform_restricted = null + +/obj/item/clothing/suit/storage/marine/light/vest/dcc + name = "\improper M3-VL pattern flak vest" + desc = "A combination of the standard non-combat M3-VL ballistics vest and M70 flak jacket, this piece of armor has been distributed to dropship crew to keep them safe from threats external and internal..." + icon_state = "VL_FLAK" + storage_slots = 2 + +/obj/item/clothing/suit/storage/marine/light/synvest + name = "\improper M3A1 Synthetic Utility Vest" + desc = "This variant of the ubiquitous M3 pattern ballistics vest has been extensively modified, providing no protection in exchange for maximum mobility and storage space. Synthetic programming compliant." + icon_state = "VL_syn_camo" + flags_atom = NO_NAME_OVERRIDE + flags_marine_armor = ARMOR_LAMP_OVERLAY|SYNTH_ALLOWED //No squad colors + can be worn by synths. + armor_melee = CLOTHING_ARMOR_NONE + armor_bullet = CLOTHING_ARMOR_NONE + armor_laser = CLOTHING_ARMOR_NONE + armor_energy = CLOTHING_ARMOR_NONE + armor_bomb = CLOTHING_ARMOR_NONE + armor_bio = CLOTHING_ARMOR_NONE + armor_rad = CLOTHING_ARMOR_NONE + armor_internaldamage = CLOTHING_ARMOR_NONE + storage_slots = 3 + slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + time_to_unequip = 0.5 SECONDS + time_to_equip = 1 SECONDS + uniform_restricted = null + +/obj/item/clothing/suit/storage/marine/light/synvest/grey + icon_state = "VL_syn" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + +/obj/item/clothing/suit/storage/marine/light/synvest/jungle + icon_state = "VL_syn_camo" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + +/obj/item/clothing/suit/storage/marine/light/synvest/snow + icon_state = "s_VL_syn_camo" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + +/obj/item/clothing/suit/storage/marine/light/synvest/desert + icon_state = "d_VL_syn_camo" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + +/obj/item/clothing/suit/storage/marine/light/synvest/dgrey + icon_state = "c_VL_syn_camo" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + +// M3-EOD pattern heavy armor +/obj/item/clothing/suit/storage/marine/heavy + name = "\improper M3-EOD pattern heavy armor" + desc = "A heavier version of the standard M3 pattern armor, the armor is primarily designed to withstand ballistic, explosive, and internal damage, with the drawback of increased bulk and thus reduced movement speed, alongside little additional protection from standard blunt force impacts and biological threats." + desc_lore = "This configuration of the iconic armor was developed during the Canton War in 2160 between the UPP and USCM - Designed in response to a need for higher protection for ComTechs assigned as EODs during the conflict, this is the pinnacle of protection for your average marine. The shoulders and kneepads have both been expanded upon heavily, covering up the arteries on each limb. A special spall liner was developed for this suit, with the same technology being used in the M70 Flak Jacket being developed at the same time." + specialty = "\improper M3-EOD pattern" + icon_state = "H1" + armor_variation = 6 + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_HIGHPLUS + armor_bomb = CLOTHING_ARMOR_HIGHPLUS + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + storage_slots = 2 + slowdown = SLOWDOWN_ARMOR_LOWHEAVY + movement_compensation = SLOWDOWN_ARMOR_MEDIUM + light_power = 4 + light_range = 5 + +/obj/item/clothing/suit/storage/marine/heavy/padded + icon_state = "H1" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/heavy/padless + icon_state = "H2" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/heavy/padless_lines + icon_state = "H3" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/heavy/carrier + icon_state = "H4" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/heavy/skull + icon_state = "H5" + armor_variation = 0 + +/obj/item/clothing/suit/storage/marine/heavy/smooth + icon_state = "H6" + armor_variation = 0 + +//===========================//SPECIALIST\\================================\\ +//=======================================================================\\ + +/obj/item/clothing/suit/storage/marine/specialist + name = "\improper B18 defensive armor" + desc = "A heavy, rugged set of armor plates for when you really, really need to not die horribly. Slows you down though.\nComes with two tricord injectors in each arm guard." + icon_state = "xarmor" + armor_melee = CLOTHING_ARMOR_HIGH + armor_bullet = CLOTHING_ARMOR_HIGH + armor_bomb = CLOTHING_ARMOR_VERYHIGH + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + storage_slots = 2 + flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + slowdown = SLOWDOWN_ARMOR_HEAVY + specialty = "B18 defensive" + unacidable = TRUE + var/injections = 4 + +/obj/item/clothing/suit/storage/marine/specialist/verb/inject() + set name = "Create Injector" + set category = "Object" + set src in usr + + if(usr.is_mob_incapacitated()) + return 0 + + if(!injections) + to_chat(usr, "Your armor is all out of injectors.") + return 0 + + if(usr.get_active_hand()) + to_chat(usr, "Your active hand must be empty.") + return 0 + + to_chat(usr, "You feel a faint hiss and an injector drops into your hand.") + var/obj/item/reagent_container/hypospray/autoinjector/skillless/O = new(usr) + usr.put_in_active_hand(O) + injections-- + playsound(src,'sound/machines/click.ogg', 15, 1) + return + +/obj/item/clothing/suit/storage/marine/M3G + name = "\improper M3-G4 grenadier armor" + desc = "A custom set of M3 armor packed to the brim with padding, plating, and every form of ballistic protection under the sun. Used exclusively by USCM Grenadiers." + icon_state = "grenadier" + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_bomb = CLOTHING_ARMOR_VERYHIGH + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN + flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + slowdown = SLOWDOWN_ARMOR_HEAVY + specialty = "M3-G4 grenadier" + unacidable = TRUE + +/obj/item/clothing/suit/storage/marine/M3T + name = "\improper M3-T light armor" + desc = "A custom set of M3 armor designed for users of long-ranged explosive weaponry." + icon_state = "demolitionist" + armor_bomb = CLOTHING_ARMOR_HIGH + slowdown = SLOWDOWN_ARMOR_LIGHT + specialty = "M3-T light" + flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE + unacidable = TRUE + +/obj/item/clothing/suit/storage/marine/M3S + name = "\improper M3-S light armor" + desc = "A custom set of M3 armor designed for USCM Scouts." + icon_state = "scout_armor" + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + slowdown = SLOWDOWN_ARMOR_LIGHT + specialty = "M3-S light" + flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE + unacidable = TRUE + +/obj/item/clothing/suit/storage/RO + name = "quartermaster jacket" + desc = "A green jacket worn by USCM personnel. The back has the flag of the United Americas on it." + icon_state = "RO_jacket" + blood_overlay_type = "coat" + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_ARMS + valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL) + restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) + +//==================Combat Correspondent==================\\ + +/obj/item/clothing/suit/storage/marine/light/reporter + name = "press body armor" + desc = "Body armor used by war correspondents in battles and wars across the universe." + icon_state = "cc_armor" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + diff --git a/code/modules/clothing/suits/marine_armor/ert.dm b/code/modules/clothing/suits/marine_armor/ert.dm new file mode 100644 index 000000000000..19009606db35 --- /dev/null +++ b/code/modules/clothing/suits/marine_armor/ert.dm @@ -0,0 +1,828 @@ +//=============================//Marine Raiders\\==================================\\ +//=======================================================================\\ + +/obj/item/clothing/suit/storage/marine/sof + name = "\improper SOF Armor" + desc = "A heavily customized suit of M3 armor. Used by Marine Raiders." + icon_state = "marsoc" + armor_melee = CLOTHING_ARMOR_HIGH + armor_bullet = CLOTHING_ARMOR_HIGH + armor_bomb = CLOTHING_ARMOR_VERYHIGH + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + slowdown = SLOWDOWN_ARMOR_LIGHT + unacidable = TRUE + flags_atom = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE|NO_SNOW_TYPE + storage_slots = 4 + + +//=============================//PMCs\\==================================\\ +//=======================================================================\\ + +/obj/item/clothing/suit/storage/marine/veteran + flags_marine_armor = ARMOR_LAMP_OVERLAY + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE //Let's make these keep their name and icon. + +/obj/item/clothing/suit/storage/marine/veteran/pmc + name = "\improper M4 pattern PMC armor" + desc = "A modification of the standard Armat Systems M3 armor. Designed for high-profile security operators and corporate mercenaries in mind." + icon_state = "pmc_armor" + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + storage_slots = 2 + slowdown = SLOWDOWN_ARMOR_LIGHT + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + allowed = list( + /obj/item/weapon/gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine/, + /obj/item/weapon/baton, + /obj/item/handcuffs, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/explosive/grenade, + /obj/item/storage/bible, + /obj/item/tool/crowbar, + /obj/item/storage/large_holster/katana, + /obj/item/storage/large_holster/machete, + /obj/item/weapon/sword/machete, + /obj/item/attachable/bayonet, + /obj/item/device/motiondetector, + /obj/item/tool/crew_monitor, + /obj/item/device/walkman, + ) + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/pmc) + item_state_slots = list(WEAR_JACKET = "pmc_armor") + +/obj/item/clothing/suit/storage/marine/veteran/pmc/light + name = "\improper M4 pattern light PMC armor" + desc = "A modification of the standard Armat Systems M3 armor. Designed for high-profile security operators and corporate mercenaries in mind. Has some armor plating removed for extra mobility." + icon_state = "pmc_sniper" + armor_melee = CLOTHING_ARMOR_MEDIUMLOW + armor_bullet = CLOTHING_ARMOR_MEDIUM + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUMLOW + slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + item_state_slots = list(WEAR_JACKET = "pmc_sniper") + +/obj/item/clothing/suit/storage/marine/veteran/pmc/light/corporate + name = "\improper M1 pattern corporate security armor" + desc = "A basic vest with a Weyland-Yutani badge on the right breast. This is commonly worn by low-level guards protecting Weyland-Yutani facilities." + icon = 'icons/mob/humans/onmob/contained/wy_goons.dmi' + icon_state = "armor" + item_state = "armor" + item_state_slots = null + contained_sprite = TRUE + + flags_armor_protection = BODY_FLAG_CHEST + flags_cold_protection = BODY_FLAG_CHEST + flags_heat_protection = BODY_FLAG_CHEST + + slowdown = SLOWDOWN_ARMOR_NONE // only protects chest, but enables rapid movement + +/obj/item/clothing/suit/storage/marine/veteran/pmc/light/corporate/lead + desc = "A basic vest with a Weyland-Yutani badge on the right breast. This variant is worn by low-level guards that have elevated in rank due to 'good conduct in the field', also known as corporate bootlicking." + icon_state = "lead_armor" + item_state = "lead_armor" + +/obj/item/clothing/suit/storage/marine/veteran/pmc/leader + name = "\improper M4 pattern PMC leader armor" + desc = "A modification of the standard Armat Systems M3 armor. Designed for high-profile security operators and corporate mercenaries in mind. This particular suit looks like it belongs to a high-ranking officer." + icon_state = "officer_armor" + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/pmc/leader) + item_state_slots = list(WEAR_JACKET = "officer_armor") + +/obj/item/clothing/suit/storage/marine/veteran/pmc/sniper + name = "\improper M4 pattern PMC sniper armor" + icon_state = "pmc_sniper" + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUM + flags_inv_hide = HIDELOWHAIR + item_state_slots = list(WEAR_JACKET = "pmc_sniper") + +/obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth + name = "\improper M4 Synthetic PMC armor" + desc = "A serious modification of the standard Armat Systems M3 armor. This variant was designed for PMC Support Units in the field, with every armor insert removed. It's designed with the idea of a high speed lifesaver in mind." + time_to_unequip = 0.5 SECONDS + time_to_equip = 1 SECONDS + armor_melee = CLOTHING_ARMOR_NONE + armor_bullet = CLOTHING_ARMOR_NONE + armor_laser = CLOTHING_ARMOR_NONE + armor_energy = CLOTHING_ARMOR_NONE + armor_bomb = CLOTHING_ARMOR_NONE + armor_bio = CLOTHING_ARMOR_NONE + armor_rad = CLOTHING_ARMOR_NONE + armor_internaldamage = CLOTHING_ARMOR_NONE + storage_slots = 3 + slowdown = SLOWDOWN_ARMOR_SUPER_LIGHT + +/obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth/Initialize() + flags_atom |= NO_NAME_OVERRIDE + flags_marine_armor |= SYNTH_ALLOWED + return ..() + +/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc + name = "\improper PMC gunner armor" + desc = "A modification of the standard Armat Systems M3 armor. Hooked up with harnesses and straps allowing the user to carry an M56 Smartgun." + icon_state = "heavy_armor" + flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN|SMARTGUN_HARNESS + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + item_state_slots = list(WEAR_JACKET = "heavy_armor") + +/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc/terminator + name = "\improper M5Xg exoskeleton gunner armor" + desc = "A complex system of overlapping plates intended to render the wearer all but impervious to small arms fire. A passive exoskeleton supports the weight of the armor, allowing a human to carry its massive bulk. This variant is designed to support a M56 Smartgun." + icon_state = "commando_armor" + slowdown = SLOWDOWN_ARMOR_MEDIUM + movement_compensation = SLOWDOWN_ARMOR_VERY_HEAVY + armor_melee = CLOTHING_ARMOR_HIGH + armor_bullet = CLOTHING_ARMOR_ULTRAHIGH + armor_laser = CLOTHING_ARMOR_MEDIUM + armor_energy = CLOTHING_ARMOR_MEDIUM + armor_bomb = CLOTHING_ARMOR_VERYHIGH + armor_rad = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/pmc/commando) + item_state_slots = list(WEAR_JACKET = "commando_armor") + unacidable = TRUE + +/obj/item/clothing/suit/storage/marine/veteran/pmc/commando + name = "\improper M5X exoskeleton armor" + desc = "A complex system of overlapping plates intended to render the wearer all but impervious to small arms fire. A passive exoskeleton supports the weight of the armor, allowing a human to carry its massive bulk." + icon_state = "commando_armor" + slowdown = SLOWDOWN_ARMOR_MEDIUM + movement_compensation = SLOWDOWN_ARMOR_VERY_HEAVY + armor_melee = CLOTHING_ARMOR_VERYHIGH + armor_bullet = CLOTHING_ARMOR_ULTRAHIGH + armor_energy = CLOTHING_ARMOR_MEDIUM + armor_bomb = CLOTHING_ARMOR_VERYHIGH + armor_rad = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + flags_inventory = BLOCK_KNOCKDOWN + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/pmc/commando) + item_state_slots = list(WEAR_JACKET = "commando_armor") + unacidable = TRUE + + +//===========================//DISTRESS\\================================\\ +//=======================================================================\\ + +/obj/item/clothing/suit/storage/marine/veteran/bear + name = "\improper H1 Iron Bears vest" + desc = "A protective vest worn by Iron Bears mercenaries." + icon_state = "bear_armor" + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + storage_slots = 2 + slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/bear) + +/obj/item/clothing/suit/storage/marine/veteran/dutch + name = "\improper D2 armored vest" + desc = "A protective vest worn by some seriously experienced mercs." + icon_state = "dutch_armor" + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS //Makes no sense but they need leg/arm armor too. + armor_melee = CLOTHING_ARMOR_HIGH + armor_bullet = CLOTHING_ARMOR_HIGHPLUS + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_HIGH + armor_rad = CLOTHING_ARMOR_MEDIUM + storage_slots = 2 + light_range = 7 + slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/dutch) + +/obj/item/clothing/suit/storage/marine/veteran/van_bandolier + name = "safari jacket" + desc = "A tailored hunting jacket, cunningly lined with segmented armor plates. Sometimes the game shoots back." + icon_state = "van_bandolier" + item_state = "van_bandolier_jacket" + blood_overlay_type = "coat" + flags_marine_armor = NO_FLAGS //No shoulder light. + actions_types = list() + slowdown = SLOWDOWN_ARMOR_LIGHT + storage_slots = 2 + movement_compensation = SLOWDOWN_ARMOR_LIGHT + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/van_bandolier) + allowed = list( + /obj/item/weapon/gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/storage/bible, + /obj/item/attachable/bayonet, + /obj/item/storage/backpack/general_belt, + /obj/item/storage/large_holster/machete, + /obj/item/storage/belt/gun/m4a3, + /obj/item/storage/belt/gun/m44, + /obj/item/storage/belt/gun/smartpistol, + /obj/item/storage/belt/gun/flaregun, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + /obj/item/storage/belt/shotgun/van_bandolier, + ) + +//===========================//U.P.P\\================================\\ +//=====================================================================\\ + +/obj/item/clothing/suit/storage/marine/faction + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + min_cold_protection_temperature = HELMET_MIN_COLD_PROT + max_heat_protection_temperature = HELMET_MAX_HEAT_PROT + blood_overlay_type = "armor" + armor_melee = CLOTHING_ARMOR_MEDIUM + armor_bullet = CLOTHING_ARMOR_MEDIUM + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + slowdown = SLOWDOWN_ARMOR_MEDIUM + movement_compensation = SLOWDOWN_ARMOR_LIGHT + + +/obj/item/clothing/suit/storage/marine/faction/UPP + name = "\improper UM5 personal armor" + desc = "Standard body armor of the UPP military, the UM5 (Union Medium MK5) is a medium body armor, roughly on par with the M3 pattern body armor in service with the USCM, specialized towards ballistics protection. Unlike the M3, however, the plate has a heavier neckplate. This has earned many UA members to refer to UPP soldiers as 'tin men'." + icon_state = "upp_armor" + armor_bullet = CLOTHING_ARMOR_HIGH + armor_energy = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_HIGH + storage_slots = 1 + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP, /obj/item/clothing/under/marine/veteran/UPP/medic, /obj/item/clothing/under/marine/veteran/UPP/engi) + +/obj/item/clothing/suit/storage/marine/faction/UPP/support + name = "\improper UL6 personal armor" + desc = "Standard body armor of the UPP military, the UL6 (Union Light MK6) is a light body armor, slightly weaker than the M3 pattern body armor in service with the USCM, specialized towards ballistics protection. This set of personal armor lacks the iconic neck piece and some of the armor in favor of user mobility." + storage_slots = 3 + icon_state = "upp_armor_support" + slowdown = SLOWDOWN_ARMOR_LIGHT + armor_melee = CLOTHING_ARMOR_HIGH + armor_energy = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_HIGH + +/obj/item/clothing/suit/storage/marine/faction/UPP/commando + name = "\improper UM5CU personal armor" + desc = "A modification of the UM5, designed for stealth operations." + icon_state = "upp_armor_commando" + storage_slots = 2 + slowdown = SLOWDOWN_ARMOR_LIGHT + +/obj/item/clothing/suit/storage/marine/faction/UPP/heavy + name = "\improper UH7 heavy plated armor" + desc = "An extremely heavy-duty set of body armor in service with the UPP military, the UH7 (Union Heavy MK7) is known for having powerful ballistic protection, alongside a noticeable neck guard, fortified in order to allow the wearer to endure the stresses of the bulky helmet." + icon_state = "upp_armor_heavy" + storage_slots = 3 + slowdown = SLOWDOWN_ARMOR_HEAVY + flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN + flags_armor_protection = BODY_FLAG_ALL_BUT_HEAD + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_HIGHPLUS + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_MEDIUM + armor_bomb = CLOTHING_ARMOR_HIGH + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_HIGHPLUS + +/obj/item/clothing/suit/storage/marine/faction/UPP/heavy/Initialize() + . = ..() + pockets.bypass_w_limit = list( + /obj/item/ammo_magazine/minigun, + /obj/item/ammo_magazine/pkp, + ) + +/obj/item/clothing/suit/storage/marine/faction/UPP/officer + name = "\improper UL4 officer jacket" + desc = "A lightweight jacket, issued to officers of the UPP's military. Slightly protective from incoming damage, best off with proper armor however." + icon_state = "upp_coat_officer" + slowdown = SLOWDOWN_ARMOR_NONE + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS + armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat + armor_bullet = CLOTHING_ARMOR_LOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_LOW + armor_bio = CLOTHING_ARMOR_LOW + armor_rad = CLOTHING_ARMOR_LOW + armor_internaldamage = CLOTHING_ARMOR_LOW + storage_slots = 3 + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP/officer) + +/obj/item/clothing/suit/storage/marine/faction/UPP/kapitan + name = "\improper UL4 senior officer jacket" + desc = "A lightweight jacket, issued to senior officers of the UPP's military. Made of high-quality materials, even going as far as having the ranks and insignia of the Kapitan and their Company emblazoned on the shoulders and front of the jacket. Slightly protective from incoming damage, best off with proper armor however." + icon_state = "upp_coat_kapitan" + slowdown = SLOWDOWN_ARMOR_NONE + armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat + armor_bullet = CLOTHING_ARMOR_LOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_LOW + armor_bio = CLOTHING_ARMOR_LOW + armor_rad = CLOTHING_ARMOR_LOW + armor_internaldamage = CLOTHING_ARMOR_LOW + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS + storage_slots = 4 + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP/officer) + +/obj/item/clothing/suit/storage/marine/faction/UPP/mp + name = "\improper UL4 camouflaged jacket" + desc = "A lightweight jacket, issued to troops when they're not expected to engage in combat. Still studded to the brim with kevlar shards, though the synthread construction reduces its effectiveness." + icon_state = "upp_coat_mp" + slowdown = SLOWDOWN_ARMOR_NONE + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS + armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat + armor_bullet = CLOTHING_ARMOR_LOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_LOW + armor_bio = CLOTHING_ARMOR_LOW + armor_rad = CLOTHING_ARMOR_LOW + armor_internaldamage = CLOTHING_ARMOR_LOW + storage_slots = 4 + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP) + valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL) + restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) + +/obj/item/clothing/suit/storage/marine/faction/UPP/jacket/ivan + name = "\improper UH4 Camo Jacket" + desc = "An experimental heavily armored variant of the UL4 given to only the most elite units... usually." + slowdown = SLOWDOWN_ARMOR_MEDIUM + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_ARMS|BODY_FLAG_HANDS|BODY_FLAG_FEET + armor_melee = CLOTHING_ARMOR_HIGH + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_HIGH + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_HIGH + storage_slots = 2 + + +//===========================//FREELANCER\\================================\\ +//=====================================================================\\ + +/obj/item/clothing/suit/storage/marine/faction/freelancer + name = "freelancer cuirass" + desc = "An armored protective chestplate scrapped together from various plates. It keeps up remarkably well, as the craftsmanship is solid, and the design mirrors such armors in the UPP and the USCM. The many skilled craftsmen in the freelancers ranks produce these vests at a rate about one a month." + icon_state = "freelancer_armor" + slowdown = SLOWDOWN_ARMOR_LIGHT + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + storage_slots = 2 + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/freelancer) + +//this one is for CLF +/obj/item/clothing/suit/storage/militia + name = "colonial militia hauberk" + desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops." + icon = 'icons/obj/items/clothing/cm_suits.dmi' + icon_state = "rebel_armor" + item_icons = list( + WEAR_JACKET = 'icons/mob/humans/onmob/suit_1.dmi' + ) + sprite_sheets = list(SPECIES_MONKEY = 'icons/mob/humans/species/monkeys/onmob/suit_monkey_1.dmi') + slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_ARMS + movement_compensation = SLOWDOWN_ARMOR_MEDIUM + armor_melee = CLOTHING_ARMOR_MEDIUM + armor_bullet = CLOTHING_ARMOR_MEDIUMLOW + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_MEDIUMLOW + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUM + storage_slots = 2 + uniform_restricted = list(/obj/item/clothing/under/colonist) + 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/backpack/general_belt, + /obj/item/storage/large_holster/machete, + /obj/item/weapon/baseballbat, + /obj/item/weapon/baseballbat/metal, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_FEET|BODY_FLAG_ARMS|BODY_FLAG_HANDS + min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROT + valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL) + +/obj/item/clothing/suit/storage/militia/Initialize() + . = ..() + pockets.max_w_class = SIZE_SMALL //Can contain small items AND rifle magazines. + pockets.bypass_w_limit = list( + /obj/item/ammo_magazine/rifle, + /obj/item/ammo_magazine/smg, + /obj/item/ammo_magazine/sniper, + ) + pockets.max_storage_space = 8 + +/obj/item/clothing/suit/storage/militia/vest + name = "colonial militia vest" + desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops. This extremely light variant protects only the chest and abdomen." + icon_state = "clf_2" + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + slowdown = 0.2 + movement_compensation = SLOWDOWN_ARMOR_MEDIUM + +/obj/item/clothing/suit/storage/militia/brace + name = "colonial militia brace" + desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops. This extremely light variant has some of the chest pieces removed." + icon_state = "clf_3" + flags_armor_protection = BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + flags_cold_protection = BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + slowdown = 0.2 + movement_compensation = SLOWDOWN_ARMOR_MEDIUM + +/obj/item/clothing/suit/storage/militia/partial + name = "colonial militia partial hauberk" + desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops. This even lighter variant has some of the arm pieces removed." + icon_state = "clf_4" + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS + slowdown = 0.2 + +/obj/item/clothing/suit/storage/militia/smartgun + name = "colonial militia harness" + desc = "The hauberk of a colonist militia member, created from boiled leather and some modern armored plates. While not the most powerful form of armor, and primitive compared to most modern suits of armor, it gives the wearer almost perfect mobility, which suits the needs of the local colonists. It is also quick to don, easy to hide, and cheap to produce in large workshops. This one has straps interweaved with the plates, that allow the user to fire a captured smartgun, if a bit uncomfortably." + flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS + +/obj/item/clothing/suit/storage/CMB + name = "\improper CMB Deputy jacket" + desc = "A thick and stylish black leather jacket with a Marshal's Deputy badge pinned to it. The back is enscribed with the powerful letters of 'DEPUTY' representing justice, authority, and protection in the outer rim. The laws of the Earth stretch beyond the Sol." + icon_state = "CMB_jacket" + item_state = "CMB_jacket" + blood_overlay_type = "coat" + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS + armor_melee = CLOTHING_ARMOR_MEDIUMLOW + armor_bullet = CLOTHING_ARMOR_MEDIUMLOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_LOW + armor_bio = CLOTHING_ARMOR_LOW + armor_internaldamage = CLOTHING_ARMOR_LOW + allowed = list( + /obj/item/weapon/gun, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/weapon/baton, + /obj/item/handcuffs, + /obj/item/device/binoculars, + /obj/item/attachable/bayonet, + /obj/item/device/flashlight, + /obj/item/device/healthanalyzer, + /obj/item/device/radio, + /obj/item/tank/emergency_oxygen, + /obj/item/tool/crowbar, + /obj/item/tool/crew_monitor, + /obj/item/tool/pen, + /obj/item/storage/belt/gun/m4a3, + /obj/item/storage/belt/gun/m44, + /obj/item/storage/belt/gun/mateba, + /obj/item/storage/belt/gun/smartpistol, + /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR) + restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) + +/obj/item/clothing/suit/storage/CMB/Initialize() + . = ..() + pockets.max_w_class = SIZE_SMALL //Can contain small items AND rifle magazines. + pockets.bypass_w_limit = list( + /obj/item/ammo_magazine/rifle, + /obj/item/ammo_magazine/smg, + /obj/item/ammo_magazine/sniper, + ) + pockets.max_storage_space = 8 + +/obj/item/clothing/suit/storage/CMB/marshal + name = "\improper CMB Marshal jacket" + desc = "A thick and stylish black leather jacket with a Marshal's badge pinned to it. The back is enscribed with the powerful letters of 'MARSHAL' representing justice, authority, and protection in the outer rim. The laws of the Earth stretch beyond the Sol." + icon_state = "CMB_jacket_marshal" + item_state = "CMB_jacket_marshal" + +//===========================//HELGHAST - MERCENARY\\================================\\ +//=====================================================================\\ + +/obj/item/clothing/suit/storage/marine/veteran/mercenary + name = "\improper K12 ceramic plated armor" + desc = "A set of grey, heavy ceramic armor with dark blue highlights. It is the standard uniform of an unknown mercenary group working in the sector." + icon_state = "mercenary_heavy_armor" + flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN + armor_melee = CLOTHING_ARMOR_VERYHIGH + armor_bullet = CLOTHING_ARMOR_VERYHIGH + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_HIGHPLUS + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_HIGHPLUS + storage_slots = 2 + slowdown = SLOWDOWN_ARMOR_LIGHT + allowed = list( + /obj/item/weapon/gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine/, + /obj/item/weapon/baton, + /obj/item/handcuffs, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/explosive/grenade, + /obj/item/storage/bible, + /obj/item/weapon/sword/machete, + /obj/item/attachable/bayonet, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/mercenary) + item_state_slots = list(WEAR_JACKET = "mercenary_heavy_armor") + +/obj/item/clothing/suit/storage/marine/veteran/mercenary/heavy + name = "\improper Modified K12 ceramic plated armor" + desc = "A set of grey, heavy ceramic armor with dark blue highlights. It has been modified with extra ceramic plates placed in its storage pouch, and seems intended to support an extremely heavy weapon." + armor_melee = CLOTHING_ARMOR_ULTRAHIGH + armor_bullet = CLOTHING_ARMOR_ULTRAHIGHPLUS + armor_bomb = CLOTHING_ARMOR_HIGHPLUS + armor_bio = CLOTHING_ARMOR_HIGHPLUS + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_VERYHIGHPLUS + storage_slots = 1 + +/obj/item/clothing/suit/storage/marine/veteran/mercenary/miner + name = "\improper Y8 armored miner vest" + desc = "A set of beige, light armor built for protection while mining. It is a specialized uniform of an unknown mercenary group working in the sector." + icon_state = "mercenary_miner_armor" + storage_slots = 3 + allowed = list( + /obj/item/weapon/gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine/, + /obj/item/weapon/baton, + /obj/item/handcuffs, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/explosive/grenade, + /obj/item/storage/bible, + /obj/item/weapon/sword/machete, + /obj/item/attachable/bayonet, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + uniform_restricted = list(/obj/item/clothing/under/marine/veteran/mercenary) + item_state_slots = list(WEAR_JACKET = "mercenary_miner_armor") + +/obj/item/clothing/suit/storage/marine/veteran/mercenary/support + name = "\improper Z7 armored vest" + desc = "A set of blue armor with yellow highlights built for protection while building or carrying out medical treatment in highly dangerous environments. It is a specialized uniform of an unknown mercenary group working in the sector." + icon_state = "mercenary_engineer_armor" + item_state_slots = list(WEAR_JACKET = "mercenary_engineer_armor") + +/obj/item/clothing/suit/storage/marine/M3G/hefa + name = "\improper HEFA Knight armor" + desc = "A thick piece of armor adorning a HEFA. Usually seen on a HEFA knight." + specialty = "HEFA Knight" + icon_state = "hefadier" + flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_item = NO_CRYO_STORE + flags_marine_armor = ARMOR_LAMP_OVERLAY + armor_bullet = CLOTHING_ARMOR_VERYHIGH + armor_melee = CLOTHING_ARMOR_VERYHIGH + armor_bomb = CLOTHING_ARMOR_GIGAHIGH + + +//=========================//PROVOST\\================================\\ +//=======================================================================\\ + +/obj/item/clothing/suit/storage/marine/MP/provost + name = "\improper M3 pattern Provost armor" + desc = "A standard Provost M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." + icon_state = "pvmedium" + item_state_slots = list(WEAR_JACKET = "pvmedium") + slowdown = SLOWDOWN_ARMOR_LIGHT + armor_bullet = CLOTHING_ARMOR_MEDIUM + armor_laser = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUMHIGH + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_MEDIUM + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + storage_slots = 3 + +/obj/item/clothing/suit/storage/marine/MP/provost/tml + name = "\improper M3 pattern Senior Provost armor" + desc = "A more refined Provost M3 Pattern Chestplate for senior officers. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." + icon_state = "pvleader" + item_state_slots = list(WEAR_JACKET = "pvleader") + +/obj/item/clothing/suit/storage/marine/MP/provost/marshal + name = "\improper M5 pattern Provost Marshal armor" + desc = "A custom fit luxury armor suit for Provost Marshals. Useful for letting your men know who is in charge when taking to the field." + icon_state = "pvmarshal" + item_state_slots = list(WEAR_JACKET = "pvmarshal") + w_class = SIZE_MEDIUM + storage_slots = 4 + +/obj/item/clothing/suit/storage/marine/MP/provost/light + name = "\improper M3 pattern Provost light armor" + desc = "A lighter Provost M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." + icon_state = "pvlight" + item_state_slots = list(WEAR_JACKET = "pvlight") + slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + +/obj/item/clothing/suit/storage/marine/MP/provost/light/flexi + name = "\improper M3 pattern Provost flexi-armor" + desc = "A flexible and easy to store M3 Pattern Chestplate. Protects the chest from ballistic rounds, bladed objects and accidents. It has a small leather pouch strapped to it for limited storage." + w_class = SIZE_MEDIUM + icon_state = "pvlight_2" + item_state_slots = list(WEAR_JACKET = "pvlight_2") + storage_slots = 2 + +//================//UNITED AMERICAS ALLIED COMMAND\\=====================\\ +//=======================================================================\\ + +/obj/item/clothing/suit/storage/marine/uaac/tis/sa + name = "\improper M3 pattern UAAC-TIS Special Agent Armor" + desc = "A modified luxury armor, originally meant for a USCM Provost Marshall, modified to use the colors and insignia of the TIS. The Three Eyes is technically able to requisition any equipment or personnel to fulfill its mission and often uses this privilege to outfit their agents with high-quality gear from other UA military forces." + icon_state = "tis" + item_state_slots = list(WEAR_JACKET = "tis") + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_laser = CLOTHING_ARMOR_LOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUMLOW + storage_slots = 2 + slowdown = SLOWDOWN_ARMOR_LIGHT + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + allowed = list( + /obj/item/weapon/gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine/, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/weapon/baton, + /obj/item/handcuffs, + /obj/item/explosive/grenade, + /obj/item/device/binoculars, + /obj/item/attachable/bayonet, + /obj/item/storage/backpack/general_belt, + /obj/item/device/hailer, + /obj/item/storage/belt/gun, + /obj/item/weapon/sword/ceremonial, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + uniform_restricted = list(/obj/item/clothing/under/uaac/tis) + +//================//UNITED AMERICAS RIOT CONTROL\\=====================\\ +//=======================================================================\\ + +/obj/item/clothing/suit/storage/marine/veteran/ua_riot + name = "\improper UA-M1 body armor" + desc = "Based on the M-3 pattern employed by the USCM, the UA-M1 body armor is employed by UA security, riot control and union-busting teams. While robust against melee and bullet attacks, it critically lacks coverage of the legs and arms." + icon_state = "ua_riot" + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + armor_melee = CLOTHING_ARMOR_MEDIUMHIGH + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_energy = CLOTHING_ARMOR_MEDIUM + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + slowdown = SLOWDOWN_ARMOR_VERY_LIGHT // it's lighter + uniform_restricted = list(/obj/item/clothing/under/marine/ua_riot) + flags_atom = NO_SNOW_TYPE + +//================//=ROYAL MARINES=\\====================================\\ +//=======================================================================\\ + +/obj/item/clothing/suit/storage/marine/veteran/royal_marine + name = "kestrel armoured vest" + desc = "A customizable personal armor system used by the Three World Empire's Royal Marines Commandos. Designers from a Weyland Yutani subsidary, Lindenthal-Ehrenfeld Militärindustrie, iterated on the USCMC's M3 pattern personal armor in their Tokonigara lab to create an armor systemed to suit the unique needs of the Three World Empire's smaller but better equipped Royal Marines." + icon_state = "rmc_light" + item_state = "rmc_light" + flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + allowed = list( + /obj/item/weapon/gun, + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine/, + /obj/item/weapon/baton, + /obj/item/handcuffs, + /obj/item/storage/fancy/cigarettes, + /obj/item/tool/lighter, + /obj/item/explosive/grenade, + /obj/item/storage/bible, + /obj/item/weapon/sword/machete, + /obj/item/attachable/bayonet, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + +/obj/item/clothing/suit/storage/marine/veteran/royal_marine/light //RMC Rifleman Armor + icon_state = "rmc_light" + item_state = "rmc_light" + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_energy = CLOTHING_ARMOR_MEDIUMLOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + slowdown = SLOWDOWN_ARMOR_LIGHT + +/obj/item/clothing/suit/storage/marine/veteran/royal_marine/light/team_leader //RMC TL & LT Armor + name = "kestrel armoured carry vest" + icon_state = "rmc_light_padded" + item_state = "rmc_light_padded" + storage_slots = 7 + +/obj/item/clothing/suit/storage/marine/veteran/royal_marine/smartgun //Smartgun Spec Armor + name = "kestrel armoured smartgun harness" + icon_state = "rmc_smartgun" + item_state = "rmc_smartgun" + flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN|SMARTGUN_HARNESS + +/obj/item/clothing/suit/storage/marine/veteran/royal_marine/pointman //Pointman Spec Armor + name = "kestrel pointman armour" + desc = "A heavier version of the armor system used by the Three World Empire's Royal Marines Commandos. Designers from a Weyland Yutani subsidary, Lindenthal-Ehrenfeld Militärindustrie, iterated on the USCMC's M3 pattern personal armor in their Tokonigara lab to create an armor systemed to suit the unique needs of the Three World Empire's smaller but better equipped Royal Marines." + icon_state = "rmc_pointman" + item_state = "rmc_pointman" + armor_melee = CLOTHING_ARMOR_HIGH + armor_bullet = CLOTHING_ARMOR_HIGHPLUS + armor_bomb = CLOTHING_ARMOR_HIGHPLUS + armor_bio = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + storage_slots = 7 + slowdown = SLOWDOWN_ARMOR_LOWHEAVY + movement_compensation = SLOWDOWN_ARMOR_MEDIUM + +/atom/movable/marine_light + light_system = DIRECTIONAL_LIGHT + +//CBRN +/obj/item/clothing/suit/storage/marine/cbrn + name = "\improper M3-M armor" + desc = "While lacking the appearance of the M3 pattern armor worn in regular service, this armor piece is still a derivative of it. It has been heavily modified to fit over the MOPP suit with additional padding and Venlar composite layers removed, so as not to restrict the wearer’s movement. However, with the reduction of composite layers, the personal protection offered is less than desired with complaints having been lodged since 2165." + icon_state = "cbrn" + item_state = "cbrn" + slowdown = SLOWDOWN_ARMOR_HEAVY + armor_melee = CLOTHING_ARMOR_MEDIUM + armor_bullet = CLOTHING_ARMOR_MEDIUM + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_bio = CLOTHING_ARMOR_LOW + armor_rad =CLOTHING_ARMOR_MEDIUMLOW + armor_internaldamage = CLOTHING_ARMOR_LOW + flags_marine_armor = NO_FLAGS + flags_atom = NO_NAME_OVERRIDE|NO_SNOW_TYPE + flags_inventory = BLOCKSHARPOBJ + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN + uniform_restricted = list(/obj/item/clothing/under/marine/cbrn) + +/obj/item/clothing/suit/storage/marine/cbrn/advanced + slowdown = SLOWDOWN_ARMOR_LOWHEAVY + armor_melee = CLOTHING_ARMOR_HIGH + armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH + armor_bomb = CLOTHING_ARMOR_ULTRAHIGH + armor_bio = CLOTHING_ARMOR_GIGAHIGHPLUS + armor_rad = CLOTHING_ARMOR_GIGAHIGHPLUS + armor_internaldamage = CLOTHING_ARMOR_HIGHPLUS diff --git a/code/modules/clothing/suits/marine_armor/ghillie.dm b/code/modules/clothing/suits/marine_armor/ghillie.dm new file mode 100644 index 000000000000..1f1b71227655 --- /dev/null +++ b/code/modules/clothing/suits/marine_armor/ghillie.dm @@ -0,0 +1,162 @@ +#define FULL_CAMOUFLAGE_ALPHA 15 + +/obj/item/clothing/suit/storage/marine/ghillie + name = "\improper M45 pattern ghillie armor" + desc = "A lightweight ghillie camouflage suit, used by USCM snipers on recon missions. Very lightweight, but doesn't protect much." + icon_state = "ghillie_armor" + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + slowdown = SLOWDOWN_ARMOR_LIGHT + flags_marine_armor = ARMOR_LAMP_OVERLAY + flags_item = MOB_LOCK_ON_EQUIP + specialty = "M45 pattern ghillie" + valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_PONCHO) + restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) + + var/camo_active = FALSE + var/hide_in_progress = FALSE + var/full_camo_alpha = FULL_CAMOUFLAGE_ALPHA + var/incremental_shooting_camo_penalty = 35 + var/current_camo = FULL_CAMOUFLAGE_ALPHA + var/camouflage_break = 5 SECONDS + var/camouflage_enter_delay = 4 SECONDS + var/can_camo = TRUE + + actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/specialist/prepare_position) + +/obj/item/clothing/suit/storage/marine/ghillie/dropped(mob/user) + if(ishuman(user) && !issynth(user)) + deactivate_camouflage(user, FALSE) + + . = ..() + +/obj/item/clothing/suit/storage/marine/ghillie/verb/camouflage() + set name = "Prepare Position" + set desc = "Use the ghillie suit and the nearby environment to become near invisible." + set category = "Object" + set src in usr + if(!usr || usr.is_mob_incapacitated(TRUE)) + return + + if(!ishuman(usr) || hide_in_progress || !can_camo) + return + var/mob/living/carbon/human/H = usr + if(!skillcheck(H, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && H.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SNIPER && !(GLOB.character_traits[/datum/character_trait/skills/spotter] in H.traits)) + to_chat(H, SPAN_WARNING("You don't seem to know how to use [src]...")) + return + if(H.wear_suit != src) + to_chat(H, SPAN_WARNING("You must be wearing the ghillie suit to activate it!")) + return + + if(camo_active) + deactivate_camouflage(H) + return + + H.visible_message(SPAN_DANGER("[H] goes prone, and begins adjusting \his ghillie suit!"), SPAN_NOTICE("You go prone, and begins adjusting your ghillie suit."), max_distance = 4) + hide_in_progress = TRUE + H.unset_interaction() // If we're sticking to a machine gun or what not. + if(!do_after(H, camouflage_enter_delay, INTERRUPT_NO_NEEDHAND|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + hide_in_progress = FALSE + return + hide_in_progress = FALSE + RegisterSignal(H, list( + COMSIG_MOB_FIRED_GUN, + COMSIG_MOB_FIRED_GUN_ATTACHMENT) + , PROC_REF(fade_in)) + RegisterSignal(H, list( + COMSIG_MOB_DEATH, + COMSIG_HUMAN_EXTINGUISH + ), PROC_REF(deactivate_camouflage)) + camo_active = TRUE + H.alpha = full_camo_alpha + H.FF_hit_evade = 1000 + ADD_TRAIT(H, TRAIT_UNDENSE, SPECIALIST_GEAR_TRAIT) + + RegisterSignal(H, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(handle_mob_move_or_look)) + + var/datum/mob_hud/security/advanced/SA = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] + SA.remove_from_hud(H) + var/datum/mob_hud/xeno_infection/XI = GLOB.huds[MOB_HUD_XENO_INFECTION] + XI.remove_from_hud(H) + + anim(H.loc, H, 'icons/mob/mob.dmi', null, "cloak", null, H.dir) + + +/obj/item/clothing/suit/storage/marine/ghillie/proc/deactivate_camouflage(mob/user) + SIGNAL_HANDLER + var/mob/living/carbon/human/H = user + if(!istype(H)) + return FALSE + + if(!camo_active) + return + + UnregisterSignal(H, list( + COMSIG_MOB_FIRED_GUN, + COMSIG_MOB_FIRED_GUN_ATTACHMENT, + COMSIG_MOB_DEATH, + COMSIG_HUMAN_EXTINGUISH, + COMSIG_MOB_MOVE_OR_LOOK + )) + + camo_active = FALSE + 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) + + var/datum/mob_hud/security/advanced/SA = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] + SA.add_to_hud(H) + var/datum/mob_hud/xeno_infection/XI = GLOB.huds[MOB_HUD_XENO_INFECTION] + XI.add_to_hud(H) + + H.visible_message(SPAN_DANGER("[H]'s camouflage fails!"), SPAN_WARNING("Your camouflage fails!"), max_distance = 4) + +/obj/item/clothing/suit/storage/marine/ghillie/proc/fade_in(mob/user) + SIGNAL_HANDLER + var/mob/living/carbon/human/H = user + if(camo_active) + if(current_camo < full_camo_alpha) + current_camo = full_camo_alpha + current_camo = clamp(current_camo + incremental_shooting_camo_penalty, full_camo_alpha, 255) + H.alpha = current_camo + addtimer(CALLBACK(src, PROC_REF(fade_out_finish), H), camouflage_break, TIMER_OVERRIDE|TIMER_UNIQUE) + animate(H, alpha = full_camo_alpha + 5, time = camouflage_break, easing = LINEAR_EASING, flags = ANIMATION_END_NOW) + +/obj/item/clothing/suit/storage/marine/ghillie/proc/fade_out_finish(mob/living/carbon/human/H) + if(camo_active && H.wear_suit == src) + to_chat(H, SPAN_BOLDNOTICE("The smoke clears and your position is once again hidden completely!")) + animate(H, alpha = full_camo_alpha) + current_camo = full_camo_alpha + +/obj/item/clothing/suit/storage/marine/ghillie/proc/handle_mob_move_or_look(mob/living/mover, actually_moving, direction, specific_direction) + SIGNAL_HANDLER + + if(camo_active && actually_moving) + deactivate_camouflage(mover) + +/datum/action/item_action/specialist/prepare_position + ability_primacy = SPEC_PRIMARY_ACTION_1 + +/datum/action/item_action/specialist/prepare_position/New(mob/living/user, obj/item/holder) + ..() + name = "Prepare Position" + button.name = name + button.overlays.Cut() + var/image/IMG = image('icons/mob/hud/actions.dmi', button, "prepare_position") + button.overlays += IMG + +/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.body_position == STANDING_UP && holder_item == H.wear_suit) + return TRUE + +/datum/action/item_action/specialist/prepare_position/action_activate() + var/obj/item/clothing/suit/storage/marine/ghillie/GS = holder_item + GS.camouflage() + +#undef FULL_CAMOUFLAGE_ALPHA + +/obj/item/clothing/suit/storage/marine/ghillie/forecon + name = "UDEP Thermal Poncho" + desc = "UDEP or the Ultra Diffusive Environmental Poncho is a camouflaged rain-cover worn to protect against the elements and chemical spills. It's commonly treated with an infrared absorbing coating, making a marine almost invisible in the rain. Favoured by USCM specialists for it's comfort and practicality." + icon_state = "mercenary_miner_armor" + flags_atom = MOB_LOCK_ON_EQUIP|NO_SNOW_TYPE|NO_NAME_OVERRIDE diff --git a/code/modules/clothing/suits/marine_armor/intel.dm b/code/modules/clothing/suits/marine_armor/intel.dm new file mode 100644 index 000000000000..b3f0f93e004d --- /dev/null +++ b/code/modules/clothing/suits/marine_armor/intel.dm @@ -0,0 +1,118 @@ +/obj/item/clothing/suit/storage/marine/medium/rto/intel + name = "\improper XM4 pattern intelligence officer armor" + uniform_restricted = list(/obj/item/clothing/under/marine/officer/intel) + specialty = "XM4 pattern intel" + desc = "Tougher than steel, quieter than whispers, the XM4 Intel Armor provides capable protection combined with an experimental integrated motion tracker. It took an R&D team a weekend to develop and costs more than the Chinook Station... probably. When worn, uniform accessories such as webbing cannot be attached due to the motion sensors occupying the clips." + desc_lore = "ARMAT Perfection. The XM4 Soldier Awareness System mixes M4-style hard armor and a distributed series of motion sensors clipped onto the breastplate. When connected to any HUD optic, it replicates the effects of an M314 Motion Detector unit, increasing user situational awareness. It is currently undergoing field trials by intelligence operatives." + storage_slots = 5 + /// XM4 Integral Motion Detector Ability + actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/intel/toggle_motion_detector) + var/motion_detector = FALSE + var/obj/item/device/motiondetector/xm4/proximity + var/long_range_cooldown = 2 + var/recycletime = 120 + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/Initialize(mapload, ...) + . = ..() + proximity = new(src) + update_icon() + +/datum/action/item_action/intel/action_activate() + if(!ishuman(owner)) + return + +/datum/action/item_action/intel/update_button_icon() + return + +/datum/action/item_action/intel/toggle_motion_detector/New(Target, obj/item/holder) + . = ..() + name = "Toggle Motion Detector" + action_icon_state = "motion_detector" + button.name = name + button.overlays.Cut() + button.overlays += image('icons/mob/hud/actions.dmi', button, action_icon_state) + +/datum/action/item_action/intel/toggle_motion_detector/action_activate() + . = ..() + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/recon = holder_item + recon.toggle_motion_detector(owner) + +/datum/action/item_action/intel/toggle_motion_detector/proc/update_icon() + if(!holder_item) + return + var/obj/item/clothing/suit/storage/marine/medium/rto/intel/recon = holder_item + if(recon.motion_detector) + button.icon_state = "template_on" + else + button.icon_state = "template" + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/process() + if(!motion_detector) + STOP_PROCESSING(SSobj, src) + if(motion_detector) + recycletime-- + if(!recycletime) + recycletime = initial(recycletime) + proximity.refresh_blip_pool() + long_range_cooldown-- + if(long_range_cooldown) + return + long_range_cooldown = initial(long_range_cooldown) + proximity.scan() + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/proc/toggle_motion_detector(mob/user) + to_chat(user,SPAN_NOTICE("You [motion_detector? "disable" : "enable"] \the [src]'s motion detector.")) + if(!motion_detector) + playsound(loc,'sound/items/detector_turn_on.ogg', 25, 1) + else + playsound(loc,'sound/items/detector_turn_off.ogg', 25, 1) + motion_detector = !motion_detector + var/datum/action/item_action/intel/toggle_motion_detector/TMD = locate(/datum/action/item_action/intel/toggle_motion_detector) in actions + TMD.update_icon() + motion_detector() + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/proc/motion_detector() + if(motion_detector) + START_PROCESSING(SSobj, src) + else + STOP_PROCESSING(SSobj, src) + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/mob_can_equip(mob/living/carbon/human/user, slot, disable_warning) //Thanks to Drathek for the help on this part! + if(!..()) + return FALSE + + // Only equip if uniform doesn't already have a utility accessory slot equipped + var/obj/item/clothing/under/uniform = user.w_uniform + var/accessory = locate(/obj/item/clothing/accessory/storage) in uniform.accessories + if(accessory) + to_chat(user, SPAN_WARNING("[src] can't be worn with [accessory].")) + return FALSE + // Only equip if user has expert intel skill level + if(!skillcheck(user, SKILL_INTEL, SKILL_INTEL_EXPERT)) + to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) + return FALSE + return TRUE + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/equipped(mob/user, slot, silent) //When XM4 is equipped this removes ACCESSORY_SLOT_UTILITY as a valid accessory for the uniform + . = ..() + if(slot == WEAR_JACKET) + var/mob/living/carbon/human/human = user + var/obj/item/clothing/under/uniform = human.w_uniform + if(uniform?.valid_accessory_slots) + uniform?.valid_accessory_slots -= ACCESSORY_SLOT_UTILITY + +/obj/item/clothing/suit/storage/marine/medium/rto/intel/unequipped(mob/user, slot) //When unequipped this adds the ACCESSORY_SLOT_UTILITY back as a valid accessory + . = ..() + if(slot == WEAR_JACKET) + var/mob/living/carbon/human/human = user + var/obj/item/clothing/under/uniform = human.w_uniform + if(uniform) + // Figure out if the uniform originally allowed ACCESSORY_SLOT_UTILITY + var/obj/item/clothing/under/temp_uniform = new uniform.type + if(temp_uniform.valid_accessory_slots) + for(var/allowed in temp_uniform.valid_accessory_slots) + if(allowed == ACCESSORY_SLOT_UTILITY) + // It was allowed previously, now add it back + uniform.valid_accessory_slots += ACCESSORY_SLOT_UTILITY + break + qdel(temp_uniform) diff --git a/code/modules/clothing/suits/marine_armor/smartgunner.dm b/code/modules/clothing/suits/marine_armor/smartgunner.dm new file mode 100644 index 000000000000..430942fbbef8 --- /dev/null +++ b/code/modules/clothing/suits/marine_armor/smartgunner.dm @@ -0,0 +1,60 @@ +/obj/item/clothing/suit/storage/marine/smartgunner + name = "\improper M56 combat harness" + desc = "A heavy protective vest designed to be worn with the M56 Smartgun System. \nIt has specially designed straps and reinforcement to carry the Smartgun and accessories." + icon_state = "8" + item_state = "armor" + armor_laser = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_MEDIUM + armor_rad = CLOTHING_ARMOR_MEDIUM + storage_slots = 2 + slowdown = SLOWDOWN_ARMOR_LIGHT + flags_inventory = BLOCKSHARPOBJ|SMARTGUN_HARNESS + allowed = list( + /obj/item/tank/emergency_oxygen, + /obj/item/device/flashlight, + /obj/item/ammo_magazine, + /obj/item/explosive/mine, + /obj/item/attachable/bayonet, + /obj/item/weapon/gun/smartgun, + /obj/item/storage/backpack/general_belt, + /obj/item/device/motiondetector, + /obj/item/device/walkman, + ) + +/obj/item/clothing/suit/storage/marine/smartgunner/Initialize() + . = ..() + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD] && name == "M56 combat harness") + name = "M56 snow combat harness" + else + name = "M56 combat harness" + //select_gamemode_skin(type) + +/obj/item/clothing/suit/storage/marine/smartgunner/mob_can_equip(mob/equipping_mob, slot, disable_warning = FALSE) + . = ..() + + if(equipping_mob.back) + to_chat(equipping_mob, SPAN_WARNING("You can't equip [src] while wearing a backpack.")) + return FALSE + +/obj/item/clothing/suit/storage/marine/smartgunner/equipped(mob/user, slot, silent) + . = ..() + + if(slot == WEAR_JACKET) + RegisterSignal(user, COMSIG_HUMAN_ATTEMPTING_EQUIP, PROC_REF(check_equipping)) + +/obj/item/clothing/suit/storage/marine/smartgunner/proc/check_equipping(mob/living/carbon/human/equipping_human, obj/item/equipping_item, slot) + SIGNAL_HANDLER + + if(slot != WEAR_BACK) + return + + . = COMPONENT_HUMAN_CANCEL_ATTEMPT_EQUIP + + if(equipping_item.flags_equip_slot == SLOT_BACK) + to_chat(equipping_human, SPAN_WARNING("You can't equip [equipping_item] on your back while wearing [src].")) + return + +/obj/item/clothing/suit/storage/marine/smartgunner/unequipped(mob/user, slot) + . = ..() + + UnregisterSignal(user, COMSIG_HUMAN_ATTEMPTING_EQUIP) diff --git a/code/modules/clothing/suits/marine_armor/spec_fire.dm b/code/modules/clothing/suits/marine_armor/spec_fire.dm new file mode 100644 index 000000000000..4d577cc98b15 --- /dev/null +++ b/code/modules/clothing/suits/marine_armor/spec_fire.dm @@ -0,0 +1,150 @@ +#define FIRE_SHIELD_CD 150 + +/obj/item/clothing/suit/storage/marine/M35 + name = "\improper M35 pyrotechnician armor" + desc = "A custom set of M35 armor designed for use by USCM Pyrotechnicians." + icon_state = "pyro_armor" + armor_bio = CLOTHING_ARMOR_MEDIUMHIGH + armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH + fire_intensity_resistance = BURN_LEVEL_TIER_1 + max_heat_protection_temperature = FIRESUIT_MAX_HEAT_PROT + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + flags_cold_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + flags_heat_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS|BODY_FLAG_LEGS|BODY_FLAG_FEET + flags_item = MOB_LOCK_ON_EQUIP|NO_CRYO_STORE + specialty = "M35 pyrotechnician" + actions_types = list(/datum/action/item_action/toggle, /datum/action/item_action/specialist/fire_shield) + unacidable = TRUE + var/fire_shield_on = FALSE + var/can_activate = TRUE + +/obj/item/clothing/suit/storage/marine/M35/equipped(mob/user, slot) + if(slot == WEAR_JACKET) + RegisterSignal(user, COMSIG_LIVING_FLAMER_CROSSED, PROC_REF(flamer_fire_callback)) + ..() + +/obj/item/clothing/suit/storage/marine/M35/verb/fire_shield() + set name = "Activate Fire Shield" + set desc = "Activate your armor's FIREWALK protocol for a short duration." + set category = "Pyro" + set src in usr + if(!usr || usr.is_mob_incapacitated(TRUE)) + return + if(!ishuman(usr)) + return + var/mob/living/carbon/human/H = usr + + if(H.wear_suit != src) + to_chat(H, SPAN_WARNING("You must be wearing the M35 pyro armor to activate FIREWALK protocol!")) + return + + if(!skillcheck(H, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && H.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_PYRO) + to_chat(H, SPAN_WARNING("You don't seem to know how to use [src]...")) + return + + if(fire_shield_on) + to_chat(H, SPAN_WARNING("You already have FIREWALK protocol activated!")) + return + + if(!can_activate) + to_chat(H, SPAN_WARNING("FIREWALK protocol was recently activated, wait before trying to activate it again.")) + return + + to_chat(H, SPAN_NOTICE("FIREWALK protocol has been activated. You will now be immune to fire for 6 seconds!")) + RegisterSignal(H, COMSIG_LIVING_PREIGNITION, PROC_REF(fire_shield_is_on)) + RegisterSignal(H, list( + COMSIG_LIVING_FLAMER_FLAMED, + ), PROC_REF(flamer_fire_callback)) + fire_shield_on = TRUE + can_activate = FALSE + for(var/X in actions) + var/datum/action/A = X + A.update_button_icon() + addtimer(CALLBACK(src, PROC_REF(end_fire_shield), H), 6 SECONDS) + + H.add_filter("firewalk_on", 1, list("type" = "outline", "color" = "#03fcc6", "size" = 1)) + +/obj/item/clothing/suit/storage/marine/M35/proc/end_fire_shield(mob/living/carbon/human/user) + if(!istype(user)) + return + to_chat(user, SPAN_NOTICE("FIREWALK protocol has finished.")) + UnregisterSignal(user, list( + COMSIG_LIVING_PREIGNITION, + COMSIG_LIVING_FLAMER_FLAMED, + )) + fire_shield_on = FALSE + + user.remove_filter("firewalk_on") + + addtimer(CALLBACK(src, PROC_REF(enable_fire_shield), user), FIRE_SHIELD_CD) + +/obj/item/clothing/suit/storage/marine/M35/proc/enable_fire_shield(mob/living/carbon/human/user) + if(!istype(user)) + return + to_chat(user, SPAN_NOTICE("FIREWALK protocol can be activated again.")) + can_activate = TRUE + + for(var/X in actions) + var/datum/action/A = X + A.update_button_icon() + +/// This proc is solely so that IgniteMob() fails +/obj/item/clothing/suit/storage/marine/M35/proc/fire_shield_is_on(mob/living/L) + SIGNAL_HANDLER + + if(L.fire_reagent?.fire_penetrating) + return + + return COMPONENT_CANCEL_IGNITION + +/obj/item/clothing/suit/storage/marine/M35/proc/flamer_fire_callback(mob/living/L, datum/reagent/R) + SIGNAL_HANDLER + + if(R.fire_penetrating) + return + + . = COMPONENT_NO_IGNITE + if(fire_shield_on) + . |= COMPONENT_NO_BURN + +/obj/item/clothing/suit/storage/marine/M35/dropped(mob/user) + if (!istype(user)) + return + UnregisterSignal(user, list( + COMSIG_LIVING_PREIGNITION, + COMSIG_LIVING_FLAMER_CROSSED, + COMSIG_LIVING_FLAMER_FLAMED, + )) + ..() + +#undef FIRE_SHIELD_CD + +/datum/action/item_action/specialist/fire_shield + ability_primacy = SPEC_PRIMARY_ACTION_2 + +/datum/action/item_action/specialist/fire_shield/New(mob/living/user, obj/item/holder) + ..() + name = "Activate Fire Shield" + button.name = name + button.overlays.Cut() + var/image/IMG = image('icons/obj/items/clothing/cm_suits.dmi', button, "pyro_armor") + button.overlays += IMG + +/datum/action/item_action/specialist/fire_shield/action_cooldown_check() + var/obj/item/clothing/suit/storage/marine/M35/armor = holder_item + if (!istype(armor)) + return FALSE + + return !armor.can_activate + +/datum/action/item_action/specialist/fire_shield/can_use_action() + var/mob/living/carbon/human/H = owner + if(istype(H) && !H.is_mob_incapacitated() && H.wear_suit == holder_item) + return TRUE + +/datum/action/item_action/specialist/fire_shield/action_activate() + var/obj/item/clothing/suit/storage/marine/M35/armor = holder_item + if (!istype(armor)) + return + + armor.fire_shield() diff --git a/code/modules/clothing/suits/marine_coat.dm b/code/modules/clothing/suits/marine_coat.dm index 49569ec1295d..2dd93eb66aee 100644 --- a/code/modules/clothing/suits/marine_coat.dm +++ b/code/modules/clothing/suits/marine_coat.dm @@ -278,15 +278,29 @@ icon_state = "o_jacket" item_state = "o_jacket" -//==================War Correspondent==================\\ +//==================Combat Correspondent==================\\ /obj/item/clothing/suit/storage/jacket/marine/reporter name = "combat correspondent jacket" desc = "A jacket for the most fashionable war correspondents." - icon = 'icons/mob/humans/onmob/contained/war_correspondent.dmi' - icon_state = "wc_suit" - item_state = "wc_suit" - contained_sprite = TRUE + icon_state = "cc_brown" + item_state = "cc_brown" + flags_atom = NO_SNOW_TYPE + has_buttons = FALSE + +/obj/item/clothing/suit/storage/jacket/marine/reporter/green + icon_state = "cc_green" + item_state = "cc_green" + + +/obj/item/clothing/suit/storage/jacket/marine/reporter/black + icon_state = "cc_black" + item_state = "cc_black" + +/obj/item/clothing/suit/storage/jacket/marine/reporter/blue + icon_state = "cc_blue" + item_state = "cc_blue" + //==================Corporate Liaison==================\\ diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index b5859bb6f2d4..54148d4f7076 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -143,8 +143,8 @@ valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL) /obj/item/clothing/suit/storage/apron/overalls - name = "coveralls" - desc = "A set of denim overalls." + name = "blue coveralls" + desc = "A pair of denim overalls. With a large pocket in the front these overalls are popular with workers of all kinds." icon_state = "overalls" item_state = "overalls" flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS @@ -167,6 +167,18 @@ ) valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL) +/obj/item/clothing/suit/storage/apron/overalls/tan + name = "tan coveralls" + desc = "A pair of tan overalls. With a large pocket in the front these overalls are popular with workers of all kinds." + icon_state = "overalls_tan" + item_state = "overalls_tan" + +/obj/item/clothing/suit/storage/apron/overalls/red + name = "red coveralls" + desc = "A pair of reddish-brown overalls. With a large pocket in the front these overalls are popular with workers of all kinds." + icon_state = "overalls_red" + item_state = "overalls_red" + /obj/item/clothing/suit/syndicatefake name = "red space suit replica" icon_state = "syndicate" diff --git a/code/modules/clothing/under/gimmick.dm b/code/modules/clothing/under/gimmick.dm index d8e0a16fc7a2..793bc0593735 100644 --- a/code/modules/clothing/under/gimmick.dm +++ b/code/modules/clothing/under/gimmick.dm @@ -11,6 +11,10 @@ has_sensor = UNIFORM_NO_SENSORS displays_id = 0 + item_icons = list( + WEAR_BODY = 'icons/mob/humans/onmob/uniform_1.dmi', + ) + //JASON /obj/item/clothing/under/gimmick/jason name = "dirty work attire" diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm index 3b41b2db02c7..4f0c06273d9e 100644 --- a/code/modules/clothing/under/marine_uniform.dm +++ b/code/modules/clothing/under/marine_uniform.dm @@ -692,6 +692,40 @@ has_sensor = UNIFORM_HAS_SENSORS sensor_faction = FACTION_COLONIST +/obj/item/clothing/under/colonist/workwear + name = "grey workwear" + desc = "A pair of black slacks and a short-sleeve grey workshirt. Standard uniform for Weyland Yutani employees working in colony operations and administration." + icon_state = "workwear_grey" + worn_state = "workwear_grey" + +/obj/item/clothing/under/colonist/workwear/khaki + name = "khaki workwear" + desc = "A pair of jeans paired with a khaki workshirt. A common pairing among blue-collar workers due to its drab look." + icon_state = "workwear_khaki" + worn_state = "workwear_khaki" + flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE|UNIFORM_JACKET_REMOVABLE + +/obj/item/clothing/under/colonist/workwear/pink + name = "pink workwear" + desc = "A pair of jeans paired with a pink workshirt. Pink? Your wife might not think so, but such outlandish attire deserves questioning by corporate security. What are you, some kind of free-thinking anarchist?" + icon_state = "workwear_pink" + worn_state = "workwear_pink" + flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE|UNIFORM_JACKET_REMOVABLE + +/obj/item/clothing/under/colonist/workwear/blue + name = "blue workwear" + desc = "A pair of brown canvas workpants paired with a dark blue workshirt. A common pairing among blue-collar workers." + icon_state = "workwear_blue" + worn_state = "workwear_blue" + flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE|UNIFORM_JACKET_REMOVABLE + +/obj/item/clothing/under/colonist/workwear/green + name = "green workwear" + desc = "A pair of brown canvas workpants paired with a green workshirt. An common pairing among blue-collar workers." + icon_state = "workwear_green" + worn_state = "workwear_green" + flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE|UNIFORM_JACKET_REMOVABLE + /obj/item/clothing/under/colonist/clf name = "\improper Colonial Liberation Front uniform" desc = "A stylish grey-green jumpsuit - standard issue for colonists. This version appears to have the symbol of the Colonial Liberation Front emblazoned in select areas." @@ -735,6 +769,7 @@ displays_id = FALSE has_sensor = UNIFORM_HAS_SENSORS sensor_faction = FACTION_MARINE + /obj/item/clothing/under/tshirt/gray_blu name = "gray T-shirt and jeans" desc = "A comfortable gray T-shirt and blue jeans." @@ -755,7 +790,7 @@ /obj/item/clothing/under/CM_uniform name = "\improper Colonial Marshal uniform" - desc = "A blue shirt and tan trousers - the official uniform for a Colonial Marshal." + desc = "A pair of off-white slacks and a blue button-down shirt with a dark brown tie; the standard uniform of the Colonial Marshals." icon_state = "marshal" worn_state = "marshal" armor_melee = CLOTHING_ARMOR_LOW @@ -766,7 +801,7 @@ armor_bio = CLOTHING_ARMOR_NONE armor_rad = CLOTHING_ARMOR_NONE armor_internaldamage = CLOTHING_ARMOR_LOW - + flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE|UNIFORM_JACKET_REMOVABLE /obj/item/clothing/under/liaison_suit name = "liaison's tan suit" @@ -847,11 +882,24 @@ /obj/item/clothing/under/marine/reporter name = "combat correspondent uniform" desc = "A relaxed and robust uniform fit for any potential reporting needs." - icon = 'icons/mob/humans/onmob/contained/war_correspondent.dmi' - icon_state = "wc_uniform" - worn_state = "wc_uniform" - contained_sprite = TRUE - flags_atom = NO_NAME_OVERRIDE + icon_state = "cc_white" + worn_state = "cc_white" + flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE + item_icons = list( + WEAR_BODY = 'icons/mob/humans/onmob/uniform_1.dmi', + ) + +/obj/item/clothing/under/marine/reporter/black + icon_state = "cc_black" + worn_state = "cc_black" + +/obj/item/clothing/under/marine/reporter/orange + icon_state = "cc_orange" + worn_state = "cc_orange" + +/obj/item/clothing/under/marine/reporter/red + icon_state = "cc_red" + worn_state = "cc_red" /obj/item/clothing/under/twe_suit name = "representative's fine suit" diff --git a/code/modules/cm_aliens/XenoStructures.dm b/code/modules/cm_aliens/XenoStructures.dm index ab38e59002d8..c014fbf9c211 100644 --- a/code/modules/cm_aliens/XenoStructures.dm +++ b/code/modules/cm_aliens/XenoStructures.dm @@ -578,6 +578,9 @@ if(current_mob.stat == DEAD) return FALSE + if(HAS_TRAIT(current_mob, TRAIT_NESTED)) + return FALSE + var/turf/current_turf var/turf/last_turf = loc var/atom/temp_atom = new acid_type() diff --git a/code/modules/cm_aliens/structures/trap.dm b/code/modules/cm_aliens/structures/trap.dm index e4b021e98f46..9cd95f22b158 100644 --- a/code/modules/cm_aliens/structures/trap.dm +++ b/code/modules/cm_aliens/structures/trap.dm @@ -4,7 +4,7 @@ /obj/effect/alien/resin/trap desc = "It looks like a hiding hole." - name = "resin hole" + name = "resin trap" icon_state = "trap0" density = FALSE opacity = FALSE @@ -12,7 +12,7 @@ health = 5 layer = RESIN_STRUCTURE_LAYER var/list/tripwires = list() - var/hivenumber = XENO_HIVE_NORMAL //Hivenumber of the xeno that planted it OR the last Facehugger that was placed (essentially taking over the hole) + var/hivenumber = XENO_HIVE_NORMAL //Hivenumber of the xeno that planted it OR the last Facehugger that was placed (essentially taking over the trap) var/trap_type = RESIN_TRAP_EMPTY var/armed = 0 var/created_by // ckey @@ -247,7 +247,7 @@ to_chat(B, SPAN_XENOWARNING("You must produce more plasma before doing this.")) return XENO_NO_DELAY_ACTION - to_chat(X, SPAN_XENONOTICE("You begin charging the resin hole with acid gas.")) + to_chat(X, SPAN_XENONOTICE("You begin charging the resin trap with acid gas.")) xeno_attack_delay(X) if(!do_after(B, 30, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, src)) return XENO_NO_DELAY_ACTION @@ -268,8 +268,8 @@ playsound(loc, 'sound/effects/refill.ogg', 25, 1) set_state(RESIN_TRAP_GAS) cause_data = create_cause_data("resin gas trap", B) - B.visible_message(SPAN_XENOWARNING("\The [B] pressurises the resin hole with acid gas!"), \ - SPAN_XENOWARNING("You pressurise the resin hole with acid gas!"), null, 5) + B.visible_message(SPAN_XENOWARNING("\The [B] pressurises the resin trap with acid gas!"), \ + SPAN_XENOWARNING("You pressurise the resin trap with acid gas!"), null, 5) else //Non-boiler acid types var/acid_cost = 70 @@ -282,7 +282,7 @@ to_chat(X, SPAN_XENOWARNING("You must produce more plasma before doing this.")) return XENO_NO_DELAY_ACTION - to_chat(X, SPAN_XENONOTICE("You begin charging the resin hole with acid.")) + to_chat(X, SPAN_XENONOTICE("You begin charging the resin trap with acid.")) xeno_attack_delay(X) if(!do_after(X, 3 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, src)) return XENO_NO_DELAY_ACTION @@ -300,8 +300,8 @@ else set_state(RESIN_TRAP_ACID1 + X.acid_level - 1) - X.visible_message(SPAN_XENOWARNING("\The [X] pressurises the resin hole with acid!"), \ - SPAN_XENOWARNING("You pressurise the resin hole with acid!"), null, 5) + X.visible_message(SPAN_XENOWARNING("\The [X] pressurises the resin trap with acid!"), \ + SPAN_XENOWARNING("You pressurise the resin trap with acid!"), null, 5) return XENO_NO_DELAY_ACTION @@ -310,15 +310,15 @@ for(var/turf/T in orange(1,loc)) if(T.density) continue - var/obj/effect/hole_tripwire/HT = new /obj/effect/hole_tripwire(T) - HT.linked_trap = src - tripwires += HT + var/obj/effect/trap_tripwire/new_tripwire = new /obj/effect/trap_tripwire(T) + new_tripwire.linked_trap = src + tripwires += new_tripwire /obj/effect/alien/resin/trap/attackby(obj/item/W, mob/user) if(!(istype(W, /obj/item/clothing/mask/facehugger) && isxeno(user))) return ..() if(trap_type != RESIN_TRAP_EMPTY) - to_chat(user, SPAN_XENOWARNING("You can't put a hugger in this hole!")) + to_chat(user, SPAN_XENOWARNING("You can't put a hugger in this trap!")) return var/obj/item/clothing/mask/facehugger/FH = W if(FH.stat == DEAD) @@ -329,7 +329,7 @@ return if (X.hivenumber != hivenumber) - to_chat(user, SPAN_XENOWARNING("This resin hole doesn't belong to your hive!")) + to_chat(user, SPAN_XENOWARNING("This resin trap doesn't belong to your hive!")) return if (FH.hivenumber != hivenumber) @@ -353,21 +353,21 @@ QDEL_NULL_LIST(tripwires) . = ..() -/obj/effect/hole_tripwire - name = "hole tripwire" +/obj/effect/trap_tripwire + name = "trap tripwire" anchored = TRUE mouse_opacity = MOUSE_OPACITY_TRANSPARENT invisibility = 101 unacidable = TRUE //You never know var/obj/effect/alien/resin/trap/linked_trap -/obj/effect/hole_tripwire/Destroy() +/obj/effect/trap_tripwire/Destroy() if(linked_trap) linked_trap.tripwires -= src linked_trap = null . = ..() -/obj/effect/hole_tripwire/Crossed(atom/A) +/obj/effect/trap_tripwire/Crossed(atom/A) if(!linked_trap) qdel(src) return diff --git a/code/modules/cm_aliens/weeds.dm b/code/modules/cm_aliens/weeds.dm index 5298e7ab02f1..d614d87bf9b9 100644 --- a/code/modules/cm_aliens/weeds.dm +++ b/code/modules/cm_aliens/weeds.dm @@ -123,7 +123,7 @@ update_icon() /obj/effect/alien/weeds/node/weak - name = "weak resin node" + name = "weak weed node" health = WEED_HEALTH_STANDARD alpha = 127 @@ -469,7 +469,7 @@ /obj/effect/alien/weeds/node - name = "resin node" + name = "weed node" desc = "A weird, pulsating node." icon_state = "weednode" // Weed nodes start out with normal weed health and become stronger once they've stopped spreading diff --git a/code/modules/cm_marines/Donator_Items.dm b/code/modules/cm_marines/Donator_Items.dm index 17669b0157dc..e534997ddd42 100644 --- a/code/modules/cm_marines/Donator_Items.dm +++ b/code/modules/cm_marines/Donator_Items.dm @@ -972,8 +972,11 @@ icon_state = null item_state = null min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT - //DON'T GRAB STUFF BETWEEN THIS LINE - //AND THIS LINE + + item_icons = list( + WEAR_BODY = 'icons/mob/humans/onmob/uniform_1.dmi', + ) + //END UNIFORM TEMPLATE /obj/item/clothing/under/marine/fluff/marinemedic //UNUSED diff --git a/code/modules/cm_marines/dropship_ammo.dm b/code/modules/cm_marines/dropship_ammo.dm index 19086b36c957..93768e218375 100644 --- a/code/modules/cm_marines/dropship_ammo.dm +++ b/code/modules/cm_marines/dropship_ammo.dm @@ -427,7 +427,7 @@ max_ammo_count = 1 ammo_name = "area denial sentry" travelling_time = 0 // handled by droppod - point_cost = 800 + point_cost = 800 //handled by printer accuracy_range = 0 // pinpoint max_inaccuracy = 0 /// Special structures it needs to break with drop pod diff --git a/code/modules/cm_marines/dropship_equipment.dm b/code/modules/cm_marines/dropship_equipment.dm index b162fb7c6a87..bd40076ea500 100644 --- a/code/modules/cm_marines/dropship_equipment.dm +++ b/code/modules/cm_marines/dropship_equipment.dm @@ -21,6 +21,7 @@ var/skill_required = SKILL_PILOT_TRAINED var/combat_equipment = TRUE + /obj/structure/dropship_equipment/Destroy() QDEL_NULL(ammo_equipped) if(linked_shuttle) @@ -35,6 +36,7 @@ linked_console = null . = ..() + /obj/structure/dropship_equipment/attack_alien(mob/living/carbon/xenomorph/current_xenomorph) if(unslashable) return XENO_NO_DELAY_ACTION diff --git a/code/modules/cm_marines/vehicle_part_fabricator.dm b/code/modules/cm_marines/vehicle_part_fabricator.dm index 0095ff54a2ab..fd9b0faafa61 100644 --- a/code/modules/cm_marines/vehicle_part_fabricator.dm +++ b/code/modules/cm_marines/vehicle_part_fabricator.dm @@ -10,8 +10,8 @@ icon_state = "drone_fab_idle" var/busy = FALSE var/generate_points = TRUE - var/valid_parts = null - var/valid_ammo = null + var/omnisentry_price_scale = 100 + var/omnisentry_price = 300 /obj/structure/machinery/part_fabricator/New() ..() @@ -28,7 +28,8 @@ /obj/structure/machinery/part_fabricator/dropship/ui_data(mob/user) return list( - "points" = get_point_store() + "points" = get_point_store(), + "omnisentrygun_price" = omnisentry_price ) /obj/structure/machinery/part_fabricator/power_change() @@ -53,11 +54,15 @@ /obj/structure/machinery/part_fabricator/proc/build_part(part_type, cost, mob/user) set waitfor = 0 if(stat & NOPOWER) return + if(ispath(part_type,/obj/structure/ship_ammo/sentry)) + cost = omnisentry_price if(get_point_store() < cost) to_chat(user, SPAN_WARNING("You don't have enough points to build that.")) return visible_message(SPAN_NOTICE("[src] starts printing something.")) spend_point_store(cost) + if(ispath(part_type,/obj/structure/ship_ammo/sentry)) + omnisentry_price += omnisentry_price_scale icon_state = "drone_fab_active" busy = TRUE addtimer(CALLBACK(src, PROC_REF(do_build_part), part_type), 10 SECONDS) @@ -68,7 +73,7 @@ new part_type(get_step(src, SOUTHEAST)) icon_state = "drone_fab_idle" -/obj/structure/machinery/part_fabricator/ui_act(action, params) +/obj/structure/machinery/part_fabricator/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() if(.) return @@ -77,27 +82,33 @@ to_chat(usr, SPAN_WARNING("The [name] is busy. Please wait for completion of previous operation.")) return - if(action == "produce") - var/produce = text2path(params["path"]) - var/cost = text2num(params["cost"]) - var/exploiting = TRUE - - if (valid_parts && ispath(produce, valid_parts)) - exploiting = FALSE - else if (valid_ammo && ispath(produce, valid_ammo)) - exploiting = FALSE + var/mob/user = ui.user - if (cost < 0) - exploiting = TRUE + if(action == "produce") + var/cost = 0 + var/is_ammo = params["is_ammo"] + var/index = params["index"] + + if(is_ammo == 0) + var/obj/structure/dropship_equipment/produce = (typesof(/obj/structure/dropship_equipment))[index] + if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_COMBAT_CAS) && produce.combat_equipment) + log_admin("Bad topic: [user] may be trying to HREF exploit [src] to bypass no combat cas") + return + cost = initial(produce.point_cost) + build_part(produce, cost, user) + return - if (exploiting) - log_admin("Bad topic: [usr] may be trying to HREF exploit [src] with [produce], [cost]") + else + var/obj/structure/ship_ammo/produce = (typesof(/obj/structure/ship_ammo))[index] + if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_COMBAT_CAS) && produce.combat_equipment) + log_admin("Bad topic: [user] may be trying to HREF exploit [src] to bypass no combat cas") + return + cost = initial(produce.point_cost) + build_part(produce, cost, user) return - build_part(produce, cost, usr) - return else - log_admin("Bad topic: [usr] may be trying to HREF exploit [src]") + log_admin("Bad topic: [user] may be trying to HREF exploit [src]") return /obj/structure/machinery/part_fabricator/attack_hand(mob/user) @@ -116,12 +127,11 @@ name = "dropship part fabricator" desc = "A large automated 3D printer for producing dropship parts. You can recycle parts or ammo in it, and get 80% of your points back, by clicking it while holding them in a powerloader claw." req_access = list(ACCESS_MARINE_DROPSHIP) - valid_parts = /obj/structure/dropship_equipment - valid_ammo = /obj/structure/ship_ammo unslashable = TRUE unacidable = TRUE + /obj/structure/machinery/part_fabricator/dropship/get_point_store() return GLOB.supply_controller.dropship_points @@ -134,86 +144,100 @@ /obj/structure/machinery/part_fabricator/dropship/ui_static_data(mob/user) var/list/static_data = list() static_data["Equipment"] = list() + var/is_ammo = 0 + var/index = 1 for(var/build_type in typesof(/obj/structure/dropship_equipment)) - var/obj/structure/dropship_equipment/DE = build_type - if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_COMBAT_CAS) && initial(DE.combat_equipment)) + var/obj/structure/dropship_equipment/dropship_equipment_data = build_type + if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_COMBAT_CAS) && dropship_equipment_data.combat_equipment) + index += 1 continue - var/build_name = initial(DE.name) - var/build_description = initial(DE.desc) - var/build_cost = initial(DE.point_cost) + var/build_name = initial(dropship_equipment_data.name) + var/build_description = initial(dropship_equipment_data.desc) + var/build_cost = initial(dropship_equipment_data.point_cost) if(build_cost) static_data["Equipment"] += list(list( "name" = capitalize_first_letters(build_name), "desc" = build_description, - "path" = build_type, - "cost" = build_cost + "cost" = build_cost, + "index" = index, + "is_ammo" = is_ammo )) + index += 1 static_data["Ammo"] = list() + is_ammo = 1 + index = 1 for(var/build_type in typesof(/obj/structure/ship_ammo)) - var/obj/structure/ship_ammo/SA = build_type - if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_COMBAT_CAS) && initial(SA.combat_equipment)) + var/obj/structure/ship_ammo/ship_ammo_data = build_type + if(SSticker.mode && MODE_HAS_TOGGLEABLE_FLAG(MODE_NO_COMBAT_CAS) && ship_ammo_data.combat_equipment) + index = index + 1 continue - var/build_name = initial(SA.name) - var/build_description = initial(SA.desc) - var/build_cost = initial(SA.point_cost) + var/build_name = initial(ship_ammo_data.name) + var/build_description = initial(ship_ammo_data.desc) + var/build_cost = initial(ship_ammo_data.point_cost) if(build_cost) static_data["Ammo"] += list(list( "name" = capitalize_first_letters(build_name), "desc" = build_description, - "path" = build_type, - "cost" = build_cost + "cost" = build_cost, + "index" = index, + "is_ammo" = is_ammo )) + index += 1 return static_data /obj/structure/machinery/part_fabricator/dropship/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/powerloader_clamp)) - var/obj/item/powerloader_clamp/PC = I - recycle_equipment(PC, user) + var/obj/item/powerloader_clamp/powerloader_clamp_used = I + recycle_equipment(powerloader_clamp_used, user) return return ..() -/obj/structure/machinery/part_fabricator/dropship/proc/recycle_equipment(obj/item/powerloader_clamp/PC, mob/living/user) - if(!PC.loaded) - to_chat(user, SPAN_WARNING("There is nothing loaded in \the [PC].")) +/obj/structure/machinery/part_fabricator/dropship/proc/recycle_equipment(obj/item/powerloader_clamp/powerloader_clamp_used, mob/living/user) + if(!powerloader_clamp_used.loaded) + to_chat(user, SPAN_WARNING("There is nothing loaded in \the [powerloader_clamp_used].")) return var/recycle_points - if(istype(PC.loaded, /obj/structure/dropship_equipment)) - var/obj/structure/dropship_equipment/SE = PC.loaded - recycle_points = SE.point_cost - else if(istype(PC.loaded, /obj/structure/ship_ammo)) - var/obj/structure/ship_ammo/SE = PC.loaded - if(!SE.ammo_count) - to_chat(user, SPAN_WARNING("\The [SE] is empty!")) + if(istype(powerloader_clamp_used.loaded, /obj/structure/dropship_equipment)) + var/obj/structure/dropship_equipment/sold_eqipment = powerloader_clamp_used.loaded + recycle_points = sold_eqipment.point_cost + else if(istype(powerloader_clamp_used.loaded, /obj/structure/ship_ammo)) + var/obj/structure/ship_ammo/sold_eqipment = powerloader_clamp_used.loaded + if(!sold_eqipment.ammo_count) + to_chat(user, SPAN_WARNING("\The [sold_eqipment] is empty!")) return - if(SE.ammo_count != SE.max_ammo_count) - recycle_points = (SE.point_cost * (SE.ammo_count / SE.max_ammo_count)) - to_chat(user, SPAN_WARNING("\The [SE] is not fully loaded, and less points will be able to be refunded.")) + if(sold_eqipment.ammo_count != sold_eqipment.max_ammo_count) + recycle_points = (sold_eqipment.point_cost * (sold_eqipment.ammo_count / sold_eqipment.max_ammo_count)) + to_chat(user, SPAN_WARNING("\The [sold_eqipment] is not fully loaded, and less points will be able to be refunded.")) else - recycle_points = SE.point_cost + recycle_points = sold_eqipment.point_cost + if(istype(powerloader_clamp_used.loaded, /obj/structure/ship_ammo/sentry)) + recycle_points = omnisentry_price - omnisentry_price_scale if(!recycle_points) - to_chat(user, SPAN_WARNING("\The [PC.loaded] can't be recycled!")) + to_chat(user, SPAN_WARNING("\The [powerloader_clamp_used.loaded] can't be recycled!")) return - var/thing_to_recycle = PC.loaded - to_chat(user, SPAN_WARNING("You start recycling \the [PC.loaded]!")) + var/thing_to_recycle = powerloader_clamp_used.loaded + to_chat(user, SPAN_WARNING("You start recycling \the [powerloader_clamp_used.loaded]!")) playsound(loc, 'sound/machines/hydraulics_1.ogg', 40, 1) - if(!user || !do_after(user, (7 SECONDS) * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_HOSTILE, PC.loaded, INTERRUPT_ALL)) + if(!user || !do_after(user, (7 SECONDS) * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_HOSTILE, powerloader_clamp_used.loaded, INTERRUPT_ALL)) to_chat(user, SPAN_NOTICE("You stop recycling \the [thing_to_recycle].")) return - for(var/obj/thing as anything in PC.loaded) + if(istype(powerloader_clamp_used.loaded, /obj/structure/ship_ammo/sentry)) + omnisentry_price -= omnisentry_price_scale + for(var/obj/thing as anything in powerloader_clamp_used.loaded) thing.forceMove(loc) // no sentries popping out when we qdel please qdel(thing) - qdel(PC.loaded) - PC.loaded = null + qdel(powerloader_clamp_used.loaded) + powerloader_clamp_used.loaded = null to_chat(user, SPAN_NOTICE("You recycle \the [thing_to_recycle] into [src], and get back [round(recycle_points * 0.8)] points.")) msg_admin_niche("[key_name(user)] recycled a [thing_to_recycle] into \the [src] for [round(recycle_points * 0.8)] points.") add_to_point_store(round(recycle_points * 0.8)) playsound(loc, 'sound/machines/fax.ogg', 40, 1) - PC.update_icon() + powerloader_clamp_used.update_icon() // WARNING: IF YOU DECIDE TO READD THIS, GIVE THE HARDPOINTS POINT COSTS @@ -223,8 +247,6 @@ desc = "A large automated 3D printer for producing vehicle parts." req_access = list(ACCESS_MARINE_CREWMAN) generate_points = FALSE - valid_parts = /obj/item/hardpoint - valid_ammo = /obj/item/ammo_magazine/hardpoint unacidable = TRUE indestructible = TRUE @@ -242,9 +264,9 @@ var/list/static_data = list() static_data["Equipment"] = list() for(var/build_type in typesof(/obj/item/hardpoint)) - var/obj/item/hardpoint/TE = build_type - var/build_name = initial(TE.name) - var/build_description = initial(TE.desc) + var/obj/item/hardpoint/hardpoint_data = build_type + var/build_name = initial(hardpoint_data.name) + var/build_description = initial(hardpoint_data.desc) var/build_cost = 0 if(build_cost) static_data["Equipment"] += list(list( @@ -256,9 +278,9 @@ static_data["Ammo"] = list() for(var/build_type in typesof(/obj/item/ammo_magazine/hardpoint)) - var/obj/item/ammo_magazine/hardpoint/TA = build_type - var/build_name = initial(TA.name) - var/build_description = initial(TA.desc) + var/obj/item/ammo_magazine/hardpoint/ammo_data = build_type + var/build_name = initial(ammo_data.name) + var/build_description = initial(ammo_data.desc) var/build_cost = 0 if(build_cost) static_data["Ammo"] += list(list( diff --git a/code/modules/defenses/bell_tower.dm b/code/modules/defenses/bell_tower.dm index 6939557342f0..b4741734e0f4 100644 --- a/code/modules/defenses/bell_tower.dm +++ b/code/modules/defenses/bell_tower.dm @@ -18,11 +18,11 @@ can_be_near_defense = TRUE choice_categories = list( - SENTRY_CATEGORY_IFF = list(FACTION_USCM, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), ) selected_categories = list( - SENTRY_CATEGORY_IFF = FACTION_USCM, + SENTRY_CATEGORY_IFF = FACTION_MARINE, ) diff --git a/code/modules/defenses/defenses.dm b/code/modules/defenses/defenses.dm index fefd3c640c65..aedbad2d46e9 100644 --- a/code/modules/defenses/defenses.dm +++ b/code/modules/defenses/defenses.dm @@ -134,7 +134,7 @@ */ /obj/structure/machinery/defenses/proc/handle_iff(selection) switch(selection) - if(FACTION_USCM) + if(FACTION_MARINE) faction_group = FACTION_LIST_MARINE if(FACTION_WEYLAND) faction_group = FACTION_LIST_MARINE_WY diff --git a/code/modules/defenses/planted_flag.dm b/code/modules/defenses/planted_flag.dm index fac725047fa9..12bcab9b0475 100644 --- a/code/modules/defenses/planted_flag.dm +++ b/code/modules/defenses/planted_flag.dm @@ -16,11 +16,11 @@ can_be_near_defense = TRUE choice_categories = list( - SENTRY_CATEGORY_IFF = list(FACTION_USCM, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), ) selected_categories = list( - SENTRY_CATEGORY_IFF = FACTION_USCM, + SENTRY_CATEGORY_IFF = FACTION_MARINE, ) diff --git a/code/modules/defenses/sentry.dm b/code/modules/defenses/sentry.dm index bfb44a38a6a5..a02e4e7808c9 100644 --- a/code/modules/defenses/sentry.dm +++ b/code/modules/defenses/sentry.dm @@ -45,12 +45,12 @@ /// action list is configurable for all subtypes, this is just an example choice_categories = list( // SENTRY_CATEGORY_ROF = list(ROF_SINGLE, ROF_BURST, ROF_FULL_AUTO), - SENTRY_CATEGORY_IFF = list(FACTION_USCM, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), ) selected_categories = list( // SENTRY_CATEGORY_ROF = ROF_SINGLE, - SENTRY_CATEGORY_IFF = FACTION_USCM, + SENTRY_CATEGORY_IFF = FACTION_MARINE, ) /obj/structure/machinery/defenses/sentry/Initialize() @@ -478,7 +478,7 @@ /obj/structure/machinery/defenses/sentry/premade/Initialize() . = ..() if(selected_categories[SENTRY_CATEGORY_IFF]) - selected_categories[SENTRY_CATEGORY_IFF] = FACTION_USCM + selected_categories[SENTRY_CATEGORY_IFF] = FACTION_MARINE /obj/structure/machinery/defenses/sentry/premade/get_examine_text(mob/user) . = ..() @@ -562,11 +562,11 @@ handheld_type = /obj/item/defenses/handheld/sentry/dmr choice_categories = list( - SENTRY_CATEGORY_IFF = list(FACTION_USCM, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), ) selected_categories = list( - SENTRY_CATEGORY_IFF = FACTION_USCM, + SENTRY_CATEGORY_IFF = FACTION_MARINE, ) diff --git a/code/modules/defenses/sentry_flamer.dm b/code/modules/defenses/sentry_flamer.dm index 9ae794e3c811..f884b4ec5d14 100644 --- a/code/modules/defenses/sentry_flamer.dm +++ b/code/modules/defenses/sentry_flamer.dm @@ -11,12 +11,12 @@ choice_categories = list( // SENTRY_CATEGORY_ROF = list(ROF_SINGLE, ROF_FULL_AUTO), - SENTRY_CATEGORY_IFF = list(FACTION_USCM, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), ) selected_categories = list( SENTRY_CATEGORY_ROF = ROF_SINGLE, - SENTRY_CATEGORY_IFF = FACTION_USCM, + SENTRY_CATEGORY_IFF = FACTION_MARINE, ) /obj/structure/machinery/defenses/sentry/flamer/handle_rof(level) diff --git a/code/modules/defenses/tesla_coil.dm b/code/modules/defenses/tesla_coil.dm index 4c0888e28f6d..cb0646b29775 100644 --- a/code/modules/defenses/tesla_coil.dm +++ b/code/modules/defenses/tesla_coil.dm @@ -20,11 +20,11 @@ has_camera = FALSE choice_categories = list( - SENTRY_CATEGORY_IFF = list(FACTION_USCM, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), ) selected_categories = list( - SENTRY_CATEGORY_IFF = FACTION_USCM, + SENTRY_CATEGORY_IFF = FACTION_MARINE, ) diff --git a/code/modules/escape_menu/escape_menu.dm b/code/modules/escape_menu/escape_menu.dm index c31234678b62..b61bbd5b3f36 100644 --- a/code/modules/escape_menu/escape_menu.dm +++ b/code/modules/escape_menu/escape_menu.dm @@ -49,7 +49,7 @@ GLOBAL_LIST_EMPTY(escape_menus) show_page() RegisterSignal(client, COMSIG_PARENT_QDELETING, PROC_REF(on_client_qdel)) - RegisterSignal(client, COMSIG_CLIENT_MOB_LOGIN, PROC_REF(on_client_mob_login)) + RegisterSignal(client, COMSIG_CLIENT_MOB_LOGGED_IN, PROC_REF(on_client_mob_login)) if (!isnull(ckey)) GLOB.escape_menus[ckey] = src diff --git a/code/modules/gear_presets/clf.dm b/code/modules/gear_presets/clf.dm index d9833f0cc038..392cb63646f6 100644 --- a/code/modules/gear_presets/clf.dm +++ b/code/modules/gear_presets/clf.dm @@ -745,35 +745,42 @@ /datum/equipment_preset/clf/synth/load_race(mob/living/carbon/human/new_human) new_human.set_species(SYNTH_COLONY_GEN_ONE) -/datum/equipment_preset/clf/synth/load_gear(mob/living/carbon/human/new_human) - var/obj/item/clothing/under/colonist/clf/CLF = new() - var/obj/item/clothing/accessory/storage/webbing/W = new() - CLF.attach_accessory(new_human, W) - new_human.equip_to_slot_or_del(CLF, WEAR_BODY) +/datum/equipment_preset/clf/synth/load_skills(mob/living/carbon/human/new_human) + new_human.allow_gun_usage = FALSE +/datum/equipment_preset/clf/synth/load_gear(mob/living/carbon/human/new_human) + //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/ert, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat, WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/militia, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/full/with_suture_and_graft, WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(new_human), WEAR_IN_BELT) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher/mini, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) - - spawn_weapon(/obj/item/weapon/gun/rifle/mar40/carbine, /obj/item/ammo_magazine/rifle/mar40/extended, new_human, 0, 10) - new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher/mini, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/attachable/bayonet/upp, WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF/command(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/synth, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction/full_barbed_wire, WEAR_R_STORE) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF/command(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/attachable/bayonet/upp, WEAR_FACE) if(new_human.disabilities & NEARSIGHTED) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) else new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/jan, WEAR_HEAD) + //body + var/obj/item/clothing/under/colonist/clf/CLF = new() + var/obj/item/clothing/accessory/storage/webbing/webbing = new() + CLF.attach_accessory(new_human, webbing) + new_human.equip_to_slot_or_del(CLF, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/militia, WEAR_JACKET) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/full/with_suture_and_graft, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(new_human), WEAR_IN_BELT) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat, WEAR_FEET) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/synth, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction/full_barbed_wire, WEAR_R_STORE) /datum/equipment_preset/clf/synth/get_antag_clothing_equipment() return list( diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm index ae6544fa3d63..7bf6cbb8325d 100644 --- a/code/modules/gear_presets/cmb.dm +++ b/code/modules/gear_presets/cmb.dm @@ -51,7 +51,7 @@ var/obj/item/clothing/under/uniform = new_human.w_uniform if(istype(uniform)) uniform.has_sensor = UNIFORM_HAS_SENSORS - uniform.sensor_faction = FACTION_USCM + uniform.sensor_faction = FACTION_MARINE return ..() //*****************************************************************************************************/ @@ -162,7 +162,7 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/cmb/normalpoint, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/holobadge/cord, WEAR_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar, WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB/marshal, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/telebaton, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/m3717, WEAR_J_STORE) diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm index cfec62a3c65b..cbe8bc0abce4 100644 --- a/code/modules/gear_presets/corpses.dm +++ b/code/modules/gear_presets/corpses.dm @@ -988,7 +988,7 @@ paygrade = PAY_SHORT_ME5 idtype = /obj/item/card/id/dogtag role_comm_title = "FORECON" - faction_group = list(FACTION_USCM, FACTION_SURVIVOR) + faction_group = list(FACTION_MARINE, FACTION_SURVIVOR) access = list( ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_ENGINEERING, diff --git a/code/modules/gear_presets/royal_marines.dm b/code/modules/gear_presets/royal_marines.dm index b916a52c4b6f..aa33eac97733 100644 --- a/code/modules/gear_presets/royal_marines.dm +++ b/code/modules/gear_presets/royal_marines.dm @@ -1,7 +1,7 @@ /datum/equipment_preset/twe name = "Three World Empire" faction = FACTION_TWE - faction_group = list(FACTION_TWE, FACTION_USCM) + faction_group = list(FACTION_TWE, FACTION_MARINE) languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) /datum/equipment_preset/twe/royal_marine/load_name(mob/living/carbon/human/new_human, randomise) diff --git a/code/modules/gear_presets/survivors/lv_522/forcon_survivors.dm b/code/modules/gear_presets/survivors/lv_522/forcon_survivors.dm index 34cbc8e0ab9c..c4e08af9dcfa 100644 --- a/code/modules/gear_presets/survivors/lv_522/forcon_survivors.dm +++ b/code/modules/gear_presets/survivors/lv_522/forcon_survivors.dm @@ -5,7 +5,7 @@ idtype = /obj/item/card/id/dogtag role_comm_title = "FORECON" rank = JOB_SURVIVOR - faction_group = list(FACTION_USCM, FACTION_SURVIVOR) + faction_group = list(FACTION_MARINE, FACTION_SURVIVOR) flags = EQUIPMENT_PRESET_START_OF_ROUND access = list( ACCESS_CIVILIAN_PUBLIC, diff --git a/code/modules/gear_presets/survivors/shivas_snowball/panic_room_insert_shivas.dm b/code/modules/gear_presets/survivors/shivas_snowball/panic_room_insert_shivas.dm new file mode 100644 index 000000000000..9f1e2c705efb --- /dev/null +++ b/code/modules/gear_presets/survivors/shivas_snowball/panic_room_insert_shivas.dm @@ -0,0 +1,43 @@ +// /obj/effect/landmark/survivor_spawner/shivas_assistant_manager +// panic_room_insert_shivas.dmm + +/datum/equipment_preset/survivor/wy/asstmanager + name = "Survivor - Corporate Assistant Manager" + flags = EQUIPMENT_PRESET_EXTRA + paygrade = PAY_SHORT_WYC7 + skills = /datum/skills/civilian/survivor/manager + assignment = "Assistant Operations Manager" + idtype = /obj/item/card/id/silver/clearance_badge/manager + faction_group = list(FACTION_WY, FACTION_SURVIVOR) + access = list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ACCESS_WY_SECURITY, + ACCESS_WY_RESEARCH, + ACCESS_WY_ARMORY, + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ACCESS_CIVILIAN_BRIG, + ACCESS_CIVILIAN_MEDBAY, + ACCESS_CIVILIAN_COMMAND, + ) + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + + survivor_variant = CORPORATE_SURVIVOR + +/datum/equipment_preset/survivor/wy/asstmanager/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/manager(new_human), WEAR_BODY) + 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/reagent_container/glass/beaker/vial/random/good(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/grant, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/navy(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY, WEAR_L_EAR) + 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/shoes/marine/knife, WEAR_FEET) + 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/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) + add_survivor_weapon_civilian(new_human) + ..() diff --git a/code/modules/gear_presets/survivors/solaris/preset_solaris.dm b/code/modules/gear_presets/survivors/solaris/preset_solaris.dm index 91dd05ef8154..2d0f634a6948 100644 --- a/code/modules/gear_presets/survivors/solaris/preset_solaris.dm +++ b/code/modules/gear_presets/survivors/solaris/preset_solaris.dm @@ -6,7 +6,7 @@ /datum/equipment_preset/survivor/trucker/solaris/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/worker_overalls(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/apron/overalls(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/red(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/trucker/red(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/big(new_human), WEAR_EYES) ..() diff --git a/code/modules/gear_presets/survivors/survivors.dm b/code/modules/gear_presets/survivors/survivors.dm index 9240d1782912..0cecaccce43d 100644 --- a/code/modules/gear_presets/survivors/survivors.dm +++ b/code/modules/gear_presets/survivors/survivors.dm @@ -301,6 +301,7 @@ Everything bellow is a parent used as a base for one or multiple maps. skills = /datum/skills/civilian/survivor flags = EQUIPMENT_PRESET_START_OF_ROUND paygrade = PAY_SHORT_WYC2 + faction_group = FACTION_LIST_SURVIVOR_WY idtype = /obj/item/card/id/silver/clearance_badge/cl access = list( ACCESS_CIVILIAN_PUBLIC, @@ -381,7 +382,7 @@ Everything bellow is a parent used as a base for one or multiple maps. access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_LOGISTICS,ACCESS_WY_FLIGHT) /datum/equipment_preset/survivor/flight_control_operator/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/bluesuit(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/workwear/khaki(new_human), WEAR_BODY) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) add_ice_colony_survivor_equipment(new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/windbreaker/windbreaker_brown(new_human), WEAR_JACKET) @@ -425,10 +426,11 @@ Everything bellow is a parent used as a base for one or multiple maps. name = "Survivor - Interstellar Commerce Commission Liaison" assignment = "Interstellar Commerce Commission Corporate Liaison" skills = /datum/skills/civilian/survivor - idtype = /obj/item/card/id/silver/cl + flags = EQUIPMENT_PRESET_START_OF_ROUND paygrade = PAY_SHORT_ICCL + faction_group = FACTION_LIST_SURVIVOR_WY + idtype = /obj/item/card/id/silver/cl role_comm_title = "ICC Rep." - flags = EQUIPMENT_PRESET_START_OF_ROUND survivor_variant = CORPORATE_SURVIVOR diff --git a/code/modules/gear_presets/survivors/trijent/preset_trijent.dm b/code/modules/gear_presets/survivors/trijent/preset_trijent.dm index f62010539d77..405496d8f496 100644 --- a/code/modules/gear_presets/survivors/trijent/preset_trijent.dm +++ b/code/modules/gear_presets/survivors/trijent/preset_trijent.dm @@ -64,7 +64,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(new_human), WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/eng(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/trucker(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/hugetank(new_human), WEAR_IN_BACK) ..() diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index c94d7d47843d..74bd9d8483fb 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -2590,7 +2590,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/upp/synth - name = "UPP Combat Synthetic" + name = "UPP Synthetic" flags = EQUIPMENT_PRESET_EXTRA languages = ALL_SYNTH_LANGUAGES_UPP @@ -2637,6 +2637,9 @@ /datum/equipment_preset/upp/synth/load_race(mob/living/carbon/human/new_human) new_human.set_species(SYNTH_GEN_THREE) +/datum/equipment_preset/upp/synth/load_skills(mob/living/carbon/human/new_human) + new_human.allow_gun_usage = FALSE + /datum/equipment_preset/upp/synth/load_gear(mob/living/carbon/human/new_human) //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) @@ -2657,22 +2660,18 @@ new_human.equip_to_slot_or_del(new hat, WEAR_HEAD) //body var/obj/item/clothing/under/marine/veteran/UPP/medic/UPP = new() - var/obj/item/clothing/accessory/storage/tool_webbing/equipped/W = new() - UPP.attach_accessory(new_human, W) + var/obj/item/clothing/accessory/storage/tool_webbing/equipped/webbing = new() + UPP.attach_accessory(new_human, webbing) new_human.equip_to_slot_or_del(UPP, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/support, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/bottle/tricordrazine, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/bizon/upp, WEAR_J_STORE) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp/knife, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) - //póckets - var/obj/item/storage/pouch/magazine/large/ppouch = new() - new_human.equip_to_slot_or_del(ppouch, WEAR_R_STORE) - for(var/i = 1 to ppouch.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/bizon, WEAR_IN_R_STORE) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/full/pills, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical, WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/surgical_line, WEAR_IN_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_L_STORE) diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index 578df21b67df..3651b83cc209 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -26,6 +26,7 @@ /datum/equipment_preset/uscm_ship/liaison name = "USCM Corporate Liaison (CL)" + faction_group = FACTION_LIST_MARINE_WY flags = EQUIPMENT_PRESET_START_OF_ROUND idtype = /obj/item/card/id/silver/cl @@ -128,18 +129,17 @@ minimap_background = MINIMAP_ICON_BACKGROUND_CIVILIAN /datum/equipment_preset/uscm_ship/reporter/load_gear(mob/living/carbon/human/new_human) - var/back_item = /obj/item/storage/backpack/satchel - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/reporter(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/reporter(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/jacket/marine/reporter(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(new_human), WEAR_FEET) - 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/camera(new_human), WEAR_L_HAND) - new_human.equip_to_slot_or_del(new /obj/item/device/camera_film(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/binoculars(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/taperecorder(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/notepad(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/camera(new_human), WEAR_WAIST) + +/datum/equipment_preset/uscm_ship/reporter/load_preset(mob/living/carbon/human/new_human, randomise, count_participant, client/mob_client, show_job_gear) + . = ..() + new_human.marine_buyable_categories[CIVILIAN_CAN_BUY_BACKPACK] = 1 + new_human.marine_buyable_categories[CIVILIAN_CAN_BUY_UTILITY] = 1 /datum/equipment_preset/uscm_ship/reporter_uscm name = "Combat Correspondent" @@ -178,10 +178,6 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/device/camera(new_human), WEAR_L_HAND) - new_human.equip_to_slot_or_del(new /obj/item/device/camera_film(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/binoculars(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/taperecorder(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/notepad(new_human), WEAR_IN_BACK) //*****************************************************************************************************/ @@ -252,17 +248,9 @@ if (new_human.client && new_human.client.prefs && (new_human.client.prefs.backbag == 1)) back_item = /obj/item/storage/backpack/marine/tech - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mt(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/engi(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/welding(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/device/demo_scanner(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/bag/trash(new_human), WEAR_L_HAND) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/welder_chestrig, (new_human), WEAR_R_HAND) /datum/equipment_preset/uscm_ship/maint/load_rank(mob/living/carbon/human/new_human) if(new_human.client) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index ba84f1cca76d..3a27af37f669 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -236,8 +236,9 @@ if(observe_target_client != new_client) observe_target_client = new_client - RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_ADD, PROC_REF(observe_target_screen_add)) - RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE, PROC_REF(observe_target_screen_remove)) + // Override the signal from any previous targets. + RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_ADD, PROC_REF(observe_target_screen_add), TRUE) + RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE, PROC_REF(observe_target_screen_remove), TRUE) /// When the observe target logs in our observer connect to the new client /mob/dead/observer/proc/observe_target_login(mob/living/new_character) @@ -246,8 +247,9 @@ if(observe_target_client != new_character.client) observe_target_client = new_character.client - RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_ADD, PROC_REF(observe_target_screen_add)) - RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE, PROC_REF(observe_target_screen_remove)) + // Override the signal from any previous targets. + RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_ADD, PROC_REF(observe_target_screen_add), TRUE) + RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE, PROC_REF(observe_target_screen_remove), TRUE) ///makes the ghost see the target hud and sets the eye at the target. /mob/dead/observer/proc/do_observe(atom/movable/target) @@ -266,6 +268,7 @@ client.clear_screen() client.eye = carbon_target observe_target_mob = carbon_target + carbon_target.auto_observed(src) RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(observer_move_react)) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c56ccafc85ab..08daa5348022 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -431,8 +431,12 @@ observers |= observer hud_used.show_hud(hud_used.hud_version, observer) + // Add the player's action buttons (not the actions themselves) to the observer's screen. for(var/datum/action/action as anything in actions) - // Add the action's button (not the action itself) to the observer's screen. + // Skip any hidden ones (of course). + if(action.hidden || action.player_hidden) + continue + observer.client.add_to_screen(action.button) //generates realistic-ish pulse output based on preset levels diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index da17bf8a15f0..563d0f4107e9 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -541,7 +541,7 @@ if(med_hud.hudusers[passed_human]) return TRUE if("squadleader") - var/datum/mob_hud/faction_hud = GLOB.huds[MOB_HUD_FACTION_USCM] + var/datum/mob_hud/faction_hud = GLOB.huds[MOB_HUD_FACTION_MARINE] if(passed_human.mind && passed_human.assigned_squad && passed_human.assigned_squad.squad_leader == passed_human && faction_hud.hudusers[passed_mob]) return TRUE else diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 5cb439721ce6..1d56b7db2728 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -88,7 +88,7 @@ attack = attacking_mob.species.secondary_unarmed return - last_damage_data = create_cause_data("fisticuffs", src) + last_damage_data = create_cause_data("fisticuffs", attacking_mob) attacking_mob.attack_log += text("\[[time_stamp()]\] [pick(attack.attack_verb)]ed [key_name(src)]") attack_log += text("\[[time_stamp()]\] Has been [pick(attack.attack_verb)]ed by [key_name(attacking_mob)]") msg_admin_attack("[key_name(attacking_mob)] [pick(attack.attack_verb)]ed [key_name(src)] in [get_area(src)] ([src.loc.x],[src.loc.y],[src.loc.z]).", src.loc.x, src.loc.y, src.loc.z) diff --git a/code/modules/mob/living/carbon/human/species/zombie.dm b/code/modules/mob/living/carbon/human/species/zombie.dm index f5db0c1b8728..4e8a0b5e98e2 100644 --- a/code/modules/mob/living/carbon/human/species/zombie.dm +++ b/code/modules/mob/living/carbon/human/species/zombie.dm @@ -62,7 +62,7 @@ var/datum/disease/black_goo/zombie_infection = locate() in zombie.viruses if(!zombie_infection) zombie_infection = zombie.AddDisease(new /datum/disease/black_goo()) - zombie_infection.stage = 3 + zombie_infection.stage = 4 var/datum/mob_hud/Hu = GLOB.huds[MOB_HUD_MEDICAL_OBSERVER] Hu.add_hud_to(zombie, zombie) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 03ba544be6b8..69ab18431237 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -766,6 +766,11 @@ var/datum/mob_hud/MH = GLOB.huds[MOB_HUD_XENO_INFECTION] MH.add_hud_to(src, src) +// Transfer any observing players over to the xeno's new body (`target`) on evolve/de-evolve. +/mob/living/carbon/xenomorph/transfer_observers_to(atom/target) + for(var/mob/dead/observer/observer as anything in observers) + observer.clean_observe_target() + observer.do_observe(target) /mob/living/carbon/xenomorph/check_improved_pointing() //xeno leaders get a big arrow and less cooldown diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/lesser_drone/lesser_drone_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/lesser_drone/lesser_drone_powers.dm index 3c6b39f146be..0f72bf4d81c7 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/lesser_drone/lesser_drone_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/lesser_drone/lesser_drone_powers.dm @@ -1,6 +1,6 @@ /datum/action/xeno_action/onclick/plant_weeds/lesser/use_ability(atom/A) if(!(locate(/obj/effect/alien/weeds/node) in orange(4, owner))) - to_chat(owner, SPAN_XENONOTICE("We can only plant resin nodes near other resin nodes!")) + to_chat(owner, SPAN_XENONOTICE("We can only plant weed nodes near other weed nodes!")) return . = ..() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm index c2fbd6b9d8c4..199df345fb62 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_abilities.dm @@ -129,7 +129,7 @@ // Config var/max_distance = 7 - var/windup = 7 DECISECONDS + var/windup = 8 DECISECONDS /datum/action/xeno_action/activable/oppressor_punch name = "Dislocate" diff --git a/code/modules/mob/living/carbon/xenomorph/resin_constructions.dm b/code/modules/mob/living/carbon/xenomorph/resin_constructions.dm index 793ed45bcb13..9c94be96a65a 100644 --- a/code/modules/mob/living/carbon/xenomorph/resin_constructions.dm +++ b/code/modules/mob/living/carbon/xenomorph/resin_constructions.dm @@ -341,11 +341,11 @@ GLOBAL_VAR_INIT(resin_lz_allowed, FALSE) construction_name = "thick resin membrane" build_path = /obj/structure/alien/movable_wall/membrane/thick -// Remote Resin Nodes for originally coded for Resin Whisperers +// Remote Weed Nodes for originally coded for Resin Whisperers /datum/resin_construction/resin_obj/resin_node - name = "Resin Node" + name = "Weed Node" desc = "Channel energy to spread our influence." - construction_name = "resin node" + construction_name = "weed node" cost = (XENO_RESIN_MEMBRANE_THICK_COST * 2) // 3x the cost of a thick membrane. At the time of coding that is 95*2 = 190 build_path = /obj/effect/alien/weeds/node diff --git a/code/modules/mob/living/carbon/xenomorph/strains/castes/hivelord/resin_whisperer.dm b/code/modules/mob/living/carbon/xenomorph/strains/castes/hivelord/resin_whisperer.dm index a6c493f3ada0..cf1cafde9267 100644 --- a/code/modules/mob/living/carbon/xenomorph/strains/castes/hivelord/resin_whisperer.dm +++ b/code/modules/mob/living/carbon/xenomorph/strains/castes/hivelord/resin_whisperer.dm @@ -1,6 +1,6 @@ /datum/xeno_strain/resin_whisperer name = HIVELORD_RESIN_WHISPERER - description = "You lose your corrosive acid, your ability to secrete thick resin, your ability to reinforce resin secretions, sacrifice your ability to plant resin nodes outside of weeds, and you sacrifice a fifth of your plasma reserves to enhance your vision and gain a stronger connection to the resin. You can now remotely place resin secretions including resin nodes up to a distance of twelve paces!" + description = "You lose your corrosive acid, your ability to secrete thick resin, your ability to reinforce resin secretions, sacrifice your ability to plant weed nodes outside of weeds, and you sacrifice a fifth of your plasma reserves to enhance your vision and gain a stronger connection to the resin. You can now remotely place resin secretions including weed nodes up to a distance of twelve paces!" flavor_description = "Let the resin guide you. It whispers, so listen closely." icon_state_prefix = "Resin Whisperer" diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index b47860806e5c..02c1baa48c28 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -145,7 +145,7 @@ H = GLOB.huds[MOB_HUD_SECURITY_ADVANCED] HUD_nbr = 2 if("Squad HUD") - H = GLOB.huds[MOB_HUD_FACTION_USCM] + H = GLOB.huds[MOB_HUD_FACTION_MARINE] HUD_nbr = 3 else return diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 775e69dc0b92..38157a067367 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -18,6 +18,8 @@ update_Login_details() + SEND_SIGNAL(src, COMSIG_MOB_LOGIN) + client.images = null client.screen = null //remove hud items just in case if(!hud_used) @@ -58,6 +60,6 @@ client.init_verbs() - SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MOB_LOGIN, src) - SEND_SIGNAL(client, COMSIG_CLIENT_MOB_LOGIN, src) - SEND_SIGNAL(src, COMSIG_MOB_LOGIN) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_MOB_LOGGED_IN, src) + SEND_SIGNAL(client, COMSIG_CLIENT_MOB_LOGGED_IN, src) + SEND_SIGNAL(src, COMSIG_MOB_LOGGED_IN) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index f8df788aa5fc..0dc2a27594a7 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -28,7 +28,8 @@ I'll make some notes on where certain variable defines should probably go. Changing this around would probably require a good look-over the pre-existing code. */ - var/list/observers //The list of people observing this mob. + /// The list of people observing this mob. + var/list/mob/dead/observer/observers var/zone_selected = "chest" var/use_me = 1 //Allows all mobs to use the me verb by default, will have to manually specify they cannot @@ -429,4 +430,3 @@ return src.regenerate_icons() - diff --git a/code/modules/nightmare/nmnodes/mapload.dm b/code/modules/nightmare/nmnodes/mapload.dm index 4b9ae2a3014b..0687399a6612 100644 --- a/code/modules/nightmare/nmnodes/mapload.dm +++ b/code/modules/nightmare/nmnodes/mapload.dm @@ -94,7 +94,7 @@ . = ..() if(!.) return var/dir_path = context.get_file_path(filepath, "map") - var/regex/matcher = new(@"^([0-9]+)([\.\+])([^_]+)(_.*)?\.dmm$", "i") + var/regex/matcher = new(@"^([0-9]+)([\.\+])(([^_]+)(_.*))?\.dmm$", "i") var/list/dircontents = flist(dir_path) for(var/filename in dircontents) if(!matcher.Find(filename)) diff --git a/code/modules/nightmare/nmtasks/mapload.dm b/code/modules/nightmare/nmtasks/mapload.dm index d53b5663197d..a49bbbabdde5 100644 --- a/code/modules/nightmare/nmtasks/mapload.dm +++ b/code/modules/nightmare/nmtasks/mapload.dm @@ -34,16 +34,13 @@ /datum/nmtask/mapload/proc/step_parse() . = TRUE if(!fexists(filepath)) - log_debug("Nightmare Mapload: File does not exist: [filepath]") - return + CRASH("Nightmare Mapload: File does not exist: [filepath]") if(!parsed) parsed = new(file(filepath)) if(!parsed?.bounds) - log_debug("Nightmare Mapload: File loading failed: [filepath]") - return + CRASH("Nightmare Mapload: File loading failed: [filepath]") if(isnull(parsed.bounds[1])) - log_debug("Nightmare Mapload: Map parsing failed: [filepath]") - return + CRASH("Nightmare Mapload: Map parsing failed: [filepath]") return FALSE /datum/nmtask/mapload/proc/step_loadmap(list/statsmap) @@ -51,19 +48,21 @@ UNTIL(!Master.map_loading) target_turf = GLOB.nightmare_landmarks[landmark] if(!target_turf?.z) - log_debug("Nightmare Mapload: Could not find landmark: [landmark]") - return + if(landmark in GLOB.nightmare_landmark_tags_removed) + log_debug("Nightmare Mapload: Could not find landmark: [landmark] because it was deleted") + return + else + CRASH("Nightmare Mapload: Could not find landmark: [landmark]") var/result = parsed.load(target_turf.x, target_turf.y, target_turf.z, crop_map = TRUE, no_changeturf = FALSE, place_on_top = FALSE, delete = replace) if(!result || !parsed.bounds) - log_debug("Nightmare Mapload: Map insertion failed unexpectedly for file: [filepath]") - return + CRASH("Nightmare Mapload: Map insertion failed unexpectedly for file: [filepath]") return FALSE /datum/nmtask/mapload/proc/step_init(list/statsmap) if(initialize_boundary_contents()) log_debug("Nightmare Mapload: Loaded '[filepath]' at '[landmark]' ([target_turf.x], [target_turf.y], [target_turf.z])") return FALSE - log_debug("Nightmare Mapload: Loaded map file but could not initialize: '[filepath]' at ([target_turf.x], [target_turf.y], [target_turf.z])") + stack_trace("Nightmare Mapload: Loaded map file but could not initialize: '[filepath]' at ([target_turf.x], [target_turf.y], [target_turf.z])") return TRUE /// Initialize atoms/areas in bounds - basically a Nightmare version of [/datum/map_template/initTemplateBounds] diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index f42030cce69d..69ce9ec4ce13 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -90,7 +90,7 @@ icon_state = "album" item_state = "briefcase" can_hold = list(/obj/item/photo,) - storage_slots = 20 + storage_slots = 28 /obj/item/storage/photo_album/MouseDrop(obj/over_object as obj) @@ -122,9 +122,14 @@ /obj/item/device/camera name = "camera" icon = 'icons/obj/items/items.dmi' - desc = "A polaroid camera. 10 photos left." + desc = "A polaroid camera." icon_state = "camera" - item_state = "electropack" + item_state = "camera" + item_icons = list( + WEAR_L_HAND = 'icons/mob/humans/onmob/items_lefthand_0.dmi', + WEAR_R_HAND = 'icons/mob/humans/onmob/items_righthand_0.dmi' + ) + flags_item = TWOHANDED w_class = SIZE_SMALL flags_atom = FPRINT|CONDUCT flags_equip_slot = SLOT_WAIST @@ -132,10 +137,22 @@ black_market_value = 20 var/pictures_max = 10 var/pictures_left = 10 - var/on = 1 - var/icon_on = "camera" - var/icon_off = "camera_off" - var/size = 3 + var/size = 7 + +/obj/item/device/camera/get_examine_text(mob/user) + . = ..() + . += "It has [pictures_left] photos left." + +/obj/item/device/camera/attack_self(mob/user) //wielding capabilities + . = ..() + if(flags_item & WIELDED) + unwield(user) + else + wield(user) + +/obj/item/device/camera/dropped(mob/user) + ..() + unwield(user) /obj/item/device/camera/verb/change_size() set name = "Set Photo Focus" @@ -149,24 +166,15 @@ /obj/item/device/camera/attack(mob/living/carbon/human/M, mob/user) return -/obj/item/device/camera/attack_self(mob/user) - ..() - on = !on - if(on) - src.icon_state = icon_on - else - src.icon_state = icon_off - to_chat(user, "You switch the camera [on ? "on" : "off"].") - /obj/item/device/camera/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/device/camera_film)) - if(pictures_left) - to_chat(user, SPAN_NOTICE("[src] still has some film in it!")) + if(pictures_left > (pictures_max - 10)) + to_chat(user, SPAN_NOTICE("[src] cannot fit more film in it!")) return to_chat(user, SPAN_NOTICE("You insert [I] into [src].")) if(user.temp_drop_inv_item(I)) qdel(I) - pictures_left = pictures_max + pictures_left += 10 return ..() @@ -270,24 +278,19 @@ return mob_detail /obj/item/device/camera/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) - if(!on || !pictures_left || ismob(target.loc) || isstorage(target.loc)) + if(pictures_left <= 0) + to_chat(user, SPAN_WARNING("There isn't enough film in the [src] to take a photo.")) return - if(user.contains(target) || istype(target, /atom/movable/screen)) + if(ismob(target.loc) || isstorage(target.loc) || user.contains(target) || istype(target, /atom/movable/screen)) + return + if(!(flags_item & WIELDED)) + to_chat(user, SPAN_WARNING("You need to wield the [src] with both hands to take a photo!")) return - playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 15, 1) - pictures_left-- - desc = "A polaroid camera. It has [pictures_left] photos left." to_chat(user, SPAN_NOTICE("[pictures_left] photos left.")) - captureimage(target, user, flag) - - icon_state = icon_off - on = 0 - spawn(64) - icon_state = icon_on - on = 1 + addtimer(CALLBACK(src, PROC_REF(captureimage), target, user, flag), 1 SECONDS) /obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag) var/mob_descriptions = "" @@ -343,10 +346,17 @@ name = "Old Camera" desc = "An old, slightly beat-up digital camera, with a cheap photo printer taped on. It's a nice shade of blue." icon_state = "oldcamera" - icon_on = "oldcamera" - icon_off = "oldcamera_off" pictures_left = 30 +/obj/item/device/camera/broadcasting + name = "Broadcasting Camera" + desc = "Actively document everything you see, from the mundanity of shipside to the brutal battlefields below. Has a built-in printer for action shots." + icon_state = "broadcastingcamera" + item_state = "broadcastingcamera" + pictures_left = 20 + pictures_max = 20 + w_class = SIZE_HUGE + flags_equip_slot = NO_FLAGS //cannot be equiped /obj/item/photo/proc/construct(datum/picture/P) icon = P.fields["icon"] diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 37094bb12775..f875af99bb43 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -1271,6 +1271,19 @@ Defined in conflicts.dm of the #defines folder. QDEL_NULL(scope_element) return ..() +/obj/item/attachable/vulture_scope/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) + . = ..() + var/new_attach_icon + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + if("desert") + attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + if("classic") + attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + if("urban") + attach_icon = new_attach_icon ? new_attach_icon : "u_" + attach_icon + /obj/item/attachable/vulture_scope/tgui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -1814,6 +1827,7 @@ Defined in conflicts.dm of the #defines folder. /obj/item/attachable/stock/vulture name = "\improper M707 heavy stock" icon_state = "vulture_stock" + attach_icon = "vulture_stock" hud_offset_mod = 3 /obj/item/attachable/stock/vulture/Initialize(mapload, ...) @@ -1821,6 +1835,19 @@ Defined in conflicts.dm of the #defines folder. select_gamemode_skin(type) // Doesn't give any stat additions due to the gun already having really good ones, and this is unremovable from the gun itself +/obj/item/attachable/stock/vulture/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) + . = ..() + var/new_attach_icon + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + if("desert") + attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + if("classic") + attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + if("urban") + attach_icon = new_attach_icon ? new_attach_icon : "u_" + attach_icon + /obj/item/attachable/stock/tactical name = "\improper MK221 tactical stock" desc = "A metal stock made for the MK221 tactical shotgun." @@ -3199,7 +3226,7 @@ Defined in conflicts.dm of the #defines folder. var/obj/projectile/P = new(src, create_cause_data(initial(name), user, src)) var/datum/ammo/flamethrower/ammo_datum = new projectile_type - ammo_datum.flamer_reagent_type = flamer_reagent.type + ammo_datum.flamer_reagent_id = flamer_reagent.id P.generate_bullet(ammo_datum) P.icon_state = "naptha_ball" P.color = flamer_reagent.color @@ -3513,6 +3540,23 @@ Defined in conflicts.dm of the #defines folder. attach_icon = "vulture_bipod" heavy_bipod = TRUE +/obj/item/attachable/bipod/vulture/Initialize(mapload, ...) + . = ..() + select_gamemode_skin(type) + +/obj/item/attachable/bipod/vulture/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) + . = ..() + var/new_attach_icon + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + attach_icon = new_attach_icon ? new_attach_icon : "s_" + attach_icon + if("desert") + attach_icon = new_attach_icon ? new_attach_icon : "d_" + attach_icon + if("classic") + attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon + if("urban") + attach_icon = new_attach_icon ? new_attach_icon : "u_" + attach_icon + /obj/item/attachable/burstfire_assembly name = "burst fire assembly" desc = "A small angled piece of fine machinery that increases the burst count on some weapons, and grants the ability to others. \nIncreases weapon scatter." diff --git a/code/modules/reagents/chemistry_machinery/chem_simulator.dm b/code/modules/reagents/chemistry_machinery/chem_simulator.dm index 8a95e3f3b07e..dd7f008e47d2 100644 --- a/code/modules/reagents/chemistry_machinery/chem_simulator.dm +++ b/code/modules/reagents/chemistry_machinery/chem_simulator.dm @@ -380,8 +380,7 @@ relate(C) if(!C.original_id) C.original_id = target.data.id - C.id = encode_reagent(C) - C.name = C.id + encode_reagent(C) if(C.id in simulations) //We've already simulated this before, so we don't need to continue C = GLOB.chemical_reagents_list[C.id] @@ -577,8 +576,8 @@ var/obj/item/paper/research_report/report = new /obj/item/paper/research_report/(loc) var/datum/reagent/D = GLOB.chemical_reagents_list[id] var/datum/asset/asset = get_asset_datum(/datum/asset/simple/paper) - report.name = "Simulation result for [D.name]" - report.info += "

Official Company Document
Simulated Synthesis Report

Result for [D.name]

" + report.name = "Simulation result for [D.id]" + report.info += "

Official Company Document
Simulated Synthesis Report

Result for [D.id]

" report.generate(D) report.info += "

This report was automatically printed by the Synthesis Simulator.
The [MAIN_SHIP_NAME], [time2text(world.timeofday, "MM/DD")]/[GLOB.game_year], [worldtime2text()]

\n" playsound(loc, 'sound/machines/twobeep.ogg', 15, 1) @@ -590,7 +589,9 @@ var/suffix = " " for(var/datum/chem_property/P in C.properties) suffix += P.code+"[P.level]" - return O.name + suffix + C.id = O.name + " " + copytext(md5(suffix),1,3) + suffix //Show random suffix AND real properties on research paper + C.name = O.name + " " + copytext(md5(suffix),1,3) //Show ONLY random suffix on health analyzers + return /obj/structure/machinery/chem_simulator/proc/complexity_to_string_list() var/list/L = list() diff --git a/code/modules/shuttle/computers/escape_pod_computer.dm b/code/modules/shuttle/computers/escape_pod_computer.dm index c45ac7d56102..dd621c83eaec 100644 --- a/code/modules/shuttle/computers/escape_pod_computer.dm +++ b/code/modules/shuttle/computers/escape_pod_computer.dm @@ -55,7 +55,7 @@ .["docking_status"] = STATE_LAUNCHED var/obj/structure/machinery/door/door = shuttle.door_handler.doors[1] .["door_state"] = door.density - .["door_lock"] = shuttle.door_handler.is_locked + .["door_lock"] = shuttle.door_handler.status == SHUTTLE_DOOR_LOCKED .["can_delay"] = TRUE//launch_status[2] .["launch_without_evac"] = launch_without_evac diff --git a/code/modules/shuttle/dropship_hijack.dm b/code/modules/shuttle/dropship_hijack.dm index 2190683974e0..73150f5bfc08 100644 --- a/code/modules/shuttle/dropship_hijack.dm +++ b/code/modules/shuttle/dropship_hijack.dm @@ -176,13 +176,14 @@ turfs += get_area_turfs(/area/almayer/shipboard/brig/cic_hallway) turfs += get_area_turfs(/area/almayer/shipboard/brig/cryo) turfs += get_area_turfs(/area/almayer/shipboard/brig/evidence_storage) - turfs += get_area_turfs(/area/almayer/shipboard/brig/execution) turfs += get_area_turfs(/area/almayer/shipboard/brig/general_equipment) turfs += get_area_turfs(/area/almayer/shipboard/brig/lobby) - turfs += get_area_turfs(/area/almayer/shipboard/brig/main_office) + turfs += get_area_turfs(/area/almayer/shipboard/brig/starboard_hallway) turfs += get_area_turfs(/area/almayer/shipboard/brig/perma) turfs += get_area_turfs(/area/almayer/shipboard/brig/processing) - turfs += get_area_turfs(/area/almayer/shipboard/brig/surgery) + turfs += get_area_turfs(/area/almayer/shipboard/brig/medical) + turfs += get_area_turfs(/area/almayer/shipboard/brig/mp_bunks) + turfs += get_area_turfs(/area/almayer/shipboard/brig/chief_mp_office) turfs += get_area_turfs(/area/almayer/command/cichallway) turfs += get_area_turfs(/area/almayer/command/cic) if("Upper deck Midship") diff --git a/code/modules/shuttle/helpers.dm b/code/modules/shuttle/helpers.dm index 6b29f155582e..9c8d817ec237 100644 --- a/code/modules/shuttle/helpers.dm +++ b/code/modules/shuttle/helpers.dm @@ -19,7 +19,7 @@ if(!door_controllers[direction]) var/datum/door_controller/single/new_controller = new() new_controller.label = label - new_controller.is_locked = FALSE + new_controller.status = SHUTTLE_DOOR_UNLOCKED door_controllers[direction] = new_controller var/datum/door_controller/single/controller = door_controllers[direction] @@ -29,12 +29,12 @@ if(direction == "all") for(var/i in door_controllers) var/datum/door_controller/single/control = door_controllers[i] - if(!control.is_locked) + if(control.status != SHUTTLE_DOOR_LOCKED) return FALSE return TRUE if(door_controllers[direction]) var/datum/door_controller/single/single_controller = door_controllers[direction] - return single_controller.is_locked + return single_controller.status == SHUTTLE_DOOR_LOCKED else WARNING("Direction [direction] does not exist.") return FALSE @@ -60,9 +60,9 @@ for(var/direction in door_controllers) var/datum/door_controller/single/controller = door_controllers[direction] - var/list/door_data = list("id" = direction, "value" = controller.is_locked) + var/list/door_data = list("id" = direction, "value" = controller.status) . += list(door_data) - if(!controller.is_locked) + if(controller.status == SHUTTLE_DOOR_UNLOCKED) all_locked = FALSE var/list/door_data = list("id" = "all", "value" = all_locked) @@ -74,7 +74,7 @@ /datum/door_controller/single var/label = "dropship" var/list/doors = list() - var/is_locked = FALSE + var/status = SHUTTLE_DOOR_UNLOCKED /datum/door_controller/single/Destroy(force, ...) . = ..() @@ -93,23 +93,29 @@ if("close") INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock, close)) if("force-lock") + if (status == SHUTTLE_DOOR_BROKEN) + continue INVOKE_ASYNC(src, PROC_REF(lockdown_door), door) - is_locked = TRUE + status = SHUTTLE_DOOR_LOCKED if("lock") INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock, lock)) - is_locked = TRUE + if (status != SHUTTLE_DOOR_BROKEN) + status = SHUTTLE_DOOR_LOCKED if("unlock") INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock, unlock)) - is_locked = FALSE + if (status != SHUTTLE_DOOR_BROKEN) + status = SHUTTLE_DOOR_UNLOCKED if("force-lock-launch") if(asynchronous) INVOKE_ASYNC(src, PROC_REF(lockdown_door_launch), door) else lockdown_door_launch(door) - is_locked = TRUE + if (status != SHUTTLE_DOOR_BROKEN) + status = SHUTTLE_DOOR_LOCKED if("force-unlock") INVOKE_ASYNC(src, PROC_REF(force_lock_open_door), door) - is_locked = FALSE + if (status != SHUTTLE_DOOR_BROKEN) + status = SHUTTLE_DOOR_UNLOCKED else CRASH("Unknown door command [action]") diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm index ce9ba7c623bb..d0f27d869741 100644 --- a/code/modules/shuttle/shuttles/dropship.dm +++ b/code/modules/shuttle/shuttles/dropship.dm @@ -43,6 +43,9 @@ door_control.add_door(air, "port") if("aft_door") door_control.add_door(air, "aft") + var/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/hatch = air + if(istype(hatch)) + hatch.linked_dropship = src RegisterSignal(src, COMSIG_DROPSHIP_ADD_EQUIPMENT, PROC_REF(add_equipment)) RegisterSignal(src, COMSIG_DROPSHIP_REMOVE_EQUIPMENT, PROC_REF(remove_equipment)) @@ -81,10 +84,12 @@ door_control.add_door(air, "port") if("aft_door") door_control.add_door(air, "aft") + RegisterSignal(src, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_dir_change)) /obj/docking_port/mobile/marine_dropship/Destroy(force) . = ..() qdel(door_control) + UnregisterSignal(src, COMSIG_ATOM_DIR_CHANGE) /obj/docking_port/mobile/marine_dropship/proc/control_doors(action, direction, force, asynchronous = TRUE) // its been locked down by the queen @@ -118,6 +123,12 @@ set_security_level(SEC_LEVEL_RED) return +/obj/docking_port/mobile/marine_dropship/proc/on_dir_change(datum/source, old_dir, new_dir) + SIGNAL_HANDLER + for(var/place in shuttle_areas) + for(var/obj/structure/machinery/door/air in place) + air.handle_multidoor(old_dir, new_dir) + /obj/docking_port/mobile/marine_dropship/alamo name = "Alamo" id = DROPSHIP_ALAMO diff --git a/code/modules/shuttle/shuttles/ert.dm b/code/modules/shuttle/shuttles/ert.dm index 4c078f3fe6d3..cc6e61f7a26a 100644 --- a/code/modules/shuttle/shuttles/ert.dm +++ b/code/modules/shuttle/shuttles/ert.dm @@ -31,9 +31,11 @@ air.breakable = FALSE air.indestructible = TRUE air.unacidable = TRUE + RegisterSignal(src, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_dir_change)) /obj/docking_port/mobile/emergency_response/enterTransit() control_doors("force-lock-launch", force = TRUE, external_only = TRUE) + UnregisterSignal(src, COMSIG_ATOM_DIR_CHANGE) ..() /obj/docking_port/mobile/emergency_response/proc/control_doors(action, force = FALSE, external_only = FALSE) @@ -77,10 +79,10 @@ air.lock() air.safe = 1 -/obj/docking_port/mobile/emergency_response/setDir(newdir) - . = ..() +/obj/docking_port/mobile/emergency_response/proc/on_dir_change(datum/source, old_dir, new_dir) + SIGNAL_HANDLER for(var/obj/structure/machinery/door/shuttle_door in doors) - shuttle_door.handle_multidoor() + shuttle_door.handle_multidoor(old_dir, new_dir) // ERT Shuttle 1 /obj/docking_port/mobile/emergency_response/ert1 diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 9b64931f8f92..95b8edd3ee5c 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -48,6 +48,10 @@ var/datum/tgs_version/api_version = ApiVersion() version = null // we want this to be the TGS version, not the interop version + + // sleep once to prevent an issue where world.Export on the first tick can hang indefinitely + sleep(world.tick_lag) + var/list/bridge_response = Bridge(DMAPI5_BRIDGE_COMMAND_STARTUP, list(DMAPI5_BRIDGE_PARAMETER_MINIMUM_SECURITY_LEVEL = minimum_required_security_level, DMAPI5_BRIDGE_PARAMETER_VERSION = api_version.raw_parameter, DMAPI5_PARAMETER_CUSTOM_COMMANDS = ListCustomCommands(), DMAPI5_PARAMETER_TOPIC_PORT = GetTopicPort())) if(!istype(bridge_response)) TGS_ERROR_LOG("Failed initial bridge request!") diff --git a/code/modules/tgs/v5/topic.dm b/code/modules/tgs/v5/topic.dm index e66edc27206a..e1f2cb638578 100644 --- a/code/modules/tgs/v5/topic.dm +++ b/code/modules/tgs/v5/topic.dm @@ -177,7 +177,8 @@ reattach_response[DMAPI5_PARAMETER_CUSTOM_COMMANDS] = ListCustomCommands() reattach_response[DMAPI5_PARAMETER_TOPIC_PORT] = GetTopicPort() - pending_events.Cut() + for(var/eventId in pending_events) + pending_events[eventId] = TRUE return reattach_response diff --git a/code/modules/tgui_panel/ping_relay.dm b/code/modules/tgui_panel/ping_relay.dm new file mode 100644 index 000000000000..36929a2e33b0 --- /dev/null +++ b/code/modules/tgui_panel/ping_relay.dm @@ -0,0 +1,52 @@ +GLOBAL_DATUM_INIT(relays_panel, /datum/ping_relay_tgui, new) + +/datum/tgui_panel/proc/ping_relays() + GLOB.relays_panel.tgui_interact(client.mob) + +/datum/ping_relay_tgui/tgui_interact(mob/user, datum/tgui/ui) + var/list/relay_ping_conf = CONFIG_GET(keyed_list/connection_relay_ping) + if(!length(relay_ping_conf)) + to_chat(user, "There are no relays configured to test.") + return + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PingRelaysPanel", "Relay Pings") + ui.open() + ui.set_autoupdate(FALSE) + +/datum/ping_relay_tgui/ui_state(mob/user) + return GLOB.always_state + +/datum/ping_relay_tgui/ui_static_data(mob/user) + var/list/data = list() + var/list/relay_names = list() + var/list/relay_pings = list() + var/list/relay_cons = list() + + var/list/relay_ping_conf = CONFIG_GET(keyed_list/connection_relay_ping) + var/list/relay_con_conf = CONFIG_GET(keyed_list/connection_relay_con) + for(var/key in relay_ping_conf) + // assumption: keys are the same in both configs + relay_names += key + relay_pings += relay_ping_conf[key] + relay_cons += relay_con_conf[key] + + data["relay_names"] = relay_names + data["relay_pings"] = relay_pings + data["relay_cons"] = relay_cons + return data + +/datum/ping_relay_tgui/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + var/mob/user = ui.user + + switch(action) + if("connect") + to_chat(user, "Now connecting via [params["desc"]]. Please wait..."); + user << link(params["url"]) + ui.close() + return diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm index f33f190d80e0..25338a4a3b5d 100644 --- a/code/modules/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui_panel/tgui_panel.dm @@ -92,6 +92,9 @@ if(type == "telemetry") analyze_telemetry(payload) return TRUE + if(type == "act/ping_relays") + ping_relays() + return TRUE /** * public diff --git a/code/modules/vehicles/van/van.dm b/code/modules/vehicles/van/van.dm index c4aa64360ec0..8bf114d6b4a8 100644 --- a/code/modules/vehicles/van/van.dm +++ b/code/modules/vehicles/van/van.dm @@ -83,7 +83,7 @@ icon_state = null - RegisterSignal(SSdcs, COMSIG_GLOB_MOB_LOGIN, PROC_REF(add_default_image)) + RegisterSignal(SSdcs, COMSIG_GLOB_MOB_LOGGED_IN, PROC_REF(add_default_image)) for(var/I in GLOB.player_list) add_default_image(SSdcs, I) @@ -125,7 +125,7 @@ mobs_under += L RegisterSignal(L, COMSIG_PARENT_QDELETING, PROC_REF(remove_under_van)) - RegisterSignal(L, COMSIG_MOB_LOGIN, PROC_REF(add_client)) + RegisterSignal(L, COMSIG_MOB_LOGGED_IN, PROC_REF(add_client)) RegisterSignal(L, COMSIG_MOVABLE_MOVED, PROC_REF(check_under_van)) if(L.client) @@ -141,7 +141,7 @@ UnregisterSignal(L, list( COMSIG_PARENT_QDELETING, - COMSIG_MOB_LOGIN, + COMSIG_MOB_LOGGED_IN, COMSIG_MOVABLE_MOVED, )) diff --git a/colonialmarines.dme b/colonialmarines.dme index 9579aff5397d..4c7eaf582e90 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -972,7 +972,9 @@ #include "code\game\machinery\vending\vendor_types\antag\antag_gear.dm" #include "code\game\machinery\vending\vendor_types\antag\antag_guns_snowflake.dm" #include "code\game\machinery\vending\vendor_types\antag\antag_guns_sorted.dm" +#include "code\game\machinery\vending\vendor_types\crew\combat_correspondent.dm" #include "code\game\machinery\vending\vendor_types\crew\commanding_officer.dm" +#include "code\game\machinery\vending\vendor_types\crew\engineering.dm" #include "code\game\machinery\vending\vendor_types\crew\medical.dm" #include "code\game\machinery\vending\vendor_types\crew\mp.dm" #include "code\game\machinery\vending\vendor_types\crew\pilot_officer.dm" @@ -1569,11 +1571,16 @@ #include "code\modules\clothing\suits\bio.dm" #include "code\modules\clothing\suits\jobs.dm" #include "code\modules\clothing\suits\labcoat.dm" -#include "code\modules\clothing\suits\marine_armor.dm" #include "code\modules\clothing\suits\marine_coat.dm" #include "code\modules\clothing\suits\miscellaneous.dm" #include "code\modules\clothing\suits\storage.dm" #include "code\modules\clothing\suits\utility.dm" +#include "code\modules\clothing\suits\marine_armor\_marine_armor.dm" +#include "code\modules\clothing\suits\marine_armor\ert.dm" +#include "code\modules\clothing\suits\marine_armor\ghillie.dm" +#include "code\modules\clothing\suits\marine_armor\intel.dm" +#include "code\modules\clothing\suits\marine_armor\smartgunner.dm" +#include "code\modules\clothing\suits\marine_armor\spec_fire.dm" #include "code\modules\clothing\under\color.dm" #include "code\modules\clothing\under\gimmick.dm" #include "code\modules\clothing\under\marine_uniform.dm" @@ -1771,6 +1778,7 @@ #include "code\modules\gear_presets\survivors\lv_624\corporate_dome_insert_lv624.dm" #include "code\modules\gear_presets\survivors\lv_624\preset_lv.dm" #include "code\modules\gear_presets\survivors\new_varadero\preset_new_varadero.dm" +#include "code\modules\gear_presets\survivors\shivas_snowball\panic_room_insert_shivas.dm" #include "code\modules\gear_presets\survivors\shivas_snowball\preset_shivas_snowball.dm" #include "code\modules\gear_presets\survivors\solaris\crashlanding-offices_insert_bigred.dm" #include "code\modules\gear_presets\survivors\solaris\preset_solaris.dm" @@ -2361,6 +2369,7 @@ #include "code\modules\tgui_input\text.dm" #include "code\modules\tgui_panel\audio.dm" #include "code\modules\tgui_panel\external.dm" +#include "code\modules\tgui_panel\ping_relay.dm" #include "code\modules\tgui_panel\telemetry.dm" #include "code\modules\tgui_panel\tgui_panel.dm" #include "code\modules\tooltip\tooltip.dm" diff --git a/config/example/config.txt b/config/example/config.txt index f9e0956593a9..f055a5d65bff 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -4,6 +4,7 @@ # $include dbconfig.txt # $include resources.txt # $include icon_source.txt +# $include relays.txt ## Server name: This appears at the top of the screen in-game. In this case it will read "tgstation: station_name" where station_name is the randomly generated name of the station for the round. Remove the # infront of SERVERNAME and replace 'tgstation' with the name of your choice # SERVERNAME spacestation13 diff --git a/config/example/relays.txt b/config/example/relays.txt new file mode 100644 index 000000000000..562e917fa484 --- /dev/null +++ b/config/example/relays.txt @@ -0,0 +1,22 @@ +## Settings controlling the relay ping browser accessed via PingIndicator in TGChat +## Pings are performed by timing how long it takes to download favicon.ico from the PingURL + +## Connection Relays: Name must match both ping and connect pairs +## CONNECTION_RELAY_PING Name|PingURL +## CONNECTION_RELAY_CON Name|ConnectURL +CONNECTION_RELAY_PING Direct|play.cm-ss13.com:8998 +CONNECTION_RELAY_CON Direct|play.cm-ss13.com:1400 +CONNECTION_RELAY_PING United Kingdom, London|uk.cm-ss13.com:8998 +CONNECTION_RELAY_CON United Kingdom, London|uk.cm-ss13.com:1400 +CONNECTION_RELAY_PING France, Gravelines|eu-w.cm-ss13.com:8998 +CONNECTION_RELAY_CON France, Gravelines|eu-w.cm-ss13.com:1400 +CONNECTION_RELAY_PING Poland, Warsaw|eu-e.cm-ss13.com:8998 +CONNECTION_RELAY_CON Poland, Warsaw|eu-e.cm-ss13.com:1400 +CONNECTION_RELAY_PING Oregon, Hillsboro|us-w.cm-ss13.com:8998 +CONNECTION_RELAY_CON Oregon, Hillsboro|us-w.cm-ss13.com:1400 +CONNECTION_RELAY_PING Virginia, Vint Hill|us-e.cm-ss13.com:8998 +CONNECTION_RELAY_CON Virginia, Vint Hill|us-e.cm-ss13.com:1400 +CONNECTION_RELAY_PING Singapore|asia-se.cm-ss13.com:8998 +CONNECTION_RELAY_CON Singapore|asia-se.cm-ss13.com:1400 +CONNECTION_RELAY_PING Australia, Sydney|aus.cm-ss13.com:8998 +CONNECTION_RELAY_CON Australia, Sydney|aus.cm-ss13.com:1400 diff --git a/html/changelogs/AutoChangeLog-pr-5687.yml b/html/changelogs/AutoChangeLog-pr-5687.yml new file mode 100644 index 000000000000..5e76c3882b6e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5687.yml @@ -0,0 +1,4 @@ +author: "iloveloopers" +delete-after: True +changes: + - bugfix: "custom flamer chemicals now work on the flamer nozzle" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-5784.yml b/html/changelogs/AutoChangeLog-pr-5784.yml new file mode 100644 index 000000000000..9d227ce7d2fb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5784.yml @@ -0,0 +1,9 @@ +author: "GrrrKitten" +delete-after: True +changes: + - rscadd: "New Deployable Fax Backpack for the Civilian Combat Correspondent" + - rscadd: "New Wieldable Broadcasting Camera for the Civilian Combat Correspondent" + - rscadd: "Cameras can no longer be turned off but have to be wielded to take photos" + - rscadd: "Add's new Combat Correspondent vendor with CC's basic outfits and standard gear" + - bugfix: "Fixes numerous camera/photo bugs" + - imageadd: "Adds new itemstates for the polaroid camera" \ No newline at end of file diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml index ba6a0a2ccd26..f344da79decb 100644 --- a/html/changelogs/archive/2024-02.yml +++ b/html/changelogs/archive/2024-02.yml @@ -365,3 +365,113 @@ the case of the special cigarette packs) - imageadd: Added sprites of the WeyYu Trading Cards, trading card packs, and special WeyYu Gold cigarette packs. +2024-02-25: + Drathek: + - ui: Added the relay ping browser accessed by the tgchat ping to test and use alternative + connections to the server + - ui: Added onConfirmChange prop to Button.Confirm component. + - config: Added CONNECTION_RELAY_PING and CONNECTION_RELAY_CON in the relays.txt + config that is optionally included in config.txt + - rscadd: Welding a barricade will now repeat automatically if it can still be repaired. + - balance: 'Reverted multi-welding change to barricades: All barricades must be + welded one at a time.' + - refactor: Refactored more barricade code. + Huffie56: + - refactor: refactor marine_armor.dm and split it into multiples files. + SabreML: + - bugfix: Fixed 'hidden' action buttons being shown to observing players. + - qol: Made any observers transfer over when a Xenomorph evolves/de-evolves. + SpartanBobby: + - maptweak: Edits to secure storage LV624s detailing + - maptweak: Make a few unabreakable walls on kutjevo breakable, touches the east + botony caves flanks ands removes some ledges from combat routes + - maptweak: Edits to southwest dorms LV522 + - maptweak: Redetails bigred Libary +2024-02-26: + Mister-moon1: + - balance: Reverted flare range buff 7->5 tiles + SpartanBobby: + - maptweak: Edits to southyard sci-annex + harryob: + - admin: marking a ticket now actually stops other people from messing with your + marked ticket + realforest2001: + - admin: Mods can now run votes where appropriate. + - admin: Moved a few event verbs from Admin level to Senior Mod. + - admin: Added a log to creating new bank accounts. +2024-02-27: + BadAtThisGame302: + - mapadd: added a new nightmare insert in the Operations Panic Room on Shivas + - rscadd: Added trucker hats to the Solaris and Trijent Trucker survs. + - rscadd: Added the CMB Marshal jacket to the CMB Marshal. + - imageadd: Differentiated the CMB Deputy and CMB Marshal jackets to accurately + know which is which. Courtesy of AmoryBlaine. + - imageadd: Added new insulated gloves, coveralls (Tan/Red), updated the blue coveralls, + Five Colonist Clothes (Grey/Khaki/Pink/Blue/Green), updated the Orange/Blue/Black + hazard vests and updated the CMB Uniform and Cap. Courtesy of AmoryBlaine. + Drathek: + - bugfix: Fixed a runtime when swapping tools during cade welding + Huffie56: + - rscadd: adding vendor for maintenance technician. + - code_imp: remove some item that maintenance technician spawned with and put them + in is vendor instead. + - maptweak: replaced secured closet by vendor for maintenance technician. + - balance: set base price for B12 to 30 and for the M4 to 20. + - balance: Medic comtech and SL have a discount of 20% for the B12 and M4. (B12=24 + & M4=16=) + - balance: removed the free M4 for FTL but added FTL the option to buy it for 20. + - balance: changed the price of Drop Pouch from 15 to 10. + InsaneRed: + - balance: Oppressor tailhook is now 8 deciseconds instead of 7. + Megaddd: + - balance: health analyzer no longer shows large custom research chem property text + rows. + SabreML: + - qol: Added a failure message when trying to remove a built-in helmet visor. + paulrpg,kugamo: + - imageadd: shuttle rotation sprites added + - maptweak: escape pods now use new floors +2024-02-28: + Birdtalon: + - bugfix: Admin verbs - Hide will now hide Control Mob verb + Drathek: + - bugfix: Fixed the Mass Screenshot Debug verb bounds + LTNTS: + - rscadd: 'brig areas: warden office, MP bunks, starboard hallway, interrogation + room, evidence storage' + - spellcheck: changes brig surgery to brig medical + - code_imp: removed some brig areas from hijack, added other brig areas + SabreML: + - bugfix: Fixed acid pillars shooting nested marines. + Segrain: + - bugfix: FORECON and RMC now can add their frequences to groundside radiotowers. + - bugfix: Fisticuffs attacks are no longer attributed to wrong mob. + - admin: TWE mobs are now properly counted on Who screen. + - spellcheck: Changed names of "resin node" and "resin hole" to "weed node" and + "resin trap" respectfully. + - bugfix: CLF survivors no longer incorrectly get told that they are not hostile + to marines. + Warfan1815: + - spellcheck: Fixed the order of trading cards (as they were accidentally inverted) + Zonespace27: + - bugfix: M707 spotting scope should no longer teleport its user. + - bugfix: M707's attachments should now correctly reflect the map's camouflage. + ihatethisengine: + - balance: Pried open dropship hatches cannot be remotely locked anymore + mullenpaul: + - bugfix: ammo consumption logic for cas tgui correctly counts +2024-02-29: + MobiusWon: + - balance: Readds M4 armor to FTL vendor as a default item + Nanu: + - balance: Removed the ability for Combat Synths in the UPP/CLF ERT to use guns, + as well as the CLF Survivor Synth. + - rscadd: Did a few minor tweaks to help fill in some of the space given by the + removal of guns/ammo from the Combat Synths loadout. + Segrain: + - bugfix: Removed an exploit involving crates. + cuberound: + - balance: omnisentrygun price down to 300, but it goes up 100 points after each + purchase + mullenpaul: + - code_imp: removed duplicated signal code from dropship equipment diff --git a/html/changelogs/archive/2024-03.yml b/html/changelogs/archive/2024-03.yml new file mode 100644 index 000000000000..922eaa9e8478 --- /dev/null +++ b/html/changelogs/archive/2024-03.yml @@ -0,0 +1,19 @@ +2024-03-01: + BadAtThisGame302: + - rscadd: Added a new uniform to the Flight Control Operator. + - rscadd: Added a new faction IFF grouping for WY Survs. + - rscadd: Added the ICC and the CL survs to the WY IFF System. + - rscadd: Added the USCM CL to the WY IFF System. + Drathek BadAtThisGame: + - maptweak: Fixed various nightmare inserts that were not spawning; removing or + disabling others that were not in use. + - maptweak: Updated containerroom_xenos insert for Solaris Ridge to include coms + tower (BadAtThisGame) + - code_imp: Nightmare errors are now a runtime. + Huffie56: + - refactor: refactored stage three of black goo and added stage four. + Lok1: + - rscadd: maintenance stations stun when exiting like closets + Vicacrov: + - rscadd: 'You can now order the following in Requisitions: M2C ammo, M56D ammo, + UA 45-F mini sentry ammo, UA 60-FP sentry ammo.' diff --git a/icons/mob/hud/actions_xeno.dmi b/icons/mob/hud/actions_xeno.dmi index 6a48235a4f3b..c829821730c2 100644 Binary files a/icons/mob/hud/actions_xeno.dmi and b/icons/mob/hud/actions_xeno.dmi differ diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi index 10c4f0765a12..eba8a2d0289c 100644 Binary files a/icons/mob/humans/onmob/back.dmi and b/icons/mob/humans/onmob/back.dmi differ diff --git a/icons/mob/humans/onmob/belt.dmi b/icons/mob/humans/onmob/belt.dmi index 4cff5838fbbb..453f2e9e2b2d 100644 Binary files a/icons/mob/humans/onmob/belt.dmi and b/icons/mob/humans/onmob/belt.dmi differ diff --git a/icons/mob/humans/onmob/contained/war_correspondent.dmi b/icons/mob/humans/onmob/contained/war_correspondent.dmi deleted file mode 100644 index 38bef4845cb3..000000000000 Binary files a/icons/mob/humans/onmob/contained/war_correspondent.dmi and /dev/null differ diff --git a/icons/mob/humans/onmob/hands.dmi b/icons/mob/humans/onmob/hands.dmi index 83bf9960ad12..923a417f4f89 100644 Binary files a/icons/mob/humans/onmob/hands.dmi and b/icons/mob/humans/onmob/hands.dmi differ diff --git a/icons/mob/humans/onmob/head_1.dmi b/icons/mob/humans/onmob/head_1.dmi index e69c0191042f..ab93b68640fc 100644 Binary files a/icons/mob/humans/onmob/head_1.dmi and b/icons/mob/humans/onmob/head_1.dmi differ diff --git a/icons/mob/humans/onmob/items_lefthand_0.dmi b/icons/mob/humans/onmob/items_lefthand_0.dmi index b3adba7e980e..bcf2773e8dd7 100644 Binary files a/icons/mob/humans/onmob/items_lefthand_0.dmi and b/icons/mob/humans/onmob/items_lefthand_0.dmi differ diff --git a/icons/mob/humans/onmob/items_righthand_0.dmi b/icons/mob/humans/onmob/items_righthand_0.dmi index 485e270510d8..d53360ec86a7 100644 Binary files a/icons/mob/humans/onmob/items_righthand_0.dmi and b/icons/mob/humans/onmob/items_righthand_0.dmi differ diff --git a/icons/mob/humans/onmob/suit_0.dmi b/icons/mob/humans/onmob/suit_0.dmi index de2595e261f0..737b59f6c4af 100644 Binary files a/icons/mob/humans/onmob/suit_0.dmi and b/icons/mob/humans/onmob/suit_0.dmi differ diff --git a/icons/mob/humans/onmob/suit_1.dmi b/icons/mob/humans/onmob/suit_1.dmi index 61297e9f98cb..c372b8a6d72c 100644 Binary files a/icons/mob/humans/onmob/suit_1.dmi and b/icons/mob/humans/onmob/suit_1.dmi differ diff --git a/icons/mob/humans/onmob/uniform_0.dmi b/icons/mob/humans/onmob/uniform_0.dmi index 0613b6e66623..9126bfccb699 100644 Binary files a/icons/mob/humans/onmob/uniform_0.dmi and b/icons/mob/humans/onmob/uniform_0.dmi differ diff --git a/icons/mob/humans/onmob/uniform_1.dmi b/icons/mob/humans/onmob/uniform_1.dmi index 12f4d104c2f0..89500b39a596 100644 Binary files a/icons/mob/humans/onmob/uniform_1.dmi and b/icons/mob/humans/onmob/uniform_1.dmi differ diff --git a/icons/obj/items/clothing/backpacks.dmi b/icons/obj/items/clothing/backpacks.dmi index 678107edf7af..13acfa42cc40 100644 Binary files a/icons/obj/items/clothing/backpacks.dmi and b/icons/obj/items/clothing/backpacks.dmi differ diff --git a/icons/obj/items/clothing/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi index ae311984e2c3..ff0aa3d08ec8 100644 Binary files a/icons/obj/items/clothing/cm_hats.dmi and b/icons/obj/items/clothing/cm_hats.dmi differ diff --git a/icons/obj/items/clothing/cm_suits.dmi b/icons/obj/items/clothing/cm_suits.dmi index 7f4de16bb174..c1910d21b599 100644 Binary files a/icons/obj/items/clothing/cm_suits.dmi and b/icons/obj/items/clothing/cm_suits.dmi differ diff --git a/icons/obj/items/clothing/gloves.dmi b/icons/obj/items/clothing/gloves.dmi index f1fe9b303046..b290778d2d28 100644 Binary files a/icons/obj/items/clothing/gloves.dmi and b/icons/obj/items/clothing/gloves.dmi differ diff --git a/icons/obj/items/clothing/suits.dmi b/icons/obj/items/clothing/suits.dmi index cf23d265181f..5057a89fe278 100644 Binary files a/icons/obj/items/clothing/suits.dmi and b/icons/obj/items/clothing/suits.dmi differ diff --git a/icons/obj/items/clothing/uniforms.dmi b/icons/obj/items/clothing/uniforms.dmi index bf8e5831607c..788e24bf46e6 100644 Binary files a/icons/obj/items/clothing/uniforms.dmi and b/icons/obj/items/clothing/uniforms.dmi differ diff --git a/icons/obj/items/items.dmi b/icons/obj/items/items.dmi index 38ab95d6f9ad..bf9b64474af5 100644 Binary files a/icons/obj/items/items.dmi and b/icons/obj/items/items.dmi differ diff --git a/icons/obj/items/playing_cards.dmi b/icons/obj/items/playing_cards.dmi index e69286371ae0..61b521edddd8 100644 Binary files a/icons/obj/items/playing_cards.dmi and b/icons/obj/items/playing_cards.dmi differ diff --git a/icons/obj/structures/doors/dropship1_cargo.dmi b/icons/obj/structures/doors/dropship1_cargo.dmi index 699a3cc13b9f..be517592324f 100644 Binary files a/icons/obj/structures/doors/dropship1_cargo.dmi and b/icons/obj/structures/doors/dropship1_cargo.dmi differ diff --git a/icons/obj/structures/doors/dropship1_pilot.dmi b/icons/obj/structures/doors/dropship1_pilot.dmi index 776882a136e4..0ae55add9966 100644 Binary files a/icons/obj/structures/doors/dropship1_pilot.dmi and b/icons/obj/structures/doors/dropship1_pilot.dmi differ diff --git a/icons/obj/structures/doors/dropship1_side.dmi b/icons/obj/structures/doors/dropship1_side.dmi index 346811438914..7f3298d69975 100644 Binary files a/icons/obj/structures/doors/dropship1_side.dmi and b/icons/obj/structures/doors/dropship1_side.dmi differ diff --git a/icons/obj/structures/doors/dropship2_cargo.dmi b/icons/obj/structures/doors/dropship2_cargo.dmi index 4e2ebfe0e3d2..f6bd23184889 100644 Binary files a/icons/obj/structures/doors/dropship2_cargo.dmi and b/icons/obj/structures/doors/dropship2_cargo.dmi differ diff --git a/icons/obj/structures/doors/dropship2_pilot.dmi b/icons/obj/structures/doors/dropship2_pilot.dmi index 9a77adf39f70..226249be4d84 100644 Binary files a/icons/obj/structures/doors/dropship2_pilot.dmi and b/icons/obj/structures/doors/dropship2_pilot.dmi differ diff --git a/icons/obj/structures/doors/dropship2_side.dmi b/icons/obj/structures/doors/dropship2_side.dmi index 03c0492d7df9..8dfa437d6521 100644 Binary files a/icons/obj/structures/doors/dropship2_side.dmi and b/icons/obj/structures/doors/dropship2_side.dmi differ diff --git a/icons/obj/structures/machinery/library.dmi b/icons/obj/structures/machinery/library.dmi index 00e90fc7babf..3efeeef8b9f5 100644 Binary files a/icons/obj/structures/machinery/library.dmi and b/icons/obj/structures/machinery/library.dmi differ diff --git a/icons/obj/structures/props/almayer_props64.dmi b/icons/obj/structures/props/almayer_props64.dmi index c45b37d6ef15..f47f19be9081 100644 Binary files a/icons/obj/structures/props/almayer_props64.dmi and b/icons/obj/structures/props/almayer_props64.dmi differ diff --git a/icons/turf/dropship.dmi b/icons/turf/dropship.dmi index b3cf56eb4549..e4261344ebba 100644 Binary files a/icons/turf/dropship.dmi and b/icons/turf/dropship.dmi differ diff --git a/icons/turf/dropship2.dmi b/icons/turf/dropship2.dmi index 754c20d9ead4..53a44fe75b71 100644 Binary files a/icons/turf/dropship2.dmi and b/icons/turf/dropship2.dmi differ diff --git a/icons/turf/ert_shuttle.dmi b/icons/turf/ert_shuttle.dmi index befed9f547b7..39018d4f1611 100644 Binary files a/icons/turf/ert_shuttle.dmi and b/icons/turf/ert_shuttle.dmi differ diff --git a/icons/turf/escapepods.dmi b/icons/turf/escapepods.dmi index 089db3cd3e19..96aa67789bb1 100644 Binary files a/icons/turf/escapepods.dmi and b/icons/turf/escapepods.dmi differ diff --git a/maps/Nightmare/maps/Ice_Colony_v3/nightmare.json b/maps/Nightmare/maps/Ice_Colony_v3/nightmare.json index 9c3008696d3a..301ffa337115 100644 --- a/maps/Nightmare/maps/Ice_Colony_v3/nightmare.json +++ b/maps/Nightmare/maps/Ice_Colony_v3/nightmare.json @@ -96,5 +96,12 @@ "landmark": "lz2-north", "path": "lz2-variations/north/full-closed.dmm", "when": { "lz2-north": "full" } - } + }, + { + "type": "map_insert", + "landmark": "panic_room", + "chance": 0.5, + "path": "standalone/panic_room_hold.dmm", + "when": { "panic_room": "full" } + } ] diff --git a/maps/Nightmare/maps/Ice_Colony_v3/scenario.json b/maps/Nightmare/maps/Ice_Colony_v3/scenario.json index 414bbcb15abc..4b4eb7b6b92f 100644 --- a/maps/Nightmare/maps/Ice_Colony_v3/scenario.json +++ b/maps/Nightmare/maps/Ice_Colony_v3/scenario.json @@ -8,6 +8,13 @@ { "weight": 1, "type": "def", "values": { "lz2-southwest": "half", "lz2-south-gate": "none", "lz2-southeast": "half", "lz2-eastsouth": "full", "lz2-southeast-gate": "full", "lz2-east": "none", "lz2-east-gate": "half", "lz2-north": "none"} }, { "weight": 1, "type": "def", "values": { "lz2-southwest": "full", "lz2-south-gate": "none", "lz2-southeast": "half", "lz2-eastsouth": "none", "lz2-southeast-gate": "open", "lz2-east": "full", "lz2-east-gate": "none", "lz2-north": "open"} } ] +}, +{ + "type": "pick", "name": "Panic Room", + "choices": [ + { "weight": 10, "type": "def", "values": { "panic_room": "none"} }, + { "weight": 3, "type": "def", "values": { "panic_room": "full"} } + ] } ] diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index cd01b5cb8040..b605e7115c10 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -6761,7 +6761,7 @@ }, /area/bigredv2/outside/general_offices) "aui" = ( -/obj/structure/surface/table/woodentable, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "wood" }, @@ -6864,8 +6864,8 @@ /area/bigredv2/caves/lambda/breakroom) "auw" = ( /obj/structure/showcase{ - icon_state = "d_analyzer_la"; - icon = 'icons/obj/structures/machinery/research.dmi' + icon = 'icons/obj/structures/machinery/research.dmi'; + icon_state = "d_analyzer_la" }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -9708,18 +9708,17 @@ }, /turf/open/floor, /area/bigredv2/outside/hydroponics) -"aDc" = ( -/obj/structure/bookcase{ - density = 0 - }, -/turf/open/floor{ - icon_state = "wood" - }, -/area/bigredv2/outside/library) "aDd" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "wood" }, @@ -9733,14 +9732,17 @@ }, /area/bigredv2/outside/library) "aDf" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_17"; + pixel_x = 7; + pixel_y = 14 }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Library Backroom" +/obj/structure/window{ + dir = 8 }, /turf/open/floor{ - icon_state = "delivery" + icon_state = "wood" }, /area/bigredv2/outside/library) "aDg" = ( @@ -9752,15 +9754,10 @@ }, /area/bigredv2/outside/library) "aDh" = ( -/obj/structure/machinery/light{ +/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/bed/chair/comfy{ dir = 4 }, -/obj/structure/machinery/power/apc{ - dir = 1 - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 10 - }, /turf/open/floor{ icon_state = "wood" }, @@ -10122,18 +10119,17 @@ /turf/open/floor/plating, /area/bigredv2/caves/eta/living) "aEk" = ( -/obj/structure/surface/table/woodentable, -/obj/structure/pipes/vents/pump{ - dir = 4 - }, /obj/effect/landmark/objective_landmark/close, /turf/open/floor{ - icon_state = "wood" + dir = 1; + icon_state = "asteroidfloor" }, -/area/bigredv2/outside/library) +/area/bigredv2/outside/ne) "aEl" = ( -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 9 +/obj/structure/surface/table, +/obj/structure/machinery/computer/emails{ + dir = 8; + pixel_y = 4 }, /turf/open/floor{ icon_state = "wood" @@ -10766,16 +10762,6 @@ icon_state = "wood" }, /area/bigredv2/outside/library) -"aGf" = ( -/obj/structure/machinery/door_control{ - id = "Library"; - name = "Storm Shutters"; - pixel_x = 32 - }, -/turf/open/floor{ - icon_state = "wood" - }, -/area/bigredv2/outside/library) "aGg" = ( /obj/structure/machinery/light/built{ dir = 4 @@ -11020,19 +11006,6 @@ /obj/structure/machinery/biogenerator, /turf/open/floor, /area/bigredv2/outside/hydroponics) -"aGN" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - dir = 8; - icon_state = "carpet6-2" - }, -/area/bigredv2/outside/library) -"aGO" = ( -/turf/open/floor{ - dir = 8; - icon_state = "carpet10-8" - }, -/area/bigredv2/outside/library) "aGP" = ( /obj/structure/filingcabinet/medical, /obj/effect/landmark/objective_landmark/science, @@ -11044,6 +11017,9 @@ /obj/structure/machinery/light{ dir = 4 }, +/obj/structure/machinery/power/apc{ + dir = 1 + }, /turf/open/floor{ icon_state = "wood" }, @@ -11348,19 +11324,9 @@ icon_state = "delivery" }, /area/bigredv2/outside/hydroponics) -"aHM" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - dir = 8; - icon_state = "carpet7-3" - }, -/area/bigredv2/outside/library) "aHN" = ( /obj/effect/landmark/crap_item, -/turf/open/floor{ - dir = 8; - icon_state = "carpet11-12" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aHO" = ( /obj/structure/bed/chair/wood/normal, @@ -11677,16 +11643,11 @@ /obj/structure/machinery/vending/snack, /turf/open/floor, /area/bigredv2/outside/hydroponics) -"aIG" = ( -/turf/open/floor{ - dir = 8; - icon_state = "carpet11-12" - }, -/area/bigredv2/outside/library) "aIH" = ( /obj/structure/surface/table/woodentable, /obj/item/paper, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "wood" }, @@ -12041,7 +12002,6 @@ /turf/open/floor, /area/bigredv2/outside/hydroponics) "aJB" = ( -/obj/structure/machinery/vending/cola, /obj/structure/machinery/light{ dir = 4 }, @@ -12049,15 +12009,6 @@ icon_state = "yellowfull" }, /area/bigredv2/outside/hydroponics) -"aJC" = ( -/obj/structure/machinery/alarm{ - dir = 4; - pixel_x = -30 - }, -/turf/open/floor{ - icon_state = "wood" - }, -/area/bigredv2/outside/library) "aJD" = ( /obj/structure/surface/table/woodentable, /obj/item/toy/dice/d20, @@ -12465,16 +12416,19 @@ }, /area/bigredv2/outside/hydroponics) "aKK" = ( -/obj/structure/machinery/vending/coffee, -/turf/open/floor, -/area/bigredv2/outside/hydroponics) -"aKL" = ( -/obj/structure/bookcase{ - density = 0 - }, /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) +"aKL" = ( +/obj/structure/bookcase{ + icon_state = "book-5" + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "wood" }, @@ -12483,19 +12437,15 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet7-3" - }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aKN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet11-12" - }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aKO" = ( /obj/structure/bed/chair/wood/normal{ @@ -12652,7 +12602,7 @@ /area/bigredv2/outside/office_complex) "aLh" = ( /obj/effect/landmark/nightmare{ - insert_tag = "lz1north" + insert_tag = "lz1north_mining" }, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/space_port) @@ -12806,17 +12756,8 @@ }, /area/bigredv2/outside/hydroponics) "aLF" = ( -/turf/open/floor{ - dir = 8; - icon_state = "carpet7-3" - }, -/area/bigredv2/outside/library) -"aLG" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - dir = 8; - icon_state = "carpet11-12" - }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aLH" = ( /turf/open/floor/bluegrid{ @@ -13764,16 +13705,10 @@ /area/bigredv2/outside/hydroponics) "aOi" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - dir = 8; - icon_state = "carpet15-15" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aOj" = ( -/turf/open/floor{ - dir = 8; - icon_state = "carpet14-10" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aOk" = ( /turf/open/mars{ @@ -14175,46 +14110,46 @@ }, /area/bigredv2/outside/hydroponics) "aPk" = ( -/turf/open/floor{ - dir = 8; - icon_state = "carpet5-1" - }, +/obj/structure/bed/chair/wood/normal, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aPl" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet13-5" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aPm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor{ - dir = 8; - icon_state = "carpet13-5" - }, +/turf/open/floor/carpet, /area/bigredv2/outside/library) "aPn" = ( /obj/effect/landmark/crap_item, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - dir = 8; - icon_state = "carpet13-5" + icon_state = "wood" }, /area/bigredv2/outside/library) "aPo" = ( +/obj/structure/surface/table/woodentable, +/obj/structure/window{ + dir = 8 + }, +/obj/structure/machinery/computer/emails{ + dir = 4 + }, /turf/open/floor{ - dir = 8; - icon_state = "carpet13-5" + icon_state = "wood" }, /area/bigredv2/outside/library) "aPp" = ( +/obj/structure/bed/chair/comfy{ + dir = 8 + }, /turf/open/floor{ - dir = 8; - icon_state = "carpet9-4" + icon_state = "wood" }, /area/bigredv2/outside/library) "aPq" = ( @@ -14642,8 +14577,8 @@ /turf/open/floor, /area/bigredv2/outside/hydroponics) "aQr" = ( -/obj/structure/machinery/camera/autoname{ - dir = 4 +/obj/structure/bookcase{ + icon_state = "book-5" }, /turf/open/floor{ icon_state = "wood" @@ -14651,12 +14586,25 @@ /area/bigredv2/outside/library) "aQs" = ( /obj/structure/machinery/light, +/obj/structure/window{ + dir = 4 + }, +/obj/structure/surface/table/woodentable, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10"; + pixel_y = 11 + }, /turf/open/floor{ icon_state = "wood" }, /area/bigredv2/outside/library) "aQt" = ( -/obj/structure/pipes/standard/simple/hidden/green, +/obj/structure/surface/table, +/obj/structure/window, +/obj/structure/machinery/computer/emails{ + dir = 8; + pixel_y = 4 + }, /turf/open/floor{ icon_state = "wood" }, @@ -26937,6 +26885,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"ceF" = ( +/obj/structure/surface/table/woodentable, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "cfr" = ( /obj/item/explosive/grenade/baton{ dir = 8 @@ -27240,6 +27195,12 @@ icon_state = "red" }, /area/bigredv2/outside/marshal_office) +"cGv" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "containerroom_xenos" + }, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/nw/ceiling) "cGQ" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor{ @@ -28283,6 +28244,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"eiR" = ( +/obj/structure/window, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "eju" = ( /obj/item/ore{ pixel_x = 9; @@ -28397,7 +28364,7 @@ /area/bigredv2/outside/dorms) "ers" = ( /obj/effect/landmark/nightmare{ - insert_tag = "etatunnel" + insert_tag = "etatunnel_open" }, /turf/closed/wall/solaris/rock, /area/bigredv2/caves) @@ -28574,6 +28541,14 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"eGv" = ( +/obj/structure/window, +/obj/structure/surface/table/woodentable, +/obj/item/newspaper, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "eGM" = ( /turf/open/floor{ icon_state = "darkyellowcorners2" @@ -28742,7 +28717,7 @@ /area/bigredv2/caves/mining) "eUT" = ( /obj/effect/landmark/nightmare{ - insert_tag = "viro-rock" + insert_tag = "viro-rock_open" }, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/virology) @@ -29252,6 +29227,15 @@ icon_state = "darkyellowcorners2" }, /area/bigredv2/caves/eta/living) +"fKY" = ( +/obj/structure/window, +/obj/structure/window{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "fLj" = ( /turf/open/mars_cave{ icon_state = "mars_cave_6" @@ -29590,6 +29574,14 @@ icon_state = "whitepurple" }, /area/bigredv2/caves/lambda/research) +"ghh" = ( +/obj/structure/bed/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "gio" = ( /turf/open/mars_cave, /area/bigredv2/outside/filtration_cave_cas) @@ -29942,6 +29934,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_research) +"gPb" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 3 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "gPc" = ( /turf/open/floor{ dir = 4; @@ -30942,6 +30944,15 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"ixN" = ( +/obj/structure/machinery/camera/autoname{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "ixR" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -31085,7 +31096,7 @@ /area/bigredv2/outside/space_port_lz2) "iIp" = ( /obj/effect/landmark/nightmare{ - insert_tag = "chapel" + insert_tag = "chapel_cult" }, /turf/closed/wall/solaris, /area/bigredv2/outside/chapel) @@ -31310,7 +31321,7 @@ /area/bigredv2/caves/mining) "jcn" = ( /obj/effect/landmark/nightmare{ - insert_tag = "tcomms" + insert_tag = "tcomms_open" }, /turf/closed/wall/solaris/rock, /area/bigredv2/caves) @@ -31462,7 +31473,7 @@ dir = 5 }, /obj/effect/landmark/nightmare{ - insert_tag = "dorms" + insert_tag = "dorms_party" }, /turf/open/floor, /area/bigredv2/outside/dorms) @@ -31528,6 +31539,12 @@ icon_state = "podhatch" }, /area/bigredv2/caves/lambda/research) +"jvP" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "jwj" = ( /obj/structure/platform/shiva{ dir = 8 @@ -31597,6 +31614,13 @@ icon_state = "mars_cave_17" }, /area/bigredv2/caves_lambda) +"jBo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/woodentable, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "jBq" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor{ @@ -32173,6 +32197,15 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/research) +"kgl" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "kgn" = ( /obj/item/paper/bigred/crazy, /turf/open/floor/plating{ @@ -32423,6 +32456,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"kwh" = ( +/obj/structure/surface/table/woodentable, +/obj/item/paper_bin/wy{ + pixel_x = 7; + pixel_y = 8 + }, +/obj/item/paper_bin/wy{ + pixel_x = -4; + pixel_y = 8 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "kwq" = ( /obj/structure/machinery/light{ dir = 8 @@ -32508,6 +32555,21 @@ icon_state = "red" }, /area/bigredv2/outside/marshal_office) +"kDb" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 16 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "kDs" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/cans/waterbottle{ @@ -32601,6 +32663,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"kMA" = ( +/obj/structure/bed/chair/wood/normal, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "kMJ" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -32866,6 +32935,15 @@ icon_state = "floor1" }, /area/bigredv2/oob) +"llZ" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/window, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "lmg" = ( /obj/structure/bed/chair/office/light{ dir = 4 @@ -32944,6 +33022,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"lsk" = ( +/obj/structure/surface/table/woodentable, +/obj/item/newspaper, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "lsq" = ( /obj/item/device/flashlight/lantern, /turf/open/mars_cave{ @@ -33130,6 +33215,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"lEP" = ( +/obj/structure/surface/table/woodentable, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "lGt" = ( /turf/open/floor{ icon_state = "delivery" @@ -33180,7 +33271,7 @@ /area/bigredv2/caves/mining) "lMt" = ( /obj/effect/landmark/nightmare{ - insert_tag = "cargo" + insert_tag = "cargo_containers" }, /turf/closed/wall/solaris, /area/bigredv2/outside/cargo) @@ -33195,7 +33286,7 @@ /area/bigredv2/caves_lambda) "lMB" = ( /obj/effect/landmark/nightmare{ - insert_tag = "lz1cave" + insert_tag = "lz1cave_flank" }, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/space_port) @@ -33839,6 +33930,14 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"mPo" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_10" + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "mPC" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /obj/structure/fence, @@ -33987,6 +34086,13 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"ncT" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "ndw" = ( /turf/open/floor{ dir = 4; @@ -34260,6 +34366,15 @@ icon_state = "darkyellow2" }, /area/bigredv2/outside/engineering) +"nAA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair/wood/normal{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "nBb" = ( /obj/item/ammo_magazine/pistol/b92fs, /obj/item/weapon/gun/pistol/b92fs{ @@ -34345,7 +34460,7 @@ /area/bigredv2/outside/filtration_cave_cas) "nGt" = ( /obj/effect/landmark/nightmare{ - insert_tag = "admin" + insert_tag = "admin_pmc" }, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/admin_building) @@ -35360,7 +35475,7 @@ /area/bigredv2/outside/admin_building) "pdN" = ( /obj/effect/landmark/nightmare{ - insert_tag = "lz1entrance" + insert_tag = "lz1entrance_v2" }, /turf/open/mars, /area/bigredv2/outside/nw) @@ -35729,6 +35844,20 @@ icon_state = "darkred2" }, /area/bigredv2/caves/eta/research) +"pNn" = ( +/obj/structure/machinery/light, +/obj/structure/surface/table/woodentable, +/obj/structure/window{ + dir = 8 + }, +/obj/structure/machinery/door_control{ + id = "Library"; + name = "Storm Shutters" + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "pNU" = ( /obj/structure/bed, /obj/item/prop/alien/hugger, @@ -36381,6 +36510,15 @@ icon_state = "mars_cave_18" }, /area/bigredv2/outside/n) +"qNp" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/structure/window, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "qNu" = ( /obj/structure/surface/table, /obj/structure/machinery/light/small{ @@ -36458,7 +36596,7 @@ /area/bigredv2/caves/mining) "qTu" = ( /obj/effect/landmark/nightmare{ - insert_tag = "viro" + insert_tag = "viro_open" }, /turf/closed/wall/solaris/rock, /area/bigredv2/caves) @@ -36795,7 +36933,7 @@ /area/bigredv2/caves/mining) "rrl" = ( /obj/effect/landmark/nightmare{ - insert_tag = "filtration" + insert_tag = "filtration_restored" }, /turf/open/mars_cave{ icon_state = "mars_cave_2" @@ -37122,6 +37260,19 @@ }, /turf/open/floor/plating, /area/bigredv2/oob) +"rRE" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/woodentable, +/obj/item/prop/magazine/book/bladerunner{ + pixel_y = 3 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "rRO" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor{ @@ -37185,6 +37336,18 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"rVy" = ( +/obj/structure/window, +/obj/structure/window{ + dir = 8 + }, +/obj/structure/surface/table/woodentable, +/obj/effect/landmark/objective_landmark/close, +/obj/item/prop/magazine/book/starshiptroopers, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "rVE" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -37537,6 +37700,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"sri" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "sso" = ( /obj/structure/bed/chair, /turf/open/mars_cave{ @@ -38164,6 +38335,15 @@ icon_state = "mars_cave_7" }, /area/bigredv2/outside/n) +"tkM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "tkN" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -38195,6 +38375,15 @@ }, /turf/open/floor, /area/bigred/ground/garage_workshop) +"tmj" = ( +/obj/structure/machinery/alarm{ + dir = 4; + pixel_x = -30 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "tmH" = ( /obj/structure/closet/crate, /obj/structure/machinery/light{ @@ -38375,6 +38564,21 @@ icon_state = "wood" }, /area/bigredv2/caves/eta/living) +"tAM" = ( +/obj/structure/surface/table/woodentable, +/obj/item/newspaper{ + pixel_x = -7 + }, +/obj/item/prop/magazine/book/theartofwar{ + pixel_x = 11 + }, +/obj/item/tool/pen{ + pixel_x = -7 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "tAW" = ( /obj/effect/landmark/lv624/xeno_tunnel, /turf/open/floor{ @@ -38745,7 +38949,7 @@ /area/bigredv2/caves/mining) "tYM" = ( /obj/effect/landmark/nightmare{ - insert_tag = "prison" + insert_tag = "prison_breakout" }, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/marshal_office) @@ -39079,7 +39283,7 @@ /area/bigredv2/caves/mining) "uCD" = ( /obj/effect/landmark/nightmare{ - insert_tag = "reactor" + insert_tag = "reactor_meltdown" }, /turf/closed/wall/solaris/rock, /area/bigredv2/caves) @@ -39685,7 +39889,7 @@ /area/bigredv2/caves/eta/research) "vvi" = ( /obj/effect/landmark/nightmare{ - insert_tag = "lz1containers" + insert_tag = "lz1containers_scramble" }, /turf/open/floor{ dir = 4; @@ -40969,6 +41173,17 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"xsf" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 9 + }, +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "wood" + }, +/area/bigredv2/outside/library) "xte" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light, @@ -41431,6 +41646,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"yao" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor{ + icon_state = "yellowfull" + }, +/area/bigredv2/outside/hydroponics) "yar" = ( /turf/open/floor{ dir = 4; @@ -41502,7 +41723,7 @@ /area/bigredv2/outside/n) "yfe" = ( /obj/effect/landmark/nightmare{ - insert_tag = "eta" + insert_tag = "eta_carp" }, /turf/closed/wall/solaris/reinforced, /area/bigredv2/caves/eta/xenobiology) @@ -49741,7 +49962,7 @@ axv anp anp anp -anp +cGv ajx ajY akK @@ -73401,7 +73622,7 @@ aCo aQa aCZ anT -aIE +yao aJA aKJ aEd @@ -73620,7 +73841,7 @@ aCZ anT aIF aJB -aKK +aCZ aLE aMp aLE @@ -74046,20 +74267,20 @@ pLH bMz apo anW -aDc -aEi -aDc -aDg -aDc -aEi -aDc -aJC aKL -aEi -aDc -aEi -aDc -aEi +aui +aKK +kgl +ixN +anW +aQr +aKL +aKL +anW +aKL +anW +aQr +aQr aQr anW aTq @@ -74263,19 +74484,19 @@ aCc aCc aMk anW -aDc +aKL aEi -aDc -aDg -aDc aEi -aDc +kgl aEi -aDc +tmj aEi -aDc aEi -aDc +aui +tkM +aui +sri +aEi aEi aEi aqx @@ -74480,21 +74701,21 @@ aCc pLH aMk anW -aDc -aEi +aKL +aui aDe aGe -aGN -aHM -aHM -aHM +aOi +aOi +aOi +ncT aKM aLF -aLF -aLF -aLF -aPk +aOj aEi +aOj +aPk +tAM aqx aTq aTq @@ -74697,18 +74918,18 @@ aCc aCc aMk anW -aDc -aEi +anW +aDf aDg -aEi -aGO +fKY +aOj aHN -aIG -aIG +aOj +aEi aKN -aLG -aLG -aLG +aOi +aOi +jvP aOi aPl aQs @@ -74915,20 +75136,20 @@ aCc aMk anW aDd -aEi -aDg -aEi -aEi -aEi -aEi -aEi +aDh +xsf +qNp +aui +aui +aui aEi aEi -aDc aEi +aHO +rVy aOj aPm -aQt +ncT aRu nnK aTt @@ -75131,21 +75352,21 @@ aCc aCc aMk anW -aDe +aEl aQt aEl -aGf +aQt aEi -aHO +kMA aIH aJD aKO aEi +aHO +eGv aEi -aEi -aOj aPn -aEi +aui ocA aTq aTp @@ -75348,21 +75569,21 @@ aCc aCc aMk anW -aDf anW anW anW -aEi +anW +kDb aHO lDa lDa aKO aEi -aDc aEi -aOj +eiR +lsk aPo -aQs +pNn anW aTq aTq @@ -75564,22 +75785,22 @@ aCc aCc aCc aMk -anW -aDg +apo +apo aEk -aui +apo anW voz +ghh +ghh +aui +nAA +ghh aEi aEi aEi -aEi -aEi -aDc -aEi -aGO aPp -aEi +lEP aqx aTq aTq @@ -75781,22 +76002,22 @@ pLH pLH aCc aMk -anW -aDh -aEl -aEi +apo +apo +apo +apo anW aGQ -aEi -aEi -aEi -aGQ -aEi -aEi -aGQ -aEi -aEi -aEi +ceF +jBo +aui +rRE +jBo +mPo +llZ +gPb +gPb +kwh aqx aTq aTq @@ -75998,10 +76219,10 @@ aao aao rLM aMk -anW -anW -anW -anW +apo +apo +apo +apo anW anW anW diff --git a/maps/map_files/BigRed/sprinkles/25.containerroom_xenos.dmm b/maps/map_files/BigRed/sprinkles/25.containerroom_xenos.dmm index 6aa3dfd2cfc2..bfce848e5656 100644 --- a/maps/map_files/BigRed/sprinkles/25.containerroom_xenos.dmm +++ b/maps/map_files/BigRed/sprinkles/25.containerroom_xenos.dmm @@ -36,12 +36,8 @@ /turf/open/floor/plating, /area/bigredv2/outside/nw) "i" = ( -/obj/structure/machinery/light{ - dir = 1; - icon_state = "tube1" - }, -/turf/open/floor/plating, -/area/bigredv2/outside/nw) +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/telecomm/warehouse) "j" = ( /turf/open/floor/plating, /area/bigredv2/outside/nw) @@ -130,6 +126,84 @@ /obj/structure/machinery/light, /turf/open/floor/plating, /area/bigredv2/outside/nw) +"D" = ( +/obj/effect/landmark/static_comms/net_one, +/turf/open/floor{ + icon_state = "bcircuit" + }, +/area/bigredv2/outside/telecomm/warehouse) +"H" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/plating{ + dir = 10; + icon_state = "warnplate" + }, +/area/bigredv2/outside/telecomm/warehouse) +"K" = ( +/turf/open/floor{ + icon_state = "bcircuit" + }, +/area/bigredv2/outside/telecomm/warehouse) +"O" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/plating{ + dir = 8; + icon_state = "warnplate" + }, +/area/bigredv2/outside/telecomm/warehouse) +"S" = ( +/obj/structure/machinery/power/apc{ + dir = 1; + start_charge = 0 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, +/turf/open/floor/plating{ + dir = 4; + icon_state = "warnplate" + }, +/area/bigredv2/outside/telecomm/warehouse) +"T" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/plating{ + dir = 6; + icon_state = "warnplate" + }, +/area/bigredv2/outside/telecomm/warehouse) +"V" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/plating{ + icon_state = "warnplate" + }, +/area/bigredv2/outside/telecomm/warehouse) +"Z" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5; + pixel_x = -1 + }, +/turf/open/floor/plating{ + dir = 4; + icon_state = "warnplate" + }, +/area/bigredv2/outside/telecomm/warehouse) (1,1,1) = {" b @@ -144,10 +218,10 @@ b b "} (2,1,1) = {" -b -e -j -j +i +O +O +H q j u @@ -156,10 +230,10 @@ j b "} (3,1,1) = {" -b -f -j -j +i +K +D +V q j v @@ -168,10 +242,10 @@ y b "} (4,1,1) = {" -b -g -m -j +i +K +K +V q j j @@ -180,10 +254,10 @@ j b "} (5,1,1) = {" -b -h -m -j +i +S +Z +T q j j @@ -194,7 +268,7 @@ b (6,1,1) = {" b g -j +m j r j @@ -205,8 +279,8 @@ b "} (7,1,1) = {" b -g -j +h +m j q j @@ -217,7 +291,7 @@ b "} (8,1,1) = {" b -i +f j j q @@ -301,7 +375,7 @@ b "} (15,1,1) = {" b -j +e j j q diff --git a/maps/map_files/BigRed/sprinkles/30.cave-north_lambdapath.dmm b/maps/map_files/BigRed/sprinkles/30.cave-north_lambdapath.dmm deleted file mode 100644 index 69d091b39d02..000000000000 --- a/maps/map_files/BigRed/sprinkles/30.cave-north_lambdapath.dmm +++ /dev/null @@ -1,214 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_18" - }, -/area/bigredv2/caves_north) -"b" = ( -/turf/closed/wall/solaris/rock, -/area/bigredv2/caves) -"c" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_2" - }, -/area/bigredv2/caves_lambda) -"d" = ( -/turf/open/mars_cave, -/area/bigredv2/caves_north) -"e" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_2" - }, -/area/bigredv2/caves_north) -"f" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_7" - }, -/area/bigredv2/caves_north) -"g" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/turf/open/mars_cave{ - icon_state = "mars_cave_2" - }, -/area/bigredv2/caves_lambda) -"h" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/mars_cave{ - icon_state = "mars_cave_2" - }, -/area/bigredv2/caves_lambda) -"j" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/caves_north) -"m" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_14" - }, -/area/bigredv2/caves_north) -"n" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" - }, -/area/bigredv2/caves_north) -"o" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_17" - }, -/area/bigredv2/caves_north) -"s" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_15" - }, -/area/bigredv2/caves_north) -"C" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_6" - }, -/area/bigredv2/caves_north) -"H" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_19" - }, -/area/bigredv2/caves_north) -"M" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_5" - }, -/area/bigredv2/caves_north) -"S" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_7" - }, -/area/bigredv2/caves_lambda) -"Z" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/turf/open/mars_cave{ - icon_state = "mars_cave_16" - }, -/area/bigredv2/caves_lambda) - -(1,1,1) = {" -a -d -e -m -C -n -H -e -e -s -"} -(2,1,1) = {" -b -f -s -n -j -n -o -e -e -m -"} -(3,1,1) = {" -b -b -s -M -n -H -d -b -b -b -"} -(4,1,1) = {" -b -b -g -Z -Z -b -b -b -b -b -"} -(5,1,1) = {" -b -c -c -c -c -c -b -b -b -b -"} -(6,1,1) = {" -b -c -c -c -h -c -c -b -b -b -"} -(7,1,1) = {" -S -c -c -c -c -c -c -b -c -c -"} -(8,1,1) = {" -c -c -c -c -c -c -c -g -c -c -"} -(9,1,1) = {" -c -h -c -c -c -h -c -g -c -c -"} -(10,1,1) = {" -c -c -c -c -c -c -c -g -c -h -"} diff --git a/maps/map_files/BigRed/sprinkles/5+gruesome_medicaleast.dmm b/maps/map_files/BigRed/sprinkles/5+gruesome_medicaleast.dmm deleted file mode 100644 index 96ed195a9bee..000000000000 --- a/maps/map_files/BigRed/sprinkles/5+gruesome_medicaleast.dmm +++ /dev/null @@ -1,53 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/obj/item/prop/helmetgarb/rosary{ - pixel_y = 6 - }, -/turf/template_noop, -/area/template_noop) -"d" = ( -/obj/item/clothing/head/soft/blue{ - pixel_x = 5 - }, -/turf/template_noop, -/area/template_noop) -"g" = ( -/obj/item/weapon/gun/pistol/holdout{ - pixel_x = -4 - }, -/turf/template_noop, -/area/template_noop) -"A" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/template_noop, -/area/template_noop) -"K" = ( -/obj/item/limb/arm/l_arm{ - dir = 8 - }, -/obj/item/limb/arm/r_arm, -/obj/item/limb/foot/l_foot{ - dir = 1; - pixel_y = 21 - }, -/obj/item/limb/head{ - dir = 4; - pixel_x = 6 - }, -/obj/effect/decal/cleanable/blood, -/turf/template_noop, -/area/template_noop) -"M" = ( -/turf/template_noop, -/area/template_noop) - -(1,1,1) = {" -d -A -a -"} -(2,1,1) = {" -K -g -M -"} diff --git a/maps/map_files/DesertDam/Desert_Dam.dmm b/maps/map_files/DesertDam/Desert_Dam.dmm index 4e06de75bc43..a86fb326152d 100644 --- a/maps/map_files/DesertDam/Desert_Dam.dmm +++ b/maps/map_files/DesertDam/Desert_Dam.dmm @@ -62185,7 +62185,7 @@ /area/desert_dam/exterior/valley/valley_telecoms) "lrn" = ( /obj/effect/landmark/nightmare{ - insert_tag = "damtemple" + insert_tag = "damtemple_intact" }, /turf/open/desert/dirt{ icon_state = "desert_transition_edge1" @@ -65097,7 +65097,7 @@ icon_state = "S" }, /obj/effect/landmark/nightmare{ - insert_tag = "shipgone" + insert_tag = "shipgone_northlz" }, /turf/open/floor/prison{ dir = 10; @@ -65450,7 +65450,7 @@ /area/desert_dam/interior/dam_interior/garage) "wrl" = ( /obj/effect/landmark/nightmare{ - insert_tag = "cavein" + insert_tag = "cavein_engineering" }, /turf/closed/wall/rock/orange, /area/desert_dam/exterior/rock) @@ -66042,7 +66042,7 @@ icon_state = "road_edge_decal3" }, /obj/effect/landmark/nightmare{ - insert_tag = "minievac" + insert_tag = "minievac_westresearch" }, /turf/open/asphalt, /area/desert_dam/exterior/valley/valley_wilderness) diff --git a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm index d7d206c01c50..a344e32c6e56 100644 --- a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm +++ b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm @@ -883,14 +883,10 @@ }, /area/fiorina/station/flight_deck) "ayW" = ( -/obj/structure/bed{ - icon_state = "abed" - }, /obj/item/explosive/grenade/incendiary/molotov, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ - dir = 10; - icon_state = "yellow" + icon_state = "floor_plate" }, /area/fiorina/station/lowsec) "ayX" = ( @@ -1973,13 +1969,9 @@ /turf/open/floor/prison, /area/fiorina/station/security) "bjt" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/item/bedsheet/green, +/obj/structure/girder, /turf/open/floor/prison{ - dir = 6; - icon_state = "yellow" + icon_state = "yellowfull" }, /area/fiorina/station/lowsec) "bjR" = ( @@ -1999,14 +1991,9 @@ /turf/open/floor/prison, /area/fiorina/station/power_ring) "bki" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 - }, -/obj/item/clothing/gloves/boxing/yellow, +/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" + icon_state = "floor_plate" }, /area/fiorina/station/lowsec) "bkQ" = ( @@ -4688,12 +4675,14 @@ }, /area/fiorina/station/transit_hub) "cQf" = ( -/obj/structure/machinery/power/apc{ - dir = 1 +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/explosive/grenade/incendiary/molotov, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "floor_plate" }, /area/fiorina/station/lowsec) "cQv" = ( @@ -5700,20 +5689,11 @@ }, /area/fiorina/lz/near_lzI) "dxl" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/obj/structure/barricade/metal/wired, +/turf/open/floor/prison{ + icon_state = "yellowfull" }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/space, -/area/fiorina/oob) +/area/fiorina/station/lowsec) "dxv" = ( /turf/open/floor/prison{ dir = 10; @@ -7946,10 +7926,6 @@ }, /area/fiorina/station/telecomm/lz1_cargo) "eQb" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 - }, /obj/item/clothing/gloves/boxing/green, /turf/open/floor/prison{ dir = 1; @@ -9155,20 +9131,12 @@ }, /area/fiorina/tumor/civres) "fCJ" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ +/obj/structure/girder, +/turf/open/floor/prison{ dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 + icon_state = "yellow" }, -/turf/open/space, -/area/fiorina/oob) +/area/fiorina/station/lowsec) "fCW" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/communications, @@ -9412,7 +9380,7 @@ "fLb" = ( /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/prison{ - dir = 9; + dir = 1; icon_state = "yellow" }, /area/fiorina/station/lowsec) @@ -9527,11 +9495,12 @@ }, /area/fiorina/station/power_ring) "fPl" = ( -/obj/structure/barricade/metal/wired{ - dir = 8 +/obj/structure/machinery/power/apc{ + dir = 1 }, /turf/open/floor/prison{ - icon_state = "yellowfull" + dir = 1; + icon_state = "yellow" }, /area/fiorina/station/lowsec) "fPB" = ( @@ -13081,17 +13050,11 @@ /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) "hTN" = ( -/obj/structure/platform_decoration/kutjevo, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" +/obj/structure/girder, +/turf/open/floor/prison{ + icon_state = "yellow" }, -/turf/open/space, -/area/fiorina/oob) +/area/fiorina/station/lowsec) "hUi" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, @@ -14176,18 +14139,11 @@ }, /area/fiorina/oob) "iCf" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 - }, -/obj/item/clothing/gloves/boxing, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, +/obj/structure/closet/wardrobe/orange, +/obj/item/clothing/gloves/boxing/blue, +/obj/item/clothing/gloves/boxing/blue, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "yellowfull" }, /area/fiorina/station/lowsec) "iCE" = ( @@ -17474,10 +17430,6 @@ }, /area/fiorina/tumor/servers) "kCT" = ( -/obj/structure/toilet{ - dir = 8; - pixel_y = 8 - }, /obj/effect/spawner/random/gun/smg, /turf/open/floor/prison{ dir = 5; @@ -23856,13 +23808,9 @@ }, /area/fiorina/station/chapel) "opj" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 12 - }, /obj/effect/decal/cleanable/blood/gibs, /turf/open/floor/prison{ - dir = 6; + dir = 4; icon_state = "yellow" }, /area/fiorina/station/lowsec) @@ -25963,13 +25911,8 @@ dir = 4 }, /obj/item/device/flashlight/lamp/tripod, -/obj/structure/machinery/light/double/blue{ - dir = 1; - pixel_y = 21 - }, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "floor_plate" }, /area/fiorina/station/lowsec) "pIs" = ( @@ -27957,10 +27900,10 @@ /turf/open/floor/prison, /area/fiorina/station/medbay) "qSz" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/closet/wardrobe/orange, +/obj/item/clothing/gloves/boxing/yellow, /turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" + icon_state = "yellowfull" }, /area/fiorina/station/lowsec) "qSA" = ( @@ -29120,9 +29063,12 @@ }, /area/fiorina/station/research_cells) "rLJ" = ( -/obj/structure/largecrate/random/case/double, -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/chapel) +/obj/item/clothing/gloves/boxing, +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "rMo" = ( /obj/effect/landmark/objective_landmark/far, /obj/structure/closet/secure_closet/engineering_personal, @@ -29445,13 +29391,6 @@ icon_state = "darkbrown2" }, /area/fiorina/maintenance) -"rVL" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) "rVM" = ( /obj/structure/closet/crate/miningcar, /obj/structure/barricade/wooden{ @@ -33656,17 +33595,6 @@ icon_state = "darkredfull2" }, /area/fiorina/station/research_cells) -"utG" = ( -/obj/structure/closet{ - density = 0; - pixel_y = 18 - }, -/obj/item/clothing/gloves/boxing/blue, -/turf/open/floor/prison{ - dir = 1; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) "utL" = ( /obj/structure/bed/chair, /turf/open/floor/prison{ @@ -34739,12 +34667,6 @@ icon_state = "darkbrownfull2" }, /area/fiorina/tumor/aux_engi) -"vbG" = ( -/obj/structure/prop/structure_lattice{ - dir = 4 - }, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) "vbV" = ( /obj/structure/machinery/vending/coffee, /turf/open/floor/prison, @@ -36931,13 +36853,6 @@ icon_state = "whitegreenfull" }, /area/fiorina/tumor/ice_lab) -"wsX" = ( -/obj/item/trash/snack_bowl, -/turf/open/floor/prison{ - dir = 5; - icon_state = "yellow" - }, -/area/fiorina/station/lowsec) "wtm" = ( /obj/structure/monorail{ name = "launch track" @@ -66439,9 +66354,9 @@ iKs nTv dtS fQA -bFr -bFr -bFr +bis +bis +bis oLV nxq dBy @@ -66650,10 +66565,10 @@ iKs nTv dtS fQA -bFr -bFr -bQM -bFr +bis +bis +cME +bis bis gXd dBy @@ -66861,12 +66776,12 @@ tyj tyj dtS fQA -bFr -bFr -bQM -bQM -bFr -rLJ +bis +bis +cME +cME +wpD +iKs oeY dBy nxq @@ -67072,12 +66987,12 @@ rJF fmb dBy dBy +dBy +bis +cME +cME +cME bis -bFr -bQM -bQM -bQM -bFr bis gXd qIT @@ -67284,12 +67199,12 @@ bFr twb eLu tLC +tLC +eLu +cME +cME +cME eLu -twb -twb -twb -twb -twb tIn dwP dBy @@ -67721,7 +67636,7 @@ twb eBO eBO eBO -twb +eLu eLu eLu eLu @@ -67925,7 +67840,7 @@ tIU gZc tIU cME -liA +cME cME qIq eLu @@ -67933,7 +67848,7 @@ uvF rzp vds elO -uvF +cME wQT eLu cME @@ -68133,11 +68048,11 @@ twb twb twb cME -eLu -eLu -eLu +cME +cME +cME bgy -eLu +cME cME cME cME @@ -68349,7 +68264,7 @@ cME cME cME cME -liA +cME cME cME cME @@ -68561,7 +68476,7 @@ twb twb cME cME -eLu +cME cME rJh eLu @@ -68569,7 +68484,7 @@ eLu dHD xbM fHo -vbG +cME vZD cME cME @@ -68777,8 +68692,8 @@ eLu mrk cME jkg -uvF -rVL +cME +dHD xbM fHo xno @@ -68985,15 +68900,15 @@ bQM twb nSU cME -eLu +cME cME cME eLu -uvF +jkg dHD xbM fHo -uvF +cME wQT eLu cYP @@ -69197,7 +69112,7 @@ bQM twb uts cME -liA +cME cME cME cME @@ -69409,17 +69324,17 @@ iYw twb eLu eLu -eLu +cME srI dTf +cME eLu -twb dHD xbM fHo -wzE -sfu -jyF +ioc +bjt +bjt kqC sfu jyF @@ -69624,13 +69539,13 @@ tmo gfo cME wQT -eLu +cME kqC dHD xbM fHo -kqC -wsX +ioc +ioc bjt kqC qNF @@ -69829,21 +69744,21 @@ ssc aeI nQu suX -bLJ -twb -twb -tPN -tPN -tPN -twb +neY +liA +yfK +tmo +gfo +cME +cME eLu kqC -dHD +fCJ xbM fHo -kqC -ryJ -end +ioc +ioc +kgN kqC ryJ end @@ -70041,16 +69956,16 @@ aeI aeI aeI nQu -hCh -sKY -bQM -bQM -bQM -bQM -bQM +bLJ +iYw +wzE +hZR +hZR +hZR +wzE wzE kqC -dHD +fCJ bPn fHo ioc @@ -70688,7 +70603,7 @@ srp bqD cAJ xbM -fHo +hTN kqC rzp tKk @@ -70900,7 +70815,7 @@ mGr upY dHD xbM -fHo +hTN kqC qLi dpe @@ -71112,7 +71027,7 @@ mGr upY dHD xbM -fHo +voO kqC kqC kqC @@ -71325,9 +71240,9 @@ upY dHD xbM fHo -kqC -sfu -jyF +ioc +ioc +ioc kqC sfu iEG @@ -71537,9 +71452,9 @@ iox dHD xbM fHo -kqC -qNF -bjt +ioc +ioc +ioc kqC qNF mDO @@ -71748,10 +71663,10 @@ iYw izh dHD xbM -voO -kqC -ryJ -end +fHo +ioc +ioc +kgN kqC ryJ end @@ -71951,14 +71866,14 @@ aeI nQu hCh sKY -hTN -fyC -qOk -mKS -erT -wzE +cAW +cAW +cAW +cAW +cAW wzE -dHD +kqC +fPl xbM fHo ioc @@ -72163,14 +72078,14 @@ aeI nQu hCh sKY -dxl -afk -afk -afk -ghg +cAW +cAW +cAW wzE wzE -dHD +wzE +kqC +nBb xbM fHo ioc @@ -72375,19 +72290,19 @@ nQu bVE iYw iYw -urJ -afk -hkh -afk -tCZ -pcu +cAW +cAW +wzE wzE +cQf +xbM +dxl dHD xbM -voO -kqC -ryJ -end +fHo +ioc +ioc +kgN kqC ryJ end @@ -72586,20 +72501,20 @@ eMI nQu bVE iYw -jKI -mdJ -afk -afk -afk -xMW -jlH +cAW +cAW +cAW wzE +bki +xbM +xbM +dxl cPh xbM fHo -kqC -rzp -mwP +ioc +ioc +ioc kqC rzp ldz @@ -72800,18 +72715,18 @@ aPv iYw iYw iYw -fCJ -llQ -jKI -bUB -bQM +cAW wzE -nBb +xbM +xbM +xbM +ioc +dHD xbM fHo -kqC -qLi -dpe +ioc +ioc +ioc kqC qLi dpe @@ -73014,16 +72929,16 @@ vOZ iYw sKY wzE -wzE -wzE -wzE -wzE -cQf +xbM +xbM +xbM +ioc +dHD jpx fHo -kqC -kqC -kqC +ioc +ioc +ioc kqC kqC kqC @@ -73229,13 +73144,13 @@ oFI mCe xbM sJP -kqC +ioc dHD xbM fHo -kqC -sfu -jyF +ioc +ioc +ioc kqC sfu jyF @@ -73445,9 +73360,9 @@ ioc dHD xbM fHo -kqC -qNF -mDO +ioc +ioc +ioc kqC qNF eub @@ -73656,10 +73571,10 @@ xbM ioc nbP xbM -voO -kqC -cRB -end +fHo +ioc +ioc +kgN kqC ryJ end @@ -73864,7 +73779,7 @@ bce wzE kqC ioc -fPl +ioc kqC oFp xbM @@ -74300,7 +74215,7 @@ kqC ryJ end kqC -iCf +nBb xbM voO kqC @@ -75143,12 +75058,12 @@ xbM bkQ xbM qNF -qSz +dHD kqC rkp iKy kqC -utG +dHD xbM jbm xbM @@ -75360,7 +75275,7 @@ kqC qNF efW kqC -bki +qNF xRI iXq xRI @@ -75771,11 +75686,11 @@ ioc ioc ioc qNF -xRI -xRI -xRI nAK xbM +xbM +xbM +xbM jET xbM xbM @@ -75786,12 +75701,12 @@ elO hZR bQM hZR -jvi +iCf rzp vds vds vds -elO +rLJ jvi duF jTN @@ -75983,9 +75898,9 @@ kqC ecd kqC kqC -cRB -end -kqC +dHD +xbM +xbM pHx xbM eNa @@ -76197,8 +76112,8 @@ vRA kqC fLb ayW -kqC -dHD +xbM +xbM xbM rYK kqC @@ -76210,7 +76125,7 @@ end wzE bQM hZR -jvi +qSz dHD eNa rwK @@ -76409,8 +76324,8 @@ arl oFI kCT opj -kqC -dHD +xRI +nAK xbM fHo kqC diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm index e5c8e3e13c69..7ff89252a916 100644 --- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm +++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm @@ -7035,6 +7035,17 @@ }, /turf/open/floor/plating, /area/shiva/interior/aerodrome) +"bws" = ( +/obj/structure/surface/rack, +/obj/item/fuel_cell, +/obj/item/fuel_cell, +/obj/item/fuel_cell, +/obj/item/fuel_cell, +/turf/open/floor/shiva{ + dir = 10; + icon_state = "yellow" + }, +/area/shiva/interior/garage) "bwJ" = ( /turf/open/floor/shiva{ dir = 4; @@ -7260,12 +7271,6 @@ /obj/item/device/motiondetector/hacked, /turf/open/floor/shiva, /area/shiva/interior/colony/research_hab) -"bIP" = ( -/obj/structure/machinery/power/reactor/colony, -/turf/open/floor/shiva{ - dir = 1 - }, -/area/shiva/interior/garage) "bIV" = ( /turf/open/auto_turf/snow/layer1, /area/shiva/exterior/junkyard/cp_bar) @@ -10094,6 +10099,12 @@ icon_state = "yellow" }, /area/shiva/interior/colony/medseceng) +"ffg" = ( +/obj/effect/landmark/nightmare{ + insert_tag = "panic_room" + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/junkyard) "ffj" = ( /turf/closed/shuttle/elevator{ dir = 10 @@ -10105,6 +10116,14 @@ icon_state = "yellow" }, /area/shiva/interior/lz2_habs) +"ffo" = ( +/obj/structure/surface/rack, +/obj/item/fuel_cell, +/obj/item/fuel_cell, +/turf/open/floor/shiva{ + icon_state = "yellow" + }, +/area/shiva/interior/garage) "ffw" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/shiva{ @@ -10768,14 +10787,6 @@ /obj/structure/window/framed/shiva, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) -"fNR" = ( -/obj/structure/surface/rack, -/obj/item/fuel_cell, -/obj/item/fuel_cell, -/turf/open/floor/shiva{ - icon_state = "yellow" - }, -/area/shiva/interior/garage) "fOa" = ( /obj/item/lightstick/red/spoke/planted{ pixel_x = -11 @@ -10911,13 +10922,6 @@ icon_state = "floor3" }, /area/shiva/interior/aerodrome) -"fWJ" = ( -/obj/structure/machinery/power/reactor/colony, -/turf/open/floor/shiva{ - dir = 8; - icon_state = "yellowfull" - }, -/area/shiva/interior/lz2_habs) "fXp" = ( /obj/structure/prop/invuln{ desc = "The mounting points are ground down from heavy use. They'll need some maintenance work before they can be used again."; @@ -11956,17 +11960,6 @@ dir = 1 }, /area/shiva/interior/colony/central) -"hat" = ( -/obj/structure/surface/rack, -/obj/item/fuel_cell, -/obj/item/fuel_cell, -/obj/item/fuel_cell, -/obj/item/fuel_cell, -/turf/open/floor/shiva{ - dir = 10; - icon_state = "yellow" - }, -/area/shiva/interior/garage) "hbo" = ( /obj/structure/platform/strata, /turf/open/auto_turf/ice/layer1, @@ -12028,13 +12021,6 @@ icon_state = "wred" }, /area/shiva/interior/colony/medseceng) -"hgk" = ( -/obj/structure/machinery/fuelcell_recycler/full, -/turf/open/floor/shiva{ - dir = 6; - icon_state = "yellow" - }, -/area/shiva/interior/garage) "hgI" = ( /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/auto_turf/snow/layer2, @@ -14767,10 +14753,6 @@ icon_state = "floor3" }, /area/shiva/exterior/lz2_fortress) -"jTR" = ( -/obj/structure/machinery/power/reactor/colony, -/turf/open/floor/plating, -/area/shiva/interior/colony/medseceng) "jTT" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ dir = 6 @@ -18191,6 +18173,10 @@ }, /turf/open/auto_turf/snow/layer3, /area/shiva/interior/colony/medseceng) +"npM" = ( +/obj/structure/machinery/power/reactor/colony, +/turf/open/floor/plating, +/area/shiva/interior/colony/medseceng) "npY" = ( /obj/structure/inflatable, /turf/open/auto_turf/snow/layer3, @@ -18446,6 +18432,13 @@ /obj/structure/machinery/space_heater, /turf/open/auto_turf/ice/layer1, /area/shiva/interior/warehouse/caves) +"nED" = ( +/obj/structure/machinery/power/reactor/colony, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "yellowfull" + }, +/area/shiva/interior/lz2_habs) "nEH" = ( /obj/effect/landmark/monkey_spawn, /obj/effect/decal/warning_stripes{ @@ -18544,6 +18537,12 @@ }, /turf/open/floor/wood, /area/shiva/interior/bar) +"nJu" = ( +/obj/structure/machinery/fuelcell_recycler/full, +/turf/open/floor/shiva{ + icon_state = "yellow" + }, +/area/shiva/interior/garage) "nKc" = ( /obj/structure/machinery/door/airlock/almayer/medical/colony{ dir = 1; @@ -19331,6 +19330,13 @@ }, /turf/open/auto_turf/snow/layer2, /area/shiva/exterior/cp_lz2) +"oDJ" = ( +/obj/structure/machinery/fuelcell_recycler/full, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "yellow" + }, +/area/shiva/interior/garage) "oDM" = ( /turf/open/floor/shiva{ dir = 10; @@ -27212,12 +27218,6 @@ }, /turf/open/floor/plating, /area/shiva/interior/colony/research_hab) -"wZO" = ( -/obj/structure/machinery/fuelcell_recycler/full, -/turf/open/floor/shiva{ - icon_state = "yellow" - }, -/area/shiva/interior/garage) "wZW" = ( /obj/structure/bed, /turf/open/floor/wood, @@ -27285,6 +27285,12 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/shiva/interior/colony/botany) +"xdk" = ( +/obj/structure/machinery/power/reactor/colony, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/garage) "xdT" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, @@ -37097,7 +37103,7 @@ puZ puZ puZ anc -fWJ +nED mCn uRi xQJ @@ -37421,7 +37427,7 @@ puZ puZ puZ anc -fWJ +nED mCn cce xQJ @@ -37745,7 +37751,7 @@ puZ puZ puZ anc -fWJ +nED mCn cce xQJ @@ -43668,7 +43674,7 @@ tHd tHd jMf tHd -jMf +ffg tHd jMf ofw @@ -53212,7 +53218,7 @@ ver ver ver fEO -hat +bws ktd bFg bIV @@ -53374,7 +53380,7 @@ ver ver ver ver -fNR +ffo ktd cZk bIV @@ -54184,7 +54190,7 @@ aAh ver ver ver -wZO +nJu ktd cZk bFg @@ -54346,7 +54352,7 @@ ver ver ver pNf -hgk +oDJ ktd gJo lTc @@ -54987,11 +54993,11 @@ oQl oQl oQl ktd -bIP +xdk tXd aAh pSD -bIP +xdk ktd oQl oQl @@ -55149,11 +55155,11 @@ oQl oQl oQl ktd -bIP +xdk ush vUL aCA -bIP +xdk ktd oQl oQl @@ -55312,9 +55318,9 @@ oQl oQl ktd ktd -bIP -bIP -bIP +xdk +xdk +xdk ktd ktd oQl @@ -58331,16 +58337,16 @@ acT qDT eAZ acT -jTR +npM cso agh -jTR -jTR -jTR -jTR +npM +npM +npM +npM agh cso -jTR +npM acT aii agh @@ -58493,7 +58499,7 @@ aDn eAZ eAZ aDn -jTR +npM cso agh cso @@ -58502,7 +58508,7 @@ cso cso agh cso -jTR +npM acT acT aii @@ -58658,10 +58664,10 @@ aek eXL cso agh -jTR -jTR -jTR -jTR +npM +npM +npM +npM agh cso qdd diff --git a/maps/map_files/Ice_Colony_v3/sprinkles/30.labs-elevator_alternate.dmm b/maps/map_files/Ice_Colony_v3/sprinkles/unused/30.labs-elevator_alternate.dmm similarity index 100% rename from maps/map_files/Ice_Colony_v3/sprinkles/30.labs-elevator_alternate.dmm rename to maps/map_files/Ice_Colony_v3/sprinkles/unused/30.labs-elevator_alternate.dmm diff --git a/maps/map_files/Ice_Colony_v3/sprinkles/35.south-spidercave_cleared.dmm b/maps/map_files/Ice_Colony_v3/sprinkles/unused/35.south-spidercave_cleared.dmm similarity index 100% rename from maps/map_files/Ice_Colony_v3/sprinkles/35.south-spidercave_cleared.dmm rename to maps/map_files/Ice_Colony_v3/sprinkles/unused/35.south-spidercave_cleared.dmm diff --git a/maps/map_files/Ice_Colony_v3/standalone/panic_room_hold.dmm b/maps/map_files/Ice_Colony_v3/standalone/panic_room_hold.dmm new file mode 100644 index 000000000000..15ec0c4e099d --- /dev/null +++ b/maps/map_files/Ice_Colony_v3/standalone/panic_room_hold.dmm @@ -0,0 +1,2547 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ai" = ( +/obj/structure/largecrate/random/barrel/red, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/junkyard/cp_bar) +"aq" = ( +/obj/structure/window_frame/colony/reinforced, +/obj/item/stack/rods, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"aH" = ( +/obj/item/tool/pen/blue{ + pixel_x = 5 + }, +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"ba" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/landmark/crap_item, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"bi" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = -5; + pixel_y = 12 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"bI" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"ce" = ( +/turf/closed/wall/shiva/prefabricated/reinforced, +/area/shiva/interior/colony/s_admin) +"ch" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 11; + pixel_y = 20 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/bar) +"cv" = ( +/obj/structure/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"cL" = ( +/obj/item/prop/colony/folded_bedroll, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"cO" = ( +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"cS" = ( +/turf/closed/wall/shiva/prefabricated/reinforced, +/area/shiva/interior/bar) +"cY" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/item/shard{ + icon_state = "large" + }, +/obj/item/frame/table/reinforced, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"dg" = ( +/obj/structure/barricade/metal{ + dir = 1; + health = 210 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"do" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"dv" = ( +/obj/item/ammo_magazine/rifle/m16, +/obj/structure/closet/secure_closet/guncabinet/wy, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"dF" = ( +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"eO" = ( +/obj/structure/barricade/wooden{ + dir = 1 + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"eZ" = ( +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"ff" = ( +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 + }, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"fj" = ( +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"fx" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/obj/effect/landmark/corpsespawner/doctor, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/bar) +"fM" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + name = "\improper Panic Room Shutters"; + id = "south_panicroom" + }, +/turf/open/floor/shiva, +/area/shiva/interior/colony/s_admin) +"fR" = ( +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"fT" = ( +/obj/effect/decal/cleanable/vomit, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"gf" = ( +/obj/structure/closet/crate/freezer, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"gh" = ( +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/obj/item/ammo_magazine/rifle/extended{ + current_rounds = 0 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"gk" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/shiva/interior/colony/s_admin) +"gn" = ( +/obj/structure/machinery/computer/cameras/wooden_tv{ + pixel_y = 7 + }, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"gB" = ( +/obj/structure/surface/table, +/obj/item/weapon/gun/rifle/m16, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"gL" = ( +/obj/structure/bed/bedroll, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"gO" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/computer/communications{ + dir = 4 + }, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"gR" = ( +/obj/item/stack/rods, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"hN" = ( +/obj/item/ammo_casing, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"iF" = ( +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"iS" = ( +/obj/structure/filingcabinet, +/obj/item/paper/research_notes, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"iZ" = ( +/obj/item/weapon/gun/rifle/m16, +/obj/structure/closet/secure_closet/guncabinet/wy, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"js" = ( +/obj/item/stack/rods, +/turf/open/floor/shiva{ + dir = 10; + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"jE" = ( +/obj/effect/acid_hole{ + dir = 4 + }, +/turf/closed/wall/shiva/prefabricated, +/area/shiva/interior/colony/s_admin) +"jK" = ( +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassall_1" + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/junkyard) +"jL" = ( +/obj/structure/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"jP" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/clothing/head/soft/sec/corp{ + pixel_y = 10 + }, +/obj/item/tool/stamp/hos, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"ky" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = 10; + pixel_y = 16 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"kB" = ( +/obj/structure/bed/bedroll, +/obj/effect/landmark/survivor_spawner/shivas_panic_room_doc, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"kP" = ( +/obj/structure/surface/table/woodentable{ + dir = 1; + flipped = 1 + }, +/obj/structure/machinery/computer/objective, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"kT" = ( +/obj/item/stack/folding_barricade, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"lb" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/filingcabinet/chestdrawer, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"lq" = ( +/obj/item/ammo_magazine/rifle{ + current_rounds = 0 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"lP" = ( +/obj/effect/landmark/corpsespawner/wygoon, +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"lQ" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/item/paper_bin, +/obj/item/tool/pen/blue, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"mC" = ( +/obj/structure/machinery/power/apc{ + dir = 8; + start_charge = 0 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"mI" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"ne" = ( +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/junkyard/cp_bar) +"ng" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/limb, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"nh" = ( +/obj/structure/window/framed/shiva, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"ns" = ( +/obj/structure/surface/table, +/obj/item/weapon/gun/rifle/ar10, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"ob" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/reagent_container/food/drinks/cans/ale{ + pixel_x = -7; + pixel_y = 3 + }, +/obj/item/reagent_container/food/drinks/cans/ale{ + pixel_y = 10 + }, +/obj/item/reagent_container/food/drinks/cans/ale{ + pixel_x = 7; + pixel_y = 4 + }, +/obj/item/reagent_container/food/drinks/cans/ale, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"of" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + name = "\improper Panic Room Shutters"; + id = "north_panicroom" + }, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"ov" = ( +/obj/item/trash/buritto, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"oH" = ( +/obj/structure/machinery/light/double, +/turf/open/floor/shiva{ + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"oT" = ( +/obj/item/shard{ + icon_state = "large" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"oY" = ( +/obj/structure/closet/crate/secure/weyland, +/obj/effect/landmark/objective_landmark/science, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"pz" = ( +/obj/item/weapon/gun/boltaction, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"pC" = ( +/obj/structure/machinery/disposal, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"pG" = ( +/obj/structure/filingcabinet, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"pQ" = ( +/turf/open/auto_turf/snow/layer1, +/area/shiva/exterior/junkyard) +"pS" = ( +/obj/structure/filingcabinet, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"pV" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/shiva/interior/colony/s_admin) +"qT" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"qU" = ( +/obj/effect/landmark/corpsespawner/scientist, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"rB" = ( +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted, +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin, +/obj/item/tool/pen/blue, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"rM" = ( +/obj/structure/barricade/wooden{ + dir = 1 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"rQ" = ( +/obj/item/ammo_magazine/rifle/boltaction, +/obj/effect/landmark/survivor_spawner/shivas_panic_room_civ, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"sq" = ( +/obj/structure/machinery/faxmachine, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"sy" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "xgibdown1" + }, +/obj/structure/machinery/light/double, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"sZ" = ( +/obj/structure/machinery/vending/coffee, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"ti" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/shiva/interior/colony/s_admin) +"tk" = ( +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard, +/obj/item/tool/stamp, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"tl" = ( +/obj/structure/bed/chair/comfy{ + dir = 4 + }, +/obj/effect/landmark/survivor_spawner/shivas_panic_room_doc, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"tu" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"tD" = ( +/obj/effect/decal/cleanable/vomit{ + icon_state = "vomit_2" + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 9; + pixel_y = 17 + }, +/obj/effect/landmark/corpsespawner/chef, +/obj/structure/bed/bedroll, +/obj/item/bedsheet/ce, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"tG" = ( +/obj/structure/janitorialcart, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"tW" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"tY" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"ug" = ( +/obj/effect/decal/cleanable/blood/drip{ + icon_state = "3" + }, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"uh" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/item/ammo_casing, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"ul" = ( +/obj/item/ammo_magazine/rifle/boltaction, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"uA" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/item/ammo_magazine/pistol/holdout{ + pixel_x = 3; + pixel_y = 2 + }, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/bar) +"uE" = ( +/obj/structure/machinery/door_control{ + id = "north_panicroom"; + pixel_y = 30 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"uJ" = ( +/obj/item/stack/rods, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"uM" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted, +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard, +/obj/item/tool/stamp, +/obj/effect/landmark/objective_landmark/far, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"uP" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/obj/structure/machinery/vending/coffee, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"uR" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"vn" = ( +/obj/effect/decal/remains/xeno, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"vq" = ( +/obj/structure/filingcabinet, +/obj/item/paper/research_notes, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"vs" = ( +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"vL" = ( +/obj/item/reagent_container/glass/bucket/mopbucket{ + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"wH" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/shiva/interior/colony/s_admin) +"wM" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_y = 5 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"wO" = ( +/obj/item/clipboard, +/obj/item/tool/pen/blue, +/obj/item/stack/sheet/metal, +/obj/item/shard{ + icon_state = "large" + }, +/obj/item/shard{ + icon_state = "large" + }, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"wW" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"wX" = ( +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"wY" = ( +/obj/structure/machinery/power/apc{ + dir = 1; + start_charge = 0 + }, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/junkyard/cp_bar) +"xa" = ( +/obj/item/shard{ + icon_state = "large" + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"xg" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"xD" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 1 + }, +/obj/item/paper_bin, +/obj/structure/machinery/light/double, +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"xZ" = ( +/obj/item/storage/belt/marine, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"yd" = ( +/obj/item/weapon/gun/rifle/ar10, +/obj/item/ammo_magazine/rifle/ar10, +/obj/structure/closet/secure_closet/guncabinet/wy, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"ye" = ( +/obj/structure/bed/chair/office/light{ + dir = 1 + }, +/obj/effect/landmark/survivor_spawner/shivas_panic_room_cl, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"yi" = ( +/obj/item/trash/wy_chips_pepper, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"yo" = ( +/obj/structure/machinery/disposal, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"yq" = ( +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/obj/effect/decal/remains/human, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"yz" = ( +/obj/structure/flora/bush/snow{ + icon_state = "snowgrassall_3" + }, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/junkyard) +"yQ" = ( +/obj/effect/landmark/survivor_spawner/shivas_panic_room_sci, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"yS" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/item/weapon/gun/boltaction, +/obj/structure/closet/secure_closet/guncabinet/wy, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"zc" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"zi" = ( +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin, +/obj/item/tool/pen/blue, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"zp" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"zu" = ( +/obj/structure/machinery/light/double, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"zw" = ( +/obj/item/ammo_casing, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"zA" = ( +/obj/structure/window_frame/colony/reinforced, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"Ad" = ( +/obj/structure/bed/chair/office/light{ + dir = 4 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Av" = ( +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/obj/structure/closet/secure_closet/guncabinet/wy, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"AC" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"AY" = ( +/obj/structure/flora/pottedplant, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"AZ" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/shiva/interior/colony/s_admin) +"Bg" = ( +/obj/structure/machinery/light_construct{ + dir = 1 + }, +/obj/item/light_bulb/tube/prison, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Bq" = ( +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/machinery/computer/cameras{ + dir = 8 + }, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Bv" = ( +/obj/structure/machinery/door_control{ + id = "south_panicroom"; + pixel_x = 30 + }, +/obj/structure/surface/table, +/obj/item/ammo_magazine/shotgun/slugs, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"BD" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -11; + pixel_y = 20 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/bar) +"BQ" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/bar) +"BU" = ( +/obj/effect/landmark/survivor_spawner/shivas_panic_room_civ, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Cc" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/shiva/interior/colony/s_admin) +"Cd" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/effect/landmark/good_item, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Cu" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted, +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard, +/obj/item/tool/stamp, +/obj/effect/landmark/crap_item, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Cx" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"CZ" = ( +/obj/item/ammo_casing, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Dg" = ( +/obj/effect/decal/cleanable/vomit, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = -3; + pixel_y = 6 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Dl" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Dx" = ( +/obj/structure/machinery/light/double, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"DB" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"DU" = ( +/obj/structure/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"DW" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"DY" = ( +/obj/item/trash/burger, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"EX" = ( +/obj/structure/machinery/light/double{ + dir = 1; + pixel_y = 9 + }, +/obj/item/shard{ + icon_state = "large" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Fa" = ( +/obj/effect/spawner/gibspawner/human, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/shiva/interior/colony/s_admin) +"Fc" = ( +/obj/structure/surface/table, +/obj/item/ammo_magazine/rifle/ar10, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"Ff" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/shiva/interior/colony/s_admin) +"Fg" = ( +/obj/structure/largecrate/random/case/double, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/junkyard/cp_bar) +"Fn" = ( +/turf/open/floor/shiva{ + icon_state = "radiator_tile" + }, +/area/shiva/interior/bar) +"Fp" = ( +/obj/structure/bed/chair/office/dark, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Fx" = ( +/obj/structure/surface/table, +/obj/structure/prop/ice_colony/hula_girl, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"FH" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/item/stack/rods, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"FK" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"FY" = ( +/turf/template_noop, +/area/template_noop) +"GC" = ( +/turf/closed/wall/shiva/prefabricated, +/area/shiva/interior/colony/s_admin) +"GJ" = ( +/obj/structure/surface/table, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"GQ" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgibhead" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"He" = ( +/obj/item/stool, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Hf" = ( +/obj/structure/closet/secure_closet/security, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Hp" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"Hx" = ( +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"HA" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/computer/station_alert{ + dir = 4 + }, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Ik" = ( +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/junkyard) +"Iy" = ( +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/obj/effect/landmark/corpsespawner/wysec, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"IB" = ( +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"IQ" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"Jp" = ( +/obj/item/ammo_magazine/rifle/extended{ + current_rounds = 0 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Jv" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Jx" = ( +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/botany) +"JF" = ( +/obj/structure/machinery/blackbox_recorder, +/obj/item/prop/almayer/flight_recorder/colony{ + pixel_x = -6; + pixel_y = 10 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"JQ" = ( +/obj/item/ammo_magazine/rifle/boltaction, +/obj/structure/machinery/alarm{ + dir = 4; + pixel_x = -24 + }, +/obj/structure/closet/secure_closet/guncabinet/wy, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"Kb" = ( +/obj/structure/machinery/light/double, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/botany) +"Ko" = ( +/obj/structure/bed/chair, +/obj/item/ammo_casing, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Kp" = ( +/obj/structure/machinery/computer/cameras{ + dir = 8 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/shard{ + icon_state = "large" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"KO" = ( +/obj/structure/largecrate/random/case/small, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/junkyard/cp_bar) +"KR" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Ld" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/shiva{ + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"Lh" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Lk" = ( +/obj/structure/largecrate/random/case, +/turf/open/auto_turf/snow/layer3, +/area/shiva/exterior/junkyard/cp_bar) +"Lr" = ( +/obj/structure/prop/ice_colony/tiger_rug{ + icon_state = "White" + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Lu" = ( +/obj/structure/machinery/vending/cigarette/colony, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"LE" = ( +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/bar) +"LF" = ( +/obj/effect/decal/cleanable/blood{ + layer = 3 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"LU" = ( +/turf/open/floor/shiva{ + icon_state = "snow_mat" + }, +/area/shiva/interior/colony/botany) +"Mi" = ( +/obj/structure/surface/table, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"MG" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer{ + name = "\improper Panic Room Shutters"; + id = "south_panicroom" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"ML" = ( +/obj/item/stack/sheet/wood, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/shiva/interior/colony/s_admin) +"MR" = ( +/obj/structure/safe, +/obj/item/spacecash/c1000{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/item/spacecash/c1000, +/obj/item/spacecash/c500, +/obj/effect/landmark/good_item, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"Nq" = ( +/turf/open/floor/shiva{ + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"Nt" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib6" + }, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"Nu" = ( +/obj/effect/landmark/survivor_spawner/shivas_panic_room_doc, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"NC" = ( +/obj/item/lightstick/variant/planted, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/junkyard) +"On" = ( +/obj/item/stack/rods, +/obj/structure/window_frame/colony/reinforced, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"ON" = ( +/obj/item/lightstick/red/variant/planted, +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/junkyard/cp_bar) +"OV" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"Pb" = ( +/obj/structure/filingcabinet, +/obj/item/paper/research_notes, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"Py" = ( +/obj/item/trash/kepler, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"PG" = ( +/turf/open/floor/shiva{ + dir = 4; + icon_state = "snow_mat" + }, +/area/shiva/interior/colony/botany) +"PI" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/clipboard, +/obj/item/tool/stamp, +/obj/effect/landmark/crap_item, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"PV" = ( +/obj/structure/bed/bedroll, +/obj/effect/landmark/survivor_spawner/shivas_panic_room_sci, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Qh" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/bar) +"QS" = ( +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/junkyard) +"Rs" = ( +/obj/structure/surface/table, +/obj/item/tool/pen/blue{ + pixel_x = -6 + }, +/obj/item/paper_bin{ + pixel_y = 7 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Ru" = ( +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Ry" = ( +/obj/item/tool/mop{ + pixel_x = -10 + }, +/turf/open/floor/shiva{ + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"RD" = ( +/obj/structure/bed/chair/wood/normal, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"RH" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin, +/obj/item/tool/pen/blue, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"RP" = ( +/turf/open/floor/shiva{ + dir = 10; + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"RQ" = ( +/obj/structure/machinery/vending/snack, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"RS" = ( +/obj/structure/bed/chair/office/light{ + dir = 8 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Se" = ( +/obj/effect/decal/cleanable/vomit{ + icon_state = "vomit_4" + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 5; + pixel_y = 10 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"Sl" = ( +/obj/structure/machinery/disposal/broken, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"Sq" = ( +/obj/item/tool/wet_sign, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"SB" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"SU" = ( +/obj/item/device/flashlight/lamp{ + pixel_y = 7 + }, +/obj/item/frame/table/wood, +/obj/effect/decal/cleanable/blood{ + icon_state = "gib6" + }, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"Tc" = ( +/obj/item/frame/table/reinforced, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Td" = ( +/obj/item/reagent_container/food/drinks/cans/waterbottle, +/obj/item/ammo_casing, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"Tj" = ( +/obj/structure/machinery/disposal/broken, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Tr" = ( +/obj/structure/machinery/computer/station_alert{ + dir = 4 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"TG" = ( +/obj/item/prop/colony/folded_bedroll, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "redfull" + }, +/area/shiva/interior/colony/s_admin) +"TI" = ( +/obj/item/ammo_casing, +/turf/open/floor/shiva{ + dir = 8; + icon_state = "multi_tiles" + }, +/area/shiva/interior/colony/s_admin) +"TL" = ( +/obj/item/weapon/gun/energy/taser, +/obj/structure/machinery/light/double{ + dir = 8; + pixel_y = -5 + }, +/turf/open/floor/wood, +/area/shiva/interior/colony/s_admin) +"Ub" = ( +/obj/item/trash/kepler/flamehot, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"Ue" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/item/ammo_casing, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/bar) +"UD" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/colony{ + name = "\improper Colony Administration"; + locked = 1 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"UW" = ( +/obj/structure/machinery/light/double, +/turf/open/floor/shiva{ + dir = 10; + icon_state = "green" + }, +/area/shiva/interior/colony/botany) +"Vb" = ( +/obj/item/bodybag, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Vi" = ( +/obj/structure/window_frame/colony/reinforced, +/obj/item/shard, +/turf/open/floor/plating, +/area/shiva/interior/colony/s_admin) +"Vl" = ( +/obj/effect/acid_hole, +/turf/closed/wall/shiva/prefabricated, +/area/shiva/interior/colony/s_admin) +"Vy" = ( +/obj/structure/surface/table, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"VC" = ( +/obj/structure/machinery/light/double{ + dir = 4; + pixel_y = -5 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/effect/landmark/crap_item, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"VE" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/colony{ + name = "\improper Colony Security Checkpoint" + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"VX" = ( +/obj/structure/closet/secure_closet/personal, +/obj/effect/landmark/objective_landmark/medium, +/obj/effect/landmark/good_item, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"Wj" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Wm" = ( +/turf/open/auto_turf/snow/layer2, +/area/shiva/exterior/junkyard/cp_bar) +"WA" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/bar) +"WT" = ( +/obj/item/frame/table/wood, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/shiva/interior/colony/s_admin) +"Xt" = ( +/obj/structure/flora/pottedplant, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) +"Xu" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/shiva/interior/colony/s_admin) +"XP" = ( +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted, +/obj/structure/surface/table/reinforced/prison, +/obj/item/paper_bin, +/obj/item/tool/pen/blue, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"YD" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/computer/cameras{ + dir = 1 + }, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"YS" = ( +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/shiva/interior/colony/s_admin) +"YT" = ( +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/machinery/computer/atmos_alert{ + dir = 8 + }, +/obj/structure/surface/table/reinforced/prison, +/turf/open/floor/shiva{ + dir = 1 + }, +/area/shiva/interior/colony/s_admin) +"Zi" = ( +/obj/item/weapon/gun/pistol/holdout, +/obj/item/ammo_magazine/pistol/holdout, +/turf/open/floor/shiva{ + dir = 6; + icon_state = "multi_tiles" + }, +/area/shiva/interior/bar) +"Zl" = ( +/obj/item/stack/cable_coil, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/shiva/interior/colony/s_admin) +"ZD" = ( +/obj/item/ammo_magazine/rifle/m16, +/turf/open/floor/shiva{ + icon_state = "bluefull" + }, +/area/shiva/interior/colony/s_admin) + +(1,1,1) = {" +PG +ce +FY +FY +FY +FY +FY +FY +FY +FY +FY +FY +ce +ce +ce +ce +ce +ce +pQ +pQ +Ik +FY +FY +"} +(2,1,1) = {" +PG +ce +FY +FY +FY +FY +FY +FY +FY +FY +FY +ce +ce +JQ +yS +Av +yd +ce +QS +NC +QS +FY +FY +"} +(3,1,1) = {" +Kb +ce +FY +FY +FY +FY +FY +FY +FY +FY +FY +ce +MR +wM +fj +rQ +iZ +ce +Ik +jK +pQ +FY +FY +"} +(4,1,1) = {" +RP +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +ce +fj +xZ +fj +dv +ce +yz +Ik +Ik +FY +FY +"} +(5,1,1) = {" +RP +GC +iS +pG +tu +ba +Cd +mC +dF +dF +qT +JF +ce +pz +TG +eZ +ce +ce +ce +ce +Ik +FY +FY +"} +(6,1,1) = {" +RP +Vl +dF +Hx +Ad +Hx +dF +CZ +Hx +Ad +zw +dF +ce +Nu +Ub +xZ +Pb +vq +pS +ce +QS +FY +FY +"} +(7,1,1) = {" +Ld +nh +rM +tk +YT +zi +xa +dF +tk +Kp +rB +qU +ce +ul +dF +dF +ov +yQ +kB +ce +Ik +FY +FY +"} +(8,1,1) = {" +RP +Vi +CZ +lQ +gO +uM +dF +dF +RH +Tr +PI +Dx +ce +uE +CZ +tl +Dl +dF +iF +ce +NC +FY +FY +"} +(9,1,1) = {" +UW +GC +mI +Hx +RS +Hx +CZ +dF +Hx +RS +Jp +dF +of +Td +RD +Rs +sq +ye +fj +ce +QS +FY +FY +"} +(10,1,1) = {" +js +zA +do +Hx +Hx +lP +dF +Lr +Hx +Hx +Hx +yq +of +Vy +Fp +Tj +Fx +tY +oY +ce +QS +FY +FY +"} +(11,1,1) = {" +Nq +tW +dg +uh +lq +Hx +dF +dF +Hx +Hx +Hx +CZ +of +ns +PV +He +Wj +dF +gf +ce +QS +FY +FY +"} +(12,1,1) = {" +oH +GC +Bg +oT +Cx +Hx +dF +CZ +LF +Ad +Hx +dF +of +Fc +CZ +DY +dF +BU +ce +ce +cS +ch +Fn +"} +(13,1,1) = {" +Nq +aq +rM +tk +Bq +XP +dF +dF +tk +Bq +XP +sy +ce +YS +dF +dF +cL +bi +Mi +MG +Qh +LE +LE +"} +(14,1,1) = {" +Nq +SB +FK +RH +HA +Cu +dF +dF +cY +HA +Cu +dF +ce +yi +BU +dF +dF +Ko +gB +fM +Ue +Zi +LE +"} +(15,1,1) = {" +Sq +GC +dF +Hx +RS +Hx +CZ +dF +zw +RS +Hx +dF +ce +fj +Vb +ky +CZ +ZD +GJ +fM +fx +BQ +BQ +"} +(16,1,1) = {" +vL +GC +dF +Tc +VC +dF +Lh +dF +gR +dF +vn +Xt +ce +Se +Dg +dF +yQ +CZ +Py +fM +uA +LE +LE +"} +(17,1,1) = {" +fT +ce +GC +GC +GC +jE +GC +ce +oT +cO +cO +uh +ce +tD +RQ +uP +IQ +gL +Bv +MG +WA +LE +LE +"} +(18,1,1) = {" +Ry +GC +DU +jL +TL +fR +ob +GC +AY +vs +vs +AY +ce +GC +GC +GC +GC +ce +ce +ce +cS +BD +Fn +"} +(19,1,1) = {" +tG +GC +gn +fR +fR +Iy +jP +GC +Ru +Hp +cO +Hx +GC +VX +cv +kP +lb +GC +ai +Wm +FY +FY +FY +"} +(20,1,1) = {" +Sq +GC +Hf +ff +OV +xg +YD +GC +gh +cO +cO +Hx +FH +IB +aH +SU +xD +GC +ne +Wm +FY +FY +FY +"} +(21,1,1) = {" +zu +ce +ce +VE +ce +wO +bI +ce +EX +cO +hN +Hx +GC +pC +fj +kT +fj +GC +KO +ON +FY +FY +FY +"} +(22,1,1) = {" +Jx +On +KR +GQ +uR +Hx +Hx +On +Cx +Nt +cO +AC +ce +GC +GC +AZ +GC +ce +Fg +Wm +FY +FY +FY +"} +(23,1,1) = {" +PG +UD +Lu +wX +TI +wX +ug +UD +eO +wW +vs +Hx +GC +Ff +wH +AZ +WT +GC +Lk +Wm +FY +FY +FY +"} +(24,1,1) = {" +LU +Hx +eO +wX +DB +wX +wX +Hx +sZ +vs +vs +zw +Zl +ML +AZ +ti +wH +pV +ne +Wm +FY +FY +FY +"} +(25,1,1) = {" +PG +nh +zc +zw +Hx +Hx +Hx +nh +DW +Hx +Hx +uJ +gk +ng +wH +Cc +Fa +GC +ne +ON +FY +FY +FY +"} +(26,1,1) = {" +PG +GC +Hx +Hx +Jv +Hx +AY +GC +yo +Hx +Jv +zp +GC +Sl +Xu +wH +AZ +GC +wY +Wm +FY +FY +FY +"} +(27,1,1) = {" +PG +GC +GC +GC +GC +GC +GC +GC +GC +GC +GC +ce +ce +ce +ce +GC +GC +ce +ne +Wm +FY +FY +FY +"} diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index 2fe5f7b45337..b63b0895a23b 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -417,20 +417,6 @@ dir = 4 }, /area/kutjevo/interior/complex/med) -"azI" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/barricade/handrail/kutjevo{ - layer = 3.1 - }, -/obj/structure/barricade/handrail/kutjevo{ - dir = 4 - }, -/turf/open/floor/kutjevo/multi_tiles{ - dir = 1 - }, -/area/kutjevo/interior/colony_South/power2) "azO" = ( /turf/open/desert/desert_shore/desert_shore1{ dir = 8 @@ -606,15 +592,6 @@ }, /turf/closed/wall/kutjevo/colony, /area/kutjevo/interior/construction) -"aNj" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/turf/open/floor/kutjevo/colors/orange, -/area/kutjevo/interior/colony_South/power2) "aNn" = ( /turf/open/auto_turf/sand/layer2, /area/kutjevo/interior/power/comms) @@ -1999,8 +1976,8 @@ "cKY" = ( /obj/structure/prop/brazier/frame/full/campfire, /obj/item/tool/match/paper{ - pixel_y = -2; - pixel_x = -11 + pixel_x = -11; + pixel_y = -2 }, /turf/open/auto_turf/sand/layer1, /area/kutjevo/exterior/spring) @@ -3643,12 +3620,12 @@ /area/kutjevo/interior/construction) "eCE" = ( /obj/item/clipboard{ - pixel_y = 4; - pixel_x = -4 + pixel_x = -4; + pixel_y = 4 }, /obj/item/tool/pen{ - name = "stained pen"; desc = "It's a seemingly normal pen... aside from the faint red fingerprints on the side..."; + name = "stained pen"; pixel_x = 2; pixel_y = 10 }, @@ -4527,12 +4504,6 @@ /obj/effect/landmark/corpsespawner/security/marshal, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/construction) -"fMi" = ( -/obj/structure/stairs/perspective/kutjevo{ - icon_state = "p_stair_full" - }, -/turf/open/floor/plating/kutjevo, -/area/kutjevo/interior/colony_South/power2) "fMB" = ( /obj/structure/flora/grass/tallgrass/desert/corner{ dir = 5 @@ -4549,7 +4520,7 @@ /area/kutjevo/exterior/runoff_river) "fNe" = ( /obj/effect/landmark/nightmare{ - insert_tag = "cleaningprog" + insert_tag = "cleaningprog_botany" }, /turf/open/floor/kutjevo/tan, /area/kutjevo/interior/complex/botany) @@ -4695,14 +4666,6 @@ /obj/structure/largecrate/random/secure, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/construction) -"fVA" = ( -/obj/structure/barricade/handrail/kutjevo{ - layer = 3.1 - }, -/turf/open/floor/kutjevo/multi_tiles{ - dir = 8 - }, -/area/kutjevo/interior/colony_South/power2) "fWl" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/kutjevo/grey/plate, @@ -5624,6 +5587,9 @@ /obj/structure/machinery/bioprinter{ stored_metal = 1000 }, +/obj/item/clothing/glasses/thermal/syndi{ + icon_state = "kutjevo_goggles" + }, /turf/open/floor/kutjevo/colors/cyan, /area/kutjevo/interior/complex/med/operating) "hnZ" = ( @@ -5920,9 +5886,6 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/auto_turf/sand/layer1, /area/kutjevo/interior/colony_South) -"hGM" = ( -/turf/closed/wall/kutjevo/colony/reinforced/hull, -/area/kutjevo/exterior/runoff_bridge) "hGP" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor/kutjevo/plate, @@ -6165,9 +6128,6 @@ /area/kutjevo/exterior/lz_dunes) "idX" = ( /obj/structure/closet/firecloset/full, -/obj/item/clothing/glasses/thermal/syndi{ - icon_state = "kutjevo_goggles" - }, /obj/effect/landmark/objective_landmark/close, /turf/open/floor/kutjevo/multi_tiles, /area/kutjevo/interior/complex/med/locks) @@ -6741,8 +6701,8 @@ /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." + desc = "A regular shortwave radio, this one has experienced minor water damage but is still functional."; + name = "damp shortwave radio" }, /turf/open/desert/desert_shore/shore_corner2, /area/kutjevo/exterior/spring) @@ -8061,7 +8021,7 @@ /area/kutjevo/interior/colony_central/mine_elevator) "kPw" = ( /obj/effect/landmark/nightmare{ - insert_tag = "trappedmonke" + insert_tag = "trappedmonke_andclown" }, /turf/open/floor/kutjevo/tan/multi_tiles, /area/kutjevo/interior/oob) @@ -9504,7 +9464,7 @@ /area/kutjevo/interior/complex/med) "mIg" = ( /obj/effect/landmark/nightmare{ - insert_tag = "plinkingspot" + insert_tag = "plinkingspot_northlz" }, /turf/closed/wall/kutjevo/rock/border, /area/kutjevo/exterior/scrubland) @@ -11148,14 +11108,6 @@ dir = 8 }, /area/kutjevo/interior/complex/med/auto_doc) -"oSx" = ( -/obj/structure/barricade/handrail/kutjevo{ - layer = 3.1 - }, -/turf/open/floor/kutjevo/multi_tiles{ - dir = 4 - }, -/area/kutjevo/interior/colony_South/power2) "oSK" = ( /obj/structure/machinery/vending/snack, /turf/open/floor/kutjevo/tan/grey_edge, @@ -12768,15 +12720,6 @@ /obj/structure/platform/kutjevo/rock, /turf/open/auto_turf/sand/layer0, /area/kutjevo/exterior/scrubland) -"rgh" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/turf/open/floor/kutjevo/colors/orange, -/area/kutjevo/interior/colony_South/power2) "rgv" = ( /obj/structure/machinery/power/port_gen/pacman, /turf/open/auto_turf/sand/layer0, @@ -15262,20 +15205,6 @@ }, /turf/open/floor/plating/kutjevo, /area/kutjevo/interior/oob) -"uxb" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/barricade/handrail/kutjevo{ - layer = 3.1 - }, -/obj/structure/barricade/handrail/kutjevo{ - dir = 8 - }, -/turf/open/floor/kutjevo/multi_tiles{ - dir = 10 - }, -/area/kutjevo/interior/colony_South/power2) "uxA" = ( /obj/structure/prop/dam/truck, /turf/open/asphalt/cement_sunbleached, @@ -15428,12 +15357,6 @@ /obj/structure/flora/grass/desert/lightgrass_3, /turf/open/auto_turf/sand/layer1, /area/kutjevo/exterior/construction) -"uHJ" = ( -/obj/structure/stairs/perspective/kutjevo{ - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/floor/plating/kutjevo, -/area/kutjevo/interior/colony_South/power2) "uHP" = ( /turf/open/floor/kutjevo/colors/cyan, /area/kutjevo/interior/complex/med/auto_doc) @@ -16063,13 +15986,6 @@ /obj/structure/flora/grass/tallgrass/desert/corner, /turf/open/auto_turf/sand/layer1, /area/kutjevo/exterior/scrubland) -"vwB" = ( -/obj/structure/stairs/perspective/kutjevo{ - dir = 4; - icon_state = "p_stair_sn_full_cap" - }, -/turf/open/floor/plating/kutjevo, -/area/kutjevo/interior/colony_South/power2) "vxe" = ( /turf/open/floor/kutjevo/tan/alt_edge{ dir = 8 @@ -33461,9 +33377,9 @@ dxF dxF dxF dxF -mxB -mxB -mxB +dxF +dxF +dxF dxF dxF hkO @@ -33628,8 +33544,8 @@ jPt pKP dxF dxF -mxB -mxB +dxF +dxF mhj dxF dxF @@ -33795,7 +33711,7 @@ bjj fpO orL dxF -mxB +dxF mhj fjF gBl @@ -34001,7 +33917,7 @@ kDS wGD mNM xvn -hGM +mNM xms dRj dRj @@ -36506,8 +36422,8 @@ vDS mNM xvn dJT -hGM -hGM +mNM +mNM oeb fyD oeb @@ -36673,7 +36589,7 @@ gqQ vys dRj lok -hGM +mNM qrl nOH fyD @@ -37508,7 +37424,7 @@ kDS nOH xuY xyY -hGM +mNM juH dRj dRj @@ -37675,7 +37591,7 @@ vfd mNM xvn dJT -hGM +mNM wuy mSd dTM @@ -38507,10 +38423,10 @@ tIz tIz wtH wtH -nie -jhS -jhS -jhS +wtH +rzh +rzh +rzh jhS tGi tGi @@ -38674,10 +38590,10 @@ vHh tIz wtH wtH -nie -jhS -jhS -jhS +wtH +rzh +rzh +rzh jhS kVJ kVJ @@ -38841,9 +38757,9 @@ sAe hMu wCU wCU -btI -btI -btI +wCU +wCU +wCU btI jhS mjP @@ -39008,8 +38924,8 @@ hMu hMu wCU wCU -btI -btI +wCU +wCU btI btI sfz @@ -39996,15 +39912,15 @@ dip dip dip dip -mMf -mMf -gQr -gQr -gQr gQr gQr gQr rIL +rIL +rIL +rIL +rIL +rIL cyM rIL fWl @@ -40157,14 +40073,14 @@ szC lNG szC lNG -szC dip -gQr -gQr +dip rIL mMf -rIL -rIL +mMf +gQr +gQr +gQr rIL dnF rIL @@ -40325,11 +40241,11 @@ dip dip dip dip -dip rIL rIL -mMf rIL +mMf +mMf rIL rIL rIL @@ -40340,7 +40256,7 @@ gQr gQr iGz dnF -gQr +rIL rMp kGM nbu @@ -40490,8 +40406,14 @@ oNG rIL rIL rIL -mMf -mMf +rIL +rIL +rIL +rIL +rIL +rIL +rIL +rIL rIL rIL rIL @@ -40500,14 +40422,8 @@ gQr gQr gQr gQr -gQr -gQr -gQr -gQr -gQr -gQr -gQr -gQr +mMf +rIL hMu nbu kAW @@ -40656,11 +40572,11 @@ rIL mMf rIL mMf -jhS -kVJ -kVJ -kVJ -jhS +rIL +rIL +rIL +rIL +rIL jhS jhS jhS @@ -40819,15 +40735,15 @@ fyF sTU bDX qaI -oNG -oNG +rIL +rIL fAT dnF -jhS -gtL -rzb -vGx -jhS +rIL +rIL +rIL +rIL +mMf jhS gtL rzb @@ -40988,13 +40904,13 @@ fyF qaI oNG oNG -oNG -oNG -jhS -hws -qwg -vcY -jhS +mMf +rIL +mMf +rIL +rIL +rIL +mMf jhS hws qwg @@ -41156,12 +41072,12 @@ qaI oNG oNG oNG -oNG -jhS -cTG -fRZ -cQt -jhS +hMu +hMu +rIL +rIL +mMf +hMu jhS cTG fRZ @@ -41324,11 +41240,11 @@ rfE rdm rdm rdm -jhS -kVJ -kVJ -kVJ -jhS +hMu +rIL +rIL +mMf +hMu jhS kVJ kVJ @@ -41843,8 +41759,8 @@ vXK evr fTk fTk -oSx -eaB +fTk +qGx qGx qGx qGx @@ -42010,8 +41926,8 @@ klE klE ngK klE -azI -rgh +ngK +qGx qGx qGx qGx @@ -42177,8 +42093,8 @@ klE qGx qGx qGx -uHJ -uHJ +qGx +qGx qGx qGx eQW @@ -42344,8 +42260,8 @@ qGx duw mLw xVZ -fMi -fMi +xVZ +mLw mLw cpg fqm @@ -42511,8 +42427,8 @@ xVZ xVZ mLw qGx -vwB -vwB +qGx +qGx qGx qGx gNx @@ -42678,8 +42594,8 @@ qGx mEe slx qGx -uxb -aNj +klE +qGx qGx rHE qGx @@ -42845,8 +42761,8 @@ mBG qGx efr qGx -fVA -eaB +shX +qGx acD vSE acD 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 954ad6e3693c..6bc30f573dd2 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -689,12 +689,13 @@ }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "arP" = ( -/obj/item/lightstick/red/spoke/planted{ - pixel_x = -9; - pixel_y = 25 +/obj/structure/machinery/light{ + dir = 8 }, -/turf/open/auto_turf/sand_white/layer0, -/area/lv522/outdoors/colony_streets/central_streets) +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "arV" = ( /obj/structure/surface/table/almayer, /obj/item/storage/belt/utility, @@ -3430,10 +3431,8 @@ }, /area/lv522/indoors/b_block/bar) "bOX" = ( -/turf/open/floor/plating{ - dir = 8; - icon_state = "platingdmg3" - }, +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/shiva/prefabricated/reinforced, /area/lv522/indoors/lone_buildings/storage_blocks) "bPH" = ( /obj/structure/prop/invuln/ice_prefab/trim{ @@ -6361,20 +6360,8 @@ }, /area/lv522/oob) "dbc" = ( -/obj/structure/fence{ - layer = 2.9 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/colony_streets/central_streets) +/turf/closed/wall/solaris/reinforced/hull/lv522, +/area/lv522/indoors/lone_buildings/storage_blocks) "dbi" = ( /obj/item/clothing/suit/storage/marine/medium/leader, /obj/item/clothing/head/helmet/marine/leader{ @@ -9187,10 +9174,7 @@ /area/lv522/atmos/east_reactor) "egj" = ( /obj/structure/machinery/floodlight, -/turf/open/floor/plating{ - dir = 8; - icon_state = "platingdmg3" - }, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/storage_blocks) "egt" = ( /obj/structure/powerloader_wreckage, @@ -9495,10 +9479,13 @@ }, /area/lv522/atmos/east_reactor) "emt" = ( -/obj/structure/cargo_container/grant/rightmid, +/obj/structure/barricade/handrail{ + dir = 8 + }, +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" + dir = 8; + icon_state = "cell_stripe" }, /area/lv522/indoors/lone_buildings/storage_blocks) "emz" = ( @@ -11327,11 +11314,10 @@ /turf/closed/wall/strata_outpost/reinforced, /area/lv522/landing_zone_1/tunnel) "eYT" = ( -/obj/structure/prop/ice_colony/ground_wire{ - dir = 8 - }, -/turf/open/auto_turf/sand_white/layer0, -/area/lv522/outdoors/colony_streets/central_streets) +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/spiderling/nogrow, +/turf/open/floor/prison, +/area/lv522/indoors/lone_buildings/storage_blocks) "eZb" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -15434,7 +15420,16 @@ /area/lv522/indoors/c_block/casino) "gFy" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/obj/structure/machinery/camera/autoname{ + dir = 8 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "floor_marked" + }, /area/lv522/indoors/lone_buildings/storage_blocks) "gFD" = ( /obj/structure/surface/table/almayer, @@ -17131,7 +17126,7 @@ "hjE" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison, +/turf/closed/wall/shiva/prefabricated/reinforced, /area/lv522/indoors/lone_buildings/storage_blocks) "hjW" = ( /obj/structure/surface/table/almayer, @@ -20222,12 +20217,6 @@ icon_state = "plate" }, /area/lv522/atmos/cargo_intake) -"isG" = ( -/obj/structure/largecrate/random/barrel, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "isL" = ( /obj/structure/surface/table/almayer, /obj/item/spacecash/c1000, @@ -21509,10 +21498,6 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/auto_turf/shale/layer2, /area/lv522/outdoors/colony_streets/north_west_street) -"iSx" = ( -/obj/structure/girder, -/turf/open/floor/plating, -/area/lv522/indoors/lone_buildings/storage_blocks) "iSF" = ( /obj/structure/surface/table/almayer, /obj/structure/prop/server_equipment/laptop/on, @@ -27720,10 +27705,7 @@ }, /area/lv522/atmos/east_reactor/south) "kXc" = ( -/obj/structure/prop/ice_colony/ground_wire{ - dir = 8 - }, -/turf/open/auto_turf/shale/layer1, +/turf/closed/wall/solaris/reinforced/hull/lv522, /area/lv522/outdoors/colony_streets/central_streets) "kXe" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -30605,8 +30587,8 @@ "meM" = ( /obj/item/clothing/accessory/red, /obj/item/clothing/under/liaison_suit/field{ - pixel_y = 9; - pixel_x = -4 + pixel_x = -4; + pixel_y = 9 }, /turf/open/floor/carpet, /area/lv522/indoors/a_block/executive) @@ -31895,16 +31877,6 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/n_rockies) -"mFe" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/cargo_container/grant/left, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "mFg" = ( /obj/structure/surface/table/almayer, /obj/item/co2_cartridge{ @@ -34310,9 +34282,6 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) -"nxu" = ( -/turf/open/floor/plating, -/area/lv522/indoors/lone_buildings/storage_blocks) "nxF" = ( /obj/structure/machinery/light/small, /obj/effect/landmark/lv624/fog_blocker/short, @@ -34829,10 +34798,7 @@ "nKj" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" - }, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/storage_blocks) "nKk" = ( /obj/structure/machinery/camera/autoname{ @@ -38452,13 +38418,6 @@ icon_state = "floor_marked" }, /area/lv522/landing_zone_2) -"pck" = ( -/obj/structure/largecrate/random/barrel/white, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "pco" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/green, /turf/open/floor/prison, @@ -42166,13 +42125,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/dorms) -"qvK" = ( -/obj/structure/cargo_container/grant/right, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "qvM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/bed/chair/comfy{ @@ -42382,8 +42334,8 @@ /area/lv522/indoors/a_block/fitness/glass) "qzp" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ - id = "sh_dropship2"; dir = 2; + id = "sh_dropship2"; name = "\improper Typhoon crew hatch" }, /turf/open/shuttle/dropship{ @@ -45546,11 +45498,6 @@ icon_state = "41" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) -"rBV" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "rBZ" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "97" @@ -47121,7 +47068,10 @@ "she" = ( /obj/structure/machinery/floodlight, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, /area/lv522/indoors/lone_buildings/storage_blocks) "shh" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ @@ -47462,6 +47412,11 @@ }, /area/lv522/oob) "smR" = ( +/obj/structure/machinery/door/poddoor/almayer/closed{ + dir = 4; + id = "West LZ Storage"; + name = "Emergency Lockdown" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -51630,7 +51585,7 @@ /area/lv522/outdoors/colony_streets/north_east_street) "tNS" = ( /obj/item/stack/sheet/metal, -/turf/open/floor/plating, +/turf/open/floor/prison, /area/lv522/indoors/lone_buildings/storage_blocks) "tOe" = ( /obj/structure/platform{ @@ -56966,18 +56921,6 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/dorms) -"vIt" = ( -/obj/structure/machinery/camera/autoname{ - dir = 8 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "floor_marked" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "vIy" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, @@ -57577,12 +57520,6 @@ icon_state = "cement3" }, /area/lv522/outdoors/colony_streets/north_east_street) -"vTH" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "vTK" = ( /obj/structure/prop/vehicles{ icon_state = "van_damaged" @@ -57926,12 +57863,6 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) -"waj" = ( -/obj/structure/girder/displaced, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "wan" = ( /obj/structure/surface/table/almayer, /turf/open/floor/prison{ @@ -57982,6 +57913,11 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, +/obj/structure/machinery/door/poddoor/almayer/closed{ + dir = 4; + id = "West LZ Storage"; + name = "Emergency Lockdown" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -61227,11 +61163,8 @@ }, /area/lv522/atmos/sewer) "xoj" = ( -/obj/structure/largecrate/random/barrel/red, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, +/turf/closed/wall/solaris/reinforced/hull/lv522, /area/lv522/indoors/lone_buildings/storage_blocks) "xoC" = ( /obj/structure/machinery/door/airlock/almayer/generic{ @@ -62557,11 +62490,6 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/hallway) -"xQR" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/lv522/indoors/lone_buildings/storage_blocks) "xRg" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -67594,7 +67522,7 @@ ien ien ien ien -ien +spo umf vXc vXc @@ -67813,15 +67741,15 @@ ylo ylo ylo ylo +dbc ylo ylo ylo ylo ylo ylo -ylo -ien -ien +rMF +spo vXc vXc vXc @@ -68038,18 +67966,18 @@ udK wHi nly miW -hYf -mFe -hYf -wHi +ylo +ylo +dbc +bOX jZe wky wPV tyl ylo -ien -ien -ien +rMF +spo +vXc vXc vXc vXc @@ -68265,17 +68193,17 @@ hYf wHi jUk ouI -hYf -emt -pck -hYf +arP +ylo +xoj +ylo erS abe ukT ofS ylo -ien -ien +rMF +spo vXc vXc vXc @@ -68493,16 +68421,16 @@ hYf xhW hYf hYf -qvK +ylo xoj -hYf +ylo lpt gJL wHi cAW ylo ylo -ien +spo vXc vXc vXc @@ -68720,17 +68648,17 @@ hYf hLl wHi hYf -vBM -hYf -isG -vBM +ylo +dbc +ylo +emt hYf wHi tIS -xQR -waj -ien -ien +yfu +ylo +spo +vXc vXc vXc umf @@ -68947,16 +68875,16 @@ yfu yfu bZd yfu -bZd -bZd +bOX +xoj +ylo yfu +bZd yfu bZd -xQR -vTH -gFy -nxu -ien +bZd +iPD +spo vXc vXc vXc @@ -69174,16 +69102,16 @@ qJK qJK cQB bZd +ylo +xoj +bOX yfu +tNS bZd bZd yfu -tNS -gFy -gFy -rBV -iSx -ien +iPD +spo vXc vXc cpy @@ -69401,17 +69329,17 @@ yfu yfu bDr bZd -yfu -yfu -bZd +ylo +dbc +bOX +eYT bZd +yfu bZd -bOX -gFy -tNS -xQR -ien -ien +yfu +iPD +spo +vXc vXc cpy vXc @@ -69629,15 +69557,15 @@ yfu bDr yfu hjE -yfu -qpc +dbc +ylo nKj dGK qpc she egj ylo -ien +spo vXc vXc vXc @@ -69855,16 +69783,16 @@ jUk hYf sIS yfu -bZd -gJL -vIt -cOA -xhW +bOX +xoj +ylo +ylo +gFy hsz jnr ylo ylo -ien +spo vXc vXc vXc @@ -70082,17 +70010,17 @@ ylo smR wbi smR -smR -smR ylo +dbc ylo ylo ylo ylo ylo -ien -ien -ien +ylo +rMF +sql +vXc vXc yiM yiM @@ -70310,15 +70238,15 @@ xyN cnN xyN xyN -xyN +kXc lwv xyN xyN -dbc +xyN xyN xyN sql -ien +vXc yiM yiM yiM @@ -70536,16 +70464,16 @@ rwE rwE hWI yiM +kXc +kXc +kXc vXc vXc vXc -vXc -vXc -dbc umf umf vXc -ien +yiM yiM yiM yiM @@ -70762,18 +70690,18 @@ yiM yiM yiM yiM -eYT -eYT +yiM +yiM kXc vXc vXc vXc -dbc vXc vXc -ien -ien -ien +vXc +vXc +yiM +yiM yiM yiM yiM @@ -70989,17 +70917,17 @@ yiM yiM yiM yiM -arP yiM yiM -puY +kXc +vXc +vXc vXc vXc -dbc vXc vXc yiM -ien +yiM yiM yiM yiM @@ -71217,16 +71145,16 @@ yiM yiM yiM yiM -yiM -yiM -yiM +kXc +kXc +kXc +vXc vXc vXc -dbc vXc yiM yiM -ien +yiM yiM yiM yiM @@ -71445,16 +71373,16 @@ yiM yiM yiM wdy +kXc iPR iPR iPR iPR -dbc jPv vXc -ien -ien -ien +vXc +yiM +yiM yiM yiM pWR @@ -71680,7 +71608,7 @@ nLm rMF jPv vXc -ien +vXc yiM yiM yiM @@ -71907,7 +71835,7 @@ nLm nLm rVa jPv -ien +vXc vXc vXc yiM @@ -72133,9 +72061,9 @@ wan wEQ nLm nLm -ien -ien -ien +rMF +jPv +vXc vXc umf xTV @@ -72361,7 +72289,7 @@ uDP kDH nLm nLm -ien +spo vXc vXc vXc @@ -72588,7 +72516,7 @@ fjP vJT pfV nLm -ien +spo vXc vXc vXc @@ -72814,9 +72742,9 @@ tUM uOs uOs vJT -nLm -ien -ien +pMd +spo +vXc vXc jue wYa @@ -73041,8 +72969,8 @@ uOs uOs lsD wyE -nLm -ien +pMd +spo vXc vXc upz @@ -73268,8 +73196,8 @@ lBj vJT whn tek -nLm -ien +pMd +spo vXc vXc vXc @@ -73496,8 +73424,8 @@ oDu nLm nLm nLm -ien -ien +spo +vXc umf vXc vaZ @@ -73723,7 +73651,7 @@ fVB cxC rzG nLm -ien +spo vXc umf vXc @@ -73950,7 +73878,7 @@ bGL koj aMI nLm -ien +spo vXc vXc vXc @@ -74177,8 +74105,8 @@ sKH weR nLm nLm -ien -ien +spo +vXc vXc vXc wYa diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index c18a5d0acd7b..ffe928acf3ae 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -11174,6 +11174,7 @@ /obj/structure/computerframe{ anchored = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv624/lazarus/secure_storage) "aWd" = ( @@ -11464,13 +11465,13 @@ /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) "aWV" = ( -/obj/structure/surface/rack, -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/greengrid, +/obj/item/stack/rods/plasteel, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, /area/lv624/lazarus/secure_storage) "aWW" = ( /obj/structure/surface/rack, -/obj/item/ammo_magazine/rifle/extended, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) "aWX" = ( @@ -11686,11 +11687,13 @@ "aXF" = ( /obj/structure/surface/rack, /obj/item/ammo_magazine/shotgun/buckshot, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) "aXG" = ( /obj/structure/surface/rack, /obj/item/ammo_magazine/shotgun/slugs, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) "aXH" = ( @@ -12272,8 +12275,7 @@ }, /area/lv624/lazarus/comms) "aZL" = ( -/obj/structure/surface/rack, -/obj/structure/prop/mech/drill, +/obj/item/stack/sheet/metal, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) "aZM" = ( @@ -12929,7 +12931,7 @@ /area/lv624/ground/colony/west_tcomms_road) "bTw" = ( /obj/effect/landmark/nightmare{ - insert_tag = "cargospecial" + insert_tag = "cargospecial1" }, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) @@ -13034,6 +13036,12 @@ icon_state = "whiteyellow" }, /area/lv624/lazarus/corporate_dome) +"cfA" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv624/lazarus/secure_storage) "cfD" = ( /turf/closed/wall/r_wall/unmeltable, /area/lv624/lazarus/quartstorage/outdoors) @@ -13094,6 +13102,10 @@ }, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_west_caves) +"chy" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating, +/area/lv624/lazarus/secure_storage) "cij" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, @@ -14600,6 +14612,10 @@ "eTQ" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/south_east_jungle) +"eUI" = ( +/obj/item/storage/toolbox, +/turf/open/gm/dirt, +/area/lv624/ground/colony/west_tcomms_road) "eVH" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor{ @@ -15064,6 +15080,12 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"fMv" = ( +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/greengrid, +/area/lv624/lazarus/secure_storage) "fNA" = ( /obj/structure/barricade/wooden, /turf/open/shuttle{ @@ -15525,6 +15547,11 @@ "gRx" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/colony/south_medbay_road) +"gSb" = ( +/obj/item/stack/sheet/metal, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/lv624/lazarus/secure_storage) "gTj" = ( /obj/effect/decal/grass_overlay/grass1/inner{ dir = 8 @@ -15631,6 +15658,11 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) +"haE" = ( +/obj/item/stack/rods, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/south_west_jungle) "haN" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass1, @@ -15682,6 +15714,11 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"hen" = ( +/obj/item/tool/weldingtool, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/south_central_jungle) "hez" = ( /obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ light_on = 1; @@ -16116,6 +16153,12 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/dirt, /area/lv624/ground/jungle/east_central_jungle) +"hTp" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv624/lazarus/secure_storage) "hTR" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/auto_turf/strata_grass/layer1, @@ -16649,6 +16692,10 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/caves/sand_temple) +"jaw" = ( +/obj/item/stack/sheet/metal, +/turf/open/gm/dirt, +/area/lv624/ground/colony/west_tcomms_road) "jbd" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass1, @@ -17622,6 +17669,12 @@ }, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) +"kSN" = ( +/obj/structure/girder, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/lv624/lazarus/secure_storage) "kSR" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, @@ -17640,6 +17693,10 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"kVS" = ( +/obj/item/weapon/gun/rifle/m41a, +/turf/open/gm/dirt, +/area/lv624/lazarus/secure_storage) "kWH" = ( /turf/open/floor{ icon_state = "dark" @@ -18274,6 +18331,10 @@ }, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) +"mdw" = ( +/obj/structure/prop/mech/drill, +/turf/open/floor/greengrid, +/area/lv624/lazarus/secure_storage) "mdQ" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/caves/west_caves) @@ -18353,6 +18414,7 @@ }, /area/lv624/ground/barrens/south_eastern_barrens) "mkn" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv624/lazarus/secure_storage) "mko" = ( @@ -18426,6 +18488,10 @@ icon_state = "whitebluefull" }, /area/lv624/lazarus/medbay) +"mqf" = ( +/obj/item/tool/wrench, +/turf/open/floor/plating, +/area/lv624/lazarus/secure_storage) "mqw" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor{ @@ -19593,6 +19659,10 @@ icon_state = "asteroidwarning" }, /area/lv624/ground/colony/telecomm/cargo) +"ose" = ( +/obj/structure/girder/displaced, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/south_central_jungle) "osf" = ( /obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ light_on = 1; @@ -20021,7 +20091,7 @@ /area/lv624/ground/caves/sand_temple) "pca" = ( /obj/effect/landmark/nightmare{ - insert_tag = "nexuscenter" + insert_tag = "nexuscenter_barricaded" }, /turf/open/floor{ dir = 9; @@ -20084,6 +20154,11 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"phk" = ( +/obj/item/stack/rods, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/lv624/lazarus/secure_storage) "phU" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, @@ -20117,6 +20192,9 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"plC" = ( +/turf/open/floor/plating, +/area/lv624/lazarus/secure_storage) "pmt" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/gm/dirt, @@ -20875,6 +20953,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"qEz" = ( +/obj/item/ammo_magazine/rifle/extended, +/turf/open/floor/greengrid, +/area/lv624/lazarus/secure_storage) "qGH" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass2, @@ -21323,6 +21405,11 @@ }, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) +"rwK" = ( +/obj/effect/decal/remains/xeno, +/obj/item/stack/sheet/metal, +/turf/open/gm/dirt, +/area/lv624/ground/colony/west_tcomms_road) "rxV" = ( /turf/open/gm/dirtgrassborder{ icon_state = "desert_dug" @@ -21403,6 +21490,12 @@ "rCV" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_central_jungle) +"rDK" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv624/lazarus/secure_storage) "rER" = ( /obj/effect/decal/grass_overlay/grass1/inner{ dir = 6 @@ -21924,6 +22017,11 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/barrens/south_eastern_barrens) +"sCx" = ( +/obj/item/clothing/head/welding, +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/south_west_jungle) "sCJ" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/floor{ @@ -22234,7 +22332,7 @@ /area/lv624/lazarus/quartstorage) "tgi" = ( /obj/effect/landmark/nightmare{ - insert_tag = "lz-containers" + insert_tag = "lz-containers_swapped" }, /turf/open/floor{ icon_state = "warning" @@ -22927,7 +23025,8 @@ phone_id = "Secure Storage"; pixel_y = 24 }, -/turf/open/floor/greengrid, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, /area/lv624/lazarus/secure_storage) "umb" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, @@ -23782,6 +23881,10 @@ /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"vTT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/greengrid, +/area/lv624/lazarus/secure_storage) "vUj" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/dirtgrassborder/south, @@ -23903,10 +24006,20 @@ }, /turf/open/gm/coast/beachcorner2/south_east, /area/lv624/ground/caves/sand_temple) +"weB" = ( +/obj/item/stack/rods/plasteel, +/turf/open/floor/greengrid, +/area/lv624/lazarus/secure_storage) "weH" = ( /obj/structure/flora/bush/ausbushes/genericbush, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_jungle) +"weR" = ( +/obj/item/stack/rods, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/lv624/lazarus/secure_storage) "wgk" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /obj/structure/platform_decoration/mineral/sandstone/runed{ @@ -23999,6 +24112,10 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"wol" = ( +/obj/item/ammo_magazine/rifle/extended, +/turf/open/floor/plating, +/area/lv624/lazarus/secure_storage) "woF" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/barricade/metal/wired{ @@ -24579,6 +24696,9 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirt, /area/lv624/ground/river/west_river) +"xvj" = ( +/turf/open/gm/dirt, +/area/lv624/lazarus/secure_storage) "xvz" = ( /obj/structure/platform_decoration, /obj/effect/decal/cleanable/dirt, @@ -24761,6 +24881,10 @@ /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/south_central_jungle) +"xOL" = ( +/obj/item/stack/rods, +/turf/open/gm/dirt, +/area/lv624/ground/colony/west_tcomms_road) "xPk" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/colony/south_medbay_road) @@ -24789,6 +24913,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"xRc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/gm/dirt, +/area/lv624/lazarus/secure_storage) "xRe" = ( /obj/effect/decal/grass_overlay/grass1/inner{ dir = 10 @@ -32752,7 +32880,7 @@ aWT aUQ aZL aUQ -aUQ +mdw aTf aTf aTf @@ -32974,7 +33102,7 @@ aTf aUj aUQ aUQ -ygp +aZL aUQ gte aUQ @@ -33431,11 +33559,11 @@ aUj aUQ aUQ aVZ -aUQ -aWV +qEz +ygp aUQ aXE -aUQ +vTT aUQ aYu aTf @@ -33657,13 +33785,13 @@ aTf aTf aTf ulp -aUQ +aZL aWa -aUQ +xRc aWW aUQ aXF -aUQ +weB aUQ aTf aTf @@ -33885,13 +34013,13 @@ vxU aTf aTf aUS -aUQ +xLT iml -aUQ -aWW -aUQ +vTT +fMv +plC aXG -aUQ +aZL aYf aTf aTf @@ -34113,13 +34241,13 @@ aXh aTf aTf aTf +aWV aUQ +plC +vTT +weR aUQ -aUQ -aUQ -sWk -aUQ -aUQ +cfA aTf aTf aTf @@ -34345,9 +34473,9 @@ aTf aTf mkn xLT -mkn -xLT -sWk +xvj +cfA +kSN aTf aTf aXh @@ -34571,12 +34699,12 @@ efp aTf aTf aWc -mkn -mkn +phk +wol sWk -mkn -mkn -xLT +mqf +gSb +hTp kBq aXh aXh @@ -34798,13 +34926,13 @@ bSm efp efp aTf -aTf -xLT -aWv +chy +rDK aWv +kVS xLT -xTT -xTT +sCx +haE vUj qGH aLj @@ -35027,12 +35155,12 @@ buw efp efp uSq +eUI qIO qIO -qIO -qIO +jaw uXV -qtj +hen dMc knp iIU @@ -35259,7 +35387,7 @@ njC qIO qIO qIO -qtj +ose qtj ksM rox @@ -35483,7 +35611,7 @@ efp efp gDu uSq -hDX +rwK qIO qIO aXH @@ -35711,9 +35839,9 @@ efp efp efp uSq +xOL qIO -qIO -qIO +jaw ntL kxI kxI diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 4f2891030011..3d331fff024d 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -144,6 +144,24 @@ icon_state = "plate" }, /area/almayer/stair_clone/upper) +"aaP" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + dir = 2; + name = "\improper Brig Armoury"; + req_access = null; + req_one_access_txt = "1;3" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/starboard_hallway) "aaY" = ( /obj/structure/lattice, /turf/open/space, @@ -1933,6 +1951,17 @@ }, /turf/closed/wall/almayer/research/containment/wall/purple, /area/almayer/medical/containment/cell) +"alp" = ( +/obj/structure/machinery/firealarm{ + pixel_y = -28 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "alw" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -3275,6 +3304,18 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) +"asC" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + name = "\improper Brig Lobby"; + closeOtherId = "brignorth" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/starboard_hallway) "asD" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/door_control{ @@ -5882,6 +5923,10 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) +"aDt" = ( +/obj/structure/machinery/cm_vending/clothing/military_police_warden, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/warden_office) "aDv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -5969,16 +6014,6 @@ icon_state = "silver" }, /area/almayer/command/cic) -"aDM" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/lobby) "aDO" = ( /turf/open/floor/almayer{ dir = 8; @@ -6948,6 +6983,22 @@ icon_state = "plate" }, /area/almayer/living/tankerbunks) +"aIY" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/toxin{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/storage/firstaid/regular, +/obj/item/reagent_container/spray/cleaner, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "aJc" = ( /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Commanding Officer's Mess" @@ -7732,6 +7783,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) +"aNW" = ( +/turf/open/floor/almayer{ + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/starboard_hallway) "aNY" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -9107,6 +9163,12 @@ icon_state = "bluefull" }, /area/almayer/living/captain_mess) +"aVm" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/starboard_hallway) "aVo" = ( /obj/structure/machinery/light{ dir = 1 @@ -9846,6 +9908,18 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"bbi" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Brig" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/medical) "bbr" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -11930,6 +12004,12 @@ icon_state = "blue" }, /area/almayer/hallways/lower/port_midship_hallway) +"bop" = ( +/turf/open/floor/almayer{ + dir = 10; + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/port) "boq" = ( /obj/structure/bed/chair/comfy/alpha, /turf/open/floor/almayer{ @@ -12482,6 +12562,15 @@ icon_state = "plate" }, /area/almayer/living/gym) +"bsF" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "bsG" = ( /obj/structure/machinery/disposal{ density = 0; @@ -12604,22 +12693,6 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"btn" = ( -/obj/item/device/camera{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/structure/surface/table/almayer, -/obj/item/device/camera_film{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/item/device/camera_film, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "btr" = ( /obj/structure/closet/boxinggloves, /obj/structure/machinery/light, @@ -12716,11 +12789,6 @@ icon_state = "red" }, /area/almayer/living/briefing) -"bua" = ( -/turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "buc" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -13187,6 +13255,16 @@ icon_state = "dark_sterile" }, /area/almayer/living/port_emb) +"bxE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "bxN" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -14675,6 +14753,13 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/navigation) +"bHu" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/warden_office) "bHB" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -15108,6 +15193,15 @@ icon_state = "cargo" }, /area/almayer/living/cryo_cells) +"bKI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/starboard_hallway) "bKJ" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -15119,6 +15213,25 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) +"bKN" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + dir = 2; + name = "\improper Brig Armoury"; + req_access = null; + req_one_access_txt = "1;3"; + closeOtherId = "brignorth" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/starboard_hallway) "bKP" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -17112,6 +17225,10 @@ icon_state = "plate" }, /area/almayer/squads/req) +"bWQ" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/warden_office) "bWT" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -17165,6 +17282,15 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_two) +"bXy" = ( +/obj/structure/machinery/cm_vending/clothing/maintenance_technician, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "bXz" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/plating/plating_catwalk, @@ -18554,22 +18680,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"ckS" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - id = "Interrogation Shutters"; - name = "\improper Privacy Shutters" - }, -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Interrogation" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "ckW" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -18983,6 +19093,9 @@ icon_state = "plate" }, /area/almayer/hallways/lower/starboard_midship_hallway) +"cmM" = ( +/turf/closed/wall/almayer, +/area/almayer/shipboard/brig/medical) "cmN" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ @@ -19483,16 +19596,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_f_s) -"crp" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/secure_data{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/chief_mp_office) "crD" = ( /turf/open/floor/almayer{ dir = 1; @@ -19503,6 +19606,12 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/stern) +"csy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/warden_office) "csI" = ( /turf/open/floor/almayer{ dir = 8; @@ -19748,6 +19857,12 @@ }, /turf/open/floor/almayer, /area/almayer/squads/req) +"cwC" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "cwL" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 @@ -19785,12 +19900,6 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"cxA" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "cxF" = ( /obj/structure/barricade/handrail{ dir = 8 @@ -19800,6 +19909,16 @@ icon_state = "test_floor5" }, /area/almayer/hallways/lower/port_midship_hallway) +"cyc" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "cyo" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -19924,6 +20043,9 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"cAR" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/brig/mp_bunks) "cBb" = ( /obj/structure/machinery/light{ dir = 1 @@ -20011,42 +20133,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/lower/port_fore_hallway) -"cBZ" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control{ - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutters"; - pixel_x = 6; - req_access_txt = "3" - }, -/obj/structure/machinery/door_control{ - id = "Brig Lockdown Shutters"; - name = "Brig Lockdown Shutters"; - pixel_x = -6; - req_access_txt = "3" - }, -/obj/structure/machinery/door_control{ - id = "courtyard window"; - name = "Courtyard Window Shutters"; - pixel_x = -6; - pixel_y = 9; - req_access_txt = "3" - }, -/obj/structure/machinery/door_control{ - id = "Cell Privacy Shutters"; - name = "Cell Privacy Shutters"; - pixel_x = 6; - pixel_y = 9; - req_access_txt = "3" - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/chief_mp_office) "cCa" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -20264,14 +20350,6 @@ "cGd" = ( /turf/closed/wall/almayer, /area/almayer/maint/hull/upper/u_m_s) -"cGp" = ( -/obj/structure/machinery/cm_vending/clothing/senior_officer{ - pixel_y = 0 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/medical/upper_medical) "cGA" = ( /obj/structure/sign/poster{ pixel_y = -32 @@ -20307,6 +20385,9 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) +"cHk" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/brig/warden_office) "cHl" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -20333,6 +20414,12 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"cHC" = ( +/obj/structure/machinery/cm_vending/clothing/combat_correspondent, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "cHE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -20515,6 +20602,15 @@ }, /turf/open/floor/plating, /area/almayer/maint/lower/constr) +"cKJ" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/interrogation) "cKL" = ( /turf/open/floor/almayer{ dir = 8; @@ -20581,17 +20677,6 @@ icon_state = "cargo" }, /area/almayer/living/bridgebunks) -"cMb" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper_bin/uscm{ - pixel_y = 7 - }, -/obj/item/tool/pen, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "cMl" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -20658,6 +20743,17 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell/cl) +"cNI" = ( +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/medical) +"cNJ" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "cNK" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -20852,6 +20948,9 @@ "cQv" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/general_equipment) +"cQG" = ( +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/starboard_hallway) "cQL" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -20993,6 +21092,12 @@ icon_state = "cargo" }, /area/almayer/squads/req) +"cTy" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "cTC" = ( /obj/structure/machinery/vending/walkman, /turf/open/floor/almayer{ @@ -21152,20 +21257,6 @@ icon_state = "green" }, /area/almayer/living/offices) -"cWs" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "cWv" = ( /turf/open/floor/almayer{ dir = 8; @@ -21232,6 +21323,19 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/containment) +"cXD" = ( +/obj/structure/surface/rack, +/obj/item/clothing/suit/straight_jacket, +/obj/item/clothing/glasses/sunglasses/blindfold, +/obj/item/clothing/mask/muzzle, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution_storage) "cXF" = ( /obj/structure/machinery/flasher{ alpha = 1; @@ -21250,6 +21354,12 @@ icon_state = "greencorner" }, /area/almayer/squads/req) +"cXV" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/mp_bunks) "cXW" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -21326,21 +21436,6 @@ }, /turf/open/floor/plating, /area/almayer/command/cichallway) -"cZj" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "cZp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -21515,16 +21610,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"dco" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/almayer_network{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/chief_mp_office) "dcp" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -21557,6 +21642,13 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) +"ddj" = ( +/obj/structure/bed/chair/bolted, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/shipboard/brig/interrogation) "ddk" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -21647,6 +21739,9 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_m_s) +"deH" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/warden_office) "deT" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -21692,14 +21787,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"dfO" = ( -/obj/structure/machinery/medical_pod/bodyscanner{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) "dgg" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -21829,18 +21916,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) -"diP" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - name = "\improper Brig Lobby"; - closeOtherId = "brignorth" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/lobby) "djd" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -21981,6 +22056,18 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"dmr" = ( +/obj/structure/transmitter{ + name = "Brig Offices Telephone"; + phone_category = "MP Dept."; + phone_id = "Brig Main Offices"; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "dmv" = ( /turf/open/floor/almayer{ dir = 8; @@ -22113,10 +22200,6 @@ icon_state = "plating_striped" }, /area/almayer/maint/hull/lower/l_a_p) -"dod" = ( -/obj/structure/closet/crate/trashcart, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering/port) "dof" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ name = "\improper Upper Engineering" @@ -22128,14 +22211,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering) -"doj" = ( -/obj/structure/machinery/medical_pod/sleeper{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) "doJ" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -22263,9 +22338,6 @@ icon_state = "test_floor4" }, /area/almayer/living/offices) -"dqZ" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/chief_mp_office) "drj" = ( /obj/structure/window/reinforced{ dir = 4; @@ -22831,13 +22903,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_one) -"dBQ" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/chief_mp_office) "dBR" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -23129,6 +23194,19 @@ icon_state = "redcorner" }, /area/almayer/command/lifeboat) +"dFl" = ( +/obj/structure/sign/safety/security{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/restrictedarea{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "dFF" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_21" @@ -23158,12 +23236,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"dFU" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/main_office) "dFW" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/cell_charger, @@ -23230,6 +23302,17 @@ icon_state = "test_floor4" }, /area/almayer/maint/hull/lower/l_f_s) +"dGT" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/surface/table/almayer, +/obj/item/storage/donut_box, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "dGU" = ( /obj/structure/sign/poster/propaganda{ pixel_x = -27 @@ -23384,6 +23467,9 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"dJJ" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/execution_storage) "dKp" = ( /turf/open/floor/almayer/research/containment/corner{ dir = 4 @@ -23465,20 +23551,6 @@ icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south1) -"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; @@ -23697,14 +23769,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) -"dQv" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) "dQA" = ( /obj/structure/pipes/standard/simple/visible{ dir = 4 @@ -23730,6 +23794,21 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/hydroponics) +"dRj" = ( +/obj/structure/toilet{ + pixel_y = 13 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/mp_bunks) "dRo" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/bridge{ @@ -23758,6 +23837,20 @@ icon_state = "red" }, /area/almayer/squads/alpha) +"dRA" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/status_display{ + pixel_y = -32 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "dRD" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/security{ @@ -24308,22 +24401,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"ebv" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/toxin{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/item/storage/firstaid/regular, -/obj/item/reagent_container/spray/cleaner, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "ebI" = ( /obj/item/clothing/shoes/red, /turf/open/floor/plating/plating_catwalk, @@ -24661,6 +24738,9 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"ehl" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/interrogation) "ehx" = ( /obj/effect/landmark/start/marine/tl/alpha, /obj/effect/landmark/late_join/alpha, @@ -24850,15 +24930,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_p) -"ekF" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "ekM" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -24886,6 +24957,16 @@ icon_state = "test_floor4" }, /area/almayer/living/starboard_garden) +"ekZ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/secure_data{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/warden_office) "elf" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -24923,6 +25004,21 @@ dir = 1 }, /area/almayer/medical/containment/cell) +"elV" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/almayer/security/reinforced{ + dir = 2; + name = "\improper Execution Equipment" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/execution_storage) "elY" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -25638,6 +25734,9 @@ icon_state = "greencorner" }, /area/almayer/hallways/lower/starboard_midship_hallway) +"eyD" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/brig/starboard_hallway) "eyG" = ( /obj/structure/platform, /turf/open/floor/almayer{ @@ -25804,6 +25903,12 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/briefing) +"eBx" = ( +/obj/structure/closet/emcloset/legacy, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/shipboard/brig/starboard_hallway) "eBE" = ( /obj/structure/machinery/photocopier{ anchored = 0 @@ -26129,18 +26234,6 @@ icon_state = "green" }, /area/almayer/hallways/lower/port_midship_hallway) -"eGr" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Brig" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/surgery) "eGB" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer, @@ -26383,6 +26476,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_m_s) +"eLX" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "eMh" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Laundry Room" @@ -26439,10 +26541,6 @@ "eNi" = ( /turf/closed/wall/almayer, /area/almayer/engineering/ce_room) -"eNv" = ( -/obj/structure/largecrate/random, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering/port) "eNI" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -26641,9 +26739,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_s) -"eRL" = ( -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "eRR" = ( /obj/item/clothing/head/helmet/marine{ pixel_x = 16; @@ -27521,6 +27616,15 @@ icon_state = "green" }, /area/almayer/squads/req) +"fgt" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "fgE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -27745,15 +27849,6 @@ icon_state = "redfull" }, /area/almayer/medical/upper_medical) -"fnC" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "fnH" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -27946,6 +28041,16 @@ /obj/structure/surface/table/reinforced/black, /turf/open/floor/carpet, /area/almayer/command/cichallway) +"fqQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "fqU" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -27996,6 +28101,42 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"frt" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/door_control{ + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutters"; + pixel_x = 6; + req_access_txt = "3" + }, +/obj/structure/machinery/door_control{ + id = "Brig Lockdown Shutters"; + name = "Brig Lockdown Shutters"; + pixel_x = -6; + req_access_txt = "3" + }, +/obj/structure/machinery/door_control{ + id = "courtyard window"; + name = "Courtyard Window Shutters"; + pixel_x = -6; + pixel_y = 9; + req_access_txt = "3" + }, +/obj/structure/machinery/door_control{ + id = "Cell Privacy Shutters"; + name = "Cell Privacy Shutters"; + pixel_x = 6; + pixel_y = 9; + req_access_txt = "3" + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/warden_office) "frz" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ name = "\improper Exterior Airlock"; @@ -28039,17 +28180,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/u_a_s) -"frX" = ( -/obj/structure/machinery/optable, -/obj/structure/sign/safety/medical{ - pixel_x = 8; - pixel_y = 29 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_corner" - }, -/area/almayer/shipboard/brig/surgery) "fsf" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -28164,6 +28294,15 @@ icon_state = "orange" }, /area/almayer/hallways/lower/port_umbilical) +"fuY" = ( +/obj/structure/bed/chair/bolted{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/interrogation) "fva" = ( /obj/structure/machinery/light{ dir = 1 @@ -28364,6 +28503,12 @@ }, /turf/open/floor/plating/almayer, /area/almayer/living/briefing) +"fyI" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -25 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/warden_office) "fyT" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -28461,12 +28606,6 @@ /obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"fAE" = ( -/obj/structure/closet/firecloset/full, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/shipboard/brig/main_office) "fAW" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -29765,15 +29904,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/upper/stern_hallway) -"gax" = ( -/obj/structure/machinery/status_display{ - pixel_y = 30 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "gaJ" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/cryo) @@ -29897,12 +30027,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/sea_office) -"gcT" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "gde" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -29922,6 +30046,16 @@ icon_state = "red" }, /area/almayer/hallways/hangar) +"gdG" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "gdJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -30000,6 +30134,21 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/lower/port_midship_hallway) +"gfd" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/power/apc/almayer, +/obj/structure/sign/safety/rewire{ + pixel_y = -38 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "gfo" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 1; @@ -30145,6 +30294,15 @@ "ghF" = ( /turf/open/floor/almayer, /area/almayer/hallways/lower/vehiclehangar) +"gii" = ( +/obj/structure/bed/chair/bolted{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/interrogation) "gio" = ( /obj/structure/closet/emcloset, /obj/structure/sign/safety/restrictedarea{ @@ -30326,6 +30484,17 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"glG" = ( +/obj/structure/surface/rack, +/obj/item/storage/box/gloves{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/masks, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "glH" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -30339,6 +30508,13 @@ icon_state = "test_floor4" }, /area/almayer/engineering/lower/workshop) +"glP" = ( +/obj/structure/janitorialcart, +/obj/item/tool/mop, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution_storage) "gmb" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -30398,15 +30574,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_f_p) -"gob" = ( -/obj/structure/closet/fireaxecabinet{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "gof" = ( /obj/structure/platform_decoration{ dir = 1 @@ -30566,10 +30733,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/s_bow) -"grF" = ( -/obj/structure/pipes/vents/scrubber, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "grG" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = -17 @@ -30907,6 +31070,17 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) +"gxt" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + name = "\improper Warden's Office" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/warden_office) "gxI" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/maint/hull/upper/s_bow) @@ -30949,6 +31123,9 @@ icon_state = "blue" }, /area/almayer/hallways/upper/aft_hallway) +"gym" = ( +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/mp_bunks) "gyn" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -31386,22 +31563,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"gGp" = ( -/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) "gGr" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -31542,6 +31703,21 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_a_p) +"gIz" = ( +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "gII" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -31560,6 +31736,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/upper/aft_hallway) +"gIO" = ( +/obj/structure/bed/chair/bolted{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/interrogation) "gIU" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/tapes{ @@ -31593,6 +31775,23 @@ icon_state = "plate" }, /area/almayer/hallways/lower/repair_bay) +"gJE" = ( +/obj/structure/machinery/door_control{ + id = "Interrogation Shutters"; + name = "\improper Shutters"; + pixel_x = 24; + pixel_y = 12; + req_access_txt = "3" + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/interrogation) "gJF" = ( /turf/closed/wall/almayer/outer, /area/almayer/maint/hull/upper/s_stern) @@ -32140,6 +32339,12 @@ }, /turf/open/floor/almayer, /area/almayer/maint/hull/upper/u_f_s) +"gSz" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/mp_bunks) "gSH" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ @@ -32463,6 +32668,15 @@ icon_state = "redfull" }, /area/almayer/living/offices/flight) +"gYx" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "gYI" = ( /obj/structure/platform{ dir = 4 @@ -32591,6 +32805,16 @@ icon_state = "plate" }, /area/almayer/maint/lower/s_bow) +"haY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/starboard_hallway) "hbl" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -32748,6 +32972,18 @@ icon_state = "green" }, /area/almayer/squads/req) +"hdQ" = ( +/obj/structure/closet/secure_closet{ + name = "\improper Execution Firearms" + }, +/obj/item/weapon/gun/rifle/m4ra, +/obj/item/weapon/gun/rifle/m4ra, +/obj/item/weapon/gun/rifle/m4ra, +/obj/item/ammo_box/magazine/m4ra, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution_storage) "hdV" = ( /obj/structure/sign/safety/escapepod{ pixel_x = 8; @@ -33020,17 +33256,6 @@ /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"hhW" = ( -/obj/structure/surface/rack, -/obj/item/storage/box/gloves{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/masks, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "hif" = ( /obj/structure/machinery/floodlight/landing, /turf/open/floor/almayer{ @@ -33247,6 +33472,23 @@ icon_state = "plate" }, /area/almayer/engineering/lower) +"hlI" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/recharger, +/obj/structure/sign/safety/terminal{ + pixel_y = 32 + }, +/obj/structure/transmitter/rotary{ + name = "Brig Wardens's Office Telephone"; + phone_category = "MP Dept."; + phone_id = "Brig Warden's Office"; + pixel_x = 15 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/shipboard/brig/warden_office) "hlT" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -33371,20 +33613,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) -"hmG" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/security/glass{ - name = "\improper Brig Breakroom" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - layer = 1.9 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "hmS" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -33442,6 +33670,22 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_p) +"hnE" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/ids{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/device/flash, +/obj/structure/machinery/light{ + dir = 8; + invisibility = 101 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "hnI" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -33490,11 +33734,30 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_p) +"hoK" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "hoT" = ( /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_m_s) +"hoW" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/adv, +/obj/item/device/defibrillator, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "hpk" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 8; @@ -33580,16 +33843,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/stern_hallway) -"hqU" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "hqW" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ name = "\improper Medical Bay"; @@ -33658,15 +33911,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"hrO" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/main_office) "hsc" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/light{ @@ -33883,6 +34127,9 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) +"hvd" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/brig/interrogation) "hvq" = ( /obj/structure/bed/chair{ dir = 8; @@ -34047,6 +34294,19 @@ "hyQ" = ( /turf/closed/wall/almayer, /area/almayer/living/synthcloset) +"hyV" = ( +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 32; + pixel_y = 24 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/interrogation) "hza" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -34096,6 +34356,15 @@ icon_state = "cargo" }, /area/almayer/squads/delta) +"hzG" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/starboard_hallway) "hzL" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -34126,6 +34395,13 @@ icon_state = "cargo" }, /area/almayer/squads/req) +"hAf" = ( +/obj/structure/machinery/iv_drip, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "hAh" = ( /turf/closed/wall/almayer/outer, /area/almayer/hallways/lower/port_umbilical) @@ -34647,15 +34923,6 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) -"hKq" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "hKJ" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -34719,12 +34986,6 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) -"hMc" = ( -/obj/structure/bed/chair/comfy/orange{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/chief_mp_office) "hMi" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -34762,17 +35023,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_f_p) -"hNl" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21"; - pixel_y = 16 - }, -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "hNv" = ( /obj/structure/sign/safety/escapepod{ pixel_x = 8; @@ -35012,6 +35262,9 @@ icon_state = "plate" }, /area/almayer/living/numbertwobunks) +"hRu" = ( +/turf/closed/wall/almayer/outer, +/area/almayer/shipboard/brig/execution_storage) "hRA" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35216,6 +35469,14 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_m_s) +"hUh" = ( +/obj/structure/machinery/medical_pod/bodyscanner{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/medical) "hUk" = ( /turf/open/floor/almayer{ dir = 10; @@ -35239,6 +35500,28 @@ icon_state = "plate" }, /area/almayer/living/port_emb) +"hUU" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/box/bodybags{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/box/bodybags, +/obj/structure/machinery/light/small{ + dir = 4; + pixel_y = -12 + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 4 + }, +/obj/structure/sign/safety/rewire{ + pixel_x = 32; + pixel_y = 17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution_storage) "hUW" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -35535,18 +35818,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"hZU" = ( -/obj/structure/transmitter{ - name = "Brig Offices Telephone"; - phone_category = "MP Dept."; - phone_id = "Brig Main Offices"; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "hZZ" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating/plating_catwalk, @@ -35824,6 +36095,15 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) +"ifz" = ( +/obj/structure/machinery/keycard_auth{ + pixel_x = 25 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/warden_office) "igb" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -35851,17 +36131,6 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) -"igt" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "igw" = ( /obj/structure/sign/poster/ad{ pixel_x = 30 @@ -36361,12 +36630,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) -"irF" = ( -/obj/structure/closet/emcloset/legacy, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/shipboard/brig/main_office) "irJ" = ( /obj/item/tool/wirecutters{ pixel_y = -7 @@ -36834,6 +37097,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"iAg" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/mp_bunks) "iAw" = ( /obj/item/tool/warning_cone{ pixel_x = -12 @@ -37059,6 +37328,15 @@ }, /turf/open/floor/almayer, /area/almayer/living/offices) +"iFK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 6 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "iFM" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37343,17 +37621,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_midship_hallway) -"iLo" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/structure/surface/table/almayer, -/obj/item/storage/donut_box, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "iLq" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -37420,6 +37687,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"iNh" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + name = "\improper Brig Cells" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/starboard_hallway) "iNk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -37670,6 +37948,15 @@ icon_state = "green" }, /area/almayer/hallways/upper/aft_hallway) +"iRp" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 8; + id = "Interrogation Shutters"; + name = "\improper Privacy Shutters" + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/interrogation) "iRy" = ( /obj/structure/pipes/vents/pump/on, /turf/open/floor/almayer, @@ -37877,6 +38164,19 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"iUG" = ( +/obj/structure/closet/secure_closet/surgical{ + pixel_x = -30 + }, +/obj/structure/machinery/power/apc/almayer, +/obj/structure/sign/safety/rewire{ + pixel_y = -38 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_corner" + }, +/area/almayer/shipboard/brig/medical) "iUV" = ( /turf/open/floor/almayer{ icon_state = "bluecorner" @@ -37892,6 +38192,22 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"iUX" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = -8; + pixel_y = 18 + }, +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 8; + pixel_y = 18 + }, +/obj/item/device/taperecorder, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/interrogation) "iVy" = ( /turf/open/floor/almayer{ dir = 1; @@ -38641,6 +38957,39 @@ icon_state = "test_floor4" }, /area/almayer/maint/hull/lower/l_m_s) +"jgR" = ( +/obj/structure/sign/safety/rewire{ + pixel_y = 32 + }, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "jgS" = ( /turf/open/floor/almayer{ dir = 10; @@ -38792,19 +39141,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/vehiclehangar) -"jjm" = ( -/obj/structure/closet/secure_closet{ - name = "\improper Lethal Injection Locker" - }, -/obj/item/reagent_container/ld50_syringe/choral, -/obj/item/reagent_container/ld50_syringe/choral, -/obj/item/reagent_container/ld50_syringe/choral, -/obj/item/reagent_container/ld50_syringe/choral, -/obj/item/reagent_container/ld50_syringe/choral, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/execution) "jjn" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/eastright{ @@ -38969,6 +39305,20 @@ icon_state = "test_floor4" }, /area/almayer/hallways/lower/port_fore_hallway) +"jlE" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/surface/table/almayer, +/obj/item/toy/deck/uno, +/obj/item/toy/deck{ + pixel_x = -9 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "jlG" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -39092,6 +39442,29 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_aft_hallway) +"jnp" = ( +/obj/structure/surface/table/almayer, +/obj/item/cell/high{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/ashtray/plastic{ + icon_state = "ashtray_full_bl"; + pixel_x = 5; + pixel_y = 1 + }, +/obj/item/trash/cigbutt{ + pixel_x = -10; + pixel_y = 13 + }, +/obj/item/trash/cigbutt{ + pixel_x = -6; + pixel_y = -9 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/engineering/upper_engineering/port) "jnx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -39411,6 +39784,12 @@ icon_state = "plate" }, /area/almayer/medical/lower_medical_medbay) +"jvc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/mp_bunks) "jvp" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -39538,6 +39917,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/u_f_p) +"jwr" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "jwJ" = ( /obj/structure/platform_decoration, /turf/open/floor/plating/plating_catwalk, @@ -39782,6 +40167,10 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"jCX" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/starboard_hallway) "jDk" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -39876,6 +40265,20 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/chief_mp_office) +"jEV" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_x = -7 + }, +/obj/item/tool/pen, +/obj/item/tool/pen{ + pixel_y = 3 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "jFf" = ( /obj/structure/machinery/shower{ pixel_y = 16 @@ -40040,13 +40443,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_m_p) -"jIo" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/chief_mp_office) "jIC" = ( /obj/structure/machinery/computer/working_joe{ dir = 4; @@ -40057,19 +40453,6 @@ icon_state = "orange" }, /area/almayer/maint/upper/mess) -"jIH" = ( -/obj/structure/surface/rack, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/glasses/sunglasses/blindfold, -/obj/item/clothing/mask/muzzle, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/execution) "jIJ" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/almayer{ @@ -40173,16 +40556,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_p) -"jLM" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "jLS" = ( /obj/structure/bed/chair/comfy/charlie, /obj/effect/decal/cleanable/dirt, @@ -40701,6 +41074,11 @@ icon_state = "emerald" }, /area/almayer/squads/charlie_delta_shared) +"jTU" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/warden_office) "jUb" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/toy/deck{ @@ -40822,13 +41200,6 @@ icon_state = "test_floor5" }, /area/almayer/command/computerlab) -"jVP" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/execution) "jWb" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -40856,6 +41227,19 @@ icon_state = "plate" }, /area/almayer/living/offices) +"jXc" = ( +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "jXd" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -41113,6 +41497,16 @@ icon_state = "bluefull" }, /area/almayer/squads/charlie_delta_shared) +"kaQ" = ( +/obj/structure/disposalpipe/junction, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "kaS" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -41314,6 +41708,18 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_s) +"keG" = ( +/obj/structure/machinery/door/airlock/almayer/security{ + dir = 2; + name = "\improper Interrogation Observation" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/interrogation) "keO" = ( /obj/structure/largecrate/random/secure, /obj/effect/decal/warning_stripes{ @@ -41417,17 +41823,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_s) -"kgQ" = ( -/obj/structure/surface/rack, -/obj/item/storage/firstaid/adv{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/firstaid/regular, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/execution) "kgS" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -41812,15 +42207,6 @@ icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south2) -"knO" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "kow" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -41894,6 +42280,15 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_p) +"kqd" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "kqm" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -42074,6 +42469,10 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/processing) +"ksm" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/starboard_hallway) "ksp" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -42200,6 +42599,16 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) +"kvL" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/almayer_network{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/warden_office) "kvU" = ( /obj/structure/surface/table/almayer, /turf/open/floor/plating/plating_catwalk, @@ -42305,6 +42714,12 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) +"kxP" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "kyh" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -42576,21 +42991,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) -"kBh" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/almayer/security/reinforced{ - dir = 2; - name = "\improper Execution Equipment" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/execution) "kBo" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -42677,6 +43077,14 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) +"kCY" = ( +/obj/structure/machinery/sleep_console{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/medical) "kDd" = ( /obj/structure/sign/safety/water{ pixel_x = 8; @@ -42873,9 +43281,6 @@ icon_state = "mono" }, /area/almayer/hallways/upper/aft_hallway) -"kHa" = ( -/turf/closed/wall/almayer, -/area/almayer/shipboard/brig/surgery) "kHd" = ( /obj/structure/machinery/computer/arcade, /obj/item/prop/helmetgarb/spacejam_tickets{ @@ -42887,6 +43292,22 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"kHo" = ( +/obj/item/device/camera{ + pixel_x = 4; + pixel_y = 8 + }, +/obj/structure/surface/table/almayer, +/obj/item/device/camera_film{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/item/device/camera_film, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "kHS" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -43570,6 +43991,13 @@ icon_state = "plating" }, /area/almayer/squads/req) +"kTp" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/medical) "kTv" = ( /obj/structure/machinery/light{ dir = 4 @@ -43595,6 +44023,16 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"kUg" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 21 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/warden_office) "kUh" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ @@ -43616,24 +44054,6 @@ icon_state = "green" }, /area/almayer/hallways/upper/aft_hallway) -"kUw" = ( -/obj/structure/surface/rack, -/obj/item/storage/bag/trash{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/storage/bag/trash{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/storage/bag/trash{ - pixel_x = -3; - pixel_y = -2 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/port) "kUA" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, @@ -43804,6 +44224,15 @@ icon_state = "plating" }, /area/almayer/shipboard/stern_point_defense) +"kXt" = ( +/obj/structure/closet/fireaxecabinet{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "kXu" = ( /turf/open/floor/almayer{ dir = 8; @@ -43867,6 +44296,15 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) +"kYU" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "kYV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -44111,12 +44549,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"ldu" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "ldC" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -45079,6 +45511,19 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"ltO" = ( +/obj/structure/closet/secure_closet{ + name = "\improper Lethal Injection Locker" + }, +/obj/item/reagent_container/ld50_syringe/choral, +/obj/item/reagent_container/ld50_syringe/choral, +/obj/item/reagent_container/ld50_syringe/choral, +/obj/item/reagent_container/ld50_syringe/choral, +/obj/item/reagent_container/ld50_syringe/choral, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution_storage) "ltU" = ( /obj/structure/bed/chair{ dir = 8 @@ -45213,12 +45658,6 @@ icon_state = "emeraldfull" }, /area/almayer/squads/charlie) -"lwK" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/main_office) "lwY" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Port Viewing Room" @@ -45246,14 +45685,6 @@ icon_state = "plate" }, /area/almayer/living/auxiliary_officer_office) -"lxy" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "lxE" = ( /obj/structure/machinery/cm_vending/clothing/commanding_officer, /turf/open/floor/almayer{ @@ -45378,12 +45809,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/upper/aft_hallway) -"lzY" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -25 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/chief_mp_office) "lAa" = ( /obj/structure/surface/table/almayer, /obj/item/device/lightreplacer{ @@ -45504,12 +45929,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/s_bow) -"lCp" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/main_office) "lCr" = ( /turf/open/floor/almayer{ icon_state = "redfull" @@ -46106,12 +46525,6 @@ icon_state = "plate" }, /area/almayer/squads/charlie) -"lNN" = ( -/obj/structure/closet/secure_closet/medical2, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "lNR" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -46145,16 +46558,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_two) -"lOI" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "lON" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -46278,16 +46681,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/operating_room_three) -"lRe" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "lRs" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -46639,6 +47032,17 @@ icon_state = "test_floor4" }, /area/almayer/medical/hydroponics) +"may" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 16 + }, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "maF" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -46711,6 +47115,12 @@ /obj/docking_port/stationary/escape_pod/north, /turf/open/floor/plating, /area/almayer/maint/hull/lower/l_m_p) +"mcp" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/starboard_hallway) "mcL" = ( /obj/structure/machinery/vending/snack, /obj/structure/sign/safety/maint{ @@ -46766,6 +47176,15 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"mea" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "mem" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -46982,6 +47401,17 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"miy" = ( +/obj/structure/machinery/optable, +/obj/structure/sign/safety/medical{ + pixel_x = 8; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_corner" + }, +/area/almayer/shipboard/brig/medical) "miE" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -47454,15 +47884,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"mqo" = ( -/obj/structure/bed/chair/bolted{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "mqt" = ( /turf/open/floor/almayer{ icon_state = "bluecorner" @@ -47746,36 +48167,6 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"mvE" = ( -/obj/item/bedsheet/brown{ - pixel_y = 13 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/item/bedsheet/brown{ - layer = 3.1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "mvI" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -47789,15 +48180,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"mvR" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) "mww" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -47942,6 +48324,21 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/armory) +"mze" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + name = "\improper Brig"; + closeOtherId = "brigmaint_n" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/starboard_hallway) "mzg" = ( /turf/open/floor/almayer{ icon_state = "emerald" @@ -48029,6 +48426,15 @@ icon_state = "cargo" }, /area/almayer/squads/delta) +"mAY" = ( +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "mBa" = ( /obj/structure/machinery/light{ dir = 4 @@ -48370,19 +48776,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/chief_mp_office) -"mHA" = ( -/obj/structure/closet/secure_closet/surgical{ - pixel_x = -30 - }, -/obj/structure/machinery/power/apc/almayer, -/obj/structure/sign/safety/rewire{ - pixel_y = -38 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_corner" - }, -/area/almayer/shipboard/brig/surgery) "mHD" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -48687,12 +49080,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) -"mLJ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "mLN" = ( /obj/structure/machinery/light/small, /obj/structure/disposalpipe/segment{ @@ -48728,16 +49115,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"mMZ" = ( -/obj/structure/disposalpipe/junction, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "mNm" = ( /obj/structure/platform{ dir = 8 @@ -50748,6 +51125,20 @@ /obj/effect/landmark/late_join/alpha, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) +"nuZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "nvd" = ( /turf/open/floor/almayer{ dir = 6; @@ -51166,6 +51557,11 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"nCD" = ( +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "nCM" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ @@ -51226,19 +51622,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) -"nDL" = ( -/obj/structure/barricade/handrail{ - dir = 4 - }, -/obj/structure/surface/rack, -/obj/item/stack/tile/carpet{ - amount = 20 - }, -/obj/item/stack/sheet/wood/large_stack, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/port) "nDM" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -51555,12 +51938,6 @@ /obj/item/newspaper, /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"nJz" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "nJH" = ( /obj/structure/machinery/computer/cameras/almayer{ dir = 8; @@ -52153,6 +52530,25 @@ icon_state = "test_floor4" }, /area/almayer/living/briefing) +"nVm" = ( +/obj/structure/machinery/door_control{ + id = "firearm_storage_armory"; + name = "Armory Lockdown"; + pixel_y = 24; + req_access_txt = "4" + }, +/obj/structure/sign/safety/ammunition{ + pixel_y = 32 + }, +/obj/structure/sign/safety/restrictedarea{ + pixel_x = 15; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "nVn" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -52233,6 +52629,14 @@ /obj/structure/surface/table/almayer, /turf/open/floor/wood/ship, /area/almayer/engineering/ce_room) +"nWS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/medical) "nXo" = ( /obj/item/storage/box/donkpockets, /obj/structure/surface/rack, @@ -52457,17 +52861,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) -"occ" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/energy/taser, -/obj/item/weapon/gun/energy/taser{ - pixel_y = 8 - }, -/obj/structure/machinery/recharger, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "ocf" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -52684,6 +53077,9 @@ icon_state = "silver" }, /area/almayer/command/computerlab) +"oeZ" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/brig/medical) "ofH" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -52900,6 +53296,13 @@ icon_state = "redfull" }, /area/almayer/shipboard/port_missiles) +"oix" = ( +/obj/structure/machinery/power/apc/almayer, +/obj/structure/sign/safety/rewire{ + pixel_y = -38 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/warden_office) "oiB" = ( /turf/open/floor/almayer{ dir = 10; @@ -53031,6 +53434,12 @@ icon_state = "outerhull_dir" }, /area/space) +"okO" = ( +/obj/structure/machinery/cm_vending/clothing/senior_officer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/upper_medical) "old" = ( /obj/structure/machinery/light/small, /obj/structure/largecrate/random/case/double, @@ -53168,14 +53577,6 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"ond" = ( -/obj/structure/machinery/sleep_console{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) "onh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53309,23 +53710,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower/engine_core) -"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, @@ -53616,6 +54000,15 @@ icon_state = "red" }, /area/almayer/hallways/lower/starboard_midship_hallway) +"otp" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/medical) "otq" = ( /obj/structure/machinery/line_nexter{ dir = 1; @@ -53882,6 +54275,12 @@ /obj/structure/machinery/photocopier, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"oyC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/starboard_hallway) "oyE" = ( /obj/effect/landmark/start/intel, /obj/structure/sign/poster{ @@ -54556,6 +54955,12 @@ "oJk" = ( /turf/closed/wall/almayer, /area/almayer/engineering/lower/workshop) +"oJm" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "oJp" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -54868,36 +55273,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/lifeboat) -"oPk" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control{ - id = "Interrogation Shutters"; - name = "\improper Shutters"; - pixel_x = -6; - pixel_y = -6; - req_access_txt = "3" - }, -/obj/item/device/taperecorder{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"oPp" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "oPy" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22"; @@ -55379,6 +55754,15 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/lower/starboard_fore_hallway) +"oWK" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "oWN" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -55610,6 +55994,36 @@ dir = 1 }, /area/almayer/command/cic) +"pbm" = ( +/obj/item/bedsheet/brown{ + pixel_y = 13 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/brown{ + layer = 3.1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "pbo" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ @@ -55750,6 +56164,16 @@ icon_state = "plating" }, /area/almayer/engineering/lower/engine_core) +"pdT" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "pek" = ( /turf/closed/wall/almayer, /area/almayer/maint/hull/upper/s_bow) @@ -55804,6 +56228,17 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) +"pfd" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/starboard_hallway) "pfp" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Up4"; @@ -56082,13 +56517,6 @@ "plv" = ( /turf/open/floor/plating, /area/almayer/maint/hull/lower/l_m_p) -"plI" = ( -/obj/structure/machinery/cm_vending/sorted/medical/blood, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "pmd" = ( /obj/structure/machinery/light, /obj/structure/disposalpipe/segment{ @@ -56546,36 +56974,6 @@ icon_state = "silver" }, /area/almayer/living/cryo_cells) -"puv" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 - }, -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"puE" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/recharger, -/obj/structure/sign/safety/terminal{ - pixel_y = 32 - }, -/obj/structure/transmitter/rotary{ - name = "Brig Wardens's Office Telephone"; - phone_category = "MP Dept."; - phone_id = "Brig Warden's Office"; - pixel_x = 15 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/shipboard/brig/chief_mp_office) "puI" = ( /obj/structure/machinery/light{ dir = 4 @@ -57295,19 +57693,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower/engine_core) -"pJv" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "pJD" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -57357,6 +57742,15 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/s_stern) +"pKU" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/mp_bunks) "pKW" = ( /obj/structure/machinery/door/poddoor/almayer/open{ id = "Hangar Lockdown"; @@ -57486,28 +57880,6 @@ icon_state = "test_floor4" }, /area/almayer/command/cichallway) -"pNk" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/bodybags{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/storage/box/bodybags, -/obj/structure/machinery/light/small{ - dir = 4; - pixel_y = -12 - }, -/obj/structure/machinery/power/apc/almayer{ - dir = 4 - }, -/obj/structure/sign/safety/rewire{ - pixel_x = 32; - pixel_y = 17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/execution) "pNM" = ( /obj/structure/platform{ dir = 4 @@ -57716,6 +58088,16 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) +"pQI" = ( +/obj/structure/machinery/power/apc/almayer{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "pQN" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/franks, @@ -58748,6 +59130,12 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) +"qjK" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "qjL" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -58786,16 +59174,6 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"qkn" = ( -/obj/structure/machinery/power/apc/almayer{ - cell_type = /obj/item/cell/hyper; - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "qkP" = ( /obj/item/frame/light_fixture{ anchored = 1; @@ -58878,21 +59256,6 @@ icon_state = "cargo_arrow" }, /area/almayer/hallways/lower/repair_bay) -"qlS" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_x = -7; - pixel_y = 17 - }, -/obj/structure/sign/safety/cryo{ - pixel_x = 12; - pixel_y = 28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "qmh" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -58967,21 +59330,6 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/medical_science) -"qmC" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Brig"; - closeOtherId = "brigmaint_n" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "qmD" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -59235,17 +59583,6 @@ icon_state = "redcorner" }, /area/almayer/command/lifeboat) -"qqC" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Brig Lockdown Shutters"; - name = "\improper Brig Lockdown Shutter" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/main_office) "qqK" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -59276,10 +59613,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/s_stern) -"qqV" = ( -/obj/structure/machinery/cm_vending/clothing/military_police_warden, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/chief_mp_office) "qra" = ( /obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ @@ -59426,6 +59759,24 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) +"qvE" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "qvI" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -59869,6 +60220,16 @@ /obj/effect/landmark/start/captain, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/bridgebunks) +"qCA" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/sign/safety/rewire{ + pixel_y = -38 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/execution) "qCG" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -60118,6 +60479,9 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_a_s) +"qFX" = ( +/turf/closed/wall/almayer, +/area/almayer/shipboard/brig/mp_bunks) "qGc" = ( /turf/open/floor/almayer{ dir = 1; @@ -60641,9 +61005,6 @@ icon_state = "silverfull" }, /area/almayer/command/securestorage) -"qPO" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/shipboard/brig/surgery) "qPS" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -60872,6 +61233,26 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"qUG" = ( +/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 + }, +/obj/item/device/toner{ + pixel_y = -11; + pixel_x = -2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "qUL" = ( /obj/structure/machinery/landinglight/ds1/delaythree{ dir = 4 @@ -61295,22 +61676,6 @@ icon_state = "test_floor5" }, /area/almayer/hallways/lower/starboard_midship_hallway) -"rbi" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/box/ids{ - pixel_x = -6; - pixel_y = 8 - }, -/obj/item/device/flash, -/obj/structure/machinery/light{ - dir = 8; - invisibility = 101 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "rbp" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -61670,17 +62035,6 @@ icon_state = "emeraldcorner" }, /area/almayer/living/briefing) -"rhl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "rhm" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -61912,6 +62266,23 @@ /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, /area/almayer/living/gym) +"rkV" = ( +/obj/structure/window/framed/almayer/hull/hijack_bustable, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Warden Office Shutters"; + name = "\improper Privacy Shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" + }, +/turf/open/floor/plating, +/area/almayer/shipboard/brig/warden_office) "rlc" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -61988,18 +62359,15 @@ icon_state = "orangecorner" }, /area/almayer/engineering/upper_engineering/starboard) -"rmv" = ( -/obj/structure/machinery/door/airlock/almayer/security{ - dir = 2; - name = "\improper Interrogation Observation" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 +"rmk" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = 26 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 1; + icon_state = "red" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/shipboard/brig/starboard_hallway) "rmx" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/recharger, @@ -62160,15 +62528,6 @@ /obj/effect/landmark/start/executive, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/bridgebunks) -"rpF" = ( -/obj/structure/machinery/body_scanconsole{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "rpG" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -62395,6 +62754,23 @@ /obj/structure/machinery/light, /turf/open/floor/plating, /area/almayer/maint/lower/constr) +"rtc" = ( +/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 + }, +/obj/item/device/camera_film{ + pixel_x = -5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "rtd" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -62613,11 +62989,6 @@ icon_state = "silverfull" }, /area/almayer/command/computerlab) -"rxV" = ( -/obj/structure/barricade/handrail, -/obj/structure/largecrate/supply/generator, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering/port) "ryt" = ( /obj/structure/pipes/standard/manifold/visible, /turf/open/floor/almayer{ @@ -62663,15 +63034,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) -"rzY" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "rAb" = ( /turf/open/floor/almayer{ icon_state = "bluecorner" @@ -62741,20 +63103,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"rAX" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out" - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "rBa" = ( /obj/structure/machinery/cm_vending/clothing/synth, /obj/structure/prop/invuln/overhead_pipe{ @@ -62809,13 +63157,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"rBV" = ( -/obj/structure/bed/chair/bolted, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "rCh" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -62881,22 +63222,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) -"rCU" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - dir = 1; - name = "\improper Warden's Office"; - closeOtherId = "brigwarden" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/chief_mp_office) "rDb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -63008,20 +63333,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) -"rDY" = ( -/obj/item/stack/sheet/glass/reinforced{ - amount = 50 - }, -/obj/effect/spawner/random/toolbox, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/powercell, -/obj/structure/surface/rack, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/chief_mp_office) "rEd" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -63101,22 +63412,6 @@ icon_state = "silverfull" }, /area/almayer/command/computerlab) -"rEO" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) -"rEQ" = ( -/obj/structure/machinery/iv_drip, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "rEY" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -63465,39 +63760,6 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/briefing) -"rJN" = ( -/obj/structure/sign/safety/rewire{ - pixel_y = 32 - }, -/obj/item/bedsheet/brown{ - layer = 3.1 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/item/bedsheet/brown{ - pixel_y = 13 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "rJY" = ( /obj/item/book/manual/medical_diagnostics_manual, /obj/structure/surface/rack, @@ -63760,6 +64022,11 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"rPF" = ( +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "rPO" = ( /turf/open/floor/almayer{ dir = 10; @@ -63868,20 +64135,6 @@ "rRq" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/south2) -"rRr" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/surface/table/almayer, -/obj/item/toy/deck/uno, -/obj/item/toy/deck{ - pixel_x = -9 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "rRz" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -64058,16 +64311,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_f_p) -"rVm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) "rVt" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -64128,16 +64371,6 @@ "rWz" = ( /turf/open/floor/plating, /area/almayer/maint/upper/u_m_s) -"rWF" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 21 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/chief_mp_office) "rWL" = ( /obj/structure/barricade/metal, /turf/open/floor/almayer{ @@ -64189,6 +64422,25 @@ icon_state = "test_floor4" }, /area/almayer/living/gym) +"rXE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = -32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = -32 + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/execution) "rXF" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1 @@ -64871,10 +65123,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"sjc" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "sje" = ( /turf/open/floor/almayer/empty, /area/almayer/hallways/lower/vehiclehangar) @@ -64946,13 +65194,6 @@ icon_state = "plating_striped" }, /area/almayer/shipboard/sea_office) -"skq" = ( -/obj/structure/machinery/cm_vending/sorted/medical, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "skC" = ( /obj/structure/pipes/standard/simple/visible{ dir = 6 @@ -65104,23 +65345,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) -"smZ" = ( -/obj/structure/window/framed/almayer/hull/hijack_bustable, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutter" - }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/chief_mp_office) "snb" = ( /obj/structure/ladder{ height = 1; @@ -65476,15 +65700,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_p) -"ssD" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "ssF" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32; @@ -65594,25 +65809,6 @@ icon_state = "cargo" }, /area/almayer/hallways/lower/vehiclehangar) -"suc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - dir = 2; - name = "\improper Brig Armoury"; - req_access = null; - req_one_access_txt = "1;3"; - closeOtherId = "brignorth" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "suy" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -65713,13 +65909,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_m_s) -"swn" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/surgery) "swt" = ( /turf/open/floor/almayer{ icon_state = "greencorner" @@ -65859,6 +66048,20 @@ icon_state = "test_floor4" }, /area/almayer/living/offices) +"szG" = ( +/obj/item/stack/sheet/glass/reinforced{ + amount = 50 + }, +/obj/effect/spawner/random/toolbox, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/powercell, +/obj/structure/surface/rack, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/warden_office) "szM" = ( /obj/structure/flora/pottedplant{ desc = "It is made of Fiberbush(tm). It contains asbestos."; @@ -65880,12 +66083,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"szR" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "szU" = ( /obj/structure/toilet{ dir = 8 @@ -66081,17 +66278,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"sDV" = ( -/obj/structure/machinery/firealarm{ - pixel_y = -28 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "sEd" = ( /obj/structure/machinery/cryopod/right, /obj/structure/machinery/light{ @@ -66170,6 +66356,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_a_p) +"sEz" = ( +/turf/open/floor/almayer{ + allow_construction = 0 + }, +/area/almayer/shipboard/brig/starboard_hallway) "sEK" = ( /obj/effect/decal/warning_stripes{ icon_state = "E" @@ -66227,15 +66418,17 @@ icon_state = "cargo" }, /area/almayer/shipboard/starboard_missiles) -"sFC" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ +"sFu" = ( +/obj/structure/surface/table/almayer, +/obj/item/paper_bin/uscm{ + pixel_y = 7 + }, +/obj/item/tool/pen, +/turf/open/floor/almayer{ dir = 8; - id = "Interrogation Shutters"; - name = "\improper Privacy Shutters" + icon_state = "red" }, -/turf/open/floor/plating, -/area/almayer/shipboard/brig/main_office) +/area/almayer/shipboard/brig/starboard_hallway) "sGh" = ( /turf/open/floor/almayer/uscm/directional, /area/almayer/command/lifeboat) @@ -66388,10 +66581,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_m_s) -"sJm" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/chief_mp_office) "sJC" = ( /obj/structure/surface/table/almayer, /obj/item/trash/USCMtray{ @@ -67058,25 +67247,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"sYi" = ( -/obj/structure/machinery/door_control{ - id = "firearm_storage_armory"; - name = "Armory Lockdown"; - pixel_y = 24; - req_access_txt = "4" - }, -/obj/structure/sign/safety/ammunition{ - pixel_y = 32 - }, -/obj/structure/sign/safety/restrictedarea{ - pixel_x = 15; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "sYj" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -67087,6 +67257,15 @@ icon_state = "green" }, /area/almayer/hallways/upper/aft_hallway) +"sYl" = ( +/obj/structure/machinery/body_scanconsole{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "sYr" = ( /obj/structure/machinery/door/airlock/almayer/maint, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -67125,20 +67304,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"sYE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/status_display{ - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "sYP" = ( /obj/structure/reagent_dispensers/fueltank/custom, /turf/open/floor/almayer{ @@ -67245,12 +67410,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"tak" = ( -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "tan" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -67538,6 +67697,17 @@ icon_state = "red" }, /area/almayer/shipboard/brig/lobby) +"tfE" = ( +/obj/structure/surface/rack, +/obj/item/storage/firstaid/adv{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/storage/firstaid/regular, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution_storage) "tfH" = ( /obj/structure/machinery/light/containment, /obj/effect/decal/warning_stripes{ @@ -67551,6 +67721,21 @@ /obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_a_p) +"tfZ" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_x = -7; + pixel_y = 17 + }, +/obj/structure/sign/safety/cryo{ + pixel_x = 12; + pixel_y = 28 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "tge" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -67593,6 +67778,9 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/port_midship_hallway) +"tgJ" = ( +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/warden_office) "tgK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -68446,20 +68634,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_m_p) -"ttE" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper_bin{ - pixel_x = -7 - }, -/obj/item/tool/pen, -/obj/item/tool/pen{ - pixel_y = 3 - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "ttS" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_sn_full_cap" @@ -68612,6 +68786,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/u_a_s) +"tvJ" = ( +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "tvM" = ( /obj/structure/bed/chair{ dir = 1 @@ -68927,6 +69111,18 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"tBP" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/fancy/cigarettes/lucky_strikes, +/obj/item/tool/lighter, +/obj/item/clothing/glasses/sunglasses/blindfold, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/shipboard/brig/execution_storage) "tBU" = ( /obj/structure/platform, /obj/structure/largecrate/random/case/double{ @@ -69361,21 +69557,6 @@ icon_state = "mono" }, /area/almayer/hallways/upper/stern_hallway) -"tJM" = ( -/obj/structure/toilet{ - pixel_y = 13 - }, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/main_office) "tJN" = ( /obj/structure/machinery/cryopod/right{ layer = 3.1; @@ -69484,28 +69665,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower/workshop/hangar) -"tMH" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Warden's Office"; - closeOtherId = "brigwarden" - }, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 4; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "courtyard_cells"; - name = "\improper Courtyard Lockdown Shutter" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/chief_mp_office) "tMT" = ( /obj/item/tool/weldingtool, /obj/structure/surface/rack, @@ -69696,15 +69855,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cryo) -"tQm" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "tQA" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ dir = 1 @@ -69833,6 +69983,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/u_a_s) +"tTO" = ( +/obj/structure/machinery/photocopier, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "tUh" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -69849,6 +70006,17 @@ "tUx" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"tUK" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "tUN" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ access_modified = 1; @@ -70163,17 +70331,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/u_a_s) -"tZP" = ( -/obj/structure/surface/rack, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/port) "tZZ" = ( /obj/structure/machinery/cryopod, /obj/effect/decal/warning_stripes{ @@ -70538,6 +70695,17 @@ /obj/structure/machinery/cm_vending/sorted/marine_food, /turf/open/floor/almayer, /area/almayer/living/briefing) +"ugw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/starboard_hallway) "ugJ" = ( /obj/structure/largecrate/random/case/small, /obj/structure/largecrate/random/mini/small_case{ @@ -70549,11 +70717,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) -"ugT" = ( -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "ugZ" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ @@ -70595,6 +70758,12 @@ icon_state = "redfull" }, /area/almayer/hallways/lower/starboard_midship_hallway) +"uhA" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/starboard_hallway) "uhE" = ( /obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, /turf/open/floor/plating/plating_catwalk, @@ -70613,18 +70782,6 @@ icon_state = "cargo_arrow" }, /area/almayer/living/offices) -"uhW" = ( -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" - }, -/area/almayer/shipboard/brig/main_office) -"uif" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "uiC" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -71032,17 +71189,6 @@ "uqo" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) -"uqy" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - name = "\improper Brig Cells" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "uqA" = ( /obj/structure/machinery/firealarm{ dir = 8; @@ -71250,6 +71396,14 @@ }, /turf/open/floor/almayer, /area/almayer/squads/bravo) +"uun" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/starboard_hallway) "uuu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -71448,24 +71602,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"uwS" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ - dir = 2; - name = "\improper Brig Armoury"; - req_access = null; - req_one_access_txt = "1;3" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "uwZ" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -71600,6 +71736,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/ce_room) +"uzH" = ( +/obj/structure/machinery/door/airlock/almayer/medical/glass{ + name = "\improper Brig Medbay"; + req_access = null; + req_one_access = null; + req_one_access_txt = "20;3"; + closeOtherId = "brigmed" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/medical) "uAb" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out" @@ -72055,15 +72207,6 @@ icon_state = "outerhull_dir" }, /area/space) -"uJs" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "uJM" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -72141,6 +72284,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/shipboard/starboard_point_defense) +"uLE" = ( +/obj/structure/machinery/cm_vending/sorted/medical/blood, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "uLG" = ( /obj/structure/closet/crate/freezer{ desc = "A freezer crate. Someone has written 'open on christmas' in marker on the top." @@ -72443,15 +72593,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/port) -"uSB" = ( -/obj/structure/machinery/keycard_auth{ - pixel_x = 25 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/chief_mp_office) "uSH" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/reagent_dispensers/water_cooler{ @@ -72823,6 +72964,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_f_p) +"uXu" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + id = "Interrogation Shutters"; + name = "\improper Privacy Shutters" + }, +/obj/structure/machinery/door/airlock/almayer/security{ + dir = 2; + name = "\improper Interrogation" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/interrogation) "uXL" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -72977,6 +73134,9 @@ icon_state = "test_floor4" }, /area/almayer/medical/lower_medical_medbay) +"vaS" = ( +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/mp_bunks) "vaV" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -73255,15 +73415,6 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"vfw" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/main_office) "vfx" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -73384,19 +73535,6 @@ "vgO" = ( /turf/closed/wall/almayer/research/containment/wall/east, /area/almayer/medical/containment/cell) -"vgW" = ( -/obj/structure/sign/safety/security{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/restrictedarea{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "vhe" = ( /obj/structure/filingcabinet{ density = 0; @@ -73516,15 +73654,6 @@ allow_construction = 0 }, /area/almayer/command/airoom) -"viH" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/main_office) "viJ" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -73606,6 +73735,12 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/lower/workshop/hangar) +"vjB" = ( +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = 25 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/starboard_hallway) "vjC" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -73797,12 +73932,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"vlN" = ( -/obj/structure/pipes/vents/pump, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "vlO" = ( /obj/structure/window/reinforced{ dir = 4; @@ -74233,19 +74362,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"vsM" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/storage/firstaid/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/adv, -/obj/item/device/defibrillator, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/shipboard/brig/surgery) "vta" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -74284,15 +74400,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) -"vtD" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 26 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "vtG" = ( /obj/structure/toilet{ dir = 4 @@ -74535,6 +74642,22 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"vxh" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 2; + id = "Warden Office Shutters"; + name = "\improper Privacy Shutters" + }, +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + dir = 1; + name = "\improper Warden's Office"; + closeOtherId = "brigwarden" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/warden_office) "vxu" = ( /obj/structure/machinery/meter, /obj/structure/pipes/standard/simple/visible{ @@ -74679,6 +74802,19 @@ "vzp" = ( /turf/open/floor/almayer/research/containment/entrance, /area/almayer/medical/containment/cell/cl) +"vzy" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "redcorner" + }, +/area/almayer/shipboard/brig/starboard_hallway) "vzz" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; @@ -74813,9 +74949,6 @@ icon_state = "silver" }, /area/almayer/command/airoom) -"vBm" = ( -/turf/closed/wall/almayer/reinforced, -/area/almayer/shipboard/brig/main_office) "vBp" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -75090,6 +75223,12 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_f_p) +"vGn" = ( +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/interrogation) "vGA" = ( /obj/structure/bed/sofa/south/grey/right, /turf/open/floor/almayer{ @@ -75287,6 +75426,12 @@ }, /turf/open/floor/almayer, /area/almayer/command/cichallway) +"vJc" = ( +/turf/open/floor/almayer{ + dir = 4; + icon_state = "red" + }, +/area/almayer/shipboard/brig/warden_office) "vJg" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -75357,6 +75502,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) +"vKF" = ( +/obj/structure/machinery/cm_vending/sorted/medical, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/shipboard/brig/medical) "vKI" = ( /obj/structure/machinery/light{ dir = 1 @@ -75463,6 +75615,20 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"vMJ" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/security/glass{ + name = "\improper Brig Breakroom" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + layer = 1.9 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/mp_bunks) "vMM" = ( /obj/structure/machinery/light, /obj/effect/decal/cleanable/dirt, @@ -75501,6 +75667,16 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie) +"vNT" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/starboard_hallway) "vNW" = ( /turf/open/floor/almayer/uscm/directional{ dir = 9 @@ -75510,6 +75686,17 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north2) +"vOu" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/energy/taser, +/obj/item/weapon/gun/energy/taser{ + pixel_y = 8 + }, +/obj/structure/machinery/recharger, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/mp_bunks) "vOw" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -75939,6 +76126,12 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/command/lifeboat) +"vUI" = ( +/obj/structure/bed/chair/comfy/orange{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/warden_office) "vUJ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -76709,24 +76902,6 @@ icon_state = "plate" }, /area/almayer/engineering/lower/workshop) -"wfB" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "wfE" = ( /turf/closed/wall/almayer, /area/almayer/living/gym) @@ -76761,9 +76936,6 @@ icon_state = "plating" }, /area/almayer/shipboard/stern_point_defense) -"wgi" = ( -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/main_office) "wgk" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -76820,6 +76992,15 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"whQ" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null + }, +/obj/item/storage/donut_box{ + pixel_y = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/warden_office) "wid" = ( /turf/closed/wall/almayer/outer, /area/almayer/maint/hull/lower/p_bow) @@ -77074,22 +77255,27 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"wld" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out" +"wlg" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/door_control{ + id = "Interrogation Shutters"; + name = "\improper Shutters"; + pixel_x = -6; + pixel_y = -6; + req_access_txt = "3" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 +/obj/item/device/taperecorder{ + pixel_x = 3; + pixel_y = 3 }, -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = -32 +/obj/structure/machinery/light/small{ + dir = 8 }, -/obj/structure/sign/safety/hazard{ - pixel_y = -32 +/turf/open/floor/almayer{ + dir = 8; + icon_state = "red" }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/execution) +/area/almayer/shipboard/brig/interrogation) "wlh" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -77598,22 +77784,6 @@ icon_state = "mono" }, /area/almayer/medical/upper_medical) -"wuc" = ( -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - name = "\improper Brig Medbay"; - req_access = null; - req_one_access = null; - req_one_access_txt = "20;3"; - closeOtherId = "brigmed" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/surgery) "wud" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -77819,6 +77989,23 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_aft_hallway) +"wxF" = ( +/obj/structure/closet/secure_closet/cmdcabinet{ + desc = "A bulletproof cabinet containing communications equipment."; + name = "communications cabinet"; + pixel_y = 24; + req_access = null; + req_one_access_txt = "3" + }, +/obj/item/device/radio/listening_bug/radio_linked/mp{ + pixel_y = 8 + }, +/obj/item/device/radio/listening_bug/radio_linked/mp, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/shipboard/brig/warden_office) "wxU" = ( /obj/item/ashtray/bronze{ pixel_x = 7; @@ -78010,13 +78197,6 @@ icon_state = "red" }, /area/almayer/hallways/upper/starboard) -"wDp" = ( -/obj/structure/machinery/photocopier, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "wDq" = ( /obj/structure/largecrate/random/case/small, /obj/structure/machinery/light/small{ @@ -78183,6 +78363,9 @@ icon_state = "redfull" }, /area/almayer/command/cic) +"wFs" = ( +/turf/closed/wall/almayer, +/area/almayer/shipboard/brig/starboard_hallway) "wFz" = ( /obj/item/prop{ desc = "Predecessor to the M56 the M38 was known for its extreme reliability in the field. This particular M38D is fondly remembered for its stalwart defence of the hangar bay during the Arcturian commando raid of the USS Almayer on Io."; @@ -78206,6 +78389,12 @@ icon_state = "plate" }, /area/almayer/shipboard/panic) +"wFQ" = ( +/obj/structure/machinery/cm_vending/clothing/maintenance_technician, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/engineering/upper_engineering/port) "wFR" = ( /turf/open/floor/almayer, /area/almayer/living/gym) @@ -78295,17 +78484,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"wHM" = ( -/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ - name = "\improper Warden's Office" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/chief_mp_office) "wIr" = ( /obj/structure/machinery/cm_vending/clothing/senior_officer{ req_access = list(); @@ -78434,6 +78612,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/u_f_s) +"wKc" = ( +/obj/effect/decal/cleanable/vomit, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/engineering/upper_engineering/port) "wKm" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -78572,6 +78759,20 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) +"wLS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/brig/starboard_hallway) "wMl" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 8; @@ -78911,13 +79112,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_p) -"wSK" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/execution) "wSQ" = ( /turf/open/floor/almayer{ dir = 1; @@ -79028,14 +79222,6 @@ icon_state = "cargo" }, /area/almayer/engineering/lower/engine_core) -"wTJ" = ( -/obj/structure/barricade/handrail, -/obj/structure/barricade/handrail{ - dir = 4 - }, -/obj/structure/largecrate/random, -/turf/open/floor/almayer, -/area/almayer/engineering/upper_engineering/port) "wTM" = ( /turf/closed/wall/almayer/research/containment/wall/south, /area/almayer/medical/containment/cell) @@ -79097,6 +79283,13 @@ icon_state = "plate" }, /area/almayer/living/grunt_rnr) +"wVh" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/warden_office) "wVm" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -79240,6 +79433,12 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/u_a_p) +"wXz" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/starboard_hallway) "wXH" = ( /obj/structure/bed/chair{ dir = 1 @@ -79376,18 +79575,6 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) -"wZN" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/fancy/cigarettes/lucky_strikes, -/obj/item/tool/lighter, -/obj/item/clothing/glasses/sunglasses/blindfold, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/execution) "wZX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -79772,15 +79959,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/upper/aft_hallway) -"xgI" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - req_access = null - }, -/obj/item/storage/donut_box{ - pixel_y = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/chief_mp_office) "xgJ" = ( /obj/structure/machinery/light{ dir = 1 @@ -79849,12 +80027,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"xhE" = ( -/obj/structure/bed/chair/bolted{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/main_office) "xhO" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -79866,6 +80038,10 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"xhU" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/starboard_hallway) "xhW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -79968,23 +80144,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"xjG" = ( -/obj/structure/machinery/door_control{ - id = "Interrogation Shutters"; - name = "\improper Shutters"; - pixel_x = 24; - pixel_y = 12; - req_access_txt = "3" - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "xjI" = ( /turf/open/floor/almayer{ dir = 4; @@ -80137,11 +80296,6 @@ icon_state = "cargo" }, /area/almayer/medical/lower_medical_medbay) -"xmX" = ( -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/surgery) "xns" = ( /obj/structure/machinery/door_control{ id = "ARES JoeCryo"; @@ -80275,23 +80429,14 @@ icon_state = "blue" }, /area/almayer/hallways/lower/port_midship_hallway) -"xpo" = ( -/obj/structure/closet/secure_closet/cmdcabinet{ - desc = "A bulletproof cabinet containing communications equipment."; - name = "communications cabinet"; - pixel_y = 24; - req_access = null; - req_one_access_txt = "3" - }, -/obj/item/device/radio/listening_bug/radio_linked/mp{ - pixel_y = 8 +"xpw" = ( +/obj/structure/machinery/medical_pod/sleeper{ + dir = 8 }, -/obj/item/device/radio/listening_bug/radio_linked/mp, /turf/open/floor/almayer{ - dir = 5; - icon_state = "red" + icon_state = "dark_sterile" }, -/area/almayer/shipboard/brig/chief_mp_office) +/area/almayer/shipboard/brig/medical) "xpL" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -80337,12 +80482,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"xqs" = ( -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, -/area/almayer/shipboard/brig/chief_mp_office) "xqv" = ( /obj/structure/bed/sofa/south/white/right, /turf/open/floor/almayer{ @@ -80453,10 +80592,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/repair_bay) -"xsg" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/main_office) "xsl" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -80882,9 +81017,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/carpet, /area/almayer/living/commandbunks) -"xys" = ( -/turf/closed/wall/almayer, -/area/almayer/shipboard/brig/main_office) "xyt" = ( /obj/structure/surface/table/almayer, /obj/item/storage/toolbox/mechanical{ @@ -80929,6 +81061,9 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"xyN" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/shipboard/brig/execution_storage) "xyQ" = ( /turf/open/floor/almayer{ dir = 4; @@ -80976,30 +81111,9 @@ icon_state = "green" }, /area/almayer/hallways/lower/port_midship_hallway) -"xzO" = ( -/obj/structure/closet/secure_closet{ - name = "\improper Execution Firearms" - }, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/weapon/gun/rifle/m4ra, -/obj/item/ammo_box/magazine/m4ra, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/execution) "xAe" = ( /turf/closed/wall/almayer/research/containment/wall/corner, /area/almayer/medical/containment/cell) -"xAj" = ( -/obj/structure/bed/chair/bolted{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "xAt" = ( /obj/structure/bed/chair/comfy/charlie{ dir = 8 @@ -82173,11 +82287,6 @@ "xVk" = ( /turf/open/space, /area/space/almayer/lifeboat_dock) -"xVl" = ( -/turf/open/floor/almayer{ - allow_construction = 0 - }, -/area/almayer/shipboard/brig/main_office) "xVF" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -82351,16 +82460,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"xYS" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/pipes/standard/manifold/hidden/supply, -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "xYZ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -82572,16 +82671,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/lower/port_umbilical) -"ybU" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "ybZ" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/transmitter{ @@ -82750,15 +82839,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"yeu" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "yeH" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -82859,6 +82939,28 @@ icon_state = "silver" }, /area/almayer/maint/hull/upper/u_m_p) +"yfO" = ( +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + name = "\improper Warden's Office"; + closeOtherId = "brigwarden" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Warden Office Shutters"; + name = "\improper Privacy Shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 8 + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + dir = 4; + id = "courtyard_cells"; + name = "\improper Courtyard Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/warden_office) "yfS" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -82942,6 +83044,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_m_s) +"yhV" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/mp_bunks) "yhZ" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/maint/hull/lower/p_bow) @@ -83078,22 +83189,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/lower) -"ykP" = ( -/obj/structure/filingcabinet{ - density = 0; - pixel_x = -8; - pixel_y = 18 - }, -/obj/structure/filingcabinet{ - density = 0; - pixel_x = 8; - pixel_y = 18 - }, -/obj/item/device/taperecorder, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/shipboard/brig/main_office) "ykY" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -90561,13 +90656,13 @@ dhd oog jNT fag -jVP -feb -feb -feb -feb -feb +qCA feb +hRu +hRu +hRu +hRu +hRu ajZ aaa aaa @@ -90765,12 +90860,12 @@ nPb fZX dBS nSu -wld -mtl -jjm -wZN -kgQ -feb +rXE +xyN +ltO +tBP +tfE +hRu aag aaf ajY @@ -90969,11 +91064,11 @@ qVF xdJ kzr jqY -kBh -jNT -jNT -wSK -feb +elV +dJJ +dJJ +glP +hRu xiV xiV ajZ @@ -91172,11 +91267,11 @@ mtl mtl mtl ewI -mtl -xzO -pNk -jIH -mtl +xyN +hdQ +hUU +cXD +xyN igS xiV xiV @@ -91375,11 +91470,11 @@ tul mNK gtU bjk -mtl -mtl -mtl -mtl -mtl +xyN +xyN +xyN +xyN +xyN iuf pnh xiV @@ -91965,13 +92060,13 @@ uDg uDg gkr xkc -vBm -vBm -vBm -vBm -vBm -qmC -vBm +hvd +hvd +hvd +hvd +hvd +mze +eyD naB kry pHp @@ -92168,13 +92263,13 @@ uDg pOp gkr cth -vBm -rBV -oPk -mqo -vBm -eRL -puv +hvd +ddj +wlg +fuY +hvd +cQG +jXc naB pQr bsp @@ -92371,13 +92466,13 @@ uDg lDT xkc xyZ -vBm -ldu -wgi -wgi -ckS -eRL -sDV +hvd +vGn +ehl +ehl +uXu +cQG +alp naB naB naB @@ -92573,20 +92668,20 @@ aag uDg xkc gkr -vBm -vBm -sFC -sFC -sFC -vBm -lOI -pJv -jLM -btn -cMb -rbi -wDp -xys +hvd +hvd +iRp +iRp +iRp +hvd +cyc +vzy +fqQ +kHo +sFu +hnE +tTO +wFs nkX iQB cmv @@ -92776,20 +92871,20 @@ aag lrE xkc gkr -vBm -ykP -xAj -xhE -xhE -vBm -hKq -lwK -hrO -xsg -xsg -grF -xVl -uqy +hvd +iUX +gii +gIO +gIO +hvd +gYx +oyC +bKI +xhU +xhU +jCX +sEz +iNh wdF wdF wdF @@ -92979,20 +93074,20 @@ aag lrE gkr xkc -vBm -ykP -xjG -ssD -gcT -rmv -eRL -eRL -rhl -gcT -gcT -xVl -gcT -lxy +hvd +iUX +gJE +cKJ +hyV +keG +cQG +cQG +ugw +cwC +cwC +sEz +cwC +uun oRk oRk oRk @@ -93189,8 +93284,8 @@ lrq lrq lrq lrq -cxA -uwS +uhA +aaP tpn tpn srT @@ -93392,8 +93487,8 @@ cAy uhE vKB lrq -szR -cZj +vjB +gIz tpn eVR cak @@ -93595,8 +93690,8 @@ nqe nqe nqe tLa -eRL -igt +cQG +gfd tpn rqS cak @@ -93798,8 +93893,8 @@ pId qMD uqo lrq -sYi -sYE +nVm +dRA tpn gIU xIq @@ -94001,8 +94096,8 @@ nqe nqe nqe mza -eRL -wfB +cQG +qvE tpn tpn tpn @@ -94204,13 +94299,13 @@ fxJ fAr qmU lrq -hZU -cWs -fAE -kHa -frX -mHA -kHa +dmr +wLS +aVm +cmM +miy +iUG +cmM snX oIh oIh @@ -94407,13 +94502,13 @@ iwV iwV lrq lrq -gob -cWs -irF -kHa -rEQ -xmX -eGr +kXt +wLS +eBx +cmM +hAf +cNI +bbi wdF wdF wdF @@ -94610,13 +94705,13 @@ bvH evR cQv cQv -vtD -rAX -kHa -kHa -lRe -mvR -kHa +rmk +nuZ +cmM +cmM +pdT +otp +cmM tzd tzd sgi @@ -94813,13 +94908,13 @@ kde ajj mZQ cQv -vgW -igt -swn -rpF -tQm -ond -swn +dFl +tUK +kTp +sYl +fgt +kCY +kTp gHt oIh eNR @@ -95016,13 +95111,13 @@ quj vgi rXd cqJ -ldu -igt -swn -dfO -dQv -doj -swn +oJm +tUK +kTp +hUh +nWS +xpw +kTp neC mjt vqc @@ -95219,13 +95314,13 @@ lEe pGT pGT vkM -sjc -xYS -kHa -qPO -wuc -qPO -qPO +ksm +bxE +cmM +oeZ +uzH +oeZ +oeZ ptq oRk eNR @@ -95422,13 +95517,13 @@ vyH ajj rXd cqJ -ldu -igt -swn -plI -dQv -lNN -qPO +oJm +tUK +kTp +uLE +nWS +cTy +oeZ emp emp emp @@ -95625,13 +95720,13 @@ sBg uGN rXd cQv -gax -igt -swn -vsM -dQv -ebv -qPO +mAY +tUK +kTp +hoW +nWS +aIY +oeZ cFC oIh lUm @@ -95828,13 +95923,13 @@ kde ajj tuk cQv -rzY -igt -swn -skq -dQv -hhW -qPO +kYU +tUK +kTp +vKF +nWS +glG +oeZ ehX mTN hZJ @@ -96031,13 +96126,13 @@ ioV cQv tlk cQv -cxA -suc -qPO -qPO -wuc -qPO -qPO +uhA +bKN +oeZ +oeZ +uzH +oeZ +oeZ mFc eKa emp @@ -96051,12 +96146,12 @@ bQc pgP uVV iBl -wIC -smZ -smZ -wIC -tMH -wIC +cHk +rkV +rkV +cHk +yfO +cHk pRs pdp xiV @@ -96232,11 +96327,11 @@ rdM gUg cov cqJ -hNl -tak -uhW -uJs -tsX +may +hoK +mcp +hzG +eyD ngr cDN peO @@ -96254,12 +96349,12 @@ emp lFJ emp emp -wIC -puE -crp -dco -dqZ -wIC +cHk +hlI +ekZ +kvL +oix +cHk uxb oDh pdp @@ -96435,11 +96530,11 @@ vxM vxM vxM vxM -qlS -eRL -eRL -uJs -tsX +tfZ +cQG +cQG +hzG +eyD tdy cDN oFY @@ -96457,13 +96552,13 @@ qUz ksg oIh iTl -wIC -cBZ -hMc -vAG -jIo -wIC -wIC +cHk +frt +vUI +tgJ +wVh +cHk +cHk oDh pdp xiV @@ -96638,11 +96733,11 @@ kGu iqR fyp wJh -ldu -eRL -eRL -uJs -diP +oJm +cQG +cQG +hzG +asC tff cDN oFY @@ -96660,13 +96755,13 @@ oDy wsq vxK gwj -rCU -jPS -jPS -sJm -dqZ -rDY -wIC +vxh +csy +csy +bWQ +deH +szG +cHk pdp kIf xiV @@ -96841,11 +96936,11 @@ wee wee fRS wJh -yeu -sjc -rVm -mMZ -aDM +iFK +ksm +haY +kaQ +vNT oSC uFq wsl @@ -96863,13 +96958,13 @@ mBx utZ pyj jPP -wIC -xpo -xqs -rWF -uSB -lzY -wIC +cHk +wxF +vJc +kUg +ifz +fyI +cHk pdp ome xiV @@ -97044,11 +97139,11 @@ rDQ rDQ rDQ ctT -mLJ -bua -ybU -vBm -tsX +wXz +aNW +tvJ +eyD +eyD tsX tsX epu @@ -97069,10 +97164,10 @@ lnh wIC rWn rWn -wIC -wIC -wHM -wIC +cHk +cHk +gxt +cHk dJy aCA xiV @@ -97247,10 +97342,10 @@ sbP sbP sbP wJh -ekF -uif -vBm -vBm +oWK +jwr +eyD +eyD tHr mqg udR @@ -97273,9 +97368,9 @@ dgx fKi vxG wIC -xgI -dBQ -wIC +whQ +bHu +cHk oLf hIG xiV @@ -97450,9 +97545,9 @@ ncf kjk qxr wJh -ekF -ugT -qqC +oWK +rPF +pfd ceZ jnD hUW @@ -97476,9 +97571,9 @@ jPS jPS xrt wIC -qqV -nNg -wIC +aDt +jTU +cHk oDh xas xiV @@ -97653,9 +97748,9 @@ vxM vxM vxM gaJ -hmG -xys -vBm +vMJ +qFX +cAR vGA hUW dHd @@ -97679,9 +97774,9 @@ qFi vAG hsj wIC -wIC -wIC -wIC +cHk +cHk +cHk oDh nEc xiV @@ -97853,12 +97948,12 @@ xkc ode xkc gNg -vBm -tJM -viH -lCp -ttE -vBm +cAR +dRj +yhV +jvc +jEV +cAR iuE uwN vka @@ -98056,12 +98151,12 @@ cYo ode gkr gkr -vBm -vBm -vBm -vfw -occ -vBm +cAR +cAR +cAR +pKU +vOu +cAR udK mwA lnt @@ -98259,12 +98354,12 @@ akC akC uvp gkr -vBm -mvE -tak -lCp -iLo -vBm +cAR +pbm +qjK +jvc +dGT +cAR bmz wSR mMV @@ -98462,12 +98557,12 @@ bzz akC pzc gkr -vBm -qkn -eRL -lwK -vlN -vBm +cAR +pQI +gym +gSz +cNJ +cAR pZS pEB jUY @@ -98665,12 +98760,12 @@ aHZ akC lDT gkr -vBm -rJN -nJz -wgi -rEO -vBm +cAR +jgR +iAg +vaS +bsF +cAR vkR wsD jUY @@ -98868,12 +98963,12 @@ btv akC lCm gkr -vBm -vBm -knO -wgi -ugT -vBm +cAR +cAR +eLX +vaS +nCD +cAR kfE wsD jUY @@ -99072,11 +99167,11 @@ akC jdn lgk hMM -vBm -rRr -dFU -fnC -vBm +cAR +jlE +cXV +kqd +cAR xDn pEB jUY @@ -99275,11 +99370,11 @@ akC pek rir pek -vBm -hqU -gcT -oPp -vBm +cAR +gdG +kxP +mea +cAR nNv pEB jUY @@ -99478,11 +99573,11 @@ akC ibP loE cmr -vBm -vBm -vBm -vBm -vBm +cAR +cAR +cAR +cAR +cAR xSz pEB jUY @@ -111467,7 +111562,7 @@ jZY jZY sqf wpu -cGp +okO ajl ajl ajl @@ -125691,8 +125786,8 @@ hqx jhm oIB jgr -gGp -dMf +qUG +rtc oIB vmu kNq @@ -126908,7 +127003,7 @@ vkQ kzR oig oIB -opI +cHC dha pxj oIB @@ -131983,10 +132078,10 @@ pEd tbD xhi jWh -kUw -dod -eNv -rxV +wFQ +bop +vyI +jnp thV fCL uIv @@ -132186,11 +132281,11 @@ pEd tbD xhi jWh -tZP -hSk -hSk +bXy +bop +vyI +vyI vyI -thV fCL uIv hSk @@ -132389,10 +132484,10 @@ mQF rnO mQF jWh -nDL -vyI +wFQ +bop vyI -wTJ +wKc thV uWV uIv diff --git a/maps/shuttles/dropship_alamo.dmm b/maps/shuttles/dropship_alamo.dmm index 7ea59dbb1185..dd799ca7cd6e 100644 --- a/maps/shuttles/dropship_alamo.dmm +++ b/maps/shuttles/dropship_alamo.dmm @@ -18,14 +18,6 @@ /obj/structure/shuttle/part/dropship1/transparent/nose_center, /turf/template_noop, /area/shuttle/drop1/sulaco) -"bc" = ( -/obj/effect/attach_point/electronics/dropship1{ - dir = 1; - attach_id = 5 - }, -/obj/structure/shuttle/part/dropship1/transparent/inner_left_weapons, -/turf/template_noop, -/area/shuttle/drop1/sulaco) "be" = ( /obj/structure/shuttle/part/dropship1/transparent/upper_right_wing, /turf/template_noop, @@ -81,15 +73,6 @@ icon_state = "floor8" }, /area/shuttle/drop1/sulaco) -"ed" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ - dir = 1; - id = "starboard_door" - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop1/sulaco) "eD" = ( /obj/structure/shuttle/part/dropship1/transparent/engine_right_cap, /turf/template_noop, @@ -229,14 +212,6 @@ /obj/structure/shuttle/part/dropship1/transparent/left_outer_bottom_wing, /turf/template_noop, /area/shuttle/drop1/sulaco) -"sm" = ( -/obj/effect/attach_point/fuel/dropship1{ - attach_id = 10 - }, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "28" - }, -/area/shuttle/drop1/sulaco) "sA" = ( /obj/structure/shuttle/part/dropship1/lower_left_wall, /turf/template_noop, @@ -319,6 +294,14 @@ icon_state = "63" }, /area/shuttle/drop1/sulaco) +"BM" = ( +/obj/effect/attach_point/crew_weapon/dropship1/floor{ + attach_id = 9 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) "BS" = ( /turf/closed/shuttle/dropship1{ icon_state = "48" @@ -369,6 +352,15 @@ icon_state = "39" }, /area/shuttle/drop1/sulaco) +"GQ" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ + dir = 1; + id = "starboard_door" + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop1/sulaco) "Ho" = ( /obj/structure/machinery/computer/dropship_weapons/dropship1, /obj/structure/transmitter/rotary{ @@ -401,6 +393,23 @@ icon_state = "35" }, /area/shuttle/drop1/sulaco) +"Iu" = ( +/obj/effect/attach_point/fuel/dropship1{ + dir = 1; + pixel_x = -32 + }, +/turf/closed/shuttle/dropship1/transparent{ + icon_state = "33" + }, +/area/shuttle/drop1/sulaco) +"IP" = ( +/obj/effect/attach_point/electronics/dropship1{ + dir = 1; + attach_id = 6 + }, +/obj/structure/shuttle/part/dropship1/transparent/inner_right_weapons, +/turf/template_noop, +/area/shuttle/drop1/sulaco) "Jb" = ( /turf/closed/shuttle/dropship1/transparent{ icon_state = "80" @@ -415,16 +424,10 @@ icon_state = "62" }, /area/shuttle/drop1/sulaco) -"Kk" = ( -/obj/effect/attach_point/crew_weapon/dropship1/floor{ - attach_id = 7 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" +"Kt" = ( +/obj/structure/machinery/door/airlock/hatch/cockpit{ + dir = 1 }, -/area/shuttle/drop1/sulaco) -"KC" = ( -/obj/structure/machinery/door/airlock/hatch/cockpit, /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/shuttle/dropship{ icon_state = "rasputin15" @@ -449,23 +452,6 @@ icon_state = "64" }, /area/shuttle/drop1/sulaco) -"Nv" = ( -/obj/effect/attach_point/crew_weapon/dropship1/floor{ - attach_id = 8 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop1/sulaco) -"ND" = ( -/obj/effect/attach_point/fuel/dropship1{ - pixel_x = -32; - attach_id = 11 - }, -/turf/closed/shuttle/dropship1/transparent{ - icon_state = "33" - }, -/area/shuttle/drop1/sulaco) "NQ" = ( /obj/structure/shuttle/part/dropship1/transparent/left_inner_bottom_wing, /turf/template_noop, @@ -506,9 +492,9 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) -"PV" = ( +"PA" = ( /obj/effect/attach_point/crew_weapon/dropship1/floor{ - attach_id = 9 + attach_id = 7 }, /turf/open/shuttle/dropship{ icon_state = "rasputin15" @@ -598,6 +584,14 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) +"UN" = ( +/obj/effect/attach_point/electronics/dropship1{ + dir = 1; + attach_id = 5 + }, +/obj/structure/shuttle/part/dropship1/transparent/inner_left_weapons, +/turf/template_noop, +/area/shuttle/drop1/sulaco) "Vm" = ( /turf/closed/shuttle/dropship1/transparent{ icon_state = "78" @@ -634,7 +628,15 @@ icon_state = "rasputin7" }, /area/shuttle/drop1/sulaco) -"XP" = ( +"XH" = ( +/obj/effect/attach_point/fuel/dropship1{ + dir = 1 + }, +/turf/closed/shuttle/dropship1/transparent{ + icon_state = "28" + }, +/area/shuttle/drop1/sulaco) +"XI" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1{ id = "port_door"; dir = 2 @@ -643,13 +645,13 @@ icon_state = "rasputin15" }, /area/shuttle/drop1/sulaco) -"Ye" = ( -/obj/effect/attach_point/electronics/dropship1{ - dir = 1; - attach_id = 6 +"YV" = ( +/obj/effect/attach_point/crew_weapon/dropship1/floor{ + attach_id = 8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" }, -/obj/structure/shuttle/part/dropship1/transparent/inner_right_weapons, -/turf/template_noop, /area/shuttle/drop1/sulaco) "Za" = ( /turf/closed/shuttle/dropship1{ @@ -683,7 +685,7 @@ mb mb FA Oq -sm +XH iz EN mb @@ -700,7 +702,7 @@ Et iI JP il -XP +XI mW qn sA @@ -717,7 +719,7 @@ NQ mb mb mb -bc +UN oo TK ws @@ -787,7 +789,7 @@ ax EB Py tR -KC +Kt dU Ph BB @@ -796,11 +798,11 @@ BB OK OU il -Kk +PA il -Nv +YV il -PV +BM il mb mb @@ -855,7 +857,7 @@ Wg mb mb mb -Ye +IP oo TK cr @@ -884,7 +886,7 @@ iv zV MP il -ed +GQ nC nE rl @@ -913,7 +915,7 @@ mb mb eD Gw -ND +Iu qy Jm mb diff --git a/maps/shuttles/dropship_normandy.dmm b/maps/shuttles/dropship_normandy.dmm index 0cf629e638e1..969e5927d3f8 100644 --- a/maps/shuttles/dropship_normandy.dmm +++ b/maps/shuttles/dropship_normandy.dmm @@ -15,6 +15,16 @@ icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) +"ba" = ( +/obj/effect/attach_point/fuel/dropship2{ + dir = 1; + pixel_x = -32; + attach_id = 11 + }, +/turf/closed/shuttle/dropship2/transparent{ + icon_state = "33" + }, +/area/shuttle/drop2/sulaco) "bc" = ( /obj/structure/shuttle/part/dropship2/transparent/left_outer_bottom_wing, /turf/template_noop, @@ -36,6 +46,14 @@ /obj/structure/shuttle/part/dropship2/transparent/right_outer_bottom_wing, /turf/template_noop, /area/shuttle/drop2/sulaco) +"db" = ( +/obj/effect/attach_point/crew_weapon/dropship2/floor{ + attach_id = 7 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/drop2/sulaco) "eu" = ( /turf/closed/shuttle/dropship2{ icon_state = "75" @@ -51,6 +69,14 @@ icon_state = "29" }, /area/shuttle/drop2/sulaco) +"ft" = ( +/obj/effect/attach_point/crew_weapon/dropship2/floor{ + attach_id = 8 + }, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/shuttle/drop2/sulaco) "fx" = ( /turf/closed/shuttle/dropship2{ icon_state = "69" @@ -79,14 +105,6 @@ icon_state = "54" }, /area/shuttle/drop2/sulaco) -"gH" = ( -/obj/effect/attach_point/electronics/dropship2{ - dir = 1; - attach_id = 6 - }, -/obj/structure/shuttle/part/dropship2/transparent/inner_right_weapons, -/turf/template_noop, -/area/shuttle/drop2/sulaco) "gP" = ( /obj/structure/bed/chair/dropship/pilot{ dir = 1 @@ -95,12 +113,22 @@ icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) -"hn" = ( -/obj/effect/attach_point/crew_weapon/dropship2/floor{ - attach_id = 8 +"gV" = ( +/obj/effect/attach_point/fuel/dropship2{ + dir = 1; + attach_id = 10 + }, +/turf/closed/shuttle/dropship2/transparent{ + icon_state = "28" + }, +/area/shuttle/drop2/sulaco) +"he" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ + dir = 1; + id = "starboard_door" }, /turf/open/shuttle/dropship{ - icon_state = "rasputin3" + icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) "it" = ( @@ -151,6 +179,15 @@ icon_state = "26" }, /area/shuttle/drop2/sulaco) +"lj" = ( +/obj/structure/machinery/door/airlock/hatch/cockpit/two{ + dir = 1 + }, +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/shuttle/dropship{ + icon_state = "rasputin15" + }, +/area/shuttle/drop2/sulaco) "lz" = ( /obj/effect/attach_point/weapon/dropship2/right_fore, /obj/structure/shuttle/part/dropship2/transparent/outer_right_weapons, @@ -175,14 +212,6 @@ icon_state = "62" }, /area/shuttle/drop2/sulaco) -"mn" = ( -/obj/effect/attach_point/fuel/dropship2{ - attach_id = 10 - }, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "28" - }, -/area/shuttle/drop2/sulaco) "mz" = ( /obj/structure/machinery/camera/autoname/almayer/dropship_two{ dir = 4; @@ -200,15 +229,6 @@ icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) -"mA" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ - id = "port_door"; - dir = 2 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop2/sulaco) "nq" = ( /obj/effect/attach_point/weapon/dropship2/left_fore, /obj/structure/shuttle/part/dropship2/transparent/outer_left_weapons, @@ -267,18 +287,26 @@ /obj/structure/shuttle/part/dropship2/transparent/upper_left_wing, /turf/template_noop, /area/shuttle/drop2/sulaco) -"vd" = ( +"ut" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ + id = "port_door"; + dir = 2 + }, /turf/open/shuttle/dropship{ - icon_state = "rasputin3" + icon_state = "rasputin15" }, /area/shuttle/drop2/sulaco) -"vh" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{ - dir = 1; - id = "starboard_door" +"uC" = ( +/obj/effect/attach_point/crew_weapon/dropship2/floor{ + attach_id = 9 }, /turf/open/shuttle/dropship{ - icon_state = "rasputin15" + icon_state = "rasputin3" + }, +/area/shuttle/drop2/sulaco) +"vd" = ( +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" }, /area/shuttle/drop2/sulaco) "wX" = ( @@ -325,14 +353,6 @@ icon_state = "56" }, /area/shuttle/drop2/sulaco) -"Bg" = ( -/obj/effect/attach_point/crew_weapon/dropship2/floor{ - attach_id = 7 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, -/area/shuttle/drop2/sulaco) "Bi" = ( /turf/closed/shuttle/dropship2/transparent{ icon_state = "97" @@ -362,6 +382,14 @@ icon_state = "rasputin4" }, /area/shuttle/drop2/sulaco) +"Dq" = ( +/obj/effect/attach_point/electronics/dropship2{ + dir = 1; + attach_id = 6 + }, +/obj/structure/shuttle/part/dropship2/transparent/inner_right_weapons, +/turf/template_noop, +/area/shuttle/drop2/sulaco) "Dy" = ( /turf/closed/shuttle/dropship2/transparent{ icon_state = "35" @@ -477,14 +505,6 @@ /obj/structure/shuttle/part/dropship2/transparent/nose_top_left, /turf/template_noop, /area/shuttle/drop2/sulaco) -"MA" = ( -/obj/effect/attach_point/crew_weapon/dropship2/floor{ - attach_id = 9 - }, -/turf/open/shuttle/dropship{ - icon_state = "rasputin3" - }, -/area/shuttle/drop2/sulaco) "ME" = ( /turf/closed/shuttle/dropship2/transparent{ icon_state = "96" @@ -516,15 +536,6 @@ /obj/structure/shuttle/part/dropship2/left_outer_wing_connector, /turf/template_noop, /area/shuttle/drop2/sulaco) -"Od" = ( -/obj/effect/attach_point/fuel/dropship2{ - pixel_x = -32; - attach_id = 11 - }, -/turf/closed/shuttle/dropship2/transparent{ - icon_state = "33" - }, -/area/shuttle/drop2/sulaco) "Ov" = ( /obj/structure/shuttle/part/dropship2/transparent/right_inner_bottom_wing, /turf/template_noop, @@ -672,13 +683,6 @@ icon_state = "25" }, /area/shuttle/drop2/sulaco) -"VW" = ( -/obj/structure/machinery/door/airlock/hatch/cockpit/two, -/obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/shuttle/drop2/sulaco) "VZ" = ( /obj/item/device/radio/intercom/normandy{ layer = 3.5; @@ -715,7 +719,7 @@ Rr Rr BG SQ -mn +gV sk Xr Rr @@ -732,7 +736,7 @@ OI GE lJ PJ -mA +ut jc pU nS @@ -819,7 +823,7 @@ LY Bi MQ VZ -VW +lj GN bJ ZK @@ -828,11 +832,11 @@ Bb Iv rc vd -Bg +db vd -hn +ft vd -MA +uC PJ Rr Rr @@ -887,7 +891,7 @@ RJ Rr Rr Rr -gH +Dq yl SY it @@ -916,7 +920,7 @@ fI fx Tp PJ -vh +he gG RG QK @@ -945,7 +949,7 @@ Rr Rr yh UP -Od +ba zt Uu Rr diff --git a/maps/shuttles/escape_shuttle_e.dmm b/maps/shuttles/escape_shuttle_e.dmm index 0ba589df217e..65efffe43619 100644 --- a/maps/shuttles/escape_shuttle_e.dmm +++ b/maps/shuttles/escape_shuttle_e.dmm @@ -9,10 +9,10 @@ icon_state = "wall2" }, /area/shuttle/escape_pod) -"e" = ( -/obj/docking_port/mobile/crashable/escape_shuttle/e, -/turf/closed/shuttle/escapepod{ - icon_state = "wall9" +"f" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor0"; + dir = 8 }, /area/shuttle/escape_pod) "i" = ( @@ -53,10 +53,6 @@ icon_state = "wall13" }, /area/shuttle/escape_pod) -"z" = ( -/obj/structure/machinery/cryopod/evacuation, -/turf/open/shuttle/escapepod, -/area/shuttle/escape_pod) "E" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall10" @@ -67,16 +63,16 @@ icon_state = "wall11" }, /area/shuttle/escape_pod) -"L" = ( +"M" = ( /obj/structure/machinery/cryopod/evacuation, -/obj/structure/sign/safety/cryo{ - pixel_x = -18 +/turf/open/shuttle/escapepod{ + icon_state = "floor4" }, -/turf/open/shuttle/escapepod, /area/shuttle/escape_pod) -"N" = ( -/turf/open/shuttle/escapepod{ - icon_state = "floor10" +"O" = ( +/obj/docking_port/mobile/crashable/escape_shuttle/e, +/turf/closed/shuttle/escapepod{ + icon_state = "wall9" }, /area/shuttle/escape_pod) "Q" = ( @@ -87,6 +83,15 @@ icon_state = "floor0" }, /area/shuttle/escape_pod) +"T" = ( +/obj/structure/machinery/cryopod/evacuation, +/obj/structure/sign/safety/cryo{ + pixel_x = -18 + }, +/turf/open/shuttle/escapepod{ + icon_state = "floor4" + }, +/area/shuttle/escape_pod) "W" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall4" @@ -98,20 +103,20 @@ w t I E -e +O "} (2,1,1) = {" k -z -L -z +M +T +M s "} (3,1,1) = {" d Q o -N +f s "} (4,1,1) = {" diff --git a/maps/shuttles/escape_shuttle_e_cl.dmm b/maps/shuttles/escape_shuttle_e_cl.dmm index 490f0abdfa95..4b605503d7de 100644 --- a/maps/shuttles/escape_shuttle_e_cl.dmm +++ b/maps/shuttles/escape_shuttle_e_cl.dmm @@ -25,31 +25,24 @@ icon_state = "wall13" }, /area/shuttle/escape_pod) -"i" = ( -/obj/structure/machinery/cryopod/evacuation, -/obj/structure/sign/safety/cryo{ - pixel_x = -18 +"n" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor0"; + dir = 8 }, -/turf/open/shuttle/escapepod, /area/shuttle/escape_pod) "s" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall2" }, /area/shuttle/escape_pod) -"u" = ( +"z" = ( /obj/structure/machinery/cryopod/evacuation, -/turf/open/shuttle/escapepod, -/area/shuttle/escape_pod) -"v" = ( -/obj/structure/machinery/computer/shuttle/escape_pod_panel/liaison{ - pixel_y = 30 - }, /turf/open/shuttle/escapepod{ - icon_state = "floor0" + icon_state = "floor4" }, /area/shuttle/escape_pod) -"y" = ( +"D" = ( /obj/structure/machinery/door/airlock/evacuation/liaison{ name = "\improper Evacuation Airlock CL-1"; id_tag = "cl_evac" @@ -68,11 +61,6 @@ icon_state = "wall6" }, /area/shuttle/escape_pod) -"K" = ( -/turf/open/shuttle/escapepod{ - icon_state = "floor10" - }, -/area/shuttle/escape_pod) "O" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall4" @@ -88,11 +76,28 @@ icon_state = "wall12" }, /area/shuttle/escape_pod) +"T" = ( +/obj/structure/machinery/cryopod/evacuation, +/obj/structure/sign/safety/cryo{ + pixel_x = -18 + }, +/turf/open/shuttle/escapepod{ + icon_state = "floor4" + }, +/area/shuttle/escape_pod) "X" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall10" }, /area/shuttle/escape_pod) +"Z" = ( +/obj/structure/machinery/computer/shuttle/escape_pod_panel/liaison{ + pixel_y = 30 + }, +/turf/open/shuttle/escapepod{ + icon_state = "floor0" + }, +/area/shuttle/escape_pod) (1,1,1) = {" h @@ -103,22 +108,22 @@ a "} (2,1,1) = {" Q -u -i -u +z +T +z E "} (3,1,1) = {" s -v +Z b -K +n E "} (4,1,1) = {" g O O -y +D I "} diff --git a/maps/shuttles/escape_shuttle_n.dmm b/maps/shuttles/escape_shuttle_n.dmm index 71f8515daba8..a7a4e9a69252 100644 --- a/maps/shuttles/escape_shuttle_n.dmm +++ b/maps/shuttles/escape_shuttle_n.dmm @@ -1,23 +1,4 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/shuttle/escapepod{ - icon_state = "wall6" - }, -/area/shuttle/escape_pod) -"c" = ( -/obj/docking_port/mobile/crashable/escape_shuttle/n, -/turf/closed/shuttle/escapepod{ - icon_state = "wall9" - }, -/area/shuttle/escape_pod) -"f" = ( -/obj/structure/machinery/computer/shuttle/escape_pod_panel{ - pixel_y = 30 - }, -/turf/open/shuttle/escapepod{ - icon_state = "floor7" - }, -/area/shuttle/escape_pod) "g" = ( /turf/closed/shuttle/escapepod, /area/shuttle/escape_pod) @@ -26,11 +7,6 @@ icon_state = "wall1" }, /area/shuttle/escape_pod) -"j" = ( -/turf/open/shuttle/escapepod{ - icon_state = "floor9" - }, -/area/shuttle/escape_pod) "k" = ( /obj/structure/machinery/door/airlock/evacuation{ dir = 2; @@ -45,36 +21,64 @@ icon_state = "wall2" }, /area/shuttle/escape_pod) -"F" = ( -/turf/closed/shuttle/escapepod{ - icon_state = "wall3" +"n" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor0" }, /area/shuttle/escape_pod) -"H" = ( -/obj/structure/machinery/cryopod/evacuation, -/turf/open/shuttle/escapepod, +"p" = ( +/obj/structure/machinery/computer/shuttle/escape_pod_panel{ + pixel_y = 30 + }, +/turf/open/shuttle/escapepod{ + icon_state = "floor2" + }, /area/shuttle/escape_pod) -"L" = ( +"v" = ( +/obj/docking_port/mobile/crashable/escape_shuttle/n, /turf/closed/shuttle/escapepod{ - icon_state = "wall7" + icon_state = "wall9" }, /area/shuttle/escape_pod) -"Q" = ( -/turf/closed/shuttle/escapepod{ - icon_state = "wall11" +"x" = ( +/obj/structure/machinery/cryopod/evacuation, +/turf/open/shuttle/escapepod{ + icon_state = "floor4" }, /area/shuttle/escape_pod) -"V" = ( +"z" = ( /obj/structure/machinery/cryopod/evacuation, /obj/structure/sign/safety/cryo{ pixel_x = 8; pixel_y = -35 }, -/turf/open/shuttle/escapepod, +/turf/open/shuttle/escapepod{ + icon_state = "floor4" + }, /area/shuttle/escape_pod) -"W" = ( +"D" = ( /turf/open/shuttle/escapepod{ - icon_state = "floor8" + dir = 4 + }, +/area/shuttle/escape_pod) +"F" = ( +/turf/closed/shuttle/escapepod{ + icon_state = "wall3" + }, +/area/shuttle/escape_pod) +"K" = ( +/turf/closed/shuttle/escapepod{ + icon_state = "wall6" + }, +/area/shuttle/escape_pod) +"L" = ( +/turf/closed/shuttle/escapepod{ + icon_state = "wall7" + }, +/area/shuttle/escape_pod) +"Q" = ( +/turf/closed/shuttle/escapepod{ + icon_state = "wall11" }, /area/shuttle/escape_pod) "Y" = ( @@ -87,29 +91,29 @@ g Q Q -c +v "} (2,1,1) = {" i -f -H +p +x L "} (3,1,1) = {" k -W -V +D +z L "} (4,1,1) = {" l -j -H +n +x L "} (5,1,1) = {" F Y Y -a +K "} diff --git a/maps/shuttles/escape_shuttle_s.dmm b/maps/shuttles/escape_shuttle_s.dmm index 82391a5218d5..db3f602bdb5a 100644 --- a/maps/shuttles/escape_shuttle_s.dmm +++ b/maps/shuttles/escape_shuttle_s.dmm @@ -4,20 +4,29 @@ icon_state = "wall1" }, /area/shuttle/escape_pod) -"f" = ( +"c" = ( +/obj/structure/machinery/cryopod/evacuation, /turf/open/shuttle/escapepod{ - icon_state = "floor12" + icon_state = "floor4" }, /area/shuttle/escape_pod) -"g" = ( -/obj/structure/machinery/cryopod/evacuation, -/turf/open/shuttle/escapepod, -/area/shuttle/escape_pod) "n" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall2" }, /area/shuttle/escape_pod) +"o" = ( +/obj/docking_port/mobile/crashable/escape_shuttle/s, +/turf/closed/shuttle/escapepod{ + icon_state = "wall9" + }, +/area/shuttle/escape_pod) +"q" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor0"; + dir = 1 + }, +/area/shuttle/escape_pod) "v" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall15" @@ -33,11 +42,26 @@ icon_state = "wall6" }, /area/shuttle/escape_pod) +"B" = ( +/obj/structure/machinery/cryopod/evacuation, +/obj/structure/sign/safety/cryo{ + pixel_x = 8; + pixel_y = 28 + }, +/turf/open/shuttle/escapepod{ + icon_state = "floor4" + }, +/area/shuttle/escape_pod) "D" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall10" }, /area/shuttle/escape_pod) +"I" = ( +/turf/open/shuttle/escapepod{ + dir = 8 + }, +/area/shuttle/escape_pod) "J" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall14" @@ -48,9 +72,13 @@ icon_state = "wall4" }, /area/shuttle/escape_pod) -"P" = ( +"N" = ( +/obj/structure/machinery/computer/shuttle/escape_pod_panel{ + pixel_x = 30 + }, /turf/open/shuttle/escapepod{ - icon_state = "floor11" + icon_state = "floor0"; + dir = 8 }, /area/shuttle/escape_pod) "Q" = ( @@ -58,14 +86,6 @@ icon_state = "wall13" }, /area/shuttle/escape_pod) -"R" = ( -/obj/structure/machinery/computer/shuttle/escape_pod_panel{ - pixel_x = 30 - }, -/turf/open/shuttle/escapepod{ - icon_state = "floor2" - }, -/area/shuttle/escape_pod) "T" = ( /obj/structure/machinery/door/airlock/evacuation{ dir = 2; @@ -75,43 +95,29 @@ icon_state = "test_floor4" }, /area/shuttle/escape_pod) -"U" = ( -/obj/docking_port/mobile/crashable/escape_shuttle/s, -/turf/closed/shuttle/escapepod{ - icon_state = "wall9" - }, -/area/shuttle/escape_pod) -"V" = ( -/obj/structure/machinery/cryopod/evacuation, -/obj/structure/sign/safety/cryo{ - pixel_x = 8; - pixel_y = 28 - }, -/turf/open/shuttle/escapepod, -/area/shuttle/escape_pod) (1,1,1) = {" Q D D -U +o "} (2,1,1) = {" n -g -f +c +q v "} (3,1,1) = {" a -V -P +B +I T "} (4,1,1) = {" n -g -R +c +N J "} (5,1,1) = {" diff --git a/maps/shuttles/escape_shuttle_w.dmm b/maps/shuttles/escape_shuttle_w.dmm index 8f81c83b500b..b6b7452c798f 100644 --- a/maps/shuttles/escape_shuttle_w.dmm +++ b/maps/shuttles/escape_shuttle_w.dmm @@ -1,20 +1,25 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/obj/docking_port/mobile/crashable/escape_shuttle/w, -/turf/closed/shuttle/escapepod{ - icon_state = "wall9" - }, -/area/shuttle/escape_pod) "b" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall8" }, /area/shuttle/escape_pod) +"d" = ( +/turf/open/shuttle/escapepod{ + dir = 1 + }, +/area/shuttle/escape_pod) "e" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall6" }, /area/shuttle/escape_pod) +"g" = ( +/obj/docking_port/mobile/crashable/escape_shuttle/w, +/turf/closed/shuttle/escapepod{ + icon_state = "wall9" + }, +/area/shuttle/escape_pod) "j" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall7" @@ -30,6 +35,12 @@ icon_state = "wall2" }, /area/shuttle/escape_pod) +"r" = ( +/obj/structure/machinery/cryopod/evacuation, +/turf/open/shuttle/escapepod{ + icon_state = "floor4" + }, +/area/shuttle/escape_pod) "B" = ( /turf/closed/shuttle/escapepod{ icon_state = "wall10" @@ -45,21 +56,19 @@ icon_state = "wall4" }, /area/shuttle/escape_pod) -"H" = ( +"N" = ( +/obj/structure/machinery/computer/shuttle/escape_pod_panel{ + pixel_y = 30 + }, /turf/open/shuttle/escapepod{ - icon_state = "floor5" + icon_state = "floor2" }, /area/shuttle/escape_pod) -"I" = ( -/obj/structure/machinery/cryopod/evacuation, -/obj/structure/sign/safety/cryo{ - pixel_x = 36 +"O" = ( +/turf/open/shuttle/escapepod{ + icon_state = "floor0"; + dir = 1 }, -/turf/open/shuttle/escapepod, -/area/shuttle/escape_pod) -"M" = ( -/obj/structure/machinery/cryopod/evacuation, -/turf/open/shuttle/escapepod, /area/shuttle/escape_pod) "P" = ( /turf/closed/shuttle/escapepod{ @@ -74,39 +83,35 @@ icon_state = "test_floor4" }, /area/shuttle/escape_pod) -"V" = ( -/obj/structure/machinery/computer/shuttle/escape_pod_panel{ - pixel_y = 30 +"T" = ( +/obj/structure/machinery/cryopod/evacuation, +/obj/structure/sign/safety/cryo{ + pixel_x = 36 }, /turf/open/shuttle/escapepod{ icon_state = "floor4" }, /area/shuttle/escape_pod) -"W" = ( -/turf/open/shuttle/escapepod{ - icon_state = "floor12" - }, -/area/shuttle/escape_pod) (1,1,1) = {" P B S B -a +g "} (2,1,1) = {" F -V -H -W +N +d +O b "} (3,1,1) = {" p -M -I -M +r +T +r j "} (4,1,1) = {" diff --git a/tgui/docs/component-reference.md b/tgui/docs/component-reference.md index d814fc343a72..3789016447cc 100644 --- a/tgui/docs/component-reference.md +++ b/tgui/docs/component-reference.md @@ -250,6 +250,7 @@ A button with an extra confirmation step, using native button component. - See inherited props: [Button](#button) - `confirmContent: string` - Text to display after first click; defaults to "Confirm?" - `confirmColor: string` - Color to display after first click; defaults to "bad" +- `onConfirmChange: function` - Called when the clickedOnce state changes: When the element is clicked the first time or unfocused. ### `Button.Input` diff --git a/tgui/packages/common/ping.js b/tgui/packages/common/ping.js new file mode 100644 index 000000000000..e8f52882b6ae --- /dev/null +++ b/tgui/packages/common/ping.js @@ -0,0 +1,108 @@ +/** + * Adapted pinging library based on: + * @file https://www.jsdelivr.com/package/npm/ping.js + * @copyright 2021 Alfred Gutierrez + * @license MIT + */ + +/** + * Creates a Ping instance. + * @returns {Ping} + * @constructor + */ +export class Ping { + constructor(opt) { + this.opt = opt || {}; + this.favicon = this.opt.favicon || '/favicon.ico'; + this.timeout = this.opt.timeout || 10000; + this.logError = this.opt.logError || false; + this.abort = false; + } + + /** + * Pings source after a delay and triggers a callback when completed. + * @param source Source of the website or server, including protocol and port. + * @param callback Callback function to trigger when completed. Returns error and ping value. + * @param delay Optional number of milliseconds to wait before starting. + */ + ping(source, callback, delay = 1000) { + this.abort = false; + let timer; + if (delay > 0) { + timer = setTimeout(() => { + if (this.abort) { + return; + } + this.pingNow(source, callback); + }, delay); + return; + } + this.pingNow(source, callback); + } + + /** + * Pings source immediately and triggers a callback when completed. + * @param source Source of the website or server, including protocol and port. + * @param callback Callback function to trigger when completed. Returns error and ping value. + */ + pingNow(source, callback) { + let self = this; + self.abort = false; + self.wasSuccess = false; + self.img = new Image(); + self.img.onload = (e) => { + self.wasSuccess = true; + pingCheck.call(self, e); + }; + self.img.onerror = (e) => { + self.wasSuccess = false; + pingCheck.call(self, e); + }; + + let timer; + let start = new Date(); + + if (self.timeout) { + timer = setTimeout(() => { + self.wasSuccess = false; + pingCheck.call(self, undefined); + }, self.timeout); + } + + /** + * Times ping and triggers callback. + */ + const pingCheck = function (e) { + if (timer) { + clearTimeout(timer); + } + if (this.abort) { + return; + } + let pong = new Date() - start; + + if (typeof callback === 'function') { + // When operating in timeout mode, the timeout callback doesn't pass [event] as e. + // Notice [this] instead of [self], since .call() was used with context + if (!this.wasSuccess) { + if (self.logError) { + console.error('error loading resource: ' + e.error); + } + return callback(e ? 'Error' : 'Timed Out', pong); + } + return callback(null, pong); + } else { + throw new Error('Callback is not a function.'); + } + }; + + self.img.src = source + self.favicon + '?' + +new Date(); // Trigger image load with cache buster + } + + /** + * Aborts any pending ping request. + */ + cancel() { + this.abort = true; + } +} diff --git a/tgui/packages/tgui-panel/ping/PingIndicator.js b/tgui/packages/tgui-panel/ping/PingIndicator.js index b2355820e58a..4e64207d115c 100644 --- a/tgui/packages/tgui-panel/ping/PingIndicator.js +++ b/tgui/packages/tgui-panel/ping/PingIndicator.js @@ -6,11 +6,12 @@ import { Color } from 'common/color'; import { toFixed } from 'common/math'; -import { useSelector } from 'tgui/backend'; -import { Box } from 'tgui/components'; +import { useSelector, useBackend } from 'tgui/backend'; +import { Button, Box } from 'tgui/components'; import { selectPing } from './selectors'; export const PingIndicator = (props) => { + const { act } = useBackend(); const ping = useSelector(selectPing); const color = Color.lookup(ping.networkQuality, [ new Color(220, 40, 40), @@ -19,9 +20,19 @@ export const PingIndicator = (props) => { ]); const roundtrip = ping.roundtrip ? toFixed(ping.roundtrip) : '--'; return ( -
+
+ ); }; diff --git a/tgui/packages/tgui/components/Button.jsx b/tgui/packages/tgui/components/Button.jsx index 4264b0767115..dbffb6a72c95 100644 --- a/tgui/packages/tgui/components/Button.jsx +++ b/tgui/packages/tgui/components/Button.jsx @@ -172,6 +172,9 @@ export class ButtonConfirm extends Component { } else { window.removeEventListener('click', this.handleClick); } + if (this.props.onConfirmChange) { + this.props.onConfirmChange(clickedOnce); + } } render() { @@ -183,6 +186,7 @@ export class ButtonConfirm extends Component { color, content, onClick, + onConfirmChange, ...rest } = this.props; return ( diff --git a/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx b/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx index 2ae9a17fe35f..679b78efe843 100644 --- a/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx +++ b/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx @@ -3,9 +3,17 @@ import { Window } from '../layouts'; import { Box, Button, Flex, Icon, ProgressBar, Section, Stack } from '../components'; import { LaunchButton, CancelLaunchButton, DisabledScreen, InFlightCountdown, LaunchCountdown, NavigationProps, ShuttleRecharge, DockingPort } from './NavigationShuttle'; +const DoorStatusEnum = { + SHUTTLE_DOOR_BROKEN: -1, + SHUTTLE_DOOR_UNLOCKED: 0, + SHUTTLE_DOOR_LOCKED: 1, +} as const; + +type DoorStatusEnums = typeof DoorStatusEnum[keyof typeof DoorStatusEnum]; + interface DoorStatus { id: string; - value: 0 | 1; + value: DoorStatusEnums; } interface AutomatedControl { @@ -40,7 +48,7 @@ const DropshipDoorControl = () => { .filter((x) => x.id === 'all') .map((x) => ( <> - {x.value === 0 && ( + {x.value === DoorStatusEnum.SHUTTLE_DOOR_UNLOCKED && ( )} - {x.value === 1 && ( + {x.value === DoorStatusEnum.SHUTTLE_DOOR_LOCKED && ( + )} + {x.value === DoorStatusEnum.SHUTTLE_DOOR_UNLOCKED && ( )} - {x.value === 1 && ( + {x.value === DoorStatusEnum.SHUTTLE_DOOR_LOCKED && (