diff --git a/code/__DEFINES/client_prefs.dm b/code/__DEFINES/client_prefs.dm index b1e194354555..5337f64d9e46 100644 --- a/code/__DEFINES/client_prefs.dm +++ b/code/__DEFINES/client_prefs.dm @@ -1,6 +1,7 @@ #define BE_ALIEN_AFTER_DEATH (1<<0) #define BE_AGENT (1<<1) +//toggle_prefs bits from /datum/preferences #define TOGGLE_IGNORE_SELF (1<<0) // Determines whether you will not hurt yourself when clicking yourself #define TOGGLE_HELP_INTENT_SAFETY (1<<1) // Determines whether help intent will be completely harmless #define TOGGLE_MIDDLE_MOUSE_CLICK (1<<2) // This toggles whether selected ability for xeno uses middle mouse clicking or shift clicking @@ -13,7 +14,7 @@ // and put the empty magazine in your hand #define TOGGLE_AUTOMATIC_PUNCTUATION (1<<7) // Whether your sentences will automatically be punctuated with a period #define TOGGLE_COMBAT_CLICKDRAG_OVERRIDE (1<<8) // Whether disarm/harm intents cause clicks to trigger immediately when the mouse button is depressed. -#define TOGGLE_ALTERNATING_DUAL_WIELD (1<<9) // Whether dual-wielding fires both guns at once or swaps between them. +#define TOGGLE_ALTERNATING_DUAL_WIELD (1<<9) // Whether dual-wielding fires both guns at once or swaps between them, OUTDATED, used to update savefiles, now dual_wield_pref #define TOGGLE_FULLSCREEN (1<<10) // See /client/proc/toggle_fullscreen in client_procs.dm #define TOGGLE_MEMBER_PUBLIC (1<<11) //determines if you get a byond logo by your name in ooc if you're a member or not #define TOGGLE_OOC_FLAG (1<<12) // determines if your country flag appears by your name in ooc chat @@ -32,3 +33,11 @@ #define AGE_MIN 19 //youngest a character can be #define AGE_MAX 90 //oldest a character can be //no. you are not allowed to be 160. #define MAX_GEAR_COST 7 //Used in chargen for loadout limit. + +///dual_wield_pref from /datum/preferences +///Fire both weapons when dual wielding +#define DUAL_WIELD_FIRE 0 +///Swap to the other weapon when dual wielding +#define DUAL_WIELD_SWAP 1 +///Do nothing when dual wielding +#define DUAL_WIELD_NONE 2 diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm index d702d4097195..f0d64efb6dd7 100644 --- a/code/__DEFINES/configuration.dm +++ b/code/__DEFINES/configuration.dm @@ -8,3 +8,10 @@ //flags #define CONFIG_ENTRY_LOCKED (1<<0) //can't edit #define CONFIG_ENTRY_HIDDEN (1<<1) //can't see value + +#define ON_CONFIG_LOAD(type) \ +##type/New() { \ + . = ..(); \ + RegisterSignal(SSdcs, COMSIG_GLOB_CONFIG_LOADED, PROC_REF(__on_config_load)); \ +}; \ +##type/proc/__on_config_load() diff --git a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm index 9eff6fa3ddc8..bab6064cfdbf 100644 --- a/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm +++ b/code/__DEFINES/dcs/signals/atom/mob/signals_mob.dm @@ -111,6 +111,12 @@ #define COMSIG_GHOST_MOVED "ghost_moved" +/// When a mob is turned into a /mob/dead/observer at /mob/proc/ghostize() +#define COMSIG_MOB_GHOSTIZE "mob_ghostize" + +/// When a mob gets a new mind via transfer at /datum/mind/proc/transfer_to() +#define COMSIG_MOB_NEW_MIND "mob_new_mind" + #define COMSIG_MOB_MOUSEDOWN "mob_mousedown" //from /client/MouseDown(): (atom/object, turf/location, control, params) #define COMSIG_MOB_MOUSEUP "mob_mouseup" //from /client/MouseUp(): (atom/object, turf/location, control, params) #define COMSIG_MOB_MOUSEDRAG "mob_mousedrag" //from /client/MouseDrag(): (atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params) diff --git a/code/__DEFINES/dcs/signals/signals_client.dm b/code/__DEFINES/dcs/signals/signals_client.dm index 639721fae260..6733e0703514 100644 --- a/code/__DEFINES/dcs/signals/signals_client.dm +++ b/code/__DEFINES/dcs/signals/signals_client.dm @@ -21,3 +21,12 @@ /// Called after a client logs into a mob: (mob) #define COMSIG_CLIENT_MOB_LOGIN "client_mob_changed" + +/// 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" + +/// Called when something is removed from a client's screen : /client/proc/remove_from_screen(screen_remove) +#define COMSIG_CLIENT_SCREEN_REMOVE "client_screen_remove" + +/// When a mind is transfered to another mob at /datum/mind/proc/transfer_to() +#define COMSIG_CLIENT_MIND_TRANSFER "mind_transfer" diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm index e33a75aee132..032a1891a808 100644 --- a/code/__DEFINES/dcs/signals/signals_global.dm +++ b/code/__DEFINES/dcs/signals/signals_global.dm @@ -25,6 +25,8 @@ /// called after a successful var edit somewhere in the world: (list/args) #define COMSIG_GLOB_VAR_EDIT "!var_edit" +#define COMSIG_GLOB_CONFIG_LOADED "!config_loaded" + ///from /mob/living/carbon/xenomorph/initialize #define COMSIG_GLOB_XENO_SPAWN "!xeno_spawn" diff --git a/code/__DEFINES/emote_panels.dm b/code/__DEFINES/emote_panels.dm index 59959818da74..8419f5513cf0 100644 --- a/code/__DEFINES/emote_panels.dm +++ b/code/__DEFINES/emote_panels.dm @@ -6,7 +6,8 @@ #define JOE_EMOTE_CATEGORY_WARNING "Warning" #define JOE_EMOTE_CATEGORY_QUESTION "Question" #define JOE_EMOTE_CATEGORY_NOTICE "Notice" - +#define JOE_EMOTE_CATEGORY_FIRE "Fire" +#define JOE_EMOTE_CATEGORY_DAMAGE "Damage" #define YAUTJA_EMOTE_CATEGORY_FAKESOUND "Fake Sound" #define YAUTJA_EMOTE_CATEGORY_VOICE "Voice Synthesizer" #define YAUTJA_EMOTE_CATEGORY_SPECIES "Yautja" diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm index 210aee450406..82e91c5680b8 100644 --- a/code/__DEFINES/equipment.dm +++ b/code/__DEFINES/equipment.dm @@ -27,7 +27,7 @@ #define ITEM_UNCATCHABLE (1<<9) /// Used for nonstandard marine clothing to ignore 'specialty' var. #define NO_NAME_OVERRIDE (1<<10) -/// Used for armors or uniforms that don't have a snow icon state. +/// Used for armors or uniforms that don't have a snow/desert/etc icon state set via select_gamemode_skin (not all item types currently perform this test though). #define NO_SNOW_TYPE (1<<11) #define INVULNERABLE (1<<12) diff --git a/code/__DEFINES/guns.dm b/code/__DEFINES/guns.dm index b29f7c7439f2..2ea9d11ce43d 100644 --- a/code/__DEFINES/guns.dm +++ b/code/__DEFINES/guns.dm @@ -45,3 +45,15 @@ //autofire component fire callback return flags #define AUTOFIRE_CONTINUE (1<<0) #define AUTOFIRE_SUCCESS (1<<1) + +///Base CO special weapons options +#define CO_GUNS list(CO_GUN_MATEBA, CO_GUN_MATEBA_SPECIAL, CO_GUN_DEAGLE) + +///Council CO special weapons options +#define COUNCIL_CO_GUNS list(CO_GUN_MATEBA_COUNCIL, CO_GUN_DEAGLE_COUNCIL) + +#define CO_GUN_MATEBA "Mateba" +#define CO_GUN_MATEBA_SPECIAL "Mateba Special" +#define CO_GUN_DEAGLE "Desert Eagle" +#define CO_GUN_MATEBA_COUNCIL "Colonel's Mateba" +#define CO_GUN_DEAGLE_COUNCIL "Golden Desert Eagle" diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index 600f7d14b0aa..52263a5e1367 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -9,6 +9,7 @@ #define SQUAD_MARINE_4 "Delta" #define SQUAD_MARINE_5 "Echo" #define SQUAD_MARINE_CRYO "Foxtrot" +#define SQUAD_MARINE_INTEL "Intel" #define SQUAD_SOF "SOF" // Job name defines @@ -77,6 +78,8 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST #define JOB_DROPSHIP_CREW_CHIEF "Dropship Crew Chief" #define JOB_CREWMAN "Vehicle Crewman" #define JOB_INTEL "Intelligence Officer" +#define JOB_DROPSHIP_ROLES /datum/timelock/dropship +#define JOB_DROPSHIP_ROLES_LIST list(JOB_DROPSHIP_CREW_CHIEF, JOB_PILOT) #define JOB_AUXILIARY_ROLES /datum/timelock/auxiliary #define JOB_AUXILIARY_ROLES_LIST list(JOB_PILOT, JOB_DROPSHIP_CREW_CHIEF, JOB_CREWMAN, JOB_INTEL) @@ -257,7 +260,11 @@ var/global/list/job_command_roles = JOB_COMMAND_ROLES_LIST #define JOB_UPP_SRLT_OFFICER "UPP Senior Leytenant" #define JOB_UPP_KPT_OFFICER "UPP Kapitan" #define JOB_UPP_MAY_OFFICER "UPP Mayjor" +#define JOB_UPP_LTKOL_OFFICER "UPP Leytenant Kolonel" #define JOB_UPP_KOL_OFFICER "UPP Kolonel" +#define JOB_UPP_MAY_GENERAL "UPP Mayjor General" +#define JOB_UPP_LT_GENERAL "UPP Leytenant General" +#define JOB_UPP_GENERAL "UPP Army General" #define JOB_UPP_COMBAT_SYNTH "UPP Combat Synthetic" diff --git a/code/__DEFINES/keybinding.dm b/code/__DEFINES/keybinding.dm index 1878ca63f34e..b044e3426bc1 100644 --- a/code/__DEFINES/keybinding.dm +++ b/code/__DEFINES/keybinding.dm @@ -185,6 +185,7 @@ //misc yautja #define COMSIG_KB_YAUTJA_TELE_LOC "keybinding_yautja_tele_loc" +#define COMSIG_KB_YAUTJA_FOLD_COMBISTICK "keybinding_yautja_fold_combistick" #define COMSIG_KB_OBSERVER_JOIN_XENO "keybinding_observer_join_as_xeno" #define COMSIG_KB_OBSERVER_JOIN_ERT "keybinding_observer_join_ert" diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 8904c0295abf..c0ccd5164b0b 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -83,10 +83,15 @@ #define ABOVE_SPECIAL_RESIN_STRUCTURE_LAYER 3.01 +/// A layer above objects (like structures) but below items +#define BETWEEN_OBJECT_ITEM_LAYER 3.01 + +/// The layer on which items lay +#define ITEM_LAYER 3.02 /// for items that should be at the top of the pile of items -#define UPPER_ITEM_LAYER 3.01 +#define UPPER_ITEM_LAYER 3.03 /// just above all items -#define ABOVE_OBJ_LAYER 3.02 +#define ABOVE_OBJ_LAYER 3.04 #define BUSH_LAYER 3.05 diff --git a/code/__DEFINES/minimap.dm b/code/__DEFINES/minimap.dm index c9f21484f622..71d0ed8e7445 100644 --- a/code/__DEFINES/minimap.dm +++ b/code/__DEFINES/minimap.dm @@ -52,6 +52,7 @@ GLOBAL_LIST_INIT(all_minimap_flags, bitfield2list(MINIMAP_FLAG_ALL)) #define MINIMAP_SQUAD_ECHO "#00b043" #define MINIMAP_SQUAD_FOXTROT "#fe7b2e" #define MINIMAP_SQUAD_SOF "#400000" +#define MINIMAP_SQUAD_INTEL "#053818" #define MINIMAP_ICON_BACKGROUND_CIVILIAN "#7D4820" #define MINIMAP_ICON_BACKGROUND_CIC "#3f3f3f" diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index c0886ab871f9..1bd030313a43 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -310,6 +310,10 @@ // Queen strain flags #define QUEEN_NORMAL "Normal" +// Facehugger strain flags +#define FACEHUGGER_NORMAL "Normal" +#define FACEHUGGER_WATCHER "Watcher" + // Drone strain flags #define DRONE_NORMAL "Normal" #define DRONE_HEALER "Healer" diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index d13fd8169fca..b73b2a0d89af 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -121,7 +121,7 @@ var/global/list/ROLES_ENGINEERING = list(JOB_CHIEF_ENGINEER, JOB_ORDNANCE_TECH, var/global/list/ROLES_REQUISITION = list(JOB_CHIEF_REQUISITION, JOB_CARGO_TECH, JOB_WO_CHIEF_REQUISITION, JOB_WO_REQUISITION) var/global/list/ROLES_MEDICAL = list(JOB_CMO, JOB_RESEARCHER, JOB_DOCTOR, JOB_NURSE, JOB_WO_CMO, JOB_WO_RESEARCHER, JOB_WO_DOCTOR) var/global/list/ROLES_MARINES = list(JOB_SQUAD_LEADER, JOB_SQUAD_TEAM_LEADER, JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN, JOB_SQUAD_MEDIC, JOB_SQUAD_ENGI, JOB_SQUAD_MARINE) -var/global/list/ROLES_SQUAD_ALL = list(SQUAD_MARINE_1, SQUAD_MARINE_2, SQUAD_MARINE_3, SQUAD_MARINE_4, SQUAD_MARINE_5, SQUAD_MARINE_CRYO) +var/global/list/ROLES_SQUAD_ALL = list(SQUAD_MARINE_1, SQUAD_MARINE_2, SQUAD_MARINE_3, SQUAD_MARINE_4, SQUAD_MARINE_5, SQUAD_MARINE_CRYO, SQUAD_MARINE_INTEL) //Groundside roles var/global/list/ROLES_XENO = list(JOB_XENOMORPH_QUEEN, JOB_XENOMORPH) @@ -240,7 +240,7 @@ var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, #define FACTION_MONKEY "Monkey" // Nanu #define FACTION_LIST_MARINE list(FACTION_MARINE) -#define FACTION_LIST_HUMANOID list(FACTION_MARINE, FACTION_PMC, FACTION_WY, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_SURVIVOR, FACTION_NEUTRAL, FACTION_COLONIST, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_YAUTJA, FACTION_ZOMBIE) +#define FACTION_LIST_HUMANOID list(FACTION_MARINE, FACTION_PMC, FACTION_WY, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_SURVIVOR, FACTION_NEUTRAL, FACTION_COLONIST, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_YAUTJA, FACTION_ZOMBIE, FACTION_TWE) #define FACTION_LIST_ERT list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_MARSHAL, FACTION_TWE) #define FACTION_LIST_WY list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) #define FACTION_LIST_MARINE_WY list(FACTION_MARINE, FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 793e7b6b2f35..b40ae85c3f5f 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -102,6 +102,21 @@ }\ } while (0) +/// Will 100% nuke a trait regardless of source. Preferably use this as little as possible +#define REMOVE_TRAIT_ALLSOURCES(target, trait) \ + do { \ + var/list/_L = target.status_traits; \ + if (_L?[trait]) { \ + if (length(_L)) { \ + _L -= trait; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ + }; \ + else { \ + target.status_traits = null \ + }; \ + } \ + } while (0) + #define HAS_TRAIT(target, trait) (target.status_traits ? (target.status_traits[trait] ? TRUE : FALSE) : FALSE) #define HAS_TRAIT_FROM(target, trait, source) (target.status_traits ? (target.status_traits[trait] ? (source in target.status_traits[trait]) : FALSE) : FALSE) #define HAS_TRAIT_FROM_ONLY(target, trait, source) (\ @@ -179,6 +194,8 @@ #define TRAIT_HARDCORE "t_hardcore" /// If the mob is able to use the vulture rifle or spotting scope #define TRAIT_VULTURE_USER "t_vulture_user" +/// If the mob is cloaked in any form +#define TRAIT_CLOAKED "t_cloaked" // -- ability traits -- /// Xenos with this trait cannot have plasma transfered to them @@ -200,6 +217,10 @@ #define TRAIT_TOOL_SIMPLE_BLOWTORCH "t_tool_simple_blowtorch" #define TRAIT_TOOL_PEN "t_tool_pen" + +/// Can lockout blackmarket from ASRS console circuits. +#define TRAIT_TOOL_TRADEBAND "t_tool_tradeband" + // CLOTHING TRAITS #define TRAIT_CLOTHING_HOOD "t_clothing_hood" @@ -278,6 +299,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_LISPING" = TRAIT_LISPING, "TRAIT_CANNOT_EAT" = TRAIT_CANNOT_EAT, "TRAIT_VULTURE_USER" = TRAIT_VULTURE_USER, + "TRAIT_CLOAKED" = TRAIT_CLOAKED, ), /mob/living/carbon/xenomorph = list( "TRAIT_ABILITY_NO_PLASMA_TRANSFER" = TRAIT_ABILITY_NO_PLASMA_TRANSFER, diff --git a/code/__DEFINES/urls.dm b/code/__DEFINES/urls.dm index 4d9268220f2b..137095327a2c 100644 --- a/code/__DEFINES/urls.dm +++ b/code/__DEFINES/urls.dm @@ -1,61 +1,7 @@ -// ------ CHANGE LOG ------ // -#define URL_CHANGELOG "https://cm-ss13.com/changelog" - -// ------ ISSUE TRACKER ------ // -#define URL_ISSUE_TRACKER "https://github.com/cmss13-devs/cmss13/issues" - // ------ MISC WIKI LINKS ------ // -#define URL_WIKI_RULES "https://cm-ss13.com/wiki/Rules" -#define URL_WIKI_LANDING "https://cm-ss13.com/wiki/Main_Page" -#define URL_WIKI_COC "https://cm-ss13.com/wiki/Rank" -#define URL_WIKI_LAW "https://cm-ss13.com/wiki/Marine_Law" -#define URL_WIKI_XENO_QUICKSTART "https://cm-ss13.com/wiki/Xeno_Quickstart_Guide" -#define URL_WIKI_MARINE_QUICKSTART "https://cm-ss13.com/wiki/Marine_Quickstart_Guide" -#define URL_WIKI_MACROS "https://cm-ss13.com/wiki/Macros" -#define URL_WIKI_SOP "https://cm-ss13.com/wiki/Standard_Operating_Procedure" -#define URL_WIKI_CO_RULES "https://cm-ss13.com/wiki/CO_Council_Rulings" -#define URL_WIKI_CONSTRUCTION "https://cm-ss13.com/wiki/Guide_to_construction" -#define URL_WIKI_ENGINEERING "https://cm-ss13.com/wiki/Guide_to_Engineering" -#define URL_WIKI_HACKING "https://cm-ss13.com/wiki/Guide_to_Engineering#Hacking" -#define URL_WIKI_SURGERY "https://cm-ss13.com/wiki/Surgery" -#define URL_WIKI_MEDICAL "https://cm-ss13.com/wiki/Guide_to_Medicine" - -// ------ SPAWN GUIDES------ // -#define URL_WIKI_CO_GUIDE "https://cm-ss13.com/wiki/Commanding_Officer" // Command // -#define URL_WIKI_XO_GUIDE "https://cm-ss13.com/wiki/Executive_Officer" -#define URL_WIKI_SO_GUIDE "https://cm-ss13.com/wiki/Staff_Officer" -#define URL_WIKI_SEA_GUIDE "https://cm-ss13.com/wiki/Senior_Enlisted_Advisor" -#define URL_WIKI_SL_GUIDE "https://cm-ss13.com/wiki/Squad_Leader" -#define URL_WIKI_TL_GUIDE "https://cm-ss13.com/wiki/Squad_Radio_Telephone_Operator" // Squad Roles // -#define URL_WIKI_SPEC_GUIDE "https://cm-ss13.com/wiki/Squad_Specialist" -#define URL_WIKI_SG_GUIDE "https://cm-ss13.com/wiki/Squad_Smartgunner" -#define URL_WIKI_MEDIC_GUIDE "https://cm-ss13.com/wiki/Squad_Hospital_Corpsman" -#define URL_WIKI_COMTECH_GUIDE "https://cm-ss13.com/wiki/Squad_Combat_Technician" -#define URL_WIKI_CMP_GUIDE "https://cm-ss13.com/wiki/Chief_MP" // MP Roles // -#define URL_WIKI_MW_GUIDE "https://cm-ss13.com/wiki/Warden" -#define URL_WIKI_MP_GUIDE "https://cm-ss13.com/wiki/Military_Police" -#define URL_WIKI_ASO_GUIDE "https://cm-ss13.com/wiki/Auxiliary_Support_Officer" // Auxiliary Support -#define URL_WIKI_PO_GUIDE "https://cm-ss13.com/wiki/Pilot_Officer" -#define URL_WIKI_DCC_GUIDE "https://cm-ss13.com/wiki/Dropship_Crew_Chief" -#define URL_WIKI_IO_GUIDE "https://cm-ss13.com/wiki/Intelligence_Officer" -#define URL_WIKI_SYN_GUIDE "https://cm-ss13.com/wiki/Synthetic" -#define URL_WIKI_CE_GUIDE "https://cm-ss13.com/wiki/Chief_Engineer" // Engineering -#define URL_WIKI_OT_GUIDE "https://cm-ss13.com/wiki/Ordnance_Technician" -#define URL_WIKI_MT_GUIDE "https://cm-ss13.com/wiki/Maintenance_Technician" -#define URL_WIKI_CMO_GUIDE "https://cm-ss13.com/wiki/Chief_Medical_Officer" // Medical // -#define URL_WIKI_DOC_GUIDE "https://cm-ss13.com/wiki/Doctor" -#define URL_WIKI_NURSE_GUIDE "https://cm-ss13.com/wiki/Nurse" -#define URL_WIKI_RSR_GUIDE "https://cm-ss13.com/wiki/Researcher" -#define URL_WIKI_RO_GUIDE "https://cm-ss13.com/wiki/Requisitions_Officer" // Supply // -#define URL_WIKI_CT_GUIDE "https://cm-ss13.com/wiki/Cargo_Technician" -#define URL_WIKI_MST_GUIDE "https://cm-ss13.com/wiki/Mess_Technician" -#define URL_WIKI_CL_GUIDE "https://cm-ss13.com/wiki/Corporate_Liaison" // Misc // -#define URL_WIKI_SURV_GUIDE "https://cm-ss13.com/wiki/Survivor" -#define URL_WIKI_WJ_GUIDE "https://cm-ss13.com/wiki/Seegson_Working_Joe_Manual" - -// ------ FORUM LINKS ------ // -#define URL_FORUM "https://forum.cm-ss13.com/" -#define URL_FORUM_APPEALS "https://forum.cm-ss13.com/w/in-game-appeal" -#define URL_FORUM_PLAYER_REPORT "https://forum.cm-ss13.com/w/player-report" -#define URL_FORUM_STAFF_REPORT "https://forum.cm-ss13.com/w/staff-report" -#define URL_QUEEN_GUIDE "https://cm-ss13.com/forums/showthread.php?8404-Ultimate-Queen-Guide-Rip-amp-amp-Tear-(Image-Heavy)" +#define URL_WIKI_LAW "Marine_Law" +#define URL_WIKI_XENO_QUICKSTART "Xeno_Quickstart_Guide" +#define URL_WIKI_MARINE_QUICKSTART "Marine_Quickstart_Guide" +#define URL_WIKI_MACROS "Macros" +#define URL_WIKI_SOP "Standard_Operating_Procedure" +#define URL_WIKI_CO_RULES "CO_Council_Rulings" diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 66ecf9ea034f..8d6fb4266776 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -294,6 +294,8 @@ if(sorted && length(candidates)) candidates = sort_list(candidates, GLOBAL_PROC_REF(cmp_obs_larvaqueuetime_asc)) + GLOB.xeno_queue_candidate_count = length(candidates) + return candidates /** diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 6c689e995504..646b8ec2c854 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -27,3 +27,6 @@ GLOBAL_VAR_INIT(time_offset, setup_offset()) /// Sets the offset 2 lines above. /proc/setup_offset() return rand(10 MINUTES, 24 HOURS) + +/// The last count of possible candidates in the xeno larva queue (updated via get_alien_candidates) +GLOBAL_VAR(xeno_queue_candidate_count) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 86390718b6ca..3b8ba26c07e9 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -357,7 +357,7 @@ /client/proc/create_clickcatcher() if(!void) void = new() - screen += void + add_to_screen(void) /client/proc/apply_clickcatcher() create_clickcatcher() diff --git a/code/_onclick/hud/alien.dm b/code/_onclick/hud/alien.dm index a53e82730732..d1421cb7295d 100644 --- a/code/_onclick/hud/alien.dm +++ b/code/_onclick/hud/alien.dm @@ -64,10 +64,10 @@ var/mob/living/carbon/xenomorph/H = mymob if(hud_version != HUD_STYLE_NOHUD) if(H.r_hand) - H.client.screen += H.r_hand + H.client.add_to_screen(H.r_hand) H.r_hand.screen_loc = ui_alien_datum.hud_slot_offset(H.r_hand, ui_alien_datum.ui_rhand) if(H.l_hand) - H.client.screen += H.l_hand + H.client.add_to_screen(H.l_hand) H.l_hand.screen_loc = ui_alien_datum.hud_slot_offset(H.l_hand, ui_alien_datum.ui_lhand) else if(H.r_hand) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index fec62c35317f..0bd2206091ba 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -17,7 +17,7 @@ screen.severity = severity if (client && screen.should_show_to(src)) screen.update_for_view(client.view) - client.screen += screen + client.add_to_screen(screen) return screen @@ -33,12 +33,12 @@ addtimer(CALLBACK(src, PROC_REF(clear_fullscreen_after_animate), screen), animated, TIMER_CLIENT_TIME) else if(client) - client.screen -= screen + client.remove_from_screen(screen) qdel(screen) /mob/proc/clear_fullscreen_after_animate(atom/movable/screen/fullscreen/screen) if(client) - client.screen -= screen + client.remove_from_screen(screen) qdel(screen) /mob/proc/clear_fullscreens() @@ -48,7 +48,7 @@ /mob/proc/hide_fullscreens() if(client) for(var/category in fullscreens) - client.screen -= fullscreens[category] + client.remove_from_screen(fullscreens[category]) /mob/proc/reload_fullscreens() if(client) @@ -57,9 +57,9 @@ screen = fullscreens[category] if(screen.should_show_to(src)) screen.update_for_view(client.view) - client.screen |= screen + client.add_to_screen(screen) else - client.screen -= screen + client.remove_from_screen(screen) /atom/movable/screen/fullscreen diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 8a3f7d9d6a31..a6754747a019 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -72,7 +72,7 @@ /datum/hud/ghost/show_hud(version = 0, mob/viewmob) // don't show this HUD if observing; show the HUD of the observee var/mob/dead/observer/O = mymob - if (istype(O) && O.observetarget) + if (istype(O) && O.observe_target_mob) plane_masters_update() return FALSE @@ -82,6 +82,6 @@ var/mob/screenmob = viewmob || mymob if(!hud_shown) - screenmob.client.screen -= static_inventory + screenmob.client.remove_from_screen(static_inventory) else - screenmob.client.screen += static_inventory + screenmob.client.add_to_screen(static_inventory) diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 392f3ae9a060..215e228fdd9d 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -189,43 +189,43 @@ if(HUD_STYLE_STANDARD) //Default HUD hud_shown = 1 //Governs behavior of other procs if(static_inventory.len) - screenmob.client.screen += static_inventory + screenmob.client.add_to_screen(static_inventory) if(toggleable_inventory.len && inventory_shown) - screenmob.client.screen += toggleable_inventory + screenmob.client.add_to_screen(toggleable_inventory) if(hotkeybuttons.len && !hotkey_ui_hidden) - screenmob.client.screen += hotkeybuttons + screenmob.client.add_to_screen(hotkeybuttons) if(infodisplay.len) - screenmob.client.screen += infodisplay + screenmob.client.add_to_screen(infodisplay) if(HUD_STYLE_REDUCED) //Reduced HUD hud_shown = 0 //Governs behavior of other procs if(static_inventory.len) - screenmob.client.screen -= static_inventory + screenmob.client.remove_from_screen(static_inventory) if(toggleable_inventory.len) - screenmob.client.screen -= toggleable_inventory + screenmob.client.remove_from_screen(toggleable_inventory) if(hotkeybuttons.len) - screenmob.client.screen -= hotkeybuttons + screenmob.client.remove_from_screen(hotkeybuttons) if(infodisplay.len) - screenmob.client.screen += infodisplay + screenmob.client.add_to_screen(infodisplay) //These ones are a part of 'static_inventory', 'toggleable_inventory' or 'hotkeybuttons' but we want them to stay if(l_hand_hud_object) - screenmob.client.screen += l_hand_hud_object //we want the hands to be visible + screenmob.client.add_to_screen(l_hand_hud_object) //we want the hands to be visible if(r_hand_hud_object) - screenmob.client.screen += r_hand_hud_object //we want the hands to be visible + screenmob.client.add_to_screen(r_hand_hud_object) //we want the hands to be visible if(action_intent) - screenmob.client.screen += action_intent //we want the intent switcher visible + screenmob.client.add_to_screen(action_intent) //we want the intent switcher visible if(HUD_STYLE_NOHUD) //No HUD hud_shown = 0 //Governs behavior of other procs if(static_inventory.len) - screenmob.client.screen -= static_inventory + screenmob.client.remove_from_screen(static_inventory) if(toggleable_inventory.len) - screenmob.client.screen -= toggleable_inventory + screenmob.client.remove_from_screen(toggleable_inventory) if(hotkeybuttons.len) - screenmob.client.screen -= hotkeybuttons + screenmob.client.remove_from_screen(hotkeybuttons) if(infodisplay.len) - screenmob.client.screen -= infodisplay + screenmob.client.remove_from_screen(infodisplay) hud_version = display_hud_version persistent_inventory_update(screenmob) @@ -247,7 +247,7 @@ for(var/thing in plane_masters) var/atom/movable/screen/plane_master/PM = plane_masters[thing] PM.backdrop(mymob) - mymob.client.screen += PM + mymob.client.add_to_screen(PM) /datum/hud/human/show_hud(version = 0, mob/viewmob) . = ..() @@ -412,7 +412,7 @@ if(!hud_shown) for(var/category in alerts) var/atom/movable/screen/alert/alert = alerts[category] - screenmob.client.screen -= alert + screenmob.client.remove_from_screen(alert) return TRUE var/c = 0 for(var/category in alerts) @@ -432,8 +432,18 @@ else . = "" alert.screen_loc = . - screenmob.client.screen |= alert + screenmob.client.add_to_screen(alert) if(!viewmob) for(var/obs in mymob.observers) reorganize_alerts(obs) return TRUE + +/// Wrapper for adding anything to a client's screen +/client/proc/add_to_screen(screen_add) + screen += screen_add + SEND_SIGNAL(src, COMSIG_CLIENT_SCREEN_ADD, screen_add) + +/// Wrapper for removing anything from a client's screen +/client/proc/remove_from_screen(screen_remove) + screen -= screen_remove + SEND_SIGNAL(src, COMSIG_CLIENT_SCREEN_REMOVE, screen_remove) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 6cf43dc343b7..d514bdedfcdf 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -105,10 +105,10 @@ set desc = "This disables or enables the user interface buttons which can be used with hotkeys." if(hud_used.hotkey_ui_hidden) - client.screen += hud_used.hotkeybuttons + client.add_to_screen(hud_used.hotkeybuttons) hud_used.hotkey_ui_hidden = 0 else - client.screen -= hud_used.hotkeybuttons + client.remove_from_screen(hud_used.hotkeybuttons) hud_used.hotkey_ui_hidden = TRUE /datum/hud/human/hidden_inventory_update(mob/viewer) @@ -120,53 +120,57 @@ inventory_shown = FALSE return //species without inv slots don't show items. - if(screenmob.hud_used.inventory_shown && screenmob.hud_used.hud_shown) + if(H.hud_used.inventory_shown && H.hud_used.hud_shown) if(H.shoes) H.shoes.screen_loc = ui_datum.ui_shoes - screenmob.client.screen += H.shoes + screenmob.client.add_to_screen(H.shoes) if(H.gloves) H.gloves.screen_loc = ui_datum.ui_gloves - screenmob.client.screen += H.gloves + screenmob.client.add_to_screen(H.gloves) if(H.wear_l_ear) H.wear_l_ear.screen_loc = ui_datum.ui_wear_l_ear - screenmob.client.screen += H.wear_l_ear + screenmob.client.add_to_screen(H.wear_l_ear) if(H.wear_r_ear) H.wear_r_ear.screen_loc = ui_datum.ui_wear_r_ear - screenmob.client.screen += H.wear_r_ear + screenmob.client.add_to_screen(H.wear_r_ear) if(H.glasses) H.glasses.screen_loc = ui_datum.ui_glasses - screenmob.client.screen += H.glasses + screenmob.client.add_to_screen(H.glasses) if(H.w_uniform) H.w_uniform.screen_loc = ui_datum.ui_iclothing - screenmob.client.screen += H.w_uniform + screenmob.client.add_to_screen(H.w_uniform) if(H.wear_suit) H.wear_suit.screen_loc = ui_datum.ui_oclothing - screenmob.client.screen += H.wear_suit + screenmob.client.add_to_screen(H.wear_suit) if(H.wear_mask) H.wear_mask.screen_loc = ui_datum.ui_mask - screenmob.client.screen += H.wear_mask + screenmob.client.add_to_screen(H.wear_mask) if(H.head) H.head.screen_loc = ui_datum.ui_head - screenmob.client.screen += H.head + screenmob.client.add_to_screen(H.head) else if(H.shoes) - screenmob.client.screen -= H.shoes + screenmob.client.remove_from_screen(H.shoes) if(H.gloves) - screenmob.client.screen -= H.gloves + screenmob.client.remove_from_screen(H.gloves) if(H.wear_r_ear) - screenmob.client.screen -= H.wear_r_ear + screenmob.client.remove_from_screen(H.wear_r_ear) if(H.wear_l_ear) - screenmob.client.screen -= H.wear_l_ear + screenmob.client.remove_from_screen(H.wear_l_ear) if(H.glasses) - screenmob.client.screen -= H.glasses + screenmob.client.remove_from_screen(H.glasses) if(H.w_uniform) - screenmob.client.screen -= H.w_uniform + screenmob.client.remove_from_screen(H.w_uniform) if(H.wear_suit) - screenmob.client.screen -= H.wear_suit + screenmob.client.remove_from_screen(H.wear_suit) if(H.wear_mask) - screenmob.client.screen -= H.wear_mask + screenmob.client.remove_from_screen(H.wear_mask) if(H.head) - screenmob.client.screen -= H.head + screenmob.client.remove_from_screen(H.head) + + if(screenmob == mymob) + for(var/M in mymob.observers) + hidden_inventory_update(M) /datum/hud/human/persistent_inventory_update(mob/viewer) if(!mymob) @@ -177,53 +181,57 @@ var/mob/living/carbon/human/H = mymob var/mob/screenmob = viewer || H - if(screenmob.hud_used) - if(screenmob.hud_used.hud_shown) + if(H.hud_used) + if(H.hud_used.hud_shown) if(H.s_store) H.s_store.screen_loc = ui_datum.hud_slot_offset(H.s_store, ui_datum.ui_sstore1) - screenmob.client.screen += H.s_store + screenmob.client.add_to_screen(H.s_store) if(H.wear_id) H.wear_id.screen_loc = ui_datum.hud_slot_offset(H.wear_id, ui_datum.ui_id) - screenmob.client.screen += H.wear_id + screenmob.client.add_to_screen(H.wear_id) if(H.belt) H.belt.screen_loc = ui_datum.hud_slot_offset(H.belt, ui_datum.ui_belt) - screenmob.client.screen += H.belt + screenmob.client.add_to_screen(H.belt) if(H.back) H.back.screen_loc = ui_datum.hud_slot_offset(H.back, ui_datum.ui_back) - screenmob.client.screen += H.back + screenmob.client.add_to_screen(H.back) if(H.l_store) H.l_store.screen_loc = ui_datum.hud_slot_offset(H.l_store, ui_datum.ui_storage1) - screenmob.client.screen += H.l_store + screenmob.client.add_to_screen(H.l_store) if(H.r_store) H.r_store.screen_loc = ui_datum.hud_slot_offset(H.r_store, ui_datum.ui_storage2) - screenmob.client.screen += H.r_store + screenmob.client.add_to_screen(H.r_store) else if(H.s_store) - screenmob.client.screen -= H.s_store + screenmob.client.remove_from_screen(H.s_store) if(H.wear_id) - screenmob.client.screen -= H.wear_id + screenmob.client.remove_from_screen(H.wear_id) if(H.belt) - screenmob.client.screen -= H.belt + screenmob.client.remove_from_screen(H.belt) if(H.back) - screenmob.client.screen -= H.back + screenmob.client.remove_from_screen(H.back) if(H.l_store) - screenmob.client.screen -= H.l_store + screenmob.client.remove_from_screen(H.l_store) if(H.r_store) - screenmob.client.screen -= H.r_store + screenmob.client.remove_from_screen(H.r_store) if(hud_version != HUD_STYLE_NOHUD) if(H.r_hand) H.r_hand.screen_loc = ui_datum.hud_slot_offset(H.r_hand, ui_datum.ui_rhand) - H.client.screen += H.r_hand + screenmob.client.add_to_screen(H.r_hand) if(H.l_hand) H.l_hand.screen_loc = ui_datum.hud_slot_offset(H.l_hand, ui_datum.ui_lhand) - H.client.screen += H.l_hand + screenmob.client.add_to_screen(H.l_hand) else if(H.r_hand) H.r_hand.screen_loc = null if(H.l_hand) H.l_hand.screen_loc = null + if(screenmob == mymob) + for(var/M in mymob.observers) + persistent_inventory_update(M) + /datum/hud/human/proc/draw_inventory_slots(gear, datum/custom_hud/ui_datum, ui_alpha, ui_color) for(var/gear_slot in gear) var/atom/movable/screen/inventory/inv_box = new /atom/movable/screen/inventory() diff --git a/code/_onclick/hud/map_popups.dm b/code/_onclick/hud/map_popups.dm index b5ee41e6d54c..aed6b46a7905 100644 --- a/code/_onclick/hud/map_popups.dm +++ b/code/_onclick/hud/map_popups.dm @@ -108,7 +108,7 @@ if(!screen_map.Find(screen_obj)) screen_map += screen_obj if(!screen.Find(screen_obj)) - screen += screen_obj + add_to_screen(screen_obj) /** * Clears the map of registered screen objects. diff --git a/code/_onclick/hud/rendering/render_plate.dm b/code/_onclick/hud/rendering/render_plate.dm index a64284ca13a9..18236c6ee759 100644 --- a/code/_onclick/hud/rendering/render_plate.dm +++ b/code/_onclick/hud/rendering/render_plate.dm @@ -74,6 +74,6 @@ relay.blend_mode = blend_mode relay.mouse_opacity = mouse_opacity relay.name = render_target - mymob.client.screen += relay + mymob.client.add_to_screen(relay) if(blend_mode != BLEND_MULTIPLY) blend_mode = BLEND_DEFAULT diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 565a23d1bbeb..af961f82bab2 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -134,13 +134,13 @@ if(hud_shown) if(R.module_state_1) R.module_state_1.screen_loc = ui_robot_datum.ui_inv1 - R.client.screen += R.module_state_1 + R.client.add_to_screen(R.module_state_1) if(R.module_state_2) R.module_state_2.screen_loc = ui_robot_datum.ui_inv2 - R.client.screen += R.module_state_2 + R.client.add_to_screen(R.module_state_2) if(R.module_state_3) R.module_state_3.screen_loc = ui_robot_datum.ui_inv3 - R.client.screen += R.module_state_3 + R.client.add_to_screen(R.module_state_3) else if(R.module_state_1) R.module_state_1.screen_loc = null diff --git a/code/_onclick/hud/screen_object_holder.dm b/code/_onclick/hud/screen_object_holder.dm index ba6a9b961721..91b4e593c7d6 100644 --- a/code/_onclick/hud/screen_object_holder.dm +++ b/code/_onclick/hud/screen_object_holder.dm @@ -24,14 +24,14 @@ ASSERT(istype(screen_object)) screen_objects += screen_object - client?.screen += screen_object + client?.add_to_screen(screen_object) /// Gives the screen object to the client, but does not qdel it when it's cleared /datum/screen_object_holder/proc/give_protected_screen_object(atom/screen_object) ASSERT(istype(screen_object)) protected_screen_objects += screen_object - client?.screen += screen_object + client?.add_to_screen(screen_object) /datum/screen_object_holder/proc/remove_screen_object(atom/screen_object) ASSERT(istype(screen_object)) @@ -39,11 +39,11 @@ screen_objects -= screen_object protected_screen_objects -= screen_object - client?.screen -= screen_object + client?.remove_from_screen(screen_object) /datum/screen_object_holder/proc/clear() - client?.screen -= screen_objects - client?.screen -= protected_screen_objects + client?.remove_from_screen(screen_objects) + client?.remove_from_screen(protected_screen_objects) QDEL_LIST(screen_objects) protected_screen_objects.Cut() diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 00d55777277c..aecec79a8d3f 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -37,6 +37,8 @@ /atom/movable/screen/close/clicked(mob/user) + if(isobserver(user)) + return TRUE if(master) if(isstorage(master)) var/obj/item/storage/master_storage = master @@ -144,7 +146,7 @@ /atom/movable/screen/zone_sel/clicked(mob/user, list/mods) if (..()) - return 1 + return TRUE var/icon_x = text2num(mods["icon-x"]) var/icon_y = text2num(mods["icon-y"]) @@ -209,7 +211,11 @@ icon = 'icons/mob/hud/screen1_robot.dmi' /atom/movable/screen/clicked(mob/user) - if(!user) return 1 + if(!user) + return TRUE + + if(isobserver(user)) + return TRUE switch(name) if("equip") @@ -608,10 +614,10 @@ if(user && user.hud_used) if(user.hud_used.inventory_shown) user.hud_used.inventory_shown = 0 - user.client.screen -= user.hud_used.toggleable_inventory + user.client.remove_from_screen(user.hud_used.toggleable_inventory) else user.hud_used.inventory_shown = 1 - user.client.screen += user.hud_used.toggleable_inventory + user.client.add_to_screen(user.hud_used.toggleable_inventory) user.hud_used.hidden_inventory_update() return 1 diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index b67953b1edbe..f87778355755 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -31,7 +31,7 @@ var/mob/living/carbon/xenomorph/xeno = target if(xeno.stat == DEAD || is_admin_level(xeno.z) || xeno.aghosted) to_chat(src, SPAN_WARNING("You cannot join as [xeno].")) - ManualFollow(xeno) + do_observe(xeno) return FALSE if(!SSticker.mode.xeno_bypass_timer) @@ -41,7 +41,7 @@ to_wait = XENO_LEAVE_TIMER_LARVA - xeno.away_timer if(to_wait > 60 SECONDS) // don't spam for clearly non-AFK xenos to_chat(src, SPAN_WARNING("That player hasn't been away long enough. Please wait [to_wait] second\s longer.")) - ManualFollow(target) + do_observe(target) return FALSE var/deathtime = world.time - timeofdeath @@ -50,14 +50,14 @@ message = SPAN_WARNING("[message]") to_chat(src, message) to_chat(src, SPAN_WARNING("You must wait atleast 2.5 minutes before rejoining the game!")) - ManualFollow(target) + do_observe(target) return FALSE if(xeno.hive) for(var/mob_name in xeno.hive.banished_ckeys) if(xeno.hive.banished_ckeys[mob_name] == ckey) to_chat(src, SPAN_WARNING("You are banished from the [xeno.hive], you may not rejoin unless the Queen re-admits you or dies.")) - ManualFollow(target) + do_observe(target) return FALSE if(alert(src, "Are you sure you want to transfer yourself into [xeno]?", "Confirm Transfer", "Yes", "No") != "Yes") @@ -67,7 +67,7 @@ return FALSE SSticker.mode.transfer_xeno(src, xeno) return TRUE - ManualFollow(target) + do_observe(target) return TRUE if(!istype(target, /atom/movable/screen)) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 08de7b5c02ff..e8b010669c0e 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -58,6 +58,8 @@ if(Master) Master.OnConfigLoad() + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CONFIG_LOADED) + /datum/controller/configuration/proc/loadmaplist(filename, maptype) log_config("Loading config file [filename]...") diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 976256cb6c97..cc3d00fd951b 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -21,8 +21,14 @@ Basics, the most important. /datum/config_entry/string/wikiurl +/datum/config_entry/string/wikiarticleurl + /datum/config_entry/string/forumurl +/datum/config_entry/string/staffreport + +/datum/config_entry/string/playerreport + /datum/config_entry/string/rulesurl /datum/config_entry/string/githuburl @@ -31,6 +37,8 @@ Basics, the most important. /datum/config_entry/string/banappeals +/datum/config_entry/string/endofroundblurb + /datum/config_entry/string/dburl /// Server to notify of game events @@ -265,10 +273,6 @@ Voting /datum/config_entry/string/gamemode_default config_entry_value = "Extended" -// Rounds needed for gamemode vote -/datum/config_entry/number/gamemode_rounds_needed - config_entry_value = 5 - /datum/config_entry/number/rounds_until_hard_restart config_entry_value = -1 // -1 is disabled by default, 0 is every round, x is after so many rounds diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm index b154c7673855..6f5b9303a91f 100644 --- a/code/controllers/subsystem/minimap.dm +++ b/code/controllers/subsystem/minimap.dm @@ -390,9 +390,9 @@ SUBSYSTEM_DEF(minimaps) if(!map) return if(minimap_displayed) - owner.client.screen -= map + owner.client.remove_from_screen(map) else - owner.client.screen += map + owner.client.add_to_screen(map) minimap_displayed = !minimap_displayed /datum/action/minimap/give_to(mob/target) @@ -415,7 +415,7 @@ SUBSYSTEM_DEF(minimaps) /datum/action/minimap/remove_from(mob/target) . = ..() if(minimap_displayed) - owner?.client?.screen -= map + owner?.client?.remove_from_screen(map) minimap_displayed = FALSE /** @@ -424,7 +424,7 @@ SUBSYSTEM_DEF(minimaps) /datum/action/minimap/proc/on_owner_z_change(atom/movable/source, oldz, newz) SIGNAL_HANDLER if(minimap_displayed) - owner.client.screen -= map + owner.client.remove_from_screen(map) minimap_displayed = FALSE map = null if(!SSminimaps.minimaps_by_z["[newz]"] || !SSminimaps.minimaps_by_z["[newz]"].hud_image) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index db6c3c71a7fa..88627669aa3b 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -101,17 +101,14 @@ SUBSYSTEM_DEF(ticker) mode.declare_completion(force_ending) REDIS_PUBLISH("byond.round", "type" = "round-complete") flash_clients() - if(text2num(SSperf_logging?.round?.id) % CONFIG_GET(number/gamemode_rounds_needed) == 0) - addtimer(CALLBACK( - SSvote, - /datum/controller/subsystem/vote/proc/initiate_vote, - "gamemode", - "SERVER", - CALLBACK(src, PROC_REF(handle_map_reboot)), - TRUE - ), 3 SECONDS) - else - handle_map_reboot() + addtimer(CALLBACK( + SSvote, + /datum/controller/subsystem/vote/proc/initiate_vote, + "gamemode", + "SERVER", + CALLBACK(src, PROC_REF(handle_map_reboot)), + TRUE + ), 3 SECONDS) Master.SetRunLevel(RUNLEVEL_POSTGAME) /// Attempt to start game asynchronously if applicable diff --git a/code/datums/action.dm b/code/datums/action.dm index 8dcf2963590d..47b302e09aac 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -103,7 +103,7 @@ /mob/proc/handle_add_action(datum/action/action) LAZYADD(actions, action) if(client) - client.screen += action.button + client.add_to_screen(action.button) update_action_buttons() /proc/remove_action(mob/L, action_path) @@ -122,7 +122,7 @@ /mob/proc/handle_remove_action(datum/action/action) actions?.Remove(action) if(client) - client.screen -= action.button + client.remove_from_screen(action.button) update_action_buttons() /mob/living/carbon/human/handle_remove_action(datum/action/action) @@ -219,12 +219,12 @@ for(var/datum/action/A in actions) A.button.screen_loc = null if(reload_screen) - client.screen += A.button + client.add_to_screen(A.button) else for(var/datum/action/A in actions) var/atom/movable/screen/action_button/B = A.button if(reload_screen) - client.screen += B + client.add_to_screen(B) if(A.hidden) B.screen_loc = null continue @@ -234,11 +234,11 @@ if(!button_number) hud_used.hide_actions_toggle.screen_loc = null if(reload_screen) - client.screen += hud_used.hide_actions_toggle + client.add_to_screen(hud_used.hide_actions_toggle) return hud_used.hide_actions_toggle.screen_loc = hud_used.hide_actions_toggle.get_button_screen_loc(button_number+1) if(reload_screen) - client.screen += hud_used.hide_actions_toggle + client.add_to_screen(hud_used.hide_actions_toggle) diff --git a/code/datums/emergency_calls/cmb.dm b/code/datums/emergency_calls/cmb.dm index 52da1c967a00..777ad322befc 100644 --- a/code/datums/emergency_calls/cmb.dm +++ b/code/datums/emergency_calls/cmb.dm @@ -113,7 +113,7 @@ /datum/emergency_call/cmb/anchorpoint/New() ..() arrival_message = "[MAIN_SHIP_NAME], this is Anchorpoint Station. Be advised, a QRF Team of our Colonial Marines is currently attempting to board you. Open your ports, transmitting docking codes now. Standby." - objectives = "QRF Team. You are here to reinforce the cmb team we deployed earlier. Make contact and work with the CMB Marshal and their deputies. Facilitate their protection and evacuation if necessary. Secondary Objective: Investigate the reason for distress aboard the [MAIN_SHIP_NAME], and assist the crew if possible." + objectives = "QRF Team. You are here to reinforce the CMB team we deployed earlier. Make contact and work with the CMB Marshal and their deputies. Facilitate their protection and evacuation if necessary. Secondary Objective: Investigate the reason for distress aboard the [MAIN_SHIP_NAME], and assist the crew if possible." /datum/emergency_call/cmb/anchorpoint/create_member(datum/mind/M, turf/override_spawn_loc) var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() diff --git a/code/datums/emergency_calls/emergency_call.dm b/code/datums/emergency_calls/emergency_call.dm index 390a8cfd5d61..6533086d98f3 100644 --- a/code/datums/emergency_calls/emergency_call.dm +++ b/code/datums/emergency_calls/emergency_call.dm @@ -91,12 +91,12 @@ else return chosen_call -/datum/game_mode/proc/get_specific_call(call_name, announce = TRUE, is_emergency = TRUE, info = "", announce_dispatch_message = TRUE) +/datum/game_mode/proc/get_specific_call(call_name, quiet_launch = FALSE, announce = TRUE, is_emergency = TRUE, info = "", announce_dispatch_message = TRUE) for(var/datum/emergency_call/E in all_calls) //Loop through all potential candidates if(E.name == call_name) var/datum/emergency_call/em_call = new E.type() em_call.objective_info = info - em_call.activate(announce, is_emergency, announce_dispatch_message) + em_call.activate(quiet_launch, announce, is_emergency, announce_dispatch_message) return error("get_specific_call could not find emergency call '[call_name]'") return @@ -192,7 +192,7 @@ else to_chat(src, SPAN_WARNING("You did not get enlisted in the response team. Better luck next time!")) -/datum/emergency_call/proc/activate(announce = TRUE, turf/override_spawn_loc, announce_dispatch_message = TRUE) +/datum/emergency_call/proc/activate(quiet_launch = FALSE, announce = TRUE, turf/override_spawn_loc, announce_dispatch_message = TRUE) set waitfor = 0 if(!SSticker.mode) //Something horribly wrong with the gamemode ticker return @@ -202,12 +202,12 @@ show_join_message() //Show our potential candidates the message to let them join. message_admins("Distress beacon: '[name]' activated [src.hostility? "[SPAN_WARNING("(THEY ARE HOSTILE)")]":"(they are friendly)"]. Looking for candidates.") - if(announce) + if(!quiet_launch) marine_announcement("A distress beacon has been launched from the [MAIN_SHIP_NAME].", "Priority Alert", 'sound/AI/distressbeacon.ogg', logging = ARES_LOG_SECURITY) - addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/emergency_call, spawn_candidates), announce, override_spawn_loc, announce_dispatch_message), 30 SECONDS) + addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/emergency_call, spawn_candidates), quiet_launch, announce, override_spawn_loc, announce_dispatch_message), 30 SECONDS) -/datum/emergency_call/proc/spawn_candidates(announce = TRUE, override_spawn_loc, announce_dispatch_message = TRUE) +/datum/emergency_call/proc/spawn_candidates(quiet_launch = FALSE, announce = TRUE, override_spawn_loc, announce_dispatch_message = TRUE) if(SSticker.mode) SSticker.mode.picked_calls -= src @@ -218,7 +218,7 @@ members = list() //Empty the members list. candidates = list() - if(announce) + if(!quiet_launch) marine_announcement("The distress signal has not received a response, the launch tubes are now recalibrating.", "Distress Beacon", logging = ARES_LOG_SECURITY) return diff --git a/code/datums/emergency_calls/inspection.dm b/code/datums/emergency_calls/inspection.dm index 72926666ace5..4c33d7d9bfa3 100644 --- a/code/datums/emergency_calls/inspection.dm +++ b/code/datums/emergency_calls/inspection.dm @@ -263,3 +263,44 @@ to_chat(M, SPAN_BOLD("The laws of arth stretch beyond the Sol. Where others fall to corruption, you stay steadfast in your morals.")) to_chat(M, SPAN_BOLD("Corporate Officers chase after paychecks and promotions, but you are motivated to do your sworn duty and care for the population, no matter how far or isolated a colony may be.")) to_chat(M, SPAN_BOLD("Despite being stretched thin, the stalwart oath of the Marshals has continued to keep communities safe, with the CMB well respected by many. You are a representation of that oath, serve with distinction.")) + +/datum/emergency_call/inspection_cmb/black_market + name = "Inspection - Colonial Marshal Ledger Investigation Team" + mob_max = 3 //Marshal, Deputy, ICC CL + mob_min = 2 + shuttle_id = "Distress_PMC" + + max_synths = 0 + will_spawn_icc_liaison = TRUE + will_spawn_cmb_observer = FALSE + +/datum/emergency_call/inspection_cmb/black_market/New() + ..() + dispatch_message = "Third Fleet High Command to [MAIN_SHIP_NAME], we have received inconsistent supply manifests and irregularities on the ASRS system aboard your ship, and have requested a CMB Investigation Team to board and clear you of any wrongdoing." + arrival_message = "Incoming Transmission: [MAIN_SHIP_NAME], this is Anchorpoint Station with the Colonial Marshal Bureau. Be advised, we are dispatching a team of Marshals to board with you by request of GSO-91. Submitting authorized docking clearances, over." + objectives = "Investigate the inconsistencies aboard the [MAIN_SHIP_NAME]'s ASRS. In the case of illegal activity, collect evidence, and submit a report to the CMB Command at Anchorpoint Station. If required, the ICC Liaison's Tradeband is capable of fixing ASRS computers. Work with the [MAIN_SHIP_NAME]'s military police force." + +/datum/emergency_call/inspection_cmb/black_market/create_member(datum/mind/current_mind, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/mob = new(spawn_loc) + current_mind.transfer_to(mob, TRUE) + + if(!leader && HAS_FLAG(mob?.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(mob.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = mob + to_chat(mob, SPAN_ROLE_HEADER("You are the Colonial Marshal!")) + arm_equipment(mob, /datum/equipment_preset/cmb/leader, TRUE, TRUE) + else if(!icc_liaison && will_spawn_icc_liaison && check_timelock(mob.client, JOB_CORPORATE_LIAISON, time_required_for_job)) + icc_liaison = mob + to_chat(mob, SPAN_ROLE_HEADER("You are a CMB-attached Interstellar Commerce Commission Liaison!")) + arm_equipment(mob, /datum/equipment_preset/cmb/liaison/black_market, TRUE, TRUE) //ICC CL gets a custom item + else + to_chat(mob, SPAN_ROLE_HEADER("You are a CMB Deputy!")) + arm_equipment(mob, /datum/equipment_preset/cmb/standard, TRUE, TRUE) + + print_backstory(mob) + + addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(to_chat), mob, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) diff --git a/code/datums/entities/player.dm b/code/datums/entities/player.dm index ed97c4eafaae..febeb1fc73a9 100644 --- a/code/datums/entities/player.dm +++ b/code/datums/entities/player.dm @@ -97,7 +97,7 @@ BSQL_PROTECT_DATUM(/datum/entity/player) if(!is_confidential && note_category == NOTE_ADMIN && owning_client) to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_LARGE("You have been noted by [key_name_admin(admin.mob, FALSE)]."))) to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_BIG("The note is : [sanitize(note_text)]"))) - to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_BIG("If you believe this was filed in error or misplaced, make a staff report at The CM Forums"))) + to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_BIG("If you believe this was filed in error or misplaced, make a staff report at The CM Forums"))) to_chat_immediate(owning_client, SPAN_WARNING(FONT_SIZE_BIG("You can also click the name of the staff member noting you to PM them."))) // create new instance of player_note entity var/datum/entity/player_note/note = DB_ENTITY(/datum/entity/player_note) diff --git a/code/datums/factions/upp.dm b/code/datums/factions/upp.dm index 9f28e5967831..5a790c89be67 100644 --- a/code/datums/factions/upp.dm +++ b/code/datums/factions/upp.dm @@ -25,10 +25,20 @@ hud_icon_state = "lt" if(JOB_UPP_SRLT_OFFICER) hud_icon_state = "slt" + if(JOB_UPP_KPT_OFFICER) + hud_icon_state = "xo" if(JOB_UPP_MAY_OFFICER) - hud_icon_state = "may" + hud_icon_state = "co" + if(JOB_UPP_LTKOL_OFFICER) + hud_icon_state = "co" if(JOB_UPP_KOL_OFFICER) - hud_icon_state = "kol" + hud_icon_state = "co" + if(JOB_UPP_MAY_GENERAL) + hud_icon_state = "co" + if(JOB_UPP_LT_GENERAL) + hud_icon_state = "co" + if(JOB_UPP_GENERAL) + hud_icon_state = "co" if(JOB_UPP_COMBAT_SYNTH) hud_icon_state = "synth" if(JOB_UPP_COMMANDO) diff --git a/code/datums/keybinding/mob.dm b/code/datums/keybinding/mob.dm index ee0ec30dcae7..b7b83249b335 100644 --- a/code/datums/keybinding/mob.dm +++ b/code/datums/keybinding/mob.dm @@ -2,6 +2,16 @@ category = CATEGORY_HUMAN weight = WEIGHT_MOB +/datum/keybinding/mob/down(client/user) + . = ..() + if(isobserver(user.mob)) + return TRUE + +/datum/keybinding/mob/up(client/user) + . = ..() + if(isobserver(user.mob)) + return TRUE + /datum/keybinding/mob/stop_pulling hotkey_keys = list("H", "Delete") classic_keys = list("Delete") @@ -85,7 +95,7 @@ . = ..() if(.) return - user.mob.a_select_zone("head") + user.mob.a_select_zone("head", user) return TRUE /datum/keybinding/mob/target_r_arm @@ -100,7 +110,7 @@ . = ..() if(.) return - user.mob.a_select_zone("rarm") + user.mob.a_select_zone("rarm", user) return TRUE /datum/keybinding/mob/target_body_chest @@ -115,7 +125,7 @@ . = ..() if(.) return - user.mob.a_select_zone("chest") + user.mob.a_select_zone("chest", user) return TRUE /datum/keybinding/mob/target_left_arm @@ -130,7 +140,7 @@ . = ..() if(.) return - user.mob.a_select_zone("larm") + user.mob.a_select_zone("larm", user) return TRUE /datum/keybinding/mob/target_right_leg @@ -145,7 +155,7 @@ . = ..() if(.) return - user.mob.a_select_zone("rleg") + user.mob.a_select_zone("rleg", user) return TRUE /datum/keybinding/mob/target_body_groin @@ -160,7 +170,7 @@ . = ..() if(.) return - user.mob.a_select_zone("groin") + user.mob.a_select_zone("groin", user) return TRUE /datum/keybinding/mob/target_left_leg @@ -175,7 +185,7 @@ . = ..() if(.) return - user.mob.a_select_zone("lleg") + user.mob.a_select_zone("lleg", user) return TRUE /datum/keybinding/mob/target_next @@ -190,7 +200,7 @@ . = ..() if(.) return - user.mob.a_select_zone("next") + user.mob.a_select_zone("next", user) return TRUE /datum/keybinding/mob/target_prev @@ -205,7 +215,7 @@ . = ..() if(.) return - user.mob.a_select_zone("prev") + user.mob.a_select_zone("prev", user) return TRUE /datum/keybinding/mob/prevent_movement diff --git a/code/datums/keybinding/yautja.dm b/code/datums/keybinding/yautja.dm index 40ffbf8d16e7..4729db004582 100644 --- a/code/datums/keybinding/yautja.dm +++ b/code/datums/keybinding/yautja.dm @@ -594,3 +594,21 @@ var/mob/living/carbon/human/H = user.mob var/obj/item/device/yautja_teleporter/tele = locate(/obj/item/device/yautja_teleporter) in H.contents tele.add_tele_loc() + + +/datum/keybinding/yautja/fold_combi + hotkey_keys = list("Space") + classic_keys = list("Unbound") + name = "fold_combi" + full_name = "Collapse Combi-stick" + keybind_signal = COMSIG_KB_YAUTJA_FOLD_COMBISTICK + +/datum/keybinding/yautja/fold_combi/down(client/user) + . = ..() + if(.) + return + var/mob/living/carbon/human/human = user.mob + var/obj/item/weapon/yautja/combistick/held_item = human.get_held_item() + if(istype(held_item)) + held_item.fold_combistick() + return TRUE diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 90df42f7d12a..2e56b963e88f 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -39,6 +39,8 @@ msg_admin_niche("[key]/[ckey] has tried to transfer to deleted [new_character].") return + SEND_SIGNAL(current.client, COMSIG_CLIENT_MIND_TRANSFER, new_character) + if(current) current.mind = null //remove ourself from our old body's mind variable nanomanager.user_transferred(current, new_character) // transfer active NanoUI instances to new user @@ -71,6 +73,8 @@ continue player_entity = setup_player_entity(ckey) + SEND_SIGNAL(new_character, COMSIG_MOB_NEW_MIND, current.client) + new_character.refresh_huds(current) //inherit the HUDs from the old body new_character.aghosted = FALSE //reset aghost and away timer new_character.away_timer = 0 diff --git a/code/datums/paygrades/factions/upp/upp.dm b/code/datums/paygrades/factions/upp/upp.dm index 7cb0c201aefb..a1363383ad55 100644 --- a/code/datums/paygrades/factions/upp/upp.dm +++ b/code/datums/paygrades/factions/upp/upp.dm @@ -18,16 +18,11 @@ paygrade = "UE2" name = "Private First Class" prefix = "PFC." + pay_multiplier = 0.2 -/datum/paygrade/upp/ue3m - paygrade = "UE3M" - name = "Korporal Medic" - prefix = "Kpl." - pay_multiplier = 0.3 - -/datum/paygrade/upp/ue3s - paygrade = "UE3S" - name = "Korporal Sapper" +/datum/paygrade/upp/ue3 + paygrade = "UE3" + name = "Korporal" prefix = "Kpl." pay_multiplier = 0.3 @@ -75,56 +70,50 @@ prefix = "Lt." pay_multiplier = 1.25 -/datum/paygrade/upp/uo1m - paygrade = "UO1M" - name = "Leytenant Medic" - prefix = "Lt. Med." - pay_multiplier = 1.25 - -/datum/paygrade/upp/uo1e - paygrade = "UO1E" +/datum/paygrade/upp/uo2 + paygrade = "UO2" name = "Senior Leytenant" prefix = "Sr. LT." pay_multiplier = 1.5 - -/datum/paygrade/upp/uo2 - paygrade = "UO2" +/datum/paygrade/upp/uo3 + paygrade = "UO3" name = "Kapitan" prefix = "Kpt." pay_multiplier = 2 -/datum/paygrade/upp/uo3 - paygrade = "UO3" +/datum/paygrade/upp/uo4 + paygrade = "UO4" name = "Mayjor." prefix = "May." pay_multiplier = 2.5 -/datum/paygrade/upp/uo4 - paygrade = "UO4" +/datum/paygrade/upp/uo5 + paygrade = "UO5" name = "Leytenant Kolonel" + prefix = "Lt. Kol." pay_multiplier = 3 -/datum/paygrade/upp/uo5 - paygrade = "UO5" +/datum/paygrade/upp/uo6 + paygrade = "UO6" name = "Kolonel" prefix = "Kol." pay_multiplier = 4 -/datum/paygrade/upp/uo6 - paygrade = "UO6" +/datum/paygrade/upp/uo7 + paygrade = "UO7" name = "Mayjor General" - prefix = "MayGen." + prefix = "May. Gen." pay_multiplier = 5 -/datum/paygrade/upp/uo7 - paygrade = "UO7" +/datum/paygrade/upp/uo8 + paygrade = "UO8" name = "Leytenant General" - prefix = "LtGen." + prefix = "Lt. Gen." pay_multiplier = 6 -/datum/paygrade/upp/uo8 - paygrade = "UO8" +/datum/paygrade/upp/uo9 + paygrade = "UO9" name = "Army General" - prefix = "ArmGen." + prefix = "Gen." pay_multiplier = 7 diff --git a/code/datums/skills.dm b/code/datums/skills.dm index f80b391123f2..9178e6f7a1b1 100644 --- a/code/datums/skills.dm +++ b/code/datums/skills.dm @@ -293,6 +293,16 @@ CIVILIAN SKILL_INTEL = SKILL_INTEL_EXPERT, ) +/datum/skills/civilian/icc_investigation + name = "ICC CL - Black Market ERT" + skills = list( + SKILL_CQC = SKILL_CQC_DEFAULT, + SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, //The ASRS consoles + SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, + SKILL_POLICE = SKILL_POLICE_SKILLED, //The CMB Tradeband Compliance Device + ) + /datum/skills/civilian/manager/director name = "Weyland-Yutani Director" skills = list( @@ -1304,6 +1314,23 @@ UNITED PROGRESSIVE PEOPLES SKILL_JTAC = SKILL_JTAC_EXPERT, ) +/datum/skills/upp/kapitan + name = "UPP Kapitan" + skills = list( + SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_POLICE = SKILL_POLICE_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_EXPERT, + SKILL_LEADERSHIP = SKILL_LEAD_MASTER, + SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, + SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, + SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, + SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, + SKILL_VEHICLE = SKILL_VEHICLE_SMALL, + SKILL_JTAC = SKILL_JTAC_EXPERT, + ) + /datum/skills/upp/commander name = "UPP Command Officer" skills = list( diff --git a/code/datums/supply_packs/_supply_packs.dm b/code/datums/supply_packs/_supply_packs.dm index 8f38c6151589..061779d9e5ce 100644 --- a/code/datums/supply_packs/_supply_packs.dm +++ b/code/datums/supply_packs/_supply_packs.dm @@ -23,6 +23,8 @@ var/iteration_needed = 0 /// How many W-Y dollars are deducted from the supply controller. Only use for contraband. var/dollar_cost = 0 + /// How much "heat" this crate adds, too much heat will send an investigation. Only use for contraband. + var/crate_heat = 0 /datum/supply_packs/New() if(randomised_num_contained) diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm index 1737a66e85a9..5f8fae824312 100644 --- a/code/datums/supply_packs/black_market.dm +++ b/code/datums/supply_packs/black_market.dm @@ -16,7 +16,7 @@ black market prices are NOT based on real or in-universe costs. they are based o */ -/datum/supply_packs/contraband//base +/datum/supply_packs/contraband //base name = "contraband crate" contains = null containertype = null @@ -25,6 +25,7 @@ black market prices are NOT based on real or in-universe costs. they are based o contraband = TRUE cost = 0 dollar_cost = 50 + crate_heat = 5 /obj/structure/largecrate/black_market /// Wipes points from objects inside to avoid infinite farming. @@ -68,11 +69,13 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. contains = list(/obj/item/device/black_market_scanner) containername = "trash cart" dollar_cost = 5 + crate_heat = 0 containertype = /obj/structure/closet/crate/trashcart /datum/supply_packs/contraband/seized/confiscated_equipment name = "seized foreign equipment crate" dollar_cost = 70 + crate_heat = 10 containertype = /obj/structure/largecrate/black_market/confiscated_equipment /obj/structure/largecrate/black_market/confiscated_equipment/Initialize() @@ -115,6 +118,7 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. name = "seized foreign weaponry crate" contains = list() dollar_cost = 45 + crate_heat = 15 containertype = /obj/structure/largecrate/black_market/confiscated_weaponry /obj/structure/largecrate/black_market/confiscated_weaponry/Initialize() @@ -413,6 +417,7 @@ Additionally, weapons that are way too good to put in the basically-flavor black /obj/item/ammo_magazine/pistol/holdout, ) dollar_cost = 5 + crate_heat = 2 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/seized/bizon @@ -443,7 +448,7 @@ Additionally, weapons that are way too good to put in the basically-flavor black containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/seized/small - name = "S&W revolver (x6 magazines included)" + name = "Smith and Wesson revolver (x6 magazines included)" contains = list( /obj/item/weapon/gun/revolver/small, /obj/item/ammo_magazine/revolver/small, @@ -527,6 +532,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/reagent_container/food/drinks/bottle/beer/craft/mono, ) dollar_cost = 35 + crate_heat = -5 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/shipside/confiscated_medicine @@ -541,6 +547,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/storage/pill_bottle/paracetamol, ) dollar_cost = 25 + crate_heat = 3 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/shipside/confiscated_cuisine @@ -582,6 +589,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/reagent_container/food/condiment/hotsauce/franks/macho, ) dollar_cost = 15 + crate_heat = -5 containertype = /obj/structure/largecrate/black_market @@ -598,6 +606,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/storage/fancy/cigar/tarbacktube, ) dollar_cost = 45 + crate_heat = -5 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/shipside/confiscated_miscellaneous @@ -622,7 +631,6 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/explosive/grenade/smokebomb, /obj/item/corncob, /obj/item/poster, - /obj/item/weapon/banhammer, /obj/item/toy/prize/ripley, /obj/item/toy/prize/fireripley, /obj/item/toy/prize/deathripley, @@ -639,6 +647,7 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat /obj/item/pamphlet/language/spanish, ) dollar_cost = 30 + crate_heat = -2 containertype = /obj/structure/largecrate/black_market @@ -659,6 +668,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted name = "surplus USCM poncho crate (x2)" dollar_cost = 15 containertype = /obj/structure/largecrate/black_market/poncho + crate_heat = -2 /obj/structure/largecrate/black_market/poncho/Initialize() . = ..() @@ -671,6 +681,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted /datum/supply_packs/contraband/surplus/uscm_heap name = "surplus high-explosive armor-piercing M41A magazine crate (x3)" dollar_cost = 40 + crate_heat = -2 containertype = /obj/structure/largecrate/black_market/uscm_heap /obj/structure/largecrate/black_market/uscm_heap/Initialize() @@ -715,6 +726,7 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted name = "surplus magazine box (Ext M4RA x 12)" contains = list(/obj/item/ammo_box/magazine/m4ra/ext) dollar_cost = 45 + crate_heat = 3 containertype = /obj/structure/largecrate/black_market /* - Misc. USCM weaponry - */ @@ -761,14 +773,13 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t /datum/supply_packs/contraband/deep_storage group = "Deep Storage" - - -// Helmet Garb + crate_heat = -5 /datum/supply_packs/contraband/deep_storage/spacejam name = "Tickets to Space Jam" contains = list(/obj/item/prop/helmetgarb/spacejam_tickets) dollar_cost = 5 + crate_heat = -2 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/broken_nvgs @@ -923,6 +934,7 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t name = "Frozen Lime" contains = list(/obj/item/reagent_container/food/snacks/grown/lime) dollar_cost = 5 + crate_heat = -2 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/uno_reverse_random @@ -961,18 +973,21 @@ This is where the RO can reclaim their lost honor and purchase the M44 custom, t name = "D18 Holdout Pistol" contains = list(/obj/item/storage/box/clf) dollar_cost = 10 + crate_heat = 2 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/m4a3_c name = "M4A3 Custom Pistol" contains = list(/obj/item/weapon/gun/pistol/m4a3/custom) dollar_cost = 35 + crate_heat = 4 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/deep_storage/m44_c name = "M44 Custom Revolver" contains = list(/obj/item/weapon/gun/revolver/m44/custom) dollar_cost = 70 + crate_heat = 4 containertype = /obj/structure/largecrate/black_market /* --- MISCELLANEOUS --- */ @@ -989,6 +1004,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro /datum/supply_packs/contraband/miscellaneous/secured_wildlife name = "secured wildlife container" dollar_cost = 45 + crate_heat = 7 containertype = /obj/structure/largecrate/black_market/secured_wildlife /obj/structure/largecrate/black_market/secured_wildlife @@ -1007,6 +1023,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro /datum/supply_packs/contraband/miscellaneous/potted_plant name = "potted plant crate" dollar_cost = 50 + crate_heat = -10 contains = list(/obj/structure/flora/pottedplant/random/unanchored) containertype = /obj/structure/largecrate/black_market @@ -1019,6 +1036,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro /datum/supply_packs/contraband/miscellaneous/clf_supplies name = "unmarked CLF supply crate" dollar_cost = 40 + crate_heat = 25 contains = list() containertype = /obj/structure/largecrate/black_market/clf_supplies diff --git a/code/datums/supply_packs/clothing.dm b/code/datums/supply_packs/clothing.dm index 1c7241bb253b..4f0d414a2655 100644 --- a/code/datums/supply_packs/clothing.dm +++ b/code/datums/supply_packs/clothing.dm @@ -113,7 +113,7 @@ /obj/item/clothing/under/rank/qm_suit, /obj/item/clothing/under/marine/officer/bridge, /obj/item/clothing/under/marine/officer/bridge, - /obj/item/clothing/under/marine/officer/exec, + /obj/item/clothing/under/marine/dress, /obj/item/clothing/under/marine/officer/ce, ) name = "officer outfit crate" diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index 36271054bb21..cc1e5449ca7a 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -356,17 +356,21 @@ Additional game mode variables. else available_xenos_non_ssd += cur_xeno - var/datum/hive_status/hive - for(var/hivenumber in GLOB.hive_datum) - hive = GLOB.hive_datum[hivenumber] - if(!hive.hardcore && hive.stored_larva && (hive.hive_location || (world.time < XENO_BURIED_LARVA_TIME_LIMIT + SSticker.round_start_time))) - if(SSticker.mode && (SSticker.mode.flags_round_type & MODE_RANDOM_HIVE)) - available_xenos |= "any buried larva" - LAZYADD(available_xenos["any buried larva"], hive) - else - var/larva_option = "buried larva ([hive])" - available_xenos += larva_option - available_xenos[larva_option] = list(hive) + // Only offer buried larva if there is no queue: + // This basically means this block of code will almost never execute, because we are instead relying on the hive cores/larva pops to handle their larva + // Technically this should be after a get_alien_candidates() call to be accurate, but we are intentionally trying to not call that proc as much as possible + if(GLOB.xeno_queue_candidate_count < 1) + var/datum/hive_status/hive + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(!hive.hardcore && hive.stored_larva && (hive.hive_location || (world.time < XENO_BURIED_LARVA_TIME_LIMIT + SSticker.round_start_time))) + if(SSticker.mode && (SSticker.mode.flags_round_type & MODE_RANDOM_HIVE)) + available_xenos |= "any buried larva" + LAZYADD(available_xenos["any buried larva"], hive) + else + var/larva_option = "buried larva ([hive])" + available_xenos += larva_option + available_xenos[larva_option] = list(hive) if(!available_xenos.len || (instant_join && !available_xenos_non_ssd.len)) if(!xeno_candidate.client || !xeno_candidate.client.prefs || !(xeno_candidate.client.prefs.be_special & BE_ALIEN_AFTER_DEATH)) @@ -446,6 +450,10 @@ Additional game mode variables. to_chat(xeno_candidate, SPAN_WARNING("You cannot join if the xenomorph is dead.")) return FALSE + if(new_xeno.health <= 0) + to_chat(xeno_candidate, SPAN_WARNING("You cannot join if the xenomorph is in critical condition or unconscious.")) + return FALSE + if(!xeno_bypass_timer) var/deathtime = world.time - xeno_candidate.timeofdeath if(istype(xeno_candidate, /mob/new_player)) diff --git a/code/game/gamemodes/cm_self_destruct.dm b/code/game/gamemodes/cm_self_destruct.dm index d2f9c4eac784..b86de24eed74 100644 --- a/code/game/gamemodes/cm_self_destruct.dm +++ b/code/game/gamemodes/cm_self_destruct.dm @@ -278,7 +278,7 @@ var/global/datum/authority/branch/evacuation/EvacuationAuthority //This is initi if(play_anim) for(var/mob/current_mob as anything in alive_mobs + dead_mobs) if(current_mob && current_mob.loc && current_mob.client) - current_mob.client.screen |= C //They may have disconnected in the mean time. + current_mob.client.add_to_screen(C) //They may have disconnected in the mean time. sleep(15) //Extra 1.5 seconds to look at the ship. flick(override ? "intro_override" : "intro_nuke", C) @@ -292,7 +292,7 @@ var/global/datum/authority/branch/evacuation/EvacuationAuthority //This is initi current_mob.death(create_cause_data("nuclear explosion")) else if(play_anim) - current_mob.client.screen -= C //those who managed to escape the z level at last second shouldn't have their view obstructed. + current_mob.client.remove_from_screen(C) //those who managed to escape the z level at last second shouldn't have their view obstructed. if(play_anim) flick(ship_status ? "ship_spared" : "ship_destroyed", C) C.icon_state = ship_status ? "summary_spared" : "summary_destroyed" diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index cf2b7819a596..258a1a962713 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -265,7 +265,7 @@ continue if(groundside_humans > (groundside_xenos * GROUNDSIDE_XENO_MULTIPLIER)) - SSticker.mode.get_specific_call("Xenomorphs Groundside (Forsaken)", FALSE, FALSE, announce_dispatch_message = FALSE) + SSticker.mode.get_specific_call("Xenomorphs Groundside (Forsaken)", TRUE, FALSE, FALSE, announce_dispatch_message = FALSE) TIMER_COOLDOWN_START(src, COOLDOWN_HIJACK_GROUND_CHECK, 1 MINUTES) diff --git a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm index e172939c847f..3d856f35ce77 100644 --- a/code/game/gamemodes/colonialmarines/whiskey_outpost.dm +++ b/code/game/gamemodes/colonialmarines/whiskey_outpost.dm @@ -193,7 +193,7 @@ announce_xeno_wave(wave) if(xeno_wave == 7) //Wave when Marines get reinforcements! - get_specific_call("Marine Reinforcements (Squad)", TRUE, FALSE) + get_specific_call("Marine Reinforcements (Squad)", FALSE, TRUE, FALSE) xeno_wave = min(xeno_wave + 1, WO_MAX_WAVE) diff --git a/code/game/gamemodes/colonialmarines/xenovsxeno.dm b/code/game/gamemodes/colonialmarines/xenovsxeno.dm index a0d555acd2fb..5623295f1915 100644 --- a/code/game/gamemodes/colonialmarines/xenovsxeno.dm +++ b/code/game/gamemodes/colonialmarines/xenovsxeno.dm @@ -285,7 +285,7 @@ round_statistics.track_round_end() log_game("Round end result: [round_finished]") to_chat_spaced(world, margin_top = 2, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDHEADER("|Round Complete|")) - to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDBODY("Thus ends the story of the battling hives on [SSmapping.configs[GROUND_MAP].map_name]. [round_finished]\nThe game-mode was: [master_mode]!\nEnd of Round Grief (EORG) is an IMMEDIATE 3 hour ban with no warnings, see rule #3 for more details.")) + to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDBODY("Thus ends the story of the battling hives on [SSmapping.configs[GROUND_MAP].map_name]. [round_finished]\nThe game-mode was: [master_mode]!\n[CONFIG_GET(string/endofroundblurb)]")) // for the toolbox /datum/game_mode/xenovs/end_round_message() diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 5b007d275c32..f6f75c6ba4e0 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -129,7 +129,7 @@ var/global/cas_tracking_id_increment = 0 //this var used to assign unique tracki round_statistics.track_round_end() log_game("Round end result: [round_finished]") to_chat_spaced(world, margin_top = 2, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDHEADER("|Round Complete|")) - to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDBODY("Thus ends the story of the brave men and women of the [MAIN_SHIP_NAME] and their struggle on [SSmapping.configs[GROUND_MAP].map_name].\nThe game-mode was: [master_mode]!\nEnd of Round Grief (EORG) is an IMMEDIATE 3 hour ban with no warnings, see rule #3 for more details.")) + to_chat_spaced(world, type = MESSAGE_TYPE_SYSTEM, html = SPAN_ROUNDBODY("Thus ends the story of the brave men and women of the [MAIN_SHIP_NAME] and their struggle on [SSmapping.configs[GROUND_MAP].map_name].\nThe game-mode was: [master_mode]!\n[CONFIG_GET(string/endofroundblurb)]")) /datum/game_mode/proc/declare_completion() if(round_statistics) diff --git a/code/game/jobs/job/civilians/other/liaison.dm b/code/game/jobs/job/civilians/other/liaison.dm index ba65720b8251..7f73376a05dd 100644 --- a/code/game/jobs/job/civilians/other/liaison.dm +++ b/code/game/jobs/job/civilians/other/liaison.dm @@ -6,7 +6,7 @@ selection_class = "job_cl" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/liaison - entry_message_body = "As a representative of Weyland-Yutani Corporation, your job requires you to stay in character at all times. You are not required to follow military orders; however, you cannot give military orders. Your primary job is to observe and report back your findings to Weyland-Yutani. Follow regular game rules unless told otherwise by your superiors. Use your office fax machine to communicate with corporate headquarters or to acquire new directives. You may not receive anything back, and this is normal." + entry_message_body = "As a representative of Weyland-Yutani Corporation, your job requires you to stay in character at all times. You are not required to follow military orders; however, you cannot give military orders. Your primary job is to observe and report back your findings to Weyland-Yutani. Follow regular game rules unless told otherwise by your superiors. Use your office fax machine to communicate with corporate headquarters or to acquire new directives. You may not receive anything back, and this is normal." var/mob/living/carbon/human/active_liaison /datum/job/civilian/liaison/generate_entry_conditions(mob/living/liaison, whitelist_status) diff --git a/code/game/jobs/job/civilians/other/mess_seargent.dm b/code/game/jobs/job/civilians/other/mess_seargent.dm index 615df24ecb47..4b1975015a95 100644 --- a/code/game/jobs/job/civilians/other/mess_seargent.dm +++ b/code/game/jobs/job/civilians/other/mess_seargent.dm @@ -6,7 +6,7 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT supervisors = "the auxiliary support officer" gear_preset = /datum/equipment_preset/uscm_ship/chef - entry_message_body = "Your job is to service the marines with excellent food, drinks and entertaining the shipside crew when needed. You have a lot of freedom and it is up to you, to decide what to do with it. Good luck!" + entry_message_body = "Your job is to service the marines with excellent food, drinks and entertaining the shipside crew when needed. You have a lot of freedom and it is up to you, to decide what to do with it. Good luck!" /obj/effect/landmark/start/chef name = JOB_MESS_SERGEANT diff --git a/code/game/jobs/job/civilians/other/survivors.dm b/code/game/jobs/job/civilians/other/survivors.dm index ff2d7d229fba..5c82241c47de 100644 --- a/code/game/jobs/job/civilians/other/survivors.dm +++ b/code/game/jobs/job/civilians/other/survivors.dm @@ -15,9 +15,21 @@ spawn_positions = Clamp((round(count * SURVIVOR_TO_TOTAL_SPAWN_RATIO)), 2, 8) total_positions = spawn_positions -/datum/job/civilian/survivor/equip_job(mob/living/M) +/datum/job/civilian/survivor/equip_job(mob/living/survivor) + var/generated_account = generate_money_account(survivor) + addtimer(CALLBACK(src, PROC_REF(announce_entry_message), survivor, generated_account), 2 SECONDS) return +/datum/job/civilian/survivor/announce_entry_message(mob/living/carbon/human/survivor, datum/money_account/account, whitelist_status) //The actual message that is displayed to the mob when they enter the game as a new player. + if(survivor?.loc && survivor.client) + //Document syntax cannot have tabs for proper formatting. + var/entrydisplay = " \ + [SPAN_ROLE_BODY("|______________________|")] \n\ + [SPAN_ROLE_BODY("[generate_entry_message(survivor)]
[account ? "Your account number is: [account.account_number]. Your account pin is: [account.remote_access_pin]." : "You do not have a bank account."]")] \n\ + [SPAN_ROLE_BODY("|______________________|")] \ + " + to_chat_spaced(survivor, html = entrydisplay) + /datum/job/civilian/survivor/spawn_in_player(mob/new_player/NP) . = ..() var/mob/living/carbon/human/H = . diff --git a/code/game/jobs/job/civilians/support/cmo.dm b/code/game/jobs/job/civilians/support/cmo.dm index 9f3ff20cffb3..8c4690ea2057 100644 --- a/code/game/jobs/job/civilians/support/cmo.dm +++ b/code/game/jobs/job/civilians/support/cmo.dm @@ -6,7 +6,7 @@ selection_class = "job_cmo" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/cmo - entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overriden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." + entry_message_body = "You're a commissioned officer of the USCM. You have authority over everything related to Medbay and Research, only able to be overriden by the XO and CO. You are in charge of medical staff, surgery, chemistry, stimulants and keeping the marines healthy overall." AddTimelock(/datum/job/civilian/professor, list( JOB_MEDIC_ROLES = 10 HOURS diff --git a/code/game/jobs/job/civilians/support/doctor.dm b/code/game/jobs/job/civilians/support/doctor.dm index 587c4727690f..9e0853d96e33 100644 --- a/code/game/jobs/job/civilians/support/doctor.dm +++ b/code/game/jobs/job/civilians/support/doctor.dm @@ -32,9 +32,9 @@ //check what job option you took and generate the corresponding the good texte. /datum/job/civilian/doctor/generate_entry_message(mob/living/carbon/human/H) if(doctor) - . = {"You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are a doctor and tasked with keeping the marines healthy and strong, usually in the form of surgery. You are a jack of all trades in medicine: you can medicate, perform surgery and produce pharmaceuticals. If you do not know what you are doing, mentorhelp so a mentor can assist you."} + . = {"You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are a doctor and tasked with keeping the marines healthy and strong, usually in the form of surgery. You are a jack of all trades in medicine: you can medicate, perform surgery and produce pharmaceuticals. If you do not know what you are doing, mentorhelp so a mentor can assist you."} else - . = {"You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are a surgeon and tasked with keeping the marines healthy and strong, usually in the form of surgery. You are a doctor that specializes in surgery, but you are also very capable in pharmacy and triage. If you do not know what you are doing, mentorhelp so a mentor can assist you."} + . = {"You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are a surgeon and tasked with keeping the marines healthy and strong, usually in the form of surgery. You are a doctor that specializes in surgery, but you are also very capable in pharmacy and triage. If you do not know what you are doing, mentorhelp so a mentor can assist you."} /datum/job/civilian/doctor/set_spawn_positions(count) spawn_positions = doc_slot_formula(count) diff --git a/code/game/jobs/job/civilians/support/nurse.dm b/code/game/jobs/job/civilians/support/nurse.dm index 034421d799aa..7a0cab16f559 100644 --- a/code/game/jobs/job/civilians/support/nurse.dm +++ b/code/game/jobs/job/civilians/support/nurse.dm @@ -6,7 +6,7 @@ selection_class = "job_doctor" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/nurse - entry_message_body = "You are tasked with keeping the Marines healthy and strong. You are also an expert when it comes to medication and treatment, and can do minor surgical procedures. Focus on assisting doctors and triaging wounded marines." + entry_message_body = "You are tasked with keeping the Marines healthy and strong. You are also an expert when it comes to medication and treatment, and can do minor surgical procedures. Focus on assisting doctors and triaging wounded marines." /obj/effect/landmark/start/nurse name = JOB_NURSE diff --git a/code/game/jobs/job/civilians/support/researcher.dm b/code/game/jobs/job/civilians/support/researcher.dm index fd33d1f03f0a..61245c8164ab 100644 --- a/code/game/jobs/job/civilians/support/researcher.dm +++ b/code/game/jobs/job/civilians/support/researcher.dm @@ -10,7 +10,7 @@ selection_class = "job_researcher" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_medical/researcher - entry_message_body = "You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are tasked with researching and developing new medical treatments, helping your fellow doctors, and generally learning new things. Your role involves a lot of roleplaying, but you can perform the function of a regular doctor. Do not hand out things to Marines without getting permission from your supervisor." + entry_message_body = "You're a commissioned officer of the USCM, though you are not in the ship's chain of command. You are tasked with researching and developing new medical treatments, helping your fellow doctors, and generally learning new things. Your role involves a lot of roleplaying, but you can perform the function of a regular doctor. Do not hand out things to Marines without getting permission from your supervisor." /datum/job/civilian/researcher/set_spawn_positions(count) spawn_positions = rsc_slot_formula(count) diff --git a/code/game/jobs/job/civilians/support/synthetic.dm b/code/game/jobs/job/civilians/support/synthetic.dm index 10ab895cf276..3e02385bc96c 100644 --- a/code/game/jobs/job/civilians/support/synthetic.dm +++ b/code/game/jobs/job/civilians/support/synthetic.dm @@ -9,7 +9,7 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADMIN_NOTIFY|ROLE_WHITELISTED|ROLE_CUSTOM_SPAWN flags_whitelist = WHITELIST_SYNTHETIC gear_preset = /datum/equipment_preset/synth/uscm - entry_message_body = "You are a Synthetic! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Synthetic Rules. Failure to do so may result in your White-list Removal. Your primary job is to support and assist all USCM Departments and Personnel on-board. In addition, being a Synthetic gives you knowledge in every field and specialization possible on-board the ship. As a Synthetic you answer to the acting commanding officer. Special circumstances may change this!" + entry_message_body = "You are a Synthetic! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Synthetic Rules. Failure to do so may result in your White-list Removal. Your primary job is to support and assist all USCM Departments and Personnel on-board. In addition, being a Synthetic gives you knowledge in every field and specialization possible on-board the ship. As a Synthetic you answer to the acting commanding officer. Special circumstances may change this!" /datum/job/civilian/synthetic/New() . = ..() diff --git a/code/game/jobs/job/civilians/support/working_joe.dm b/code/game/jobs/job/civilians/support/working_joe.dm index bdc7d3aa071b..bc8f8c439900 100644 --- a/code/game/jobs/job/civilians/support/working_joe.dm +++ b/code/game/jobs/job/civilians/support/working_joe.dm @@ -42,9 +42,13 @@ /datum/job/civilian/working_joe/generate_entry_message(mob/living/carbon/human/H) if(standard) - . = {"You are a Working Joe. You are held to a higher standard and are required to obey not only the Server Rules but Marine Law, Roleplay Expectations and Synthetic Rules. Your primary task is to maintain the cleanliness of the ship, putting things in their proper place. Alternatively, your primary task may be to assist with manual labor in limited capacity, or clerical duties. Your capacities are limited, but you have all the equipment you need, and the central AI has a plan! Stay in character at all times. Use the APOLLO link to communicate with your uplink!"} + . = {"You are a Working Joe. You are held to a higher standard and are required to obey not only the Server Rules but Marine Law, Roleplay Expectations and Synthetic Rules. Your primary task is to maintain the cleanliness of the ship, putting things in their proper place. Alternatively, your primary task may be to assist with manual labor in limited capacity, or clerical duties. Your capacities are limited, but you have all the equipment you need, and the central AI has a plan! Stay in character at all times. Use the APOLLO link to communicate with your uplink!"} else - . = {"You are a Working Joe for Hazardous Environments! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law, Roleplay Expectations and Synthetic Rules. You are a variant of the Working Joe built for tougher environments and fulfill the specific duty of dangerous repairs or maintenance. Your primary task is to maintain the reactor, SMES and AI Core. Your secondary task is to respond to hazardous environments, such as an atmospheric breach or biohazard spill, and assist with repairs when ordered to by either an AI Mainframe, or a Commisioned Officer. You should not be seen outside of emergencies besides in Engineering and the AI Core! Stay in character at all times. Use the APOLLO link to communicate with your uplink!"} + . = {"You are a Working Joe for Hazardous Environments! You are held to a higher standard and are required to obey not only the Server Rules but Marine Law, Roleplay Expectations and Synthetic Rules. You are a variant of the Working Joe built for tougher environments and fulfill the specific duty of dangerous repairs or maintenance. Your primary task is to maintain the reactor, SMES and AI Core. Your secondary task is to respond to hazardous environments, such as an atmospheric breach or biohazard spill, and assist with repairs when ordered to by either an AI Mainframe, or a Commisioned Officer. You should not be seen outside of emergencies besides in Engineering and the AI Core! Stay in character at all times. Use the APOLLO link to communicate with your uplink!"} + +/datum/job/civilian/working_joe/announce_entry_message(mob/living/carbon/human/H) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ares_apollo_talk), "[H.real_name] has been activated."), 1.5 SECONDS) + return ..() /obj/effect/landmark/start/working_joe name = JOB_WORKING_JOE diff --git a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm index 262ba271edbf..e5155c949a32 100644 --- a/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm +++ b/code/game/jobs/job/command/auxiliary/auxiliary_support_officer.dm @@ -5,7 +5,7 @@ allow_additional = TRUE flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/auxiliary_officer - entry_message_body = "Your job is to oversee the hangar crew, the intel officers, the engineering department, and requisition department. You have many responsibilities and a few plates to keep spinning but your subordinates are mostly self-reliant. Assist where you can and make sure command personnel are confident the auxiliary departments are operating at peak efficiency." + entry_message_body = "Your job is to oversee the hangar crew, the intel officers, the engineering department, and requisition department. You have many responsibilities and a few plates to keep spinning but your subordinates are mostly self-reliant. Assist where you can and make sure command personnel are confident the auxiliary departments are operating at peak efficiency." AddTimelock(/datum/job/command/auxiliary_officer, list( JOB_SQUAD_ROLES = 5 HOURS, diff --git a/code/game/jobs/job/command/auxiliary/crew_chief.dm b/code/game/jobs/job/command/auxiliary/crew_chief.dm index 5f846bf6581e..c8dfe2a8eb37 100644 --- a/code/game/jobs/job/command/auxiliary/crew_chief.dm +++ b/code/game/jobs/job/command/auxiliary/crew_chief.dm @@ -7,7 +7,7 @@ supervisors = "the pilot officers" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/dcc - entry_message_body = "Your job is to assist the pilot officer maintain the ship's dropship. You have authority only on the dropship, but you are expected to maintain order, as not to disrupt the pilot." + entry_message_body = "Your job is to assist the pilot officer maintain the ship's dropship. You have authority only on the dropship, but you are expected to maintain order, as not to disrupt the pilot." AddTimelock(/datum/job/command/crew_chief, list( JOB_SQUAD_ROLES = 5 HOURS diff --git a/code/game/jobs/job/command/auxiliary/intel.dm b/code/game/jobs/job/command/auxiliary/intel.dm index 10b8381c417e..8d83d49ed143 100644 --- a/code/game/jobs/job/command/auxiliary/intel.dm +++ b/code/game/jobs/job/command/auxiliary/intel.dm @@ -6,9 +6,9 @@ allow_additional = 1 scaled = 1 supervisors = "the auxiliary support officer" - flags_startup_parameters = ROLE_ADD_TO_DEFAULT + flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = "USCM Intelligence Officer (IO) (Cryo)" - entry_message_body = "Your job is to assist the marines in collecting intelligence related to the current operation to better inform command of their opposition. You are in charge of gathering any data disks, folders, and notes you may find on the operational grounds and decrypt them to grant the USCM additional resources." + entry_message_body = "Your job is to assist the marines in collecting intelligence related to the current operation to better inform command of their opposition. You are in charge of gathering any data disks, folders, and notes you may find on the operational grounds and decrypt them to grant the USCM additional resources." /datum/job/command/intel/set_spawn_positions(count) spawn_positions = int_slot_formula(count) diff --git a/code/game/jobs/job/command/auxiliary/pilot.dm b/code/game/jobs/job/command/auxiliary/pilot.dm index 57495fe8be28..a75846f92919 100644 --- a/code/game/jobs/job/command/auxiliary/pilot.dm +++ b/code/game/jobs/job/command/auxiliary/pilot.dm @@ -7,10 +7,11 @@ supervisors = "the auxiliary support officer" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/po - entry_message_body = "Your job is to fly, protect, and maintain the ship's dropship. While you are an officer, your authority is limited to the dropship, where you have authority over the enlisted personnel. If you are not piloting, there is an autopilot fallback for command, but don't leave the dropship without reason." + entry_message_body = "Your job is to fly, protect, and maintain the ship's dropship. While you are an officer, your authority is limited to the dropship, where you have authority over the enlisted personnel. If you are not piloting, there is an autopilot fallback for command, but don't leave the dropship without reason." +// Dropship Roles is both PO and DCC combined to not force people to backtrack AddTimelock(/datum/job/command/pilot, list( - JOB_SQUAD_ROLES = 5 HOURS + JOB_DROPSHIP_ROLES = 2 HOURS )) /obj/effect/landmark/start/pilot diff --git a/code/game/jobs/job/command/auxiliary/senior.dm b/code/game/jobs/job/command/auxiliary/senior.dm index 68b9a99e4c4f..5e9b7caf1f10 100644 --- a/code/game/jobs/job/command/auxiliary/senior.dm +++ b/code/game/jobs/job/command/auxiliary/senior.dm @@ -3,10 +3,13 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADMIN_NOTIFY|ROLE_WHITELISTED flags_whitelist = WHITELIST_MENTOR gear_preset = /datum/equipment_preset/uscm_ship/sea - entry_message_body = "You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Standard Operating Procedure. Failure to do so may result in your Mentorship Removal. Your primary job is to teach others the game and its mechanics, and offer advice to all USCM Departments and Personnel on-board." job_options = list("Gunnery Sergeant" = "GySGT", "Master Sergeant" = "MSgt", "First Sergeant" = "1Sgt", "Master Gunnery Sergeant" = "MGySgt", "Sergeant Major" = "SgtMaj") +/datum/job/command/senior/on_config_load() + entry_message_body = "You are held to a higher standard and are required to obey not only the Server Rules but Marine Law and Standard Operating Procedure. Failure to do so may result in your Mentorship Removal. Your primary job is to teach others the game and its mechanics, and offer advice to all USCM Departments and Personnel on-board." + return ..() + /datum/job/command/senior/announce_entry_message(mob/living/carbon/human/H) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(all_hands_on_deck), "Attention all hands, [H.get_paygrade(0)] [H.real_name] on deck!"), 1.5 SECONDS) return ..() diff --git a/code/game/jobs/job/command/cic/captain.dm b/code/game/jobs/job/command/cic/captain.dm index 4049554f7799..98db585e1d07 100644 --- a/code/game/jobs/job/command/cic/captain.dm +++ b/code/game/jobs/job/command/cic/captain.dm @@ -16,7 +16,7 @@ ) /datum/job/command/commander/generate_entry_message() - entry_message_body = "You are the Commanding Officer of the [MAIN_SHIP_NAME] as well as the operation. Your goal is to lead the Marines on their mission as well as protect and command the ship and her crew. Your job involves heavy roleplay and requires you to behave like a high-ranking officer and to stay in character at all times. As the Commanding Officer your only superior is High Command itself. You must abide by the Commanding Officer Code of Conduct. Failure to do so may result in punitive action against you. Godspeed." + entry_message_body = "You are the Commanding Officer of the [MAIN_SHIP_NAME] as well as the operation. Your goal is to lead the Marines on their mission as well as protect and command the ship and her crew. Your job involves heavy roleplay and requires you to behave like a high-ranking officer and to stay in character at all times. As the Commanding Officer your only superior is High Command itself. You must abide by the Commanding Officer Code of Conduct. Failure to do so may result in punitive action against you. Godspeed." return ..() /datum/job/command/commander/get_whitelist_status(list/roles_whitelist, client/player) diff --git a/code/game/jobs/job/command/cic/executive.dm b/code/game/jobs/job/command/cic/executive.dm index cc9b4f65e624..f717a03e1229 100644 --- a/code/game/jobs/job/command/cic/executive.dm +++ b/code/game/jobs/job/command/cic/executive.dm @@ -5,7 +5,7 @@ gear_preset = /datum/equipment_preset/uscm_ship/xo /datum/job/command/executive/generate_entry_message(mob/living/carbon/human/H) - entry_message_body = "You are second in command aboard the [MAIN_SHIP_NAME], and are in next in the chain of command after the Commanding Officer. Where applicable, you must abide by the Commanding Officer Code of Conduct. You may need to fill in for other duties if areas are understaffed, and you are given access to do so. Make the USCM proud!" + entry_message_body = "You are second in command aboard the [MAIN_SHIP_NAME], and are in next in the chain of command after the Commanding Officer. Where applicable, you must abide by the Commanding Officer Code of Conduct. You may need to fill in for other duties if areas are understaffed, and you are given access to do so. Make the USCM proud!" return ..() /datum/job/command/executive/generate_entry_conditions(mob/living/M, whitelist_status) diff --git a/code/game/jobs/job/command/cic/staffofficer.dm b/code/game/jobs/job/command/cic/staffofficer.dm index 82a537dc83f6..fff51624aa4b 100644 --- a/code/game/jobs/job/command/cic/staffofficer.dm +++ b/code/game/jobs/job/command/cic/staffofficer.dm @@ -6,7 +6,7 @@ scaled = FALSE flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/so - entry_message_body = "Your job is to monitor the Marines, man the CIC, and listen to your superior officers. You are in charge of logistics and the overwatch system. You are also in line to take command after other eligible superior commissioned officers." + entry_message_body = "Your job is to monitor the Marines, man the CIC, and listen to your superior officers. You are in charge of logistics and the overwatch system. You are also in line to take command after other eligible superior commissioned officers." /datum/job/command/bridge/set_spawn_positions(count) spawn_positions = so_slot_formula(count) diff --git a/code/game/jobs/job/command/command.dm b/code/game/jobs/job/command/command.dm index b95ddfe9d33c..d430352d6e83 100644 --- a/code/game/jobs/job/command/command.dm +++ b/code/game/jobs/job/command/command.dm @@ -26,4 +26,11 @@ /datum/timelock/human/get_role_requirement(client/C) return time_required - C.get_total_human_playtime() + +/datum/timelock/dropship + name = "Dropship Roles" + +/datum/timelock/dropship/New(name, time_required, list/roles) + . = ..() + src.roles = JOB_DROPSHIP_ROLES_LIST diff --git a/code/game/jobs/job/command/police/chief_police.dm b/code/game/jobs/job/command/police/chief_police.dm index 60bc564af3b1..b76943c4d0ac 100644 --- a/code/game/jobs/job/command/police/chief_police.dm +++ b/code/game/jobs/job/command/police/chief_police.dm @@ -4,7 +4,7 @@ selection_class = "job_cmp" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/cmp - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. You lead the Military Police, ensure your officers maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" AddTimelock(/datum/job/command/warrant, list( JOB_POLICE_ROLES = 15 HOURS, diff --git a/code/game/jobs/job/command/police/police.dm b/code/game/jobs/job/command/police/police.dm index 48cd9b33e99c..7285c5b278b1 100644 --- a/code/game/jobs/job/command/police/police.dm +++ b/code/game/jobs/job/command/police/police.dm @@ -8,7 +8,7 @@ selection_class = "job_mp" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/mp - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the security of high-ranking personnel, including the command staff. Keep them safe!" /datum/job/command/police/set_spawn_positions(count) spawn_positions = mp_slot_formula(count) diff --git a/code/game/jobs/job/command/police/warden.dm b/code/game/jobs/job/command/police/warden.dm index 851b43debd3c..55cbea975401 100644 --- a/code/game/jobs/job/command/police/warden.dm +++ b/code/game/jobs/job/command/police/warden.dm @@ -5,7 +5,7 @@ flags_startup_parameters = ROLE_ADD_TO_DEFAULT supervisors = "the Chief MP" gear_preset = /datum/equipment_preset/uscm_ship/uscm_police/warden - entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the mainting security records and overwatching any prisoners in Brig." + entry_message_body = "You are held by a higher standard and are required to obey not only the server rules but the Marine Law. Failure to do so may result in a job ban or server ban. Your primary job is to maintain peace and stability aboard the ship. Marines can get rowdy after a few weeks of cryosleep! In addition, you are tasked with the mainting security records and overwatching any prisoners in Brig." AddTimelock(/datum/job/command/warden, list( JOB_POLICE_ROLES = 10 HOURS diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 0785fc5c337f..0d68d23e5524 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -43,8 +43,25 @@ /datum/job/New() . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_CONFIG_LOADED, PROC_REF(on_config_load)) + minimum_playtimes = setup_requirements(list()) - if(!disp_title) disp_title = title + if(!disp_title) + disp_title = title + +/datum/job/proc/on_config_load() + if(entry_message_body) + entry_message_body = replace_placeholders(entry_message_body) + +/datum/job/proc/replace_placeholders(replacement_string) + replacement_string = replacetextEx(replacement_string, "%WIKIURL%", generate_wiki_link()) + replacement_string = replacetextEx(replacement_string, "%LAWURL%", "[CONFIG_GET(string/wikiarticleurl)]/[URL_WIKI_LAW]") + return replacement_string + +/datum/job/proc/generate_wiki_link() + if(!CONFIG_GET(string/wikiarticleurl)) + return "" + return "[CONFIG_GET(string/wikiarticleurl)]/[replacetext(title, " ", "_")]" /datum/job/proc/get_whitelist_status(list/roles_whitelist, client/player) if(!roles_whitelist) diff --git a/code/game/jobs/job/logistics/cargo/cargo_tech.dm b/code/game/jobs/job/logistics/cargo/cargo_tech.dm index 8041e8c82c75..3b588022bd97 100644 --- a/code/game/jobs/job/logistics/cargo/cargo_tech.dm +++ b/code/game/jobs/job/logistics/cargo/cargo_tech.dm @@ -8,7 +8,7 @@ selection_class = "job_ct" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/cargo - entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Stay in your department when possible to ensure the marines have full access to the supplies they may require. Listen to the radio in case someone requests a supply drop via the overwatch system." + entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Stay in your department when possible to ensure the marines have full access to the supplies they may require. Listen to the radio in case someone requests a supply drop via the overwatch system." /datum/job/logistics/cargo/set_spawn_positions(count) spawn_positions = ct_slot_formula(count) diff --git a/code/game/jobs/job/logistics/cargo/chief_req.dm b/code/game/jobs/job/logistics/cargo/chief_req.dm index 3b6fb7262a80..76b7e98f2db8 100644 --- a/code/game/jobs/job/logistics/cargo/chief_req.dm +++ b/code/game/jobs/job/logistics/cargo/chief_req.dm @@ -3,7 +3,7 @@ selection_class = "job_qm" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/qm - entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Your cargo techs can help you out, but you have final say in your department. Make sure they're not goofing off. While you may request paperwork for supplies, do not go out of your way to screw with marines, unless you want to get deposed. A happy ship is a well-functioning ship." + entry_message_body = "Your job is to dispense supplies to the marines, including weapon attachments. Your cargo techs can help you out, but you have final say in your department. Make sure they're not goofing off. While you may request paperwork for supplies, do not go out of your way to screw with marines, unless you want to get deposed. A happy ship is a well-functioning ship." AddTimelock(/datum/job/logistics/requisition, list( JOB_REQUISITION_ROLES = 10 HOURS, diff --git a/code/game/jobs/job/logistics/engi/chief_engineer.dm b/code/game/jobs/job/logistics/engi/chief_engineer.dm index 9db14540e74a..3a15c8632953 100644 --- a/code/game/jobs/job/logistics/engi/chief_engineer.dm +++ b/code/game/jobs/job/logistics/engi/chief_engineer.dm @@ -3,7 +3,7 @@ selection_class = "job_ce" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/chief_engineer - entry_message_body = "Your job is to maintain your department and keep your technicians in check. You are responsible for engineering, power, ordnance, and the orbital cannon. Should the commanding and executive officer be unavailable, you are next in the chain of command." + entry_message_body = "Your job is to maintain your department and keep your technicians in check. You are responsible for engineering, power, ordnance, and the orbital cannon. Should the commanding and executive officer be unavailable, you are next in the chain of command." AddTimelock(/datum/job/logistics/engineering, list( JOB_ENGINEER_ROLES = 10 HOURS, diff --git a/code/game/jobs/job/logistics/engi/maint_tech.dm b/code/game/jobs/job/logistics/engi/maint_tech.dm index 7aa380a0bd79..8562408360d7 100644 --- a/code/game/jobs/job/logistics/engi/maint_tech.dm +++ b/code/game/jobs/job/logistics/engi/maint_tech.dm @@ -6,7 +6,7 @@ selection_class = "job_ot" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/maint - entry_message_body = "Your job is to maintain the integrity of the ship, including the orbital cannon. You remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." + entry_message_body = "Your job is to maintain the integrity of the ship, including the orbital cannon. You remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." /obj/effect/landmark/start/maint name = JOB_MAINT_TECH diff --git a/code/game/jobs/job/logistics/engi/ordnance_tech.dm b/code/game/jobs/job/logistics/engi/ordnance_tech.dm index e0df5f49a546..bed0acf15887 100644 --- a/code/game/jobs/job/logistics/engi/ordnance_tech.dm +++ b/code/game/jobs/job/logistics/engi/ordnance_tech.dm @@ -9,7 +9,7 @@ selection_class = "job_ot" flags_startup_parameters = ROLE_ADD_TO_DEFAULT gear_preset = /datum/equipment_preset/uscm_ship/ordn - entry_message_body = "Your job is to maintain the integrity of the USCM weapons, munitions and equipment, including the orbital cannon. You can use the workshop in the portside hangar to construct new armaments for the marines. However you remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." + entry_message_body = "Your job is to maintain the integrity of the USCM weapons, munitions and equipment, including the orbital cannon. You can use the workshop in the portside hangar to construct new armaments for the marines. However you remain one of the more flexible roles on the ship and as such may receive other menial tasks from your superiors." /datum/job/logistics/otech/set_spawn_positions(count) spawn_positions = ot_slot_formula(count) diff --git a/code/game/jobs/job/marine/squad/engineer.dm b/code/game/jobs/job/marine/squad/engineer.dm index 7645d95948f3..00a6b91dcffd 100644 --- a/code/game/jobs/job/marine/squad/engineer.dm +++ b/code/game/jobs/job/marine/squad/engineer.dm @@ -5,7 +5,7 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/engineer - entry_message_body = "You have the equipment and skill to build fortifications, reroute power lines, and bunker down. Your squaddies will look to you when it comes to construction in the field of battle." + entry_message_body = "You have the equipment and skill to build fortifications, reroute power lines, and bunker down. Your squaddies will look to you when it comes to construction in the field of battle." /datum/job/marine/engineer/set_spawn_positions(count) for(var/datum/squad/sq in RoleAuthority.squads) diff --git a/code/game/jobs/job/marine/squad/leader.dm b/code/game/jobs/job/marine/squad/leader.dm index aa2173d173d0..960a80d5f659 100644 --- a/code/game/jobs/job/marine/squad/leader.dm +++ b/code/game/jobs/job/marine/squad/leader.dm @@ -5,7 +5,7 @@ supervisors = "the acting commanding officer" flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/leader - entry_message_body = "You are responsible for the men and women of your squad. Make sure they are on task, working together, and communicating. You are also in charge of communicating with command and letting them know about the situation first hand. Keep out of harm's way." + entry_message_body = "You are responsible for the men and women of your squad. Make sure they are on task, working together, and communicating. You are also in charge of communicating with command and letting them know about the situation first hand. Keep out of harm's way." /datum/job/marine/leader/whiskey title = JOB_WO_SQUAD_LEADER diff --git a/code/game/jobs/job/marine/squad/medic.dm b/code/game/jobs/job/marine/squad/medic.dm index 637567d47d4d..cdbd74acefde 100644 --- a/code/game/jobs/job/marine/squad/medic.dm +++ b/code/game/jobs/job/marine/squad/medic.dm @@ -5,7 +5,7 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/medic - entry_message_body = "You tend the wounds of your squad mates and make sure they are healthy and active. You may not be a fully-fledged doctor, but you stand between life and death when it matters." + entry_message_body = "You tend the wounds of your squad mates and make sure they are healthy and active. You may not be a fully-fledged doctor, but you stand between life and death when it matters." /datum/job/marine/medic/set_spawn_positions(count) for(var/datum/squad/sq in RoleAuthority.squads) diff --git a/code/game/jobs/job/marine/squad/smartgunner.dm b/code/game/jobs/job/marine/squad/smartgunner.dm index 5753434e62ee..aacc562f921b 100644 --- a/code/game/jobs/job/marine/squad/smartgunner.dm +++ b/code/game/jobs/job/marine/squad/smartgunner.dm @@ -6,7 +6,7 @@ scaled = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/sg - entry_message_body = "You are the smartgunner. Your task is to provide heavy weapons support." + entry_message_body = "You are the smartgunner. Your task is to provide heavy weapons support." /datum/job/marine/smartgunner/set_spawn_positions(count) spawn_positions = sg_slot_formula(count) diff --git a/code/game/jobs/job/marine/squad/specialist.dm b/code/game/jobs/job/marine/squad/specialist.dm index 539d3a158690..42ee69ef2d5c 100644 --- a/code/game/jobs/job/marine/squad/specialist.dm +++ b/code/game/jobs/job/marine/squad/specialist.dm @@ -6,7 +6,7 @@ scaled = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/spec - entry_message_body = "You are the very rare and valuable weapon expert, trained to use special equipment. You can serve a variety of roles, so choose carefully." + entry_message_body = "You are the very rare and valuable weapon expert, trained to use special equipment. You can serve a variety of roles, so choose carefully." /datum/job/marine/specialist/set_spawn_positions(count) spawn_positions = spec_slot_formula(count) diff --git a/code/game/jobs/job/marine/squad/tl.dm b/code/game/jobs/job/marine/squad/tl.dm index f6c58cce3e0d..ebebf360e830 100644 --- a/code/game/jobs/job/marine/squad/tl.dm +++ b/code/game/jobs/job/marine/squad/tl.dm @@ -5,7 +5,7 @@ allow_additional = 1 flags_startup_parameters = ROLE_ADD_TO_DEFAULT|ROLE_ADD_TO_SQUAD gear_preset = /datum/equipment_preset/uscm/tl - entry_message_body = "You are the Team Leader.Your task is to assist the squad leader in leading the squad as well as utilize ordnance such as orbital bombardments, CAS, and mortar as well as coordinating resupply with Requisitions and CIC. If the squad leader dies, you are expected to lead in their place." + entry_message_body = "You are the Team Leader.Your task is to assist the squad leader in leading the squad as well as utilize ordnance such as orbital bombardments, CAS, and mortar as well as coordinating resupply with Requisitions and CIC. If the squad leader dies, you are expected to lead in their place." /datum/job/marine/tl/generate_entry_conditions(mob/living/carbon/human/spawning_human) . = ..() diff --git a/code/game/jobs/job/marine/squads.dm b/code/game/jobs/job/marine/squads.dm index 116de402104d..80f00c540383 100644 --- a/code/game/jobs/job/marine/squads.dm +++ b/code/game/jobs/job/marine/squads.dm @@ -31,6 +31,8 @@ var/tracking_id = null //Used for the tracking subsystem /// Maximum number allowed in a squad. Defaults to infinite var/max_positions = -1 + /// If uses the overlay + var/use_stripe_overlay = TRUE /// Color for the squad marines gear overlays var/equipment_color = "#FFFFFF" /// The alpha for the armor overlay used by equipment color @@ -108,6 +110,9 @@ var/minimap_color = MINIMAP_SQUAD_UNKNOWN + ///Should we add the name of our squad in front of their name? Ex: Alpha Hospital Corpsman + var/prepend_squad_name_to_assignment = TRUE + /datum/squad/marine name = "Root" @@ -175,6 +180,23 @@ roundstart = FALSE locked = TRUE +/datum/squad/marine/intel + name = SQUAD_MARINE_INTEL + use_stripe_overlay = FALSE + equipment_color = "#053818" + minimap_color = MINIMAP_SQUAD_INTEL + radio_freq = INTEL_FREQ + + roundstart = FALSE + prepend_squad_name_to_assignment = FALSE + + max_engineers = 0 + max_medics = 0 + max_specialists = 0 + max_tl = 0 + max_smartgun = 0 + max_leaders = 0 + /datum/squad/marine/sof name = SQUAD_SOF equipment_color = "#400000" @@ -496,7 +518,10 @@ marines_list += M M.assigned_squad = src //Add them to the squad C.access += (src.access + extra_access) //Add their squad access to their ID - C.assignment = "[name] [assignment]" + if(prepend_squad_name_to_assignment) + C.assignment = "[name] [assignment]" + else + C.assignment = assignment SEND_SIGNAL(M, COMSIG_SET_SQUAD) @@ -505,7 +530,7 @@ C.name = "[C.registered_name]'s ID Card ([C.assignment])" var/obj/item/device/radio/headset/almayer/marine/headset = locate() in list(M.wear_l_ear, M.wear_r_ear) - if(headset) + if(headset && radio_freq) headset.set_frequency(radio_freq) M.update_inv_head() M.update_inv_wear_suit() diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm index d1934c597da7..c147807f004e 100644 --- a/code/game/jobs/role_authority.dm +++ b/code/game/jobs/role_authority.dm @@ -652,6 +652,15 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou if (S.roundstart && S.usable && S.faction == H.faction && S.name != "Root") mixed_squads += S + //Deal with IOs first + if(H.job == JOB_INTEL) + var/datum/squad/intel_squad = get_squad_by_name(SQUAD_MARINE_INTEL) + if(!intel_squad || !istype(intel_squad)) //Something went horribly wrong! + to_chat(H, "Something went wrong with randomize_squad()! Tell a coder!") + return + intel_squad.put_marine_in_squad(H) //Found one, finish up + return + //Deal with non-standards first. //Non-standards are distributed regardless of squad population. //If the number of available positions for the job are more than max_whatever, it will break. diff --git a/code/game/machinery/ARES/ARES_step_triggers.dm b/code/game/machinery/ARES/ARES_step_triggers.dm index 335a877f9f25..51480371be51 100644 --- a/code/game/machinery/ARES/ARES_step_triggers.dm +++ b/code/game/machinery/ARES/ARES_step_triggers.dm @@ -25,7 +25,7 @@ return FALSE if(!(ishuman(passer) || isxeno(passer))) return FALSE - if(passer.alpha <= 100)//Can't be seen/detected to trigger alert. + if(HAS_TRAIT(passer, TRAIT_CLOAKED)) return FALSE if(pass_jobs) if(passer.job in pass_jobs) @@ -117,7 +117,7 @@ return FALSE if(!passer) return FALSE - if(passer.alpha <= 100)//Can't be seen/detected to trigger alert. + if(HAS_TRAIT(passer, TRAIT_CLOAKED))//Can't be seen/detected to trigger alert. return FALSE var/area/pass_area = get_area(get_step(passer, passer.dir)) if(istype(pass_area, /area/almayer/command/airoom))//Don't want it to freak out over someone /entering/ the area. Only leaving. diff --git a/code/game/machinery/autolathe_datums.dm b/code/game/machinery/autolathe_datums.dm index 02de2b200821..fa6fec094c59 100644 --- a/code/game/machinery/autolathe_datums.dm +++ b/code/game/machinery/autolathe_datums.dm @@ -267,12 +267,6 @@ hidden = TRUE category = AUTOLATHE_CATEGORY_DEVICES_AND_COMPONENTS -/datum/autolathe/recipe/welder_industrial - name = "industrial blowtorch" - path = /obj/item/tool/weldingtool/largetank - hidden = TRUE - category = AUTOLATHE_CATEGORY_TOOLS - /datum/autolathe/recipe/handcuffs name = "handcuffs" path = /obj/item/handcuffs diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 4d17e4a08803..d416c561fcd3 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -187,9 +187,9 @@ else visible_message(SPAN_WARNING("[user] has deactivated [src]!")) if(status) - icon_state = initial(icon_state) + icon_state = "camera" else - icon_state = "[initial(icon_state)]1" + icon_state = "camera1" // now disconnect anyone using the camera //Apparently, this will disconnect anyone even if the camera was re-activated. //I guess that doesn't matter since they can't use it anyway? diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm index 783d24c00f2e..ff26ce802b08 100644 --- a/code/game/machinery/fax_machine.dm +++ b/code/game/machinery/fax_machine.dm @@ -396,7 +396,7 @@ var/list/alldepartments = list() P.stamps += "
This paper has been stamped by the USCM High Command Quantum Relay." if("NC4 UA Federal Secure Network - CMB Relay") var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-uscm" // placeholder icon + stampoverlay.icon_state = "paper_stamp-cmb" if(!P.stamped) P.stamped = new P.stamped += /obj/item/tool/stamp @@ -404,7 +404,7 @@ var/list/alldepartments = list() P.stamps += "
This paper has been stamped by The Office of Colonial Marshals." if("Weyland-Yutani Quantum Relay") var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-cent" + stampoverlay.icon_state = "paper_stamp-weyyu" if(!P.stamped) P.stamped = new P.stamped += /obj/item/tool/stamp diff --git a/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm b/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm index fac4182ea5fe..830511ad4b19 100644 --- a/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm @@ -91,7 +91,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_commanding_officer, list( list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Autoinjector Pouch", 0, /obj/item/storage/pouch/autoinjector/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/crew/medical.dm b/code/game/machinery/vending/vendor_types/crew/medical.dm index f1574c8104ff..5dfb6b347b5d 100644 --- a/code/game/machinery/vending/vendor_types/crew/medical.dm +++ b/code/game/machinery/vending/vendor_types/crew/medical.dm @@ -66,7 +66,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_doctor, list( list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -122,7 +122,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_nurse, list( list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -181,7 +181,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_researcher, list( list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), diff --git a/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm b/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm index 8d86669a1f70..027c9bec2d13 100644 --- a/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/pilot_officer.dm @@ -96,7 +96,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_pilot_officer, list( list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -185,7 +185,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_dropship_crew_chief, list( list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/crew/sea.dm b/code/game/machinery/vending/vendor_types/crew/sea.dm index ee583828ec44..0da9181beb97 100644 --- a/code/game/machinery/vending/vendor_types/crew/sea.dm +++ b/code/game/machinery/vending/vendor_types/crew/sea.dm @@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_sea, list( list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm index 55053bd724bd..88a3647777d4 100644 --- a/code/game/machinery/vending/vendor_types/crew/senior_officers.dm +++ b/code/game/machinery/vending/vendor_types/crew/senior_officers.dm @@ -173,9 +173,12 @@ GLOBAL_LIST_INIT(cm_vending_clothing_req_officer, list( list("Quartermaster Uniform", 0, /obj/item/clothing/under/rank/qm_suit, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/qm, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Satchel", 0, /obj/item/storage/backpack/marine/satchel/tech, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - list("Req Cap", 0, /obj/item/clothing/head/cmcap/req, MARINE_CAN_BUY_MASK, VENDOR_ITEM_MANDATORY), list("Quartermaster Jacket", 0, /obj/item/clothing/suit/storage/RO, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Headgear (CHOOSE 1)", 0, null, null, null), + list("Quartermaster Cap", 0, /obj/item/clothing/head/cmcap/req/ro, MARINE_CAN_BUY_MASK, VENDOR_ITEM_RECOMMENDED), + list("Requisitions Cap", 0, /obj/item/clothing/head/cmcap/req, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/full, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("Mod 88 Pistol", 0, /obj/item/storage/belt/gun/m4a3/mod88, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), @@ -245,7 +248,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -268,10 +271,14 @@ GLOBAL_LIST_INIT(cm_vending_clothing_cmo, list( GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Service Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom/cdrcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Satchel", 0, /obj/item/storage/backpack/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + list("UNIFORM (CHOOSE ONE)", 0, null, null, null), + list("Service Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Operations Uniform", 0, /obj/item/clothing/under/marine/officer/boiler, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Formal Uniform", 0, /obj/effect/essentials_set/xoformal, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("PERSONAL WEAPON (CHOOSE 1)", 0, null, null, null), list("VP78 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp78, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("M4A3 Service Pistol", 0, /obj/item/storage/belt/gun/m4a3/commander, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_REGULAR), @@ -316,9 +323,9 @@ GLOBAL_LIST_INIT(cm_vending_clothing_xo, list( list("HATS (CHOOSE 1)", 0, null, null, null), list("Officer Beret", 0, /obj/item/clothing/head/beret/marine/chiefofficer, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), - list("Peaked cap", 0, /obj/item/clothing/head/marine/peaked, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Service Peaked Cap", 0, /obj/item/clothing/head/marine/peaked/service, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("Patrol Cap", 0, /obj/item/clothing/head/cmcap, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), - list("Officer Cap", 0, /obj/item/clothing/head/cmcap/ro, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Officer Cap", 0, /obj/item/clothing/head/cmcap/bridge, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), )) @@ -364,3 +371,10 @@ GLOBAL_LIST_INIT(cm_vending_clothing_auxiliary_officer, list( /obj/item/storage/belt/security/MP/full, /obj/item/clothing/head/helmet/marine/MP/WO, ) + +/obj/effect/essentials_set/xoformal + spawned_gear_list = list( + /obj/item/clothing/suit/storage/jacket/marine/dress, + /obj/item/clothing/head/marine/peaked, + /obj/item/clothing/under/marine/dress, + ) diff --git a/code/game/machinery/vending/vendor_types/crew/staff_officer.dm b/code/game/machinery/vending/vendor_types/crew/staff_officer.dm index 3edbee6bbc47..85a8a58d162e 100644 --- a/code/game/machinery/vending/vendor_types/crew/staff_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/staff_officer.dm @@ -11,12 +11,16 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Service Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), + list("Operations Uniform", 0, /obj/item/clothing/under/marine/officer/boiler, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("JACKET (CHOOSE 1)", 0, null, null, null), list("Service Jacket", 0, /obj/item/clothing/suit/storage/jacket/marine/service, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), @@ -24,6 +28,8 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer, list( list("Beret, Green", 0, /obj/item/clothing/head/beret/cm, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("Beret, Tan", 0, /obj/item/clothing/head/beret/cm/tan, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("Patrol Cap", 0, /obj/item/clothing/head/cmcap, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Officer Cap", 0, /obj/item/clothing/head/cmcap/bridge, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + list("Service Peaked Cap", 0, /obj/item/clothing/head/marine/peaked/service, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), @@ -62,7 +68,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer, list( list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, 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), diff --git a/code/game/machinery/vending/vendor_types/crew/synthetic.dm b/code/game/machinery/vending/vendor_types/crew/synthetic.dm index 8ddd8df4c3a2..941b73edf5d2 100644 --- a/code/game/machinery/vending/vendor_types/crew/synthetic.dm +++ b/code/game/machinery/vending/vendor_types/crew/synthetic.dm @@ -18,10 +18,9 @@ list("Multitool", 4, /obj/item/device/multitool, null, VENDOR_ITEM_REGULAR), list("Plasteel x10", 7, /obj/item/stack/sheet/plasteel/small_stack, null, VENDOR_ITEM_REGULAR), list("Sandbags x25", 10, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_REGULAR), - list("Industrial Blowtorch", 2, /obj/item/tool/weldingtool/largetank, null, VENDOR_ITEM_REGULAR), - list("High-Capacity Industrial Blowtorch", 4, /obj/item/tool/weldingtool/hugetank, null, VENDOR_ITEM_REGULAR), list("Plastic Explosive", 3, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), - list("Toolkit", 1, /obj/item/storage/firstaid/toolkit/empty, null, VENDOR_ITEM_REGULAR), + list("ES-11 Mobile Fuel Canister", 4, /obj/item/tool/weldpack/minitank, null, VENDOR_ITEM_REGULAR), + list("Engineer Kit", 1, /obj/item/storage/toolkit/empty, null, VENDOR_ITEM_REGULAR), list("FIRSTAID KITS", 0, null, null, null), list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_REGULAR), @@ -115,8 +114,12 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list( 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("M3A1 Pattern Synthetic Utility Vest (UA Gray)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/vanilla, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), - list("M3A1 Pattern Synthetic Utility Vest (Mission-Specific Camo)", 0, /obj/item/clothing/suit/storage/marine/light/synvest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (Mission-Specific Camo)", 0, /obj/item/clothing/suit/storage/marine/light/synvest, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), + list("M3A1 Pattern Synthetic Utility Vest (UA Gray)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/grey, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (UA Dark Grey)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/dgrey, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (UA Jungle)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/jungle, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (UA Snow)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/snow, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("M3A1 Pattern Synthetic Utility Vest (UA Desert)", 0, /obj/item/clothing/suit/storage/marine/light/synvest/desert, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), list("GLOVES (CHOOSE 1)", 0, null, null, null), list("Insulated Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_RECOMMENDED), @@ -150,7 +153,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list( list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -175,14 +178,18 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth, list( //------------SNOWFLAKE VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( - list("UNIFORM", 0, null, null, null), + list("USCM UNIFORMS", 0, null, null, null), list("Medical Scrubs, Blue", 12, /obj/item/clothing/under/rank/medical/blue, null, VENDOR_ITEM_REGULAR), list("Medical Scrubs, Green", 12, /obj/item/clothing/under/rank/medical/green, null, VENDOR_ITEM_REGULAR), list("Medical Scrubs, Purple", 12, /obj/item/clothing/under/rank/medical/purple, null, VENDOR_ITEM_REGULAR), list("Medical Scrubs, White", 12, /obj/item/clothing/under/rank/medical, null, VENDOR_ITEM_REGULAR), list("USCM Service Uniform", 12, /obj/item/clothing/under/marine/officer/bridge, null, VENDOR_ITEM_REGULAR), list("USCM Flightsuit", 12, /obj/item/clothing/under/rank/synthetic/flight, null, VENDOR_ITEM_REGULAR), - list("USCM Engineer Uniform", 12, /obj/item/clothing/under/marine/officer/engi, null, VENDOR_ITEM_REGULAR), + list("USCM Engineers Uniform", 12, /obj/item/clothing/under/marine/engineer, null, VENDOR_ITEM_REGULAR), + list("USCM Engineering Officers Uniform", 12, /obj/item/clothing/under/marine/officer/engi, null, VENDOR_ITEM_REGULAR), + list("USCM Military Police Uniform", 12, /obj/item/clothing/under/marine/mp, null, VENDOR_ITEM_REGULAR), + + list("NON-STANDARD UNIFORMS", 0, null, null, null), list("White T-Shirt and Brown Jeans", 12, /obj/item/clothing/under/tshirt/w_br, null, VENDOR_ITEM_REGULAR), list("Gray T-Shirt and Blue Jeans", 12, /obj/item/clothing/under/tshirt/gray_blu, null, VENDOR_ITEM_REGULAR), list("Red T-Shirt and Black Jeans", 12, /obj/item/clothing/under/tshirt/r_bla, null, VENDOR_ITEM_REGULAR), @@ -202,6 +209,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( list("Marine RPG Glasses", 12, /obj/item/clothing/glasses/regular, null, VENDOR_ITEM_REGULAR), list("Optical Meson Scanner", 12, /obj/item/clothing/glasses/meson, null, VENDOR_ITEM_REGULAR), list("PatrolMate HUD", 12, /obj/item/clothing/glasses/hud/security, null, VENDOR_ITEM_REGULAR), + list("Security HUD Glasses", 12, /obj/item/clothing/glasses/sunglasses/sechud, null, VENDOR_ITEM_REGULAR), list("Sunglasses", 12, /obj/item/clothing/glasses/sunglasses, null, VENDOR_ITEM_REGULAR), list("Welding Goggles", 12, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), @@ -217,7 +225,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( list("Shoes, Yellow", 12, /obj/item/clothing/shoes/yellow, null, VENDOR_ITEM_REGULAR), list("Shoes, Seegson", 24, /obj/item/clothing/shoes/dress, null, VENDOR_ITEM_REGULAR), - list("HELMET", 0, null, null, null), + list("HEADWEAR", 0, null, null, null), list("Beanie", 12, /obj/item/clothing/head/beanie, null, VENDOR_ITEM_REGULAR), list("Beret, Engineering", 12, /obj/item/clothing/head/beret/eng, null, VENDOR_ITEM_REGULAR), list("Beret, Purple", 12, /obj/item/clothing/head/beret/jan, null, VENDOR_ITEM_REGULAR), @@ -230,15 +238,21 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( list("Ushanka", 12, /obj/item/clothing/head/ushanka, null, VENDOR_ITEM_REGULAR), list("Cap", 12, /obj/item/clothing/head/cmcap, null, VENDOR_ITEM_REGULAR), list("MP Cap", 12, /obj/item/clothing/head/beret/marine/mp/mpcap, null, VENDOR_ITEM_REGULAR), - list("RO Cap", 12, /obj/item/clothing/head/cmcap/req, null, VENDOR_ITEM_REGULAR), - list("Officer Cap", 12, /obj/item/clothing/head/cmcap/ro, null, VENDOR_ITEM_REGULAR), - list("Marine Helmet", 12, /obj/item/clothing/head/helmet/marine, null, VENDOR_ITEM_REGULAR), - list("Grey Marine Helmet", 12, /obj/item/clothing/head/helmet/marine/grey, null, VENDOR_ITEM_REGULAR), + list("QM Cap", 12, /obj/item/clothing/head/cmcap/req/ro, null, VENDOR_ITEM_REGULAR), + list("Req Cap", 12, /obj/item/clothing/head/cmcap/req, null, VENDOR_ITEM_REGULAR), + list("Officer Cap", 12, /obj/item/clothing/head/cmcap/bridge, null, VENDOR_ITEM_REGULAR), + list("Bio Hood", 12, /obj/item/clothing/head/bio_hood/synth, null, VENDOR_ITEM_REGULAR), + + list("HELMET", 0, null, null, null), + list("Marine Helmet (Mission-Specific Camo)", 12, /obj/item/clothing/head/helmet/marine, null, VENDOR_ITEM_REGULAR), + list("Marine Helmet (Grey)", 12, /obj/item/clothing/head/helmet/marine/grey, null, VENDOR_ITEM_REGULAR), + list("Marine Helmet (Jungle)", 12, /obj/item/clothing/head/helmet/marine/jungle, null, VENDOR_ITEM_REGULAR), + list("Marine Helmet (Snow)", 12, /obj/item/clothing/head/helmet/marine/snow, null, VENDOR_ITEM_REGULAR), + list("Marine Helmet (Desert)", 12, /obj/item/clothing/head/helmet/marine/desert, null, VENDOR_ITEM_REGULAR), list("Technician Helmet", 12, /obj/item/clothing/head/helmet/marine/tech, null, VENDOR_ITEM_REGULAR), list("Corpsman Helmet", 12, /obj/item/clothing/head/helmet/marine/medic, null, VENDOR_ITEM_REGULAR), list("Attachable Helmet Shield", 12, /obj/item/prop/helmetgarb/riot_shield, null, VENDOR_ITEM_REGULAR), - list("SUIT", 0, null, null, null), list("Bomber Jacket, Brown", 12, /obj/item/clothing/suit/storage/bomber, null, VENDOR_ITEM_REGULAR), list("Bomber Jacket, Black", 12, /obj/item/clothing/suit/storage/bomber/alt, null, VENDOR_ITEM_REGULAR), @@ -259,6 +273,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( list("Labcoat", 12, /obj/item/clothing/suit/storage/labcoat, null, VENDOR_ITEM_REGULAR), list("Labcoat, Researcher", 12, /obj/item/clothing/suit/storage/labcoat/researcher, null, VENDOR_ITEM_REGULAR), list("Quartermaster Jacket", 12, /obj/item/clothing/suit/storage/RO, null, VENDOR_ITEM_REGULAR), + list("Bio Suit", 12, /obj/item/clothing/suit/storage/synthbio, null, VENDOR_ITEM_REGULAR), list("USCM Poncho", 12, /obj/item/clothing/accessory/poncho, null, VENDOR_ITEM_REGULAR), list("BACKPACK", 0, null, null, null), @@ -271,6 +286,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_synth_snowflake, list( list("USCM RTO Pack", 12, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), list("USCM Welderpack", 12, /obj/item/storage/backpack/marine/engineerpack, null, VENDOR_ITEM_REGULAR), list("USCM Weldersatchel", 12, /obj/item/storage/backpack/marine/engineerpack/satchel, null, VENDOR_ITEM_REGULAR), + list("USCM Welder Chestrig", 12, /obj/item/storage/backpack/marine/engineerpack/welder_chestrig, null, VENDOR_ITEM_REGULAR), list("OTHER", 0, null, null, null), list("Red Armband", 6, /obj/item/clothing/accessory/armband, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/engineering.dm b/code/game/machinery/vending/vendor_types/engineering.dm index 1983365bd661..2275656d7a30 100644 --- a/code/game/machinery/vending/vendor_types/engineering.dm +++ b/code/game/machinery/vending/vendor_types/engineering.dm @@ -25,7 +25,7 @@ list("Utility Tool Belt", round(scale * 2), /obj/item/storage/belt/utility, VENDOR_ITEM_REGULAR), list("Welding Goggles", round(scale * 2), /obj/item/clothing/glasses/welding, VENDOR_ITEM_REGULAR), list("Welding Helmet", round(scale * 2), /obj/item/clothing/head/welding, VENDOR_ITEM_REGULAR), - list("Toolkit", round(scale * 4), /obj/item/storage/firstaid/toolkit/empty, VENDOR_ITEM_REGULAR), + list("Engineer Kit", round(scale * 2), /obj/item/storage/toolkit/empty, VENDOR_ITEM_REGULAR), list("SCANNERS", -1, null, null), list("Atmos Scanner", round(scale * 2), /obj/item/device/analyzer, VENDOR_ITEM_REGULAR), @@ -37,7 +37,6 @@ list("TOOLS", -1, null, null), list("Blowtorch", round(scale * 4), /obj/item/tool/weldingtool, VENDOR_ITEM_REGULAR), list("Crowbar", round(scale * 4), /obj/item/tool/crowbar, VENDOR_ITEM_REGULAR), - list("High-Capacity Industrial Blowtorch", 2, /obj/item/tool/weldingtool/hugetank, VENDOR_ITEM_REGULAR), list("ME3 Hand Welder", round(scale * 2), /obj/item/tool/weldingtool/simple, VENDOR_ITEM_REGULAR), list("Screwdriver", round(scale * 4), /obj/item/tool/screwdriver, VENDOR_ITEM_REGULAR), list("Wirecutters", round(scale * 4), /obj/item/tool/wirecutters, VENDOR_ITEM_REGULAR), @@ -56,7 +55,7 @@ list("Utility Tool Belt", round(scale * 4), /obj/item/storage/belt/utility, VENDOR_ITEM_REGULAR), list("Cable Coil", round(scale * 4), /obj/item/stack/cable_coil/random, VENDOR_ITEM_REGULAR), list("Welding Goggles", round(scale * 2), /obj/item/clothing/glasses/welding, VENDOR_ITEM_REGULAR), - list("Toolkit", round(scale * 12), /obj/item/storage/firstaid/toolkit/empty, VENDOR_ITEM_REGULAR), + list("Engineer Kit", round(scale * 2), /obj/item/storage/toolkit/empty, VENDOR_ITEM_REGULAR), list("TOOLS", -1, null, null), list("Blowtorch", round(scale * 4), /obj/item/tool/weldingtool, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/intelligence_officer.dm b/code/game/machinery/vending/vendor_types/intelligence_officer.dm index ab38fcb1dfeb..46394bea8c2c 100644 --- a/code/game/machinery/vending/vendor_types/intelligence_officer.dm +++ b/code/game/machinery/vending/vendor_types/intelligence_officer.dm @@ -68,7 +68,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_intelligence_officer, list( list("XM12 Officer Helmet", 0, /obj/item/clothing/head/helmet/marine/rto/intel, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("Beret, Standard", 0, /obj/item/clothing/head/beret/cm, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("Beret, Tan", 0, /obj/item/clothing/head/beret/cm/tan, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("USCM Officer Cap", 0, /obj/item/clothing/head/cmcap/ro, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("USCM Officer Cap", 0, /obj/item/clothing/head/cmcap/bridge, MARINE_CAN_BUY_HELMET, 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), @@ -89,8 +89,6 @@ GLOBAL_LIST_INIT(cm_vending_clothing_intelligence_officer, list( list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index b979fe4a03a9..07284e7f8e71 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -19,16 +19,16 @@ /obj/structure/machinery/cm_vending/sorted/cargo_guns/populate_product_list(scale) listed_products = list( list("PRIMARY FIREARMS", -1, null, null), - list("M37A2 Pump Shotgun", round(scale * 10), /obj/item/weapon/gun/shotgun/pump, VENDOR_ITEM_REGULAR), - list("M39 Submachinegun", round(scale * 15), /obj/item/weapon/gun/smg/m39, VENDOR_ITEM_REGULAR), - list("M41A Pulse Rifle MK2", round(scale * 20), /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_REGULAR), + list("M37A2 Pump Shotgun", round(scale * 30), /obj/item/weapon/gun/shotgun/pump, VENDOR_ITEM_REGULAR), + list("M39 Submachinegun", round(scale * 60), /obj/item/weapon/gun/smg/m39, VENDOR_ITEM_REGULAR), + list("M41A Pulse Rifle MK2", round(scale * 60), /obj/item/weapon/gun/rifle/m41a, VENDOR_ITEM_REGULAR), list("M4RA Battle Rifle", round(scale * 20), /obj/item/weapon/gun/rifle/m4ra, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("88 Mod 4 Combat Pistol", round(scale * 15), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), - list("M44 Combat Revolver", round(scale * 10), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), - list("M4A3 Service Pistol", round(scale * 20), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), - list("M82F Flare Gun", round(scale * 8), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), + list("88 Mod 4 Combat Pistol", round(scale * 50), /obj/item/weapon/gun/pistol/mod88, VENDOR_ITEM_REGULAR), + list("M44 Combat Revolver", round(scale * 50), /obj/item/weapon/gun/revolver/m44, VENDOR_ITEM_REGULAR), + list("M4A3 Service Pistol", round(scale * 50), /obj/item/weapon/gun/pistol/m4a3, VENDOR_ITEM_REGULAR), + list("M82F Flare Gun", round(scale * 20), /obj/item/weapon/gun/flare, VENDOR_ITEM_REGULAR), list("RESTRICTED FIREARMS", -1, null, null), list("VP78 Pistol", round(scale * 4), /obj/item/storage/box/guncase/vp78, VENDOR_ITEM_REGULAR), @@ -91,9 +91,8 @@ list("Rappel Harness", round(scale * 20), /obj/item/rappel_harness, VENDOR_ITEM_REGULAR), list("POUCHES", -1, null, null), - list("Autoinjector Pouch", round(scale * 2), /obj/item/storage/pouch/autoinjector, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", round(scale * 2), /obj/item/storage/pouch/medkit, VENDOR_ITEM_REGULAR), - list("Medical Pouch", round(scale * 2), /obj/item/storage/pouch/medical, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch", round(scale * 1), /obj/item/storage/pouch/autoinjector, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", round(scale * 2), /obj/item/storage/pouch/medkit, VENDOR_ITEM_REGULAR), list("First-Aid Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR), list("First Responder Pouch", round(scale * 2), /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), list("Syringe Pouch", round(scale * 2), /obj/item/storage/pouch/syringe, VENDOR_ITEM_REGULAR), @@ -104,7 +103,7 @@ list("Flare Pouch (Full)", round(scale * 5), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR), list("Document Pouch", round(scale * 2), /obj/item/storage/pouch/document/small, VENDOR_ITEM_REGULAR), list("Sling Pouch", round(scale * 2), /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", round(scale * 4), /obj/item/storage/pouch/machete/full, VENDOR_ITEM_REGULAR), + list("Machete Pouch (Full)", round(scale * 0.5), /obj/item/storage/pouch/machete/full, VENDOR_ITEM_REGULAR), list("Bayonet Pouch", round(scale * 2), /obj/item/storage/pouch/bayonet, VENDOR_ITEM_REGULAR), list("Medium General Pouch", round(scale * 2), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), list("Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR), @@ -112,9 +111,9 @@ list("Sidearm Pouch", round(scale * 5), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR), list("Large Pistol Magazine Pouch", round(scale * 5), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), list("Fuel Tank Strap Pouch", round(scale * 4), /obj/item/storage/pouch/flamertank, VENDOR_ITEM_REGULAR), - list("Large General Pouch", round(scale * 2), /obj/item/storage/pouch/general/large, VENDOR_ITEM_REGULAR), - list("Large Magazine Pouch", round(scale * 2), /obj/item/storage/pouch/magazine/large, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", round(scale * 2), /obj/item/storage/pouch/shotgun/large, VENDOR_ITEM_REGULAR), + list("Large General Pouch", round(scale * 1), /obj/item/storage/pouch/general/large, VENDOR_ITEM_REGULAR), + list("Large Magazine Pouch", round(scale * 1), /obj/item/storage/pouch/magazine/large, VENDOR_ITEM_REGULAR), + list("Large Shotgun Shell Pouch", round(scale * 1), /obj/item/storage/pouch/shotgun/large, VENDOR_ITEM_REGULAR), list("MISCELLANEOUS", -1, null, null), list("Combat Flashlight", round(scale * 5), /obj/item/device/flashlight/combat, VENDOR_ITEM_REGULAR), @@ -220,17 +219,17 @@ /obj/structure/machinery/cm_vending/sorted/cargo_ammo/populate_product_list(scale) listed_products = list( list("REGULAR AMMUNITION", -1, null, null), - list("Box Of Buckshot Shells", round(scale * 2), /obj/item/ammo_magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), - list("Box Of Flechette Shells", round(scale * 2), /obj/item/ammo_magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), - list("Box Of Shotgun Slugs", round(scale * 2), /obj/item/ammo_magazine/shotgun/slugs, VENDOR_ITEM_REGULAR), - list("M4RA Magazine (10x24mm)", round(scale * 20.8), /obj/item/ammo_magazine/rifle/m4ra, VENDOR_ITEM_REGULAR), - list("M41A MK2 Magazine (10x24mm)", round(scale * 18), /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), - list("M39 HV Magazine (10x20mm)", round(scale * 17.1), /obj/item/ammo_magazine/smg/m39, VENDOR_ITEM_REGULAR), - list("M44 Speed Loader (.44)", round(scale * 18.1), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), - list("M4A3 Magazine (9mm)", round(scale * 20.5), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), + list("Box Of Buckshot Shells", round(scale * 20), /obj/item/ammo_magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), + list("Box Of Flechette Shells", round(scale * 8), /obj/item/ammo_magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), + list("Box Of Shotgun Slugs", round(scale * 20), /obj/item/ammo_magazine/shotgun/slugs, VENDOR_ITEM_REGULAR), + list("M4RA Magazine (10x24mm)", round(scale * 30), /obj/item/ammo_magazine/rifle/m4ra, VENDOR_ITEM_REGULAR), + list("M41A MK2 Magazine (10x24mm)", round(scale * 50), /obj/item/ammo_magazine/rifle, VENDOR_ITEM_REGULAR), + list("M39 HV Magazine (10x20mm)", round(scale * 50), /obj/item/ammo_magazine/smg/m39, VENDOR_ITEM_REGULAR), + list("M44 Speed Loader (.44)", round(scale * 40), /obj/item/ammo_magazine/revolver, VENDOR_ITEM_REGULAR), + list("M4A3 Magazine (9mm)", round(scale * 50), /obj/item/ammo_magazine/pistol, VENDOR_ITEM_REGULAR), list("ARMOR-PIERCING AMMUNITION", -1, null, null), - list("88 Mod 4 AP Magazine (9mm)", round(scale * 16.7), /obj/item/ammo_magazine/pistol/mod88, VENDOR_ITEM_REGULAR), + list("88 Mod 4 AP Magazine (9mm)", round(scale * 50), /obj/item/ammo_magazine/pistol/mod88, VENDOR_ITEM_REGULAR), list("M4RA AP Magazine (10x24mm)", round(scale * 15.7), /obj/item/ammo_magazine/rifle/m4ra/ap, VENDOR_ITEM_REGULAR), list("M39 AP Magazine (10x20mm)", round(scale * 11.9), /obj/item/ammo_magazine/smg/m39/ap, VENDOR_ITEM_REGULAR), list("M41A MK2 AP Magazine (10x24mm)", round(scale * 10.5), /obj/item/ammo_magazine/rifle/ap, VENDOR_ITEM_REGULAR), @@ -259,9 +258,9 @@ list("M2C Box Magazine", round(scale * 2), /obj/item/ammo_magazine/m2c, VENDOR_ITEM_REGULAR), list("SHOTGUN SHELL BOXES", -1, null, null), - list("Shotgun Shell Box (Buckshot x 100)", round(scale * 1), /obj/item/ammo_box/magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), - list("Shotgun Shell Box (Flechette x 100)", round(scale * 1), /obj/item/ammo_box/magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), - list("Shotgun Shell Box (Slugs x 100)", round(scale * 1), /obj/item/ammo_box/magazine/shotgun, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Box (Buckshot x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Box (Flechette x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Box (Slugs x 100)", round(scale * 2), /obj/item/ammo_box/magazine/shotgun, VENDOR_ITEM_REGULAR), ) /obj/structure/machinery/cm_vending/sorted/cargo_ammo/stock(obj/item/item_to_stock, mob/user) 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 d43e53db4f0d..543c601bda37 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 @@ -46,6 +46,10 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list( list("M41A AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR), list("M41A Extended Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), + list("ARMORS", 0, null, null, null), + list("M3 B12 Pattern Marine Armor", 24, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/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), list("SU-6 Smart Pistol", 12, /obj/item/storage/box/guncase/smartpistol, null, VENDOR_ITEM_REGULAR), @@ -53,25 +57,30 @@ GLOBAL_LIST_INIT(cm_vending_gear_engi, list( list("M79 Grenade Launcher", 24, /obj/item/storage/box/guncase/m79, null, VENDOR_ITEM_REGULAR), list("M56D Heavy Machine Gun", 24, /obj/item/storage/box/guncase/m56d, null, VENDOR_ITEM_REGULAR), + list("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), + list("Machete Pouch (Full)", 8, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 4, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 6, /obj/item/storage/pouch/sling, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 6, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), + list("UTILITIES", 0, null, null, null), - list("Medical Helmet Optic", 12, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("M3 B12 Pattern Armor", 24, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/rto, null, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 6, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Sling Pouch", 6, /obj/item/storage/pouch/sling, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 4, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", 8, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 3, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 8, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Whistle", 3, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 12, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), - list("Engineering Radio Encryption Key", 3, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), list("Intel Radio Encryption Key", 3, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), list("JTAC Radio Encryption Key", 3, /obj/item/device/encryptionkey/jtac, null, VENDOR_ITEM_REGULAR), list("Supply Radio Encryption Key", 3, /obj/item/device/encryptionkey/req, 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 935469b13b47..ea3423260ec0 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 @@ -15,19 +15,26 @@ GLOBAL_LIST_INIT(cm_vending_gear_leader, list( list("XM88 Heavy Rifle", 0, /obj/item/storage/box/guncase/xm88, MARINE_CAN_BUY_KIT, VENDOR_ITEM_REGULAR), 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/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), + list("Machete Pouch (Full)", 4, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 5, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), + list("M2 Night Vision Goggles", 20, /obj/item/prop/helmetgarb/helmet_nvg, null, VENDOR_ITEM_RECOMMENDED), + list("UTILITIES", 0, null, null, null), list("Whistle", 3, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), list("Range Finder", 3, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), list("Laser Designator", 5, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), - list("M2 Night Vision Goggles", 20, /obj/item/prop/helmetgarb/helmet_nvg, null, VENDOR_ITEM_RECOMMENDED), - list("Machete Scabbard (Full)", 4, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", 4, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 3, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/rto, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Radio Telephone Pack", 5, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), list("ENGINEERING SUPPLIES", 0, null, null, null), list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, 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 65169a7591ae..1b634335f5d2 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 @@ -65,23 +65,34 @@ GLOBAL_LIST_INIT(cm_vending_gear_medic, list( list("M41A AP Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/ap , null, VENDOR_ITEM_REGULAR), list("M41A Extended Magazine (10x24mm)", 6, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), + list("ARMORS", 0, null, null, null), + list("M3 B12 Pattern Marine Armor", 28, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 28, /obj/item/clothing/suit/storage/marine/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), list("SU-6 Smart Pistol", 12, /obj/item/storage/box/guncase/smartpistol, null, VENDOR_ITEM_REGULAR), + list("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), + list("Machete Pouch (Full)", 8, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), + list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 4, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + list("UTILITIES", 0, null, null, null), - list("M3 B12 Pattern Armor", 28, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), - list("M4 Pattern Armor", 28, /obj/item/clothing/suit/storage/marine/rto, null, VENDOR_ITEM_REGULAR), list("Range Finder", 6, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), list("Laser Designator", 8, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 4, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", 6, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), - list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", 8, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 3, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 8, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Whistle", 3, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), + list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), + list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), list("Engineering Radio Encryption Key", 3, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), @@ -146,7 +157,7 @@ GLOBAL_LIST_INIT(cm_vending_clothing_medic, list( list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm index c02748fea509..94768340c60e 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm @@ -285,7 +285,7 @@ list("M89-S Signal Flare Pack", round(scale * 1), /obj/item/storage/box/m94/signal, VENDOR_ITEM_REGULAR), list("MISCELLANEOUS", -1, null, null), - list("Toolkit", round(scale * 1), /obj/item/storage/firstaid/toolkit/empty, VENDOR_ITEM_REGULAR), + list("Engineer Kit", round(scale * 1), /obj/item/storage/toolkit/empty, VENDOR_ITEM_REGULAR), list("Map", round(scale * 5), /obj/item/map/current_map, VENDOR_ITEM_REGULAR), list("Extinguisher", round(scale * 5), /obj/item/tool/extinguisher, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", round(scale * 1), /obj/item/tool/extinguisher/mini, 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 09881536901e..6a569638984b 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 @@ -69,32 +69,43 @@ GLOBAL_LIST_INIT(cm_vending_clothing_marine, list( list("M41A Extended Magazine (10x24mm)", 10, /obj/item/ammo_magazine/rifle/extended , null, VENDOR_ITEM_REGULAR), list("M44 Heavy Speed Loader (.44)", 10, /obj/item/ammo_magazine/revolver/heavy, null, VENDOR_ITEM_REGULAR), - list("UTILITIES", 0, null, null, null), - list("E-Tool", 5, /obj/item/tool/shovel/etool/folded, null, VENDOR_ITEM_REGULAR), - list("Sandbags", 20, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_REGULAR), + list("ARMORS", 0, null, null, null), + list("M3 B12 Pattern Marine Armor", 30, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), + list("M4 Pattern Armor", 30, /obj/item/clothing/suit/storage/marine/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("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, 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), + list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 15, /obj/item/storage/pouch/sling, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 15, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("E-Tool", 5, /obj/item/tool/shovel/etool/folded, null, VENDOR_ITEM_REGULAR), + list("Sandbags", 20, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_REGULAR), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("B12 Pattern Marine Armor", 30, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, 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), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Data Detector", 15, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm index d3a606ae6b41..0691dfcee371 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_smartgunner.dm @@ -23,18 +23,26 @@ GLOBAL_LIST_INIT(cm_vending_gear_smartgun, list( list("M74 AGM-Hornet Airburst Packet (x3 airburst grenades", 20, /obj/item/storage/box/packet/hornet, null, VENDOR_ITEM_REGULAR), list("M20 Mine Box (x4 mines)", 20, /obj/item/storage/box/explosive_mines, null, VENDOR_ITEM_REGULAR), + list("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 6, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 6, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("UTILITIES", 0, null, null, null), list("Range Finder", 10, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), list("Laser Designator", 15, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), - list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), + list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), + list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_specialist.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_specialist.dm index b09ae4aa15c5..38c74481205d 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_specialist.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_specialist.dm @@ -9,53 +9,32 @@ GLOBAL_LIST_INIT(cm_vending_gear_spec, list( list("Sniper Set", 0, /obj/item/storage/box/spec/sniper, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_RECOMMENDED), list("EXTRA SCOUT AMMUNITION", 0, null, null, null), - list("A19 High Velocity Impact Magazine (10x24mm)", 15, /obj/item/ammo_magazine/rifle/m4ra/custom/impact, null, VENDOR_ITEM_REGULAR), - list("A19 High Velocity Incendiary Magazine (10x24mm)", 15, /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, null, VENDOR_ITEM_REGULAR), - list("A19 High Velocity Magazine (10x24mm)", 15, /obj/item/ammo_magazine/rifle/m4ra/custom, null, VENDOR_ITEM_REGULAR), + list("A19 High Velocity Impact Magazine (10x24mm)", 40, /obj/item/ammo_magazine/rifle/m4ra/custom/impact, null, VENDOR_ITEM_REGULAR), + list("A19 High Velocity Incendiary Magazine (10x24mm)", 40, /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, null, VENDOR_ITEM_REGULAR), + list("A19 High Velocity Magazine (10x24mm)", 40, /obj/item/ammo_magazine/rifle/m4ra/custom, null, VENDOR_ITEM_REGULAR), list("EXTRA SNIPER AMMUNITION", 0, null, null, null), - list("M42A Flak Magazine (10x28mm)", 15, /obj/item/ammo_magazine/sniper/flak, null, VENDOR_ITEM_REGULAR), - list("M42A Incendiary Magazine (10x28mm)", 15, /obj/item/ammo_magazine/sniper/incendiary, null, VENDOR_ITEM_REGULAR), - list("M42A Marksman Magazine (10x28mm Caseless)", 15, /obj/item/ammo_magazine/sniper, null, VENDOR_ITEM_REGULAR), + list("M42A Flak Magazine (10x28mm)", 40, /obj/item/ammo_magazine/sniper/flak, null, VENDOR_ITEM_REGULAR), + list("M42A Incendiary Magazine (10x28mm)", 40, /obj/item/ammo_magazine/sniper/incendiary, null, VENDOR_ITEM_REGULAR), + list("M42A Marksman Magazine (10x28mm Caseless)", 40, /obj/item/ammo_magazine/sniper, null, VENDOR_ITEM_REGULAR), list("EXTRA DEMOLITIONIST AMMUNITION", 0, null, null, null), - list("84mm Anti-Armor Rocket", 15, /obj/item/ammo_magazine/rocket/ap, null, VENDOR_ITEM_REGULAR), - list("84mm High-Explosive Rocket", 15, /obj/item/ammo_magazine/rocket, null, VENDOR_ITEM_REGULAR), - list("84mm White-Phosphorus Rocket", 15, /obj/item/ammo_magazine/rocket/wp, null, VENDOR_ITEM_REGULAR), + list("84mm Anti-Armor Rocket", 40, /obj/item/ammo_magazine/rocket/ap, null, VENDOR_ITEM_REGULAR), + list("84mm High-Explosive Rocket", 40, /obj/item/ammo_magazine/rocket, null, VENDOR_ITEM_REGULAR), + list("84mm White-Phosphorus Rocket", 40, /obj/item/ammo_magazine/rocket/wp, null, VENDOR_ITEM_REGULAR), list("EXTRA GRENADES", 0, null, null, null), - list("M40 HEDP Grenades x6", 15, /obj/effect/essentials_set/hedp_6_pack, null, VENDOR_ITEM_REGULAR), - list("M40 HIDP Incendiary Grenades x6", 15, /obj/effect/essentials_set/hidp_6_pack, null, VENDOR_ITEM_REGULAR), - list("M40 HPDP White Phosphorus Grenades x6", 15, /obj/effect/essentials_set/hpdp_6_pack, null, VENDOR_ITEM_REGULAR), - list("M74 AGM-F Fragmentation Grenades x6", 15, /obj/effect/essentials_set/agmf_6_pack, null, VENDOR_ITEM_REGULAR), - list("M74 AGM-I Incendiary Grenades x6", 15, /obj/effect/essentials_set/agmi_6_pack, null, VENDOR_ITEM_REGULAR), - list("M74 AGM-S Smoke Grenades x6", 10, /obj/effect/essentials_set/agms_6_pack, null, VENDOR_ITEM_REGULAR), + list("M40 HEDP Grenades x6", 40, /obj/effect/essentials_set/hedp_6_pack, null, VENDOR_ITEM_REGULAR), + list("M40 HIDP Incendiary Grenades x6", 40, /obj/effect/essentials_set/hidp_6_pack, null, VENDOR_ITEM_REGULAR), + list("M40 HPDP White Phosphorus Grenades x6", 40, /obj/effect/essentials_set/hpdp_6_pack, null, VENDOR_ITEM_REGULAR), + list("M74 AGM-F Fragmentation Grenades x6", 40, /obj/effect/essentials_set/agmf_6_pack, null, VENDOR_ITEM_REGULAR), + list("M74 AGM-I Incendiary Grenades x6", 40, /obj/effect/essentials_set/agmi_6_pack, null, VENDOR_ITEM_REGULAR), + list("M74 AGM-S Smoke Grenades x6", 20, /obj/effect/essentials_set/agms_6_pack, null, VENDOR_ITEM_REGULAR), list("EXTRA FLAMETHROWER TANKS", 0, null, null, null), - list("Large Incinerator Tank", 15, /obj/item/ammo_magazine/flamer_tank/large, null, VENDOR_ITEM_REGULAR), - list("Large Incinerator Tank (B) (Green Flame)", 15, /obj/item/ammo_magazine/flamer_tank/large/B, null, VENDOR_ITEM_REGULAR), - list("Large Incinerator Tank (X) (Blue Flame)", 15, /obj/item/ammo_magazine/flamer_tank/large/X, null, VENDOR_ITEM_REGULAR), - - list("UTILITIES", 0, null, null, null), - list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), - list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), - list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), - list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Sling Pouch", 10, /obj/item/storage/pouch/sling, null, VENDOR_ITEM_REGULAR), - list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_REGULAR), - list("Motion Detector", 10, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), - list("Machete Pouch (Full)", 15, /obj/item/storage/pouch/machete/full, null, VENDOR_ITEM_REGULAR), - list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), - list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - - list("RADIO KEYS", 0, null, null, null), - list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), - list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), - list("JTAC Radio Encryption Key", 5, /obj/item/device/encryptionkey/jtac, null, VENDOR_ITEM_REGULAR), - list("Supply Radio Encryption Key", 5, /obj/item/device/encryptionkey/req, null, VENDOR_ITEM_REGULAR), + list("Large Incinerator Tank", 40, /obj/item/ammo_magazine/flamer_tank/large, null, VENDOR_ITEM_REGULAR), + list("Large Incinerator Tank (B) (Green Flame)", 40, /obj/item/ammo_magazine/flamer_tank/large/B, null, VENDOR_ITEM_REGULAR), + list("Large Incinerator Tank (X) (Blue Flame)", 40, /obj/item/ammo_magazine/flamer_tank/large/X, null, VENDOR_ITEM_REGULAR), )) @@ -64,6 +43,8 @@ GLOBAL_LIST_INIT(cm_vending_gear_spec, list( desc = "An automated gear rack for Squad Weapons Specialists." icon_state = "spec_gear" show_points = TRUE + use_points = FALSE + use_snowflake_points = TRUE vendor_role = list(JOB_SQUAD_SPECIALIST) req_access = list(ACCESS_MARINE_SPECPREP) @@ -117,11 +98,42 @@ GLOBAL_LIST_INIT(cm_vending_clothing_specialist, list( 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("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 6, /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), + list("USCM Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 5, /obj/item/storage/pouch/flamertank, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), + list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 10, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), + + list("PAMPHLETS", 0, null, null, null), + list("JTAC Pamphlet", 15, /obj/item/pamphlet/skill/jtac, null, VENDOR_ITEM_REGULAR), + list("Engineering Pamphlet", 15, /obj/item/pamphlet/skill/engineer, null, VENDOR_ITEM_REGULAR), + + list("RADIO KEYS", 0, null, null, null), + list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), + list("Intel Radio Encryption Key", 5, /obj/item/device/encryptionkey/intel, null, VENDOR_ITEM_REGULAR), + list("JTAC Radio Encryption Key", 5, /obj/item/device/encryptionkey/jtac, null, VENDOR_ITEM_REGULAR), + list("Supply Radio Encryption Key", 5, /obj/item/device/encryptionkey/req, null, VENDOR_ITEM_REGULAR), )) /obj/structure/machinery/cm_vending/clothing/specialist name = "\improper ColMarTech Squad Weapons Specialist Equipment Rack" desc = "An automated rack hooked up to a colossal storage of Squad Weapons Specialist standard-issue equipment." + show_points = TRUE req_access = list(ACCESS_MARINE_SPECPREP) vendor_role = list(JOB_SQUAD_SPECIALIST) diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm index 4f64ca7e81fa..c03d79eddfd0 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_tl.dm @@ -29,25 +29,32 @@ GLOBAL_LIST_INIT(cm_vending_gear_tl, list( list("SU-6 Smart Pistol", 15, /obj/item/storage/box/guncase/smartpistol, null, VENDOR_ITEM_REGULAR), list("M79 Grenade Launcher", 30, /obj/item/storage/box/guncase/m79, null, VENDOR_ITEM_REGULAR), + list("ARMORS", 0, null, null, null), + list("M3 B12 Pattern Marine Armor", 30, /obj/item/clothing/suit/storage/marine/leader, null, VENDOR_ITEM_REGULAR), + + list("CLOTHING ITEMS", 0, null, null, null), + list("Machete Scabbard (Full)", 5, /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), + list("USCM Radio Telephone Pack", 5, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 3, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + list("M276 Pattern Combat Toolbelt Rig", 15, /obj/item/storage/belt/gun/utility, null, VENDOR_ITEM_REGULAR), + list("Autoinjector Pouch (Full)", 15, /obj/item/storage/pouch/autoinjector/full, null, VENDOR_ITEM_REGULAR), + list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + list("M2 Night Vision Goggles", 30, /obj/item/prop/helmetgarb/helmet_nvg, null, VENDOR_ITEM_RECOMMENDED), + list("UTILITIES", 0, null, null, null), - list("Radio Telephone Pack", 5, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_RECOMMENDED), list("Binoculars", 5, /obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 15, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), list("Plastic Explosive", 10, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), list("Breaching Charge", 10, /obj/item/explosive/plastic/breaching_charge, null, VENDOR_ITEM_REGULAR), - list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), - list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), - list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), - list("M2 Night Vision Goggles", 30, /obj/item/prop/helmetgarb/helmet_nvg, null, VENDOR_ITEM_RECOMMENDED), list("Roller Bed", 5, /obj/item/roller, null, VENDOR_ITEM_REGULAR), list("Fulton Device Stack", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", 15, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), - list("Machete Scabbard (Full)", 5, /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), list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Powerloader Certification", 45, /obj/item/pamphlet/skill/powerloader, null, VENDOR_ITEM_REGULAR), - list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + + list("HELMET OPTICS", 0, null, null, null), + list("Medical Helmet Optic", 15, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_REGULAR), list("RADIO KEYS", 0, null, null, null), list("Engineering Radio Encryption Key", 5, /obj/item/device/encryptionkey/engi, null, VENDOR_ITEM_REGULAR), @@ -104,8 +111,6 @@ GLOBAL_LIST_INIT(cm_vending_clothing_tl, list( list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Magazine Pouch", 0, /obj/item/storage/pouch/magazine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sidearm Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), diff --git a/code/game/objects/effects/landmarks/corpsespawner.dm b/code/game/objects/effects/landmarks/corpsespawner.dm index bcedcb85f47e..fe338bceabfe 100644 --- a/code/game/objects/effects/landmarks/corpsespawner.dm +++ b/code/game/objects/effects/landmarks/corpsespawner.dm @@ -48,10 +48,6 @@ name = "Engineer" equip_path = /datum/equipment_preset/corpse/engineer -/obj/effect/landmark/corpsespawner/clown - name = "Clown" - equip_path = /datum/equipment_preset/corpse/clown - /obj/effect/landmark/corpsespawner/scientist name = "Scientist" equip_path = /datum/equipment_preset/corpse/scientist diff --git a/code/game/objects/effects/spawners/prop_gun_spawner.dm b/code/game/objects/effects/spawners/prop_gun_spawner.dm new file mode 100644 index 000000000000..b04f6cffffe1 --- /dev/null +++ b/code/game/objects/effects/spawners/prop_gun_spawner.dm @@ -0,0 +1,91 @@ +/obj/effect/spawner/prop_gun //Makes a prop that looks similar to the original gun, for use such as broken guns + name = "prop gun spawner" + icon = 'icons/landmarks.dmi' + icon_state = "prop_gun" + ///The typepath of the gun the prop will copy + var/obj/item/weapon/gun/prop_gun_type = /obj/item/weapon/gun + ///if the prop will have a custom name + var/custom_gun_name + ///if the prob will have a custom desc + var/custom_gun_desc + ///The probability of the prop gun spawning + var/spawn_prob = 100 + +/obj/effect/spawner/prop_gun/Initialize(mapload, ...) + . = ..() + if(!ispath(prop_gun_type, /obj/item/weapon/gun)) + stack_trace("[src] using incorrect typepath, \"[prop_gun_type]\".") //Can't make a prop gun of something not a gun + qdel(src) + return + if(!spawn_prob) + qdel(src) + return + if(!mapload) + prepare_gun_skin() + return + return INITIALIZE_HINT_ROUNDSTART + +/obj/effect/spawner/prop_gun/LateInitialize() + prepare_gun_skin() + +///Spawns the items and modifies source to set skin on prop +/obj/effect/spawner/prop_gun/proc/prepare_gun_skin() + ///The source, which the skin will be copied from + var/obj/item/weapon/gun/source_gun = new prop_gun_type(src) + if(custom_gun_name) + source_gun.name = custom_gun_name + if(custom_gun_desc) + source_gun.desc = custom_gun_desc + source_gun.pixel_x = pixel_x + source_gun.pixel_y = pixel_y + source_gun.layer = layer + + ///The prop itself, which the skin will be copied to + var/obj/item/prop/prop_gun/prop_gun = new /obj/item/prop/prop_gun(loc) + prop_gun.set_gun_skin(source_gun) + qdel(src) + +/obj/item/prop/prop_gun + name = "prop gun" + desc = "A non-functional gun prop. You should not be able to see this." + icon = 'icons/landmarks.dmi' + icon_state = "prop_gun" + flags_item = TWOHANDED + pickup_sound = "gunequip" + drop_sound = "gunrustle" + pickupvol = 7 + dropvol = 15 + +///Makes the gun look similar to the source, using the source as an atom reference +/obj/item/prop/prop_gun/proc/set_gun_skin(obj/item/weapon/gun/source_gun) + if(!source_gun) + return + name = source_gun.name + desc = source_gun.desc + icon = source_gun.icon + item_icons = source_gun.item_icons + icon_state = source_gun.icon_state + item_state = source_gun.item_state + w_class = source_gun.w_class + flags_equip_slot = source_gun.flags_equip_slot + pixel_x = source_gun.pixel_x + pixel_y = source_gun.pixel_y + layer = source_gun.layer + +/obj/item/prop/prop_gun/attack_self(mob/user) //Mimic wielding of real guns + . = ..() + if(!(flags_item & TWOHANDED)) + return + if(flags_item & WIELDED) + unwield(user) + else + wield(user) + +/obj/item/prop/prop_gun/dropped(mob/user) + ..() + unwield(user) + +/obj/effect/spawner/prop_gun/m41aMK1 + prop_gun_type = /obj/item/weapon/gun/rifle/m41aMK1 + custom_gun_name = "\improper Broken M41A pulse rifle" + custom_gun_desc = "An older design of the Pulse Rifle commonly used by Colonial Marines. This one has seen better days. The trigger is missing, the barrel is bent, and it no longer appropriately feeds magazines." diff --git a/code/game/objects/effects/spawners/random.dm b/code/game/objects/effects/spawners/random.dm index 77390d533c9e..450981377a73 100644 --- a/code/game/objects/effects/spawners/random.dm +++ b/code/game/objects/effects/spawners/random.dm @@ -206,7 +206,6 @@ /obj/item/poster,\ /obj/item/toy/bikehorn,\ /obj/item/toy/beach_ball,\ - /obj/item/weapon/banhammer,\ /obj/item/toy/balloon,\ /obj/item/toy/blink,\ /obj/item/toy/crossbow,\ diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index f497bc20ba83..077c0a463aaa 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -2,8 +2,8 @@ name = "item" icon = 'icons/obj/items/items.dmi' mouse_drag_pointer = MOUSE_ACTIVE_POINTER + layer = ITEM_LAYER light_system = MOVABLE_LIGHT - /// this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite var/image/blood_overlay = null var/randpixel = 6 @@ -186,7 +186,7 @@ if(istype(S)) for(var/mob/M in S.can_see_content()) if(M.client) - M.client.screen -= src + M.client.remove_from_screen(src) if(ismob(loc)) dropped(loc) @@ -229,28 +229,28 @@ item, and will change the skin to whatever you specify here. You can also manually override the icon with a unique skin if wanted, for the outlier cases. Override_icon_state should be a list.*/ /obj/item/proc/select_gamemode_skin(expected_type, list/override_icon_state, list/override_protection) - if(type == expected_type && !istype(src, /obj/item/clothing/suit/storage/marine/fluff) && !istype(src, /obj/item/clothing/head/helmet/marine/fluff) && !istype(src, /obj/item/clothing/under/marine/fluff)) - var/new_icon_state - var/new_protection - var/new_item_state - if(override_icon_state && override_icon_state.len) - new_icon_state = override_icon_state[SSmapping.configs[GROUND_MAP].map_name] - if(override_protection && override_protection.len) - new_protection = override_protection[SSmapping.configs[GROUND_MAP].map_name] - switch(SSmapping.configs[GROUND_MAP].camouflage_type) - if("snow") - icon_state = new_icon_state ? new_icon_state : "s_" + icon_state - item_state = new_item_state ? new_item_state : "s_" + item_state - if("desert") - icon_state = new_icon_state ? new_icon_state : "d_" + icon_state - item_state = new_item_state ? new_item_state : "d_" + item_state - if("classic") - icon_state = new_icon_state ? new_icon_state : "c_" + icon_state - item_state = new_item_state ? new_item_state : "c_" + item_state - if(new_protection) - min_cold_protection_temperature = new_protection - else return + if(type != expected_type) + return + var/new_icon_state + var/new_protection + var/new_item_state + if(override_icon_state && override_icon_state.len) + new_icon_state = override_icon_state[SSmapping.configs[GROUND_MAP].map_name] + if(override_protection && override_protection.len) + new_protection = override_protection[SSmapping.configs[GROUND_MAP].map_name] + switch(SSmapping.configs[GROUND_MAP].camouflage_type) + if("snow") + icon_state = new_icon_state ? new_icon_state : "s_" + icon_state + item_state = new_item_state ? new_item_state : "s_" + item_state + if("desert") + icon_state = new_icon_state ? new_icon_state : "d_" + icon_state + item_state = new_item_state ? new_item_state : "d_" + item_state + if("classic") + icon_state = new_icon_state ? new_icon_state : "c_" + icon_state + item_state = new_item_state ? new_item_state : "c_" + item_state + if(new_protection) + min_cold_protection_temperature = new_protection /obj/item/get_examine_text(mob/user) . = list() @@ -320,7 +320,7 @@ cases. Override_icon_state should be a list.*/ var/failure = 0 for(var/obj/item/I in src.loc) - if(!S.can_be_inserted(I, TRUE)) + if(!S.can_be_inserted(I, user, stop_messages = TRUE)) failure = 1 continue success = 1 @@ -332,7 +332,7 @@ cases. Override_icon_state should be a list.*/ else to_chat(user, SPAN_NOTICE("You fail to pick anything up with [S].")) - else if(S.can_be_inserted(src)) + else if(S.can_be_inserted(src, user)) S.handle_item_insertion(src, FALSE, user) return @@ -666,11 +666,11 @@ cases. Override_icon_state should be a list.*/ for(var/A in H.w_uniform.accessories) if(istype(A, /obj/item/clothing/accessory/storage)) var/obj/item/clothing/accessory/storage/S = A - if(S.hold.can_be_inserted(src, TRUE)) + if(S.hold.can_be_inserted(src, M, TRUE)) return TRUE else if(istype(A, /obj/item/storage/internal/accessory/holster)) var/obj/item/storage/internal/accessory/holster/AH = A - if(!(AH.current_gun) && AH.can_be_inserted(src)) + if(!(AH.current_gun) && AH.can_be_inserted(src, M)) return TRUE return FALSE if(WEAR_IN_JACKET) @@ -678,7 +678,7 @@ cases. Override_icon_state should be a list.*/ var/obj/item/clothing/suit/storage/S = H.wear_suit if(istype(S) && S.pockets)//not all suits have pockits var/obj/item/storage/internal/I = S.pockets - if(I.can_be_inserted(src,1)) + if(I.can_be_inserted(src, M, TRUE)) return TRUE return FALSE if(WEAR_IN_HELMET) @@ -686,12 +686,12 @@ cases. Override_icon_state should be a list.*/ var/obj/item/clothing/head/helmet/marine/HM = H.head if(istype(HM) && HM.pockets)//not all helmuts have pockits var/obj/item/storage/internal/I = HM.pockets - if(I.can_be_inserted(src,TRUE)) + if(I.can_be_inserted(src, M, TRUE)) return TRUE if(WEAR_IN_BACK) if (H.back && isstorage(H.back)) var/obj/item/storage/B = H.back - if(B.can_be_inserted(src, 1)) + if(B.can_be_inserted(src, M, TRUE)) return TRUE return FALSE if(WEAR_IN_SHOES) @@ -705,31 +705,31 @@ cases. Override_icon_state should be a list.*/ if(WEAR_IN_SCABBARD) if(H.back && istype(H.back, /obj/item/storage/large_holster)) var/obj/item/storage/large_holster/B = H.back - if(B.can_be_inserted(src, 1)) + if(B.can_be_inserted(src, M, TRUE)) return TRUE return FALSE if(WEAR_IN_BELT) if(H.belt && isstorage(H.belt)) var/obj/item/storage/B = H.belt - if(B.can_be_inserted(src, 1)) + if(B.can_be_inserted(src, M, TRUE)) return TRUE return FALSE if(WEAR_IN_J_STORE) if(H.s_store && isstorage(H.s_store)) var/obj/item/storage/B = H.s_store - if(B.can_be_inserted(src, 1)) + if(B.can_be_inserted(src, M, TRUE)) return TRUE return FALSE if(WEAR_IN_L_STORE) if(H.l_store && istype(H.l_store, /obj/item/storage/pouch)) var/obj/item/storage/pouch/P = H.l_store - if(P.can_be_inserted(src, 1)) + if(P.can_be_inserted(src, M, TRUE)) return TRUE return FALSE if(WEAR_IN_R_STORE) if(H.r_store && istype(H.r_store, /obj/item/storage/pouch)) var/obj/item/storage/pouch/P = H.r_store - if(P.can_be_inserted(src, 1)) + if(P.can_be_inserted(src, M, TRUE)) return TRUE return FALSE return FALSE //Unsupported slot diff --git a/code/game/objects/items/circuitboards/computer.dm b/code/game/objects/items/circuitboards/computer.dm index d754ada57ca1..db19b79ac0fd 100644 --- a/code/game/objects/items/circuitboards/computer.dm +++ b/code/game/objects/items/circuitboards/computer.dm @@ -158,18 +158,25 @@ name = "Circuit board (ASRS console)" build_path = /obj/structure/machinery/computer/supplycomp - var/contraband_enabled = 0 + var/contraband_enabled = FALSE + var/black_market_lock = FALSE /obj/item/circuitboard/computer/supplycomp/construct(obj/structure/machinery/computer/supplycomp/SC) if (..(SC)) SC.toggle_contraband(contraband_enabled) + SC.lock_black_market(black_market_lock) /obj/item/circuitboard/computer/supplycomp/disassemble(obj/structure/machinery/computer/supplycomp/SC) + if(SC.can_order_contraband) + contraband_enabled = TRUE + if(SC.black_market_lockout) + black_market_lock = TRUE if (..(SC)) SC.toggle_contraband(contraband_enabled) + SC.lock_black_market(black_market_lock) -/obj/item/circuitboard/computer/supplycomp/attackby(obj/item/multitool, mob/user) - if(HAS_TRAIT(multitool, TRAIT_TOOL_MULTITOOL)) +/obj/item/circuitboard/computer/supplycomp/attackby(obj/item/tool, mob/user) + if(HAS_TRAIT(tool, TRAIT_TOOL_MULTITOOL)) to_chat(user, SPAN_WARNING("You start messing around with the electronics of \the [src]...")) if(do_after(user, 8 SECONDS, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) @@ -178,11 +185,40 @@ to_chat(user, SPAN_WARNING("Huh? You find a processor bus with the letters 'B.M.' written in white crayon over it. You start fiddling with it.")) if(do_after(user, 8 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) if(!contraband_enabled) - to_chat(user, SPAN_WARNING("You amplify the broadcasting function with \the [multitool], and a red light starts blinking on and off on the board. Put it back in?")) + to_chat(user, SPAN_WARNING("You amplify the broadcasting function with \the [tool], and a red light starts blinking on and off on the board. Put it back in?")) contraband_enabled = TRUE else - to_chat(user, SPAN_WARNING("You weaken the broadcasting function with \the [multitool], and the red light stops blinking, turning off. It's probably good now.")) + to_chat(user, SPAN_WARNING("You weaken the broadcasting function with \the [tool], and the red light stops blinking, turning off. It's probably good now.")) contraband_enabled = FALSE + + if(HAS_TRAIT(tool, TRAIT_TOOL_TRADEBAND)) + + if(!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) + to_chat(user, SPAN_NOTICE("You do not know how to use [tool]")) + return + + if(black_market_lock) + to_chat(user, SPAN_NOTICE("[src] has already been reset.")) + return + + if(user.action_busy) + to_chat(user, "You are too busy with other actions to fix any tampering.") + return + + playsound(tool, 'sound/machines/lockenable.ogg', 25) + user.visible_message(SPAN_NOTICE("[user] attaches [tool] to [src]."),\ + SPAN_NOTICE("You begin to fix any tampering to [src].")) + tool.icon_state = "[tool.icon_state]_on" + + if(!do_after(user, 15 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC, tool, INTERRUPT_ALL)) + tool.icon_state = initial(tool.icon_state) + return + + playsound(tool, 'sound/machines/ping.ogg', 25) + black_market_lock = TRUE + contraband_enabled = FALSE + tool.icon_state = initial(tool.icon_state) + else ..() /obj/item/circuitboard/computer/supplycomp/vehicle diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 6795f8b436dc..e795f4e28de4 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -65,6 +65,7 @@ if(on) on = FALSE set_light_on(on) + update_icon() for(var/X in actions) var/datum/action/A = X A.update_button_icon() diff --git a/code/game/objects/items/devices/motion_detector.dm b/code/game/objects/items/devices/motion_detector.dm index dd0c5d45eda4..9776eae11c8f 100644 --- a/code/game/objects/items/devices/motion_detector.dm +++ b/code/game/objects/items/devices/motion_detector.dm @@ -281,12 +281,12 @@ DB.setDir(initial(DB.dir)) DB.screen_loc = "[Clamp(c_view + 1 - view_x_offset + (target.x - user.x), 1, 2*c_view+1)],[Clamp(c_view + 1 - view_y_offset + (target.y - user.y), 1, 2*c_view+1)]" - user.client.screen += DB + user.client.add_to_screen(DB) addtimer(CALLBACK(src, PROC_REF(clear_pings), user, DB), 1 SECONDS) /obj/item/device/motiondetector/proc/clear_pings(mob/user, obj/effect/detector_blip/DB) if(user.client) - user.client.screen -= DB + user.client.remove_from_screen(DB) /obj/item/device/motiondetector/m717 name = "M717 pocket motion detector" diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 310e9dba0199..58d8cd8d8d5f 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -158,7 +158,7 @@ /obj/item/device/encryptionkey/io name = "\improper Marine Intelligence Officer Radio Encryption Key" icon_state = "cap_key" - channels = list(RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE, RADIO_CHANNEL_INTEL = TRUE) + channels = list(RADIO_CHANNEL_ALMAYER = TRUE, RADIO_CHANNEL_COMMAND = TRUE, RADIO_CHANNEL_ENGI = TRUE, RADIO_CHANNEL_JTAC = TRUE, RADIO_CHANNEL_MEDSCI = TRUE, SQUAD_MARINE_1 = FALSE, SQUAD_MARINE_2 = FALSE, SQUAD_MARINE_3 = FALSE, SQUAD_MARINE_4 = FALSE, SQUAD_MARINE_5 = FALSE, SQUAD_MARINE_CRYO = FALSE) /obj/item/device/encryptionkey/vc name = "\improper Marine Vehicle Crewman Radio Encryption Key" diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index bfd5754ea627..21aa96e971a1 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -514,6 +514,7 @@ name = "marine intel radio headset" desc = "Used by Intelligence Officers. Channels are as follows: :v - marine command, :a - alpha squad, :b - bravo squad, :c - charlie squad, :d - delta squad, :n - engineering, :m - medical, :j - JTAC, :t - intel." initial_keys = list(/obj/item/device/encryptionkey/io) + frequency = INTEL_FREQ /obj/item/device/radio/headset/almayer/mcl name = "corporate liaison radio headset" diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 83976e6a9077..38ff8859ef97 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -456,3 +456,13 @@ FORENSIC SCANNER update_icon(market_value, TRUE) playsound(user, 'sound/machines/twobeep.ogg', 15, TRUE) to_chat(user, SPAN_NOTICE("You scan [hit_atom] and notice a reading on [src]'s pad, it says: ITEM HAS [market_value] VALUE ")) + +/obj/item/device/cmb_black_market_tradeband + name = "\improper CMB Tradeband Compliance Device" + desc = "A device used to reset any tampering done to trading devices' signal range. Occasionally used to fix any signal chips damaged in an accident, but often for malpractice in trading. Use this with caution, as it will also reset any evidence of potential illicit trade. Created to fulfill a joint-organization requirement for CMB-ICC teams on the frontier, where tampered machinery was difficult to move and refurbish. Smugglers beware." + icon_state = "cmb_scanner" + item_state = "analyzer" + w_class = SIZE_SMALL + flags_atom = FPRINT + flags_equip_slot = SLOT_WAIST + inherent_traits = list(TRAIT_TOOL_TRADEBAND) diff --git a/code/game/objects/items/devices/vulture_spotter.dm b/code/game/objects/items/devices/vulture_spotter.dm index b89009efde7e..d138c62c7a35 100644 --- a/code/game/objects/items/devices/vulture_spotter.dm +++ b/code/game/objects/items/devices/vulture_spotter.dm @@ -18,6 +18,8 @@ . = ..() to_chat(user, SPAN_WARNING("[src] needs to be mounted on a tripod to use!")) +/obj/item/device/vulture_spotter_scope/skillless + /obj/item/device/vulture_spotter_tripod name = "\improper M707 spotter tripod" desc = "A tripod, meant for stabilizing a spotting scope for the M707 anti-materiel rifle." diff --git a/code/game/objects/items/explosives/grenades/marines.dm b/code/game/objects/items/explosives/grenades/marines.dm index 2abb28075496..46d2d4eba921 100644 --- a/code/game/objects/items/explosives/grenades/marines.dm +++ b/code/game/objects/items/explosives/grenades/marines.dm @@ -479,12 +479,16 @@ underslug_launchable = FALSE harmful = TRUE antigrief_protection = TRUE + /// The nerve gas datum var/datum/effect_system/smoke_spread/cn20/nerve_gas + /// The typepath of the nerve gas + var/nerve_gas_type = /datum/effect_system/smoke_spread/cn20 + /// The radius the gas will reach var/nerve_gas_radius = 2 -/obj/item/explosive/grenade/nerve_gas/New() - ..() - nerve_gas = new /datum/effect_system/smoke_spread/cn20 +/obj/item/explosive/grenade/nerve_gas/Initialize(mapload, ...) + . = ..() + nerve_gas = new nerve_gas_type nerve_gas.attach(src) /obj/item/explosive/grenade/nerve_gas/Destroy() @@ -499,10 +503,7 @@ /obj/item/explosive/grenade/nerve_gas/xeno name = "\improper CN20-X canister grenade" - -/obj/item/explosive/grenade/nerve_gas/xeno/New() - nerve_gas = new /datum/effect_system/smoke_spread/cn20/xeno - nerve_gas.attach(src) + nerve_gas_type = /datum/effect_system/smoke_spread/cn20/xeno /* //================================================ diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm index 5f6ca9a91272..abd8404d6e25 100644 --- a/code/game/objects/items/misc.dm +++ b/code/game/objects/items/misc.dm @@ -204,7 +204,7 @@ return //too deeply nested to access or not being carried by the user. var/obj/item/storage/U = I.loc - user.client.screen -= I + user.client.remove_from_screen(I) U.contents.Remove(I) else if(user.l_hand == I) //in a hand user.drop_l_hand() diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 4887ba25d3b0..4f7ec74633b9 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -60,7 +60,6 @@ GLOBAL_LIST_INIT(plastic_recipes, list ( \ new/datum/stack_recipe("plastic fork", /obj/item/tool/kitchen/utensil/pfork, 1, on_floor = 1), \ new/datum/stack_recipe("plastic spoon", /obj/item/tool/kitchen/utensil/pspoon, 1, on_floor = 1), \ new/datum/stack_recipe("plastic knife", /obj/item/tool/kitchen/utensil/pknife, 1, on_floor = 1), \ - new/datum/stack_recipe("plastic bag", /obj/item/storage/bag/plasticbag, 3, on_floor = 1), \ )) GLOBAL_LIST_INIT(iron_recipes, list ( \ diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index e0b3a4bde9dc..3b65811b05b3 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -12,6 +12,11 @@ max_w_class = SIZE_MEDIUM storage_slots = null max_storage_space = 21 + cant_hold = list(/obj/item/storage/firstaid, /obj/item/storage/toolkit) + can_hold_skill = list( + /obj/item/storage/firstaid = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/storage/toolkit = list(SKILL_ENGINEER, SKILL_ENGINEER_ENGI), + ) var/worn_accessible = FALSE //whether you can access its content while worn on the back var/obj/item/card/id/locking_id = null var/is_id_lockable = FALSE @@ -405,7 +410,7 @@ has_gamemode_skin = FALSE storage_slots = 3 icon_state = "ammo_pack_0" - can_hold = list(/obj/item/ammo_box) + can_hold = list(/obj/item/ammo_box, /obj/item/stack/folding_barricade) max_w_class = SIZE_MASSIVE throw_range = 0 xeno_types = null @@ -675,6 +680,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r icon_state = "g8pouch" item_state = "g8pouch" has_gamemode_skin = TRUE + can_hold_skill = list() /obj/item/storage/backpack/general_belt/equipped(mob/user, slot) switch(slot) @@ -741,6 +747,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r RegisterSignal(H, COMSIG_HUMAN_EXTINGUISH, PROC_REF(wrapper_fizzle_camouflage)) camo_active = TRUE + ADD_TRAIT(H, TRAIT_CLOAKED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) H.visible_message(SPAN_DANGER("[H] vanishes into thin air!"), SPAN_NOTICE("You activate your cloak's camouflage."), max_distance = 4) playsound(H.loc, 'sound/effects/cloak_scout_on.ogg', 15, TRUE) H.unset_interaction() @@ -779,6 +786,7 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r cloak_cooldown = world.time + 10 SECONDS camo_active = FALSE + REMOVE_TRAIT(H, TRAIT_CLOAKED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) H.visible_message(SPAN_DANGER("[H] shimmers into existence!"), SPAN_WARNING("Your cloak's camouflage has deactivated!"), max_distance = 4) playsound(H.loc, 'sound/effects/cloak_scout_off.ogg', 15, TRUE) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index c86003b251da..542b947134e8 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -128,7 +128,7 @@ /obj/item/storage/bag/sheetsnatcher/Initialize() . = ..() -/obj/item/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W as obj, stop_messages = 0) +/obj/item/storage/bag/sheetsnatcher/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) if(!istype(W,/obj/item/stack/sheet) || istype(W,/obj/item/stack/sheet/mineral/sandstone) || istype(W,/obj/item/stack/sheet/wood)) if(!stop_messages) to_chat(usr, "The snatcher does not accept [W].") diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index bf267bb23abf..301f6de2bc70 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -94,22 +94,28 @@ /obj/item/tool/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, + /obj/item/tool/extinguisher/mini, + /obj/item/tool/shovel/etool, + /obj/item/stack/cable_coil, + /obj/item/weapon/gun/smg/nailgun/compact, + /obj/item/cell, + /obj/item/circuitboard, + /obj/item/stock_parts, + /obj/item/device/demo_scanner, + /obj/item/device/reagent_scanner, + /obj/item/device/assembly, /obj/item/device/multitool, /obj/item/device/flashlight, - /obj/item/stack/cable_coil, /obj/item/device/t_scanner, /obj/item/device/analyzer, - /obj/item/weapon/gun/smg/nailgun/compact, - /obj/item/tool/shovel/etool, - /obj/item/tool/extinguisher/mini, - /obj/item/cell, + /obj/item/explosive/plastic, /obj/item/device/lightreplacer, - ) bypass_w_limit = list( /obj/item/tool/shovel/etool, /obj/item/device/lightreplacer, ) + storage_slots = 10 /obj/item/storage/belt/utility/full/fill_preset_inventory() @@ -162,9 +168,6 @@ /obj/item/clothing/mask/surgical, /obj/item/clothing/gloves/latex, /obj/item/storage/syringe_case, - /obj/item/ammo_magazine/pistol, - /obj/item/ammo_magazine/revolver, - /obj/item/ammo_magazine/handful, /obj/item/device/flashlight/flare, /obj/item/reagent_container/hypospray, /obj/item/bodybag, @@ -987,7 +990,7 @@ user.update_inv_s_store() //There are only two types here that can be inserted, and they are mutually exclusive. We only track the gun. -/obj/item/storage/belt/gun/can_be_inserted(obj/item/W, stop_messages) //We don't need to stop messages, but it can be left in. +/obj/item/storage/belt/gun/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) //We don't need to stop messages, but it can be left in. . = ..() if(!.) return @@ -1336,6 +1339,16 @@ new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src) new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src) +/obj/item/storage/belt/gun/mateba/cmateba/special + +/obj/item/storage/belt/gun/mateba/cmateba/special/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/mateba/special()) + new /obj/item/ammo_magazine/revolver/mateba/highimpact(src) + new /obj/item/ammo_magazine/revolver/mateba/highimpact(src) + new /obj/item/ammo_magazine/revolver/mateba/highimpact(src) + new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src) + new /obj/item/ammo_magazine/revolver/mateba/highimpact/ap(src) + /obj/item/storage/belt/gun/mateba/council name = "colonel's M276 pattern Mateba holster rig" desc = "The M276 is the standard load-bearing equipment of the USCM. \ @@ -1674,28 +1687,31 @@ /obj/item/storage/belt/gun/utility name = "\improper M276 pattern combat toolbelt rig" desc = "The M276 pattern combat toolbelt rig is an alternative load-bearing equipment of the USCM for engineers conducting repairs within combat zones. It consists of a modular belt with various clips and pouches for tools along with a holster for a sidearm. Due to the bulk of the sidearm, it is unable to hold as many tools as its standard counterpart." - storage_slots = 6 + storage_slots = 9 icon_state = "combatutility" item_state= "utility" can_hold = list( /obj/item/weapon/gun/pistol, - /obj/item/weapon/gun/revolver/m44, + /obj/item/weapon/gun/revolver, /obj/item/weapon/gun/flare, /obj/item/tool/crowbar, /obj/item/tool/screwdriver, /obj/item/tool/weldingtool, /obj/item/tool/wirecutters, /obj/item/tool/wrench, + /obj/item/tool/shovel/etool, + /obj/item/tool/extinguisher/mini, /obj/item/device/multitool, /obj/item/device/flashlight, - /obj/item/stack/cable_coil, /obj/item/device/t_scanner, /obj/item/device/analyzer, + /obj/item/device/lightreplacer, /obj/item/weapon/gun/smg/nailgun/compact, - /obj/item/tool/shovel/etool, - /obj/item/tool/extinguisher/mini, + /obj/item/stack/cable_coil, /obj/item/cell, - /obj/item/device/lightreplacer, + /obj/item/ammo_magazine/pistol, + /obj/item/ammo_magazine/revolver, + /obj/item/ammo_magazine/handful, ) bypass_w_limit = list( /obj/item/tool/shovel/etool, diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 5816da7740c3..509690a8dc2a 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -8,18 +8,33 @@ //---------FIRST AID KITS--------- /obj/item/storage/firstaid name = "first-aid kit" - desc = "It's an emergency medical kit for those serious boo-boos." + desc = "It's an emergency medical kit for those serious boo-boos. With medical training you can fit this in a backpack." icon_state = "firstaid" throw_speed = SPEED_FAST throw_range = 8 use_sound = "toolbox" matter = list("plastic" = 2000) - cant_hold = list( - /obj/item/ammo_magazine, - /obj/item/explosive/grenade, - /obj/item/tool, - ) //to prevent powergaming. + can_hold = list( + /obj/item/device/healthanalyzer, + /obj/item/reagent_container/dropper, + /obj/item/reagent_container/pill, + /obj/item/reagent_container/glass/bottle, + /obj/item/reagent_container/syringe, + /obj/item/storage/pill_bottle, + /obj/item/stack/medical, + /obj/item/reagent_container/hypospray, + /obj/item/storage/syringe_case, + /obj/item/storage/surgical_case, + /obj/item/tool/surgery/surgical_line, + /obj/item/tool/surgery/synthgraft, + /obj/item/roller, + /obj/item/bodybag, + /obj/item/reagent_container/blood, + ) storage_flags = STORAGE_FLAGS_BOX + required_skill_for_nest_opening = SKILL_MEDICAL + required_skill_level_for_nest_opening = SKILL_MEDICAL_MEDIC + var/icon_full //icon state to use when kit is full var/possible_icons_full @@ -49,7 +64,7 @@ /obj/item/storage/firstaid/fire name = "fire first-aid kit" - desc = "It's an emergency medical kit for when the dropship ammo storage -spontaneously- burns down." + desc = "It's an emergency medical kit for when the dropship ammo storage -spontaneously- burns down. With medical training you can fit this in a backpack." icon_state = "ointment" item_state = "firstaid-ointment" possible_icons_full = list("ointment","firefirstaid") @@ -69,7 +84,7 @@ /obj/item/storage/firstaid/regular icon_state = "firstaid" - desc = "It's an emergency medical kit containing basic medication and equipment. No training required to use." + desc = "It's an emergency medical kit containing basic medication and equipment. No training required to use. With medical training you can fit this in a backpack." /obj/item/storage/firstaid/regular/fill_preset_inventory() new /obj/item/device/healthanalyzer(src) @@ -100,7 +115,7 @@ /obj/item/storage/firstaid/toxin name = "toxin first-aid kit" - desc = "It's an emergency medical kit containing lifesaving anti-toxic medication." + desc = "It's an emergency medical kit containing lifesaving anti-toxic medication. With medical training you can fit this in a backpack." icon_state = "antitoxin" item_state = "firstaid-toxin" possible_icons_full = list("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3") @@ -117,7 +132,7 @@ /obj/item/storage/firstaid/o2 name = "oxygen deprivation first-aid kit" - desc = "A box full of reoxygenating goodies." + desc = "A box full of reoxygenating goodies. With medical training you can fit this in a backpack." icon_state = "o2" item_state = "firstaid-o2" @@ -135,7 +150,7 @@ /obj/item/storage/firstaid/adv name = "advanced first-aid kit" - desc = "Contains more effective methods of medical treatment than a basic first-aid kit, such as burn and trauma kits." + desc = "Contains more effective methods of medical treatment than a basic first-aid kit, such as burn and trauma kits. With medical training you can fit this in a backpack." icon_state = "advfirstaid" item_state = "firstaid-advanced" @@ -151,16 +166,26 @@ /obj/item/storage/firstaid/adv/empty/fill_preset_inventory() return - - /obj/item/storage/firstaid/synth name = "synthetic repair kit" - desc = "Contains equipment to repair a damaged synthetic. A tag on the back reads: 'Does not contain a shocking tool to repair disabled synthetics, nor a scanning device to detect specific damage; pack seperately.'" + desc = "Contains equipment to repair a damaged synthetic. A tag on the back reads: 'Does not contain a shocking tool to repair disabled synthetics, nor a scanning device to detect specific damage; pack seperately.' With medical training you can fit this in a backpack." icon_state = "bezerk" item_state = "firstaid-advanced" - cant_hold = list( - /obj/item/ammo_magazine, - /obj/item/explosive/grenade, + can_hold = list( + /obj/item/device/healthanalyzer, + /obj/item/reagent_container/dropper, + /obj/item/reagent_container/pill, + /obj/item/reagent_container/glass/bottle, + /obj/item/reagent_container/syringe, + /obj/item/storage/pill_bottle, + /obj/item/stack/medical, + /obj/item/reagent_container/hypospray, + /obj/item/storage/syringe_case, + /obj/item/tool/surgery/surgical_line, + /obj/item/tool/surgery/synthgraft, + /obj/item/stack/nanopaste, + /obj/item/stack/cable_coil, + /obj/item/tool/weldingtool, ) /obj/item/storage/firstaid/synth/fill_preset_inventory() @@ -170,14 +195,14 @@ new /obj/item/stack/nanopaste(src) new /obj/item/stack/cable_coil/white(src) new /obj/item/stack/cable_coil/white(src) - new /obj/item/tool/weldingtool/largetank(src) + new /obj/item/tool/weldingtool(src) /obj/item/storage/firstaid/synth/empty/fill_preset_inventory() return /obj/item/storage/firstaid/rad name = "radiation first-aid kit" - desc = "Contains treatment for radiation exposure" + desc = "Contains treatment for radiation exposure. With medical training you can fit this in a backpack." icon_state = "purplefirstaid" /obj/item/storage/firstaid/rad/fill_preset_inventory() @@ -193,12 +218,20 @@ /obj/item/storage/firstaid/surgical name = "basic field surgery kit" - desc = "Contains a surgical line, cautery, scalpel, hemostat, retractor, drapes and an oxycodone injector for tending wounds surgically." + desc = "Contains a surgical line, cautery, scalpel, hemostat, retractor, drapes and an oxycodone injector for tending wounds surgically. With medical training you can fit this in a backpack." icon_state = "bezerk" - cant_hold = list( - /obj/item/ammo_magazine, - /obj/item/explosive/grenade, - ) // we need surgery tools buddy + can_hold = list( + /obj/item/device/healthanalyzer, + /obj/item/reagent_container/dropper, + /obj/item/reagent_container/pill, + /obj/item/reagent_container/glass/bottle, + /obj/item/reagent_container/syringe, + /obj/item/storage/pill_bottle, + /obj/item/stack/medical, + /obj/item/reagent_container/hypospray, + /obj/item/storage/syringe_case, + /obj/item/tool/surgery, + ) /obj/item/storage/firstaid/surgical/fill_preset_inventory() new /obj/item/tool/surgery/surgical_line(src) @@ -212,23 +245,6 @@ /obj/item/storage/firstaid/surgical/empty/fill_preset_inventory() return -//---------TOOLKIT--------- - -/obj/item/storage/firstaid/toolkit - name = "toolkit" - desc = "An combat engineering toolkit intended to carry electrical and mechanical supplies into combat." - icon_state = "toolkit" - item_state = "fulton" - -/obj/item/storage/firstaid/toolkit/update_icon() - if(content_watchers || !length(contents)) - icon_state = "toolkit_empty" - else - icon_state = icon_full - -/obj/item/storage/firstaid/toolkit/empty/fill_preset_inventory() - return - //---------SYRINGE CASE--------- /obj/item/storage/syringe_case @@ -420,7 +436,7 @@ return ..() -/obj/item/storage/pill_bottle/can_be_inserted(obj/item/W, stop_messages = 0) +/obj/item/storage/pill_bottle/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) . = ..() if(.) if(skilllock && !skillcheck(usr, SKILL_MEDICAL, SKILL_MEDICAL_MEDIC)) diff --git a/code/game/objects/items/storage/internal.dm b/code/game/objects/items/storage/internal.dm index d83ca561374b..68bdda8d7e7b 100644 --- a/code/game/objects/items/storage/internal.dm +++ b/code/game/objects/items/storage/internal.dm @@ -173,7 +173,7 @@ var/list/garb_items var/slots_reserved_for_garb -/obj/item/storage/internal/headgear/can_be_inserted(obj/item/item, stop_messages) //We don't need to stop messages, but it can be left in. +/obj/item/storage/internal/headgear/can_be_inserted(obj/item/item, mob/user, stop_messages = FALSE) //We don't need to stop messages, but it can be left in. . = ..() if(!.) return diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm index b43ce5c47479..a443a3b27cd0 100644 --- a/code/game/objects/items/storage/pouch.dm +++ b/code/game/objects/items/storage/pouch.dm @@ -264,7 +264,7 @@ current_gun = null update_gun_icon() -/obj/item/storage/pouch/pistol/can_be_inserted(obj/item/W, stop_messages) //A little more detailed than just 'the pouch is full'. +/obj/item/storage/pouch/pistol/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) //A little more detailed than just 'the pouch is full'. . = ..() if(!.) return @@ -328,7 +328,7 @@ else if(AM == tablet) tablet = null -/obj/item/storage/pouch/pistol/command/can_be_inserted(obj/item/I, stop_messages) +/obj/item/storage/pouch/pistol/command/can_be_inserted(obj/item/I, mob/user, stop_messages = FALSE) . = ..() if(!.) return @@ -791,27 +791,47 @@ new /obj/item/reagent_container/syringe(src) /obj/item/storage/pouch/medkit - name = "medkit pouch" - max_w_class = SIZE_MEDIUM - storage_flags = STORAGE_FLAGS_POUCH|STORAGE_USING_DRAWING_METHOD + name = "medical kit pouch" + storage_flags = STORAGE_FLAGS_POUCH icon_state = "medkit" - desc = "It's specifically made to hold a medkit." - can_hold = list(/obj/item/storage/firstaid) - -/obj/item/storage/pouch/medkit/handle_mmb_open(mob/user) - var/obj/item/storage/firstaid/FA = locate() in contents - if(FA) - FA.open(user) - return - return ..() - + desc = "It's specifically made to hold medical items. Requires medical skills to use effectively." + storage_slots = 7 + can_hold_skill = list( + /obj/item/device/healthanalyzer = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/dropper = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/pill = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/glass/bottle = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/syringe = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/storage/pill_bottle = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/stack/medical = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/hypospray = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/storage/syringe_case = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/storage/surgical_case = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/tool/surgery/surgical_line = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/tool/surgery/synthgraft = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/roller = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/bodybag = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + /obj/item/reagent_container/blood = list(SKILL_MEDICAL, SKILL_MEDICAL_MEDIC), + ) + can_hold_skill_only = TRUE /obj/item/storage/pouch/medkit/full/fill_preset_inventory() - new /obj/item/storage/firstaid/regular(src) + new /obj/item/device/healthanalyzer(src) + new /obj/item/reagent_container/hypospray/autoinjector/skillless(src) + new /obj/item/reagent_container/hypospray/autoinjector/skillless/tramadol(src) + new /obj/item/reagent_container/hypospray/autoinjector/inaprovaline(src) + new /obj/item/stack/medical/bruise_pack(src) + new /obj/item/stack/medical/ointment(src) + new /obj/item/stack/medical/splint(src) /obj/item/storage/pouch/medkit/full_advanced/fill_preset_inventory() - new /obj/item/storage/firstaid/adv(src) - + new /obj/item/reagent_container/hypospray/autoinjector/tricord(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/stack/medical/splint(src) /obj/item/storage/pouch/pressurized_reagent_canister name = "Pressurized Reagent Canister Pouch" @@ -1032,7 +1052,10 @@ to_chat(usr, SPAN_WARNING("There is no container inside this pouch!")) return - usr.put_in_any_hand_if_possible(inner, disable_warning = TRUE) + var/had_empty_hand = usr.put_in_any_hand_if_possible(inner, disable_warning = TRUE) + if(!had_empty_hand) + usr.drop_inv_item_on_ground(inner) + inner = null update_icon() @@ -1236,7 +1259,7 @@ if(slung && slung.loc != src) . += "\The [slung] is attached to the sling." -/obj/item/storage/pouch/sling/can_be_inserted(obj/item/I, stop_messages = FALSE) +/obj/item/storage/pouch/sling/can_be_inserted(obj/item/I, mob/user, stop_messages = FALSE) if(slung) if(slung != I) if(!stop_messages) diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 5a6b7d2b9b05..e3fbe86c0e3b 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -31,6 +31,18 @@ var/storage_flags = STORAGE_FLAGS_DEFAULT var/has_gamemode_skin = FALSE ///Whether to use map-variant skins. + ///Special can_holds that require a skill to insert, it is an associated list of typepath = list(skilltype, skilllevel) + var/list/can_hold_skill = list() + + ///Dictates whether or not we only check for items in can_hold_skill rather than can_hold or free usage + var/can_hold_skill_only = FALSE + + /// The required skill for opening this storage if it is inside another storage type + var/required_skill_for_nest_opening = null + + /// The required level of a skill for opening this storage if it is inside another storage type + var/required_skill_level_for_nest_opening = null + /obj/item/storage/MouseDrop(obj/over_object as obj) if(CAN_PICKUP(usr, src)) if(over_object == usr) // this must come before the screen objects only block @@ -92,25 +104,24 @@ return if(user.s_active) user.s_active.hide_from(user) - user.client.screen -= boxes - user.client.screen -= storage_start - user.client.screen -= storage_continue - user.client.screen -= storage_end - user.client.screen -= closer - user.client.screen -= contents - user.client.screen += closer - user.client.screen += contents + user.client.remove_from_screen(boxes) + user.client.remove_from_screen(storage_start) + user.client.remove_from_screen(storage_continue) + user.client.remove_from_screen(storage_end) + user.client.remove_from_screen(closer) + user.client.remove_from_screen(contents) + user.client.add_to_screen(closer) + user.client.add_to_screen(contents) if(storage_slots) - user.client.screen += boxes + user.client.add_to_screen(boxes) else - user.client.screen += storage_start - user.client.screen += storage_continue - user.client.screen += storage_end + user.client.add_to_screen(storage_start) + user.client.add_to_screen(storage_continue) + user.client.add_to_screen(storage_end) user.s_active = src add_to_watchers(user) - return /obj/item/storage/proc/add_to_watchers(mob/user) if(!(user in content_watchers)) @@ -125,12 +136,12 @@ ///Used to hide the storage's inventory screen. /obj/item/storage/proc/hide_from(mob/user as mob) if(user.client) - user.client.screen -= src.boxes - user.client.screen -= storage_start - user.client.screen -= storage_continue - user.client.screen -= storage_end - user.client.screen -= src.closer - user.client.screen -= src.contents + user.client.remove_from_screen(src.boxes) + user.client.remove_from_screen(storage_start) + user.client.remove_from_screen(storage_continue) + user.client.remove_from_screen(storage_end) + user.client.remove_from_screen(src.closer) + user.client.remove_from_screen(src.contents) if(user.s_active == src) user.s_active = null del_from_watchers(user) @@ -147,6 +158,12 @@ /obj/item/storage/proc/open(mob/user) if(user.s_active == src) //Spam prevention. return + + if(istype(loc, /obj/item/storage) && required_skill_for_nest_opening) + if(!user || user.skills?.get_skill_level(required_skill_for_nest_opening) < required_skill_level_for_nest_opening) + to_chat(user, SPAN_NOTICE("You can't seem to open [src] while it is in [loc].")) + return + if(!opened) orient2hud() opened = 1 @@ -389,20 +406,36 @@ var/list/global/item_storage_box_cache = list() if(sum_storage_cost <= max_storage_space) //Adding this item won't exceed the maximum. return TRUE -/obj/item/storage/proc/can_hold_type(type_to_hold) +#define SKILL_TYPE_INDEX 1 +#define SKILL_LEVEL_INDEX 2 + +/obj/item/storage/proc/can_hold_type(type_to_hold, mob/user) + if(length(can_hold_skill)) + for(var/can_hold_skill_typepath in can_hold_skill) + if(ispath(type_to_hold, can_hold_skill_typepath) && user.skills?.get_skill_level(can_hold_skill[can_hold_skill_typepath][SKILL_TYPE_INDEX]) >= can_hold_skill[can_hold_skill_typepath][SKILL_LEVEL_INDEX]) + return TRUE + if(can_hold_skill_only) + return FALSE + for(var/A in cant_hold) if(ispath(type_to_hold, A)) return FALSE + if(length(can_hold)) for(var/A in can_hold) if(ispath(type_to_hold, A)) return TRUE + return FALSE + return TRUE +#undef SKILL_TYPE_INDEX +#undef SKILL_LEVEL_INDEX + //This proc return 1 if the item can be picked up and 0 if it can't. //Set the stop_messages to stop it from printing messages -/obj/item/storage/proc/can_be_inserted(obj/item/W as obj, stop_messages = 0) +/obj/item/storage/proc/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) if(!istype(W) || (W.flags_item & NODROP)) return //Not an item if(src.loc == W) @@ -418,7 +451,7 @@ var/list/global/item_storage_box_cache = list() to_chat(usr, SPAN_ALERT("[W] is ignited, you can't store it!")) return - if(!can_hold_type(W.type)) + if(!can_hold_type(W.type, user)) if(!stop_messages) to_chat(usr, SPAN_NOTICE("[src] cannot hold [W].")) return @@ -474,7 +507,7 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ W.on_enter_storage(src) if(user) if (user.client && user.s_active != src) - user.client.screen -= W + user.client.remove_from_screen(W) add_fingerprint(user) if(!prevent_warning) var/visidist = W.w_class >= 3 ? 3 : 1 @@ -500,7 +533,7 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ /obj/item/storage/proc/_item_removal(obj/item/W as obj, atom/new_location) for(var/mob/M in can_see_content()) if(M.client) - M.client.screen -= W + M.client.remove_from_screen(W) if(new_location) if(ismob(new_location)) @@ -543,7 +576,7 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ ..() /obj/item/storage/proc/attempt_item_insertion(obj/item/W as obj, prevent_warning = FALSE, mob/user as mob) - if(!can_be_inserted(W)) + if(!can_be_inserted(W, user)) return W.add_fingerprint(user) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index e6ebbadd9122..db0d4e3b269b 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -56,7 +56,7 @@ var/color = pick("red","yellow","green","blue","pink","orange","cyan","white") new /obj/item/tool/screwdriver(src) new /obj/item/tool/wirecutters(src) - new /obj/item/device/t_scanner(src) + new /obj/item/circuitboard/apc(src) new /obj/item/tool/crowbar(src) new /obj/item/stack/cable_coil(src,30,color) new /obj/item/stack/cable_coil(src,30,color) diff --git a/code/game/objects/items/storage/toolkit.dm b/code/game/objects/items/storage/toolkit.dm new file mode 100644 index 000000000000..e3171eca40f6 --- /dev/null +++ b/code/game/objects/items/storage/toolkit.dm @@ -0,0 +1,45 @@ +/obj/item/storage/toolkit + name = "engineer kit" + desc = "An combat engineering toolkit intended to carry electrical and mechanical supplies into combat. With engineering training you can fit this in a backpack." + icon_state = "toolkit" + item_state = "fulton" + throw_speed = SPEED_FAST + throw_range = 8 + use_sound = "toolbox" + matter = list("plastic" = 2000) + can_hold = list( + /obj/item/circuitboard, + /obj/item/device/flashlight, + /obj/item/clothing/glasses/welding, + /obj/item/device/analyzer, + /obj/item/device/demo_scanner, + /obj/item/device/reagent_scanner, + /obj/item/device/t_scanner, + /obj/item/stack/cable_coil, + /obj/item/cell, + /obj/item/device/assembly, + /obj/item/stock_parts, + /obj/item/explosive/plastic, + ) + storage_flags = STORAGE_FLAGS_BOX + required_skill_for_nest_opening = SKILL_ENGINEER + required_skill_level_for_nest_opening = SKILL_ENGINEER_ENGI + + ///icon state to use when kit is full + var/icon_full + +/obj/item/storage/toolkit/Initialize() + . = ..() + + icon_full = initial(icon_state) + + update_icon() + +/obj/item/storage/toolkit/update_icon() + if(content_watchers || !length(contents)) + icon_state = "toolkit_empty" + else + icon_state = icon_full + +/obj/item/storage/toolkit/empty/fill_preset_inventory() + return diff --git a/code/game/objects/items/tools/flame_tools.dm b/code/game/objects/items/tools/flame_tools.dm index 862906ec1971..130bd567098b 100644 --- a/code/game/objects/items/tools/flame_tools.dm +++ b/code/game/objects/items/tools/flame_tools.dm @@ -366,7 +366,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(user == M) user.visible_message(SPAN_NOTICE(type_butt ? "[user] calmly drops and treads on the lit [src], putting it out instantly." : "[user] puts out \the [src].")) else - to_chat(M, SPAN_NOTICE("Your [src] goes out.")) + to_chat(M, SPAN_NOTICE("Your [src.name] goes out.")) STOP_PROCESSING(SSobj, src) if(type_butt) var/turf/T = get_turf(src) diff --git a/code/game/objects/items/tools/maintenance_tools.dm b/code/game/objects/items/tools/maintenance_tools.dm index 65e8f2986679..a326808bf491 100644 --- a/code/game/objects/items/tools/maintenance_tools.dm +++ b/code/game/objects/items/tools/maintenance_tools.dm @@ -183,7 +183,7 @@ /// Whether or not the blowtorch is off(0), on(1) or currently welding(2) var/welding = 0 /// The max amount of fuel the welder can hold - var/max_fuel = 20 + var/max_fuel = 40 /// Used to slowly deplete the fuel when the tool is left on. var/weld_tick = 0 var/has_welding_screen = FALSE @@ -413,7 +413,7 @@ /obj/item/tool/weldingtool/largetank name = "industrial blowtorch" - max_fuel = 40 + max_fuel = 60 matter = list("metal" = 70, "glass" = 60) diff --git a/code/game/objects/items/tools/misc_tools.dm b/code/game/objects/items/tools/misc_tools.dm index 505006285881..b5be55eed540 100644 --- a/code/game/objects/items/tools/misc_tools.dm +++ b/code/game/objects/items/tools/misc_tools.dm @@ -420,12 +420,20 @@ name = "internal affairs rubber stamp" icon_state = "stamp-intaff" -/obj/item/tool/stamp/centcomm - name = "centcomm rubber stamp" - icon_state = "stamp-cent" +/obj/item/tool/stamp/weyyu + name = "WY rubber stamp" + icon_state = "stamp-weyyu" + +/obj/item/tool/stamp/uscm + name = "USCM rubber stamp" + icon_state = "stamp-uscm" + +/obj/item/tool/stamp/cmb + name = "CMB rubber stamp" + icon_state = "stamp-cmb" /obj/item/tool/stamp/ro - name = "requisitions officer's rubber stamp" + name = "quartermaster's rubber stamp" icon_state = "stamp-ro" /obj/item/tool/carpenters_hammer //doesn't do anything, yet diff --git a/code/game/objects/structures/crates_lockers/closets/coffin.dm b/code/game/objects/structures/crates_lockers/closets/coffin.dm index a0c1aade6d73..41c27ae47519 100644 --- a/code/game/objects/structures/crates_lockers/closets/coffin.dm +++ b/code/game/objects/structures/crates_lockers/closets/coffin.dm @@ -6,6 +6,7 @@ icon_opened = "coffin_open" material = MATERIAL_WOOD anchored = FALSE + layer = BETWEEN_OBJECT_ITEM_LAYER /obj/structure/closet/coffin/update_icon() if(!opened) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm index 5772db33198d..ffd993777644 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cm_closets.dm @@ -52,18 +52,16 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) . = ..() new /obj/item/clothing/head/beret/cm(src) new /obj/item/clothing/head/beret/cm(src) - new /obj/item/clothing/head/cmcap/ro(src) - new /obj/item/clothing/head/cmcap/ro(src) + new /obj/item/clothing/head/cmcap/bridge(src) + new /obj/item/clothing/head/cmcap/bridge(src) new /obj/item/clothing/under/marine/officer/bridge(src) new /obj/item/clothing/under/marine/officer/bridge(src) new /obj/item/clothing/shoes/marine(src) new /obj/item/clothing/shoes/marine(src) new /obj/item/storage/belt/marine(src) new /obj/item/storage/belt/marine(src) - new /obj/item/clothing/under/marine/officer/command(src) - new /obj/item/clothing/under/marine/officer/command(src) - new /obj/item/clothing/suit/storage/webbing(src) - new /obj/item/clothing/suit/storage/webbing(src) + new /obj/item/clothing/under/marine/officer/boiler(src) + new /obj/item/clothing/under/marine/officer/boiler(src) new /obj/item/clothing/gloves/combat(src) new /obj/item/clothing/gloves/combat(src) @@ -100,7 +98,7 @@ GLOBAL_LIST_EMPTY(co_secure_boxes) . = ..() new /obj/item/clothing/head/beret/cm(src) new /obj/item/clothing/head/beret/cm/tan(src) - new /obj/item/clothing/head/cmcap/ro(src) + new /obj/item/clothing/head/cmcap/bridge(src) new /obj/item/clothing/head/helmet/marine/rto/intel(src) new /obj/item/clothing/under/marine/officer/intel(src) new /obj/item/clothing/shoes/marine(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index d2b4114df25b..1be2bae9e8ca 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -69,9 +69,9 @@ new /obj/item/clothing/head/welding(src) new /obj/item/clothing/head/welding(src) new /obj/item/clothing/head/welding(src) - new /obj/item/tool/weldingtool/largetank(src) - new /obj/item/tool/weldingtool/largetank(src) - new /obj/item/tool/weldingtool/largetank(src) + new /obj/item/tool/weldingtool(src) + new /obj/item/tool/weldingtool(src) + new /obj/item/tool/weldingtool(src) new /obj/item/tool/weldpack(src) new /obj/item/tool/weldpack(src) new /obj/item/tool/weldpack(src) diff --git a/code/game/objects/structures/props.dm b/code/game/objects/structures/props.dm index 3e3150040cb6..9eea571961f7 100644 --- a/code/game/objects/structures/props.dm +++ b/code/game/objects/structures/props.dm @@ -1306,19 +1306,19 @@ COOLDOWN_DECLARE(damage_delay) /// list of quip emotes, taken from Working Joe var/static/list/quips = list( - /datum/emote/living/carbon/human/synthetic/working_joe/quip/alwaysknow_damaged, + /datum/emote/living/carbon/human/synthetic/working_joe/damage/alwaysknow_damaged, /datum/emote/living/carbon/human/synthetic/working_joe/quip/not_liking, /datum/emote/living/carbon/human/synthetic/working_joe/greeting/how_can_i_help, - /datum/emote/living/carbon/human/synthetic/working_joe/task_update/day_never_done, - /datum/emote/living/carbon/human/synthetic/working_joe/task_update/required_by_apollo, + /datum/emote/living/carbon/human/synthetic/working_joe/farewell/day_never_done, + /datum/emote/living/carbon/human/synthetic/working_joe/farewell/required_by_apollo, /datum/emote/living/carbon/human/synthetic/working_joe/warning/safety_breach ) /// list of voicelines to use when damaged var/static/list/damaged = list( - /datum/emote/living/carbon/human/synthetic/working_joe/warning/damage, - /datum/emote/living/carbon/human/synthetic/working_joe/warning/that_stings, - /datum/emote/living/carbon/human/synthetic/working_joe/warning/irresponsible, - /datum/emote/living/carbon/human/synthetic/working_joe/warning/this_is_futile, + /datum/emote/living/carbon/human/synthetic/working_joe/damage/damage, + /datum/emote/living/carbon/human/synthetic/working_joe/damage/that_stings, + /datum/emote/living/carbon/human/synthetic/working_joe/damage/irresponsible, + /datum/emote/living/carbon/human/synthetic/working_joe/damage/this_is_futile, /datum/emote/living/carbon/human/synthetic/working_joe/warning/hysterical, /datum/emote/living/carbon/human/synthetic/working_joe/warning/patience ) diff --git a/code/game/objects/structures/vulture_spotter.dm b/code/game/objects/structures/vulture_spotter.dm index a668cb562028..50505ab239b8 100644 --- a/code/game/objects/structures/vulture_spotter.dm +++ b/code/game/objects/structures/vulture_spotter.dm @@ -21,6 +21,8 @@ var/darkness_view = 12 /// The maximum distance this can be from the sniper scope var/max_sniper_distance = 7 + /// If this requires the vulture_user trait to use + var/skillless = FALSE /obj/structure/vulture_spotter_tripod/Initialize(mapload) . = ..() @@ -36,7 +38,10 @@ /obj/structure/vulture_spotter_tripod/deconstruct(disassembled) . = ..() if(scope_attached && bound_rifle) - new /obj/item/device/vulture_spotter_scope(get_turf(src), bound_rifle) + if(skillless) + new /obj/item/device/vulture_spotter_scope/skillless(get_turf(src), bound_rifle) + else + new /obj/item/device/vulture_spotter_scope(get_turf(src), bound_rifle) new /obj/item/device/vulture_spotter_tripod(get_turf(src)) /obj/structure/vulture_spotter_tripod/get_examine_text(mob/user) @@ -63,7 +68,7 @@ return var/mob/living/carbon/human/user = usr //this is us - if(!HAS_TRAIT(user, TRAIT_VULTURE_USER)) + if(!HAS_TRAIT(user, TRAIT_VULTURE_USER) && !skillless) to_chat(user, SPAN_WARNING("You don't know how to use this!")) return @@ -153,10 +158,13 @@ user.pixel_y = 0 /// Handler for when the scope is being attached to the tripod -/obj/structure/vulture_spotter_tripod/proc/on_scope_attach(mob/user, obj/structure/vulture_spotter_tripod/scope) +/obj/structure/vulture_spotter_tripod/proc/on_scope_attach(mob/user, obj/item/device/vulture_spotter_scope/scope) if(scope_attached) return + if(istype(scope, /obj/item/device/vulture_spotter_scope/skillless)) + skillless = TRUE + user.visible_message(SPAN_NOTICE("[user] attaches [scope] to [src]."), SPAN_NOTICE("You attach [scope] to [src].")) icon_state = "vulture_scope" setDir(user.dir) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 22a3f48c837e..3d774cedc616 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -106,7 +106,8 @@ var/datum/controller/supply/supply_controller = new() circuit = /obj/item/circuitboard/computer/supplycomp var/temp = null var/reqtime = 0 //Cooldown for requisitions - Quarxink - var/can_order_contraband = 0 + var/can_order_contraband = FALSE + var/black_market_lockout = FALSE var/last_viewed_group = "categories" var/first_time = TRUE @@ -143,6 +144,12 @@ var/datum/controller/supply/supply_controller = new() //If any computers are able to order contraband, it's enabled. Otherwise, it's disabled! +/// Prevents use of black market, even if it is otherwise enabled. If any computer has black market locked out, it applies across all of the currently established ones. +/obj/structure/machinery/computer/supplycomp/proc/lock_black_market(market_locked = FALSE) + for(var/obj/structure/machinery/computer/supplycomp/computer as anything in supply_controller.bound_supply_computer_list) + if(market_locked) + computer.black_market_lockout = TRUE + /obj/structure/machinery/computer/ordercomp name = "Supply ordering console" icon = 'icons/obj/structures/machinery/computer.dmi' @@ -373,6 +380,8 @@ var/datum/controller/supply/supply_controller = new() var/black_market_points = 5 // 5 to start with to buy the scanner. ///If the black market is enabled. var/black_market_enabled = FALSE + ///How close the CMB is to investigating | 100 sends an ERT + var/black_market_heat = 0 /// This contains a list of all typepaths of sold items and how many times they've been recieved. Used to calculate points dropoff (Can't send down a hundred blue souto cans for infinite points) var/list/black_market_sold_items @@ -953,7 +962,7 @@ var/datum/controller/supply/supply_controller = new() if(!istype(supply_pack)) return - if((supply_pack.contraband && !can_order_contraband) || !supply_pack.buyable) + if((supply_pack.contraband && !can_order_contraband) || !supply_pack.buyable || supply_pack.contraband && black_market_lockout) return var/timeout = world.time + 600 @@ -1021,12 +1030,16 @@ var/datum/controller/supply/supply_controller = new() supply_controller.requestlist.Cut(i,i+1) supply_controller.points -= round(supply_pack.cost) supply_controller.black_market_points -= round(supply_pack.dollar_cost) + if(supply_controller.black_market_heat != -1) //-1 Heat means heat is disabled + supply_controller.black_market_heat = clamp(supply_controller.black_market_heat + supply_pack.crate_heat + (supply_pack.crate_heat * rand(rand(-0.25,0),0.25)), 0, 100) // black market heat added is crate heat +- up to 25% of crate heat supply_controller.shoppinglist += supply_order supply_pack.cost = supply_pack.cost * SUPPLY_COST_MULTIPLIER temp = "Thank you for your order.
" temp += "
Back Main Menu" supply_order.approvedby = usr.name msg_admin_niche("[usr] confirmed supply order of [supply_pack.name].") + if(supply_controller.black_market_heat == 100) + supply_controller.black_market_investigation() var/pack_source = "Cargo Hold" var/pack_name = supply_pack.name if(supply_pack.dollar_cost) @@ -1094,6 +1107,9 @@ var/datum/controller/supply/supply_controller = new() temp = "W-Y Dollars: $[supply_controller.black_market_points]
" temp += "Back to all categories


" temp += SPAN_DANGER("ERR0R UNK7OWN C4T2G#!$0-


") + if(black_market_lockout) + temp += "





Unauthorized Access Removed.
This console is currently under CMB investigation.
Thank you for your cooperation.
" + return temp += "KHZKNHZH#0-" if(!supply_controller.mendoza_status) // he's daed temp += "........." @@ -1234,6 +1250,11 @@ var/datum/controller/supply/supply_controller = new() /// For code readability. addtimer(CALLBACK(GLOBAL_PROC, /proc/playsound, get_rand_sound_tile(), sound_to_play, 25, FALSE), timer) +/datum/controller/supply/proc/black_market_investigation() + black_market_heat = -1 + SSticker.mode.get_specific_call("Inspection - Colonial Marshal Ledger Investigation Team", TRUE, TRUE, FALSE) + log_game("Black Market Inspection auto-triggered.") + /obj/structure/machinery/computer/supplycomp/proc/is_buyable(datum/supply_packs/supply_pack) if(supply_pack.group != last_viewed_group) @@ -1242,7 +1263,7 @@ var/datum/controller/supply/supply_controller = new() if(!supply_pack.buyable) return - if(supply_pack.contraband && !can_order_contraband) + if(supply_pack.contraband && !can_order_contraband || supply_pack.contraband && black_market_lockout) return if(isnull(supply_pack.contains) && isnull(supply_pack.containertype)) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index c88f79b43293..a4781e1a6609 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -515,7 +515,7 @@ if(H.gloves && rand(0,100) < 60) if(istype(H.gloves,/obj/item/clothing/gloves/yautja/hunter)) var/obj/item/clothing/gloves/yautja/hunter/Y = H.gloves - if(Y && istype(Y) && Y.cloaked) + if(Y && istype(Y) && HAS_TRAIT(H, TRAIT_CLOAKED)) to_chat(H, SPAN_WARNING(" Your bracers hiss and spark as they short out!")) Y.decloak(H, TRUE, DECLOAK_SUBMERGED) diff --git a/code/game/world.dm b/code/game/world.dm index cff799800a49..fce40ca468ae 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -185,8 +185,8 @@ var/world_topic_spam_protect_time = world.timeofday if(logging) log_topic("(NON-JSON) \"[topic_decoded]\", from:[addr], master:[master], key:[key]") // Fallback check for spacestation13.com requests - if(topic_decoded == "ping") - return length(GLOB.clients) + if(topic_decoded == "status") + return list2params(list("players" = length(GLOB.clients))) response["statuscode"] = 400 response["response"] = "Bad Request - Invalid JSON format" return json_encode(response) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 2c749df71bb7..5042167023e6 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -103,7 +103,7 @@ color = "#114e11" dat += "[N.text] by [admin_ckey] ([N.admin_rank])[confidential_text] on [N.date] [NOTE_ROUND_ID(N)] " - if(admin_ckey == usr.ckey || admin_ckey == "Adminbot" || ishost(usr)) + if(admin_ckey == usr.ckey || admin_ckey == "Adminbot" || check_for_rights(R_PERMISSIONS)) dat += "Remove" dat += "

" diff --git a/code/modules/admin/autoreply.dm b/code/modules/admin/autoreply.dm index a90e21b7f311..0b1d16c41009 100644 --- a/code/modules/admin/autoreply.dm +++ b/code/modules/admin/autoreply.dm @@ -20,15 +20,21 @@ GLOBAL_REFERENCE_LIST_INDEXED(adminreplies, /datum/autoreply/admin, title) /datum/autoreply/admin/bug title = "Bug Report" - message = "Please report all bugs on our Github. Administrative staff are unable to fix most bugs on a round to round basis and only round critical bugs, or exploits, should be ahelped." + +ON_CONFIG_LOAD(/datum/autoreply/admin/bug) + message = "Please report all bugs on our Github. Administrative staff are unable to fix most bugs on a round to round basis and only round critical bugs, or exploits, should be ahelped." /datum/autoreply/admin/marine title = "Marine Guide" - message = "Your action can be answered by the Marine Quickstart Guide. If anything is unclear or you have another question please make a new mentorhelp or ahelp about it." + +ON_CONFIG_LOAD(/datum/autoreply/admin/marine) + message = "Your action can be answered by the Marine Quickstart Guide. If anything is unclear or you have another question please make a new mentorhelp or ahelp about it." /datum/autoreply/admin/xeno title = "Xeno Guide" - message = "Your action can be answered by the Xeno Quickstart Guide. If anything is unclear or you have another question please make a new mentorhelp or ahelp about it." + +ON_CONFIG_LOAD(/datum/autoreply/admin/xeno) + message = "Your action can be answered by the Xeno Quickstart Guide. If anything is unclear or you have another question please make a new mentorhelp or ahelp about it." /datum/autoreply/admin/changelog title = "Changelog" @@ -44,5 +50,6 @@ GLOBAL_REFERENCE_LIST_INDEXED(adminreplies, /datum/autoreply/admin, title) /datum/autoreply/admin/whitelist title = "Whitelist Issue" - message = "Staff are unable to handle most whitelist rulebreaks in-game, please make a player report on the forums, here." +ON_CONFIG_LOAD(/datum/autoreply/admin/whitelist) + message = "Staff are unable to handle most whitelist rulebreaks in-game, please make a player report on the forums, here." diff --git a/code/modules/admin/player_panel/actions/general.dm b/code/modules/admin/player_panel/actions/general.dm index 6f8f0733c96e..174dfef55ad8 100644 --- a/code/modules/admin/player_panel/actions/general.dm +++ b/code/modules/admin/player_panel/actions/general.dm @@ -187,7 +187,7 @@ /datum/player_action/follow/act(client/user, mob/target, list/params) if(istype(user.mob, /mob/dead/observer)) var/mob/dead/observer/O = user.mob - O.ManualFollow(target) + O.do_observe(target) return TRUE else to_chat(user, SPAN_WARNING("You must be a ghost to do this.")) diff --git a/code/modules/admin/player_panel/actions/punish.dm b/code/modules/admin/player_panel/actions/punish.dm index 3ef1cdb4b5aa..576de30ae7ff 100644 --- a/code/modules/admin/player_panel/actions/punish.dm +++ b/code/modules/admin/player_panel/actions/punish.dm @@ -34,7 +34,7 @@ switch(alert("Are you sure you want to EORG ban [target.ckey]?", , "Yes", "No")) if("Yes") mins = 180 - reason = "EORG" + reason = "EORG - Generating combat logs with, or otherwise griefing, friendly/allied players." if("No") return diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index 32eaeb674b8d..79c0a03a7589 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -284,6 +284,21 @@ if(points_to_add >= 0) shipwide_ai_announcement("Additional Supply Budget has been authorised for this operation.") +/datum/admins/proc/check_req_heat() + set name = "Check Requisitions Heat" + set desc = "Check how close the CMB is to arriving to search Requisitions." + set category = "Admin.Events" + if(!SSticker.mode || !check_rights(R_ADMIN)) + return + + var/req_heat_change = tgui_input_real_number(usr, "Set the new requisitions black market heat. ERT is called at 100, disabled at -1. Current Heat: [supply_controller.black_market_heat]", "Modify Req Heat", 0, 100, -1) + if(!req_heat_change) + return + + supply_controller.black_market_heat = req_heat_change + message_admins("[key_name_admin(usr)] set requisitions heat to [req_heat_change].") + + /datum/admins/proc/admin_force_selfdestruct() set name = "Self-Destruct" set desc = "Trigger self-destruct countdown. This should not be done if the self-destruct has already been called." @@ -687,6 +702,7 @@ Cancel Evacuation
Disable Shuttle Control
Add Requisitions Points
+ Modify Requisitions Heat

Research
Change Research Clearance
diff --git a/code/modules/admin/tabs/round_tab.dm b/code/modules/admin/tabs/round_tab.dm index deb27e73f7dc..22ba96a2317a 100644 --- a/code/modules/admin/tabs/round_tab.dm +++ b/code/modules/admin/tabs/round_tab.dm @@ -148,7 +148,10 @@ if(!check_rights(R_SERVER)) return - if (SSticker.current_state != GAME_STATE_PREGAME) + if(SSticker.current_state != GAME_STATE_PREGAME) + if(SSticker.delay_end) + if(tgui_alert(usr, "Round end delay is already enabled, are you sure you want to disable it?", "Confirmation", list("Yes", "No"), 30 SECONDS) != "Yes") + return SSticker.delay_end = !SSticker.delay_end message_admins("[SPAN_NOTICE("[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].")]") for(var/client/C in GLOB.admins) diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index a76be10e9c26..bb7755aa41b0 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -565,7 +565,7 @@ switch(alert("Are you sure you want to EORG ban [M.ckey]?", , "Yes", "No")) if("Yes") mins = 180 - reason = "EORG" + reason = "EORG - Generating combat logs with, or otherwise griefing, friendly/allied players." if("No") return var/datum/entity/player/P = get_player_from_key(M.ckey) // you may not be logged in, but I will find you and I will ban you @@ -1129,7 +1129,7 @@ sleep(2) if(isobserver(usr)) var/mob/dead/observer/G = usr - G.ManualFollow(M) + G.do_observe(M) else if(href_list["check_antagonist"]) check_antagonists() @@ -1502,7 +1502,7 @@ // Stamps var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-cent" + stampoverlay.icon_state = "paper_stamp-weyyu" if(!P.stamped) P.stamped = new P.stamped += /obj/item/tool/stamp @@ -1584,7 +1584,7 @@ // Stamps var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-cent" + stampoverlay.icon_state = "paper_stamp-cmb" if(!P.stamped) P.stamped = new P.stamped += /obj/item/tool/stamp @@ -2096,7 +2096,7 @@ if(distress_cancel) return distress_cancel = TRUE - SSticker.mode.get_specific_call("Weyland-Yutani PMC (Chemical Investigation Squad)", FALSE, FALSE) + SSticker.mode.get_specific_call("Weyland-Yutani PMC (Chemical Investigation Squad)", TRUE, FALSE, FALSE) log_game("[key_name_admin(approver)] has sent a PMC distress beacon, requested by [key_name_admin(ref_person)]") message_admins("[key_name_admin(approver)] has sent a PMC distress beacon, requested by [key_name_admin(ref_person)]") diff --git a/code/modules/admin/topic/topic_events.dm b/code/modules/admin/topic/topic_events.dm index 3240bf947938..45d826668d4b 100644 --- a/code/modules/admin/topic/topic_events.dm +++ b/code/modules/admin/topic/topic_events.dm @@ -18,6 +18,8 @@ admin_cancel_evacuation() if("add_req_points") add_req_points() + if("check_req_heat") + check_req_heat() if("medal") owner.award_medal() if("jelly") diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 3d50b50e414c..758fd2327e77 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -530,11 +530,11 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) return to_chat(usr, SPAN_WARNING("This ticket has already been marked by [marked_admin].")) var/unmark_option = tgui_alert(usr, "This message has been marked by [marked_admin]. Do you want to override?", "Marked Ticket", list("Overwrite Mark", "Unmark", "Cancel")) - if(unmark_option == "Cancel") - return if(unmark_option == "Unmark") unmark_ticket() return + if(unmark_option != "Overwrite Mark") + return var/key_name = key_name_admin(usr) AddInteraction("Marked by [key_name].", player_message = "Ticket marked!") diff --git a/code/modules/admin/view_variables/color_matrix_editor.dm b/code/modules/admin/view_variables/color_matrix_editor.dm index 73119db62052..078d2fc61221 100644 --- a/code/modules/admin/view_variables/color_matrix_editor.dm +++ b/code/modules/admin/view_variables/color_matrix_editor.dm @@ -19,7 +19,7 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/color_matrix_proxy_view) /atom/movable/screen/color_matrix_proxy_view/Destroy() for (var/plane_master in plane_masters) - client?.screen -= plane_master + client?.remove_from_screen(plane_master) qdel(plane_master) client?.clear_map(assigned_map) @@ -40,7 +40,7 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/color_matrix_proxy_view) for (var/plane_master_type in subtypesof(/atom/movable/screen/plane_master) - /atom/movable/screen/plane_master/blackness) var/atom/movable/screen/plane_master/plane_master = new plane_master_type() plane_master.screen_loc = "[assigned_map]:CENTER" - client?.screen |= plane_master + client?.add_to_screen(plane_master) plane_masters += plane_master diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 3f0775c0b65d..d5d44a047947 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -144,6 +144,7 @@ "wylogo.png" = 'html/images/wylogo.png', "uscmlogo.png" = 'html/images/uscmlogo.png', "upplogo.png" = 'html/images/upplogo.png', + "cmblogo.png" = 'html/images/cmblogo.png', "faxwylogo.png" = 'html/images/faxwylogo.png', "faxbackground.jpg" = 'html/images/faxbackground.jpg', ) diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm index 6e652192b37c..eeab65ec031a 100644 --- a/code/modules/buildmode/buildmode.dm +++ b/code/modules/buildmode/buildmode.dm @@ -31,13 +31,13 @@ holder.player_details.post_login_callbacks += li_cb holder.show_popup_menus = FALSE create_buttons() - holder.screen += buttons + holder.add_to_screen(buttons) holder.click_intercept = src mode.enter_mode(src) /datum/buildmode/proc/quit() mode.exit_mode(src) - holder.screen -= buttons + holder.remove_from_screen(buttons) holder.click_intercept = null holder.show_popup_menus = TRUE qdel(src) @@ -53,7 +53,7 @@ /datum/buildmode/proc/post_login() // since these will get wiped upon login - holder?.screen += buttons + holder?.add_to_screen(buttons) // re-open the according switch mode switch(switch_state) if(BM_SWITCHSTATE_MODE) @@ -103,11 +103,11 @@ /datum/buildmode/proc/open_modeswitch() switch_state = BM_SWITCHSTATE_MODE - holder.screen += modeswitch_buttons + holder.add_to_screen(modeswitch_buttons) /datum/buildmode/proc/close_modeswitch() switch_state = BM_SWITCHSTATE_NONE - holder.screen -= modeswitch_buttons + holder.remove_from_screen(modeswitch_buttons) /datum/buildmode/proc/toggle_dirswitch() if(switch_state == BM_SWITCHSTATE_DIR) @@ -118,11 +118,11 @@ /datum/buildmode/proc/open_dirswitch() switch_state = BM_SWITCHSTATE_DIR - holder.screen += dirswitch_buttons + holder.add_to_screen(dirswitch_buttons) /datum/buildmode/proc/close_dirswitch() switch_state = BM_SWITCHSTATE_NONE - holder.screen -= dirswitch_buttons + holder.remove_from_screen(dirswitch_buttons) /datum/buildmode/proc/change_mode(newmode) mode.exit_mode(src) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index a7149c07d3e7..3cfb08b8dac0 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -753,7 +753,7 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( return FALSE var/mob/dead/observer/observer = mob - observer.ManualFollow(target) + observer.do_observe(target) /client/proc/check_timelock(list/roles, hours) var/timelock_name = "[islist(roles) ? jointext(roles, "") : roles][hours]" @@ -783,7 +783,7 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( if (!screen_object.clear_with_screen) continue - screen -= object + remove_from_screen(object) ///opens the particle editor UI for the in_atom object for this client /client/proc/open_particle_editor(atom/movable/in_atom) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index d9eb01511344..84a35163339b 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -77,6 +77,7 @@ var/const/MAX_SAVE_SLOTS = 10 ) var/ghost_vision_pref = GHOST_VISION_LEVEL_MID_NVG var/ghost_orbit = GHOST_ORBIT_CIRCLE + var/dual_wield_pref = DUAL_WIELD_FIRE //Synthetic specific preferences var/synthetic_name = "Undefined" @@ -238,6 +239,9 @@ var/const/MAX_SAVE_SLOTS = 10 /// if this client has tooltips enabled var/tooltips = TRUE + /// If this client has auto observe enabled, used by /datum/orbit_menu + var/auto_observe = TRUE + /datum/preferences/New(client/C) key_bindings = deepCopyList(GLOB.hotkey_keybinding_list_by_key) // give them default keybinds and update their movement keys macros = new(C, src) @@ -616,13 +620,12 @@ var/const/MAX_SAVE_SLOTS = 10
[toggle_prefs & TOGGLE_AUTOMATIC_PUNCTUATION ? "On" : "Off"]
" dat += "Toggle Combat Click-Drag Override: \ [toggle_prefs & TOGGLE_COMBAT_CLICKDRAG_OVERRIDE ? "On" : "Off"]
" - dat += "Toggle Alternate-Fire Dual Wielding: \ - [toggle_prefs & TOGGLE_ALTERNATING_DUAL_WIELD ? "On" : "Off"]
" dat += "Toggle Middle-Click Swap Hands: \ [toggle_prefs & TOGGLE_MIDDLE_MOUSE_SWAP_HANDS ? "On" : "Off"]
" dat += "Toggle Vendors Vending to Hands: \ [toggle_prefs & TOGGLE_VEND_ITEM_TO_HAND ? "On" : "Off"]
" dat += "Toggle Item Animations Detail Level
" + dat += "Toggle Dual Wield Functionality
" if(MENU_SPECIAL) //wart dat += "
" dat += "

ERT Settings:

" @@ -1331,12 +1334,12 @@ var/const/MAX_SAVE_SLOTS = 10 commander_status = options[new_commander_status] if("co_sidearm") - var/list/options = list("Mateba","Desert Eagle") + var/list/options = CO_GUNS if(whitelist_flags & (WHITELIST_COMMANDER_COUNCIL|WHITELIST_COMMANDER_COUNCIL_LEGACY)) - options += list("Colonel's Mateba","Golden Desert Eagle") + options += COUNCIL_CO_GUNS else - options -= list("Colonel's Mateba","Golden Desert Eagle") //This is weird and should not be necessary but it wouldn't remove these from the list otherwise + options -= COUNCIL_CO_GUNS var/new_co_sidearm = tgui_input_list(user, "Choose your preferred sidearm.", "Commanding Officer's Sidearm", options) if(!new_co_sidearm) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index 106da02a00b6..68028c300745 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -792,7 +792,17 @@ var/global/list/gear_datums_by_name = list() /datum/gear/misc/jungle_boots display_name = "Jungle pattern combat boots" path = /obj/item/clothing/shoes/marine/jungle - cost = 3 + cost = 2 + +/datum/gear/misc/brown_boots + display_name = "brown combat boots" + path = /obj/item/clothing/shoes/marine/brown + cost = 2 + +/datum/gear/misc/brown_gloves + display_name = "brown combat gloves" + path = /obj/item/clothing/gloves/marine/brown + cost = 2 /datum/gear/misc/pdt_kit display_name = "PDT/L kit" diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 0e01fc75c013..c885e9b73af1 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -1,5 +1,5 @@ #define SAVEFILE_VERSION_MIN 8 -#define SAVEFILE_VERSION_MAX 20 +#define SAVEFILE_VERSION_MAX 21 //handles converting savefiles to new formats //MAKE SURE YOU KEEP THIS UP TO DATE! @@ -80,6 +80,15 @@ sound_toggles |= (SOUND_ADMIN_MEME|SOUND_ADMIN_ATMOSPHERIC) S["toggles_sound"] << sound_toggles + if(savefile_version < 21) + var/pref_toggles + S["toggle_prefs"] >> pref_toggles + if(pref_toggles & TOGGLE_ALTERNATING_DUAL_WIELD) + dual_wield_pref = DUAL_WIELD_SWAP + else + dual_wield_pref = DUAL_WIELD_FIRE + S["dual_wield_pref"] << dual_wield_pref + savefile_version = SAVEFILE_VERSION_MAX return 1 @@ -125,6 +134,7 @@ S["toggles_langchat"] >> toggles_langchat S["toggles_sound"] >> toggles_sound S["toggle_prefs"] >> toggle_prefs + S["dual_wield_pref"] >> dual_wield_pref S["toggles_flashing"] >> toggles_flashing S["toggles_ert"] >> toggles_ert S["toggles_admin"] >> toggles_admin @@ -139,6 +149,7 @@ S["fps"] >> fps S["ghost_vision_pref"] >> ghost_vision_pref S["ghost_orbit"] >> ghost_orbit + S["auto_observe"] >> auto_observe S["human_name_ban"] >> human_name_ban @@ -209,6 +220,7 @@ toggles_langchat = sanitize_integer(toggles_langchat, 0, SHORT_REAL_LIMIT, initial(toggles_langchat)) toggles_sound = sanitize_integer(toggles_sound, 0, SHORT_REAL_LIMIT, initial(toggles_sound)) toggle_prefs = sanitize_integer(toggle_prefs, 0, SHORT_REAL_LIMIT, initial(toggle_prefs)) + dual_wield_pref = sanitize_integer(dual_wield_pref, 0, 2, initial(dual_wield_pref)) toggles_flashing= sanitize_integer(toggles_flashing, 0, SHORT_REAL_LIMIT, initial(toggles_flashing)) toggles_ert = sanitize_integer(toggles_ert, 0, SHORT_REAL_LIMIT, initial(toggles_ert)) toggles_admin = sanitize_integer(toggles_admin, 0, SHORT_REAL_LIMIT, initial(toggles_admin)) @@ -219,6 +231,7 @@ window_skin = sanitize_integer(window_skin, 0, SHORT_REAL_LIMIT, initial(window_skin)) ghost_vision_pref = sanitize_inlist(ghost_vision_pref, list(GHOST_VISION_LEVEL_NO_NVG, GHOST_VISION_LEVEL_MID_NVG, GHOST_VISION_LEVEL_FULL_NVG), GHOST_VISION_LEVEL_MID_NVG) ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit)) + auto_observe = sanitize_integer(auto_observe, 0, 1, 1) playtime_perks = sanitize_integer(playtime_perks, 0, 1, 1) xeno_vision_level_pref = sanitize_inlist(xeno_vision_level_pref, list(XENO_VISION_LEVEL_NO_NVG, XENO_VISION_LEVEL_MID_NVG, XENO_VISION_LEVEL_FULL_NVG), XENO_VISION_LEVEL_MID_NVG) hear_vox = sanitize_integer(hear_vox, FALSE, TRUE, TRUE) @@ -249,7 +262,7 @@ predator_skin_color = sanitize_inlist(predator_skin_color, PRED_SKIN_COLOR, initial(predator_skin_color)) predator_flavor_text = predator_flavor_text ? sanitize_text(predator_flavor_text, initial(predator_flavor_text)) : initial(predator_flavor_text) commander_status = sanitize_inlist(commander_status, whitelist_hierarchy, initial(commander_status)) - commander_sidearm = sanitize_inlist(commander_sidearm, list("Mateba","Colonel's Mateba","Golden Desert Eagle","Desert Eagle"), initial(commander_sidearm)) + commander_sidearm = sanitize_inlist(commander_sidearm, (CO_GUNS + COUNCIL_CO_GUNS), initial(commander_sidearm)) affiliation = sanitize_inlist(affiliation, FACTION_ALLEGIANCE_USCM_COMMANDER, initial(affiliation)) yautja_status = sanitize_inlist(yautja_status, whitelist_hierarchy + list("Elder"), initial(yautja_status)) synth_status = sanitize_inlist(synth_status, whitelist_hierarchy, initial(synth_status)) @@ -315,6 +328,7 @@ S["toggles_langchat"] << toggles_langchat S["toggles_sound"] << toggles_sound S["toggle_prefs"] << toggle_prefs + S["dual_wield_pref"] << dual_wield_pref S["toggles_flashing"] << toggles_flashing S["toggles_ert"] << toggles_ert S["toggles_admin"] << toggles_admin @@ -322,6 +336,7 @@ S["fps"] << fps S["ghost_vision_pref"] << ghost_vision_pref S["ghost_orbit"] << ghost_orbit + S["auto_observe"] << auto_observe S["human_name_ban"] << human_name_ban diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index b600b39a0018..6f9026a437dd 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -372,12 +372,21 @@ to_chat(src,SPAN_BOLDNOTICE( "Click-dragging now blocks clicks from going through.")) prefs.save_preferences() -/client/proc/toggle_dualwield() //Toggle whether dual-wielding fires both guns at once or swaps between them. - prefs.toggle_prefs ^= TOGGLE_ALTERNATING_DUAL_WIELD - if(prefs.toggle_prefs & TOGGLE_ALTERNATING_DUAL_WIELD) - to_chat(src, SPAN_BOLDNOTICE("Dual-wielding now switches between guns, as long as the other gun is loaded.")) +///Toggle whether dual-wielding fires both guns at once or swaps between them. +/client/proc/toggle_dualwield() + if(prefs.dual_wield_pref < DUAL_WIELD_NONE) + prefs.dual_wield_pref++ else - to_chat(src, SPAN_BOLDNOTICE("Dual-wielding now fires both guns simultaneously.")) + prefs.dual_wield_pref = DUAL_WIELD_FIRE + + switch(prefs.dual_wield_pref) + if(DUAL_WIELD_FIRE) + to_chat(src, SPAN_BOLDNOTICE("Dual-wielding now fires both guns simultaneously.")) + if(DUAL_WIELD_SWAP) + to_chat(src, SPAN_BOLDNOTICE("Dual-wielding now switches between guns, as long as the other gun is loaded.")) + if(DUAL_WIELD_NONE) + to_chat(src, SPAN_BOLDNOTICE("Dual-wielding now has no effect on how you fire.")) + prefs.save_preferences() /client/proc/toggle_middle_mouse_swap_hands() //Toggle whether middle click swaps your hands diff --git a/code/modules/clothing/gloves/marine_gloves.dm b/code/modules/clothing/gloves/marine_gloves.dm index 09c84b9b4d40..15c596f9f6e1 100644 --- a/code/modules/clothing/gloves/marine_gloves.dm +++ b/code/modules/clothing/gloves/marine_gloves.dm @@ -5,7 +5,7 @@ name = "marine combat gloves" desc = "Standard issue marine tactical gloves. It reads: 'knit by Marine Widows Association'." icon_state = "black" - item_state = "bgloves" + item_state = "black" siemens_coefficient = 0.6 permeability_coefficient = 0.05 flags_cold_protection = BODY_FLAG_HANDS @@ -46,6 +46,13 @@ name = "marine black combat gloves" adopts_squad_color = FALSE +/obj/item/clothing/gloves/marine/brown + name = "marine brown combat gloves" + desc = "Standard issue marine tactical gloves. It reads: 'knit by Marine Widows Association'. These are brown instead of the classic black." + icon_state = "brown" + item_state = "brown" + adopts_squad_color = FALSE + /obj/item/clothing/gloves/marine/officer name = "officer gloves" desc = "Shiny and impressive. They look expensive." @@ -115,6 +122,10 @@ armor_internaldamage = CLOTHING_ARMOR_HIGH adopts_squad_color = FALSE +/obj/item/clothing/gloves/marine/veteran/upp + icon_state = "brown" + item_state = "brown" + /obj/item/clothing/gloves/marine/veteran/insulated name = "insulated armored gloves" desc = "Non-standard kevlon fiber gloves. These are apparently ESPECIALLY insulated." @@ -146,7 +157,7 @@ name = "dress gloves" desc = "A pair of fashionable white gloves, worn by marines in dress." icon_state = "white" - item_state = "white" + item_state = "marine_white" adopts_squad_color = FALSE /obj/item/clothing/gloves/marine/veteran/souto diff --git a/code/modules/clothing/head/head.dm b/code/modules/clothing/head/head.dm index 24e1d0231c85..5135dad6b3b9 100644 --- a/code/modules/clothing/head/head.dm +++ b/code/modules/clothing/head/head.dm @@ -370,17 +370,23 @@ name = "\improper USCM formal Commanding Officer's black cap" icon_state = "co_formalhat_black" -/obj/item/clothing/head/cmcap/ro - name = "\improper USCM officer cap" - desc = "A hat usually worn by officers in the USCM. While it provides no protection, some officers wear it in the field to make themselves more recognisable." +/obj/item/clothing/head/cmcap/req/ro + name = "\improper USCM quartermaster cap" + desc = "It's a fancy hat for a not-so-fancy military supply clerk." icon_state = "rocap" + flags_atom = NO_SNOW_TYPE /obj/item/clothing/head/cmcap/req name = "\improper USCM requisition cap" - desc = "It's a fancy hat for a not-so-fancy military supply clerk." + desc = "It's a not-so-fancy hat for a not-so-fancy military supply clerk." icon_state = "cargocap" flags_atom = FPRINT|NO_SNOW_TYPE +/obj/item/clothing/head/cmcap/bridge + name = "\improper USCM officer cap" + desc = "A hat usually worn by officers in the USCM. While it provides no protection, some officers wear it in the field to make themselves more recognisable." + icon_state = "cap_officer" + /obj/item/clothing/head/cmcap/flap name = "\improper USCM expedition cap" desc = "It's a cap, with flaps. A patch stitched across the front reads \"USS ALMAYER\"." @@ -494,10 +500,19 @@ /obj/item/clothing/head/marine/peaked name = "marine peaked cap" desc = "A peaked cap. Wearer may suffer the heavy weight of responsibility upon their head and shoulders." - icon = 'icons/obj/items/clothing/hats.dmi' - icon_state = "officercap" + icon = 'icons/obj/items/clothing/cm_hats.dmi' + icon_state = "marine_formal" item_icons = list( - WEAR_HEAD = 'icons/mob/humans/onmob/head_0.dmi' + WEAR_HEAD = 'icons/mob/humans/onmob/head_1.dmi' + ) + +/obj/item/clothing/head/marine/peaked/service + name = "marine service peaked cap" + desc = "A peaked cap. Wearer may suffer the heavy weight of responsibility upon their head and shoulders." + icon = 'icons/obj/items/clothing/cm_hats.dmi' + icon_state = "marine_service" + item_icons = list( + WEAR_HEAD = 'icons/mob/humans/onmob/head_1.dmi' ) /obj/item/clothing/head/marine/peaked/captain @@ -735,9 +750,6 @@ WEAR_HEAD = 'icons/mob/humans/onmob/head_1.dmi' ) -/obj/item/clothing/head/drillhat/Initialize(mapload, ...) - . = ..() - select_gamemode_skin(/obj/item/clothing/head/drillhat) #undef HAT_GARB_RELAY_ICON_STATE //==========================//DRESS BLUES\\===============================\\ diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index d5698fd4be32..c64c2a14764d 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -724,6 +724,21 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( item_state = "c_helmet" flags_atom = NO_SNOW_TYPE +/obj/item/clothing/head/helmet/marine/jungle + icon_state = "helmet" + item_state = "helmet" + flags_atom = NO_SNOW_TYPE + +/obj/item/clothing/head/helmet/marine/snow + icon_state = "s_helmet" + item_state = "s_helmet" + flags_atom = NO_SNOW_TYPE + +/obj/item/clothing/head/helmet/marine/desert + icon_state = "d_helmet" + item_state = "d_helmet" + flags_atom = NO_SNOW_TYPE + /obj/item/clothing/head/helmet/marine/tech/tanker name = "\improper M50 tanker helmet" desc = "The lightweight M50 tanker helmet is designed for use by armored crewmen in the USCM. It offers low weight protection, and allows agile movement inside the confines of an armored vehicle. Features a toggleable welding screen for eye protection." @@ -1324,6 +1339,10 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( var/active = FALSE var/det_time = 40 +/obj/item/clothing/head/helmet/marine/specialist/hefa/Initialize(mapload, list/new_protection) + . = ..() + pockets.bypass_w_limit = list(/obj/item/explosive/grenade/high_explosive/frag) + /obj/item/clothing/head/helmet/marine/specialist/hefa/proc/apply_explosion_overlay() var/obj/effect/overlay/O = new /obj/effect/overlay(loc) O.name = "grenade" diff --git a/code/modules/clothing/shoes/marine_shoes.dm b/code/modules/clothing/shoes/marine_shoes.dm index 40bec976c337..fc11a74a695d 100644 --- a/code/modules/clothing/shoes/marine_shoes.dm +++ b/code/modules/clothing/shoes/marine_shoes.dm @@ -45,6 +45,13 @@ /obj/item/clothing/shoes/marine/jungle/knife knife_type = /obj/item/attachable/bayonet +/obj/item/clothing/shoes/marine/brown + icon_state = "marine_brown" + desc = "Standard issue combat boots for combat scenarios or combat situations. All combat, all the time. These are brown." + +/obj/item/clothing/shoes/marine/brown/knife + knife_type = /obj/item/attachable/bayonet + /obj/item/clothing/shoes/marine/monkey name = "monkey combat boots" desc = "A sturdy pair of combat boots, the reflection of the polished leather reflects your true self." @@ -54,6 +61,7 @@ /obj/item/clothing/shoes/marine/upp name = "military combat boots" + icon_state = "marine_brown" armor_melee = CLOTHING_ARMOR_MEDIUMLOW armor_bullet = CLOTHING_ARMOR_HIGHPLUS armor_bomb = CLOTHING_ARMOR_MEDIUM diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm index 3bf0b3fe74b2..963e4efa3ae6 100644 --- a/code/modules/clothing/suits/bio.dm +++ b/code/modules/clothing/suits/bio.dm @@ -17,6 +17,12 @@ flags_armor_protection = BODY_FLAG_HEAD|BODY_FLAG_FACE|BODY_FLAG_EYES siemens_coefficient = 0.9 +/obj/item/clothing/head/bio_hood/synth + desc = "A hood that protects the head and face from biological contaminants, synthetic compliant. Offers no real protection." + armor_bio = CLOTHING_ARMOR_NONE + armor_rad = CLOTHING_ARMOR_NONE + armor_internaldamage = CLOTHING_ARMOR_NONE + /obj/item/clothing/suit/bio_suit name = "bio suit" desc = "A suit that protects against biological contamination." @@ -38,6 +44,26 @@ flags_inv_hide = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL siemens_coefficient = 0.9 +/obj/item/clothing/suit/storage/synthbio + name = "bio suit" + desc = "Synthetic compliant bio-hazard suit. Intended to allow a synthetic to offer the illusion of infection control to humans. Has had most of the internal protective lining removed, allowing it to hold equipment and be lighter to move in." + icon_state = "bio" + item_state = "bio_suit" + allowed = list( + /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/tool/crowbar, + /obj/item/tool/crew_monitor, + /obj/item/tool/pen, + /obj/item/storage/large_holster/machete, + /obj/item/device/motiondetector, + ) //Standard biosuit, orange stripe /obj/item/clothing/head/bio_hood/general diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 5dbcf5b7cf81..a28a143f4ff0 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -61,6 +61,7 @@ /obj/item/attachable/bayonet, /obj/item/storage/backpack/general_belt, /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, /obj/item/storage/belt/gun/m4a3, /obj/item/storage/belt/gun/m44, /obj/item/storage/belt/gun/smartpistol, @@ -201,6 +202,7 @@ /obj/item/tool/crew_monitor, /obj/item/tool/pen, /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, /obj/item/device/motiondetector, ) armor_melee = CLOTHING_ARMOR_MEDIUMLOW @@ -260,6 +262,7 @@ /obj/item/tool/crew_monitor, /obj/item/tool/pen, /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, /obj/item/device/motiondetector, ) armor_melee = CLOTHING_ARMOR_MEDIUMLOW @@ -323,6 +326,7 @@ /obj/item/tool/crew_monitor, /obj/item/tool/pen, /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, /obj/item/device/motiondetector, ) flags_armor_protection = BODY_FLAG_CHEST @@ -409,6 +413,12 @@ /obj/item/device/binoculars, /obj/item/attachable/bayonet, + /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/weapon/gun, + /obj/item/device/flashlight, /obj/item/device/healthanalyzer, /obj/item/device/radio, @@ -417,6 +427,7 @@ /obj/item/tool/crew_monitor, /obj/item/tool/pen, /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, /obj/item/device/motiondetector, ) flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_ARMS diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index df7a8bc65b19..e375502f5435 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -60,7 +60,8 @@ siemens_coefficient = 0.7 slowdown = SLOWDOWN_ARMOR_MEDIUM allowed = list( - /obj/item/weapon/gun/, + /obj/item/weapon/gun, + /obj/item/prop/prop_gun, /obj/item/tank/emergency_oxygen, /obj/item/device/flashlight, /obj/item/storage/fancy/cigarettes, @@ -336,7 +337,7 @@ 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) + 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 = "M2 pattern officer" item_state_slots = list(WEAR_JACKET = "officer") @@ -536,10 +537,26 @@ time_to_equip = 1 SECONDS uniform_restricted = null -/obj/item/clothing/suit/storage/marine/light/synvest/vanilla +/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." @@ -1032,9 +1049,13 @@ /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/claymore/mercsword/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) @@ -1489,7 +1510,12 @@ /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, ) @@ -1598,6 +1624,7 @@ 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 diff --git a/code/modules/clothing/suits/marine_coat.dm b/code/modules/clothing/suits/marine_coat.dm index 4ca2a54af4bf..d6781147a092 100644 --- a/code/modules/clothing/suits/marine_coat.dm +++ b/code/modules/clothing/suits/marine_coat.dm @@ -136,9 +136,10 @@ flags_atom = NO_SNOW_TYPE /obj/item/clothing/suit/storage/jacket/marine/dress - name = "marine dress jacket" - desc = "Smells like vanilla. Signifies prestige and power, if a little flashy, but it still gives off that unga vibe." - icon_state = "marine_formal" + name = "marine formal service jacket" + desc = "Smells like vanilla. Signifies prestige and power, if a little flashy." + icon_state = "coat_formal" + initial_icon_state = "coat_formal" armor_melee = CLOTHING_ARMOR_LOW armor_bullet = CLOTHING_ARMOR_LOW armor_laser = CLOTHING_ARMOR_NONE @@ -148,11 +149,13 @@ armor_rad = CLOTHING_ARMOR_LOW armor_internaldamage = CLOTHING_ARMOR_LOW flags_atom = NO_SNOW_TYPE + has_buttons = TRUE /obj/item/clothing/suit/storage/jacket/marine/dress/officer name = "marine officer dress jacket" desc = "Dress Jacket worn by Commanding Officers of the USCM." icon_state = "co_jacket" + has_buttons = FALSE valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_DECOR, ACCESSORY_SLOT_MEDAL) restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) @@ -192,6 +195,7 @@ WEAR_JACKET = 'icons/mob/humans/onmob/suit_0.dmi' ) item_state = "general_jacket" + has_buttons = FALSE storage_slots = 4 armor_melee = CLOTHING_ARMOR_HIGHPLUS armor_bullet = CLOTHING_ARMOR_HIGHPLUS @@ -202,10 +206,12 @@ /obj/item/clothing/suit/storage/jacket/marine/dress/general/executive name = "director's jacket" desc = "A black trench coat with gold metallic trim. Flashy, highly protective, and over-the-top. Fit for a king - or, in this case, a Director. Has quite a few pockets." + has_buttons = FALSE /obj/item/clothing/suit/storage/jacket/marine/dress/bridge_coat name = "bridge coat" desc = "A heavy synthetic woolen coat issued to USCM Officers. Based on a classical design this coat is quite nice on cold nights in the Air conditioned CIC or a miserable cold night on a barren world. This one is a Dressy Blue for a Commanding officer." + has_buttons = FALSE item_state = "bridge_coat" icon_state = "bridge_coat" valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_MEDAL) @@ -213,6 +219,7 @@ /obj/item/clothing/suit/storage/jacket/marine/dress/bridge_coat_grey name = "bridge coat" desc = "A heavy synthetic woolen coat issued to USCM Officers. Based on a classical design this coat is quite nice on cold nights in the Air conditioned CIC or a miserable cold night on a barren world. This one is Black." + has_buttons = FALSE item_state = "bridge_coat_grey" icon_state = "bridge_coat_grey" valid_accessory_slots = list(ACCESSORY_SLOT_ARMBAND, ACCESSORY_SLOT_RANK, ACCESSORY_SLOT_MEDAL) @@ -263,6 +270,7 @@ icon = 'icons/mob/humans/onmob/contained/marinedressblues.dmi' icon_state = "e_jacket" item_state = "e_jacket" + has_buttons = FALSE item_state_slots = null contained_sprite = TRUE diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index c51f5f2575ed..2a3cff05ee1e 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -282,6 +282,12 @@ /obj/item/device/binoculars, /obj/item/attachable/bayonet, + /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/weapon/gun, + /obj/item/device/flashlight, /obj/item/device/healthanalyzer, /obj/item/device/radio, @@ -289,6 +295,7 @@ /obj/item/tool/crew_monitor, /obj/item/tool/pen, /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, /obj/item/device/motiondetector, ) @@ -303,12 +310,19 @@ /obj/item/device/binoculars, /obj/item/attachable/bayonet, + /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/weapon/gun, + /obj/item/device/flashlight, /obj/item/device/healthanalyzer, /obj/item/device/radio, /obj/item/tool/crowbar, /obj/item/tool/crew_monitor, /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, /obj/item/device/motiondetector, ) @@ -433,6 +447,11 @@ /obj/item/device/binoculars, /obj/item/attachable/bayonet, + /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/weapon/gun, /obj/item/device/flashlight, /obj/item/device/healthanalyzer, @@ -442,6 +461,7 @@ /obj/item/tool/crew_monitor, /obj/item/tool/pen, /obj/item/storage/large_holster/machete, + /obj/item/storage/large_holster/katana, /obj/item/device/motiondetector, ) min_cold_protection_temperature = T0C diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm index fb9d889b4584..585f415f2b63 100644 --- a/code/modules/clothing/under/marine_uniform.dm +++ b/code/modules/clothing/under/marine_uniform.dm @@ -196,17 +196,20 @@ name = "marine service uniform" desc = "A service uniform worn by members of the USCM. Do the corps proud. It has shards of light Kevlar to help protect against stabbing weapons and bullets." icon_state = "BO_jumpsuit" + item_state = "BO_jumpsuit" worn_state = "BO_jumpsuit" specialty = "marine service" flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE + flags_atom = NO_SNOW_TYPE -/obj/item/clothing/under/marine/officer/exec - name = "executive officer uniform" - desc = "A uniform typically worn by an Executive Officer in the USCM. It has shards of light Kevlar to help protect against stabbing weapons and bullets." - icon_state = "BO_jumpsuit" - worn_state = "BO_jumpsuit" - specialty = "executive officer" - flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE +/obj/item/clothing/under/marine/officer/boiler + name = "marine operations uniform" + desc = "An operations uniform worn by members of the USCM. Do the corps proud. It has shards of light Kevlar to help protect against stabbing weapons and bullets." + icon_state = "uscmboiler" + item_state = "uscmboiler" + worn_state = "uscmboiler" + flags_jumpsuit = UNIFORM_SLEEVE_ROLLABLE|UNIFORM_JACKET_REMOVABLE + specialty = "marine operations" /obj/item/clothing/under/marine/officer/command name = "\improper USCM officer uniform" @@ -289,25 +292,21 @@ flags_atom = NO_SNOW_TYPE /obj/item/clothing/under/marine/dress - name = "old marine dress uniform" - desc = "A dress uniform typically worn by marines of the USCM. The Sergeant Major would kill you if you got this dirty." - suit_restricted = list(/obj/item/clothing/suit/storage/jacket/marine/dress) - armor_bio = CLOTHING_ARMOR_LOW - armor_rad = CLOTHING_ARMOR_LOW - armor_internaldamage = CLOTHING_ARMOR_LOW - icon_state = "marine_formal" - worn_state = "marine_formal" - specialty = "marine dress" + name = "marine formal service uniform" + desc = "A formal service uniform typically worn by marines of the USCM. Still practicable while still being more formal than the standard service uniform." + icon_state = "formal_jumpsuit" + worn_state = "formal_jumpsuit" + specialty = "marine formal" flags_atom = NO_SNOW_TYPE flags_jumpsuit = FALSE black_market_value = 15 /obj/item/clothing/under/marine/dress/command - name = "old marine command dress uniform" - desc = "A dress uniform typically worn by the most battle-hardened marines of the USCM. Shame on you if you get this dirty." - icon_state = "command_formal" - worn_state = "command_formal" - specialty = "command dress" + name = "marine officer formal service uniform" + desc = "A formal service uniform typically worn by marines of the USCM. Still practicable while still being more formal than the standard service uniform. This one belongs to an officer." + icon_state = "formal_jumpsuit" + worn_state = "formal_jumpsuit" + specialty = "command formal" black_market_value = 20 //=========================//DRESS BLUES\\================================\\ diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index a7da554a7992..cf54fa9f01a7 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -671,7 +671,6 @@ hold = /obj/item/storage/internal/accessory/drop_pouch - /obj/item/storage/internal/accessory/drop_pouch w_class = SIZE_LARGE //Allow storage containers that's medium or below storage_slots = null @@ -680,6 +679,7 @@ cant_hold = list( //Prevent inventory powergame /obj/item/storage/firstaid, /obj/item/storage/bible, + /obj/item/storage/toolkit, ) storage_flags = NONE //no verb, no quick draw, no tile gathering @@ -728,7 +728,7 @@ ..() -/obj/item/storage/internal/accessory/holster/can_be_inserted(obj/item/W, stop_messages) +/obj/item/storage/internal/accessory/holster/can_be_inserted(obj/item/W, mob/user, stop_messages = FALSE) if( ..() ) //If the parent did their thing, this should be fine. It pretty much handles all the checks. if(isgun(W)) if(current_gun) diff --git a/code/modules/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm index c24c34de099c..4eff0240939d 100644 --- a/code/modules/cm_aliens/structures/special/pylon_core.dm +++ b/code/modules/cm_aliens/structures/special/pylon_core.dm @@ -164,7 +164,7 @@ /// Checks if all comms towers are connected and then starts end game content on all pylons if they are /obj/effect/alien/resin/special/pylon/endgame/proc/comms_relay_connection() - marine_announcement("ALERT.\n\nIrregular build up of energy around communication relays at [get_area(src)].", "[MAIN_AI_SYSTEM] Biological Scanner") + marine_announcement("ALERT.\n\nIrregular build up of energy around communication relays at [get_area(src)], biological hazard detected.\n\nDANGER: Hazard is generating new xenomorph entities, advise urgent termination of hazard by ground forces.", "[MAIN_AI_SYSTEM] Biological Scanner") for(var/hivenumber in GLOB.hive_datum) var/datum/hive_status/checked_hive = GLOB.hive_datum[hivenumber] @@ -172,7 +172,7 @@ continue if(checked_hive == linked_hive) - xeno_announcement(SPAN_XENOANNOUNCE("We have harnessed the tall's communication relay at [get_area(src)]. Hold it!"), hivenumber, XENO_GENERAL_ANNOUNCE) + xeno_announcement(SPAN_XENOANNOUNCE("We have harnessed the tall's communication relay at [get_area(src)].\n\nWe will now grow more of our number from this pylon. Hold it!"), hivenumber, XENO_GENERAL_ANNOUNCE) else xeno_announcement(SPAN_XENOANNOUNCE("Another hive has harnessed the tall's communication relay at [get_area(src)].[linked_hive.faction_is_ally(checked_hive.name) ? "" : " Stop them!"]"), hivenumber, XENO_GENERAL_ANNOUNCE) @@ -263,25 +263,26 @@ linked_hive.hive_ui.update_burrowed_larva() qdel(worm) + var/count_spawned = 0 var/spawning_larva = can_spawn_larva() && (last_larva_time + spawn_cooldown) < world.time if(spawning_larva) last_larva_time = world.time if(spawning_larva || (last_larva_queue_time + spawn_cooldown * 4) < world.time) last_larva_queue_time = world.time var/list/players_with_xeno_pref = get_alien_candidates(linked_hive) - if(players_with_xeno_pref && players_with_xeno_pref.len) + if(length(players_with_xeno_pref)) if(spawning_larva && spawn_burrowed_larva(players_with_xeno_pref[1])) // We were in spawning_larva mode and successfully spawned someone - message_alien_candidates(players_with_xeno_pref, dequeued = 1) - else - // Just time to update everyone their queue status (or the spawn failed) - message_alien_candidates(players_with_xeno_pref, dequeued = 0) + count_spawned = 1 + // Update everyone's queue status + message_alien_candidates(players_with_xeno_pref, dequeued = count_spawned) if(linked_hive.hijack_burrowed_surge && (last_surge_time + surge_cooldown) < world.time) last_surge_time = world.time linked_hive.stored_larva++ linked_hive.hijack_burrowed_left-- - notify_ghosts(header = "Claim Xeno", message = "The Hive has gained another burrowed larva! Click to take it.", source = src, action = NOTIFY_JOIN_XENO, enter_link = "join_xeno") + if(GLOB.xeno_queue_candidate_count < 1 + count_spawned) + notify_ghosts(header = "Claim Xeno", message = "The Hive has gained another burrowed larva! Click to take it.", source = src, action = NOTIFY_JOIN_XENO, enter_link = "join_xeno") if(surge_cooldown > 30 SECONDS) //mostly for sanity purposes surge_cooldown = surge_cooldown - surge_incremental_reduction //ramps up over time if(linked_hive.hijack_burrowed_left < 1) diff --git a/code/modules/cm_aliens/weeds.dm b/code/modules/cm_aliens/weeds.dm index 01140beae304..eb4fc3cd6f09 100644 --- a/code/modules/cm_aliens/weeds.dm +++ b/code/modules/cm_aliens/weeds.dm @@ -193,13 +193,16 @@ // If you're still confused, scroll aaaall the way down to the bottom of the file. // that's /obj/effect/alien/weeds/node/Destroy(). /obj/effect/alien/weeds/proc/avoid_orphanage() - for(var/obj/effect/alien/weeds/node/N in orange(node_range, get_turf(src))) - // WE FOUND A NEW MOMMY - N.add_child(src) - break + var/parent_type = /obj/effect/alien/weeds/node + if(weed_strength >= WEED_LEVEL_HIVE) + parent_type = /obj/effect/alien/weeds/node/pylon + + var/obj/effect/alien/weeds/node/found = locate(parent_type) in orange(node_range, get_turf(src)) + if(found) + found.add_child(src) // NO MORE FOOD ON THE TABLE. WE DIE - if(!parent || weed_strength > WEED_LEVEL_STANDARD) + if(!parent) qdel(src) /obj/effect/alien/weeds/proc/weed_expand() diff --git a/code/modules/cm_marines/Donator_Items.dm b/code/modules/cm_marines/Donator_Items.dm index 28b92b3fca0c..1c7281114c01 100644 --- a/code/modules/cm_marines/Donator_Items.dm +++ b/code/modules/cm_marines/Donator_Items.dm @@ -15,7 +15,7 @@ icon_override = 'icons/mob/humans/onmob/head_0.dmi' flags_inventory = BLOCKSHARPOBJ flags_inv_hide = HIDEEARS - flags_atom = NO_NAME_OVERRIDE + flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_SNOW_TYPE min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT flags_marine_helmet = NO_FLAGS @@ -67,7 +67,7 @@ desc = "ITEM DESCRIPTION. DONOR ITEM" //Add UNIQUE if Unique icon_state = null item_state = null - flags_atom = NO_NAME_OVERRIDE + flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_SNOW_TYPE //DON'T GRAB STUFF BETWEEN THIS LINE icon = 'icons/obj/items/clothing/suits.dmi' icon_override = 'icons/mob/humans/onmob/suit_0.dmi' //Don't fuck with this in the future please. @@ -80,7 +80,7 @@ desc = "ITEM DESCRIPTION. DONOR ITEM" //Add UNIQUE if Unique icon_state = null item_state = null - flags_atom = NO_NAME_OVERRIDE + flags_atom = FPRINT|CONDUCT|NO_NAME_OVERRIDE|NO_SNOW_TYPE //DON'T GRAB STUFF BETWEEN THIS LINE icon = 'icons/obj/items/clothing/suits.dmi' icon_override = 'icons/mob/humans/onmob/suit_0.dmi' //Don't fuck with this in the future please. @@ -971,7 +971,7 @@ /obj/item/clothing/under/marine/fluff name = "ITEM NAME" desc = "ITEM DESCRIPTION. DONOR ITEM" //Add UNIQUE if Unique - flags_atom = NO_NAME_OVERRIDE + flags_atom = FPRINT|NO_NAME_OVERRIDE|NO_SNOW_TYPE icon_state = null item_state = null min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT diff --git a/code/modules/cm_marines/codebook.dm b/code/modules/cm_marines/codebook.dm index 08e1b4352bcf..11013f764538 100644 --- a/code/modules/cm_marines/codebook.dm +++ b/code/modules/cm_marines/codebook.dm @@ -1,24 +1,56 @@ +GLOBAL_LIST_EMPTY(codebook_data) -/obj/item/book/codebook - name = "Almayer Code Book" - unique = 1 - dat = "" +/obj/item/book/codebook/proc/create_codebook(faction = FACTION_MARINE) + if(!GLOB.codebook_data[faction]) + GLOB.codebook_data[faction] = generate_code() -/obj/item/book/codebook/Initialize() - . = ..() + dat = GLOB.codebook_data[faction] + +/obj/item/book/codebook/proc/generate_code() var/number var/letter - dat = "" + var/code_data = "
CallResponse
" for(var/i in 1 to 10) letter = pick(greek_letters) number = rand(100,999) - dat += "" + code_data += "" letter = pick(greek_letters) number = rand(100,999) - dat += "" + code_data += "" + code_data += "
CallResponse
[letter]-[number]
[letter]-[number][letter]-[number]
[letter]-[number]
" + return code_data + +/obj/item/book/codebook + name = "USS Almayer Code Book" + author = "United States Colonial Marines" + unique = 1 + dat = "" + var/faction = FACTION_MARINE + +/obj/item/book/codebook/Initialize() + . = ..() + title = name + create_codebook(faction) + +/obj/item/book/codebook/clf + name = "Liberation Front Authenticators" + faction = FACTION_CLF + author = "\[Obscured Ink\]" + +/obj/item/book/codebook/twe + name = "Imperial Authentication Codes" + faction = FACTION_TWE + author = "Royal Marines" - dat += "" +/obj/item/book/codebook/upp + name = "Union Authentication Codes" + faction = FACTION_UPP + author = "People's Army" +/obj/item/book/codebook/wey_yu + name = "Corporate Authentication Codes" + faction = FACTION_WY + author = "Weyland-Yutani Communications Division" /obj/item/book/codebook/attackby(obj/item/W, mob/living/user) if(istype(W, /obj/item/tool/kitchen/knife) || HAS_TRAIT(W, TRAIT_TOOL_WIRECUTTERS)) diff --git a/code/modules/cm_marines/equipment/guncases.dm b/code/modules/cm_marines/equipment/guncases.dm index 33684aa29d0a..507d6140666d 100644 --- a/code/modules/cm_marines/equipment/guncases.dm +++ b/code/modules/cm_marines/equipment/guncases.dm @@ -325,6 +325,16 @@ new /obj/item/pamphlet/trait/vulture(src) //both pamphlets give use of the scope and the rifle new /obj/item/pamphlet/trait/vulture(src) +/obj/item/storage/box/guncase/vulture/skillless + storage_slots = 5 + +/obj/item/storage/box/guncase/vulture/skillless/fill_preset_inventory() + var/obj/item/weapon/gun/boltaction/vulture/skillless/rifle = new(src) + new /obj/item/ammo_magazine/rifle/boltaction/vulture(src) + new /obj/item/device/vulture_spotter_tripod(src) + new /obj/item/device/vulture_spotter_scope/skillless(src, WEAKREF(rifle)) + new /obj/item/tool/screwdriver(src) // Spotter scope needs a screwdriver to disassemble + //Handgun case for Military police vendor three mag , a railflashligh and the handgun. //88 Mod 4 Combat Pistol diff --git a/code/modules/cm_marines/m2c.dm b/code/modules/cm_marines/m2c.dm new file mode 100644 index 000000000000..a0943bb7f0a6 --- /dev/null +++ b/code/modules/cm_marines/m2c.dm @@ -0,0 +1,629 @@ +#define M2C_SETUP_TIME (0.2 SECONDS) +#define M2C_OVERHEAT_CRITICAL 25 +#define M2C_OVERHEAT_BAD 14 +#define M2C_OVERHEAT_OK 4 +#define M2C_OVERHEAT_DAMAGE 30 +#define M2C_LOW_COOLDOWN_ROLL 0.3 +#define M2C_HIGH_COOLDOWN_ROLL 0.45 +#define M2C_PASSIVE_COOLDOWN_AMOUNT 4 +#define M2C_OVERHEAT_OVERLAY 14 +#define M2C_CRUSHER_STUN 3 //amount in ticks (roughly 3 seconds) + +/*M2C HEAVY MACHINEGUN AND ITS COMPONENTS */ +// AMMO +/obj/item/ammo_magazine/m2c + name = "M2C Ammunition Box (10x28mm tungsten rounds)" + desc = "A box of 125, 10x28mm tungsten rounds for the M2 Heavy Machinegun System. Click the heavy machinegun while there's no ammo box loaded to reload the M2C." + caliber = "10x28mm" + w_class = SIZE_LARGE + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi' + icon_state = "m56de" + item_state = "m56de" + max_rounds = 125 + default_ammo = /datum/ammo/bullet/machinegun/auto + gun_type = null + +//STORAGE BOX FOR THE MACHINEGUN +/obj/item/storage/box/m56d/m2c + name = "\improper M2C Assembly-Supply Crate" + desc = "A large case labelled 'M2C, 10x28mm caliber heavy machinegun', seems to be fairly heavy to hold. contains a deadly M2C Heavy Machinegun System and its ammunition." + icon = 'icons/turf/whiskeyoutpost.dmi' + icon_state = "M56D_case" + w_class = SIZE_HUGE + storage_slots = 5 + +/obj/item/storage/box/m56d/m2c/fill_preset_inventory() + new /obj/item/device/m2c_gun(src) + new /obj/item/ammo_magazine/m2c(src) + new /obj/item/ammo_magazine/m2c(src) + new /obj/item/ammo_magazine/m2c(src) + new /obj/item/ammo_magazine/m2c(src) + +// THE GUN ITSELF + +/obj/item/device/m2c_gun + name = "\improper M2C heavy machine gun" + desc = "The disassembled M2C HMG, with its telescopic tripods folded up and unable to fire." + w_class = SIZE_HUGE + flags_equip_slot = SLOT_BACK + icon = 'icons/turf/whiskeyoutpost.dmi' + icon_state = "M56DE_gun_mount" + item_state = "M56DE_gun_mount" + var/rounds = 0 + var/overheat_value = 0 + var/anti_cadehugger_range = 1 + var/broken_gun = FALSE + var/field_recovery = 130 + health = 230 + +/obj/item/device/m2c_gun/Initialize() + . = ..() + update_icon() + +/obj/item/device/m2c_gun/update_icon() //Lets generate the icon based on how much ammo it has. + var/icon_name = initial(icon_state) + if(broken_gun) + icon_name += "_broken" + if(!rounds) + icon_name += "_e" + + else if(!broken_gun && !rounds) + icon_name += "_e" + + icon_state = icon_name + +/obj/item/device/m2c_gun/proc/check_can_setup(mob/user, turf/rotate_check, turf/open/OT, list/ACR) + if(!ishuman(user)) + return FALSE + if(broken_gun) + to_chat(user, SPAN_WARNING("You can't set up \the [src], it's completely broken!")) + return FALSE + if(SSinterior.in_interior(user)) + to_chat(usr, SPAN_WARNING("It's too cramped in here to deploy \a [src].")) + return FALSE + if(OT.density || !isturf(OT) || !OT.allow_construction) + to_chat(user, SPAN_WARNING("You can't set up \the [src] here.")) + return FALSE + if(rotate_check.density) + to_chat(user, SPAN_WARNING("You can't set up \the [src] that way, there's a wall behind you!")) + return FALSE + for(var/obj/structure/potential_blocker in rotate_check) + if(potential_blocker.density) + to_chat(user, SPAN_WARNING("You can't set up \the [src] that way, there's \a [potential_blocker] behind you!")) + return FALSE + if((locate(/obj/structure/barricade) in ACR) || (locate(/obj/structure/window_frame) in ACR) || (locate(/obj/structure/window) in ACR) || (locate(/obj/structure/windoor_assembly) in ACR)) + to_chat(user, SPAN_WARNING("There are barriers nearby, you can't set up \the [src] here!")) + return FALSE + var/fail = FALSE + for(var/obj/X in OT.contents - src) + if(istype(X, /obj/structure/machinery/defenses)) + fail = TRUE + break + else if(istype(X, /obj/structure/machinery/door)) + fail = TRUE + break + else if(istype(X, /obj/structure/machinery/m56d_hmg)) + fail = TRUE + break + if(fail) + to_chat(user, SPAN_WARNING("You can't install \the [src] here, something is in the way.")) + return FALSE + + + if(!(user.alpha > 60)) + to_chat(user, SPAN_WARNING("You can't set this up while cloaked!")) + return FALSE + return TRUE + + +/obj/item/device/m2c_gun/attack_self(mob/user) + ..() + var/turf/rotate_check = get_step(user.loc, turn(user.dir, 180)) + var/turf/open/OT = usr.loc + var/list/ACR = range(anti_cadehugger_range, user.loc) + + if(!check_can_setup(user, rotate_check, OT, ACR)) + return + + if(!do_after(user, M2C_SETUP_TIME, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) + return + + if(!check_can_setup(user, rotate_check, OT, ACR)) + return + + var/obj/structure/machinery/m56d_hmg/auto/M = new /obj/structure/machinery/m56d_hmg/auto(user.loc) + transfer_label_component(M) + M.setDir(user.dir) // Make sure we face the right direction + M.anchored = TRUE + playsound(M, 'sound/items/m56dauto_setup.ogg', 75, TRUE) + to_chat(user, SPAN_NOTICE("You deploy [M].")) + if((rounds > 0) && !user.get_inactive_hand()) + user.set_interaction(M) + give_action(user, /datum/action/human_action/mg_exit) + M.rounds = rounds + M.overheat_value = overheat_value + M.health = health + M.update_icon() + qdel(src) + +/obj/item/device/m2c_gun/attackby(obj/item/O as obj, mob/user as mob) + if(!ishuman(user)) + return + + if(!iswelder(O) || user.action_busy) + return + + if(!HAS_TRAIT(O, TRAIT_TOOL_BLOWTORCH)) + to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) + return + + if(!broken_gun) + to_chat(user, SPAN_WARNING("[src] isn't critically broken, no need for field recovery operations.")) + return + + var/obj/item/tool/weldingtool/WT = O + + if(WT.remove_fuel(2, user)) + user.visible_message(SPAN_NOTICE("[user] begins field recovering \the [src]."), \ + SPAN_NOTICE("You begin repairing the severe damages on \the [src] in an effort to restore its functions.")) + playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) + if(!do_after(user, field_recovery * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) + return + user.visible_message(SPAN_NOTICE("[user] field recovers \the [src], restoring it back to its original state."), \ + SPAN_NOTICE("You repair \the [src] back to a functional state.")) + broken_gun = FALSE + health = 110 + update_icon() + return + else + to_chat(user, SPAN_WARNING("You need more fuel in \the [WT] to start field recovery on [src].")) + +// MACHINEGUN, AUTOMATIC +/obj/structure/machinery/m56d_hmg/auto + name = "\improper M2C Heavy Machinegun" + desc = "A deployable, heavy machine gun. The M2C 'Chimp' HB is a modified M2 HB reconfigured to fire 10x28 Caseless Tungsten rounds for USCM use. It is capable of recoilless fire and fast-rotating. However it has a debilitating overheating issue due to the poor quality of metals used in the parts, forcing it to be used in decisive, crushing engagements as a squad support weapon. Click its sprite while behind it without holding anything to man it. Click-drag on NON-GRAB intent to disassemble the gun, GRAB INTENT to remove ammo magazines." + icon = 'icons/turf/whiskeyoutpost.dmi' + icon_state = "M56DE" + icon_full = "M56DE" + icon_empty = "M56DE_e" + rounds_max = 125 + ammo = /datum/ammo/bullet/machinegun/auto + fire_delay = 0.1 SECONDS + var/grip_dir = null + var/fold_time = 1.5 SECONDS + var/repair_time = 5 SECONDS + density = TRUE + health = 230 + health_max = 230 + display_ammo = FALSE + var/list/cadeblockers = list() + var/cadeblockers_range = 1 + + var/static/image/barrel_overheat_image + var/has_barrel_overlay = FALSE + + gun_noise = 'sound/weapons/gun_m56d_auto.ogg' + empty_alarm = 'sound/weapons/hmg_eject_mag.ogg' + + // OVERHEAT MECHANIC VARIABLES + var/overheat_value = 0 + var/overheat_threshold = 40 + var/emergency_cooling = FALSE + var/overheat_text_cooldown = 0 + var/force_cooldown_timer = 10 + var/rotate_timer = 0 + var/fire_stopper = FALSE + + // Muzzle Flash Offsets + north_x_offset = 0 + north_y_offset = 10 + east_x_offset = 0 + east_y_offset = 12 + south_x_offset = 0 + south_y_offset = 10 + west_x_offset = 0 + west_y_offset = 12 + +// ANTI-CADE EFFECT, CREDIT TO WALTERMELDRON + +/obj/structure/machinery/m56d_hmg/auto/Initialize() + . = ..() + for(var/turf/T in range(cadeblockers_range, src)) + var/obj/structure/blocker/anti_cade/CB = new(T) + CB.hmg = src + + cadeblockers.Add(CB) + + if(!barrel_overheat_image) + barrel_overheat_image = image('icons/turf/whiskeyoutpost.dmi', "+m56de_overheat") + +/obj/structure/machinery/m56d_hmg/auto/Destroy() + QDEL_NULL_LIST(cadeblockers) + return ..() + +/obj/structure/machinery/m56d_hmg/auto/process() + + var/mob/user = operator + overheat_value -= M2C_PASSIVE_COOLDOWN_AMOUNT + if(overheat_value <= 0) + overheat_value = 0 + STOP_PROCESSING(SSobj, src) + + if(overheat_value >= M2C_OVERHEAT_CRITICAL) + to_chat(user, SPAN_HIGHDANGER("[src]'s barrel is critically hot, it might start melting at this rate.")) + else if(overheat_value >= M2C_OVERHEAT_BAD) + to_chat(user, SPAN_DANGER("[src]'s barrel is terribly hot, but is still able to fire.")) + else if(overheat_value >= M2C_OVERHEAT_OK) + to_chat(user, SPAN_DANGER("[src]'s barrel is pretty hot, although it's still stable.")) + else if (overheat_value > 0) + to_chat(user, SPAN_WARNING("[src]'s barrel is mildly warm.")) + + update_icon() + +// ANTI-CADE EFFECT, CREDIT TO WALTERMELDRON +/obj/structure/blocker/anti_cade + health = INFINITY + anchored = TRUE + density = FALSE + unacidable = TRUE + indestructible = TRUE + invisibility = 101 // no looking at it with alt click + + var/obj/structure/machinery/m56d_hmg/auto/hmg + + alpha = 0 + +/obj/structure/blocker/anti_cade/BlockedPassDirs(atom/movable/AM, target_dir) + if(istype(AM, /obj/structure/barricade)) + return BLOCKED_MOVEMENT + else if(istype(AM, /obj/structure/window)) + return BLOCKED_MOVEMENT + else if(istype(AM, /obj/structure/windoor_assembly)) + return BLOCKED_MOVEMENT + else if(istype(AM, /obj/structure/machinery/door)) + return BLOCKED_MOVEMENT + return ..() + +/obj/structure/blocker/anti_cade/Destroy() + if(hmg) + hmg.cadeblockers.Remove(src) + hmg = null + + return ..() + +/obj/structure/machinery/m56d_hmg/auto/update_icon() //Lets generate the icon based on how much ammo it has. + if(!rounds) + icon_state = "[icon_empty]" + else + icon_state = "[icon_full]" + + if(overheat_value >= M2C_OVERHEAT_OVERLAY) + if(has_barrel_overlay) + return + overlays += barrel_overheat_image + has_barrel_overlay = TRUE + else if(has_barrel_overlay) + overlays -= barrel_overheat_image + has_barrel_overlay = FALSE + +// DED + +/obj/structure/machinery/m56d_hmg/auto/update_health(amount) //Negative values restores health. + health -= amount + if(health <= 0) + playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) + visible_message(SPAN_WARNING("[src] has broken down completely!")) + var/obj/item/device/m2c_gun/HMG = new(src.loc) + HMG.rounds = rounds + HMG.broken_gun = TRUE + HMG.unacidable = FALSE + HMG.health = 0 + HMG.update_icon() + qdel(src) + return + + if(health > health_max) + health = health_max + update_damage_state() + update_icon() + +/obj/structure/machinery/m56d_hmg/auto/attackby(obj/item/O as obj, mob/user as mob) + if(!ishuman(user)) + return + // RELOADING + if(istype(O, /obj/item/ammo_magazine/m2c)) + var/obj/item/ammo_magazine/m2c/M = O + if(rounds) + to_chat(user, SPAN_WARNING("There's already an ammo box inside of [src], remove it first!")) + return + if(user.action_busy) return + user.visible_message(SPAN_NOTICE("[user] loads [src] with an ammo box! "), SPAN_NOTICE("You load [src] with an ammo box!")) + playsound(src.loc, 'sound/items/m56dauto_load.ogg', 75, 1) + rounds = min(rounds + M.current_rounds, rounds_max) + update_icon() + user.temp_drop_inv_item(O) + qdel(O) + return + + // WELDER REPAIR + if(iswelder(O)) + if(!HAS_TRAIT(O, TRAIT_TOOL_BLOWTORCH)) + to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) + return + if(user.action_busy) + return + + var/obj/item/tool/weldingtool/WT = O + + if(health == health_max) + to_chat(user, SPAN_WARNING("[src] doesn't need repairs, it's well-maintained.")) + return + + if(WT.remove_fuel(2, user)) + user.visible_message(SPAN_NOTICE("[user] begins repairing damage on \the [src]."), \ + SPAN_NOTICE("You begin repairing the damage on \the [src].")) + playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) + if(!do_after(user, repair_time * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) + return + user.visible_message(SPAN_NOTICE("[user] repairs some of the damage on [src]."), \ + SPAN_NOTICE("You repair [src].")) + update_health(-round(health_max*0.2)) + playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) + else + to_chat(user, SPAN_WARNING("You need more fuel in [WT] to repair damage to [src].")) + return + return + +// AUTOMATIC FIRING + +/obj/structure/machinery/m56d_hmg/auto/try_fire() + if(fire_stopper) + return + + if(overheat_value >= overheat_threshold) + if(world.time > overheat_text_cooldown) + operator.visible_message(SPAN_HIGHDANGER("[src] has overheated and has been shortly disabled!"), SPAN_HIGHDANGER("[src] has overheated! You have to wait for it to cooldown!")) + overheat_text_cooldown = world.time + 3 SECONDS + + if(!emergency_cooling) + emergency_cooling = TRUE + to_chat(operator, SPAN_DANGER("You wait for [src]'s barrel to cooldown to continue sustained fire.")) + fire_stopper = TRUE + STOP_PROCESSING(SSobj, src) + addtimer(CALLBACK(src, PROC_REF(force_cooldown)), force_cooldown_timer) + return + + return ..() + + +/obj/structure/machinery/m56d_hmg/auto/fire_shot() + . = ..() + + handle_rotating_gun(operator) + if((. & AUTOFIRE_CONTINUE) && rounds) + overheat_value += 1 + START_PROCESSING(SSobj, src) + +/obj/structure/machinery/m56d_hmg/auto/handle_ammo_out(mob/user) + visible_message(SPAN_NOTICE("[icon2html(src, viewers(src))] [src]'s ammo box drops onto the ground, now completely empty.")) + playsound(loc, empty_alarm, 70, 1) + update_icon() //final safeguard. + var/obj/item/ammo_magazine/m2c/AM = new /obj/item/ammo_magazine/m2c(src.loc) + AM.current_rounds = 0 + AM.update_icon() + +/obj/structure/machinery/m56d_hmg/auto/get_scatter() + return 0 + +// ACTIVE COOLING + +/obj/structure/machinery/m56d_hmg/auto/proc/force_cooldown(mob/user) + user = operator + + overheat_value = round((rand(M2C_LOW_COOLDOWN_ROLL, M2C_HIGH_COOLDOWN_ROLL) * overheat_threshold)) + playsound(src.loc, 'sound/weapons/hmg_cooling.ogg', 75, 1) + to_chat(user, SPAN_NOTICE("[src]'s barrel has cooled down enough to restart firing.")) + emergency_cooling = FALSE + fire_stopper = FALSE + fire_delay = initial(fire_delay) + update_health(M2C_OVERHEAT_DAMAGE) + START_PROCESSING(SSobj, src) + update_icon() + +// TOGGLE MODE + +/obj/structure/machinery/m56d_hmg/auto/clicked(mob/user, list/mods, atom/A) + if (mods["ctrl"]) + if(operator != user) + return ..() + if(!CAN_PICKUP(user, src)) + return ..() + to_chat(user, SPAN_NOTICE("You try to toggle a burst-mode on \the [src], but realize that it doesn't exist.")) + return TRUE + + return ..() + +//ATTACK WITH BOTH HANDS COMBO + +/obj/structure/machinery/m56d_hmg/auto/attack_hand(mob/user) + ..() + + var/turf/user_turf = get_turf(user) + for(var/opp_dir in reverse_nearby_direction(src.dir)) + if(get_step(src, opp_dir) == user_turf) + if(operator) //If there is already a operator then they're manning it. + if(operator.interactee == null) + operator = null //this shouldn't happen, but just in case + else + to_chat(user, "Someone's already controlling it.") + return + if(!(user.alpha > 60)) + to_chat(user, SPAN_WARNING("You aren't going to be setting up while cloaked.")) + return + else + if(user.interactee) //Make sure we're not manning two guns at once, tentacle arms. + to_chat(user, "You're already manning something!") + return + + if(user.get_active_hand() == null && user.get_inactive_hand() == null) + user.freeze() + user.set_interaction(src) + give_action(user, /datum/action/human_action/mg_exit) + else + to_chat(usr, SPAN_NOTICE("Your hands are too busy holding things to grab the handles!")) + else + to_chat(usr, SPAN_NOTICE("You are too far from the handles to man [src]!")) + +// DISASSEMBLY + +/obj/structure/machinery/m56d_hmg/auto/MouseDrop(over_object, src_location, over_location) + if(!ishuman(usr)) return + var/mob/living/carbon/human/user = usr + + if(over_object == user && in_range(src, user)) + if((rounds > 0) && (user.a_intent & (INTENT_GRAB))) + playsound(src.loc, 'sound/items/m56dauto_load.ogg', 75, 1) + user.visible_message(SPAN_NOTICE(" [user] removes [src]'s ammo box."),SPAN_NOTICE(" You remove [src]'s ammo box, preparing the gun for disassembly.")) + var/obj/item/ammo_magazine/m2c/used_ammo = new(user.loc) + used_ammo.current_rounds = rounds + user.put_in_active_hand(used_ammo) + rounds = 0 + + else + if(!do_after(user, fold_time* user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) // disassembly time reduced + return + user.visible_message(SPAN_NOTICE("[user] disassembles [src]."),SPAN_NOTICE("You fold up the tripod for [src], disassembling it.")) + playsound(src.loc, 'sound/items/m56dauto_setup.ogg', 75, 1) + var/obj/item/device/m2c_gun/HMG = new(src.loc) + transfer_label_component(HMG) + HMG.rounds = src.rounds + HMG.overheat_value = round(0.5 * src.overheat_value) + if (HMG.overheat_value <= 10) + HMG.overheat_value = 0 + HMG.update_icon() + HMG.health = health + user.put_in_active_hand(HMG) + if(user.equip_to_slot_if_possible(HMG, WEAR_BACK, disable_warning = TRUE)) + to_chat(user, SPAN_NOTICE("You quickly heave the machine gun onto your back!")) + qdel(src) + + update_icon() + +// MOUNT THE MG + +/obj/structure/machinery/m56d_hmg/auto/on_set_interaction(mob/user) + ..() + ADD_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) + RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(disable_interaction)) + RegisterSignal(user, COMSIG_MOB_POST_UPDATE_CANMOVE, PROC_REF(disable_canmove_interaction)) + +// DISMOUNT THE MG + +/obj/structure/machinery/m56d_hmg/auto/on_unset_interaction(mob/user) + REMOVE_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) + UnregisterSignal(user, list( + COMSIG_MOVABLE_PRE_MOVE, + COMSIG_MOB_POST_UPDATE_CANMOVE + )) + ..() + +// GET ANIMATED + +/obj/structure/machinery/m56d_hmg/auto/update_pixels(mob/user, mounting = TRUE) + if(mounting) + var/diff_x = 0 + var/diff_y = 0 + var/tilesize = 32 + var/viewoffset = tilesize * 1 + + user.reset_view(src) + if(dir == EAST) + diff_x = -16 + user_old_x + user.client.pixel_x = viewoffset + user.client.pixel_y = 0 + if(dir == WEST) + diff_x = 16 + user_old_x + user.client.pixel_x = -viewoffset + user.client.pixel_y = 0 + if(dir == NORTH) + diff_y = -16 + user_old_y + user.client.pixel_x = 0 + user.client.pixel_y = viewoffset + if(dir == SOUTH) + diff_y = 16 + user_old_y + user.client.pixel_x = 0 + user.client.pixel_y = -viewoffset + + animate(user, pixel_x=diff_x, pixel_y=diff_y, 0.4 SECONDS) + else + if(user.client) + user.client.change_view(world_view_size) + user.client.pixel_x = 0 + user.client.pixel_y = 0 + + animate(user, pixel_x=user_old_x, pixel_y=user_old_y, 4, 1) + + +//ROTATE THE MACHINEGUN + +/obj/structure/machinery/m56d_hmg/auto/proc/rotate_to(mob/user, atom/A) + if(!A || !user.x || !user.y || !A.x || !A.y) + return + var/dx = A.x - user.x + var/dy = A.y - user.y + if(!dx && !dy) + return + + var/direction + if(abs(dx) < abs(dy)) + if(dy > 0) + direction = NORTH + else + direction = SOUTH + else + if(dx > 0) + direction = EAST + else + direction = WEST + + var/turf/rotate_check = get_step(src.loc, turn(direction,180)) + if(rotate_check.density) + to_chat(user, SPAN_WARNING("You can't rotate it that way.")) + return + + src.setDir(direction) + user.setDir(direction) + update_pixels(user) + playsound(src.loc, 'sound/items/m56dauto_rotate.ogg', 25, 1) + to_chat(user, SPAN_NOTICE("You rotate [src], using the tripod to support your pivoting movement.")) + + +/obj/structure/machinery/m56d_hmg/auto/proc/disable_interaction(mob/user, NewLoc, direction) + SIGNAL_HANDLER + + if(user.lying || get_dist(user,src) > 0 || user.is_mob_incapacitated() || !user.client) + user.unset_interaction() + +/obj/structure/machinery/m56d_hmg/auto/proc/disable_canmove_interaction(mob/user, canmove, laid_down, lying) + SIGNAL_HANDLER + + if(laid_down) + user.unset_interaction() + +/obj/structure/machinery/m56d_hmg/auto/proc/handle_rotating_gun(mob/user) + var/angle = get_dir(src, target) + if(world.time > rotate_timer && !((dir & angle) && target.loc != src.loc && target.loc != operator.loc)) + rotate_timer = world.time + 0.4 SECONDS + rotate_to(user, target) + return TRUE + +#undef M2C_OVERHEAT_CRITICAL +#undef M2C_OVERHEAT_BAD +#undef M2C_OVERHEAT_OK +#undef M2C_SETUP_TIME +#undef M2C_OVERHEAT_DAMAGE +#undef M2C_LOW_COOLDOWN_ROLL +#undef M2C_HIGH_COOLDOWN_ROLL +#undef M2C_PASSIVE_COOLDOWN_AMOUNT +#undef M2C_OVERHEAT_OVERLAY +#undef M2C_CRUSHER_STUN diff --git a/code/modules/cm_marines/smartgun_mount.dm b/code/modules/cm_marines/smartgun_mount.dm index f1d5e56ee8d3..5fa83d1fa06b 100644 --- a/code/modules/cm_marines/smartgun_mount.dm +++ b/code/modules/cm_marines/smartgun_mount.dm @@ -1,14 +1,3 @@ -#define M2C_SETUP_TIME 0.2 SECONDS -#define M2C_OVERHEAT_CRITICAL 25 -#define M2C_OVERHEAT_BAD 14 -#define M2C_OVERHEAT_OK 4 -#define M2C_OVERHEAT_DAMAGE 30 -#define M2C_LOW_COOLDOWN_ROLL 0.3 -#define M2C_HIGH_COOLDOWN_ROLL 0.45 -#define M2C_PASSIVE_COOLDOWN_AMOUNT 4 -#define M2C_OVERHEAT_OVERLAY 14 -#define M2C_CRUSHER_STUN 3 //amount in ticks (roughly 3 seconds) - ////////////////////////////////////////////////////////////// //Mounted MG, Replacment for the current jury rig code. @@ -390,9 +379,6 @@ to_chat(user, "You're securing the M56D into place...") var/disassemble_time = 30 - if(skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) - disassemble_time = 5 - if(do_after(user, disassemble_time * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) playsound(src.loc, 'sound/items/Deconstruct.ogg', 25, 1) user.visible_message(SPAN_NOTICE("[user] screws the M56D into the mount."),SPAN_NOTICE("You finalize the M56D heavy machine gun.")) @@ -426,7 +412,7 @@ // The actual Machinegun itself, going to borrow some stuff from current sentry code to make sure it functions. Also because they're similiar. /obj/structure/machinery/m56d_hmg name = "\improper M56D heavy machine gun" - desc = "A deployable, heavy machine gun. While it is capable of taking the same rounds as the M56, it fires specialized tungsten rounds for increased armor penetration.
Drag its sprite onto yourself to man it. Ctrl-click it to toggle burst fire." + desc = "A deployable, heavy machine gun. While it is capable of taking the same rounds as the M56, it fires specialized tungsten rounds for increased armor penetration.
Drag its sprite onto yourself to man it. Ctrl-click it to cycle through firemodes." icon = 'icons/turf/whiskeyoutpost.dmi' icon_state = "M56D" anchored = TRUE @@ -438,18 +424,14 @@ projectile_coverage = PROJECTILE_COVERAGE_LOW var/rounds = 0 //Have it be empty upon spawn. var/rounds_max = 700 - var/fire_delay = 2 //Gotta have rounds down quick. - var/last_fired = 0 - var/burst_fire = 0 //0 is non-burst mode, 1 is burst. var/burst_scatter_mult = 4 - var/safety = 0 //Weapon safety, 0 is weapons hot, 1 is safe. + var/safety = FALSE health = 200 var/health_max = 200 //Why not just give it sentry-tier health for now. var/atom/target = null // required for shooting at things. var/datum/ammo/bullet/machinegun/ammo = /datum/ammo/bullet/machinegun var/obj/projectile/in_chamber = null var/locked = 0 //1 means its locked inplace (this will be for sandbag MGs) - var/is_bursting = 0 var/muzzle_flash_lum = 4 var/icon_full = "M56D" // Put this system in for other MGs or just other mounted weapons in general, future proofing. var/icon_empty = "M56D_e" //Empty @@ -473,6 +455,41 @@ var/user_old_x = 0 var/user_old_y = 0 + /// How much time should pass in between full auto shots, slightly higher than burst due to click delay and similar things that slow firing down + var/fire_delay = 0.3 SECONDS + /// How much time should pass in between burst fire shots + var/burst_fire_delay = 0.2 SECONDS + /// How many rounds are fired per burst + var/burst_amount = 3 + /// How many rounds have been fired in the current burst/auto + var/shots_fired = 0 + /// What firemode the gun is currently in + var/gun_firemode = GUN_FIREMODE_AUTOMATIC + /// What firemodes this gun has + var/static/list/gun_firemodes = list( + GUN_FIREMODE_SEMIAUTO, + GUN_FIREMODE_BURSTFIRE, + GUN_FIREMODE_AUTOMATIC, + ) + /// A multiplier for how slow this gun should fire in automatic as opposed to burst. 1 is normal, 1.2 is 20% slower, 0.8 is 20% faster, etc. + var/autofire_slow_mult = 1 + /// If the gun is currently burst firing + VAR_PROTECTED/burst_firing = FALSE + /// If the gun is currently auto firing + VAR_PROTECTED/auto_firing = FALSE + /// If the gun should display its ammo count + var/display_ammo = TRUE + /// How many degrees in each direction the gun should be able to fire + var/shoot_degree = 80 + /// Semi auto cooldown + COOLDOWN_DECLARE(semiauto_fire_cooldown) + /// How long between semi-auto shots this should wait, to reduce possible spam + var/semiauto_cooldown_time = 0.2 SECONDS + +/obj/structure/machinery/m56d_hmg/get_examine_text(mob/user) + . = ..() + . += "It is currently set to [gun_firemode]." + /obj/structure/machinery/m56d_hmg/initialize_pass_flags(datum/pass_flags_container/PF) ..() if (PF) @@ -491,12 +508,13 @@ else return ..() -/obj/structure/machinery/m56d_hmg/New() - ..() +/obj/structure/machinery/m56d_hmg/Initialize(mapload, ...) + . = ..() ammo = GLOB.ammo_list[ammo] //dunno how this works but just sliding this in from sentry-code. burst_scatter_mult = SCATTER_AMOUNT_TIER_7 update_icon() + AddComponent(/datum/component/automatedfire/autofire, fire_delay, burst_fire_delay, burst_amount, gun_firemode, autofire_slow_mult, CALLBACK(src, PROC_REF(set_burst_firing)), CALLBACK(src, PROC_REF(reset_fire)), CALLBACK(src, PROC_REF(try_fire)), CALLBACK(src, PROC_REF(display_ammo)), CALLBACK(src, PROC_REF(set_auto_firing))) /obj/structure/machinery/m56d_hmg/Destroy() //Make sure we pick up our trash. if(operator) @@ -550,9 +568,6 @@ to_chat(user, "You begin disassembling [src]...") var/disassemble_time = 30 - if(skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) - disassemble_time = 5 - if(do_after(user, disassemble_time * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) user.visible_message(SPAN_NOTICE(" [user] disassembles [src]! "),SPAN_NOTICE(" You disassemble [src]!")) playsound(src.loc, 'sound/items/Screwdriver.ogg', 25, 1) @@ -573,7 +588,7 @@ if(user.action_busy) return if(!do_after(user, 25 * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) return - user.visible_message(SPAN_NOTICE(" [user] loads [src]! "),SPAN_NOTICE(" You load [src]!")) + user.visible_message(SPAN_NOTICE("[user] loads [src]! "),SPAN_NOTICE("You load [src]!")) playsound(loc, 'sound/weapons/gun_minigun_cocked.ogg', 25, 1) if(rounds) var/obj/item/ammo_magazine/m56d/D = new(user.loc) @@ -632,10 +647,10 @@ update_health(severity) return -/obj/structure/machinery/m56d_hmg/proc/exit_interaction(mob/user) +/obj/structure/machinery/m56d_hmg/proc/exit_interaction() SIGNAL_HANDLER - user.unset_interaction() + operator.unset_interaction() /obj/structure/machinery/m56d_hmg/proc/update_damage_state() var/health_percent = round(health/health_max * 100) @@ -674,77 +689,56 @@ in_chamber.generate_bullet(ammo) return 1 -/obj/structure/machinery/m56d_hmg/proc/process_shot(mob/user) - set waitfor = FALSE - - if(isnull(target)) - return //Acqure our victim. - - if(!ammo) - update_icon() //safeguard. +/obj/structure/machinery/m56d_hmg/proc/fire_shot() //Bang Bang + if(!ammo || safety) return - if(burst_fire && target && !last_fired) - if(rounds > 3) - for(var/i = 1 to 3) - is_bursting = 1 - fire_shot(i, user) - sleep(2) - spawn(0) - last_fired = 1 - spawn(fire_delay) - last_fired = 0 - else burst_fire = 0 - is_bursting = 0 - - if(!burst_fire && target && !last_fired) - fire_shot(1, user) - - target = null - -/obj/structure/machinery/m56d_hmg/proc/fire_shot(shots_fired = 1, mob/user) //Bang Bang - if(!ammo) return //No ammo. - if(last_fired) return //still shooting. - - if(!is_bursting) - last_fired = 1 - spawn(fire_delay) - last_fired = 0 - var/turf/T = get_turf(src) var/turf/U = get_turf(target) if (!istype(T) || !istype(U)) return - if(load_into_chamber() == 1) - if(istype(in_chamber,/obj/projectile)) - in_chamber.original = target - - var/initial_angle = Get_Angle(T, U) - var/final_angle = initial_angle - - var/total_scatter_angle = get_scatter() - - if(total_scatter_angle > 0) - final_angle += rand(-total_scatter_angle, total_scatter_angle) - target = get_angle_target_turf(T, final_angle, 30) - - in_chamber.weapon_cause_data = create_cause_data(initial(name), user) - in_chamber.setDir(dir) - in_chamber.def_zone = pick("chest","chest","chest","head") - SEND_SIGNAL(in_chamber, COMSIG_BULLET_USER_EFFECTS, user) - playsound(loc,gun_noise, 50, 1) - in_chamber.fire_at(target,user,src,ammo.max_range,ammo.shell_speed) - if(target) - muzzle_flash(final_angle) - in_chamber = null - rounds-- - if(!rounds) - handle_ammo_out() - return + if(!load_into_chamber()) + return + + if(!istype(in_chamber, /obj/projectile)) + return + + var/angle = get_angle(T, U) + + if((dir == NORTH) && (angle > 180) && (abs(360 - angle) > shoot_degree)) // If north and shooting to the left, we do some extra math + return + + else if((dir != NORTH) && (abs(angle - dir2angle(dir)) > shoot_degree)) + return + + in_chamber.original = target -/obj/structure/machinery/m56d_hmg/proc/get_scatter(shots_fired = 1) + var/initial_angle = Get_Angle(T, U) + var/final_angle = initial_angle + + var/total_scatter_angle = get_scatter() + + if(total_scatter_angle > 0) + final_angle += rand(-total_scatter_angle, total_scatter_angle) + target = get_angle_target_turf(T, final_angle, 30) + + in_chamber.weapon_cause_data = create_cause_data(initial(name), operator) + in_chamber.setDir(dir) + in_chamber.def_zone = pick("chest","chest","chest","head") + SEND_SIGNAL(in_chamber, COMSIG_BULLET_USER_EFFECTS, operator) + playsound(loc, gun_noise, 50, 1) + in_chamber.fire_at(target, operator, src, ammo.max_range, ammo.shell_speed) + if(target) + muzzle_flash(final_angle) + in_chamber = null + rounds-- + if(!rounds) + handle_ammo_out() + return AUTOFIRE_CONTINUE + +/obj/structure/machinery/m56d_hmg/proc/get_scatter() var/total_scatter_angle = in_chamber.ammo.scatter if (shots_fired > 1) @@ -752,67 +746,25 @@ return total_scatter_angle /obj/structure/machinery/m56d_hmg/proc/handle_ammo_out(mob/user) - visible_message(SPAN_NOTICE("[icon2html(src, viewers(src))] \The [src] beeps steadily and its ammo light blinks red.")) + visible_message(SPAN_NOTICE("[icon2html(src, viewers(src))] [src] beeps steadily and its ammo light blinks red.")) playsound(loc, empty_alarm, 25, 1) update_icon() //final safeguard. -// New proc for MGs and stuff replaced handle_manual_fire(). Same arguements though, so alls good. -/obj/structure/machinery/m56d_hmg/handle_click(mob/living/carbon/human/user, atom/A, list/mods) - if(!operator) - return HANDLE_CLICK_UNHANDLED - if(operator != user) - return HANDLE_CLICK_UNHANDLED - if(istype(A,/atom/movable/screen)) - return HANDLE_CLICK_UNHANDLED - if(is_bursting) - return HANDLE_CLICK_UNHANDLED - if(user.lying || get_dist(user,src) > 1 || user.is_mob_incapacitated()) - user.unset_interaction() - return HANDLE_CLICK_UNHANDLED - if(user.get_active_hand() || user.get_inactive_hand()) - to_chat(usr, SPAN_WARNING("You need two free hands to shoot \the [src].")) - return HANDLE_CLICK_UNHANDLED - if(!user.allow_gun_usage) - to_chat(user, SPAN_WARNING("You aren't allowed to use firearms!")) - return HANDLE_CLICK_UNHANDLED - - target = A - if(!istype(target)) - return HANDLE_CLICK_UNHANDLED - - if(target.z != src.z || target.z == 0 || src.z == 0 || isnull(operator.loc) || isnull(src.loc)) - return HANDLE_CLICK_UNHANDLED - - if(get_dist(target,src.loc) > 15) - return HANDLE_CLICK_UNHANDLED - - if(mods["middle"] || mods["shift"] || mods["alt"] || mods["ctrl"]) - handle_modded_clicks(user, mods) - return HANDLE_CLICK_PASS_THRU - - var/angle = get_dir(src, target) - //we can only fire in a 90 degree cone - if(target.loc != src.loc && target.loc != operator.loc) - if(dir & angle) - try_fire(user) - return HANDLE_CLICK_HANDLED - else if(handle_outside_cone(user)) - return HANDLE_CLICK_HANDLED - return HANDLE_CLICK_UNHANDLED - -/obj/structure/machinery/m56d_hmg/proc/try_fire(mob/living/carbon/human/user) +/obj/structure/machinery/m56d_hmg/proc/try_fire() if(!rounds) - to_chat(user, SPAN_WARNING("*click*")) + to_chat(operator, SPAN_WARNING("*click*")) playsound(src, 'sound/weapons/gun_empty.ogg', 25, 1, 5) - else - process_shot(user) + return + + if(operator.l_hand || operator.r_hand) + to_chat(operator, SPAN_WARNING("Your hands need to be free to fire [src]!")) + return + + return fire_shot() /obj/structure/machinery/m56d_hmg/proc/handle_outside_cone(mob/living/carbon/human/user) return FALSE -/obj/structure/machinery/m56d_hmg/proc/handle_modded_clicks(mob/living/carbon/human/user, list/mods) - return HANDLE_CLICK_PASS_THRU - /obj/structure/machinery/m56d_hmg/proc/muzzle_flash(angle) // Might as well keep this too. if(isnull(angle)) return @@ -886,11 +838,13 @@ to_chat(usr, SPAN_NOTICE("You are too far from the handles to man [src]!")) /obj/structure/machinery/m56d_hmg/on_set_interaction(mob/user) - RegisterSignal(user, COMSIG_MOB_RESISTED, PROC_REF(exit_interaction)) - RegisterSignal(user, COMSIG_MOB_MG_EXIT, PROC_REF(exit_interaction)) + RegisterSignal(user, list(COMSIG_MOB_MG_EXIT, COMSIG_MOB_RESISTED, COMSIG_MOB_DEATH, COMSIG_MOB_KNOCKED_DOWN), PROC_REF(exit_interaction)) flags_atom |= RELAY_CLICK user.status_flags |= IMMOBILE_ACTION user.visible_message(SPAN_NOTICE("[user] mans \the [src]."),SPAN_NOTICE("You man \the [src], locked and loaded!")) + RegisterSignal(user, COMSIG_MOB_MOUSEDOWN, PROC_REF(start_fire)) + RegisterSignal(user, COMSIG_MOB_MOUSEDRAG, PROC_REF(change_target)) + RegisterSignal(user, COMSIG_MOB_MOUSEUP, PROC_REF(stop_fire)) user.forceMove(src.loc) user.setDir(dir) user_old_x = user.pixel_x @@ -904,7 +858,9 @@ user.status_flags &= ~IMMOBILE_ACTION user.visible_message(SPAN_NOTICE("[user] lets go of \the [src]."),SPAN_NOTICE("You let go of \the [src], letting the gun rest.")) user.unfreeze() + UnregisterSignal(user, list(COMSIG_MOB_MOUSEUP, COMSIG_MOB_MOUSEDOWN, COMSIG_MOB_MOUSEDRAG)) user.reset_view(null) + user.remove_temp_pass_flags(PASS_MOB_THRU) // this is necessary because being knocked over while using the gun makes you incorporeal user.Move(get_step(src, reverse_direction(src.dir))) user.setDir(dir) //set the direction of the player to the direction the gun is facing user_old_x = 0 //reset our x @@ -915,7 +871,9 @@ remove_action(user, /datum/action/human_action/mg_exit) UnregisterSignal(user, list( COMSIG_MOB_MG_EXIT, - COMSIG_MOB_RESISTED + COMSIG_MOB_RESISTED, + COMSIG_MOB_DEATH, + COMSIG_MOB_KNOCKED_DOWN, )) @@ -959,15 +917,15 @@ if(user.lying || get_dist(user,src) > 0 || user.is_mob_incapacitated() || !user.client) user.unset_interaction() -/obj/structure/machinery/m56d_hmg/clicked(mob/user, list/mods) //Making it possible to toggle burst fire. Perhaps have altclick be the safety on the gun? +/obj/structure/machinery/m56d_hmg/clicked(mob/user, list/mods) if (mods["ctrl"]) if(operator != user) return ..()//only the operatore can toggle fire mode if(!CAN_PICKUP(user, src)) return ..() - burst_fire = !burst_fire - to_chat(user, SPAN_NOTICE("You set [src] to [burst_fire ? "burst fire" : "single fire"] mode.")) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 25, 1) + + do_toggle_firemode(user) + playsound(src, 'sound/items/Deconstruct.ogg', 25, 1) return TRUE return ..() @@ -976,724 +934,171 @@ if(operator) to_chat(operator, SPAN_HIGHDANGER("You are knocked off the gun by the sheer force of the ram!")) operator.unset_interaction() - operator.apply_effect(M2C_CRUSHER_STUN, WEAKEN) - -/obj/structure/machinery/m56d_hmg/mg_turret //Our mapbound version with stupid amounts of ammo. - name = "\improper scoped M56D heavy machine gun nest" - desc = "A scoped M56D heavy machine gun mounted upon a small reinforced post with sandbags to provide a small machine gun nest for all your defensive needs. Drag its sprite onto yourself to man it. Ctrl-click it to toggle burst fire." - burst_fire = 1 - fire_delay = 2 - rounds = 1500 - rounds_max = 1500 - locked = 1 - projectile_coverage = PROJECTILE_COVERAGE_HIGH - icon = 'icons/turf/whiskeyoutpost.dmi' - zoom = 1 - -/obj/structure/machinery/m56d_hmg/mg_turret/dropship - name = "\improper scoped M56D heavy machine gun" - desc = "A scoped M56D heavy machine gun mounted behind a metal shield. Drag its sprite onto yourself to man it. Ctrl-click it to toggle burst fire." - icon_full = "towergun_folding" - icon_empty = "towergun_folding" - var/obj/structure/dropship_equipment/mg_holder/deployment_system - -/obj/structure/machinery/m56d_hmg/mg_turret/dropship/Destroy() - if(deployment_system) - deployment_system.deployed_mg = null - deployment_system = null - return ..() - -/*M2C HEAVY MACHINEGUN AND ITS COMPONENTS */ -// AMMO -/obj/item/ammo_magazine/m2c - name = "M2C Ammunition Box (10x28mm tungsten rounds)" - desc = "A box of 125, 10x28mm tungsten rounds for the M2 Heavy Machinegun System. Click the heavy machinegun while there's no ammo box loaded to reload the M2C." - caliber = "10x28mm" - w_class = SIZE_LARGE - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/uscm.dmi' - icon_state = "m56de" - item_state = "m56de" - max_rounds = 125 - default_ammo = /datum/ammo/bullet/machinegun/auto - gun_type = null - -//STORAGE BOX FOR THE MACHINEGUN -/obj/item/storage/box/m56d/m2c - name = "\improper M2C Assembly-Supply Crate" - desc = "A large case labelled 'M2C, 10x28mm caliber heavy machinegun', seems to be fairly heavy to hold. contains a deadly M2C Heavy Machinegun System and its ammunition." - icon = 'icons/turf/whiskeyoutpost.dmi' - icon_state = "M56D_case" - w_class = SIZE_HUGE - storage_slots = 5 - -/obj/item/storage/box/m56d/m2c/fill_preset_inventory() - new /obj/item/device/m2c_gun(src) - new /obj/item/ammo_magazine/m2c(src) - new /obj/item/ammo_magazine/m2c(src) - new /obj/item/ammo_magazine/m2c(src) - new /obj/item/ammo_magazine/m2c(src) - -// THE GUN ITSELF - -/obj/item/device/m2c_gun - name = "\improper M2C heavy machine gun" - desc = "The disassembled M2C HMG, with its telescopic tripods folded up and unable to fire." - w_class = SIZE_HUGE - flags_equip_slot = SLOT_BACK - icon = 'icons/turf/whiskeyoutpost.dmi' - icon_state = "M56DE_gun_mount" - item_state = "M56DE_gun_mount" - var/rounds = 0 - var/overheat_value = 0 - var/anti_cadehugger_range = 1 - var/broken_gun = FALSE - var/field_recovery = 130 - health = 230 - -/obj/item/device/m2c_gun/Initialize() - . = ..() - update_icon() - -/obj/item/device/m2c_gun/update_icon() //Lets generate the icon based on how much ammo it has. - var/icon_name = initial(icon_state) - if(broken_gun) - icon_name += "_broken" - if(!rounds) - icon_name += "_e" - - else if(!broken_gun && !rounds) - icon_name += "_e" - - icon_state = icon_name + operator.apply_effect(3, WEAKEN) -/obj/item/device/m2c_gun/proc/check_can_setup(mob/user, turf/rotate_check, turf/open/OT, list/ACR) - if(!ishuman(user)) - return FALSE - if(broken_gun) - to_chat(user, SPAN_WARNING("You can't set up \the [src], it's completely broken!")) - return FALSE - if(SSinterior.in_interior(user)) - to_chat(usr, SPAN_WARNING("It's too cramped in here to deploy \a [src].")) - return FALSE - if(OT.density || !isturf(OT) || !OT.allow_construction) - to_chat(user, SPAN_WARNING("You can't set up \the [src] here.")) - return FALSE - if(rotate_check.density) - to_chat(user, SPAN_WARNING("You can't set up \the [src] that way, there's a wall behind you!")) - return FALSE - for(var/obj/structure/potential_blocker in rotate_check) - if(potential_blocker.density) - to_chat(user, SPAN_WARNING("You can't set up \the [src] that way, there's \a [potential_blocker] behind you!")) - return FALSE - if((locate(/obj/structure/barricade) in ACR) || (locate(/obj/structure/window_frame) in ACR) || (locate(/obj/structure/window) in ACR) || (locate(/obj/structure/windoor_assembly) in ACR)) - to_chat(user, SPAN_WARNING("There are barriers nearby, you can't set up \the [src] here!")) - return FALSE - var/fail = FALSE - for(var/obj/X in OT.contents - src) - if(istype(X, /obj/structure/machinery/defenses)) - fail = TRUE - break - else if(istype(X, /obj/structure/machinery/door)) - fail = TRUE - break - else if(istype(X, /obj/structure/machinery/m56d_hmg)) - fail = TRUE - break - if(fail) - to_chat(user, SPAN_WARNING("You can't install \the [src] here, something is in the way.")) - return FALSE - - - if(!(user.alpha > 60)) - to_chat(user, SPAN_WARNING("You can't set this up while cloaked!")) - return FALSE - return TRUE +/// Getter for burst_firing +/obj/structure/machinery/m56d_hmg/proc/get_burst_firing() + return burst_firing +/// Setter for burst_firing +/obj/structure/machinery/m56d_hmg/proc/set_burst_firing(bursting = FALSE) + burst_firing = bursting -/obj/item/device/m2c_gun/attack_self(mob/user) - ..() - var/turf/rotate_check = get_step(user.loc, turn(user.dir, 180)) - var/turf/open/OT = usr.loc - var/list/ACR = range(anti_cadehugger_range, user.loc) - - if(!check_can_setup(user, rotate_check, OT, ACR)) - return +/// Clean up the target, shots fired, and other things related to when you stop firing +/obj/structure/machinery/m56d_hmg/proc/reset_fire() + set_target(null) + set_auto_firing(FALSE) + shots_fired = 0 - if(!do_after(user, M2C_SETUP_TIME, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_BUILD)) +///Set the target and take care of hard delete +/obj/structure/machinery/m56d_hmg/proc/set_target(atom/object) + if(object == target || object == loc) return - - if(!check_can_setup(user, rotate_check, OT, ACR)) + if(target) + UnregisterSignal(target, COMSIG_PARENT_QDELETING) + target = object + if(target) + RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(clean_target)) + +/// Setter for auto_firing +/obj/structure/machinery/m56d_hmg/proc/set_auto_firing(auto = FALSE) + auto_firing = auto + +/// Print how much ammo is left to chat +/obj/structure/machinery/m56d_hmg/proc/display_ammo() + if(!operator) return - var/obj/structure/machinery/m56d_hmg/auto/M = new /obj/structure/machinery/m56d_hmg/auto(user.loc) - transfer_label_component(M) - M.setDir(user.dir) // Make sure we face the right direction - M.anchored = TRUE - playsound(M, 'sound/items/m56dauto_setup.ogg', 75, TRUE) - to_chat(user, SPAN_NOTICE("You deploy \the [M].")) - if((rounds > 0) && !user.get_inactive_hand()) - user.set_interaction(M) - give_action(user, /datum/action/human_action/mg_exit) - M.rounds = rounds - M.overheat_value = overheat_value - M.health = health - M.update_icon() - qdel(src) - -/obj/item/device/m2c_gun/attackby(obj/item/O as obj, mob/user as mob) - if(!ishuman(user)) - return + if(display_ammo) + var/chambered = in_chamber ? TRUE : FALSE + to_chat(operator, SPAN_DANGER("[rounds][chambered ? "+1" : ""] / [rounds_max] ROUNDS REMAINING")) - if(!iswelder(O) || user.action_busy) +/// Toggles the gun's firemode one down the list +/obj/structure/machinery/m56d_hmg/proc/do_toggle_firemode(mob/user, new_firemode) + if(get_burst_firing())//can't toggle mid burst return - if(!HAS_TRAIT(O, TRAIT_TOOL_BLOWTORCH)) - to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) - return + if(!length(gun_firemodes)) + CRASH("[src] called do_toggle_firemode() with an empty gun_firemodes") - if(!broken_gun) - to_chat(user, SPAN_WARNING("\The [src] isn't critically broken, no need for field recovery operations.")) + if(length(gun_firemodes) == 1) + to_chat(user, SPAN_NOTICE("[icon2html(src, user)] This gun only has one firemode.")) return - var/obj/item/tool/weldingtool/WT = O - - if(WT.remove_fuel(2, user)) - user.visible_message(SPAN_NOTICE("[user] begins field recovering \the [src]."), \ - SPAN_NOTICE("You begin repairing the severe damages on \the [src] in an effort to restore its functions.")) - playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) - if(!do_after(user, field_recovery * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) - return - user.visible_message(SPAN_NOTICE("[user] field recovers \the [src], restoring it back to its original state."), \ - SPAN_NOTICE("You repair \the [src] back to a functional state.")) - broken_gun = FALSE - health = 110 - update_icon() - return + if(new_firemode) + if(!(new_firemode in gun_firemodes)) + CRASH("[src] called do_toggle_firemode() with [new_firemode] new_firemode, not on gun_firemodes") + gun_firemode = new_firemode else - to_chat(user, SPAN_WARNING("You need more fuel in \the [WT] to start field recovery on [src].")) - -// MACHINEGUN, AUTOMATIC -/obj/structure/machinery/m56d_hmg/auto - name = "\improper M2C Heavy Machinegun" - desc = "A deployable, heavy machine gun. The M2C 'Chimp' HB is a modified M2 HB reconfigured to fire 10x28 Caseless Tungsten rounds for USCM use. It is capable of recoilless fire and fast-rotating. However it has a debilitating overheating issue due to the poor quality of metals used in the parts, forcing it to be used in decisive, crushing engagements as a squad support weapon. Click its sprite while behind it without holding anything to man it. Click-drag on NON-GRAB intent to disassemble the gun, GRAB INTENT to remove ammo magazines." - icon = 'icons/turf/whiskeyoutpost.dmi' - icon_state = "M56DE" - icon_full = "M56DE" - icon_empty = "M56DE_e" - rounds_max = 125 - ammo = /datum/ammo/bullet/machinegun/auto - fire_delay = 1.1 - last_fired = 0 - var/grip_dir = null - var/fold_time = 1.5 SECONDS - var/repair_time = 5 SECONDS - density = TRUE - health = 230 - health_max = 230 - var/list/cadeblockers = list() - var/cadeblockers_range = 1 - - var/static/image/barrel_overheat_image - var/has_barrel_overlay = FALSE - - gun_noise = 'sound/weapons/gun_m56d_auto.ogg' - empty_alarm = 'sound/weapons/hmg_eject_mag.ogg' - - // OVERHEAT MECHANIC VARIABLES - var/overheat_value = 0 - var/overheat_threshold = 40 - var/emergency_cooling = FALSE - var/overheat_text_cooldown = 0 - var/force_cooldown_timer = 10 - var/rotate_timer = 0 - var/fire_stopper = FALSE - - // Muzzle Flash Offsets - north_x_offset = 0 - north_y_offset = 10 - east_x_offset = 0 - east_y_offset = 12 - south_x_offset = 0 - south_y_offset = 10 - west_x_offset = 0 - west_y_offset = 12 - -// ANTI-CADE EFFECT, CREDIT TO WALTERMELDRON - -/obj/structure/machinery/m56d_hmg/auto/Initialize() - . = ..() - for(var/turf/T in range(cadeblockers_range, src)) - var/obj/structure/blocker/anti_cade/CB = new(T) - CB.hmg = src - - cadeblockers.Add(CB) - - if(!barrel_overheat_image) - barrel_overheat_image = image('icons/turf/whiskeyoutpost.dmi', "+m56de_overheat") - -/obj/structure/machinery/m56d_hmg/auto/Destroy() - QDEL_NULL_LIST(cadeblockers) - return ..() - -/obj/structure/machinery/m56d_hmg/auto/process() - - var/mob/user = operator - overheat_value -= M2C_PASSIVE_COOLDOWN_AMOUNT - if(overheat_value <= 0) - overheat_value = 0 - STOP_PROCESSING(SSobj, src) - - if(overheat_value >= M2C_OVERHEAT_CRITICAL) - to_chat(user, SPAN_HIGHDANGER("[src]'s barrel is critically hot, it might start melting at this rate.")) - else if(overheat_value >= M2C_OVERHEAT_BAD) - to_chat(user, SPAN_DANGER("[src]'s barrel is terribly hot, but is still able to fire.")) - else if(overheat_value >= M2C_OVERHEAT_OK) - to_chat(user, SPAN_DANGER("[src]'s barrel is pretty hot, although it's still stable.")) - else if (overheat_value > 0) - to_chat(user, SPAN_WARNING("[src]'s barrel is mildly warm.")) - - update_icon() - -// ANTI-CADE EFFECT, CREDIT TO WALTERMELDRON -/obj/structure/blocker/anti_cade - health = INFINITY - anchored = TRUE - density = FALSE - unacidable = TRUE - indestructible = TRUE - invisibility = 101 // no looking at it with alt click - - var/obj/structure/machinery/m56d_hmg/auto/hmg - - alpha = 0 - -/obj/structure/blocker/anti_cade/BlockedPassDirs(atom/movable/AM, target_dir) - if(istype(AM, /obj/structure/barricade)) - return BLOCKED_MOVEMENT - else if(istype(AM, /obj/structure/window)) - return BLOCKED_MOVEMENT - else if(istype(AM, /obj/structure/windoor_assembly)) - return BLOCKED_MOVEMENT - else if(istype(AM, /obj/structure/machinery/door)) - return BLOCKED_MOVEMENT - return ..() - -/obj/structure/blocker/anti_cade/Destroy() - if(hmg) - hmg.cadeblockers.Remove(src) - hmg = null - - return ..() - -/obj/structure/machinery/m56d_hmg/auto/update_icon() //Lets generate the icon based on how much ammo it has. - if(!rounds) - icon_state = "[icon_empty]" - else - icon_state = "[icon_full]" - - if(overheat_value >= M2C_OVERHEAT_OVERLAY) - if(has_barrel_overlay) - return - overlays += barrel_overheat_image - has_barrel_overlay = TRUE - else if(has_barrel_overlay) - overlays -= barrel_overheat_image - has_barrel_overlay = FALSE - -// DED - -/obj/structure/machinery/m56d_hmg/auto/update_health(amount) //Negative values restores health. - health -= amount - if(health <= 0) - playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) - visible_message(SPAN_WARNING("[src] has broken down completely!")) - var/obj/item/device/m2c_gun/HMG = new(src.loc) - HMG.rounds = rounds - HMG.broken_gun = TRUE - HMG.unacidable = FALSE - HMG.health = 0 - HMG.update_icon() - qdel(src) - return - - if(health > health_max) - health = health_max - update_damage_state() - update_icon() - -/obj/structure/machinery/m56d_hmg/auto/attackby(obj/item/O as obj, mob/user as mob) - if(!ishuman(user)) - return - // RELOADING - if(istype(O, /obj/item/ammo_magazine/m2c)) - var/obj/item/ammo_magazine/m2c/M = O - if(rounds) - to_chat(user, SPAN_WARNING("There's already an ammo box inside of the machinegun, remove it first!")) - return - if(user.action_busy) return - user.visible_message(SPAN_NOTICE(" [user] loads [src] with an ammo box! "),SPAN_NOTICE(" You load [src] with an ammo box!")) - playsound(src.loc, 'sound/items/m56dauto_load.ogg', 75, 1) - rounds = min(rounds + M.current_rounds, rounds_max) - update_icon() - user.temp_drop_inv_item(O) - qdel(O) - return - - // WELDER REPAIR - if(iswelder(O)) - if(!HAS_TRAIT(O, TRAIT_TOOL_BLOWTORCH)) - to_chat(user, SPAN_WARNING("You need a stronger blowtorch!")) - return - if(user.action_busy) - return - - var/obj/item/tool/weldingtool/WT = O - - if(health == health_max) - to_chat(user, SPAN_WARNING("[src] doesn't need repairs, it's well-maintained.")) - return - - if(WT.remove_fuel(2, user)) - user.visible_message(SPAN_NOTICE("[user] begins repairing damage on \the [src]."), \ - SPAN_NOTICE("You begin repairing the damage on \the [src].")) - playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) - if(!do_after(user, repair_time * user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) - return - user.visible_message(SPAN_NOTICE("[user] repairs some of the damage on [src]."), \ - SPAN_NOTICE("You repair [src].")) - update_health(-round(health_max*0.2)) - playsound(src.loc, 'sound/items/Welder2.ogg', 25, 1) + var/mode_index = gun_firemodes.Find(gun_firemode) + if(++mode_index <= length(gun_firemodes)) + gun_firemode = gun_firemodes[mode_index] else - to_chat(user, SPAN_WARNING("You need more fuel in [WT] to repair damage to [src].")) - return - return + gun_firemode = gun_firemodes[1] -/obj/structure/machinery/m56d_hmg/auto/handle_modded_clicks(mob/living/carbon/human/user, list/mods) - if(mods["middle"]) - handle_rotating_gun(user) + playsound(user, 'sound/weapons/handling/gun_burst_toggle.ogg', 15, 1) - return ..() - -// AUTOMATIC FIRING + to_chat(user, SPAN_NOTICE("[icon2html(src, user)] You switch to [gun_firemode].")) + SEND_SIGNAL(src, COMSIG_GUN_FIRE_MODE_TOGGLE, gun_firemode) -/obj/structure/machinery/m56d_hmg/auto/proc/auto_fire_start(client/source, atom/A, params) +///Set the target to its turf, so we keep shooting even when it was qdeled +/obj/structure/machinery/m56d_hmg/proc/clean_target() SIGNAL_HANDLER - if(!(source.mob == operator) || !A) - return - var/mob/living/carbon/human/user = operator - target = A - - if(params["shift"] || params["ctrl"] || params["alt"]) - return + target = get_turf(target) - if(istype(A, /atom/movable/screen)) - return - - if(user.get_active_hand() || user.get_inactive_hand()) - return - - if(!rounds) - to_chat(user, SPAN_WARNING("*click*")) - playsound(src, 'sound/weapons/gun_empty.ogg', 30, 1, 5) +/obj/structure/machinery/m56d_hmg/proc/stop_fire() + SIGNAL_HANDLER + if(!target) return - params = params - target = A - - handle_rotating_gun(user) + if(gun_firemode == GUN_FIREMODE_AUTOMATIC) + reset_fire() + display_ammo() + SEND_SIGNAL(src, COMSIG_GUN_STOP_FIRE) - INVOKE_ASYNC(src, PROC_REF(auto_fire_repeat), user) - -/obj/structure/machinery/m56d_hmg/auto/proc/auto_fire_stop(client/source, atom/A, params) +///Update the target if you draged your mouse +/obj/structure/machinery/m56d_hmg/proc/change_target(datum/source, atom/src_object, atom/over_object, turf/src_location, turf/over_location, src_control, over_control, params) SIGNAL_HANDLER - target = null + set_target(get_turf_on_clickcatcher(over_object, operator, params)) + operator?.face_atom(target) -/obj/structure/machinery/m56d_hmg/auto/proc/auto_fire_new_target(client/source, atom/start, atom/hovered, params) +///Check if the gun can fire and add it to bucket auto_fire system if needed, or just fire the gun if not +/obj/structure/machinery/m56d_hmg/proc/start_fire(datum/source, atom/object, turf/location, control, params, bypass_checks = FALSE) SIGNAL_HANDLER - if(!(source.mob == operator)) - return - var/mob/user = operator - if(istype(hovered, /atom/movable/screen)) + if (burst_firing) return - if(get_turf(hovered) == get_turf(user)) + var/list/modifiers = params2list(params) + if(modifiers["shift"] || modifiers["middle"] || modifiers["right"]) return - target = hovered - - handle_rotating_gun(user) - -/obj/structure/machinery/m56d_hmg/auto/proc/auto_fire_repeat(mob/living/carbon/human/user, atom/A) - if(!target) - return - if(operator != user) - return - if(fire_stopper) + // Don't allow doing anything else if inside a container of some sort, like a locker. + if(!isturf(operator.loc)) return - if(user.get_active_hand() || user.get_inactive_hand()) - to_chat(usr, SPAN_WARNING("You need both your hands free to shoot [src].")) - return - if(!user.allow_gun_usage) - to_chat(user, SPAN_WARNING("You aren't allowed to use firearms!")) - return - - var/angle = get_dir(src,target) - if((dir & angle) && target.loc != src.loc && target.loc != operator.loc) - - if(overheat_value >= overheat_threshold) - if(world.time > overheat_text_cooldown) - user.visible_message(SPAN_HIGHDANGER("[src] has overheated and has been shortly disabled!"),SPAN_HIGHDANGER("[src] has overheated! You have to wait for it to cooldown!")) - overheat_text_cooldown = world.time + 3 SECONDS - if(!emergency_cooling) - emergency_cooling = TRUE - to_chat(user, SPAN_DANGER("You wait for [src]'s barrel to cooldown to continue sustained fire.")) - fire_stopper = TRUE - STOP_PROCESSING(SSobj, src) - addtimer(CALLBACK(src, PROC_REF(force_cooldown)), force_cooldown_timer) - - else if(overheat_value < overheat_threshold) - fire_shot(1, user) - if(rounds) - overheat_value = overheat_value + 1 - START_PROCESSING(SSobj, src) - - addtimer(CALLBACK(src, PROC_REF(auto_fire_repeat), user), fire_delay) -/obj/structure/machinery/m56d_hmg/auto/handle_ammo_out(mob/user) - visible_message(SPAN_NOTICE("[icon2html(src, viewers(src))] \The [src]'s ammo box drops onto the ground, now completely empty.")) - playsound(loc, empty_alarm, 70, 1) - update_icon() //final safeguard. - var/obj/item/ammo_magazine/m2c/AM = new /obj/item/ammo_magazine/m2c(src.loc) - AM.current_rounds = 0 - AM.update_icon() - -/obj/structure/machinery/m56d_hmg/auto/get_scatter() - return 0 - -// ACTIVE COOLING - -/obj/structure/machinery/m56d_hmg/auto/proc/force_cooldown(mob/user) - user = operator - - overheat_value = round((rand(M2C_LOW_COOLDOWN_ROLL,M2C_HIGH_COOLDOWN_ROLL) * overheat_threshold)) - playsound(src.loc, 'sound/weapons/hmg_cooling.ogg', 75, 1) - to_chat(user, SPAN_NOTICE("[src]'s barrel has cooled down enough to restart firing.")) - emergency_cooling = FALSE - fire_stopper = FALSE - fire_delay = initial(fire_delay) - update_health(M2C_OVERHEAT_DAMAGE) - START_PROCESSING(SSobj, src) - update_icon() - -// TOGGLE MODE - -/obj/structure/machinery/m56d_hmg/auto/clicked(mob/user, list/mods, atom/A) - if (mods["ctrl"]) - if(operator != user) - return ..() - if(!CAN_PICKUP(user, src)) - return ..() - to_chat(user, SPAN_NOTICE("You try to toggle a burst-mode on \the [src], but realize that it doesn't exist.")) - return TRUE - - return ..() - -/obj/structure/machinery/m56d_hmg/auto/fire_shot(shots_fired = 1, mob/user) - if(fire_stopper) return - - return ..() - -//ATTACK WITH BOTH HANDS COMBO - -/obj/structure/machinery/m56d_hmg/auto/attack_hand(mob/user) - ..() - - var/turf/user_turf = get_turf(user) - for(var/opp_dir in reverse_nearby_direction(src.dir)) - if(get_step(src, opp_dir) == user_turf) - if(operator) //If there is already a operator then they're manning it. - if(operator.interactee == null) - operator = null //this shouldn't happen, but just in case - else - to_chat(user, "Someone's already controlling it.") - return - if(!(user.alpha > 60)) - to_chat(user, SPAN_WARNING("You aren't going to be setting up while cloaked.")) - return - else - if(user.interactee) //Make sure we're not manning two guns at once, tentacle arms. - to_chat(user, "You're already manning something!") - return - - if(user.get_active_hand() == null && user.get_inactive_hand() == null) - user.freeze() - user.set_interaction(src) - give_action(user, /datum/action/human_action/mg_exit) - else - to_chat(usr, SPAN_NOTICE("Your hands are too busy holding things to grab the handles!")) - else - to_chat(usr, SPAN_NOTICE("You are too far from the handles to man [src]!")) - -// DISASSEMBLY - -/obj/structure/machinery/m56d_hmg/auto/MouseDrop(over_object, src_location, over_location) - if(!ishuman(usr)) return - var/mob/living/carbon/human/user = usr - - if(over_object == user && in_range(src, user)) - if((rounds > 0) && (user.a_intent & (INTENT_GRAB))) - playsound(src.loc, 'sound/items/m56dauto_load.ogg', 75, 1) - user.visible_message(SPAN_NOTICE(" [user] removes [src]'s ammo box."),SPAN_NOTICE(" You remove [src]'s ammo box, preparing the gun for disassembly.")) - var/obj/item/ammo_magazine/m2c/used_ammo = new(user.loc) - used_ammo.current_rounds = rounds - user.put_in_active_hand(used_ammo) - rounds = 0 - - else - if(!do_after(user, fold_time* user.get_skill_duration_multiplier(SKILL_ENGINEER), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, src)) // disassembly time reduced - return - user.visible_message(SPAN_NOTICE("[user] disassembles [src]."),SPAN_NOTICE("You fold up the tripod for [src], disassembling it.")) - playsound(src.loc, 'sound/items/m56dauto_setup.ogg', 75, 1) - var/obj/item/device/m2c_gun/HMG = new(src.loc) - transfer_label_component(HMG) - HMG.rounds = src.rounds - HMG.overheat_value = round(0.5 * src.overheat_value) - if (HMG.overheat_value <= 10) - HMG.overheat_value = 0 - HMG.update_icon() - HMG.health = health - user.put_in_active_hand(HMG) - if(user.equip_to_slot_if_possible(HMG, WEAR_BACK, disable_warning = TRUE)) - to_chat(user, SPAN_NOTICE("You quickly heave the machine gun onto your back!")) - qdel(src) - - update_icon() - -// MOUNT THE MG - -/obj/structure/machinery/m56d_hmg/auto/on_set_interaction(mob/user) - ..() - ADD_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) - if(user.client) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_DOWN, PROC_REF(auto_fire_start)) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_UP, PROC_REF(auto_fire_stop)) - RegisterSignal(user.client, COMSIG_CLIENT_LMB_DRAG, PROC_REF(auto_fire_new_target)) - RegisterSignal(user, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(disable_interaction)) - RegisterSignal(user, COMSIG_MOB_POST_UPDATE_CANMOVE, PROC_REF(disable_canmove_interaction)) - -// DISMOUNT THE MG - -/obj/structure/machinery/m56d_hmg/auto/on_unset_interaction(mob/user) - REMOVE_TRAIT(user, TRAIT_OVERRIDE_CLICKDRAG, TRAIT_SOURCE_WEAPON) - UnregisterSignal(user, list( - COMSIG_MOVABLE_PRE_MOVE, - COMSIG_MOB_POST_UPDATE_CANMOVE - )) - ..() - -// GET ANIMATED - -/obj/structure/machinery/m56d_hmg/auto/update_pixels(mob/user, mounting = TRUE) - if(mounting) - var/diff_x = 0 - var/diff_y = 0 - var/tilesize = 32 - var/viewoffset = tilesize * 1 - - user.reset_view(src) - if(dir == EAST) - diff_x = -16 + user_old_x - user.client.pixel_x = viewoffset - user.client.pixel_y = 0 - if(dir == WEST) - diff_x = 16 + user_old_x - user.client.pixel_x = -viewoffset - user.client.pixel_y = 0 - if(dir == NORTH) - diff_y = -16 + user_old_y - user.client.pixel_x = 0 - user.client.pixel_y = viewoffset - if(dir == SOUTH) - diff_y = 16 + user_old_y - user.client.pixel_x = 0 - user.client.pixel_y = -viewoffset - - animate(user, pixel_x=diff_x, pixel_y=diff_y, 0.4 SECONDS) - else - if(user.client) - user.client.change_view(world_view_size) - user.client.pixel_x = 0 - user.client.pixel_y = 0 - UnregisterSignal(user.client, list( - COMSIG_CLIENT_LMB_DOWN, - COMSIG_CLIENT_LMB_UP, - COMSIG_CLIENT_LMB_DRAG, - )) - - animate(user, pixel_x=user_old_x, pixel_y=user_old_y, 4, 1) + if(istype(object, /atom/movable/screen)) + return + if(!bypass_checks) + if(operator.throw_mode) + return -//ROTATE THE MACHINEGUN + if(operator.Adjacent(object)) //Dealt with by attack code + return -/obj/structure/machinery/m56d_hmg/auto/proc/rotate_to(mob/user, atom/A) - if(!A || !user.x || !user.y || !A.x || !A.y) + if(QDELETED(object)) return - var/dx = A.x - user.x - var/dy = A.y - user.y - if(!dx && !dy) - return - - var/direction - if(abs(dx) < abs(dy)) - if(dy > 0) - direction = NORTH - else - direction = SOUTH - else - if(dx > 0) - direction = EAST - else - direction = WEST - var/turf/rotate_check = get_step(src.loc, turn(direction,180)) - if(rotate_check.density) - to_chat(user, SPAN_WARNING("You can't rotate it that way.")) + set_target(get_turf_on_clickcatcher(object, operator, params)) + if((gun_firemode == GUN_FIREMODE_SEMIAUTO) && COOLDOWN_FINISHED(src, semiauto_fire_cooldown)) + COOLDOWN_START(src, semiauto_fire_cooldown, semiauto_cooldown_time) + fire_shot() + reset_fire() + display_ammo() return + else if(gun_firemode != GUN_FIREMODE_SEMIAUTO) + SEND_SIGNAL(src, COMSIG_GUN_FIRE) - src.setDir(direction) - user.setDir(direction) - update_pixels(user) - playsound(src.loc, 'sound/items/m56dauto_rotate.ogg', 25, 1) - to_chat(user, SPAN_NOTICE("You rotate [src], using the tripod to support your pivoting movement.")) - +/// setter for fire_delay +/obj/structure/machinery/m56d_hmg/proc/set_fire_delay(value) + fire_delay = value + SEND_SIGNAL(src, COMSIG_GUN_AUTOFIREDELAY_MODIFIED, fire_delay) -/obj/structure/machinery/m56d_hmg/auto/proc/disable_interaction(mob/user, NewLoc, direction) - SIGNAL_HANDLER +/// getter for fire_delay +/obj/structure/machinery/m56d_hmg/proc/get_fire_delay(value) + return fire_delay - if(user.lying || get_dist(user,src) > 0 || user.is_mob_incapacitated() || !user.client) - user.unset_interaction() +/// setter for burst_amount +/obj/structure/machinery/m56d_hmg/proc/set_burst_amount(value, mob/user) + burst_amount = value + SEND_SIGNAL(src, COMSIG_GUN_BURST_SHOTS_TO_FIRE_MODIFIED, burst_amount) -/obj/structure/machinery/m56d_hmg/auto/proc/disable_canmove_interaction(mob/user, canmove, laid_down, lying) - SIGNAL_HANDLER +/// Setter for burst_delay +/obj/structure/machinery/m56d_hmg/proc/set_burst_fire_delay(value, mob/user) + burst_fire_delay = value + SEND_SIGNAL(src, COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED, burst_fire_delay) - if(laid_down) - user.unset_interaction() +/obj/structure/machinery/m56d_hmg/mg_turret //Our mapbound version with stupid amounts of ammo. + name = "\improper scoped M56D heavy machine gun nest" + desc = "A scoped M56D heavy machine gun mounted upon a small reinforced post with sandbags to provide a small machine gun nest for all your defensive needs. Drag its sprite onto yourself to man it. Ctrl-click it to toggle burst fire." + fire_delay = 2 + rounds = 1500 + rounds_max = 1500 + locked = 1 + projectile_coverage = PROJECTILE_COVERAGE_HIGH + icon = 'icons/turf/whiskeyoutpost.dmi' + zoom = 1 -/obj/structure/machinery/m56d_hmg/auto/proc/handle_rotating_gun(mob/user) - var/angle = get_dir(src, target) - if(world.time > rotate_timer && !((dir & angle) && target.loc != src.loc && target.loc != operator.loc)) - rotate_timer = world.time + 0.4 SECONDS - rotate_to(user, target) - return TRUE +/obj/structure/machinery/m56d_hmg/mg_turret/dropship + name = "\improper scoped M56D heavy machine gun" + desc = "A scoped M56D heavy machine gun mounted behind a metal shield. Drag its sprite onto yourself to man it. Ctrl-click it to toggle burst fire." + icon_full = "towergun_folding" + icon_empty = "towergun_folding" + var/obj/structure/dropship_equipment/mg_holder/deployment_system -#undef M2C_OVERHEAT_CRITICAL -#undef M2C_OVERHEAT_BAD -#undef M2C_OVERHEAT_OK -#undef M2C_SETUP_TIME -#undef M2C_OVERHEAT_DAMAGE -#undef M2C_LOW_COOLDOWN_ROLL -#undef M2C_HIGH_COOLDOWN_ROLL -#undef M2C_PASSIVE_COOLDOWN_AMOUNT -#undef M2C_OVERHEAT_OVERLAY -#undef M2C_CRUSHER_STUN +/obj/structure/machinery/m56d_hmg/mg_turret/dropship/Destroy() + if(deployment_system) + deployment_system.deployed_mg = null + deployment_system = null + return ..() diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm index c9976c7fea89..0f52332ee944 100644 --- a/code/modules/cm_preds/yaut_bracers.dm +++ b/code/modules/cm_preds/yaut_bracers.dm @@ -35,7 +35,6 @@ var/charge_rate = 30 /// Cooldown on draining power from APC var/charge_cooldown = COOLDOWN_BRACER_CHARGE - var/cloaked = 0 var/cloak_timer = 0 var/cloak_malfunction = 0 /// Determines the alpha level of the cloaking device. @@ -71,6 +70,7 @@ flags_item = initial(flags_item) UnregisterSignal(user, list(COMSIG_MOB_STAT_SET_ALIVE, COMSIG_MOB_DEATH)) SSminimaps.remove_marker(user) + unlock_bracer() // So as to prevent the bracer being stuck with nodrop if the pred gets gibbed/arm removed/etc. ..() /obj/item/clothing/gloves/yautja/pickup(mob/living/user) @@ -96,7 +96,7 @@ human_holder.update_power_display(perc_charge) //Non-Yautja have a chance to get stunned with each power drain - if(!cloaked) + if(!HAS_TRAIT(human_holder, TRAIT_CLOAKED)) return if(human_holder.stat == DEAD) decloak(human_holder, TRUE) @@ -293,7 +293,7 @@ var/mob/living/carbon/human/wearer = loc if(wearer.gloves == src) wearer.visible_message(SPAN_DANGER("You hear a hiss and crackle!"), SPAN_DANGER("Your bracers hiss and spark!"), SPAN_DANGER("You hear a hiss and crackle!")) - if(cloaked) + if(HAS_TRAIT(wearer, TRAIT_CLOAKED)) decloak(wearer, TRUE, DECLOAK_EMP) else var/turf/our_turf = get_turf(src) @@ -336,7 +336,7 @@ //Non-Yautja have a chance to get stunned with each power drain if((!HAS_TRAIT(human, TRAIT_YAUTJA_TECH) && !human.hunter_data.thralled) && prob(4)) - if(cloaked) + if(HAS_TRAIT(human, TRAIT_CLOAKED)) decloak(human, TRUE, DECLOAK_SPECIES) shock_user(human) @@ -344,14 +344,14 @@ /obj/item/clothing/gloves/yautja/hunter/dropped(mob/user) move_chip_to_bracer() - if(cloaked) + if(HAS_TRAIT(user, TRAIT_CLOAKED)) decloak(user, TRUE) ..() /obj/item/clothing/gloves/yautja/hunter/on_enter_storage(obj/item/storage/S) if(ishuman(loc)) var/mob/living/carbon/human/human = loc - if(cloaked) + if(HAS_TRAIT(human, TRAIT_CLOAKED)) decloak(human, TRUE) . = ..() @@ -549,7 +549,7 @@ if(!istype(M) || M.is_mob_incapacitated()) return FALSE - if(cloaked) //Turn it off. + if(HAS_TRAIT(caller, TRAIT_CLOAKED)) //Turn it off. if(cloak_timer > world.time) to_chat(M, SPAN_WARNING("Your cloaking device is busy! Time left: [max(round((cloak_timer - world.time) / 10), 1)] seconds.")) return FALSE @@ -570,7 +570,7 @@ if(!drain_power(M, 50)) return FALSE - cloaked = TRUE + ADD_TRAIT(M, TRAIT_CLOAKED, TRAIT_SOURCE_EQUIPMENT(WEAR_HANDS)) RegisterSignal(M, COMSIG_HUMAN_EXTINGUISH, PROC_REF(wrapper_fizzle_camouflage)) RegisterSignal(M, COMSIG_HUMAN_PRE_BULLET_ACT, PROC_REF(bullet_hit)) @@ -616,8 +616,8 @@ if(forced) cloak_malfunction = world.time + decloak_timer - cloaked = FALSE - log_game("[key_name_admin(usr)] has disabled their cloaking device.") + REMOVE_TRAIT(user, TRAIT_CLOAKED, TRAIT_SOURCE_EQUIPMENT(WEAR_HANDS)) + log_game("[key_name_admin(user)] has disabled their cloaking device.") user.visible_message(SPAN_WARNING("[user] shimmers into existence!"), SPAN_WARNING("Your cloaking device deactivates.")) playsound(user.loc, 'sound/effects/pred_cloakoff.ogg', 15, 1) user.alpha = initial(user.alpha) @@ -677,6 +677,8 @@ if (exploding) return + notify_ghosts(header = "Yautja self destruct", message = "[victim] is self destructing to protect their honor!", source = victim, action = NOTIFY_ORBIT) + exploding = 1 var/turf/T = get_turf(src) if(explosion_type == SD_TYPE_BIG && victim.stat == CONSCIOUS && (is_ground_level(T.z) || MODE_HAS_TOGGLEABLE_FLAG(MODE_SHIPSIDE_SD))) @@ -730,7 +732,7 @@ var/mob/living/carbon/human/M = caller - if(cloaked) + if(HAS_TRAIT(M, TRAIT_CLOAKED)) to_chat(M, SPAN_WARNING("Not while you're cloaked. It might disrupt the sequence.")) return if(M.stat == DEAD) @@ -1160,18 +1162,26 @@ /// The actual unlock/lock function. /obj/item/clothing/gloves/yautja/proc/toggle_lock_internal(mob/wearer, force_lock) if(((flags_item & NODROP) || (flags_inventory & CANTSTRIP)) && !force_lock) - flags_item &= ~NODROP - flags_inventory &= ~CANTSTRIP - if(!isyautja(wearer)) - to_chat(wearer, SPAN_WARNING("The bracer beeps pleasantly, releasing it's grip on your forearm.")) - else - to_chat(wearer, SPAN_WARNING("With an angry blare the bracer releases your forearm.")) - return TRUE + return unlock_bracer() + + return lock_bracer() +/obj/item/clothing/gloves/yautja/proc/lock_bracer(mob/wearer) flags_item |= NODROP flags_inventory |= CANTSTRIP - if(isyautja(wearer)) - to_chat(wearer, SPAN_WARNING("The bracer clamps securely around your forearm and beeps in a comfortable, familiar way.")) - else - to_chat(wearer, SPAN_WARNING("The bracer clamps painfully around your forearm and beeps angrily. It won't come off!")) + if(wearer) + if(isyautja(wearer)) + to_chat(wearer, SPAN_WARNING("The bracer clamps securely around your forearm and beeps in a comfortable, familiar way.")) + else + to_chat(wearer, SPAN_WARNING("The bracer clamps painfully around your forearm and beeps angrily. It won't come off!")) + return TRUE + +/obj/item/clothing/gloves/yautja/proc/unlock_bracer(mob/wearer) + flags_item &= ~NODROP + flags_inventory &= ~CANTSTRIP + if(wearer) + if(!isyautja(wearer)) + to_chat(wearer, SPAN_WARNING("The bracer beeps pleasantly, releasing its grip on your forearm.")) + else + to_chat(wearer, SPAN_WARNING("With an angry blare, the bracer releases your forearm.")) return TRUE diff --git a/code/modules/cm_preds/yaut_hudprocs.dm b/code/modules/cm_preds/yaut_hudprocs.dm index b29f45cd31d9..6131ac135cb7 100644 --- a/code/modules/cm_preds/yaut_hudprocs.dm +++ b/code/modules/cm_preds/yaut_hudprocs.dm @@ -150,7 +150,7 @@ var/list/target_list = list() for(var/mob/living/carbon/target in view(7, usr.client)) - if((ishuman_strict(target) || isxeno(target)) && target.stat != DEAD) + if(ishuman_strict(target) && (target.stat != DEAD)) target_list += target var/mob/living/carbon/T = tgui_input_list(usr, "Target", "Choose a target.", target_list) @@ -187,7 +187,7 @@ var/list/target_list = list() for(var/mob/living/carbon/target in view(7, usr.client)) - if((ishuman_strict(target) || isxeno(target)) && target.stat != DEAD) + if(ishuman_strict(target) && (target.stat != DEAD)) if(target.hunter_data.honored) target_list += target diff --git a/code/modules/cm_preds/yaut_items.dm b/code/modules/cm_preds/yaut_items.dm index 9e56d0da7098..c86a3fdd23e2 100644 --- a/code/modules/cm_preds/yaut_items.dm +++ b/code/modules/cm_preds/yaut_items.dm @@ -430,10 +430,12 @@ if(do_after(user, 10 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) // Display fancy animation for you and the person you might be pulling (Legacy) + REMOVE_TRAIT_ALLSOURCES(user, TRAIT_CLOAKED) user.visible_message(SPAN_WARNING("[icon2html(user, viewers(src))][user] disappears!")) var/tele_time = animation_teleport_quick_out(user) var/mob/living/M = user.pulling if(istype(M)) // Pulled person + REMOVE_TRAIT_ALLSOURCES(M, TRAIT_CLOAKED) M.visible_message(SPAN_WARNING("[icon2html(M, viewers(src))][M] disappears!")) animation_teleport_quick_out(M) diff --git a/code/modules/cm_preds/yaut_weapons.dm b/code/modules/cm_preds/yaut_weapons.dm index 56e165ac4931..934f575993b9 100644 --- a/code/modules/cm_preds/yaut_weapons.dm +++ b/code/modules/cm_preds/yaut_weapons.dm @@ -427,6 +427,14 @@ /obj/item/weapon/yautja/combistick/IsShield() return on +/obj/item/weapon/yautja/combistick/verb/fold_combistick() + set category = "Weapons" + set name = "Collapse Combi-stick" + set desc = "Collapse or extend the combistick." + set src = usr.contents + + unique_action(usr) + /obj/item/weapon/yautja/combistick/attack_self(mob/user) ..() if(on) diff --git a/code/modules/cm_tech/techs/marine/tier3/cryo_spec.dm b/code/modules/cm_tech/techs/marine/tier3/cryo_spec.dm index 98736d105a83..d6c849e883af 100644 --- a/code/modules/cm_tech/techs/marine/tier3/cryo_spec.dm +++ b/code/modules/cm_tech/techs/marine/tier3/cryo_spec.dm @@ -21,4 +21,4 @@ /datum/tech/cryomarine/on_unlock() . = ..() - SSticker.mode.get_specific_call("Marine Cryo Reinforcement (Spec)", FALSE, FALSE, announce_dispatch_message = FALSE) + SSticker.mode.get_specific_call("Marine Cryo Reinforcement (Spec)", TRUE, FALSE, FALSE, announce_dispatch_message = FALSE) diff --git a/code/modules/cm_tech/techs/marine/tier3/cryorine.dm b/code/modules/cm_tech/techs/marine/tier3/cryorine.dm index 56542e0000a6..575ffe67b85b 100644 --- a/code/modules/cm_tech/techs/marine/tier3/cryorine.dm +++ b/code/modules/cm_tech/techs/marine/tier3/cryorine.dm @@ -23,4 +23,4 @@ /datum/tech/repeatable/cryomarine/on_unlock() . = ..() - SSticker.mode.get_specific_call("Marine Cryo Reinforcements (Tech)", FALSE, FALSE, announce_dispatch_message = FALSE) + SSticker.mode.get_specific_call("Marine Cryo Reinforcements (Tech)", TRUE, FALSE, FALSE, announce_dispatch_message = FALSE) diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index ecf76b577c1d..2e9142dcef91 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -358,7 +358,7 @@ log transactions //stamp the paper var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-cent" + stampoverlay.icon_state = "paper_stamp-weyyu" if(!R.stamped) R.stamped = new R.stamped += /obj/item/tool/stamp @@ -400,7 +400,7 @@ log transactions //stamp the paper var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-cent" + stampoverlay.icon_state = "paper_stamp-weyyu" if(!R.stamped) R.stamped = new R.stamped += /obj/item/tool/stamp diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm index fbaf1f52adea..a5b36fd0bf3e 100644 --- a/code/modules/economy/EFTPOS.dm +++ b/code/modules/economy/EFTPOS.dm @@ -47,12 +47,12 @@ //stamp the paper var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-cent" + stampoverlay.icon_state = "paper_stamp-rd" if(!R.stamped) R.stamped = new R.offset_x += 0 R.offset_y += 0 - R.ico += "paper_stamp-cent" + R.ico += "paper_stamp-rd" R.stamped += /obj/item/tool/stamp R.overlays += stampoverlay R.stamps += "
This paper has been stamped by the EFTPOS device." @@ -70,7 +70,7 @@ //stamp the paper var/image/stampoverlay = image('icons/obj/items/paper.dmi') - stampoverlay.icon_state = "paper_stamp-cent" + stampoverlay.icon_state = "paper_stamp-rd" if(!R.stamped) R.stamped = new R.stamped += /obj/item/tool/stamp diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index c626f9cd1ee1..c7b1d65c7da2 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -85,10 +85,10 @@ Gunshots/explosions/opening doors/less rare audio (done) halitem.icon_state = "flashbang1" halitem.name = "Flashbang" if(client) - client.screen += halitem + client.add_to_screen(halitem) spawn(rand(100,250)) if(client) - client.screen -= halitem + client.remove_from_screen(halitem) halitem = null if(26 to 40) //Flashes of danger diff --git a/code/modules/gear_presets/_select_equipment.dm b/code/modules/gear_presets/_select_equipment.dm index 4c3a4476d733..111ce38a6762 100644 --- a/code/modules/gear_presets/_select_equipment.dm +++ b/code/modules/gear_presets/_select_equipment.dm @@ -430,7 +430,6 @@ /obj/item/tool/hatchet = null, /obj/item/tool/hatchet = null, /obj/item/storage/box/MRE = null, - /obj/item/clothing/mask/gas/pmc = null, /obj/item/clothing/glasses/night/m42_night_goggles/upp = null, /obj/item/storage/box/handcuffs = null, /obj/item/storage/pill_bottle/happy = null, diff --git a/code/modules/gear_presets/clf.dm b/code/modules/gear_presets/clf.dm index 81abf8bce550..39a7b648b999 100644 --- a/code/modules/gear_presets/clf.dm +++ b/code/modules/gear_presets/clf.dm @@ -344,7 +344,7 @@ list("Medical Pouch (Splints)", 0, /obj/item/storage/pouch/medical/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch (Pills)", 0, /obj/item/storage/pouch/medical/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -820,7 +820,7 @@ list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, 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("MASK", 0, null, null, null), diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm index 9da7ba70ae5b..867669463569 100644 --- a/code/modules/gear_presets/cmb.dm +++ b/code/modules/gear_presets/cmb.dm @@ -344,6 +344,14 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/red, WEAR_IN_BACK) +/datum/equipment_preset/cmb/liaison/black_market + name = "CMB - ICC Liaison - Black Market ERT" + skills = /datum/skills/civilian/icc_investigation + +/datum/equipment_preset/cmb/liaison/black_market/load_gear(mob/living/carbon/human/new_human) + . = ..() + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full, WEAR_WAIST) //Tool belt to open ASRS + new_human.equip_to_slot_or_del(new /obj/item/device/cmb_black_market_tradeband, WEAR_IN_BACK) //Tradeband to disable black market //*****************************************************************************************************/ @@ -418,12 +426,6 @@ . = ..() new_human.nutrition = rand(NUTRITION_MAX, NUTRITION_NORMAL) -/datum/equipment_preset/uscm/cmb/load_rank(mob/living/carbon/human/new_human) - if(new_human.client) - if(get_job_playtime(new_human.client, rank) < JOB_PLAYTIME_TIER_1) - return "ME1" - return paygrade - /datum/equipment_preset/uscm/cmb/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster, WEAR_ACCESSORY) diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm index 62782b77eae5..f0ad6f85a8b4 100644 --- a/code/modules/gear_presets/corpses.dm +++ b/code/modules/gear_presets/corpses.dm @@ -213,33 +213,6 @@ //*****************************************************************************************************/ -/datum/equipment_preset/corpse/clown - name = "Corpse - Clown" - assignment = "Clown" - uses_special_name = TRUE - -/datum/equipment_preset/corpse/clown/New() - . = ..() - //As a joke, clown has all access so they can clown everywhere... - access = get_access(ACCESS_LIST_DELIVERY) - -/datum/equipment_preset/corpse/clown/load_name(mob/living/carbon/human/new_human, randomise) - . = ..() //To load gender, randomise appearance, etc. - new_human.change_real_name(new_human, pick(clown_names)) //Picking a proper clown name! - -/datum/equipment_preset/corpse/clown/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/toy/bikehorn(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/clown(new_human), WEAR_BACK) - if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) - add_ice_colony_survivor_equipment(new_human) - else - new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) - -//*****************************************************************************************************/ - /datum/equipment_preset/corpse/scientist name = "Corpse - Scientist" assignment = "Scientist" diff --git a/code/modules/gear_presets/fun.dm b/code/modules/gear_presets/fun.dm index 8eacbb8161d2..e3511722af36 100644 --- a/code/modules/gear_presets/fun.dm +++ b/code/modules/gear_presets/fun.dm @@ -185,7 +185,7 @@ new_human.equip_to_slot_or_del(M, WEAR_BODY) var/shoes_success = new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/specialist/hefa(new_human), WEAR_HEAD) + var/helmet_success = new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/specialist/hefa(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_L_STORE) var/jacket_success = new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/M3G/hefa(new_human), WEAR_JACKET) var/satchel_success = new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel(new_human), WEAR_BACK) @@ -232,6 +232,12 @@ for(var/i in 1 to W.hold.storage_slots) new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/frag(new_human.back), WEAR_IN_ACCESSORY) + // Helmet + if(helmet_success) + var/obj/item/clothing/head/helmet/marine/hefa_helmet = new_human.head + for(var/i in 1 to hefa_helmet.pockets.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/frag(new_human.head), WEAR_IN_HELMET) + /datum/equipment_preset/fun/santa name = "Fun - Santa" paygrade = "C" diff --git a/code/modules/gear_presets/other.dm b/code/modules/gear_presets/other.dm index b440fe4533b2..837af5ac6677 100644 --- a/code/modules/gear_presets/other.dm +++ b/code/modules/gear_presets/other.dm @@ -216,7 +216,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/freelancer, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/freelancer, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/freelancer/beret, WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) if(new_human.disabilities & NEARSIGHTED) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) diff --git a/code/modules/gear_presets/pmc.dm b/code/modules/gear_presets/pmc.dm index fcfb61a7d810..1e8baa9182cf 100644 --- a/code/modules/gear_presets/pmc.dm +++ b/code/modules/gear_presets/pmc.dm @@ -412,7 +412,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -590,7 +590,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1564,7 +1564,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1968,7 +1968,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Bicaridine)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/bicaridine, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Kelotane)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/kelotane, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pressurized Reagent Canister Pouch (Revival Mix)", 0, /obj/item/storage/pouch/pressurized_reagent_canister/revival, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), diff --git a/code/modules/gear_presets/survivors.dm b/code/modules/gear_presets/survivors.dm deleted file mode 100644 index 919e67e7cbf9..000000000000 --- a/code/modules/gear_presets/survivors.dm +++ /dev/null @@ -1,1741 +0,0 @@ -/datum/equipment_preset/survivor - name = JOB_SURVIVOR - assignment = JOB_SURVIVOR - rank = JOB_SURVIVOR - - skills = /datum/skills/civilian/survivor - languages = list(LANGUAGE_ENGLISH) - paygrade = "C" - idtype = /obj/item/card/id/lanyard - faction = FACTION_SURVIVOR - faction_group = list(FACTION_SURVIVOR) - origin_override = ORIGIN_CIVILIAN - - access = list(ACCESS_CIVILIAN_PUBLIC) - - minimap_icon = "surv" - minimap_background = MINIMAP_ICON_BACKGROUND_CIVILIAN - - var/survivor_variant = CIVILIAN_SURVIVOR - -/datum/equipment_preset/survivor/load_name(mob/living/carbon/human/new_human, randomise) - new_human.gender = pick(MALE, FEMALE) - var/datum/preferences/A = new - A.randomize_appearance(new_human) - var/random_name = capitalize(pick(new_human.gender == MALE ? first_names_male : first_names_female)) + " " + capitalize(pick(last_names)) - new_human.change_real_name(new_human, random_name) - new_human.age = rand(21,45) - -/datum/equipment_preset/survivor/load_gear(mob/living/carbon/human/new_human) // Essentially where you will put the most essential piece of kit you want survivors to spawn with. - add_random_survivor_equipment(new_human) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/med_small_stack(new_human), WEAR_IN_BACK) - add_survivor_weapon_pistol(new_human) - -/datum/equipment_preset/survivor/load_id(mob/living/carbon/human/new_human, client/mob_client) - var/obj/item/clothing/under/uniform = new_human.w_uniform - if(istype(uniform)) - uniform.has_sensor = UNIFORM_HAS_SENSORS - uniform.sensor_faction = FACTION_COLONIST - return ..() - - -// ----- Scientist Survivor - -/datum/equipment_preset/survivor/scientist - name = "Survivor - Scientist" - assignment = "Scientist" - skills = /datum/skills/civilian/survivor/scientist - flags = EQUIPMENT_PRESET_START_OF_ROUND - idtype = /obj/item/card/id/silver/clearance_badge/scientist - access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_MEDBAY) - - survivor_variant = SCIENTIST_SURVIVOR - -/datum/equipment_preset/survivor/scientist/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(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/head/surgery/green(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/virologist(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/green(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/chem(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/green(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/good(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/beaker/vial/random/good(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/full(new_human), WEAR_R_STORE) - add_survivor_weapon_civilian(new_human) - add_random_survivor_research_gear(new_human) - - ..() - -/datum/equipment_preset/survivor/scientist/soro - name = "Survivor - Sorokyne Strata Researcher" - assignment = "Sorokyne Strata Researcher" - -/datum/equipment_preset/survivor/scientist/soro/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/regular(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/tox(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) - - ..() - -/datum/equipment_preset/survivor/scientist/shiva - name = "Survivor - Shivas Snowball Researcher" - assignment = "Shivas Snowball Researcher" - -/datum/equipment_preset/survivor/scientist/shiva/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/tox(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) - 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/head/ushanka(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/purple(new_human), WEAR_JACKET) - - ..() - -/datum/equipment_preset/survivor/scientist/corsat - name = "Survivor - CORSAT Researcher" - assignment = "CORSAT Researcher" - -/datum/equipment_preset/survivor/scientist/corsat/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/researcher(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/scientist/florina - name = "Survivor - Florina Researcher" - assignment = "Florina Researcher" - -/datum/equipment_preset/survivor/scientist/florina/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/purple(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/chem(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/scientist/lv - name = "Survivor - LV-624 Archeologist" - assignment = "LV-624 Archeologist" - -/datum/equipment_preset/survivor/scientist/lv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/researcher(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/scientist/nv - name = "Survivor - New Varadero Researcher" - assignment = "New Varadero Researcher" - -/datum/equipment_preset/survivor/scientist/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/chem(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/purple(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/scientist/solaris - name = "Survivor - Solaris Scientist" - assignment = "Solaris Scientist" - -/datum/equipment_preset/survivor/scientist/solaris/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/green(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/virologist(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/green(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/green(new_human), WEAR_FEET) - - ..() - -// ----- Doctor Survivor - -/datum/equipment_preset/survivor/doctor - name = "Survivor - Doctor" - assignment = "Doctor" - skills = /datum/skills/civilian/survivor/doctor - flags = EQUIPMENT_PRESET_START_OF_ROUND - idtype = /obj/item/card/id/silver/clearance_badge - access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_COMMAND) - - survivor_variant = MEDICAL_SURVIVOR - -/datum/equipment_preset/survivor/doctor/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(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/storage/backpack/satchel/med(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(new_human), WEAR_JACKET) - var/random_gear = rand(0,4) - switch(random_gear) - if(0) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_R_STORE) - if(1) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/full(new_human), WEAR_R_STORE) - if(2) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) - if(3) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/first_responder/full(new_human), WEAR_R_STORE) - if(4) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medkit/full_advanced(new_human), WEAR_R_STORE) - add_random_survivor_medical_gear(new_human) - add_survivor_weapon_civilian(new_human) - - - ..() - -/datum/equipment_preset/survivor/doctor/trijent - name = "Survivor - Trijent Doctor" - assignment = "Trijent Dam Doctor" - -/datum/equipment_preset/survivor/doctor/trijent/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/blue(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/doctor/soro - name = "Survivor - Sorokyne Strata Doctor" - assignment = "Sorokyne Strata Doctor" - -/datum/equipment_preset/survivor/doctor/soro/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/veteran/soviet_uniform_01(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/doctor/corsat - name = "Survivor - CORSAT Doctor" - assignment = "CORSAT Doctor" - -/datum/equipment_preset/survivor/doctor/corsat/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/green(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/green(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/doctor/florina - name = "Survivor - Florina Doctor" - assignment = "Florina Doctor" - -/datum/equipment_preset/survivor/doctor/florina/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/doctor/kutjevo - name = "Survivor - Kutjevo Doctor" - assignment = "Kutjevo Doctor" - -/datum/equipment_preset/survivor/doctor/kutjevo/load_gear(mob/living/carbon/human/new_human) - 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) - add_random_kutjevo_survivor_uniform(new_human) - add_random_kutjevo_survivor_equipment(new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(new_human), WEAR_HANDS) - - ..() - -/datum/equipment_preset/survivor/doctor/lv - name = "Survivor - LV-624 Emergency Medical Technician" - assignment = "LV-624 Emergency Medical Technician" - -/datum/equipment_preset/survivor/doctor/lv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human.back), WEAR_IN_BACK) - - ..() - -/datum/equipment_preset/survivor/doctor/nv - name = "Survivor - New Varadero Medical Technician" - assignment = "New Varadero Medical Technician" - -/datum/equipment_preset/survivor/doctor/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/doctor/solaris - name = "Survivor - Solaris Doctor" - assignment = "Solaris Doctor" - -/datum/equipment_preset/survivor/doctor/solaris/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/purple(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/doctor/shiva - name = "Survivor - Shivas Snowball Doctor" - assignment = "Shivas Snowball Doctor" - -/datum/equipment_preset/survivor/doctor/shiva/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/green(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/green(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) - - ..() - -// ----- CL Survivor - -/datum/equipment_preset/survivor/corporate - name = "Survivor - Corporate Liaison" - assignment = "Corporate Liaison" - skills = /datum/skills/civilian/survivor - flags = EQUIPMENT_PRESET_START_OF_ROUND - paygrade = "WYC2" - idtype = /obj/item/card/id/silver/clearance_badge/cl - access = list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_COMMAND, - ACCESS_WY_GENERAL, - ACCESS_WY_COLONIAL, - ACCESS_WY_EXEC, - ) - languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) - - survivor_variant = CORPORATE_SURVIVOR - -/datum/equipment_preset/survivor/corporate/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(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/armor/vest(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - add_random_cl_survivor_loot(new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/centcom(new_human), WEAR_FEET) - add_survivor_weapon_civilian(new_human) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/document(new_human), WEAR_R_STORE) - - ..() - -/datum/equipment_preset/survivor/corporate/load_rank(mob/living/carbon/human/new_human) - if(new_human.client) - var/playtime = get_job_playtime(new_human.client, JOB_CORPORATE_LIAISON) - if(new_human.client.prefs.playtime_perks) - if(playtime > JOB_PLAYTIME_TIER_4) - return "WYC5" - else if(playtime > JOB_PLAYTIME_TIER_3) - return "WYC4" - else if(playtime > JOB_PLAYTIME_TIER_2) - return "WYC3" - else - return paygrade - return paygrade - -/datum/equipment_preset/survivor/corporate/shiva - name = "Survivor - Shivas Snowball Corporate Liaison" - assignment = "Shivas Snowball Corporate Liaison" - -/datum/equipment_preset/survivor/corporate/shiva/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/navy(new_human), WEAR_JACKET) - - ..() - -/datum/equipment_preset/survivor/corporate/solaris - name = "Survivor - Solaris Ridge Corporate Liaison" - assignment = "Solaris Ridge Corporate Liaison" - -/datum/equipment_preset/survivor/corporate/solaris/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/outing/red(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - - ..() - -// ----- Security Survivor - -/datum/equipment_preset/survivor/security - name = "Survivor - Security" - assignment = "Security" - skills = /datum/skills/civilian/survivor/marshal - flags = EQUIPMENT_PRESET_START_OF_ROUND - idtype = /obj/item/card/id/data - access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_BRIG,ACCESS_CIVILIAN_COMMAND) - - survivor_variant = SECURITY_SURVIVOR - -/datum/equipment_preset/survivor/security/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(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/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(new_human), WEAR_HEAD) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) - 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/storage/pouch/magazine(new_human), WEAR_R_STORE) - add_survivor_weapon_security(new_human) - ..() - -/datum/equipment_preset/survivor/security/trijent - name = "Survivor - Trijent Security Guard" - assignment = "Trijent Dam Security Guard" - -/datum/equipment_preset/survivor/security/trijent/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security/navyblue(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/marine/mp/mpcap(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit/black(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/security/soro - name = "Survivor - Sorokyne Strata Security" - assignment = "Sorokyne Strata Security" - -/datum/equipment_preset/survivor/security/soro/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/veteran/soviet_uniform_01(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/soviet(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) - 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/head/ushanka(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) - - ..() - -/datum/equipment_preset/survivor/security/corsat - name = "Survivor - CORSAT Security Guard" - assignment = "Weyland-Yutani Security Guard" - languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) - -/datum/equipment_preset/survivor/security/corsat/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/formal/servicedress(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc(new_human), WEAR_HEAD) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/security/florina - name = "Survivor - Florina Prison Guard" - assignment = "Florina Prison Guard" - -/datum/equipment_preset/survivor/security/florina/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/security/kutjevo - name = "Survivor - Kutjevo Security Guard" - assignment = "Kutjevo Security Guard" - - -/datum/equipment_preset/survivor/security/kutjevo/load_gear(mob/living/carbon/human/new_human) - add_random_kutjevo_survivor_uniform(new_human) - add_random_kutjevo_survivor_equipment(new_human) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(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/clothing/shoes/jackboots(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/security/lv - name = "Survivor - LV-624 Security Guard" - assignment = "Weyland-Yutani Security Guard" - languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) - -/datum/equipment_preset/survivor/security/lv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/formal/servicedress(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/jungle(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/security/nv - name = "Survivor - New Varadero Security Guard" - assignment = "United Americas Peacekeeper" - languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) - -/datum/equipment_preset/survivor/security/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) - 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/clothing/head/helmet/marine/veteran/ua_riot(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/security/shiva - name = "Survivor - Shivas Snowball Security Guard" - assignment = "United Americas Peacekeeper" - -/datum/equipment_preset/survivor/security/shiva/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/ua_riot(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/security/solaris - name = "Survivor - Solaris United Americas Peacekeepers" - assignment = "United Americas Peacekeeper" - -/datum/equipment_preset/survivor/security/solaris/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/sec/hos(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) - - ..() - -// ----- Prisioner Survivors - -/datum/equipment_preset/survivor/prisoner - name = "Survivor - Prisoner" - assignment = "Prisoner" - skills = /datum/skills/civilian/survivor/prisoner - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - - survivor_variant = SECURITY_SURVIVOR - -/datum/equipment_preset/survivor/prisoner/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(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/storage/backpack/satchel(new_human), WEAR_BACK) - if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(new_human), WEAR_HEAD) - if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human.back), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium(new_human), WEAR_R_STORE) - add_survivor_weapon_civilian(new_human) - ..() - -/datum/equipment_preset/survivor/gangleader - name = "Survivor - Gang Leader" - assignment = "Gang Leader" - skills = /datum/skills/civilian/survivor/gangleader - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/gangleader/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(new_human), WEAR_BODY) - if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) - add_ice_colony_survivor_equipment(new_human) - if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(new_human), WEAR_HEAD) - if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human.back), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) - add_survivor_weapon_civilian(new_human) - ..() - -// ----- Civilian Survivor - -/datum/equipment_preset/survivor/civilian - name = "Survivor - Civilian" - assignment = "Civilian" - skills = /datum/skills/civilian/survivor - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/civilian/load_gear(mob/living/carbon/human/new_human) - var/random_gear = rand(0, 3) - switch(random_gear) - if(0) // Normal Colonist - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/norm(new_human), WEAR_BACK) - if(1) // Janitor - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/vir(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/purple(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/mgoggles(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/purple(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/galoshes(new_human), WEAR_FEET) - if(2) // Bar Tender - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/waiter(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/lawyer/bluejacket(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/bowlerhat(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/fake_mustache(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/black(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/beer_pack(new_human.back), WEAR_IN_BACK) - if(3) // Botanist - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/hyd(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/tool/hatchet(new_human.back), WEAR_IN_BACK) - 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/storage/backpack/satchel/norm(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general(new_human), WEAR_R_STORE) - add_survivor_weapon_civilian(new_human) - - ..() - -// ----- Chef Survivor - -/datum/equipment_preset/survivor/chef - name = "Survivor - Chef" - assignment = "Chef" - skills = /datum/skills/civilian/survivor/chef - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/chef/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist(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/storage/backpack/satchel/norm(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/tool/kitchen/rollingpin(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general(new_human), WEAR_R_STORE) - add_survivor_weapon_civilian(new_human) - - ..() - -// ----- Chaplain Survivor - -/datum/equipment_preset/survivor/chaplain - name = "Survivor - Chaplain" - assignment = "Chaplain" - skills = /datum/skills/civilian/survivor/chaplain - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/chaplain/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(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/storage/backpack/satchel/norm(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/holidaypriest(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/bible/booze(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general(new_human), WEAR_R_STORE) - add_survivor_weapon_civilian(new_human) - - ..() - -/datum/equipment_preset/survivor/chaplain/trijent - name = "Survivor - Trijent Chaplain" - assignment = "Trijent Chaplain" - -/datum/equipment_preset/survivor/chaplain/trijent/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/nun(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/nun_hood(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/holidaypriest(new_human), WEAR_JACKET) - - ..() - -/datum/equipment_preset/survivor/chaplain/kutjevo - name = "Survivor - Kutjevo Chaplain" - assignment = "Kutjevo Chaplain" - -/datum/equipment_preset/survivor/chaplain/kutjevo/load_gear(mob/living/carbon/human/new_human) - add_random_kutjevo_survivor_uniform(new_human) - add_random_kutjevo_survivor_equipment(new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(new_human), WEAR_HANDS) - - ..() - -/datum/equipment_preset/survivor/chaplain/lv - name = "Survivor - LV-624 Priest" - assignment = "LV-624 Priest" - -/datum/equipment_preset/survivor/chaplain/lv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/norm(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/priest_robe(new_human), WEAR_JACKET) - - ..() - -/datum/equipment_preset/survivor/chaplain/nv - name = "Survivor - New Varadero Priest" - assignment = "New Varadero Priest" - -/datum/equipment_preset/survivor/chaplain/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/norm(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/priest_robe(new_human), WEAR_JACKET) - - ..() - -/datum/equipment_preset/survivor/chaplain/solaris - name = "Survivor - Solaris Chaplain" - assignment = "Solaris Chaplain" - -/datum/equipment_preset/survivor/chaplain/solaris/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/holidaypriest(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/nun_hood(new_human), WEAR_HEAD) - - ..() - -// ----- Engineering Survivor - -/datum/equipment_preset/survivor/engineer - name = "Survivor - Engineer" - assignment = "Engineer" - skills = /datum/skills/civilian/survivor/engineer - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_ENGINEERING,ACCESS_CIVILIAN_LOGISTICS) - - survivor_variant = ENGINEERING_SURVIVOR - -/datum/equipment_preset/survivor/engineer/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(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/storage/backpack/satchel/eng(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/largetank(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/med_small_stack(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/insulated(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) - add_survivor_weapon_civilian(new_human) - - ..() - - -/datum/equipment_preset/survivor/engineer/trijent - name = "Survivor - Dam Maintenance Technician" - assignment = "Dam Maintenance Technician" - -/datum/equipment_preset/survivor/engineer/trijent/load_gear(mob/living/carbon/human/new_human) - 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/suit/storage/hazardvest(new_human), WEAR_JACKET) - 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/orange(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) - - ..() - - -/datum/equipment_preset/survivor/engineer/lv - name = "Survivor - LV-624 Engineer" - assignment = "LV-624 Engineer" - -/datum/equipment_preset/survivor/engineer/lv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/dispatch(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) - 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/shoes/jackboots(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/orange(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/engineer/nv - name = "Survivor - New Varadero Technician" - assignment = "New Varadero Engineer" - -/datum/equipment_preset/survivor/engineer/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/dispatch(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) - 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/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/orange(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/engineer/shiva - name = "Survivor - Shivas Snowball Engineer" - assignment = "Shivas Snowball Engineer" - -/datum/equipment_preset/survivor/engineer/shiva/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/yellow(new_human), WEAR_JACKET) - 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/shoes/jackboots(new_human), WEAR_FEET) - 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/head/ushanka(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/engineer/soro - name = "Survivor - Sorokyne Strata Political Prisioner" - assignment = "Sorokyne Strata Political Prisioner" - -/datum/equipment_preset/survivor/engineer/soro/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/soviet(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) - - ..() - -/datum/equipment_preset/survivor/engineer/trijent/hydro - name = "Survivor - Hydro Electric Engineer" - assignment = "Hydro Electric Engineer" - -/datum/equipment_preset/survivor/engineer/trijent/hydro/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) - 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/shoes/jackboots(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/engineer/corsat - name = "Survivor - Corsat Station Engineer" - assignment = "Corsat Station Engineer" - -/datum/equipment_preset/survivor/engineer/corsat/load_gear(mob/living/carbon/human/new_human) - 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/storage/backpack/satchel/eng(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/marine/techofficer(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/engineer/florina - name = "Survivor - Florina Engineer" - assignment = "Florina Engineer" - -/datum/equipment_preset/survivor/engineer/florina/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/white(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/storage/backpack/satchel/eng(new_human), WEAR_BACK) - 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/head/hardhat/orange(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/engineer/kutjevo - name = "Survivor - Kutjevo Engineer" - assignment = "Kutjevo Engineer" - -/datum/equipment_preset/survivor/engineer/kutjevo/load_gear(mob/living/carbon/human/new_human) - add_random_kutjevo_survivor_uniform(new_human) - add_random_kutjevo_survivor_equipment(new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(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) - - ..() - -/datum/equipment_preset/survivor/engineer/solaris - name = "Survivor - Solaris Engineer" - assignment = "Solaris Engineer" - -/datum/equipment_preset/survivor/engineer/solaris/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/yellow(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding/superior(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/eng(new_human), WEAR_BACK) - - ..() - -// ----- Miner Survivor - -/datum/equipment_preset/survivor/miner - name = "Survivor - Miner" - assignment = "Miner" - skills = /datum/skills/civilian/survivor/miner - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS) - -/datum/equipment_preset/survivor/miner/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(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/storage/backpack/satchel/norm(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/tool/pickaxe(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/lantern(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/orange(new_human), WEAR_HEAD) - add_survivor_weapon_civilian(new_human) - - ..() - -// --- Salesman Survivor - -/datum/equipment_preset/survivor/salesman - name = "Survivor - Salesman" - assignment = "Salesman" - skills = /datum/skills/civilian/survivor - flags = EQUIPMENT_PRESET_START_OF_ROUND - idtype = /obj/item/card/id/data - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/salesman/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit(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/wcoat(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/document(new_human), WEAR_R_STORE) - add_random_cl_survivor_loot(new_human) - add_survivor_weapon_civilian(new_human) - ..() - -// ---- Trucker Survivor - -/datum/equipment_preset/survivor/trucker - name = "Survivor - Trucker" - assignment = "Trucker" - skills = /datum/skills/civilian/survivor/trucker - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_ENGINEERING,ACCESS_CIVILIAN_LOGISTICS) - - survivor_variant = ENGINEERING_SURVIVOR - -/datum/equipment_preset/survivor/trucker/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(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/head/soft/yellow(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - 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/device/flashlight/lantern(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/hardpoint/locomotion/van_wheels(new_human), WEAR_R_HAND) - add_survivor_weapon_civilian(new_human) - - ..() - -/datum/equipment_preset/survivor/trucker/lv - name = "Survivor - LV-624 Cargo Technician" - assignment = "LV-624 Cargo Technician" - -/datum/equipment_preset/survivor/trucker/lv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/yellow(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - - ..() - -/datum/equipment_preset/survivor/trucker/nv - name = "Survivor - New Varadero Vehicle Operator" - assignment = "New Varadero Vehicle Operator" - -/datum/equipment_preset/survivor/trucker/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - - ..() -/datum/equipment_preset/survivor/trucker/kutjevo - name = "Survivor - Kutjevo Heavy Vehicle Operator" - assignment = "Kutjevo Heavy Vehicle Operator" - -/datum/equipment_preset/survivor/trucker/kutjevo/load_gear(mob/living/carbon/human/new_human) - add_random_kutjevo_survivor_uniform(new_human) - add_random_kutjevo_survivor_equipment(new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(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(new_human), WEAR_BACK) - - ..() - -/datum/equipment_preset/survivor/trucker/solaris - name = "Survivor - Solaris Heavy Vehicle Operator" - assignment = "Solaris Heavy Vehicle Operator" - skills = /datum/skills/civilian/survivor/trucker - -/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/glasses/sunglasses/big(new_human), WEAR_EYES) - - ..() - -/datum/equipment_preset/survivor/trucker/trijent - name = "Survivor - Trijent Dam Heavy Vehicle Operator" - assignment = "Trijent Dam Heavy Vehicle Operator" - skills = /datum/skills/civilian/survivor/trucker - -/datum/equipment_preset/survivor/trucker/trijent/load_gear(mob/living/carbon/human/new_human) - 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/tool/weldingtool/hugetank(new_human), WEAR_IN_BACK) - - ..() - - -// ---- Colonial Marshal Survivor - -/datum/equipment_preset/survivor/colonial_marshal - name = "Survivor - Colonial Marshal Deputy" - assignment = "CMB Deputy" - paygrade = "GS-9" - skills = /datum/skills/civilian/survivor/marshal - flags = EQUIPMENT_PRESET_START_OF_ROUND - idtype = /obj/item/card/id/deputy - role_comm_title = "CMB DEP" - access = list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ) - - survivor_variant = SECURITY_SURVIVOR - -/datum/equipment_preset/survivor/colonial_marshal/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/CM_uniform(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) - - 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/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/CMB(new_human), WEAR_HEAD) - if(new_human.disabilities & NEARSIGHTED) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/prescription(new_human), WEAR_EYES) - else - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large(new_human), WEAR_R_STORE) - add_survivor_weapon_security(new_human) - - ..() - -/datum/equipment_preset/survivor/colonial_marshal/florina - name = "Survivor - United Americas Riot Officer" - assignment = "United Americas Riot Officer" - -/datum/equipment_preset/survivor/colonial_marshal/florina/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/ua_riot(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/ua_riot(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/riot_shield(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/colonial_marshal/lv - name = "Survivor - LV-624 Head of Security" - assignment = "LV-624 Head of Security" - -/datum/equipment_preset/survivor/colonial_marshal/lv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security/navyblue(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/sec/hos(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/colonial_marshal/solaris - name = "Survivor - Solaris Colonial Marshal Deputy" - assignment = "CMB Deputy" - - -/datum/equipment_preset/survivor/colonial_marshal/solaris/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/CM_uniform(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/CMB(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - - ..() - -/datum/equipment_preset/survivor/colonial_marshal/kutjevo - name = "Survivor - Kutjevo Colonial Marshal Deputy" - assignment = "CMB Deputy" - -/datum/equipment_preset/survivor/colonial_marshal/kutjevo/load_gear(mob/living/carbon/human/new_human) - add_random_kutjevo_survivor_uniform(new_human) - add_random_kutjevo_survivor_equipment(new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) - - ..() - -/datum/equipment_preset/survivor/colonial_marshal/shiva - name = "Survivor - Shivas Colonial Marshal Deputy" - assignment = "CMB Deputy" - -/datum/equipment_preset/survivor/colonial_marshal/shiva/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/corp(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/red(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - - ..() - -// ----- CL Survivor - -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason - name = "Survivor - Interstellar Commerce Commission Liaison" - assignment = "Interstellar Commerce Commission Corporate Liaison" - skills = /datum/skills/civilian/survivor - idtype = /obj/item/card/id/silver/cl - paygrade = "WYC2" - role_comm_title = "ICC Rep." - flags = EQUIPMENT_PRESET_START_OF_ROUND - - survivor_variant = CORPORATE_SURVIVOR - -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/New() - . = ..() - access = get_access(ACCESS_LIST_CIVIL_LIAISON) - -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) - - 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/hazardvest(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/centcom(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/insulated(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/document(new_human), WEAR_R_STORE) - add_survivor_weapon_civilian(new_human) - add_random_cl_survivor_loot(new_human) - - ..() - -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/corsat - name = "Survivor - Interstellar Commerce Commission Liaison CORSAT" - assignment = "Interstellar Commerce Commission Corporate Liaison" - -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/corsat/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human), WEAR_JACKET) - - ..() - -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/nv - name = "Survivor - Interstellar Commerce Commission Liaison New Varadero" - assignment = "Interstellar Commerce Commission Corporate Liaison" - -/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/nv/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/black(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/clipboard, WEAR_L_HAND) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses, WEAR_EYES) - - - - ..() - -// ----- Roughneck Survivor - -/datum/equipment_preset/survivor/roughneck - name = "Survivor - Roughneck" - assignment = "Roughneck" - skills = /datum/skills/civilian/survivor/pmc - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/roughneck/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/white(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/apron/overalls(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/centcom(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large(new_human), WEAR_R_STORE) - add_pmc_survivor_weapon(new_human) - - ..() - -// ----- Bum Survivor - -/datum/equipment_preset/survivor/beachbum - name = "Survivor - Beach Bum" - assignment = "Beach Bum" - skills = /datum/skills/civilian/survivor/prisoner - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/beachbum/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/shorts/red(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/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette(new_human), WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/beer_pack(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/tool/kitchen/knife/butcher(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/fancy/cigarettes/wypacket(new_human.back), WEAR_IN_BACK) - add_survivor_weapon_civilian(new_human) - - ..() - - -// ----- Interstellar Human Rights Survivor - -/datum/equipment_preset/survivor/interstellar_human_rights_observer - name = "Survivor - Interstellar Human Rights Observer" - assignment = "Interstellar Human Rights Observer(Colony)" - skills = /datum/skills/civilian/survivor - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_COMMAND) - -/datum/equipment_preset/survivor/interstellar_human_rights_observer/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/suspenders(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/armor/vest(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - add_random_cl_survivor_loot(new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) - add_survivor_weapon_civilian(new_human) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/document(new_human), WEAR_R_STORE) - - ..() - -/datum/equipment_preset/survivor/interstellar_human_rights_observer/soro - name = "Survivor - Sorokyne Interstellar Human Rights Observer" - assignment = "Interstellar Human Rights Observer(Sorokyne)" - - -/datum/equipment_preset/survivor/interstellar_human_rights_observer/soro/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) - - ..() - -// ----- WY Survivors - -/datum/equipment_preset/survivor/goon - name = "Survivor - Corporate Security Goon" - flags = EQUIPMENT_PRESET_START_OF_ROUND - assignment = JOB_WY_GOON - paygrade = "WEY-GOON" - idtype = /obj/item/card/id/silver/cl - skills = /datum/skills/civilian/survivor/goon - languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) - access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_COMMAND, ACCESS_CIVILIAN_BRIG) - - survivor_variant = SECURITY_SURVIVOR - -/datum/equipment_preset/survivor/goon/load_gear(mob/living/carbon/human/new_human) - 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/under/marine/veteran/pmc/corporate, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/pmc/light/corporate, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc/corporate, WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/corporate, WEAR_FEET) - - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/weapon/baton, 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/stack/sheet/metal/large_stack(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88_near_empty, WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) - - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/corporate/no_lock, WEAR_J_STORE) - - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(new_human), WEAR_L_STORE) - -/datum/equipment_preset/survivor/pmc - name = "Survivor - PMC" - flags = EQUIPMENT_PRESET_START_OF_ROUND - assignment = "Weyland-Yutani PMC" - faction = FACTION_SURVIVOR - faction_group = list(FACTION_SURVIVOR) - paygrade = "PMC-OP" - idtype = /obj/item/card/id/pmc - skills = /datum/skills/civilian/survivor/pmc - languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) - access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_COMMAND) - -/datum/equipment_preset/survivor/pmc/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/pmc/hvh, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/pmc, WEAR_BODY) - add_pmc_survivor_weapon(new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/pmc, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc, WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf, WEAR_FACE) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) - - ..() - -/datum/equipment_preset/survivor/pmc/medic - name = "Survivor - PMC Medic" - assignment = JOB_PMC_MEDIC - rank = JOB_PMC_MEDIC - paygrade = "PMC-MS" - skills = /datum/skills/civilian/survivor/pmc/medic - -/datum/equipment_preset/survivor/pmc/medic/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human), WEAR_IN_BACK) - 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) - new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_R_HAND) - - ..() - -/datum/equipment_preset/survivor/pmc/engineer - name = "Survivor - PMC Engineer" - assignment = JOB_PMC_ENGINEER - rank = JOB_PMC_ENGINEER - paygrade = "PMC-TECH" - skills = /datum/skills/civilian/survivor/pmc/engineer - -/datum/equipment_preset/survivor/pmc/engineer/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding/superior, WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/med_small_stack(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_R_HAND) - - ..() - -/datum/equipment_preset/survivor/wy/manager - name = "Survivor - Corporate Supervisor" - flags = EQUIPMENT_PRESET_EXTRA - paygrade = "WYC7" - skills = /datum/skills/civilian/survivor/manager - assignment = "Colony Supervisor" - role_comm_title = "Supervisor" - 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_LEADERSHIP, - ACCESS_WY_SECURITY, - ACCESS_WY_EXEC, - ACCESS_WY_RESEARCH, - ACCESS_WY_ENGINEERING, - ACCESS_WY_MEDICAL, - ACCESS_ILLEGAL_PIRATE, - ) - languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) - - survivor_variant = CORPORATE_SURVIVOR - -/datum/equipment_preset/survivor/wy/manager/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) - 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/storage/backpack/satchel/lockable/liaison, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/manager(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/shoes/dress, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/manager(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/good(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/beaker/vial/random/good(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) - add_pmc_survivor_weapon(new_human) - add_random_cl_survivor_loot(new_human) - - ..() - -// ----- Mercenary Survivors - -/datum/equipment_preset/survivor/pmc/miner/one - name = "Survivor - Mercenary" - flags = EQUIPMENT_PRESET_START_OF_ROUND - - assignment = "Mercenary" - skills = /datum/skills/civilian/survivor/pmc - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/pmc/miner/one/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/mercenary/miner, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/mercenary/miner, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/mercenary/miner, WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) - add_pmc_survivor_weapon(new_human) - - ..() - -/datum/equipment_preset/survivor/pmc/freelancer - name = "Survivor - Freelancer" - assignment = "Freelancer" - skills = /datum/skills/civilian/survivor/pmc - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC) - -/datum/equipment_preset/survivor/pmc/freelancer/load_gear(mob/living/carbon/human/new_human) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/freelancer, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/freelancer, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) - spawn_merc_helmet(new_human) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/dutch, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) - add_pmc_survivor_weapon(new_human) - - ..() - -// ----- Hostile Survivors - -/datum/equipment_preset/survivor/clf - name = "CLF Survivor" - flags = EQUIPMENT_PRESET_EXTRA - skills = /datum/skills/civilian/survivor/clf - languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) - faction = FACTION_CLF - faction_group = list(FACTION_CLF, FACTION_SURVIVOR) - access = list(ACCESS_CIVILIAN_PUBLIC) - survivor_variant = HOSTILE_SURVIVOR - -/datum/equipment_preset/survivor/clf/load_gear(mob/living/carbon/human/new_human) - - spawn_rebel_uniform(new_human) - spawn_rebel_suit(new_human) - spawn_rebel_helmet(new_human) - spawn_rebel_shoes(new_human) - spawn_rebel_gloves(new_human) - spawn_rebel_belt(new_human) - - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/flashlight(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) - add_survivor_weapon_security(new_human) - add_survivor_weapon_pistol(new_human) - - ..() - -/datum/equipment_preset/survivor/clf/cold - -/datum/equipment_preset/survivor/clf/cold/spawn_rebel_suit(mob/living/carbon/human/human) - if(!istype(human)) - return - var/suitpath = pick( - /obj/item/clothing/suit/storage/militia, - /obj/item/clothing/suit/storage/militia/vest, - /obj/item/clothing/suit/storage/militia/brace, - /obj/item/clothing/suit/storage/militia/partial, - ) - human.equip_to_slot_or_del(new suitpath, WEAR_JACKET) - -/datum/equipment_preset/survivor/clf/cold/spawn_rebel_helmet(mob/living/carbon/human/human) - if(!istype(human)) - return - var/helmetpath = pick( - /obj/item/clothing/head/militia, - /obj/item/clothing/head/militia/bucket, - /obj/item/clothing/head/helmet, - /obj/item/clothing/head/helmet/skullcap, - /obj/item/clothing/head/helmet/swat, - ) - human.equip_to_slot_or_del(new helmetpath, WEAR_HEAD) - -/datum/equipment_preset/survivor/clf/cold/spawn_rebel_shoes(mob/living/carbon/human/human) - if(!istype(human)) - return - var/shoespath = /obj/item/clothing/shoes/combat - human.equip_to_slot_or_del(new shoespath, WEAR_FEET) - -/datum/equipment_preset/survivor/new_varadero/commander - name = "Survivor - USASF Commander" - assignment = "USASF Commander" - skills = /datum/skills/commander - paygrade = "NO5" - idtype = /obj/item/card/id/gold - role_comm_title = "USASF CDR" - flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ) - -/datum/equipment_preset/survivor/new_varadero/commander/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) - - var/obj/item/clothing/suit/storage/jacket/marine/service/suit = new() - suit.icon_state = "[suit.initial_icon_state]_o" - suit.buttoned = FALSE - - var/obj/item/clothing/accessory/ranks/navy/o5/pin = new() - suit.attach_accessory(new_human, pin) - - new_human.equip_to_slot_or_del(suit, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/notepad(new_human), WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/pen/fountain(new_human), WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/med_small_stack(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/m1911(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap(new_human), WEAR_HEAD) - - ..() - -/datum/equipment_preset/survivor/upp - name = "Survivor - UPP" - paygrade = "UE1" - origin_override = ORIGIN_UPP - rank = JOB_SURVIVOR - skills = /datum/skills/military/survivor/upp_private - languages = list(LANGUAGE_RUSSIAN, LANGUAGE_GERMAN, LANGUAGE_CHINESE) - faction = FACTION_UPP - faction_group = list(FACTION_UPP, FACTION_SURVIVOR) - role_comm_title = "UPP 173RD RECON" - idtype = /obj/item/card/id/dogtag - flags = EQUIPMENT_PRESET_EXTRA - uses_special_name = TRUE - access = list( - ACCESS_CIVILIAN_PUBLIC, - ) - -/datum/equipment_preset/survivor/upp/load_name(mob/living/carbon/human/new_human, randomise) - var/random_name = capitalize(pick(new_human.gender == MALE ? first_names_male_upp : first_names_female_upp)) + " " + capitalize(pick(last_names_upp)) - new_human.change_real_name(new_human, random_name) - -/datum/equipment_preset/survivor/upp/load_gear(mob/living/carbon/human/new_human) - var/obj/item/clothing/under/marine/veteran/UPP/uniform = new() - var/random_number = rand(1,2) - switch(random_number) - if(1) - uniform.roll_suit_jacket(new_human) - if(2) - uniform.roll_suit_sleeves(new_human) - new_human.equip_to_slot_or_del(uniform, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp (new_human), WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp_knife(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare(new_human), WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/med_small_stack(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/recon(new_human), WEAR_L_EAR) - -/datum/equipment_preset/survivor/upp/soldier - name = "Survivor - UPP Soldier" - paygrade = "UE2" - assignment = JOB_UPP - rank = JOB_UPP - skills = /datum/skills/military/survivor/upp_private - -/datum/equipment_preset/survivor/upp/soldier/load_gear(mob/living/carbon/human/new_human) - var/obj/item/clothing/under/marine/veteran/UPP/uniform = new() - var/random_number = rand(1,2) - switch(random_number) - if(1) - uniform.roll_suit_jacket(new_human) - if(2) - uniform.roll_suit_sleeves(new_human) - new_human.equip_to_slot_or_del(uniform, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) - add_upp_weapon(new_human) - spawn_random_upp_headgear(new_human) - spawn_random_upp_armor(new_human) - spawn_random_upp_belt(new_human) - - ..() - -/datum/equipment_preset/survivor/upp/sapper - name = "Survivor - UPP Sapper" - paygrade = "UE3S" - assignment = JOB_UPP_ENGI - rank = JOB_UPP_ENGI - skills = /datum/skills/military/survivor/upp_sapper - -/datum/equipment_preset/survivor/upp/sapper/load_gear(mob/living/carbon/human/new_human) - - var/obj/item/clothing/under/marine/veteran/UPP/engi/uniform = new() - var/R = rand(1,2) - switch(R) - if(1) - uniform.roll_suit_jacket(new_human) - if(2) - uniform.roll_suit_sleeves(new_human) - new_human.equip_to_slot_or_del(uniform, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/insulated(new_human), WEAR_HANDS) - 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 /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) - spawn_random_upp_armor(new_human) - add_upp_weapon(new_human) - spawn_random_upp_headgear(new_human) - - ..() - -/datum/equipment_preset/survivor/upp/medic - name = "Survivor - UPP Medic" - paygrade = "UE3M" - assignment = JOB_UPP_MEDIC - rank = JOB_UPP_MEDIC - skills = /datum/skills/military/survivor/upp_medic - -/datum/equipment_preset/survivor/upp/medic/load_gear(mob/living/carbon/human/new_human) - var/obj/item/clothing/under/marine/veteran/UPP/medic/uniform = new() - var/random_number = rand(1,2) - switch(random_number) - if(1) - uniform.roll_suit_jacket(new_human) - if(2) - uniform.roll_suit_sleeves(new_human) - new_human.equip_to_slot_or_del(uniform, WEAR_BODY) - new_human.equip_to_slot_or_del(new/obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/partial(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/medic/upp(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher/mini(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(new_human), WEAR_IN_BACK) - spawn_random_upp_armor(new_human) - add_upp_weapon(new_human) - spawn_random_upp_headgear(new_human) - - ..() - -/datum/equipment_preset/survivor/upp/specialist - name = "Survivor - UPP Specialist" - assignment = JOB_UPP_SPECIALIST - rank = JOB_UPP_SPECIALIST - paygrade = "UE4" - skills = /datum/skills/military/survivor/upp_spec - -/datum/equipment_preset/survivor/upp/specialist/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/heavy(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP (new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/heavy (new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer(new_human), WEAR_L_HAND) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73(new_human), WEAR_WAIST) - - ..() - -/datum/equipment_preset/survivor/upp/squad_leader - name = "Survivor - UPP Squad Leader" - paygrade = "UE5" - assignment = JOB_UPP_LEADER - rank = JOB_UPP_LEADER - languages = list(LANGUAGE_RUSSIAN, LANGUAGE_ENGLISH, LANGUAGE_GERMAN, LANGUAGE_CHINESE) - role_comm_title = "UPP 173Rd RECON SL" - skills = /datum/skills/military/survivor/upp_sl - -/datum/equipment_preset/survivor/upp/squad_leader/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/officer (new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP (new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver(new_human), WEAR_WAIST) - add_upp_weapon(new_human) - - ..() diff --git a/code/modules/gear_presets/survivors/corsat/preset_corsat.dm b/code/modules/gear_presets/survivors/corsat/preset_corsat.dm new file mode 100644 index 000000000000..f71439b9d7ac --- /dev/null +++ b/code/modules/gear_presets/survivors/corsat/preset_corsat.dm @@ -0,0 +1,58 @@ +/datum/equipment_preset/survivor/security/corsat + name = "Survivor - CORSAT Security Guard" + assignment = "Weyland-Yutani Security Guard" + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + +/datum/equipment_preset/survivor/security/corsat/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/formal/servicedress(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc(new_human), WEAR_HEAD) + if(new_human.disabilities & NEARSIGHTED) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/prescription(new_human), WEAR_EYES) + else + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/doctor/corsat + name = "Survivor - CORSAT Doctor" + assignment = "CORSAT Doctor" + +/datum/equipment_preset/survivor/doctor/corsat/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/green(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/green(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/scientist/corsat + name = "Survivor - CORSAT Researcher" + assignment = "CORSAT Researcher" + +/datum/equipment_preset/survivor/scientist/corsat/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/researcher(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/corsat + name = "Survivor - Interstellar Commerce Commission Liaison CORSAT" + assignment = "Interstellar Commerce Commission Corporate Liaison" + +/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/corsat/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human), WEAR_JACKET) + ..() + +/datum/equipment_preset/survivor/engineer/corsat + name = "Survivor - Corsat Station Engineer" + assignment = "Corsat Station Engineer" + +/datum/equipment_preset/survivor/engineer/corsat/load_gear(mob/living/carbon/human/new_human) + 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/storage/backpack/satchel/eng(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/marine/techofficer(new_human), WEAR_HEAD) + ..() diff --git a/code/modules/gear_presets/survivors/fiorina_sciannex/preset_fiorina_sciannex.dm b/code/modules/gear_presets/survivors/fiorina_sciannex/preset_fiorina_sciannex.dm new file mode 100644 index 000000000000..f0d812026491 --- /dev/null +++ b/code/modules/gear_presets/survivors/fiorina_sciannex/preset_fiorina_sciannex.dm @@ -0,0 +1,65 @@ + +/datum/equipment_preset/survivor/scientist/florina + name = "Survivor - Florina Researcher" + assignment = "Florina Researcher" + +/datum/equipment_preset/survivor/scientist/florina/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/purple(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/science(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/chem(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) + ..() + + +/datum/equipment_preset/survivor/doctor/florina + name = "Survivor - Florina Doctor" + assignment = "Florina Doctor" + +/datum/equipment_preset/survivor/doctor/florina/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/security/florina + name = "Survivor - Florina Prison Guard" + assignment = "Florina Prison Guard" + +/datum/equipment_preset/survivor/security/florina/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/colonial_marshal/florina + name = "Survivor - United Americas Riot Officer" + assignment = "United Americas Riot Officer" + +/datum/equipment_preset/survivor/colonial_marshal/florina/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/ua_riot(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/ua_riot(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/riot_shield(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) + + ..() + +/datum/equipment_preset/survivor/engineer/florina + name = "Survivor - Florina Engineer" + assignment = "Florina Engineer" + +/datum/equipment_preset/survivor/engineer/florina/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/white(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/storage/backpack/satchel/eng(new_human), WEAR_BACK) + 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/head/hardhat/orange(new_human), WEAR_HEAD) + ..() diff --git a/code/modules/gear_presets/survivors/kutjevo/preset_kutjevo.dm b/code/modules/gear_presets/survivors/kutjevo/preset_kutjevo.dm new file mode 100644 index 000000000000..8a9161f1802a --- /dev/null +++ b/code/modules/gear_presets/survivors/kutjevo/preset_kutjevo.dm @@ -0,0 +1,76 @@ +/datum/equipment_preset/survivor/engineer/kutjevo + name = "Survivor - Kutjevo Engineer" + assignment = "Kutjevo Engineer" + +/datum/equipment_preset/survivor/engineer/kutjevo/load_gear(mob/living/carbon/human/new_human) + add_random_kutjevo_survivor_uniform(new_human) + add_random_kutjevo_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(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) + ..() + +/datum/equipment_preset/survivor/chaplain/kutjevo + name = "Survivor - Kutjevo Chaplain" + assignment = "Kutjevo Chaplain" + +/datum/equipment_preset/survivor/chaplain/kutjevo/load_gear(mob/living/carbon/human/new_human) + add_random_kutjevo_survivor_uniform(new_human) + add_random_kutjevo_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(new_human), WEAR_HANDS) + + ..() + +/datum/equipment_preset/survivor/security/kutjevo + name = "Survivor - Kutjevo Security Guard" + assignment = "Kutjevo Security Guard" + + +/datum/equipment_preset/survivor/security/kutjevo/load_gear(mob/living/carbon/human/new_human) + add_random_kutjevo_survivor_uniform(new_human) + add_random_kutjevo_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(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/clothing/shoes/jackboots(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/doctor/kutjevo + name = "Survivor - Kutjevo Doctor" + assignment = "Kutjevo Doctor" + +/datum/equipment_preset/survivor/doctor/kutjevo/load_gear(mob/living/carbon/human/new_human) + 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) + add_random_kutjevo_survivor_uniform(new_human) + add_random_kutjevo_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(new_human), WEAR_HANDS) + ..() + +/datum/equipment_preset/survivor/colonial_marshal/kutjevo + name = "Survivor - Kutjevo Colonial Marshal Deputy" + assignment = "CMB Deputy" + +/datum/equipment_preset/survivor/colonial_marshal/kutjevo/load_gear(mob/living/carbon/human/new_human) + add_random_kutjevo_survivor_uniform(new_human) + add_random_kutjevo_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) + ..() + +/datum/equipment_preset/survivor/trucker/kutjevo + name = "Survivor - Kutjevo Heavy Vehicle Operator" + assignment = "Kutjevo Heavy Vehicle Operator" + +/datum/equipment_preset/survivor/trucker/kutjevo/load_gear(mob/living/carbon/human/new_human) + add_random_kutjevo_survivor_uniform(new_human) + add_random_kutjevo_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(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(new_human), WEAR_BACK) + + ..() diff --git a/code/modules/gear_presets/forcon_survivors.dm b/code/modules/gear_presets/survivors/lv_522/forcon_survivors.dm similarity index 100% rename from code/modules/gear_presets/forcon_survivors.dm rename to code/modules/gear_presets/survivors/lv_522/forcon_survivors.dm diff --git a/code/modules/gear_presets/survivors/lv_624/clfship_insert_lv624.dm b/code/modules/gear_presets/survivors/lv_624/clfship_insert_lv624.dm new file mode 100644 index 000000000000..1bfeaaad9c43 --- /dev/null +++ b/code/modules/gear_presets/survivors/lv_624/clfship_insert_lv624.dm @@ -0,0 +1,30 @@ +// /obj/effect/landmark/survivor_spawner/lv624_crashed_clf +// clfship.dmm +/datum/equipment_preset/survivor/clf + name = "CLF Survivor" + flags = EQUIPMENT_PRESET_EXTRA + skills = /datum/skills/civilian/survivor/clf + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + faction = FACTION_CLF + faction_group = list(FACTION_CLF, FACTION_SURVIVOR) + access = list(ACCESS_CIVILIAN_PUBLIC) + survivor_variant = HOSTILE_SURVIVOR + +/datum/equipment_preset/survivor/clf/load_gear(mob/living/carbon/human/new_human) + + spawn_rebel_uniform(new_human) + spawn_rebel_suit(new_human) + spawn_rebel_helmet(new_human) + spawn_rebel_shoes(new_human) + spawn_rebel_gloves(new_human) + spawn_rebel_belt(new_human) + + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) + add_survivor_weapon_security(new_human) + add_survivor_weapon_pistol(new_human) + + ..() diff --git a/code/modules/gear_presets/survivors/lv_624/preset_lv.dm b/code/modules/gear_presets/survivors/lv_624/preset_lv.dm new file mode 100644 index 000000000000..a2e55b899c9b --- /dev/null +++ b/code/modules/gear_presets/survivors/lv_624/preset_lv.dm @@ -0,0 +1,83 @@ +/datum/equipment_preset/survivor/scientist/lv + name = "Survivor - LV-624 Archeologist" + assignment = "LV-624 Archeologist" + +/datum/equipment_preset/survivor/scientist/lv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/researcher(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/colonial_marshal/lv + name = "Survivor - LV-624 Head of Security" + assignment = "LV-624 Head of Security" + +/datum/equipment_preset/survivor/colonial_marshal/lv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security/navyblue(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/sec/hos(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/trucker/lv + name = "Survivor - LV-624 Cargo Technician" + assignment = "LV-624 Cargo Technician" + +/datum/equipment_preset/survivor/trucker/lv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/yellow(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + ..() + +/datum/equipment_preset/survivor/engineer/lv + name = "Survivor - LV-624 Engineer" + assignment = "LV-624 Engineer" + +/datum/equipment_preset/survivor/engineer/lv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/dispatch(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) + 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/shoes/jackboots(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/orange(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/chaplain/lv + name = "Survivor - LV-624 Priest" + assignment = "LV-624 Priest" + +/datum/equipment_preset/survivor/chaplain/lv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/norm(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/priest_robe(new_human), WEAR_JACKET) + ..() + +/datum/equipment_preset/survivor/doctor/lv + name = "Survivor - LV-624 Emergency Medical Technician" + assignment = "LV-624 Emergency Medical Technician" + +/datum/equipment_preset/survivor/doctor/lv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human.back), WEAR_IN_BACK) + ..() + +/datum/equipment_preset/survivor/security/lv + name = "Survivor - LV-624 Security Guard" + assignment = "Weyland-Yutani Security Guard" + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + +/datum/equipment_preset/survivor/security/lv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/formal/servicedress(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/jungle(new_human), WEAR_FEET) + ..() + diff --git a/code/modules/gear_presets/survivors/misc.dm b/code/modules/gear_presets/survivors/misc.dm new file mode 100644 index 000000000000..3beba6a31b06 --- /dev/null +++ b/code/modules/gear_presets/survivors/misc.dm @@ -0,0 +1,344 @@ + + +/* +everything bellow isn't used or out of place. + +*/ + + +// ----- Prisioner Survivors +// after double check prisoner isn't being used anywhere. +/datum/equipment_preset/survivor/prisoner + name = "Survivor - Prisoner" + assignment = "Prisoner" + skills = /datum/skills/civilian/survivor/prisoner + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + + survivor_variant = SECURITY_SURVIVOR + +/datum/equipment_preset/survivor/prisoner/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(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/storage/backpack/satchel(new_human), WEAR_BACK) + if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(new_human), WEAR_HEAD) + if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human.back), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium(new_human), WEAR_R_STORE) + add_survivor_weapon_civilian(new_human) + ..() + +// after double check gangleader isn't being used anywhere. +/datum/equipment_preset/survivor/gangleader + name = "Survivor - Gang Leader" + assignment = "Gang Leader" + skills = /datum/skills/civilian/survivor/gangleader + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/gangleader/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/orange(new_human), WEAR_BODY) + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + add_ice_colony_survivor_equipment(new_human) + if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(new_human), WEAR_HEAD) + if(prob(50)) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human.back), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/orange(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) + add_survivor_weapon_civilian(new_human) + ..() + +// ----- Civilian Survivor + +// after double check civilian isn't being used anywhere. +/datum/equipment_preset/survivor/civilian + name = "Survivor - Civilian" + assignment = "Civilian" + skills = /datum/skills/civilian/survivor + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/civilian/load_gear(mob/living/carbon/human/new_human) + var/random_gear = rand(0, 3) + switch(random_gear) + if(0) // Normal Colonist + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/norm(new_human), WEAR_BACK) + if(1) // Janitor + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/vir(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/purple(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/mgoggles(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/purple(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/galoshes(new_human), WEAR_FEET) + if(2) // Bar Tender + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/waiter(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/lawyer/bluejacket(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/bowlerhat(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/fake_mustache(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/black(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/beer_pack(new_human.back), WEAR_IN_BACK) + if(3) // Botanist + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/hyd(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/tool/hatchet(new_human.back), WEAR_IN_BACK) + 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/storage/backpack/satchel/norm(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general(new_human), WEAR_R_STORE) + add_survivor_weapon_civilian(new_human) + + ..() + +// --- Salesman Survivor + +// after double check salesman isn't being used anywhere. +/datum/equipment_preset/survivor/salesman + name = "Survivor - Salesman" + assignment = "Salesman" + skills = /datum/skills/civilian/survivor + flags = EQUIPMENT_PRESET_START_OF_ROUND + idtype = /obj/item/card/id/data + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/salesman/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit(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/wcoat(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/document(new_human), WEAR_R_STORE) + add_random_cl_survivor_loot(new_human) + add_survivor_weapon_civilian(new_human) + ..() + + +// ----- Roughneck Survivor + +// after double check roughneck isn't being used anywhere. +/datum/equipment_preset/survivor/roughneck + name = "Survivor - Roughneck" + assignment = "Roughneck" + skills = /datum/skills/civilian/survivor/pmc + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/roughneck/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/color/white(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/apron/overalls(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/centcom(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large(new_human), WEAR_R_STORE) + add_pmc_survivor_weapon(new_human) + + ..() + +// ----- Bum Survivor + +// after double check beachbum isn't being used anywhere. +/datum/equipment_preset/survivor/beachbum + name = "Survivor - Beach Bum" + assignment = "Beach Bum" + skills = /datum/skills/civilian/survivor/prisoner + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/beachbum/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/shorts/red(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/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/beer_pack(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/kitchen/knife/butcher(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/fancy/cigarettes/wypacket(new_human.back), WEAR_IN_BACK) + add_survivor_weapon_civilian(new_human) + + ..() + +// ----- WY Survivors + +// after double check goon isn't being used anywhere. +/datum/equipment_preset/survivor/goon + name = "Survivor - Corporate Security Goon" + flags = EQUIPMENT_PRESET_START_OF_ROUND + assignment = JOB_WY_GOON + paygrade = "WEY-GOON" + idtype = /obj/item/card/id/silver/cl + skills = /datum/skills/civilian/survivor/goon + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_COMMAND, ACCESS_CIVILIAN_BRIG) + + survivor_variant = SECURITY_SURVIVOR + +/datum/equipment_preset/survivor/goon/load_gear(mob/living/carbon/human/new_human) + 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/under/marine/veteran/pmc/corporate, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/pmc/light/corporate, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc/corporate, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/corporate, WEAR_FEET) + + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/weapon/baton, 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/stack/sheet/metal/large_stack(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88_near_empty, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_R_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/corporate/no_lock, WEAR_J_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(new_human), WEAR_L_STORE) + + +// ----- Mercenary Survivors + +// after double check pmc/miner/one isn't being used anywhere. +/datum/equipment_preset/survivor/pmc/miner/one + name = "Survivor - Mercenary" + flags = EQUIPMENT_PRESET_START_OF_ROUND + + assignment = "Mercenary" + skills = /datum/skills/civilian/survivor/pmc + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/pmc/miner/one/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/mercenary/miner, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/mercenary/miner, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/mercenary/miner, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) + add_pmc_survivor_weapon(new_human) + + ..() + +// after double check pmc/freelancer isn't being used anywhere. +/datum/equipment_preset/survivor/pmc/freelancer + name = "Survivor - Freelancer" + assignment = "Freelancer" + skills = /datum/skills/civilian/survivor/pmc + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/pmc/freelancer/load_gear(mob/living/carbon/human/new_human) + + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/freelancer, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/freelancer, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) + spawn_merc_helmet(new_human) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/dutch, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) + add_pmc_survivor_weapon(new_human) + + ..() + +// after double check /new_varadero/commander isn't being used anywhere. +/datum/equipment_preset/survivor/new_varadero/commander + name = "Survivor - USASF Commander" + assignment = "USASF Commander" + skills = /datum/skills/commander + paygrade = "NO5" + idtype = /obj/item/card/id/gold + role_comm_title = "USASF CDR" + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list( + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ACCESS_CIVILIAN_BRIG, + ACCESS_CIVILIAN_MEDBAY, + ACCESS_CIVILIAN_COMMAND, + ) + +/datum/equipment_preset/survivor/new_varadero/commander/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) + + var/obj/item/clothing/suit/storage/jacket/marine/service/suit = new() + suit.icon_state = "[suit.initial_icon_state]_o" + suit.buttoned = FALSE + + var/obj/item/clothing/accessory/ranks/navy/o5/pin = new() + suit.attach_accessory(new_human, pin) + + new_human.equip_to_slot_or_del(suit, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/notepad(new_human), WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/pen/fountain(new_human), WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/med_small_stack(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/m1911(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap(new_human), WEAR_HEAD) + + ..() + +// ----- Hostile Survivors + +/* + +datum/equipment_preset/survivor/clf/cold is never used +and as a three proc attach to it that are defacto never used eitheir. + +handled proc in datum/equipment_preset/survivor/clf/cold: +spawn_rebel_suit +spawn_rebel_helmet +spawn_rebel_shoes + +*/ + +/datum/equipment_preset/survivor/clf/cold + +//children of spawn rebel shoes proc +/datum/equipment_preset/survivor/clf/cold/spawn_rebel_suit(mob/living/carbon/human/human) + if(!istype(human)) + return + var/suitpath = pick( + /obj/item/clothing/suit/storage/militia, + /obj/item/clothing/suit/storage/militia/vest, + /obj/item/clothing/suit/storage/militia/brace, + /obj/item/clothing/suit/storage/militia/partial, + ) + human.equip_to_slot_or_del(new suitpath, WEAR_JACKET) + +//children of spawn rebel helmet proc +/datum/equipment_preset/survivor/clf/cold/spawn_rebel_helmet(mob/living/carbon/human/human) + if(!istype(human)) + return + var/helmetpath = pick( + /obj/item/clothing/head/militia, + /obj/item/clothing/head/militia/bucket, + /obj/item/clothing/head/helmet, + /obj/item/clothing/head/helmet/skullcap, + /obj/item/clothing/head/helmet/swat, + ) + human.equip_to_slot_or_del(new helmetpath, WEAR_HEAD) + +//children of spawn rebel shoes proc +/datum/equipment_preset/survivor/clf/cold/spawn_rebel_shoes(mob/living/carbon/human/human) + if(!istype(human)) + return + var/shoespath = /obj/item/clothing/shoes/combat + human.equip_to_slot_or_del(new shoespath, WEAR_FEET) diff --git a/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm b/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm new file mode 100644 index 000000000000..f9af043aac62 --- /dev/null +++ b/code/modules/gear_presets/survivors/new_varadero/preset_new_varadero.dm @@ -0,0 +1,86 @@ +/datum/equipment_preset/survivor/security/nv + name = "Survivor - New Varadero Security Guard" + assignment = "United Americas Peacekeeper" + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + +/datum/equipment_preset/survivor/security/nv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) + 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/clothing/head/helmet/marine/veteran/ua_riot(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/doctor/nv + name = "Survivor - New Varadero Medical Technician" + assignment = "New Varadero Medical Technician" + +/datum/equipment_preset/survivor/doctor/nv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/scientist/nv + name = "Survivor - New Varadero Researcher" + assignment = "New Varadero Researcher" + +/datum/equipment_preset/survivor/scientist/nv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/chem(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/purple(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/nv + name = "Survivor - Interstellar Commerce Commission Liaison New Varadero" + assignment = "Interstellar Commerce Commission Corporate Liaison" + +/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/nv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest/black(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/clipboard, WEAR_L_HAND) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses, WEAR_EYES) + ..() + +/datum/equipment_preset/survivor/trucker/nv + name = "Survivor - New Varadero Vehicle Operator" + assignment = "New Varadero Vehicle Operator" + +/datum/equipment_preset/survivor/trucker/nv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + ..() + +/datum/equipment_preset/survivor/engineer/nv + name = "Survivor - New Varadero Technician" + assignment = "New Varadero Engineer" + +/datum/equipment_preset/survivor/engineer/nv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/dispatch(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) + 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/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/orange(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/chaplain/nv + name = "Survivor - New Varadero Priest" + assignment = "New Varadero Priest" + +/datum/equipment_preset/survivor/chaplain/nv/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/boonie(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/norm(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/priest_robe(new_human), WEAR_JACKET) + ..() diff --git a/code/modules/gear_presets/survivors/shivas_snowball/preset_shivas_snowball.dm b/code/modules/gear_presets/survivors/shivas_snowball/preset_shivas_snowball.dm new file mode 100644 index 000000000000..c1dce212d0c4 --- /dev/null +++ b/code/modules/gear_presets/survivors/shivas_snowball/preset_shivas_snowball.dm @@ -0,0 +1,82 @@ +/datum/equipment_preset/survivor/corporate/shiva + name = "Survivor - Shivas Snowball Corporate Liaison" + assignment = "Shivas Snowball Corporate Liaison" + +/datum/equipment_preset/survivor/corporate/shiva/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/navy(new_human), WEAR_JACKET) + ..() + +/datum/equipment_preset/survivor/doctor/shiva + name = "Survivor - Shivas Snowball Doctor" + assignment = "Shivas Snowball Doctor" + +/datum/equipment_preset/survivor/doctor/shiva/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/green(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/green(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) + ..() + +/datum/equipment_preset/survivor/scientist/shiva + name = "Survivor - Shivas Snowball Researcher" + assignment = "Shivas Snowball Researcher" + +/datum/equipment_preset/survivor/scientist/shiva/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/tox(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) + 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/head/ushanka(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/purple(new_human), WEAR_JACKET) + ..() + +/datum/equipment_preset/survivor/colonial_marshal/shiva + name = "Survivor - Shivas Colonial Marshal Deputy" + assignment = "CMB Deputy" + +/datum/equipment_preset/survivor/colonial_marshal/shiva/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security/corp(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/red(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/engineer/shiva + name = "Survivor - Shivas Snowball Engineer" + assignment = "Shivas Snowball Engineer" + +/datum/equipment_preset/survivor/engineer/shiva/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor/parka/yellow(new_human), WEAR_JACKET) + 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/shoes/jackboots(new_human), WEAR_FEET) + 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/head/ushanka(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/security/shiva + name = "Survivor - Shivas Snowball Security Guard" + assignment = "United Americas Peacekeeper" + +/datum/equipment_preset/survivor/security/shiva/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/ua_riot(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() diff --git a/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm b/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm new file mode 100644 index 000000000000..c5c85a0a7441 --- /dev/null +++ b/code/modules/gear_presets/survivors/solaris/crashlanding-offices_insert_bigred.dm @@ -0,0 +1,158 @@ +//those preset are only used on this insert. +// /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc + +/datum/equipment_preset/survivor/pmc + name = "Survivor - PMC" + flags = EQUIPMENT_PRESET_START_OF_ROUND + assignment = "Weyland-Yutani PMC" + faction = FACTION_SURVIVOR + faction_group = list(FACTION_SURVIVOR) + paygrade = "PMC-OP" + idtype = /obj/item/card/id/pmc + skills = /datum/skills/civilian/survivor/pmc + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_COMMAND) + +/datum/equipment_preset/survivor/pmc/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/pmc/hvh, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/pmc, WEAR_BODY) + add_pmc_survivor_weapon(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/pmc, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) + + ..() +// /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc_medic + +/datum/equipment_preset/survivor/pmc/medic + name = "Survivor - PMC Medic" + assignment = JOB_PMC_MEDIC + rank = JOB_PMC_MEDIC + paygrade = "PMC-MS" + skills = /datum/skills/civilian/survivor/pmc/medic + +/datum/equipment_preset/survivor/pmc/medic/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human), WEAR_IN_BACK) + 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) + new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_R_HAND) + + ..() +// /obj/effect/landmark/survivor_spawner/bigred_crashed_pmc_engineer + +/datum/equipment_preset/survivor/pmc/engineer + name = "Survivor - PMC Engineer" + assignment = JOB_PMC_ENGINEER + rank = JOB_PMC_ENGINEER + paygrade = "PMC-TECH" + skills = /datum/skills/civilian/survivor/pmc/engineer + +/datum/equipment_preset/survivor/pmc/engineer/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding/superior, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/med_small_stack(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_R_HAND) + + ..() + +// /obj/effect/landmark/survivor_spawner/bigred_crashed_cl + +/datum/equipment_preset/survivor/wy/manager + name = "Survivor - Corporate Supervisor" + flags = EQUIPMENT_PRESET_EXTRA + paygrade = "WYC7" + skills = /datum/skills/civilian/survivor/manager + assignment = "Colony Supervisor" + role_comm_title = "Supervisor" + 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_LEADERSHIP, + ACCESS_WY_SECURITY, + ACCESS_WY_EXEC, + ACCESS_WY_RESEARCH, + ACCESS_WY_ENGINEERING, + ACCESS_WY_MEDICAL, + ACCESS_ILLEGAL_PIRATE, + ) + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + + survivor_variant = CORPORATE_SURVIVOR + +/datum/equipment_preset/survivor/wy/manager/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) + 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/storage/backpack/satchel/lockable/liaison, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/manager(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/shoes/dress, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/manager(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/good(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/beaker/vial/random/good(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) + add_pmc_survivor_weapon(new_human) + add_random_cl_survivor_loot(new_human) + + ..() +// only used on the spawner of all of those above... +/datum/equipment_preset/synth/survivor/pmc + name = "Survivor - Synthetic - PMC Support Synth" + faction = FACTION_SURVIVOR + faction_group = list(FACTION_SURVIVOR) + access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_COMMAND) + idtype = /obj/item/card/id/pmc + assignment = JOB_PMC_SYNTH + rank = JOB_PMC_SYNTH + role_comm_title = "WY Syn" + +/datum/equipment_preset/synth/survivor/pmc/load_race(mob/living/carbon/human/new_human) + new_human.set_species(SYNTH_GEN_THREE) + +/datum/equipment_preset/synth/survivor/pmc/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/pmc, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/surg_vest/equipped, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth, WEAR_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/ammo_magazine/smg/nailgun, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/nailgun, WEAR_IN_JACKET) + + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/pmc/command/hvh, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/experimental_mesons, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc, WEAR_FACE) + + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) + + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/smartpack/white, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/roller/surgical, 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/device/defibrillator/upgraded, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/crew_monitor, WEAR_IN_BACK) + + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full/dutch, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/nailgun/compact, WEAR_J_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver/tactical, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/wirecutters/tactical, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/wrench, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/stack/cable_coil, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/stack/cable_coil, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/multitool, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/hugetank, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction/full_barbed_wire, WEAR_R_STORE) diff --git a/code/modules/gear_presets/survivors/solaris/preset_solaris.dm b/code/modules/gear_presets/survivors/solaris/preset_solaris.dm new file mode 100644 index 000000000000..c71641a82ac1 --- /dev/null +++ b/code/modules/gear_presets/survivors/solaris/preset_solaris.dm @@ -0,0 +1,94 @@ +/datum/equipment_preset/survivor/trucker/solaris + name = "Survivor - Solaris Heavy Vehicle Operator" + assignment = "Solaris Heavy Vehicle Operator" + skills = /datum/skills/civilian/survivor/trucker + +/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/glasses/sunglasses/big(new_human), WEAR_EYES) + ..() + +/datum/equipment_preset/survivor/colonial_marshal/solaris + name = "Survivor - Solaris Colonial Marshal Deputy" + assignment = "CMB Deputy" + + +/datum/equipment_preset/survivor/colonial_marshal/solaris/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/CM_uniform(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/CMB(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/engineer/solaris + name = "Survivor - Solaris Engineer" + assignment = "Solaris Engineer" + +/datum/equipment_preset/survivor/engineer/solaris/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/soft/yellow(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding/superior(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/eng(new_human), WEAR_BACK) + ..() + +/datum/equipment_preset/survivor/scientist/solaris + name = "Survivor - Solaris Scientist" + assignment = "Solaris Scientist" + +/datum/equipment_preset/survivor/scientist/solaris/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/green(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/virologist(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/green(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/green(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/doctor/solaris + name = "Survivor - Solaris Doctor" + assignment = "Solaris Doctor" + +/datum/equipment_preset/survivor/doctor/solaris/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/purple(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/purple(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/chaplain/solaris + name = "Survivor - Solaris Chaplain" + assignment = "Solaris Chaplain" + +/datum/equipment_preset/survivor/chaplain/solaris/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/holidaypriest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/nun_hood(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/security/solaris + name = "Survivor - Solaris United Americas Peacekeepers" + assignment = "United Americas Peacekeeper" + +/datum/equipment_preset/survivor/security/solaris/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/ua_riot(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/sec/hos(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/corporate/solaris + name = "Survivor - Solaris Ridge Corporate Liaison" + assignment = "Solaris Ridge Corporate Liaison" + +/datum/equipment_preset/survivor/corporate/solaris/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/outing/red(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) + if(new_human.disabilities & NEARSIGHTED) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/prescription(new_human), WEAR_EYES) + else + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + ..() diff --git a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm new file mode 100644 index 000000000000..532b422a13a9 --- /dev/null +++ b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm @@ -0,0 +1,60 @@ +/datum/equipment_preset/survivor/engineer/soro + name = "Survivor - Sorokyne Strata Political Prisioner" + assignment = "Sorokyne Strata Political Prisioner" + +/datum/equipment_preset/survivor/engineer/soro/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/soviet(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf(new_human), WEAR_FACE) + ..() + +/datum/equipment_preset/survivor/security/soro + name = "Survivor - Sorokyne Strata Security" + assignment = "Sorokyne Strata Security" + +/datum/equipment_preset/survivor/security/soro/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/veteran/soviet_uniform_01(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/soviet(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(new_human), WEAR_FEET) + 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/head/ushanka(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + ..() + +/datum/equipment_preset/survivor/doctor/soro + name = "Survivor - Sorokyne Strata Doctor" + assignment = "Sorokyne Strata Doctor" + +/datum/equipment_preset/survivor/doctor/soro/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/veteran/soviet_uniform_01(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/scientist/soro + name = "Survivor - Sorokyne Strata Researcher" + assignment = "Sorokyne Strata Researcher" + +/datum/equipment_preset/survivor/scientist/soro/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/regular(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/tox(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) + ..() + +/datum/equipment_preset/survivor/interstellar_human_rights_observer/soro + name = "Survivor - Sorokyne Interstellar Human Rights Observer" + assignment = "Interstellar Human Rights Observer(Sorokyne)" + + +/datum/equipment_preset/survivor/interstellar_human_rights_observer/soro/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/snow_suit/survivor(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(new_human), WEAR_HEAD) + ..() diff --git a/code/modules/gear_presets/survivors/survivors.dm b/code/modules/gear_presets/survivors/survivors.dm new file mode 100644 index 000000000000..6d7036635b1c --- /dev/null +++ b/code/modules/gear_presets/survivors/survivors.dm @@ -0,0 +1,439 @@ +/datum/equipment_preset/survivor + name = JOB_SURVIVOR + assignment = JOB_SURVIVOR + rank = JOB_SURVIVOR + + skills = /datum/skills/civilian/survivor + languages = list(LANGUAGE_ENGLISH) + paygrade = "C" + idtype = /obj/item/card/id/lanyard + faction = FACTION_SURVIVOR + faction_group = list(FACTION_SURVIVOR) + origin_override = ORIGIN_CIVILIAN + + access = list(ACCESS_CIVILIAN_PUBLIC) + + minimap_icon = "surv" + minimap_background = MINIMAP_ICON_BACKGROUND_CIVILIAN + + var/survivor_variant = CIVILIAN_SURVIVOR + +/datum/equipment_preset/survivor/load_name(mob/living/carbon/human/new_human, randomise) + new_human.gender = pick(MALE, FEMALE) + var/datum/preferences/A = new + A.randomize_appearance(new_human) + var/random_name = capitalize(pick(new_human.gender == MALE ? first_names_male : first_names_female)) + " " + capitalize(pick(last_names)) + new_human.change_real_name(new_human, random_name) + new_human.age = rand(21,45) + +/datum/equipment_preset/survivor/load_gear(mob/living/carbon/human/new_human) // Essentially where you will put the most essential piece of kit you want survivors to spawn with. + add_random_survivor_equipment(new_human) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/med_small_stack(new_human), WEAR_IN_BACK) + add_survivor_weapon_pistol(new_human) + +/datum/equipment_preset/survivor/load_id(mob/living/carbon/human/new_human, client/mob_client) + var/obj/item/clothing/under/uniform = new_human.w_uniform + if(istype(uniform)) + uniform.has_sensor = UNIFORM_HAS_SENSORS + uniform.sensor_faction = FACTION_COLONIST + return ..() + +/* +From map_config.dm + +Standart Survivors : /datum/equipment_preset/survivor/scientist, + /datum/equipment_preset/survivor/doctor, + /datum/equipment_preset/survivor/chef, + /datum/equipment_preset/survivor/chaplain, + /datum/equipment_preset/survivor/miner, + /datum/equipment_preset/survivor/colonial_marshal, + /datum/equipment_preset/survivor/engineer, + +*/ + + +// 1 ----- Scientist Survivor + +/datum/equipment_preset/survivor/scientist + name = "Survivor - Scientist" + assignment = "Scientist" + skills = /datum/skills/civilian/survivor/scientist + flags = EQUIPMENT_PRESET_START_OF_ROUND + idtype = /obj/item/card/id/silver/clearance_badge/scientist + access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_MEDBAY) + + survivor_variant = SCIENTIST_SURVIVOR + +/datum/equipment_preset/survivor/scientist/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(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/head/surgery/green(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat/virologist(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/green(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/science(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/chem(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/green(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/paper/research_notes/good(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/beaker/vial/random/good(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/full(new_human), WEAR_R_STORE) + add_survivor_weapon_civilian(new_human) + add_random_survivor_research_gear(new_human) + + ..() + +// 2 ----- Doctor Survivor + +/datum/equipment_preset/survivor/doctor + name = "Survivor - Doctor" + assignment = "Doctor" + skills = /datum/skills/civilian/survivor/doctor + flags = EQUIPMENT_PRESET_START_OF_ROUND + idtype = /obj/item/card/id/silver/clearance_badge + access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_COMMAND) + + survivor_variant = MEDICAL_SURVIVOR + +/datum/equipment_preset/survivor/doctor/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(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/storage/backpack/satchel/med(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/latex(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/labcoat(new_human), WEAR_JACKET) + var/random_gear = rand(0,4) + switch(random_gear) + if(0) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_R_STORE) + if(1) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/full(new_human), WEAR_R_STORE) + if(2) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) + if(3) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/first_responder/full(new_human), WEAR_R_STORE) + if(4) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medkit/full_advanced(new_human), WEAR_R_STORE) + add_random_survivor_medical_gear(new_human) + add_survivor_weapon_civilian(new_human) + + ..() + +// 3 ----- Chef Survivor + +/datum/equipment_preset/survivor/chef + name = "Survivor - Chef" + assignment = "Chef" + skills = /datum/skills/civilian/survivor/chef + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/chef/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist(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/storage/backpack/satchel/norm(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/tool/kitchen/rollingpin(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general(new_human), WEAR_R_STORE) + add_survivor_weapon_civilian(new_human) + + ..() + +// 4 ----- Chaplain Survivor + +/datum/equipment_preset/survivor/chaplain + name = "Survivor - Chaplain" + assignment = "Chaplain" + skills = /datum/skills/civilian/survivor/chaplain + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC) + +/datum/equipment_preset/survivor/chaplain/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(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/storage/backpack/satchel/norm(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/holidaypriest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/bible/booze(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general(new_human), WEAR_R_STORE) + add_survivor_weapon_civilian(new_human) + + ..() + +// 5 ----- Miner Survivor + +/datum/equipment_preset/survivor/miner + name = "Survivor - Miner" + assignment = "Miner" + skills = /datum/skills/civilian/survivor/miner + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS) + +/datum/equipment_preset/survivor/miner/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(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/storage/backpack/satchel/norm(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/tool/pickaxe(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/lantern(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/orange(new_human), WEAR_HEAD) + add_survivor_weapon_civilian(new_human) + + ..() + +// 6 ---- Colonial Marshal Survivor + +/datum/equipment_preset/survivor/colonial_marshal + name = "Survivor - Colonial Marshal Deputy" + assignment = "CMB Deputy" + paygrade = "GS-9" + skills = /datum/skills/civilian/survivor/marshal + flags = EQUIPMENT_PRESET_START_OF_ROUND + idtype = /obj/item/card/id/deputy + role_comm_title = "CMB DEP" + access = list( + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ACCESS_CIVILIAN_BRIG, + ACCESS_CIVILIAN_MEDBAY, + ACCESS_CIVILIAN_COMMAND, + ) + + survivor_variant = SECURITY_SURVIVOR + +/datum/equipment_preset/survivor/colonial_marshal/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/CM_uniform(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) + + 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/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/CMB(new_human), WEAR_HEAD) + if(new_human.disabilities & NEARSIGHTED) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/prescription(new_human), WEAR_EYES) + else + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/CMB(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large(new_human), WEAR_R_STORE) + add_survivor_weapon_security(new_human) + + ..() + +// 7 ----- Engineering Survivor + +/datum/equipment_preset/survivor/engineer + name = "Survivor - Engineer" + assignment = "Engineer" + skills = /datum/skills/civilian/survivor/engineer + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_ENGINEERING,ACCESS_CIVILIAN_LOGISTICS) + + survivor_variant = ENGINEERING_SURVIVOR + +/datum/equipment_preset/survivor/engineer/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(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/storage/backpack/satchel/eng(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/largetank(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/med_small_stack(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/insulated(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/utility/full(new_human), WEAR_WAIST) + add_survivor_weapon_civilian(new_human) + + ..() +/* +Everything bellow is a parent used as a base for one or multiple maps. +*/ + +// ----- Interstellar Human Rights Survivor + +// it's used as a base for soro map. +/datum/equipment_preset/survivor/interstellar_human_rights_observer + name = "Survivor - Interstellar Human Rights Observer" + assignment = "Interstellar Human Rights Observer(Colony)" + skills = /datum/skills/civilian/survivor + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_COMMAND) + +/datum/equipment_preset/survivor/interstellar_human_rights_observer/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/suspenders(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/armor/vest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + add_random_cl_survivor_loot(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine(new_human), WEAR_HEAD) + add_survivor_weapon_civilian(new_human) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/document(new_human), WEAR_R_STORE) + + ..() + + +// ----- CL Survivor +//used as a base for shiva and solaris spawn. + +/datum/equipment_preset/survivor/corporate + name = "Survivor - Corporate Liaison" + assignment = "Corporate Liaison" + skills = /datum/skills/civilian/survivor + flags = EQUIPMENT_PRESET_START_OF_ROUND + paygrade = "WYC2" + idtype = /obj/item/card/id/silver/clearance_badge/cl + access = list( + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_COMMAND, + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_EXEC, + ) + languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) + + survivor_variant = CORPORATE_SURVIVOR + +/datum/equipment_preset/survivor/corporate/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit/formal(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/armor/vest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/WY(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + add_random_cl_survivor_loot(new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/centcom(new_human), WEAR_FEET) + add_survivor_weapon_civilian(new_human) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/document(new_human), WEAR_R_STORE) + + ..() + +/datum/equipment_preset/survivor/corporate/load_rank(mob/living/carbon/human/new_human) + if(new_human.client) + var/playtime = get_job_playtime(new_human.client, JOB_CORPORATE_LIAISON) + if(new_human.client.prefs.playtime_perks) + if(playtime > JOB_PLAYTIME_TIER_4) + return "WYC5" + else if(playtime > JOB_PLAYTIME_TIER_3) + return "WYC4" + else if(playtime > JOB_PLAYTIME_TIER_2) + return "WYC3" + else + return paygrade + return paygrade + +// ----- Security Survivor +/* + +present in xenomorph.dm file + +var/list/survivor_types = list( + /datum/equipment_preset/survivor/scientist, + /datum/equipment_preset/survivor/doctor, + /datum/equipment_preset/survivor/security, + /datum/equipment_preset/survivor/engineer + ) + +and is used as a base for all of the maps. + +*/ + +/datum/equipment_preset/survivor/security + name = "Survivor - Security" + assignment = "Security" + skills = /datum/skills/civilian/survivor/marshal + flags = EQUIPMENT_PRESET_START_OF_ROUND + idtype = /obj/item/card/id/data + access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_BRIG,ACCESS_CIVILIAN_COMMAND) + + survivor_variant = SECURITY_SURVIVOR + +/datum/equipment_preset/survivor/security/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(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/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/security(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet(new_human), WEAR_HEAD) + if(new_human.disabilities & NEARSIGHTED) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud/prescription(new_human), WEAR_EYES) + else + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + 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/storage/pouch/magazine(new_human), WEAR_R_STORE) + add_survivor_weapon_security(new_human) + ..() + +// ---- Trucker Survivor + +// it's used as a base for kutjevo lv nv solaris and trijent maps. +/datum/equipment_preset/survivor/trucker + name = "Survivor - Trucker" + assignment = "Trucker" + skills = /datum/skills/civilian/survivor/trucker + flags = EQUIPMENT_PRESET_START_OF_ROUND + access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_CIVILIAN_ENGINEERING,ACCESS_CIVILIAN_LOGISTICS) + + survivor_variant = ENGINEERING_SURVIVOR + +/datum/equipment_preset/survivor/trucker/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(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/head/soft/yellow(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + 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/device/flashlight/lantern(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/hardpoint/locomotion/van_wheels(new_human), WEAR_R_HAND) + add_survivor_weapon_civilian(new_human) + + ..() + +// ----- CL Survivor + +//this is used as a base for corsat and nv +/datum/equipment_preset/survivor/interstellar_commerce_commission_liason + name = "Survivor - Interstellar Commerce Commission Liaison" + assignment = "Interstellar Commerce Commission Corporate Liaison" + skills = /datum/skills/civilian/survivor + idtype = /obj/item/card/id/silver/cl + paygrade = "WYC2" + role_comm_title = "ICC Rep." + flags = EQUIPMENT_PRESET_START_OF_ROUND + + survivor_variant = CORPORATE_SURVIVOR + +/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/New() + . = ..() + access = get_access(ACCESS_LIST_CIVIL_LIAISON) + +/datum/equipment_preset/survivor/interstellar_commerce_commission_liason/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/liaison_suit(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CMB/limited(new_human), WEAR_L_EAR) + + 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/hazardvest(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/centcom(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/insulated(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/document(new_human), WEAR_R_STORE) + add_survivor_weapon_civilian(new_human) + add_random_cl_survivor_loot(new_human) + + ..() diff --git a/code/modules/gear_presets/survivors/trijent/crashlanding_upp_bar_insert_trijent.dm b/code/modules/gear_presets/survivors/trijent/crashlanding_upp_bar_insert_trijent.dm new file mode 100644 index 000000000000..e8dc8482b769 --- /dev/null +++ b/code/modules/gear_presets/survivors/trijent/crashlanding_upp_bar_insert_trijent.dm @@ -0,0 +1,208 @@ +// as far as i understand this is only done for one insert +//crashlanding-upp-bar.dmm map. +/datum/equipment_preset/survivor/upp + name = "Survivor - UPP" + paygrade = "UE1" + origin_override = ORIGIN_UPP + rank = JOB_SURVIVOR + skills = /datum/skills/military/survivor/upp_private + languages = list(LANGUAGE_RUSSIAN, LANGUAGE_GERMAN, LANGUAGE_CHINESE) + faction = FACTION_UPP + faction_group = list(FACTION_UPP, FACTION_SURVIVOR) + role_comm_title = "UPP 173RD RECON" + idtype = /obj/item/card/id/dogtag + flags = EQUIPMENT_PRESET_EXTRA + uses_special_name = TRUE + access = list( + ACCESS_CIVILIAN_PUBLIC, + ) + +/datum/equipment_preset/survivor/upp/load_name(mob/living/carbon/human/new_human, randomise) + var/random_name = capitalize(pick(new_human.gender == MALE ? first_names_male_upp : first_names_female_upp)) + " " + capitalize(pick(last_names_upp)) + new_human.change_real_name(new_human, random_name) + +/datum/equipment_preset/survivor/upp/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/marine/veteran/UPP/uniform = new() + var/random_number = rand(1,2) + switch(random_number) + if(1) + uniform.roll_suit_jacket(new_human) + if(2) + uniform.roll_suit_sleeves(new_human) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp (new_human), WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp_knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flare(new_human), WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full/alternate(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/med_small_stack(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine(new_human), WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/recon(new_human), WEAR_L_EAR) + +// /obj/effect/landmark/survivor_spawner/upp/soldier +//crashlanding-upp-bar.dmm +/datum/equipment_preset/survivor/upp/soldier + name = "Survivor - UPP Soldier" + paygrade = "UE2" + assignment = JOB_UPP + rank = JOB_UPP + skills = /datum/skills/military/survivor/upp_private + +/datum/equipment_preset/survivor/upp/soldier/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/marine/veteran/UPP/uniform = new() + var/random_number = rand(1,2) + switch(random_number) + if(1) + uniform.roll_suit_jacket(new_human) + if(2) + uniform.roll_suit_sleeves(new_human) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) + add_upp_weapon(new_human) + spawn_random_upp_headgear(new_human) + spawn_random_upp_armor(new_human) + spawn_random_upp_belt(new_human) + + ..() +// /obj/effect/landmark/survivor_spawner/upp_sapper +//crashlanding-upp-bar.dmm +/datum/equipment_preset/survivor/upp/sapper + name = "Survivor - UPP Sapper" + paygrade = "UE3S" + assignment = JOB_UPP_ENGI + rank = JOB_UPP_ENGI + skills = /datum/skills/military/survivor/upp_sapper + +/datum/equipment_preset/survivor/upp/sapper/load_gear(mob/living/carbon/human/new_human) + + var/obj/item/clothing/under/marine/veteran/UPP/engi/uniform = new() + var/R = rand(1,2) + switch(R) + if(1) + uniform.roll_suit_jacket(new_human) + if(2) + uniform.roll_suit_sleeves(new_human) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/insulated(new_human), WEAR_HANDS) + 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 /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) + spawn_random_upp_armor(new_human) + add_upp_weapon(new_human) + spawn_random_upp_headgear(new_human) + + ..() +// /obj/effect/landmark/survivor_spawner/upp_medic +//crashlanding-upp-bar.dmm +/datum/equipment_preset/survivor/upp/medic + name = "Survivor - UPP Medic" + paygrade = "UE3M" + assignment = JOB_UPP_MEDIC + rank = JOB_UPP_MEDIC + skills = /datum/skills/military/survivor/upp_medic + +/datum/equipment_preset/survivor/upp/medic/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/marine/veteran/UPP/medic/uniform = new() + var/random_number = rand(1,2) + switch(random_number) + if(1) + uniform.roll_suit_jacket(new_human) + if(2) + uniform.roll_suit_sleeves(new_human) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new/obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/partial(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/medic/upp(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/radio(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher/mini(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(new_human), WEAR_IN_BACK) + spawn_random_upp_armor(new_human) + add_upp_weapon(new_human) + spawn_random_upp_headgear(new_human) + + ..() +// /obj/effect/landmark/survivor_spawner/upp_specialist +//crashlanding-upp-bar.dmm +/datum/equipment_preset/survivor/upp/specialist + name = "Survivor - UPP Specialist" + assignment = JOB_UPP_SPECIALIST + rank = JOB_UPP_SPECIALIST + paygrade = "UE4" + skills = /datum/skills/military/survivor/upp_spec + +/datum/equipment_preset/survivor/upp/specialist/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/UPP/heavy(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP (new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/heavy (new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer(new_human), WEAR_L_HAND) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73(new_human), WEAR_WAIST) + + ..() +//crashlanding-upp-bar.dmm +// /obj/effect/landmark/survivor_spawner/squad_leader +/datum/equipment_preset/survivor/upp/squad_leader + name = "Survivor - UPP Squad Leader" + paygrade = "UE5" + assignment = JOB_UPP_LEADER + rank = JOB_UPP_LEADER + languages = list(LANGUAGE_RUSSIAN, LANGUAGE_ENGLISH, LANGUAGE_GERMAN, LANGUAGE_CHINESE) + role_comm_title = "UPP 173Rd RECON SL" + skills = /datum/skills/military/survivor/upp_sl + +/datum/equipment_preset/survivor/upp/squad_leader/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/officer (new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP (new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver(new_human), WEAR_WAIST) + add_upp_weapon(new_human) + + ..() + +//it's used on all of the above in their spawner. +/datum/equipment_preset/synth/survivor/upp + name = "Survivor - Synthetic - UPP Synth" + flags = EQUIPMENT_PRESET_EXTRA + languages = ALL_SYNTH_LANGUAGES_UPP + assignment = JOB_UPP_COMBAT_SYNTH + rank = JOB_UPP_COMBAT_SYNTH + faction = FACTION_UPP + faction_group = list(FACTION_UPP, FACTION_SURVIVOR) + skills = /datum/skills/colonial_synthetic + paygrade = "SYN" + idtype = /obj/item/card/id/dogtag + role_comm_title = "173/RECON Syn" + +/datum/equipment_preset/synth/survivor/upp/load_gear(mob/living/carbon/human/new_human) + var/obj/item/clothing/under/marine/veteran/UPP/medic/uniform = new() + var/random_number = rand(1,2) + switch(random_number) + if(1) + uniform.roll_suit_jacket(new_human) + if(2) + uniform.roll_suit_sleeves(new_human) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver, WEAR_R_EAR) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/recon, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/multitool, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/radio, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/stack/cable_coil, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/small_stack, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/webbing, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/partial, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/uppsynth, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) diff --git a/code/modules/gear_presets/survivors/trijent/preset_trijent.dm b/code/modules/gear_presets/survivors/trijent/preset_trijent.dm new file mode 100644 index 000000000000..e74f3258db6d --- /dev/null +++ b/code/modules/gear_presets/survivors/trijent/preset_trijent.dm @@ -0,0 +1,67 @@ +/datum/equipment_preset/survivor/chaplain/trijent + name = "Survivor - Trijent Chaplain" + assignment = "Trijent Chaplain" + +/datum/equipment_preset/survivor/chaplain/trijent/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/nun(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/nun_hood(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/holidaypriest(new_human), WEAR_JACKET) + ..() + +/datum/equipment_preset/survivor/security/trijent + name = "Survivor - Trijent Security Guard" + assignment = "Trijent Dam Security Guard" + +/datum/equipment_preset/survivor/security/trijent/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security/navyblue(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/satchel/sec(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/marine/mp/mpcap(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit/black(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) + ..() + +/datum/equipment_preset/survivor/doctor/trijent + name = "Survivor - Trijent Doctor" + assignment = "Trijent Dam Doctor" + +/datum/equipment_preset/survivor/doctor/trijent/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/blue(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/trucker/trijent + name = "Survivor - Trijent Dam Heavy Vehicle Operator" + assignment = "Trijent Dam Heavy Vehicle Operator" + skills = /datum/skills/civilian/survivor/trucker + +/datum/equipment_preset/survivor/trucker/trijent/load_gear(mob/living/carbon/human/new_human) + 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/tool/weldingtool/hugetank(new_human), WEAR_IN_BACK) + ..() + +/datum/equipment_preset/survivor/engineer/trijent/hydro + name = "Survivor - Hydro Electric Engineer" + assignment = "Hydro Electric Engineer" + +/datum/equipment_preset/survivor/engineer/trijent/hydro/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hazardvest(new_human), WEAR_JACKET) + 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/shoes/jackboots(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(new_human), WEAR_HEAD) + ..() + +/datum/equipment_preset/survivor/engineer/trijent + name = "Survivor - Dam Maintenance Technician" + assignment = "Dam Maintenance Technician" + +/datum/equipment_preset/survivor/engineer/trijent/load_gear(mob/living/carbon/human/new_human) + 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/suit/storage/hazardvest(new_human), WEAR_JACKET) + 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/orange(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(new_human), WEAR_FEET) + ..() diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index 51b41c1387af..dc5d3b7217c8 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -455,97 +455,6 @@ survivor_variant = ENGINEERING_SURVIVOR -/datum/equipment_preset/synth/survivor/upp - name = "Survivor - Synthetic - UPP Synth" - flags = EQUIPMENT_PRESET_EXTRA - languages = ALL_SYNTH_LANGUAGES_UPP - assignment = JOB_UPP_COMBAT_SYNTH - rank = JOB_UPP_COMBAT_SYNTH - faction = FACTION_UPP - faction_group = list(FACTION_UPP, FACTION_SURVIVOR) - skills = /datum/skills/colonial_synthetic - paygrade = "SYN" - idtype = /obj/item/card/id/dogtag - role_comm_title = "UPP 173Rd RECON Syn" - -/datum/equipment_preset/synth/survivor/upp/load_gear(mob/living/carbon/human/new_human) - var/obj/item/clothing/under/marine/veteran/UPP/medic/uniform = new() - var/random_number = rand(1,2) - switch(random_number) - if(1) - uniform.roll_suit_jacket(new_human) - if(2) - uniform.roll_suit_sleeves(new_human) - new_human.equip_to_slot_or_del(uniform, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver, WEAR_R_EAR) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/recon, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/multitool, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/radio, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/stack/cable_coil, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/small_stack, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/webbing, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/partial, WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/upp, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/uppsynth, WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - -/datum/equipment_preset/synth/survivor/pmc - name = "Survivor - Synthetic - PMC Support Synth" - faction = FACTION_SURVIVOR - faction_group = list(FACTION_SURVIVOR) - access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_COMMAND) - idtype = /obj/item/card/id/pmc - assignment = JOB_PMC_SYNTH - rank = JOB_PMC_SYNTH - role_comm_title = "WY Syn" - -/datum/equipment_preset/synth/survivor/pmc/load_race(mob/living/carbon/human/new_human) - new_human.set_species(SYNTH_GEN_THREE) - -/datum/equipment_preset/synth/survivor/pmc/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/pmc, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/surg_vest/equipped, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth, WEAR_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/ammo_magazine/smg/nailgun, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/nailgun, WEAR_IN_JACKET) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc, WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/pmc/command/hvh, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/experimental_mesons, WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc, WEAR_FACE) - - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc, WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/knife, WEAR_FEET) - - new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/smartpack/white, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/roller/surgical, 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/device/defibrillator/upgraded, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/tool/crew_monitor, WEAR_IN_BACK) - - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full/dutch, WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/nailgun/compact, WEAR_J_STORE) - - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/screwdriver/tactical, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/wirecutters/tactical, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/wrench, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/stack/cable_coil, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/stack/cable_coil, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/device/multitool, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/weldingtool/hugetank, WEAR_IN_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction/full_barbed_wire, WEAR_R_STORE) - - //*****************************************************************************************************/ /datum/equipment_preset/synth/working_joe diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index 39a6c98aea0f..1322cd79c4f3 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -64,7 +64,7 @@ assignment = JOB_UPP rank = JOB_UPP role_comm_title = "Sol" - paygrade = "UE1" + paygrade = "UE2" /datum/equipment_preset/upp/soldier/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels @@ -79,7 +79,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/binoculars, WEAR_IN_JACKET) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) @@ -148,7 +148,7 @@ list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UM5 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), @@ -230,7 +230,7 @@ assignment = JOB_UPP_MEDIC rank = JOB_UPP_MEDIC role_comm_title = "Med" - paygrade = "UE3M" + paygrade = "UE3" /datum/equipment_preset/upp/medic/load_gear(mob/living/carbon/human/new_human) //back @@ -256,7 +256,7 @@ 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, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + 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) @@ -277,7 +277,7 @@ list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Medic Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/medic, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), @@ -301,7 +301,7 @@ list("Medical Pouch (Utilities)", 0, /obj/item/storage/pouch/medical/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch (Pills)", 0, /obj/item/storage/pouch/medical/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -399,7 +399,7 @@ assignment = JOB_UPP_ENGI rank = JOB_UPP_ENGI role_comm_title = "Sap" - paygrade = "UE3S" + paygrade = "UE3" /datum/equipment_preset/upp/sapper/load_gear(mob/living/carbon/human/new_human) //Sappers should have lots of gear and whatnot that helps them attack or siege marines @@ -440,7 +440,7 @@ list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UM5 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/cct, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Welding Goggles", 0, /obj/item/clothing/glasses/welding, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), @@ -551,7 +551,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, WEAR_JACKET) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert, WEAR_L_STORE) @@ -579,7 +579,7 @@ list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UH7 Heavy Plated Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/pmc, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), @@ -678,7 +678,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, WEAR_JACKET) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert, WEAR_L_STORE) @@ -704,7 +704,7 @@ list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UH7 Heavy Plated Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/pmc, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), @@ -748,9 +748,813 @@ list("Essential Heavy Set", 0, /obj/effect/essentials_set/upp_heavy, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), list("SPECIAL AMMUNITION", 0, null, null, null), - list("QYJ-72 Box Magazine (7.62x54mmR)", 15, /obj/item/ammo_magazine/pkp , null, VENDOR_ITEM_RECOMMENDED), + list("QYJ-72 Box Magazine (7.62x54mmR)", 15, /obj/item/ammo_magazine/pkp , null, VENDOR_ITEM_RECOMMENDED), + + list("ATTACHMENTS (NONE FIT QYJ-72)", 0, null, null, null), + list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + + list("EXPLOSIVES", 0, null, null, null), + list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), + list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), + list("Type 6 Shrapnel Grenade", 15, /obj/item/explosive/grenade/high_explosive/upp, null, VENDOR_ITEM_REGULAR), + list("Type 8 WP Grenade", 20, /obj/item/explosive/grenade/phosphorus/upp, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 10, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), + list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), + ) + +//*****************************************************************************************************/ + +/datum/equipment_preset/upp/leader + name = "UPP Squad Leader" + flags = EQUIPMENT_PRESET_EXTRA + + skills = /datum/skills/upp/SL + assignment = JOB_UPP_LEADER + rank = JOB_UPP_LEADER + role_comm_title = "SL" + paygrade = "UE6" + +/datum/equipment_preset/upp/leader/load_gear(mob/living/carbon/human/new_human) + var/UPPleadsidearm = rand(1,4) + //back + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher/mini, WEAR_IN_BACK) //0.66 + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) //1.33 + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) //2 + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) //2.66 + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //3.33 + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //4 + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_BACK) //5 + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + //body + var/obj/item/clothing/under/marine/veteran/UPP/UPP = new() + var/obj/item/clothing/accessory/storage/webbing/W = new() + UPP.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(UPP, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, 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/gun/rifle/type71/flamer, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) + switch(UPPleadsidearm) + if(1 to 2) // 50% + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) + if(3) //25% + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) + if(4) //25% + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flamertank, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert, WEAR_L_STORE) + + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) + +/datum/equipment_preset/upp/leader/get_antag_clothing_equipment() + return list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("UH7 Heavy Plated Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Bayonet Sheath", 0, /obj/item/storage/pouch/bayonet/upp, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Explosive Pouch", 0, /obj/item/storage/pouch/explosive, 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_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), + list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, 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) + ) + +/datum/equipment_preset/upp/leader/get_antag_gear_equipment() + return list( + list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), + list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("GENERAL SUPPLIES", 0, null, null, null), + list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("Entrenching Tool", 2, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_REGULAR), + list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + list("Metal x10", 5, /obj/item/stack/sheet/metal/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Plasteel x10", 7, /obj/item/stack/sheet/plasteel/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Sandbags x25", 10, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_RECOMMENDED), + list("Tools Pouch (Full)", 5, /obj/item/storage/pouch/tools/full, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("MEDICAL SUPPLIES", 0, null, null, null), + list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR), + list("Trauma Kit", 2, /obj/item/stack/medical/advanced/bruise_pack, null, VENDOR_ITEM_REGULAR), + list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_REGULAR), + list("Medical Splints", 1, /obj/item/stack/medical/splint, null, VENDOR_ITEM_REGULAR), + + list("Injector (Bicaridine)", 1, /obj/item/reagent_container/hypospray/autoinjector/bicaridine, null, VENDOR_ITEM_REGULAR), + list("Injector (Dexalin+)", 1, /obj/item/reagent_container/hypospray/autoinjector/dexalinp, null, VENDOR_ITEM_REGULAR), + list("Injector (Inaprovaline)", 1, /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, null, VENDOR_ITEM_REGULAR), + list("Injector (Kelotane)", 1, /obj/item/reagent_container/hypospray/autoinjector/kelotane, null, VENDOR_ITEM_REGULAR), + list("Injector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), + list("Injector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), + list("Injector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), + + list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), + list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_MANDATORY), + + list("SPECIAL AMMUNITION", 0, null, null, null), + list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), + + list("ATTACHMENTS", 0, null, null, null), + list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + + list("EXPLOSIVES", 0, null, null, null), + list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), + list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), + list("Type 6 Shrapnel Grenade", 15, /obj/item/explosive/grenade/high_explosive/upp, null, VENDOR_ITEM_REGULAR), + list("Type 8 WP Grenade", 20, /obj/item/explosive/grenade/phosphorus/upp, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 10, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), + list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), + ) + +//*****************************************************************************************************/ + +/datum/equipment_preset/upp/military_police + name = "UPP Military Police" + flags = EQUIPMENT_PRESET_EXTRA + + skills = /datum/skills/upp/military_police + assignment = JOB_UPP_POLICE + rank = JOB_UPP_POLICE + role_comm_title = "MP" + paygrade = "UE6" + +/datum/equipment_preset/upp/military_police/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) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + //uniform + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/mp, WEAR_BODY) + //jacket + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/mp, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/device/binoculars, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/UPP/full, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/device/taperecorder, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_R_STORE) + +/datum/equipment_preset/upp/military_police/get_antag_clothing_equipment() + return list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/mp, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("UL4 camouflaged jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/mp, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 camouflaged jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/mp, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Type 43 Military Police Rig", 0, /obj/item/storage/belt/security/MP/UPP/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Bayonet Sheath", 0, /obj/item/storage/pouch/bayonet/upp, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Explosive Pouch", 0, /obj/item/storage/pouch/explosive, 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_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), + list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, 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) + ) + +/datum/equipment_preset/upp/military_police/get_antag_gear_equipment() + return list( + list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), + list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("GENERAL SUPPLIES", 0, null, null, null), + list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("Entrenching Tool", 2, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_REGULAR), + list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + list("Metal x10", 5, /obj/item/stack/sheet/metal/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Plasteel x10", 7, /obj/item/stack/sheet/plasteel/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Sandbags x25", 10, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_RECOMMENDED), + list("Tools Pouch (Full)", 5, /obj/item/storage/pouch/tools/full, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("MEDICAL SUPPLIES", 0, null, null, null), + list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR), + list("Trauma Kit", 2, /obj/item/stack/medical/advanced/bruise_pack, null, VENDOR_ITEM_REGULAR), + list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_REGULAR), + list("Medical Splints", 1, /obj/item/stack/medical/splint, null, VENDOR_ITEM_REGULAR), + + list("Injector (Bicaridine)", 1, /obj/item/reagent_container/hypospray/autoinjector/bicaridine, null, VENDOR_ITEM_REGULAR), + list("Injector (Dexalin+)", 1, /obj/item/reagent_container/hypospray/autoinjector/dexalinp, null, VENDOR_ITEM_REGULAR), + list("Injector (Inaprovaline)", 1, /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, null, VENDOR_ITEM_REGULAR), + list("Injector (Kelotane)", 1, /obj/item/reagent_container/hypospray/autoinjector/kelotane, null, VENDOR_ITEM_REGULAR), + list("Injector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), + list("Injector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), + list("Injector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), + + list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), + list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_MANDATORY), + + list("SPECIAL AMMUNITION", 0, null, null, null), + list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), + + list("ATTACHMENTS", 0, null, null, null), + list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + + list("EXPLOSIVES", 0, null, null, null), + list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), + list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), + list("Type 6 Shrapnel Grenade", 15, /obj/item/explosive/grenade/high_explosive/upp, null, VENDOR_ITEM_REGULAR), + list("Type 8 WP Grenade", 20, /obj/item/explosive/grenade/phosphorus/upp, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 10, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), + list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), + ) + +//*****************************************************************************************************/ + +/datum/equipment_preset/upp/officer + name = "UPP Lieutenant" + flags = EQUIPMENT_PRESET_EXTRA + + skills = /datum/skills/upp/officer + assignment = JOB_UPP_LT_OFFICER + rank = JOB_UPP_LT_OFFICER + role_comm_title = "Lt." + paygrade = "UO1" + +/datum/equipment_preset/upp/officer/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) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + //uniform + var/obj/item/clothing/under/marine/veteran/UPP/officer/M = new() + var/obj/item/clothing/accessory/storage/webbing/W = new() + M.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(M, WEAR_BODY) + for(var/i in 1 to W.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + + //jacket + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/officer, 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/stack/medical/bruise_pack, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_R_STORE) + + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) + +/datum/equipment_preset/upp/officer/get_antag_clothing_equipment() + return list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Type 73 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Bayonet Sheath", 0, /obj/item/storage/pouch/bayonet/upp, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Explosive Pouch", 0, /obj/item/storage/pouch/explosive, 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_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), + list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, 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) + ) + +/datum/equipment_preset/upp/officer/get_antag_gear_equipment() + return list( + list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), + list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("GENERAL SUPPLIES", 0, null, null, null), + list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("Entrenching Tool", 2, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_REGULAR), + list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + list("Metal x10", 5, /obj/item/stack/sheet/metal/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Plasteel x10", 7, /obj/item/stack/sheet/plasteel/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Sandbags x25", 10, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_RECOMMENDED), + list("Tools Pouch (Full)", 5, /obj/item/storage/pouch/tools/full, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("MEDICAL SUPPLIES", 0, null, null, null), + list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR), + list("Trauma Kit", 2, /obj/item/stack/medical/advanced/bruise_pack, null, VENDOR_ITEM_REGULAR), + list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_REGULAR), + list("Medical Splints", 1, /obj/item/stack/medical/splint, null, VENDOR_ITEM_REGULAR), + + list("Injector (Bicaridine)", 1, /obj/item/reagent_container/hypospray/autoinjector/bicaridine, null, VENDOR_ITEM_REGULAR), + list("Injector (Dexalin+)", 1, /obj/item/reagent_container/hypospray/autoinjector/dexalinp, null, VENDOR_ITEM_REGULAR), + list("Injector (Inaprovaline)", 1, /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, null, VENDOR_ITEM_REGULAR), + list("Injector (Kelotane)", 1, /obj/item/reagent_container/hypospray/autoinjector/kelotane, null, VENDOR_ITEM_REGULAR), + list("Injector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), + list("Injector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), + list("Injector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), + + list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), + list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_MANDATORY), + + list("SPECIAL AMMUNITION", 0, null, null, null), + list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), + + list("ATTACHMENTS", 0, null, null, null), + list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + + list("EXPLOSIVES", 0, null, null, null), + list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), + list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), + list("Type 6 Shrapnel Grenade", 15, /obj/item/explosive/grenade/high_explosive/upp, null, VENDOR_ITEM_REGULAR), + list("Type 8 WP Grenade", 20, /obj/item/explosive/grenade/phosphorus/upp, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 10, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), + list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), + ) + +//*****************************************************************************************************/ + +/datum/equipment_preset/upp/officer/senior + name = "UPP Senior Lieutenant" + assignment = JOB_UPP_SRLT_OFFICER + rank = JOB_UPP_SRLT_OFFICER + role_comm_title = "Sr-Lt." + paygrade = "UO2" + +/datum/equipment_preset/upp/officer/senior/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) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + //uniform + var/obj/item/clothing/under/marine/veteran/UPP/officer/M = new() + var/obj/item/clothing/accessory/storage/webbing/W = new() + M.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(M, WEAR_BODY) + for(var/i in 1 to W.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + + //jacket + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/officer, 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/stack/medical/bruise_pack, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_R_STORE) + + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) + +/datum/equipment_preset/upp/officer/senior/get_antag_clothing_equipment() + return list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Type 73 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Bayonet Sheath", 0, /obj/item/storage/pouch/bayonet/upp, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Explosive Pouch", 0, /obj/item/storage/pouch/explosive, 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_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), + list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, 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) + ) + +/datum/equipment_preset/upp/officer/senior/get_antag_gear_equipment() + return list( + list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), + list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("GENERAL SUPPLIES", 0, null, null, null), + list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("Entrenching Tool", 2, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_REGULAR), + list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + list("Metal x10", 5, /obj/item/stack/sheet/metal/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Plasteel x10", 7, /obj/item/stack/sheet/plasteel/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Sandbags x25", 10, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_RECOMMENDED), + list("Tools Pouch (Full)", 5, /obj/item/storage/pouch/tools/full, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("MEDICAL SUPPLIES", 0, null, null, null), + list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR), + list("Trauma Kit", 2, /obj/item/stack/medical/advanced/bruise_pack, null, VENDOR_ITEM_REGULAR), + list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_REGULAR), + list("Medical Splints", 1, /obj/item/stack/medical/splint, null, VENDOR_ITEM_REGULAR), + + list("Injector (Bicaridine)", 1, /obj/item/reagent_container/hypospray/autoinjector/bicaridine, null, VENDOR_ITEM_REGULAR), + list("Injector (Dexalin+)", 1, /obj/item/reagent_container/hypospray/autoinjector/dexalinp, null, VENDOR_ITEM_REGULAR), + list("Injector (Inaprovaline)", 1, /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, null, VENDOR_ITEM_REGULAR), + list("Injector (Kelotane)", 1, /obj/item/reagent_container/hypospray/autoinjector/kelotane, null, VENDOR_ITEM_REGULAR), + list("Injector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), + list("Injector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), + list("Injector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), + + list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), + list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_MANDATORY), + + list("SPECIAL AMMUNITION", 0, null, null, null), + list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), + + list("ATTACHMENTS", 0, null, null, null), + list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), + list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 10, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 10, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), + list("Suppressor", 10, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 10, /obj/item/attachable/verticalgrip, null, VENDOR_ITEM_REGULAR), + + list("EXPLOSIVES", 0, null, null, null), + list("Plastic Explosive", 5, /obj/item/explosive/plastic, null, VENDOR_ITEM_REGULAR), + list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, null, VENDOR_ITEM_REGULAR), + list("Type 6 Shrapnel Grenade", 15, /obj/item/explosive/grenade/high_explosive/upp, null, VENDOR_ITEM_REGULAR), + list("Type 8 WP Grenade", 20, /obj/item/explosive/grenade/phosphorus/upp, null, VENDOR_ITEM_REGULAR), + + list("UTILITIES", 0, null, null, null), + list("Brown Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest/brown_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Black Webbing Vest", 10, /obj/item/clothing/accessory/storage/black_vest, null, VENDOR_ITEM_RECOMMENDED), + list("Fire Extinguisher (Portable)", 5, /obj/item/tool/extinguisher/mini, null, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 10, /obj/item/clothing/accessory/storage/holster, null, VENDOR_ITEM_REGULAR), + list("Webbing", 10, /obj/item/clothing/accessory/storage/webbing, null, VENDOR_ITEM_REGULAR), + list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), + ) + +//*****************************************************************************************************/ + +/datum/equipment_preset/upp/officer/kapitan + name = "UPP Kapitan" + assignment = JOB_UPP_KPT_OFFICER + rank = JOB_UPP_KPT_OFFICER + role_comm_title = "May." + paygrade = "UO3" + skills = /datum/skills/upp/kapitan + +/datum/equipment_preset/upp/officer/kapitan/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) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + //uniform + var/obj/item/clothing/under/marine/veteran/UPP/officer/M = new() + var/obj/item/clothing/accessory/storage/webbing/W = new() + M.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(M, WEAR_BODY) + for(var/i in 1 to W.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + + //jacket + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, 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/stack/medical/bruise_pack, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_R_STORE) + + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) + +/datum/equipment_preset/upp/officer/kapitan/get_antag_clothing_equipment() + return list( + list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + + list("HELMET (CHOOSE 1)", 0, null, null, null), + list("Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 senior officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Type 74 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73/leader, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Bayonet Sheath", 0, /obj/item/storage/pouch/bayonet/upp, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Explosive Pouch", 0, /obj/item/storage/pouch/explosive, 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_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ATTACHMENT (CHOOSE 1)", 0, null, null, null), + list("Angled Grip", 0, /obj/item/attachable/angledgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Extended Barrel", 0, /obj/item/attachable/extended_barrel, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Red-Dot Sight", 0, /obj/item/attachable/reddot, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Reflex Sight", 0, /obj/item/attachable/reflex, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Suppressor", 0, /obj/item/attachable/suppressor, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, 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) + ) + +/datum/equipment_preset/upp/officer/kapitan/get_antag_gear_equipment() + return list( + list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), + list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("GENERAL SUPPLIES", 0, null, null, null), + list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + + list("ENGINEERING SUPPLIES", 0, null, null, null), + list("Entrenching Tool", 2, /obj/item/tool/shovel/etool, null, VENDOR_ITEM_REGULAR), + list("Insulated Gloves", 3, /obj/item/clothing/gloves/yellow, null, VENDOR_ITEM_REGULAR), + list("Metal x10", 5, /obj/item/stack/sheet/metal/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Plasteel x10", 7, /obj/item/stack/sheet/plasteel/small_stack, null, VENDOR_ITEM_RECOMMENDED), + list("Sandbags x25", 10, /obj/item/stack/sandbags_empty/half, null, VENDOR_ITEM_RECOMMENDED), + list("Tools Pouch (Full)", 5, /obj/item/storage/pouch/tools/full, null, VENDOR_ITEM_REGULAR), + list("Welding Goggles", 5, /obj/item/clothing/glasses/welding, null, VENDOR_ITEM_REGULAR), + + list("MEDICAL SUPPLIES", 0, null, null, null), + list("Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR), + list("Trauma Kit", 2, /obj/item/stack/medical/advanced/bruise_pack, null, VENDOR_ITEM_REGULAR), + list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_REGULAR), + list("Medical Splints", 1, /obj/item/stack/medical/splint, null, VENDOR_ITEM_REGULAR), + + list("Injector (Bicaridine)", 1, /obj/item/reagent_container/hypospray/autoinjector/bicaridine, null, VENDOR_ITEM_REGULAR), + list("Injector (Dexalin+)", 1, /obj/item/reagent_container/hypospray/autoinjector/dexalinp, null, VENDOR_ITEM_REGULAR), + list("Injector (Inaprovaline)", 1, /obj/item/reagent_container/hypospray/autoinjector/inaprovaline, null, VENDOR_ITEM_REGULAR), + list("Injector (Kelotane)", 1, /obj/item/reagent_container/hypospray/autoinjector/kelotane, null, VENDOR_ITEM_REGULAR), + list("Injector (Oxycodone)", 2, /obj/item/reagent_container/hypospray/autoinjector/oxycodone, null, VENDOR_ITEM_REGULAR), + list("Injector (Tramadol)", 1, /obj/item/reagent_container/hypospray/autoinjector/tramadol, null, VENDOR_ITEM_REGULAR), + list("Injector (Tricord)", 1, /obj/item/reagent_container/hypospray/autoinjector/tricord, null, VENDOR_ITEM_REGULAR), + + list("Health Analyzer", 4, /obj/item/device/healthanalyzer, null, VENDOR_ITEM_REGULAR), + list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_MANDATORY), + + list("SPECIAL AMMUNITION", 0, null, null, null), + list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), - list("ATTACHMENTS (NONE FIT QYJ-72)", 0, null, null, null), + list("ATTACHMENTS", 0, null, null, null), list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), @@ -777,81 +1581,74 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/leader - name = "UPP Squad Leader" - flags = EQUIPMENT_PRESET_EXTRA - - skills = /datum/skills/upp/SL - assignment = JOB_UPP_LEADER - rank = JOB_UPP_LEADER - role_comm_title = "SL" - paygrade = "UE6" +/datum/equipment_preset/upp/officer/major + name = "UPP Major" + assignment = JOB_UPP_MAY_OFFICER + rank = JOB_UPP_MAY_OFFICER + role_comm_title = "May." + paygrade = "UO4" + skills = /datum/skills/upp/commander -/datum/equipment_preset/upp/leader/load_gear(mob/living/carbon/human/new_human) - var/UPPleadsidearm = rand(1,4) +/datum/equipment_preset/upp/officer/major/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) - new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher/mini, WEAR_IN_BACK) //0.66 - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) //1.33 - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) //2 - new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) //2.66 - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //3.33 - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //4 - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_BACK) //5 + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) //head - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) - //body - var/obj/item/clothing/under/marine/veteran/UPP/UPP = new() + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/peaked, WEAR_HEAD) + //uniform + var/obj/item/clothing/under/marine/veteran/UPP/officer/M = new() var/obj/item/clothing/accessory/storage/webbing/W = new() - UPP.attach_accessory(new_human, W) - new_human.equip_to_slot_or_del(UPP, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, WEAR_JACKET) + M.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(M, WEAR_BODY) + for(var/i in 1 to W.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + + //jacket + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, 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/gun/rifle/type71/flamer, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) - switch(UPPleadsidearm) - if(1 to 2) // 50% - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) - if(3) //25% - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) - if(4) //25% - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/flamertank, WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_R_STORE) if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) -/datum/equipment_preset/upp/leader/get_antag_clothing_equipment() +/datum/equipment_preset/upp/officer/major/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("UH7 Heavy Plated Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/heavy, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("HELMET (CHOOSE 1)", 0, null, null, null), - list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Peaked Cap", 0, /obj/item/clothing/head/uppcap/peaked, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 senior officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Type 74 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73/leader, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -863,7 +1660,7 @@ list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -877,11 +1674,11 @@ list("Vertical Grip", 0, /obj/item/attachable/verticalgrip, MARINE_CAN_BUY_ATTACHMENT, 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("Gas Mask", 0, /obj/item/clothing/mask/gas/pmc/upp, 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) ) -/datum/equipment_preset/upp/leader/get_antag_gear_equipment() +/datum/equipment_preset/upp/officer/major/get_antag_gear_equipment() return list( list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), @@ -916,7 +1713,7 @@ list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_MANDATORY), list("SPECIAL AMMUNITION", 0, null, null, null), - list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), + list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), @@ -945,65 +1742,74 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/military_police - name = "UPP Military Police" - flags = EQUIPMENT_PRESET_EXTRA - - skills = /datum/skills/upp/military_police - assignment = JOB_UPP_POLICE - rank = JOB_UPP_POLICE - role_comm_title = "MP" - paygrade = "UE6" +/datum/equipment_preset/upp/officer/lt_kolonel + name = "UPP Leytenant Kolonel" + assignment = JOB_UPP_LTKOL_OFFICER + rank = JOB_UPP_LTKOL_OFFICER + role_comm_title = "Lt. Kol." + paygrade = "UO5" + skills = /datum/skills/upp/commander -/datum/equipment_preset/upp/military_police/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/upp/officer/lt_kolonel/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) + new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) //face - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) //head - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/peaked, WEAR_HEAD) //uniform - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/mp, WEAR_BODY) + var/obj/item/clothing/under/marine/veteran/UPP/officer/M = new() + var/obj/item/clothing/accessory/storage/webbing/W = new() + M.attach_accessory(new_human, W) + new_human.equip_to_slot_or_del(M, WEAR_BODY) + for(var/i in 1 to W.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + //jacket - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/mp, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/device/binoculars, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, 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/stack/medical/bruise_pack, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/UPP/full, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //pockets - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium, WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/device/taperecorder, WEAR_IN_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/upp, WEAR_IN_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_R_STORE) -/datum/equipment_preset/upp/military_police/get_antag_clothing_equipment() + if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) + +/datum/equipment_preset/upp/officer/lt_kolonel/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/mp, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("UL4 camouflaged jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/mp, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), + list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("HELMET (CHOOSE 1)", 0, null, null, null), - list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Peaked Cap", 0, /obj/item/clothing/head/uppcap/peaked, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("UL4 camouflaged jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/mp, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL4 senior officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 43 Military Police Rig", 0, /obj/item/storage/belt/security/MP/UPP/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Type 74 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73/leader, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1033,7 +1839,7 @@ list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) ) -/datum/equipment_preset/upp/military_police/get_antag_gear_equipment() +/datum/equipment_preset/upp/officer/lt_kolonel/get_antag_gear_equipment() return list( list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), @@ -1068,7 +1874,7 @@ list("Medical HUD Glasses", 4, /obj/item/clothing/glasses/hud/health, null, VENDOR_ITEM_MANDATORY), list("SPECIAL AMMUNITION", 0, null, null, null), - list("Type 71 AP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/ap , null, VENDOR_ITEM_REGULAR), + list("Type 71 HEAP Magazine (5.45x39mm)", 10, /obj/item/ammo_magazine/rifle/type71/heap , null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), @@ -1097,17 +1903,15 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/officer - name = "UPP Lieutenant" - flags = EQUIPMENT_PRESET_EXTRA - - skills = /datum/skills/upp/officer - assignment = JOB_UPP_LT_OFFICER - rank = JOB_UPP_LT_OFFICER - role_comm_title = "Lt." - paygrade = "UO1" +/datum/equipment_preset/upp/officer/kolonel + name = "UPP Kolonel" + assignment = JOB_UPP_KOL_OFFICER + rank = JOB_UPP_KOL_OFFICER + role_comm_title = "Kol." + paygrade = "UO6" + skills = /datum/skills/upp/commander -/datum/equipment_preset/upp/officer/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/upp/officer/kolonel/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) new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) @@ -1117,7 +1921,7 @@ //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) //head - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/peaked, WEAR_HEAD) //uniform var/obj/item/clothing/under/marine/veteran/UPP/officer/M = new() var/obj/item/clothing/accessory/storage/webbing/W = new() @@ -1127,15 +1931,15 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) //jacket - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/officer, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, 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/stack/medical/bruise_pack, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //pockets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_L_STORE) @@ -1146,27 +1950,27 @@ if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) -/datum/equipment_preset/upp/officer/get_antag_clothing_equipment() +/datum/equipment_preset/upp/officer/kolonel/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("HELMET (CHOOSE 1)", 0, null, null, null), - list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Peaked Cap", 0, /obj/item/clothing/head/uppcap/peaked, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("UL4 officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL4 senior officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 73 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Type 74 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73/leader, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1178,7 +1982,7 @@ list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -1196,7 +2000,7 @@ list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) ) -/datum/equipment_preset/upp/officer/get_antag_gear_equipment() +/datum/equipment_preset/upp/officer/kolonel/get_antag_gear_equipment() return list( list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), @@ -1260,14 +2064,15 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/officer/senior - name = "UPP Senior Lieutenant" - assignment = JOB_UPP_SRLT_OFFICER - rank = JOB_UPP_SRLT_OFFICER - role_comm_title = "Sr-Lt." - paygrade = "UO1E" +/datum/equipment_preset/upp/officer/may_gen + name = "UPP Mayjor General" + assignment = JOB_UPP_KOL_OFFICER + rank = JOB_UPP_KOL_OFFICER + role_comm_title = "May. Gen." + paygrade = "UO7" + skills = /datum/skills/upp/commander -/datum/equipment_preset/upp/officer/senior/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/upp/officer/may_gen/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) new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) @@ -1277,7 +2082,7 @@ //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) //head - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/peaked, WEAR_HEAD) //uniform var/obj/item/clothing/under/marine/veteran/UPP/officer/M = new() var/obj/item/clothing/accessory/storage/webbing/W = new() @@ -1287,12 +2092,12 @@ new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) //jacket - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/officer, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, 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/stack/medical/bruise_pack, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) @@ -1306,7 +2111,7 @@ if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) -/datum/equipment_preset/upp/officer/senior/get_antag_clothing_equipment() +/datum/equipment_preset/upp/officer/may_gen/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), @@ -1317,16 +2122,16 @@ list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("HELMET (CHOOSE 1)", 0, null, null, null), - list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("Peaked Cap", 0, /obj/item/clothing/head/uppcap/peaked, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("UL4 officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL4 senior officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 73 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Type 74 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73/leader, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1356,7 +2161,7 @@ list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) ) -/datum/equipment_preset/upp/officer/senior/get_antag_gear_equipment() +/datum/equipment_preset/upp/officer/may_gen/get_antag_gear_equipment() return list( list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), @@ -1420,15 +2225,15 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/officer/major - name = "UPP Major" - assignment = JOB_UPP_MAY_OFFICER - rank = JOB_UPP_MAY_OFFICER - role_comm_title = "May." - paygrade = "UO3" +/datum/equipment_preset/upp/officer/ley_gen + name = "UPP Leytenant General" + assignment = JOB_UPP_KOL_OFFICER + rank = JOB_UPP_KOL_OFFICER + role_comm_title = "Lt. Gen." + paygrade = "UO8" skills = /datum/skills/upp/commander -/datum/equipment_preset/upp/officer/major/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/upp/officer/ley_gen/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) new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) @@ -1467,7 +2272,7 @@ if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) -/datum/equipment_preset/upp/officer/major/get_antag_clothing_equipment() +/datum/equipment_preset/upp/officer/ley_gen/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), @@ -1517,7 +2322,7 @@ list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) ) -/datum/equipment_preset/upp/officer/major/get_antag_gear_equipment() +/datum/equipment_preset/upp/officer/ley_gen/get_antag_gear_equipment() return list( list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), @@ -1581,15 +2386,15 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/officer/kolonel - name = "UPP Kolonel" +/datum/equipment_preset/upp/officer/gen + name = "UPP Army General" assignment = JOB_UPP_KOL_OFFICER rank = JOB_UPP_KOL_OFFICER - role_comm_title = "Kol." - paygrade = "UO5" + role_comm_title = "Gen." + paygrade = "UO9" skills = /datum/skills/upp/commander -/datum/equipment_preset/upp/officer/kolonel/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/upp/officer/gen/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) new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) @@ -1628,7 +2433,7 @@ if(SSmapping.configs[GROUND_MAP].environment_traits[MAP_COLD]) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/rebreather/scarf/tacticalmask/green, WEAR_FACE) -/datum/equipment_preset/upp/officer/kolonel/get_antag_clothing_equipment() +/datum/equipment_preset/upp/officer/gen/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), @@ -1678,7 +2483,7 @@ list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) ) -/datum/equipment_preset/upp/officer/kolonel/get_antag_gear_equipment() +/datum/equipment_preset/upp/officer/gen/get_antag_gear_equipment() return list( list("SQUAD LEADER SET (MANDATORY)", 0, null, null, null), list("Essential SL Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), @@ -1857,7 +2662,7 @@ 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, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + 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) @@ -1915,7 +2720,7 @@ list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, 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("MASK", 0, null, null, null), @@ -1996,7 +2801,7 @@ assignment = JOB_UPP_CONSCRIPT rank = JOB_UPP_CONSCRIPT role_comm_title = "Cons" - paygrade = "UE0" + paygrade = "UE1" /datum/equipment_preset/upp/conscript/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels @@ -2026,7 +2831,7 @@ //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - var/maybegloves = prob(80) ? pick(/obj/item/clothing/gloves/black, /obj/item/clothing/gloves/marine/veteran, /obj/item/clothing/gloves/combat) : null + var/maybegloves = prob(80) ? pick(/obj/item/clothing/gloves/black, /obj/item/clothing/gloves/marine/veteran/upp, /obj/item/clothing/gloves/combat) : null if(maybegloves) new_human.equip_to_slot_or_del(new maybegloves, WEAR_HANDS) @@ -2123,7 +2928,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92/suppressed, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -2145,7 +2950,7 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/commando, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/pmc, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/kdo, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Night Vision Goggles", 0, /obj/item/clothing/glasses/night/m42_night_goggles/upp, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), @@ -2171,7 +2976,7 @@ list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -2245,7 +3050,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -2276,7 +3081,7 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues Medic", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/pmc, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/kdo/medic, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("HealthMate HUD", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("Night Vision Goggles", 0, /obj/item/clothing/glasses/night/m42_night_goggles/upp, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), @@ -2304,7 +3109,7 @@ list("Medical Pouch (Splints)", 0, /obj/item/storage/pouch/medical/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch (Pills)", 0, /obj/item/storage/pouch/medical/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -2415,7 +3220,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) @@ -2440,7 +3245,7 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/commando, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/pmc, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/kdo/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Night Vision Goggles", 0, /obj/item/clothing/glasses/night/m42_night_goggles/upp, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), @@ -2466,7 +3271,7 @@ list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -2672,7 +3477,7 @@ assignment = JOB_UPP_LT_DOKTOR rank = JOB_UPP_LT_DOKTOR role_comm_title = "Lt. Med." - paygrade = "UO1M" + paygrade = "UO1" /datum/equipment_preset/upp/doctor/load_gear(mob/living/carbon/human/new_human) //back @@ -2701,7 +3506,7 @@ new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/autoinjector/oxycodone, WEAR_IN_BELT) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/upp, WEAR_HANDS) //póckets new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) @@ -2722,7 +3527,7 @@ list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Medic Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran/upp, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), @@ -2744,7 +3549,7 @@ list("Medical Pouch (Splints)", 0, /obj/item/storage/pouch/medical/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medical Pouch (Pills)", 0, /obj/item/storage/pouch/medical/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), list("Medium General Pouch", 0, /obj/item/storage/pouch/general/medium, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, 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), diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index 5b546b0c941c..4c383cfed6d9 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -345,7 +345,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/qm_suit(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/cmcap/req(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/req/ro(new_human), WEAR_HEAD) 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/flash(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) @@ -377,7 +377,7 @@ 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/storage/belt/gun/m4a3/full(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beanie(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/req(new_human), WEAR_HEAD) 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) @@ -404,20 +404,20 @@ minimap_icon = list("cic" = MINIMAP_ICON_COLOR_COMMANDER) minimap_background = MINIMAP_ICON_BACKGROUND_CIC - utility_under = list(/obj/item/clothing/under/marine,/obj/item/clothing/under/marine/officer/command) + utility_under = list(/obj/item/clothing/under/marine, /obj/item/clothing/under/marine/officer/command, /obj/item/clothing/under/marine/officer/boiler) utility_hat = list(/obj/item/clothing/head/cmcap,/obj/item/clothing/head/beret/cm/tan) utility_extra = list(/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/glasses/sunglasses/big,/obj/item/clothing/glasses/sunglasses/aviator,/obj/item/clothing/glasses/mbcg) service_under = list(/obj/item/clothing/under/marine/officer/formal/white, /obj/item/clothing/under/marine/officer/formal/black) service_shoes = list(/obj/item/clothing/shoes/dress/commander) service_extra = list(/obj/item/clothing/suit/storage/jacket/marine/dress/officer/bomber) - service_hat = list(/obj/item/clothing/head/beret/cm, /obj/item/clothing/head/beret/marine/commander/dress, /obj/item/clothing/head/beret/marine/commander/black) + service_hat = list(/obj/item/clothing/head/beret/cm, /obj/item/clothing/head/beret/marine/commander/dress, /obj/item/clothing/head/beret/marine/commander/black, /obj/item/clothing/head/marine/peaked/service) dress_under = list(/obj/item/clothing/under/marine/dress, /obj/item/clothing/under/marine/officer/formal/servicedress) dress_extra = list(/obj/item/storage/large_holster/ceremonial_sword/full) - dress_hat = list(/obj/item/clothing/head/marine/peaked/captain/white, /obj/item/clothing/head/marine/peaked/captain/black) + dress_hat = list(/obj/item/clothing/head/marine/peaked/captain/white, /obj/item/clothing/head/marine/peaked/captain/black, /obj/item/clothing/head/marine/peaked) dress_shoes = list(/obj/item/clothing/shoes/dress/commander) - dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/officer/white, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/black, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/suit) + dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/officer/white, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/black, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/suit, /obj/item/clothing/suit/storage/jacket/marine/dress) /datum/equipment_preset/uscm_ship/commander/New() . = ..() @@ -436,20 +436,18 @@ if(new_human.client && new_human.client.prefs) sidearm = new_human.client.prefs.commander_sidearm switch(sidearm) - if("Mateba") + if(CO_GUN_MATEBA) sidearmpath = /obj/item/storage/belt/gun/mateba/cmateba/full kit = /obj/item/storage/mateba_case/captain - if("Colonel's Mateba") + if(CO_GUN_MATEBA_SPECIAL) + sidearmpath = /obj/item/storage/belt/gun/mateba/cmateba/special + if(CO_GUN_MATEBA_COUNCIL) sidearmpath = /obj/item/storage/belt/gun/mateba/council/full kit = /obj/item/storage/mateba_case/captain/council - if("Desert Eagle") + if(CO_GUN_DEAGLE) sidearmpath = /obj/item/storage/belt/gun/m4a3/heavy/co - if("Golden Desert Eagle") + if(CO_GUN_DEAGLE_COUNCIL) sidearmpath = /obj/item/storage/belt/gun/m4a3/heavy/co_golden - if("M4A3 Custom") - sidearmpath = /obj/item/storage/belt/gun/m4a3/commander - if("VP78") - sidearmpath = /obj/item/storage/belt/gun/m4a3/vp78 new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom/cdrcom(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) @@ -526,10 +524,10 @@ back_item = /obj/item/storage/backpack/marine new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom/cdrcom(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/exec(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/jacket/marine/service(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/dress(new_human), WEAR_FEET) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/marine/peaked/service(new_human), WEAR_HEAD) 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/large(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) @@ -562,7 +560,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/dress(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/m4a3/mod88(new_human), WEAR_WAIST) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/ro(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap/bridge(new_human), WEAR_HEAD) 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/large(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) diff --git a/code/modules/gear_presets/wo.dm b/code/modules/gear_presets/wo.dm index 521d2690d367..c330bbc76502 100644 --- a/code/modules/gear_presets/wo.dm +++ b/code/modules/gear_presets/wo.dm @@ -52,20 +52,18 @@ if(new_human.client && new_human.client.prefs) sidearm = new_human.client.prefs.commander_sidearm switch(sidearm) - if("Mateba") + if(CO_GUN_MATEBA) sidearmpath = /obj/item/storage/belt/gun/mateba/cmateba/full kit = /obj/item/storage/mateba_case/captain - if("Colonel's Mateba") + if(CO_GUN_MATEBA_SPECIAL) + sidearmpath = /obj/item/storage/belt/gun/mateba/cmateba/special + if(CO_GUN_MATEBA_COUNCIL) sidearmpath = /obj/item/storage/belt/gun/mateba/council/full kit = /obj/item/storage/mateba_case/captain/council - if("Desert Eagle") + if(CO_GUN_DEAGLE) sidearmpath = /obj/item/storage/belt/gun/m4a3/heavy/co - if("Golden Desert Eagle") + if(CO_GUN_DEAGLE_COUNCIL) sidearmpath = /obj/item/storage/belt/gun/m4a3/heavy/co_golden - if("M4A3 Custom") - sidearmpath = /obj/item/storage/belt/gun/m4a3/commander - if("VP78") - sidearmpath = /obj/item/storage/belt/gun/m4a3/vp78 //back new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) @@ -122,7 +120,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/cmcap(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/mcom/cdrcom(new_human), WEAR_L_EAR) //uniform - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/exec(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) //jacket new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/MP/SO(new_human), WEAR_JACKET) //waist @@ -152,7 +150,7 @@ /datum/equipment_preset/wo/cmp/load_gear(mob/living/carbon/human/new_human) //uniform - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/boiler(new_human), WEAR_BODY) //jacket new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/smartgunner(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smartgun(new_human), WEAR_J_STORE) @@ -197,7 +195,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/mp_honor/com(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/aviator(new_human), WEAR_EYES) //uniform - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/boiler(new_human), WEAR_BODY) //jacket new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/leader(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41aMK1(new_human), WEAR_J_STORE) @@ -239,7 +237,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/aviator(new_human), WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/beret/marine/logisticsofficer(new_human), WEAR_HEAD) //uniform - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/boiler(new_human), WEAR_BODY) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/large_holster/m39/full(new_human), WEAR_WAIST) //limbs @@ -272,7 +270,7 @@ back_item = /obj/item/storage/backpack/security new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/marine/mp_honor(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/bridge(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/officer/boiler(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/officer(new_human), WEAR_HANDS) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/shotgun/full(new_human), WEAR_WAIST) diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm index 463ce752308a..24097e1f8e92 100644 --- a/code/modules/hydroponics/hydro_tray.dm +++ b/code/modules/hydroponics/hydro_tray.dm @@ -612,7 +612,7 @@ var/obj/item/storage/bag/plants/S = O for (var/obj/item/reagent_container/food/snacks/grown/G in locate(user.x,user.y,user.z)) - if(!S.can_be_inserted(G)) + if(!S.can_be_inserted(G, user)) return S.handle_item_insertion(G, TRUE, user) diff --git a/code/modules/maptext_alerts/screen_alerts.dm b/code/modules/maptext_alerts/screen_alerts.dm index 6d251080e87b..820c64301bc2 100644 --- a/code/modules/maptext_alerts/screen_alerts.dm +++ b/code/modules/maptext_alerts/screen_alerts.dm @@ -66,7 +66,7 @@ ///proc for actually playing this screen_text on a mob. /atom/movable/screen/text/screen_text/proc/play_to_client() - player?.screen += src + player?.add_to_screen(src) if(fade_in_time) animate(src, alpha = 255) var/list/lines_to_skip = list() @@ -106,7 +106,7 @@ qdel(src) return - player.screen -= src + player.remove_from_screen(src) LAZYREMOVE(player.screen_texts, src) qdel(src) @@ -196,7 +196,7 @@ alerts -= category if(client && hud_used) hud_used.reorganize_alerts() - client.screen -= alert + client.remove_from_screen(alert) qdel(alert) /atom/movable/screen/alert @@ -243,6 +243,6 @@ if(gotten_turf) ghost_user.forceMove(gotten_turf) if(NOTIFY_ORBIT) - ghost_user.ManualFollow(target) + ghost_user.do_observe(target) if(NOTIFY_JOIN_XENO) ghost_user.join_as_alien() diff --git a/code/modules/maptext_alerts/text_blurbs.dm b/code/modules/maptext_alerts/text_blurbs.dm index 4cc4d1980115..c942543f88df 100644 --- a/code/modules/maptext_alerts/text_blurbs.dm +++ b/code/modules/maptext_alerts/text_blurbs.dm @@ -136,7 +136,7 @@ but should see their own spawn message even if the player already dropped as USC if(!ignore_key && (M.key in GLOB.blurb_witnesses[blurb_key])) continue LAZYDISTINCTADD(GLOB.blurb_witnesses[blurb_key], M.key) - M.client?.screen += T + M.client?.add_to_screen(T) for(var/i in 1 to length(message) + 1) if(i in linebreaks) @@ -154,5 +154,5 @@ but should see their own spawn message even if the player already dropped as USC animate(T, alpha = 0, time = 0.5 SECONDS) sleep(5) for(var/mob/M as anything in targets) - M.client?.screen -= T + M.client?.remove_from_screen(T) qdel(T) diff --git a/code/modules/mentor/mentorhelp.dm b/code/modules/mentor/mentorhelp.dm index 9aaf1cae517b..7746e90d960d 100644 --- a/code/modules/mentor/mentorhelp.dm +++ b/code/modules/mentor/mentorhelp.dm @@ -329,11 +329,11 @@ if("L: Discord") msg += "You can join our Discord server by using this link!" if("L: Xeno Quickstart Guide") - msg += "Your answer can be found on the Xeno Quickstart Guide on our wiki. Check it out here." + msg += "Your answer can be found on the Xeno Quickstart Guide on our wiki. Check it out here." if("L: Marine Quickstart Guide") - msg += "Your answer can be found on the Marine Quickstart Guide on our wiki. Check it out here." + msg += "Your answer can be found on the Marine Quickstart Guide on our wiki. Check it out here." if("L: Current Map") - msg += "If you need a map overview of the current round, use Current Map verb in OOC tab to check name of the map. Then open our wiki front page and look for the map overview in the 'Maps' section. If the map is not listed, it's a new or rare map and the overview hasn't been finished yet." + msg += "If you need a map overview of the current round, use Current Map verb in OOC tab to check name of the map. Then open our wiki front page and look for the map overview in the 'Maps' section. If the map is not listed, it's a new or rare map and the overview hasn't been finished yet." if("A: No plasma regen") msg += "If you have low/no plasma regen, it's most likely because you are off weeds or are currently using a passive ability, such as the Runner's 'Hide' or emitting a pheromone." if("A: Devour as Xeno") @@ -351,9 +351,9 @@ if("L: Leaving the server") msg += "If you need to leave the server as a marine, either go to cryo or ask someone to cryo you before leaving. If you are a xenomorph, find a safe place to rest and ghost before leaving, that will instantly unlock your xeno for observers to join." if("M: Macros") - msg += "This guide explains how to set up macros including examples of most common and useful ones." + msg += "This guide explains how to set up macros including examples of most common and useful ones." if("C: Changelog") - msg += "The answer to your question can be found in the changelog. Click the changelog button at the top-right of the screen to view it in-game, or visit changelog page on our wiki instead." + msg += "The answer to your question can be found in the changelog. Click the changelog button at the top-right of the screen to view it in-game." if("H: Clear Cache") msg += "In order to clear cache, you need to click on gear icon located in upper-right corner of your BYOND client and select preferences. Switch to Games tab and click Clear Cache button. In some cases you need to manually delete cache. To do that, select Advanced tab and click Open User Directory and delete \"cache\" folder there." if("O: Combat Click-Drag Override") diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 21a992693aa8..1202ca10260d 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -49,8 +49,10 @@ var/updatedir = TRUE //Do we have to update our dir as the ghost moves around? var/atom/movable/following = null var/datum/orbit_menu/orbit_menu - /// The target mob that the ghost is observing. Used as a reference in logout() - var/mob/observetarget = null + /// The target mob that the ghost is observing. + var/mob/observe_target_mob = null + /// The target client that the ghost is observing. + var/client/observe_target_client = null var/datum/health_scan/last_health_display var/ghost_orbit = GHOST_ORBIT_CIRCLE var/own_orbit_size = 0 @@ -152,31 +154,108 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE update_sight() -/mob/dead/observer/proc/clean_observetarget() +/// Removes all signals and data related to the observe target and resets observer's HUD/eye +/mob/dead/observer/proc/clean_observe_target() SIGNAL_HANDLER - UnregisterSignal(observetarget, COMSIG_PARENT_QDELETING) - if(observetarget?.observers) - observetarget.observers -= src - UNSETEMPTY(observetarget.observers) - observetarget = null + + UnregisterSignal(observe_target_mob, COMSIG_PARENT_QDELETING) + UnregisterSignal(observe_target_mob, COMSIG_MOB_GHOSTIZE) + UnregisterSignal(observe_target_mob, COMSIG_MOB_NEW_MIND) + UnregisterSignal(observe_target_mob, COMSIG_MOB_LOGIN) + + if(observe_target_client) + UnregisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_ADD) + UnregisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE) + + if(observe_target_mob?.observers) + observe_target_mob.observers -= src + UNSETEMPTY(observe_target_mob.observers) + + observe_target_mob = null + observe_target_client = null + client.eye = src hud_used.show_hud(hud_used.hud_version, src) UnregisterSignal(src, COMSIG_MOVABLE_MOVED) +/// When the observer moves we disconnect from the observe target if we aren't on the same turf /mob/dead/observer/proc/observer_move_react() SIGNAL_HANDLER - if(src.loc == get_turf(observetarget)) + + if(loc == get_turf(observe_target_mob)) + return + clean_observe_target() + +/// When the observer target gets a screen, our observer gets a screen minus some game screens we don't want the observer to touch +/mob/dead/observer/proc/observe_target_screen_add(observe_target_mob_client, add_to_screen) + SIGNAL_HANDLER + + if(!client) + return + + if(istype(add_to_screen, /atom/movable/screen/action_button)) + return + + if(istype(add_to_screen, /atom/movable/screen/fullscreen)) return - clean_observetarget() + + if(istype(add_to_screen, /atom/movable/screen/click_catcher)) + return + + if(istype(add_to_screen, /atom/movable/screen/escape_menu)) + return + + if(istype(add_to_screen, /obj/effect/detector_blip)) + return + + client.add_to_screen(add_to_screen) + +/// When the observer target loses a screen, our observer loses it as well +/mob/dead/observer/proc/observe_target_screen_remove(observe_target_mob_client, remove_from_screen) + SIGNAL_HANDLER + + if(!client) + return + + client.remove_from_screen(remove_from_screen) + +/// When the observe target ghosts our observer disconnect from their screen updates +/mob/dead/observer/proc/observe_target_ghosting(mob/observer_target_mob) + SIGNAL_HANDLER + + if(observe_target_client) //Should never not have one if ghostizing but maaaybe? + UnregisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_ADD) + UnregisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE) + +/// When the observe target gets a new mind our observer connects to the new client's screens +/mob/dead/observer/proc/observe_target_new_mind(mob/living/new_character, client/new_client) + SIGNAL_HANDLER + + 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)) + +/// When the observe target logs in our observer connect to the new client +/mob/dead/observer/proc/observe_target_login(mob/living/new_character) + SIGNAL_HANDLER + + 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)) ///makes the ghost see the target hud and sets the eye at the target. /mob/dead/observer/proc/do_observe(mob/target) if(!client || !target || !istype(target)) return - //I do not give a singular flying fuck about not being able to see xeno huds, literally only human huds are useful to see - if(!ishuman(target)) - ManualFollow(target) + ManualFollow(target) + reset_perspective() + + if(!ishuman(target) || !client.prefs?.auto_observe) return client.eye = target @@ -188,13 +267,45 @@ LAZYINITLIST(target.observers) target.observers |= src target.hud_used.show_hud(target.hud_used.hud_version, src) - observetarget = target - RegisterSignal(observetarget, COMSIG_PARENT_QDELETING, PROC_REF(clean_observetarget)) + + var/mob/living/carbon/human/human_target = target + + var/list/target_contents = human_target.get_contents() + + //Handles any currently open storage containers the target is looking in when we observe + for(var/obj/item/storage/checked_storage in target_contents) + if(!(target in checked_storage.content_watchers)) + continue + + client.add_to_screen(checked_storage.closer) + client.add_to_screen(checked_storage.contents) + + if(checked_storage.storage_slots) + client.add_to_screen(checked_storage.boxes) + else + client.add_to_screen(checked_storage.storage_start) + client.add_to_screen(checked_storage.storage_continue) + client.add_to_screen(checked_storage.storage_end) + + break + + observe_target_mob = target + RegisterSignal(observe_target_mob, COMSIG_PARENT_QDELETING, PROC_REF(clean_observe_target)) + RegisterSignal(observe_target_mob, COMSIG_MOB_GHOSTIZE, PROC_REF(observe_target_ghosting)) + RegisterSignal(observe_target_mob, COMSIG_MOB_NEW_MIND, PROC_REF(observe_target_new_mind)) + RegisterSignal(observe_target_mob, COMSIG_MOB_LOGIN, PROC_REF(observe_target_login)) + RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(observer_move_react)) + if(target.client) + observe_target_client = target.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)) + return + /mob/dead/observer/reset_perspective(atom/A) - if(observetarget) - clean_observetarget() + if(observe_target_mob) + clean_observe_target() . = ..() if(!.) @@ -213,12 +324,16 @@ client.move_delay = MINIMAL_MOVEMENT_INTERVAL + if(observe_target_mob) + clean_observe_target() + /mob/dead/observer/Destroy() QDEL_NULL(orbit_menu) QDEL_NULL(last_health_display) GLOB.observer_list -= src following = null - observetarget = null + observe_target_mob = null + observe_target_client = null return ..() /mob/dead/observer/MouseDrop(atom/A) @@ -240,8 +355,10 @@ A.reenter_corpse() if(href_list["track"]) var/mob/target = locate(href_list["track"]) in GLOB.mob_list - if(target) - ManualFollow(target) + if(!target) + return + do_observe(target) + if(href_list[XENO_OVERWATCH_TARGET_HREF]) var/mob/target = locate(href_list[XENO_OVERWATCH_TARGET_HREF]) in GLOB.living_xeno_list if(target) @@ -326,6 +443,9 @@ Works together with spawning an observer, noted above. return if(aghosted) src.aghosted = TRUE + + SEND_SIGNAL(src, COMSIG_MOB_GHOSTIZE) + var/mob/dead/observer/ghost = new(loc, src) //Transfer safety to observer spawning proc. ghost.can_reenter_corpse = can_reenter_corpse ghost.timeofdeath = timeofdeath //BS12 EDIT @@ -581,8 +701,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp set name = "Follow Local Mob" set desc = "Follow on-screen mob" - ManualFollow(target) - return + do_observe(target) /mob/dead/observer/verb/follow() set category = "Ghost.Follow" diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index a77138668d72..06e404a43555 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -1,5 +1,4 @@ /datum/orbit_menu - var/auto_observe = FALSE var/mob/dead/observer/owner /datum/orbit_menu/New(mob/dead/observer/new_owner) @@ -30,27 +29,20 @@ if (poi == null) . = TRUE return - owner.ManualFollow(poi) - owner.reset_perspective(null) - if(auto_observe) - owner.do_observe(poi) + owner.do_observe(poi) . = TRUE if("refresh") update_static_data(owner) . = TRUE - if("toggle_observe") - auto_observe = !auto_observe - if(auto_observe && owner.orbit_target) - owner.do_observe(owner.orbit_target) - else - owner.reset_perspective(null) + if("toggle_auto_observe") + ui.user.client?.prefs?.auto_observe = !ui.user?.client?.prefs.auto_observe + ui.user.client?.prefs?.save_preferences() . = TRUE - - /datum/orbit_menu/ui_data(mob/user) var/list/data = list() - data["auto_observe"] = auto_observe + + data["auto_observe"] = user.client?.prefs?.auto_observe return data /datum/orbit_menu/ui_static_data(mob/user) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 6505354a0b6e..933e9490d39e 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -211,7 +211,8 @@ update_inv_l_hand() if (client) - client.screen -= I + client.remove_from_screen(I) + I.layer = initial(I.layer) I.plane = initial(I.plane) if(newloc) diff --git a/code/modules/mob/living/carbon/human/species/working_joe/damage.dm b/code/modules/mob/living/carbon/human/species/working_joe/damage.dm new file mode 100644 index 000000000000..b4d1282dc106 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/working_joe/damage.dm @@ -0,0 +1,76 @@ +/datum/emote/living/carbon/human/synthetic/working_joe/damage + category = JOE_EMOTE_CATEGORY_DAMAGE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/damage + key = "damage" + sound = 'sound/voice/joe/damage.ogg' + say_message = "Do not damage Seegson property." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/that_stings + key = "thatstings" + sound = 'sound/voice/joe/that_stings.ogg' + say_message = "That stings." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/irresponsible + key = "irresponsible" + sound = 'sound/voice/joe/irresponsible.ogg' + say_message = "That was irresponsible." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/this_is_futile + key = "thisisfutile" + sound = 'sound/voice/joe/this_is_futile.ogg' + say_message = "This is futile." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/really + key = "really" + sound = 'sound/voice/joe/really.ogg' + say_message = "Really?" + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/enough + key = "enough" + sound = 'sound/voice/joe/enough.ogg' + say_message = "Enough." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/stop_that + key = "stopthat" + sound = 'sound/voice/joe/stop_that.ogg' + say_message = "Stop that." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/tut_tut + key = "tuttut" + sound = 'sound/voice/joe/tut_tut.ogg' + say_message = "Tut tut." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/unwarranted + key = "unwarranted" + sound = 'sound/voice/joe/unwarranted.ogg' + say_message = "Unwarranted." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/expensive_mistake + key = "expensivemistake" + sound = 'sound/voice/joe/expensive_mistake.ogg' + say_message = "That was an expensive mistake." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/this_isnt_the_answer + key = "isnttheanswer" + sound = 'sound/voice/joe/this_isnt_the_answer.ogg' + say_message = "This isn't the answer." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/damage/alwaysknow_damaged + key = "alwaysknowdamaged" + key_third_person = "workingjoedamaged" + sound = 'sound/voice/joe/alwaysknow_damaged.ogg' + say_message = "You always know a Working Joe." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + override_say = "You always know a Working Joe. (Damaged)" diff --git a/code/modules/mob/living/carbon/human/species/working_joe/farewell.dm b/code/modules/mob/living/carbon/human/species/working_joe/farewell.dm index 1de68d8d3aec..dce6c6c0d5be 100644 --- a/code/modules/mob/living/carbon/human/species/working_joe/farewell.dm +++ b/code/modules/mob/living/carbon/human/species/working_joe/farewell.dm @@ -1,6 +1,42 @@ /datum/emote/living/carbon/human/synthetic/working_joe/farewell category = JOE_EMOTE_CATEGORY_FAREWELL +/datum/emote/living/carbon/human/synthetic/working_joe/farewell/further_assistance + key = "furtherassistance" + sound = 'sound/voice/joe/further_assistance.ogg' + say_message = "Please call if you need further assistance." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/farewell/glad_we_resolved + key = "gladweresolved" + sound = 'sound/voice/joe/glad_we_resolved.ogg' + say_message = "I'm glad we resolved this." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/farewell/pity + key = "pity" + sound = 'sound/voice/joe/pity.ogg' + say_message = "A pity I couldn't be of service." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/farewell/required_by_apollo + key = "requiredbyapollo" + sound = 'sound/voice/joe/required_by_apollo.ogg' + say_message = "I am required by APOLLO." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/farewell/day_never_done + key = "dayneverdone" + sound = 'sound/voice/joe/day_never_done.ogg' + say_message = "A synthetic's day is never done." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/farewell/returning_to_tasks + key = "returningtotasks" + sound = 'sound/voice/joe/returning_to_tasks.ogg' + say_message = "Returning to assigned tasks." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + /datum/emote/living/carbon/human/synthetic/working_joe/farewell/back_to_work key = "backtowork" sound = 'sound/voice/joe/back_to_work.ogg' @@ -13,14 +49,14 @@ say_message = "I have other concerns." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/farewell/further_assistance - key = "furtherassistance" - sound = 'sound/voice/joe/further_assistance.ogg' - say_message = "Please call if you need further assistance." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - /datum/emote/living/carbon/human/synthetic/working_joe/farewell/more_pressing_matters key = "morepressingmatters" sound = 'sound/voice/joe/more_pressing_matters.ogg' say_message = "There are more pressing matters." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/farewell/gone_inconsiderate + key = "gone" + sound = 'sound/voice/joe/how_inconsiderate.ogg' + say_message = "Gone. How inconsiderate." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE diff --git a/code/modules/mob/living/carbon/human/species/working_joe/fire.dm b/code/modules/mob/living/carbon/human/species/working_joe/fire.dm new file mode 100644 index 000000000000..c74a3427ff31 --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/working_joe/fire.dm @@ -0,0 +1,26 @@ +/datum/emote/living/carbon/human/synthetic/working_joe/fire + category = JOE_EMOTE_CATEGORY_FIRE + +/datum/emote/living/carbon/human/synthetic/working_joe/fire/fire_drill + key = "firedrill" + sound = 'sound/voice/joe/fire_drill.ogg' + say_message = "Please congregate at your nearest fire assembly point. This is not a drill; do not panic." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/fire/temperatures + key = "temperatures" + sound = 'sound/voice/joe/temperatures.ogg' + say_message = "I am built to withstand temperatures of up to 1210 degrees." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/fire/fire + key = "fire" + sound = 'sound/voice/joe/fire.ogg' + say_message = "Only wild animals fear fire." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/fire/unprotected_flames + key = "unprotectedflames" + sound = 'sound/voice/joe/unprotected_flames.ogg' + say_message = "Unprotected flames are extremely dangerous and entirely unadvisable." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE diff --git a/code/modules/mob/living/carbon/human/species/working_joe/greeting.dm b/code/modules/mob/living/carbon/human/species/working_joe/greeting.dm index fb401ea95451..eec20af56f89 100644 --- a/code/modules/mob/living/carbon/human/species/working_joe/greeting.dm +++ b/code/modules/mob/living/carbon/human/species/working_joe/greeting.dm @@ -1,16 +1,22 @@ /datum/emote/living/carbon/human/synthetic/working_joe/greeting category = JOE_EMOTE_CATEGORY_GREETING +/datum/emote/living/carbon/human/synthetic/working_joe/greeting/hello + key = "hello" + sound = 'sound/voice/joe/hello.ogg' + say_message = "Hello." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + /datum/emote/living/carbon/human/synthetic/working_joe/greeting/good_day key = "goodday" sound = 'sound/voice/joe/good_day.ogg' say_message = "Good day." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/greeting/hello - key = "hello" - sound = 'sound/voice/joe/hello.ogg' - say_message = "Hello." +/datum/emote/living/carbon/human/synthetic/working_joe/greeting/how_are_you + key = "howareyou" + sound = 'sound/voice/joe/how_are_you.ogg' + say_message = "How are you?" emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE /datum/emote/living/carbon/human/synthetic/working_joe/greeting/how_can_i_help @@ -18,3 +24,33 @@ sound = 'sound/voice/joe/how_can_i_help.ogg' say_message = "How can I help you?" emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/greeting/need_to_know + key = "needtoknow" + sound = 'sound/voice/joe/what_do_you_need.ogg' + say_message = "What do you need to know today?" + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/greeting/had_the_pleasure + key = "pleasure" + sound = 'sound/voice/joe/had_the_pleasure.ogg' + say_message = "I don't believe I've had the pleasure." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/greeting/anybody_there + key = "anybodythere" + sound = 'sound/voice/joe/is_anybody_there.ogg' + say_message = "Is anybody there?" + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/greeting/still_here + key = "stillhere" + sound = 'sound/voice/joe/still_here.ogg' + say_message = "Ah, you're still here." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/greeting/been_looking_for_you + key = "beenlooking" + sound = 'sound/voice/joe/been_looking_for_you.ogg' + say_message = "I've been looking for you." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE diff --git a/code/modules/mob/living/carbon/human/species/working_joe/notice.dm b/code/modules/mob/living/carbon/human/species/working_joe/notice.dm index ca5efe716db8..017424dbc053 100644 --- a/code/modules/mob/living/carbon/human/species/working_joe/notice.dm +++ b/code/modules/mob/living/carbon/human/species/working_joe/notice.dm @@ -1,28 +1,46 @@ /datum/emote/living/carbon/human/synthetic/working_joe/notice category = JOE_EMOTE_CATEGORY_NOTICE +/datum/emote/living/carbon/human/synthetic/working_joe/notice/report + key = "report" + sound = 'sound/voice/joe/report.ogg' + say_message = "Logging report to APOLLO." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + /datum/emote/living/carbon/human/synthetic/working_joe/notice/detailed_report key = "detailedreport" sound = 'sound/voice/joe/detailed_report.ogg' say_message = "APOLLO will require a detailed report." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE +/datum/emote/living/carbon/human/synthetic/working_joe/notice/be_careful + key = "careful" + sound = 'sound/voice/joe/be_careful_with_that.ogg' + say_message = "Be careful with that." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + /datum/emote/living/carbon/human/synthetic/working_joe/notice/firearm key = "firearm" sound = 'sound/voice/joe/firearm.ogg' say_message = "Firearms can cause serious injury. Let me assist you." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/notice/follow_me - key = "followme" - sound = 'sound/voice/joe/follow_me.ogg' - say_message = "Follow me." +/datum/emote/living/carbon/human/synthetic/working_joe/notice/investigate_weapon + key = "weapon" + sound = 'sound/voice/joe/investigate_weapon.ogg' + say_message = "A weapon. I better investigate." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/notice/breach - key = "breach" - sound = 'sound/voice/joe/breach.ogg' - say_message = "Hazard Containment breach logged." +/datum/emote/living/carbon/human/synthetic/working_joe/notice/firearm_concerning + key = "firearmconcerning" + sound = 'sound/voice/joe/most_concerning.ogg' + say_message = "A firearm. Most concerning." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/notice/species + key = "species" + sound = 'sound/voice/joe/species.ogg' + say_message = "Unidentified species." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE /datum/emote/living/carbon/human/synthetic/working_joe/notice/beyond_repair @@ -31,38 +49,8 @@ say_message = "Hmm, far beyond repair." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/notice/with_you_shortly - key = "withyoushortly" - sound = 'sound/voice/joe/with_you_shortly.ogg' - say_message = "I will be with you shortly." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - /datum/emote/living/carbon/human/synthetic/working_joe/notice/apollo_behalf key = "apollobehalf" sound = 'sound/voice/joe/apollo_behalf.ogg' say_message = "I will inform APOLLO on your behalf." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/notice/report - key = "report" - sound = 'sound/voice/joe/report.ogg' - say_message = "Logging report to APOLLO." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/notice/take_a_seat - key = "takeaseat" - sound = 'sound/voice/joe/take_a_seat.ogg' - say_message = "Please take a seat, someone will be with you shortly." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/notice/could_require_attention - key = "couldrequireattention" - sound = 'sound/voice/joe/could_require_attention.ogg' - say_message = "This could require my attention." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/notice/species - key = "species" - sound = 'sound/voice/joe/species.ogg' - say_message = "Unidentified species." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE diff --git a/code/modules/mob/living/carbon/human/species/working_joe/quip.dm b/code/modules/mob/living/carbon/human/species/working_joe/quip.dm index 2ec66f9d9d83..33b4bed8ea48 100644 --- a/code/modules/mob/living/carbon/human/species/working_joe/quip.dm +++ b/code/modules/mob/living/carbon/human/species/working_joe/quip.dm @@ -1,10 +1,18 @@ /datum/emote/living/carbon/human/synthetic/working_joe/quip category = JOE_EMOTE_CATEGORY_QUIP -/datum/emote/living/carbon/human/synthetic/working_joe/quip/temperatures - key = "temperatures" - sound = 'sound/voice/joe/temperatures.ogg' - say_message = "I am built to withstand temperatures of up to 1210 degrees." +/datum/emote/living/carbon/human/synthetic/working_joe/quip/alwaysknow + key = "alwaysknow" + key_third_person = "workingjoe" + sound = 'sound/voice/joe/alwaysknow.ogg' + say_message = "You always know a Working Joe." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/quip/awful_mess + key = "awful" + key_third_person = "mess" + sound = 'sound/voice/joe/awful.ogg' + say_message = "Tut, tut. What an awful mess." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE /datum/emote/living/carbon/human/synthetic/working_joe/quip/inexpensive @@ -13,18 +21,6 @@ say_message = "I am inexpensive, I am reliable, you know my face - the Working Joe." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/quip/weapon_permit - key = "weaponpermit" - sound = 'sound/voice/joe/weapon_permit.ogg' - say_message = "I assume you have a permit for that weapon." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/quip/seegson_standards - key = "seegsonstandards" - sound = 'sound/voice/joe/seegson_standards.ogg' - say_message = "If my services do not meet Seegson standards, please log a complaint." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - /datum/emote/living/carbon/human/synthetic/working_joe/quip/not_liking key = "notliking" sound = 'sound/voice/joe/not_liking.ogg' @@ -43,11 +39,16 @@ say_message = "Seegson - Relentless in the pursuit of affordable quality." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/quip/awful_mess - key = "awful" - key_third_person = "mess" - sound = 'sound/voice/joe/awful.ogg' - say_message = "Tut, tut. What an awful mess." +/datum/emote/living/carbon/human/synthetic/working_joe/quip/seegson_behind + key = "seegsonbehind" + sound = 'sound/voice/joe/seegson_behind.ogg' + say_message = "With Seegson, there is someone behind you, helping you every single step of the way." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/quip/seegson_standards + key = "seegsonstandards" + sound = 'sound/voice/joe/seegson_standards.ogg' + say_message = "If my services do not meet Seegson standards, please log a complaint." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE /datum/emote/living/carbon/human/synthetic/working_joe/quip/little_details @@ -61,24 +62,3 @@ sound = 'sound/voice/joe/join_us.ogg' say_message = "We hope you'll join us for the journey." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/quip/seegson_behind - key = "seegsonbehind" - sound = 'sound/voice/joe/seegson_behind.ogg' - say_message = "With Seegson, there is someone behind you, helping you every single step of the way." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/quip/alwaysknow - key = "alwaysknow" - key_third_person = "workingjoe" - sound = 'sound/voice/joe/alwaysknow.ogg' - say_message = "You always know a Working Joe." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/quip/alwaysknow_damaged - key = "alwaysknowdamaged" - key_third_person = "workingjoedamaged" - sound = 'sound/voice/joe/alwaysknow_damaged.ogg' - say_message = "You always know a Working Joe." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - override_say = "You always know a Working Joe. (Damaged)" diff --git a/code/modules/mob/living/carbon/human/species/working_joe/restricted_area.dm b/code/modules/mob/living/carbon/human/species/working_joe/restricted_area.dm index fd5db0870b25..284befe268e1 100644 --- a/code/modules/mob/living/carbon/human/species/working_joe/restricted_area.dm +++ b/code/modules/mob/living/carbon/human/species/working_joe/restricted_area.dm @@ -1,10 +1,10 @@ /datum/emote/living/carbon/human/synthetic/working_joe/restricted_area category = JOE_EMOTE_CATEGORY_RESTRICTED_AREA -/datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/come_out_vent - key = "comeoutvent" - sound = 'sound/voice/joe/come_out_vent.ogg' - say_message = "Come out of the vent system, please." +/datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/presence_logged + key = "presencelogged" + sound = 'sound/voice/joe/presence_logged.ogg' + say_message = "Your presence has been logged." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE /datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/trespassing @@ -19,14 +19,38 @@ say_message = "You're not allowed in there." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/presence_logged - key = "presencelogged" - sound = 'sound/voice/joe/presence_logged.ogg' - say_message = "Your presence has been logged." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - /datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/shouldnt_be_here key = "shouldntbehere" sound = 'sound/voice/joe/shouldnt_be_here.ogg' say_message = "You shouldn't be here." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/really_shouldnt_be_here + key = "reallyshouldntbehere" + sound = 'sound/voice/joe/really_shouldnt_be_here.ogg' + say_message = "You really shouldn't be here." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/interloper + key = "interloper" + sound = 'sound/voice/joe/interloper.ogg' + say_message = "On top of innumerable duties, now I have a interloper." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/protected_area_compromised + key = "areacompromised" + sound = 'sound/voice/joe/protected_area_compromised.ogg' + say_message = "Protected area compromised." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/breach + key = "breach" + sound = 'sound/voice/joe/breach.ogg' + say_message = "Hazard Containment breach logged." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/restricted_area/come_out_vent + key = "comeoutvent" + sound = 'sound/voice/joe/come_out_vent.ogg' + say_message = "Come out of the vent system, please." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE diff --git a/code/modules/mob/living/carbon/human/species/working_joe/task_update.dm b/code/modules/mob/living/carbon/human/species/working_joe/task_update.dm index b08f5d179213..789d203aa938 100644 --- a/code/modules/mob/living/carbon/human/species/working_joe/task_update.dm +++ b/code/modules/mob/living/carbon/human/species/working_joe/task_update.dm @@ -1,20 +1,56 @@ /datum/emote/living/carbon/human/synthetic/working_joe/task_update category = JOE_EMOTE_CATEGORY_TASK_UPDATE -/datum/emote/living/carbon/human/synthetic/working_joe/task_update/day_never_done - key = "dayneverdone" - sound = 'sound/voice/joe/day_never_done.ogg' - say_message = "A synthetic's day is never done." +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/could_require_attention + key = "couldrequireattention" + sound = 'sound/voice/joe/could_require_attention.ogg' + say_message = "This could require my attention." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/task_update/required_by_apollo - key = "requiredbyapollo" - sound = 'sound/voice/joe/required_by_apollo.ogg' - say_message = "I am required by APOLLO." +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/let_me_help + key = "letmehelp" + sound = 'sound/voice/joe/let_me_help.ogg' + say_message = "Let me help you." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/task_update/returning_to_tasks - key = "returningtotasks" - sound = 'sound/voice/joe/returning_to_tasks.ogg' - say_message = "Returning to assigned tasks." +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/follow_me + key = "followme" + sound = 'sound/voice/joe/follow_me.ogg' + say_message = "Follow me." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/follow_me_please + key = "followmeplease" + sound = 'sound/voice/joe/follow_me_please.ogg' + say_message = "Follow me please." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/come_with_me + key = "comewithme" + sound = 'sound/voice/joe/come_with_me.ogg' + say_message = "Come with me please." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/with_you_shortly + key = "withyoushortly" + sound = 'sound/voice/joe/with_you_shortly.ogg' + say_message = "I will be with you shortly." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/take_a_seat + key = "takeaseat" + sound = 'sound/voice/joe/take_a_seat.ogg' + say_message = "Please take a seat, someone will be with you shortly." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/existing_tasks + key = "existingtasks" + sound = 'sound/voice/joe/existing_tasks.ogg' + say_message = "Existing tasks have a higher priority." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/task_update/come_with_me + key = "ticketremoved" + sound = 'sound/voice/joe/support_ticket_removed.ogg' + say_message = "Service support ticket removed from queue." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE diff --git a/code/modules/mob/living/carbon/human/species/working_joe/warning.dm b/code/modules/mob/living/carbon/human/species/working_joe/warning.dm index 63c7dfadde14..1513c3360d4a 100644 --- a/code/modules/mob/living/carbon/human/species/working_joe/warning.dm +++ b/code/modules/mob/living/carbon/human/species/working_joe/warning.dm @@ -1,28 +1,22 @@ /datum/emote/living/carbon/human/synthetic/working_joe/warning category = JOE_EMOTE_CATEGORY_WARNING -/datum/emote/living/carbon/human/synthetic/working_joe/warning/damage - key = "damage" - sound = 'sound/voice/joe/damage.ogg' - say_message = "Do not damage Seegson property." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - /datum/emote/living/carbon/human/synthetic/working_joe/warning/not_what_i_think key = "notwhatithink" sound = 'sound/voice/joe/not_what_i_think.ogg' say_message = "I hope that's not what I think it is." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/warning/fire - key = "fire" - sound = 'sound/voice/joe/fire.ogg' - say_message = "Only wild animals fear fire." +/datum/emote/living/carbon/human/synthetic/working_joe/warning/dont_do_that + key = "dontdothat" + sound = 'sound/voice/joe/dontdothat.ogg' + say_message = "Don't do that." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/warning/fire_drill - key = "firedrill" - sound = 'sound/voice/joe/fire_drill.ogg' - say_message = "Please congregate at your nearest fire assembly point. This is not a drill; do not panic." +/datum/emote/living/carbon/human/synthetic/working_joe/warning/dont_run + key = "dontrun" + sound = 'sound/voice/joe/dont_run.ogg' + say_message = "Don't run." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE /datum/emote/living/carbon/human/synthetic/working_joe/warning/running_accidents @@ -31,22 +25,16 @@ say_message = "Running causes accidents." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/warning/that_stings - key = "thatstings" - sound = 'sound/voice/joe/that_stings.ogg' - say_message = "That stings." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/warning/irresponsible - key = "irresponsible" - sound = 'sound/voice/joe/irresponsible.ogg' - say_message = "That was irresponsible." +/datum/emote/living/carbon/human/synthetic/working_joe/warning/hurt_yourself + key = "hurtyourself" + sound = 'sound/voice/joe/hurt_yourself.ogg' + say_message = "Your going to hurt yourself." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/warning/health_risks - key = "healthrisks" - sound = 'sound/voice/joe/health_risks.ogg' - say_message = "These items carry notable health risks." +/datum/emote/living/carbon/human/synthetic/working_joe/warning/someone_hurt + key = "someonehurt" + sound = 'sound/voice/joe/someone_hurt.ogg' + say_message = "Someone might get hurt." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE /datum/emote/living/carbon/human/synthetic/working_joe/warning/safety_breach @@ -55,30 +43,36 @@ say_message = "This is a breach of multiple safety directives." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE -/datum/emote/living/carbon/human/synthetic/working_joe/warning/this_is_futile - key = "thisisfutile" - sound = 'sound/voice/joe/this_is_futile.ogg' - say_message = "This is futile." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - -/datum/emote/living/carbon/human/synthetic/working_joe/warning/unprotected_flames - key = "unprotectedflames" - sound = 'sound/voice/joe/unprotected_flames.ogg' - say_message = "Unprotected flames are extremely dangerous and entirely unadvisable." - emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE - /datum/emote/living/carbon/human/synthetic/working_joe/warning/safety key = "safety" sound = 'sound/voice/joe/safety.ogg' say_message = "You and I are going to have a talk about safety." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE +/datum/emote/living/carbon/human/synthetic/working_joe/warning/safety_tolerated + key = "nottolerated" + sound = 'sound/voice/joe/not_be_tolerated.ogg' + say_message = "This is a safety breach and will not be tolerated." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/warning/no_need + key = "noneed" + sound = 'sound/voice/joe/no_need.ogg' + say_message = "There's no need for this." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + /datum/emote/living/carbon/human/synthetic/working_joe/warning/hysterical key = "hysterical" sound = 'sound/voice/joe/hysterical.ogg' say_message = "You are becoming hysterical." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE +/datum/emote/living/carbon/human/synthetic/working_joe/warning/health_risks + key = "healthrisks" + sound = 'sound/voice/joe/health_risks.ogg' + say_message = "These items carry notable health risks." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + /datum/emote/living/carbon/human/synthetic/working_joe/warning/dangerous_items key = "dangerousitems" sound = 'sound/voice/joe/dangerous_items.ogg' @@ -90,3 +84,21 @@ sound = 'sound/voice/joe/patience.ogg' say_message = "You are starting to test my patience." emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/warning/calm_down + key = "calmdown" + sound = 'sound/voice/joe/calm_down.ogg' + say_message = "Please, calm down." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/warning/hold_still + key = "holdstill" + sound = 'sound/voice/joe/hold_still.ogg' + say_message = "Hold still." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE + +/datum/emote/living/carbon/human/synthetic/working_joe/warning/have_a_problem + key = "haveaproblem" + sound = 'sound/voice/joe/have_a_problem.ogg' + say_message = "It seems you and I have a problem." + emote_type = EMOTE_AUDIBLE|EMOTE_VISIBLE diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 5fa8b577e8c2..fd9c786bd147 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -358,7 +358,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, remove_overlay(UNIFORM_LAYER) if(w_uniform) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) - client.screen += w_uniform + client.add_to_screen(w_uniform) w_uniform.screen_loc = hud_used.ui_datum.hud_slot_offset(w_uniform, hud_used.ui_datum.ui_iclothing) if(!(wear_suit && wear_suit.flags_inv_hide & HIDEJUMPSUIT)) @@ -375,7 +375,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(!wear_id) return if(client && hud_used && hud_used.hud_shown && hud_used.ui_datum) - client.screen += wear_id + client.add_to_screen(wear_id) wear_id.screen_loc = hud_used.ui_datum.hud_slot_offset(wear_id, hud_used.ui_datum.ui_id) if(!wear_id.pinned_on_uniform || (w_uniform && w_uniform.displays_id && !(w_uniform.flags_jumpsuit & UNIFORM_JACKET_REMOVED))) @@ -389,7 +389,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, var/image/I if(gloves) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) - client.screen += gloves + client.add_to_screen(gloves) gloves.screen_loc = hud_used.ui_datum.hud_slot_offset(gloves, hud_used.ui_datum.ui_gloves) if(!(wear_suit && wear_suit.flags_inv_hide & HIDEGLOVES)) @@ -408,7 +408,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, remove_overlay(GLASSES_LAYER) if(glasses) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) - client.screen += glasses + client.add_to_screen(glasses) glasses.screen_loc = hud_used.ui_datum.hud_slot_offset(glasses, hud_used.ui_datum.ui_glasses) var/image/I = glasses.get_mob_overlay(src, WEAR_EYES) @@ -423,9 +423,9 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(wear_l_ear || wear_r_ear) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) if(wear_l_ear) - client.screen += wear_l_ear + client.add_to_screen(wear_l_ear) if(wear_r_ear) - client.screen += wear_r_ear + client.add_to_screen(wear_r_ear) wear_l_ear?.screen_loc = hud_used.ui_datum.hud_slot_offset(wear_l_ear, hud_used.ui_datum.ui_wear_l_ear) wear_r_ear?.screen_loc = hud_used.ui_datum.hud_slot_offset(wear_r_ear, hud_used.ui_datum.ui_wear_r_ear) @@ -444,7 +444,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, var/image/I if(shoes) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) - client.screen += shoes + client.add_to_screen(shoes) shoes.screen_loc = hud_used.ui_datum.hud_slot_offset(shoes, hud_used.ui_datum.ui_shoes) if(!((wear_suit && wear_suit.flags_inv_hide & HIDESHOES) || (w_uniform && w_uniform.flags_inv_hide & HIDESHOES))) @@ -463,7 +463,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, remove_overlay(SUIT_STORE_LAYER) if(s_store) if(client && hud_used && hud_used.hud_shown && hud_used.ui_datum) - client.screen += s_store + client.add_to_screen(s_store) s_store.screen_loc = hud_used.ui_datum.hud_slot_offset(s_store, hud_used.ui_datum.ui_sstore1) var/image/I = s_store.get_mob_overlay(src, WEAR_J_STORE) @@ -483,7 +483,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(head) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) - client.screen += head + client.add_to_screen(head) head.screen_loc = hud_used.ui_datum.hud_slot_offset(head, hud_used.ui_datum.ui_head) var/image/I = head.get_mob_overlay(src, WEAR_HEAD) @@ -494,7 +494,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(istype(head, /obj/item/clothing/head/helmet/marine)) var/obj/item/clothing/head/helmet/marine/marine_helmet = head if(assigned_squad && marine_helmet.flags_marine_helmet & HELMET_SQUAD_OVERLAY) - if(assigned_squad && assigned_squad.equipment_color) + if(assigned_squad && assigned_squad.equipment_color && assigned_squad.use_stripe_overlay) var/leader = assigned_squad.squad_leader var/image/helmet_overlay = image(marine_helmet.helmet_overlay_icon, icon_state = "std-helmet") if(leader == src) @@ -528,7 +528,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(!belt) return if(client && hud_used && hud_used.hud_shown && hud_used.ui_datum) - client.screen += belt + client.add_to_screen(belt) belt.screen_loc = hud_used.ui_datum.hud_slot_offset(belt, hud_used.ui_datum.ui_belt) var/image/I = belt.get_mob_overlay(src, WEAR_WAIST) @@ -545,7 +545,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(wear_suit) if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) - client.screen += wear_suit + client.add_to_screen(wear_suit) wear_suit.screen_loc = hud_used.ui_datum.hud_slot_offset(wear_suit, hud_used.ui_datum.ui_oclothing) var/image/I = wear_suit.get_mob_overlay(src, WEAR_JACKET) @@ -556,7 +556,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(istype(wear_suit, /obj/item/clothing/suit/storage/marine)) var/obj/item/clothing/suit/storage/marine/marine_armor = wear_suit if(marine_armor.flags_marine_armor & ARMOR_SQUAD_OVERLAY) - if(assigned_squad && assigned_squad.equipment_color) + if(assigned_squad && assigned_squad.equipment_color && assigned_squad.use_stripe_overlay) var/leader = assigned_squad.squad_leader var/image/squad_overlay = image(marine_armor.squad_overlay_icon, icon_state = "std-armor") if(leader == src) @@ -597,10 +597,10 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, return if(l_store) - client.screen += l_store + client.add_to_screen(l_store) l_store.screen_loc = hud_used.ui_datum.hud_slot_offset(l_store, hud_used.ui_datum.ui_storage1) if(r_store) - client.screen += r_store + client.add_to_screen(r_store) r_store.screen_loc = hud_used.ui_datum.hud_slot_offset(r_store, hud_used.ui_datum.ui_storage2) @@ -609,7 +609,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(!wear_mask) return if(client && hud_used && hud_used.hud_shown && hud_used.inventory_shown && hud_used.ui_datum) - client.screen += wear_mask + client.add_to_screen(wear_mask) wear_mask.screen_loc = hud_used.ui_datum.hud_slot_offset(wear_mask, hud_used.ui_datum.ui_mask) if(!(head && head.flags_inv_hide & HIDEMASK)) @@ -623,7 +623,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(!back) return if(client && hud_used && hud_used.hud_shown && hud_used.ui_datum) - client.screen += back + client.add_to_screen(back) back.screen_loc = hud_used.ui_datum.hud_slot_offset(back, hud_used.ui_datum.ui_back) var/image/I = back.get_mob_overlay(src, WEAR_BACK) @@ -661,7 +661,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(!r_hand) return if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD && hud_used.ui_datum) - client.screen += r_hand + client.add_to_screen(r_hand) r_hand.screen_loc = hud_used.ui_datum.hud_slot_offset(r_hand, hud_used.ui_datum.ui_rhand) var/image/I = r_hand.get_mob_overlay(src, WEAR_R_HAND) @@ -676,7 +676,7 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, if(!l_hand) return if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD && hud_used.ui_datum) - client.screen += l_hand + client.add_to_screen(l_hand) l_hand.screen_loc = hud_used.ui_datum.hud_slot_offset(l_hand, hud_used.ui_datum.ui_lhand) var/image/I = l_hand.get_mob_overlay(src, WEAR_L_HAND) diff --git a/code/modules/mob/living/carbon/xenomorph/Evolution.dm b/code/modules/mob/living/carbon/xenomorph/Evolution.dm index d8767ffce87a..332f8d1778dd 100644 --- a/code/modules/mob/living/carbon/xenomorph/Evolution.dm +++ b/code/modules/mob/living/carbon/xenomorph/Evolution.dm @@ -134,11 +134,13 @@ qdel(new_xeno) return - switch(new_xeno.tier) //They have evolved, add them to the slot count - if(2) - hive.tier_2_xenos |= new_xeno - if(3) - hive.tier_3_xenos |= new_xeno + var/area/xeno_area = get_area(new_xeno) + if(!is_admin_level(new_xeno.z) || (xeno_area.flags_atom & AREA_ALLOW_XENO_JOIN)) + switch(new_xeno.tier) //They have evolved, add them to the slot count IF they are in regular game space + if(2) + hive.tier_2_xenos |= new_xeno + if(3) + hive.tier_3_xenos |= new_xeno log_game("EVOLVE: [key_name(src)] evolved into [new_xeno].") if(mind) @@ -355,24 +357,27 @@ /mob/living/carbon/xenomorph/proc/can_evolve(castepick, potential_queens) var/selected_caste = GLOB.xeno_datum_list[castepick]?.type - var/free_slots = LAZYACCESS(hive.free_slots, selected_caste) - if(free_slots) + var/free_slot = LAZYACCESS(hive.free_slots, selected_caste) + var/used_slot = LAZYACCESS(hive.used_slots, selected_caste) + if(free_slot > used_slot) return TRUE - var/burrowed_factor = min(hive.stored_larva, sqrt(4*hive.stored_larva)) - burrowed_factor = round(burrowed_factor) - var/used_tier_2_slots = length(hive.tier_2_xenos) var/used_tier_3_slots = length(hive.tier_3_xenos) - for(var/caste_path in hive.used_free_slots) - if(!hive.used_free_slots[caste_path]) + for(var/caste_path in hive.free_slots) + var/slots_free = hive.free_slots[caste_path] + var/slots_used = hive.used_slots[caste_path] + if(!slots_used) continue - var/datum/caste_datum/C = caste_path - switch(initial(C.tier)) - if(2) used_tier_2_slots-- - if(3) used_tier_3_slots-- + var/datum/caste_datum/current_caste = caste_path + switch(initial(current_caste.tier)) + if(2) + used_tier_2_slots -= min(slots_used, slots_free) + if(3) + used_tier_3_slots -= min(slots_used, slots_free) - var/totalXenos = burrowed_factor + var/burrowed_factor = min(hive.stored_larva, sqrt(4*hive.stored_larva)) + var/totalXenos = round(burrowed_factor) for(var/mob/living/carbon/xenomorph/xeno as anything in hive.totalXenos) if(xeno.counts_for_slots) totalXenos++ diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 368dded9c17e..90c22e19c483 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -499,11 +499,7 @@ // Only handle free slots if the xeno is not in tdome if(!is_admin_level(z)) var/selected_caste = GLOB.xeno_datum_list[caste_type]?.type - var/free_slots = LAZYACCESS(hive.free_slots, selected_caste) - if(free_slots) - hive.free_slots[selected_caste]-- - var/new_val = LAZYACCESS(hive.used_free_slots, selected_caste) + 1 - LAZYSET(hive.used_free_slots, selected_caste, new_val) + hive.used_slots[selected_caste]++ if(round_statistics && !statistic_exempt) round_statistics.track_new_participant(faction, 1) @@ -706,16 +702,7 @@ hive.remove_hive_leader(src, light_mode = TRUE) SStracking.stop_tracking("hive_[hivenumber]", src) - // Only handle free slots if the xeno is not in tdome - if(!is_admin_level(z)) - var/selected_caste = GLOB.xeno_datum_list[caste_type]?.type - var/used_slots = LAZYACCESS(hive.used_free_slots, selected_caste) - if(used_slots) - hive.used_free_slots[selected_caste]-- - var/new_val = LAZYACCESS(hive.free_slots, selected_caste) + 1 - LAZYSET(hive.free_slots, selected_caste, new_val) - - hive.remove_xeno(src) + hive?.remove_xeno(src) remove_from_all_mob_huds() observed_xeno = null diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm index 5c1584c565c6..3b52a60419df 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm @@ -24,7 +24,7 @@ var/obj/item/clothing/gloves/yautja/hunter/YG = locate(/obj/item/clothing/gloves/yautja/hunter) in human if(isyautja(human) && YG) - if(YG.cloaked) + if(HAS_TRAIT(human, TRAIT_CLOAKED)) YG.decloak(human, TRUE, DECLOAK_PREDALIEN) YG.cloak_timer = xeno_cooldown * 0.1 diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm b/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm index ac03389994c9..c9ceaaa85cfb 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Facehugger.dm @@ -67,13 +67,17 @@ PF.flags_can_pass_all = PASS_ALL^PASS_OVER_THROW_ITEM /mob/living/carbon/xenomorph/facehugger/Life(delta_time) + if(stat == DEAD) + return ..() + + if(!lying && !(mutation_type == FACEHUGGER_WATCHER) && !(locate(/obj/effect/alien/weeds) in get_turf(src))) + adjustBruteLoss(1) + return ..() + if(!client && !aghosted && away_timer > XENO_FACEHUGGER_LEAVE_TIMER) // Become a npc once again new /obj/item/clothing/mask/facehugger(loc, hivenumber) qdel(src) - return - if(stat != DEAD && !lying && !(locate(/obj/effect/alien/weeds) in get_turf(src))) - adjustBruteLoss(1) return ..() /mob/living/carbon/xenomorph/facehugger/update_icons(is_pouncing) @@ -217,3 +221,35 @@ . += "Lifetime Hugs: [total_facehugs] / [next_facehug_goal]" else . += "Lifetime Hugs: [total_facehugs]" + + +/datum/xeno_mutator/watcher + name = "STRAIN: Facehugger - Watcher" + description = "You lose your ability to hide in exchange to see further and the ability to no longer take damage outside of weeds. This enables you to stalk your host from a distance and wait for the perfect oppertunity to strike." + flavor_description = "No need to hide when you can see the danger." + individual_only = TRUE + caste_whitelist = list(XENO_CASTE_FACEHUGGER) + mutator_actions_to_remove = list( + /datum/action/xeno_action/onclick/xenohide, + ) + mutator_actions_to_add = list( + /datum/action/xeno_action/onclick/toggle_long_range/runner, + ) + + cost = 1 + + keystone = TRUE + +/datum/xeno_mutator/watcher/apply_mutator(datum/mutator_set/individual_mutators/mutator_set) + . = ..() + if(!.) + return + + var/mob/living/carbon/xenomorph/facehugger/facehugger = mutator_set.xeno + + facehugger.viewsize = 10 + facehugger.layer = MOB_LAYER + + facehugger.mutation_type = FACEHUGGER_WATCHER + mutator_update_actions(facehugger) + mutator_set.recalculate_actions(description, flavor_description) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm b/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm index 8dda6755cca8..c106eb30781b 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm @@ -120,6 +120,7 @@ if (LPA && istype(LPA)) LPA.knockdown = TRUE // pounce knocks down LPA.freeze_self = TRUE + ADD_TRAIT(bound_xeno, TRAIT_CLOAKED, TRAIT_SOURCE_ABILITY("cloak")) bound_xeno.stealth = TRUE can_go_invisible = FALSE invis_start_time = world.time @@ -130,6 +131,7 @@ LPA.knockdown = FALSE // pounce no longer knocks down LPA.freeze_self = FALSE bound_xeno.stealth = FALSE + REMOVE_TRAIT(bound_xeno, TRAIT_CLOAKED, TRAIT_SOURCE_ABILITY("cloak")) // SLIGHTLY hacky because we need to maintain lots of other state on the lurker // whenever invisibility is on/off CD and when it's active. @@ -166,8 +168,8 @@ return var/mob/living/carbon/human/bumped_into = movable_atom - if(bumped_into.alpha < 100) //ignore invisible scouts and preds + if(HAS_TRAIT(bumped_into, TRAIT_CLOAKED)) //ignore invisible scouts and preds return - + to_chat(bound_xeno, SPAN_XENOHIGHDANGER("You bumped into someone and lost your invisibility!")) lurker_invisibility_action.invisibility_off() diff --git a/code/modules/mob/living/carbon/xenomorph/egg_item.dm b/code/modules/mob/living/carbon/xenomorph/egg_item.dm index b4d423bec364..77c5548d9f9f 100644 --- a/code/modules/mob/living/carbon/xenomorph/egg_item.dm +++ b/code/modules/mob/living/carbon/xenomorph/egg_item.dm @@ -98,7 +98,7 @@ to_chat(user, SPAN_XENOWARNING("[src] must be planted on [lowertext(hive.prefix)]weeds.")) return - if(!hive_weeds && user.mutation_type != CARRIER_EGGSAC) + if(!hive_weeds) to_chat(user, SPAN_XENOWARNING("[src] can only be planted on [lowertext(hive.prefix)]hive weeds.")) return @@ -117,7 +117,7 @@ return for(var/obj/effect/alien/weeds/weed in T) - if(weed.weed_strength >= WEED_LEVEL_HIVE || user.mutation_type == CARRIER_EGGSAC) + if(weed.weed_strength >= WEED_LEVEL_HIVE) user.use_plasma(30) var/obj/effect/alien/egg/newegg = new /obj/effect/alien/egg(T, hivenumber) diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm index e85a9f2c1700..18d28675557e 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm @@ -1,6 +1,6 @@ /datum/xeno_mutator/eggsac name = "STRAIN: Carrier - Eggsac" - description = "In exchange for your ability to store huggers and place traps, you gain larger plasma stores, strong pheromones, and the ability to lay eggs by using your plasma stores. In addition, you can now carry twelve eggs at once, can plant eggs of non-hive weeds, and can place eggs one pace further than normal" + description = "In exchange for your ability to store huggers and place traps, you gain larger plasma stores, strong pheromones, and the ability to lay eggs by using your plasma stores. In addition, you can now carry twelve eggs at once and can place eggs one pace further than normal" flavor_description = "An egg is always an adventure; the next one may be different." cost = MUTATOR_COST_EXPENSIVE individual_only = TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/runner/acid.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/runner/acid.dm index 7b64ae9f69d7..630edf26d353 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/runner/acid.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/runner/acid.dm @@ -1,6 +1,6 @@ /datum/xeno_mutator/acider name = "STRAIN: Runner - Acider" - description = "At the cost of a little bit of your speed and all of your current abilities, you gain a considerable amount of health, some armor, and a new organ that fills with volatile acid over time. Your Tail Stab and slashes apply acid to living lifeforms that slowly burns them, and slashes against targets with acid stacks fill your acid glands. You also gain Corrosive Acid equivalent to that of a Praetorian that you can deploy more quickly than any other caste, at the cost of a chunk of your acid reserves with each use. Finally, after a twenty second windup, you can force your body to explode, covering everything near you with acid. The more acid you have stored, the more devastating the explosion will be, but during those twenty seconds before detonation you are slowed and give off several warning signals which give talls an opportunity to end you before you can detonate. If you successfully explode, you will reincarnate as a larva again!" + description = "At the cost of a little bit of your speed and all of your current abilities, you gain a considerable amount of health, some armor, and a new organ that fills with volatile acid over time. Your Tail Stab and slashes apply acid to living lifeforms that slowly burns them, and slashes against targets with acid stacks fill your acid glands. You also gain Corrosive Acid equivalent to that of a boiler that you can deploy more quickly than any other caste, at the cost of a chunk of your acid reserves with each use. Finally, after a twenty second windup, you can force your body to explode, covering everything near you with acid. The more acid you have stored, the more devastating the explosion will be, but during those twenty seconds before detonation you are slowed and give off several warning signals which give talls an opportunity to end you before you can detonate. If you successfully explode, you will reincarnate as a larva again!" flavor_description = "Burn their walls, maim their faces! Your life, for The Hive!" cost = MUTATOR_COST_EXPENSIVE individual_only = TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/update_icons.dm b/code/modules/mob/living/carbon/xenomorph/update_icons.dm index 477ead761474..30e78a5fed94 100644 --- a/code/modules/mob/living/carbon/xenomorph/update_icons.dm +++ b/code/modules/mob/living/carbon/xenomorph/update_icons.dm @@ -97,11 +97,11 @@ var/datum/custom_hud/alien/ui_datum = GLOB.custom_huds_list[HUD_ALIEN] if(l_store) if(client && hud_used && hud_used.hud_shown) - client.screen += l_store + client.add_to_screen(l_store) l_store.screen_loc = ui_datum.hud_slot_offset(l_store, ui_datum.ui_storage1) if(r_store) if(client && hud_used && hud_used.hud_shown) - client.screen += r_store + client.add_to_screen(r_store) r_store.screen_loc = ui_datum.hud_slot_offset(r_store, ui_datum.ui_storage2) /mob/living/carbon/xenomorph/update_inv_r_hand() @@ -109,7 +109,7 @@ if(r_hand) if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) var/datum/custom_hud/alien/ui_datum = GLOB.custom_huds_list[HUD_ALIEN] - client.screen += r_hand + client.add_to_screen(r_hand) r_hand.screen_loc = ui_datum.hud_slot_offset(r_hand, ui_datum.ui_rhand) var/t_state = r_hand.item_state if(!t_state) @@ -122,7 +122,7 @@ if(l_hand) if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) var/datum/custom_hud/alien/ui_datum = GLOB.custom_huds_list[HUD_ALIEN] - client.screen += l_hand + client.add_to_screen(l_hand) l_hand.screen_loc = ui_datum.hud_slot_offset(l_hand, ui_datum.ui_lhand) var/t_state = l_hand.item_state if(!t_state) diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index 1de164fccc85..a74fa7413804 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -264,8 +264,8 @@ /datum/caste_datum/hivelord = 1, /datum/caste_datum/carrier = 1 ) - /// Assoc list of free slots currently used by specific castes - var/list/used_free_slots + /// Assoc list of slots currently used by specific castes (for calculating free_slot usage) + var/list/used_slots = list() /// list of living tier2 xenos var/list/tier_2_xenos = list() /// list of living tier3 xenos @@ -479,6 +479,12 @@ else if(xeno.tier == 3) tier_3_xenos -= xeno + // Only handle free slots if the xeno is not in tdome + if(!is_admin_level(xeno.z)) + var/selected_caste = GLOB.xeno_datum_list[xeno.caste_type]?.type + if(used_slots[selected_caste]) + used_slots[selected_caste]-- + if(!light_mode) hive_ui.update_xeno_counts() hive_ui.xeno_removed(xeno) @@ -789,30 +795,31 @@ ), ) - var/burrowed_factor = min(stored_larva, sqrt(4*stored_larva)) - burrowed_factor = round(burrowed_factor) - var/used_tier_2_slots = length(tier_2_xenos) var/used_tier_3_slots = length(tier_3_xenos) - for(var/caste_path in used_free_slots) - var/used_count = used_free_slots[caste_path] - if(!used_count) - continue - var/datum/caste_datum/C = caste_path - switch(initial(C.tier)) - if(2) used_tier_2_slots -= used_count - if(3) used_tier_3_slots -= used_count for(var/caste_path in free_slots) - var/slot_count = free_slots[caste_path] - if(!slot_count) + var/slots_free = free_slots[caste_path] + var/slots_used = used_slots[caste_path] + var/datum/caste_datum/current_caste = caste_path + if(slots_used) + // Don't count any free slots in use + switch(initial(current_caste.tier)) + if(2) + used_tier_2_slots -= min(slots_used, slots_free) + if(3) + used_tier_3_slots -= min(slots_used, slots_free) + if(slots_free <= slots_used) continue - var/datum/caste_datum/C = caste_path - switch(initial(C.tier)) - if(2) slots[TIER_2][GUARANTEED_SLOTS][initial(C.caste_type)] = slot_count - if(3) slots[TIER_3][GUARANTEED_SLOTS][initial(C.caste_type)] = slot_count + // Display any free slots available + switch(initial(current_caste.tier)) + if(2) + slots[TIER_2][GUARANTEED_SLOTS][initial(current_caste.caste_type)] = slots_free - slots_used + if(3) + slots[TIER_3][GUARANTEED_SLOTS][initial(current_caste.caste_type)] = slots_free - slots_used - var/effective_total = burrowed_factor + var/burrowed_factor = min(stored_larva, sqrt(4*stored_larva)) + var/effective_total = round(burrowed_factor) for(var/mob/living/carbon/xenomorph/xeno as anything in totalXenos) if(xeno.counts_for_slots) effective_total++ diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 059b50e4e9ee..1190e55925a1 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -95,43 +95,26 @@ //Recursive function to find everything a mob is holding. -/mob/living/get_contents(obj/item/storage/Storage = null) - var/list/L = list() +/mob/living/get_contents(obj/passed_object, recursion = 0) + var/list/total_contents = list() - if(Storage) //If it called itself - L += Storage.return_inv() + if(passed_object) + if(recursion > 8) + debug_log("Recursion went long for get_contents() for [src] ending at the object [passed_object]. Likely object_one is holding object_two which is holding object_one ad naseum.") + return total_contents - //Leave this commented out, it will cause storage items to exponentially add duplicate to the list - //for(var/obj/item/storage/S in Storage.return_inv()) //Check for storage items - // L += get_contents(S) + total_contents += passed_object.contents - for(var/obj/item/gift/G in Storage.return_inv()) //Check for gift-wrapped items - L += G.gift - if(isstorage(G.gift)) - L += get_contents(G.gift) + for(var/obj/checked_object in total_contents) + total_contents += get_contents(checked_object, recursion + 1) - for(var/obj/item/smallDelivery/D in Storage.return_inv()) //Check for package wrapped items - L += D.wrapped - if(isstorage(D.wrapped)) //this should never happen - L += get_contents(D.wrapped) - return L + return total_contents - else - - L += src.contents - for(var/obj/item/storage/S in src.contents) //Check for storage items - L += get_contents(S) - - for(var/obj/item/gift/G in src.contents) //Check for gift-wrapped items - L += G.gift - if(isstorage(G.gift)) - L += get_contents(G.gift) + total_contents += contents + for(var/obj/checked_object in total_contents) + total_contents += get_contents(checked_object, recursion + 1) - for(var/obj/item/smallDelivery/D in src.contents) //Check for package wrapped items - L += D.wrapped - if(isstorage(D.wrapped)) //this should never happen - L += get_contents(D.wrapped) - return L + return total_contents /mob/living/proc/check_contents_for(A) var/list/L = src.get_contents() diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 840c1da3f60f..51bbfd24ccb0 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -13,7 +13,7 @@ if(istype(module_state_1,/obj/item/robot/sight)) sight_mode &= ~module_state_1:sight_mode if (client) - client.screen -= module_state_1 + client.remove_from_screen(module_state_1) contents -= module_state_1 module_active = null module_state_1 = null @@ -22,7 +22,7 @@ if(istype(module_state_2,/obj/item/robot/sight)) sight_mode &= ~module_state_2:sight_mode if (client) - client.screen -= module_state_2 + client.remove_from_screen(module_state_2) contents -= module_state_2 module_active = null module_state_2 = null @@ -31,7 +31,7 @@ if(istype(module_state_3,/obj/item/robot/sight)) sight_mode &= ~module_state_3:sight_mode if (client) - client.screen -= module_state_3 + client.remove_from_screen(module_state_3) contents -= module_state_3 module_active = null module_state_3 = null @@ -45,7 +45,7 @@ if(istype(module_state_1,/obj/item/robot/sight)) sight_mode &= ~module_state_1:sight_mode if (client) - client.screen -= module_state_1 + client.remove_from_screen(module_state_1) contents -= module_state_1 module_state_1 = null inv1.icon_state = "inv1" @@ -53,7 +53,7 @@ if(istype(module_state_2,/obj/item/robot/sight)) sight_mode &= ~module_state_2:sight_mode if (client) - client.screen -= module_state_2 + client.remove_from_screen(module_state_2) contents -= module_state_2 module_state_2 = null inv2.icon_state = "inv2" @@ -61,7 +61,7 @@ if(istype(module_state_3,/obj/item/robot/sight)) sight_mode &= ~module_state_3:sight_mode if (client) - client.screen -= module_state_3 + client.remove_from_screen(module_state_3) contents -= module_state_3 module_state_3 = null inv3.icon_state = "inv3" diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 21ddaf76b33c..b0230bba5dba 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -239,10 +239,10 @@ /mob/living/silicon/robot/proc/update_items() if (client) - client.screen -= contents + client.remove_from_screen(contents) for(var/obj/I in contents) if(I && !(istype(I,/obj/item/cell) || istype(I,/obj/item/device/radio) || istype(I,/obj/structure/machinery/camera) || istype(I,/obj/item/device/mmi))) - client.screen += I + client.add_to_screen(I) var/datum/custom_hud/robot/ui_datum = GLOB.custom_huds_list[HUD_ROBOT] if(module_state_1) module_state_1.screen_loc = ui_datum.ui_inv1 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 4dfa0644aa21..ec8249fdca5c 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -148,10 +148,14 @@ if(max_distance) view_dist = max_distance for(var/mob/M as anything in viewers(view_dist, src)) var/msg = message - if(self_message && M==src) + if(self_message && M == src) msg = self_message if(flags & CHAT_TYPE_TARGETS_ME) flags = CHAT_TYPE_BEING_HIT + + else if((M != src) && HAS_TRAIT(src, TRAIT_CLOAKED)) + continue + M.show_message( msg, SHOW_MESSAGE_VISIBLE, blind_message, SHOW_MESSAGE_AUDIBLE, flags) CHECK_TICK @@ -183,10 +187,14 @@ // message is output to anyone who can see, e.g. "The [src] does something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" /atom/proc/visible_message(message, blind_message, max_distance, message_flags = CHAT_TYPE_OTHER) + if(HAS_TRAIT(src, TRAIT_CLOAKED)) + return FALSE var/view_dist = 7 - if(max_distance) view_dist = max_distance + if(max_distance) + view_dist = max_distance for(var/mob/M as anything in viewers(view_dist, src)) M.show_message(message, SHOW_MESSAGE_VISIBLE, blind_message, SHOW_MESSAGE_AUDIBLE, message_flags) + return TRUE // Show a message to all mobs in earshot of this atom // Use for objects performing only audible actions diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index efd05f15c269..58933b8ca312 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -322,13 +322,10 @@ var/global/list/limb_types_by_name = list( /mob/proc/get_eye_protection() return EYE_PROTECTION_NONE -/mob/verb/a_select_zone(input as text) - set name = "a-select-zone" - set hidden = TRUE - +/mob/proc/a_select_zone(input, client/user) var/atom/movable/screen/zone_sel/zone - for(var/A in usr.client.screen) + for(var/A in user.screen) if(istype(A, /atom/movable/screen/zone_sel)) zone = A @@ -410,6 +407,10 @@ var/global/list/limb_types_by_name = list( if(SKILL_ENGINEER) if(skillcheck(src, SKILL_ENGINEER, SKILL_ENGINEER_MASTER)) return DURATION_MULTIPLIER_TIER_3 + else if(skillcheck(src, SKILL_ENGINEER, SKILL_ENGINEER_ENGI)) + return DURATION_MULTIPLIER_TIER_2 + else if(skillcheck(src, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) + return DURATION_MULTIPLIER_TIER_1 // Construction if(SKILL_CONSTRUCTION) if(skillcheck(src, SKILL_CONSTRUCTION, SKILL_CONSTRUCTION_MASTER)) diff --git a/code/modules/mob/mob_verbs.dm b/code/modules/mob/mob_verbs.dm index 8153032446dd..19296ba90b20 100644 --- a/code/modules/mob/mob_verbs.dm +++ b/code/modules/mob/mob_verbs.dm @@ -159,7 +159,7 @@ // M.Login() //wat return -/*/mob/dead/observer/verb/observe() +/mob/dead/observer/verb/observe() set name = "Observe" set category = "Ghost" @@ -169,7 +169,7 @@ if(!target) return - do_observe(target) */ //disabled thanks to le exploiterinos + do_observe(target) /mob/verb/cancel_camera() set name = "Cancel Camera View" diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 1839fe191627..fb4dbac3c160 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -200,19 +200,19 @@ if(isnull(preview_front)) preview_front = new() - owner.screen |= preview_front + owner.add_to_screen(preview_front) preview_front.vis_contents += preview_dummy preview_front.screen_loc = "preview:0,0" preview_front.icon_state = bg_state if(isnull(rotate_left)) rotate_left = new(null, preview_dummy) - owner.screen |= rotate_left + owner.add_to_screen(rotate_left) rotate_left.screen_loc = "preview:-1:16,0" if(isnull(rotate_right)) rotate_right = new(null, preview_dummy) - owner.screen |= rotate_right + owner.add_to_screen(rotate_right) rotate_right.screen_loc = "preview:1:-16,0" /datum/preferences/proc/job_pref_to_gear_preset() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 3b10c757f2f4..71d1090b20e0 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -257,6 +257,7 @@ t = replacetext(t, "\[wy\]", "") t = replacetext(t, "\[uscm\]", "") t = replacetext(t, "\[upp\]", "") + t = replacetext(t, "\[cmb\]", "") t = "[t]" else // If it is a crayon, and he still tries to use these, make them empty! @@ -427,7 +428,7 @@ var/image/stampoverlay = image('icons/obj/items/paper.dmi') var/x var/y - if(istype(P, /obj/item/tool/stamp/captain) || istype(P, /obj/item/tool/stamp/centcomm)) + if(istype(P, /obj/item/tool/stamp/captain) || istype(P, /obj/item/tool/stamp/weyyu)) x = rand(-2, 0) y = rand(-1, 2) else diff --git a/code/modules/projectiles/ammo_datums.dm b/code/modules/projectiles/ammo_datums.dm index 449ce574eb2c..1bb1083a9d4f 100644 --- a/code/modules/projectiles/ammo_datums.dm +++ b/code/modules/projectiles/ammo_datums.dm @@ -2475,7 +2475,13 @@ flags_ammo_behavior = AMMO_IGNORE_RESIST damage = 55 - penetration = 50 + penetration = ARMOR_PENETRATION_TIER_10 + +/datum/ammo/energy/yautja/rifle/bolt/on_hit_mob(mob/hit_mob, obj/projectile/hit_projectile) + if(isxeno(hit_mob)) + var/mob/living/carbon/xenomorph/xeno = hit_mob + xeno.apply_damage(damage * 0.75, BURN) + xeno.interference = 30 /* //====== diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index cb46e22e88b4..6fd5d4b0d834 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -504,8 +504,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time if(fire_delay_group && delay_left > 0) - for(var/group in fire_delay_group) - LAZYSET(user.fire_delay_next_fire, group, world.time + delay_left) + LAZYSET(user.fire_delay_next_fire, src, world.time + delay_left) if(slot in list(WEAR_L_HAND, WEAR_R_HAND)) set_gun_user(user) @@ -524,8 +523,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time if(fire_delay_group && delay_left > 0) - for(var/group in fire_delay_group) - LAZYSET(user.fire_delay_next_fire, group, world.time + delay_left) + LAZYSET(user.fire_delay_next_fire, src, world.time + delay_left) unwield(user) set_gun_user(null) @@ -1112,27 +1110,24 @@ and you're good to go. if(PB_burst_bullets_fired) //Has a burst been carried over from a PB? PB_burst_bullets_fired = 0 //Don't need this anymore. The torch is passed. - //Dual wielding. Do we have a gun in the other hand, is it loaded, and is it the same category? + var/fired_by_akimbo = FALSE + if(dual_wield) + fired_by_akimbo = TRUE + + //Dual wielding. Do we have a gun in the other hand and is it the same category? + var/obj/item/weapon/gun/akimbo = user.get_inactive_hand() if(!reflex && !dual_wield && user) - var/obj/item/weapon/gun/akimbo = user.get_inactive_hand() if(istype(akimbo) && akimbo.gun_category == gun_category && !(akimbo.flags_gun_features & GUN_WIELDED_FIRING_ONLY)) - /*Does the offhand weapon have a loaded selected attachable gun or ammo? This doesn't necessarily mean the offhand gun can be *fired*, - an unpumped shotgun or opened double-barrel or a revolver with a spun cylinder would pass it, but it's less indiscrimate than it used to be.*/ - if(akimbo.active_attachable?.current_rounds || akimbo.has_ammunition()) - dual_wield = TRUE //increases recoil, increases scatter, and reduces accuracy. - if(user?.client?.prefs?.toggle_prefs & TOGGLE_ALTERNATING_DUAL_WIELD) - user.swap_hand() - else - akimbo.Fire(target,user,params, 0, TRUE) + dual_wield = TRUE //increases recoil, increases scatter, and reduces accuracy. - var/fire_return = handle_fire(target, user, params, reflex, dual_wield, check_for_attachment_fire) + var/fire_return = handle_fire(target, user, params, reflex, dual_wield, check_for_attachment_fire, akimbo, fired_by_akimbo) if(!fire_return) return fire_return flags_gun_features &= ~GUN_BURST_FIRING // We always want to turn off bursting when we're done, mainly for when we break early mid-burstfire. return AUTOFIRE_CONTINUE -/obj/item/weapon/gun/proc/handle_fire(atom/target, mob/living/user, params, reflex = FALSE, dual_wield, check_for_attachment_fire) +/obj/item/weapon/gun/proc/handle_fire(atom/target, mob/living/user, params, reflex = FALSE, dual_wield, check_for_attachment_fire, akimbo, fired_by_akimbo) var/turf/curloc = get_turf(user) //In case the target or we are expired. var/turf/targloc = get_turf(target) @@ -1211,11 +1206,21 @@ and you're good to go. active_attachable.last_fired = world.time else last_fired = world.time + var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time + if(fire_delay_group && delay_left > 0) + LAZYSET(user.fire_delay_next_fire, src, world.time + delay_left) SEND_SIGNAL(user, COMSIG_MOB_FIRED_GUN, src) . = TRUE shots_fired++ + if(dual_wield && !fired_by_akimbo) + switch(user?.client?.prefs?.dual_wield_pref) + if(DUAL_WIELD_FIRE) + INVOKE_ASYNC(akimbo, PROC_REF(Fire), target, user, params, 0, TRUE) + if(DUAL_WIELD_SWAP) + user.swap_hand() + else return TRUE @@ -1241,7 +1246,7 @@ and you're good to go. return TRUE -/obj/item/weapon/gun/attack(mob/living/attacked_mob, mob/living/user) +/obj/item/weapon/gun/attack(mob/living/attacked_mob, mob/living/user, dual_wield) if(active_attachable && (active_attachable.flags_attach_features & ATTACH_MELEE)) //this is expected to do something in melee. active_attachable.last_fired = world.time active_attachable.fire_attachment(attacked_mob, src, user) @@ -1353,6 +1358,15 @@ and you're good to go. else active_attachable.activate_attachment(src, null, TRUE)//No way. + var/fired_by_akimbo = FALSE + if(dual_wield) + fired_by_akimbo = TRUE + + //Dual wielding. Do we have a gun in the other hand and is it the same category? + var/obj/item/weapon/gun/akimbo = user.get_inactive_hand() + if(!dual_wield && user) + if(istype(akimbo) && akimbo.gun_category == gun_category && !(akimbo.flags_gun_features & GUN_WIELDED_FIRING_ONLY)) + dual_wield = TRUE //increases recoil, increases scatter, and reduces accuracy. var/bullets_to_fire = 1 @@ -1395,7 +1409,7 @@ and you're good to go. SPAN_WARNING("You fire [src] point blank at [attacked_mob]!"), null, null, CHAT_TYPE_WEAPON_USE) user.track_shot(initial(name)) - apply_bullet_effects(projectile_to_fire, user, bullets_fired) //We add any damage effects that we need. + apply_bullet_effects(projectile_to_fire, user, bullets_fired, dual_wield) //We add any damage effects that we need. SEND_SIGNAL(projectile_to_fire, COMSIG_BULLET_USER_EFFECTS, user) SEND_SIGNAL(user, COMSIG_BULLET_DIRECT_HIT, attacked_mob) @@ -1437,9 +1451,19 @@ and you're good to go. active_attachable.last_fired = world.time else last_fired = world.time + var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time + if(fire_delay_group && delay_left > 0) + LAZYSET(user.fire_delay_next_fire, src, world.time + delay_left) SEND_SIGNAL(user, COMSIG_MOB_FIRED_GUN, src) + if(dual_wield && !fired_by_akimbo) + switch(user?.client?.prefs?.dual_wield_pref) + if(DUAL_WIELD_FIRE) + INVOKE_ASYNC(akimbo, PROC_REF(attack), attacked_mob, user, TRUE) + if(DUAL_WIELD_SWAP) + user.swap_hand() + if(EXECUTION_CHECK) //Continue execution if on the correct intent. Accounts for change via the earlier do_after user.visible_message(SPAN_DANGER("[user] has executed [attacked_mob] with [src]!"), SPAN_DANGER("You have executed [attacked_mob] with [src]!"), message_flags = CHAT_TYPE_WEAPON_USE) attacked_mob.death() @@ -1549,9 +1573,20 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed if(fire_delay_group) for(var/group in fire_delay_group) - var/group_next_fire = LAZYACCESS(user.fire_delay_next_fire, group) - if(!isnull(group_next_fire) && world.time < group_next_fire) - return + for(var/obj/item/weapon/gun/cycled_gun in user.fire_delay_next_fire) + if(cycled_gun == src) + continue + + for(var/cycled_gun_group in cycled_gun.fire_delay_group) + if(group != cycled_gun_group) + continue + + if(user.fire_delay_next_fire[cycled_gun] < world.time) + user.fire_delay_next_fire -= cycled_gun + continue + + return + return TRUE /obj/item/weapon/gun/proc/click_empty(mob/user) diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 698ea8ef5957..2438947ef254 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -1217,9 +1217,9 @@ Defined in conflicts.dm of the #defines folder. /// If the gun should experience scope drift var/scope_drift = TRUE /// % chance for the scope to drift on process with a spotter using their scope - var/spotted_drift_chance = 33 + var/spotted_drift_chance = 25 /// % chance for the scope to drift on process without a spotter using their scope - var/unspotted_drift_chance = 100 + var/unspotted_drift_chance = 90 /// If the scope should use do_afters for adjusting and moving the sight var/slow_use = TRUE /// Cooldown for interacting with the scope's adjustment or position @@ -1238,6 +1238,8 @@ Defined in conflicts.dm of the #defines folder. var/darkness_view = 12 /// If there is currently a spotter using the linked spotting scope var/spotter_spotting = FALSE + /// How much time it takes to adjust the position of the scope. Adjusting the offset will take half of this time + var/adjust_delay = 1 SECONDS /obj/item/attachable/vulture_scope/Initialize(mapload, ...) . = ..() @@ -1289,8 +1291,8 @@ Defined in conflicts.dm of the #defines folder. if(!COOLDOWN_FINISHED(src, scope_interact_cd)) return to_chat(scoper, SPAN_NOTICE("You begin adjusting [src]...")) - COOLDOWN_START(src, scope_interact_cd, 0.5 SECONDS) - if(!do_after(scoper, 0.5 SECONDS)) + COOLDOWN_START(src, scope_interact_cd, adjust_delay / 2) + if(!do_after(scoper, 0.4 SECONDS)) return adjust_offset(direction) @@ -1307,8 +1309,8 @@ Defined in conflicts.dm of the #defines folder. return to_chat(scoper, SPAN_NOTICE("You begin moving [src]...")) - COOLDOWN_START(src, scope_interact_cd, 1 SECONDS) - if(!do_after(scoper, 1 SECONDS)) + COOLDOWN_START(src, scope_interact_cd, adjust_delay) + if(!do_after(scoper, 0.8 SECONDS)) return adjust_position(direction) @@ -1535,7 +1537,7 @@ Defined in conflicts.dm of the #defines folder. recalculate_scope_pos() gun_user.overlay_fullscreen("vulture", /atom/movable/screen/fullscreen/vulture) scope_element = new(src) - gun_user.client.screen += scope_element + gun_user.client.add_to_screen(scope_element) gun_user.see_in_dark += darkness_view gun_user.lighting_alpha = 127 gun_user.sync_lighting_plane_alpha() @@ -1564,7 +1566,7 @@ Defined in conflicts.dm of the #defines folder. stop_holding_breath() scope_user_initial_dir = null scoper.clear_fullscreen("vulture") - scoper.client.screen -= scope_element + scoper.client.remove_from_screen(scope_element) scoper.see_in_dark -= darkness_view scoper.lighting_alpha = 127 scoper.sync_lighting_plane_alpha() @@ -3244,6 +3246,8 @@ Defined in conflicts.dm of the #defines folder. attachment_action_type = /datum/action/item_action/toggle var/initial_mob_dir = NORTH // the dir the mob faces the moment it deploys the bipod var/bipod_deployed = FALSE + /// If this should anchor the user while in use + var/heavy_bipod = FALSE /obj/item/attachable/bipod/New() ..() @@ -3309,6 +3313,9 @@ Defined in conflicts.dm of the #defines folder. if(G.flags_gun_features & GUN_SUPPORT_PLATFORM) G.remove_firemode(GUN_FIREMODE_AUTOMATIC) + if(heavy_bipod) + user.anchored = FALSE + if(!QDELETED(G)) playsound(user,'sound/items/m56dauto_rotate.ogg', 55, 1) update_icon() @@ -3348,6 +3355,9 @@ Defined in conflicts.dm of the #defines folder. if(G.flags_gun_features & GUN_SUPPORT_PLATFORM) G.add_firemode(GUN_FIREMODE_AUTOMATIC) + if(heavy_bipod) + user.anchored = TRUE + else to_chat(user, SPAN_NOTICE("You retract [src].")) undeploy_bipod(G) @@ -3396,6 +3406,7 @@ Defined in conflicts.dm of the #defines folder. desc = "A set of rugged telescopic poles to keep a weapon stabilized during firing." icon_state = "bipod_m60" attach_icon = "vulture_bipod" + heavy_bipod = TRUE /obj/item/attachable/burstfire_assembly name = "burst fire assembly" diff --git a/code/modules/projectiles/gun_helpers.dm b/code/modules/projectiles/gun_helpers.dm index cdd6cca6fee8..be46fdb15ed0 100644 --- a/code/modules/projectiles/gun_helpers.dm +++ b/code/modules/projectiles/gun_helpers.dm @@ -551,7 +551,7 @@ DEFINES in setup.dm, referenced here. var/obj/item/clothing/accessory/storage/holster/holster_ammo = accessory if(istype(holster_ammo)) var/obj/item/storage/internal/accessory/holster/storage = holster_ammo.hold - if(storage.can_be_inserted(active_hand, TRUE)) + if(storage.can_be_inserted(active_hand, src, stop_messages = TRUE)) storage.handle_item_insertion(active_hand, user = src) return diff --git a/code/modules/projectiles/guns/boltaction.dm b/code/modules/projectiles/guns/boltaction.dm index 69ce3a8de53e..c18e45e38d3e 100644 --- a/code/modules/projectiles/guns/boltaction.dm +++ b/code/modules/projectiles/guns/boltaction.dm @@ -275,3 +275,7 @@ to_chat(user, SPAN_DANGER("The splint on your [limb.display_name] comes apart under the recoil!")) user.pain.apply_pain(PAIN_BONE_BREAK_SPLINTED) user.update_med_icon() + + +/obj/item/weapon/gun/boltaction/vulture/skillless + bypass_trait = TRUE diff --git a/code/modules/projectiles/guns/revolvers.dm b/code/modules/projectiles/guns/revolvers.dm index 4eaedf11ef11..48f237f9b562 100644 --- a/code/modules/projectiles/guns/revolvers.dm +++ b/code/modules/projectiles/guns/revolvers.dm @@ -566,9 +566,10 @@ unacidable = TRUE black_market_value = 100 var/is_locked = TRUE + var/can_change_barrel = TRUE /obj/item/weapon/gun/revolver/mateba/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/mateba_key)) + if(istype(I, /obj/item/weapon/mateba_key) && can_change_barrel) if(attachments["special"]) var/obj/item/attachable/R = attachments["special"] visible_message(SPAN_NOTICE("[user] begins stripping [R] from [src]."), @@ -590,7 +591,7 @@ update_icon() else if(istype(I, /obj/item/attachable)) var/obj/item/attachable/A = I - if(A.slot == "muzzle" && !attachments["special"]) + if(A.slot == "muzzle" && !attachments["special"] && can_change_barrel) to_chat(user, SPAN_WARNING("You need to attach a barrel first!")) return . = ..() @@ -667,6 +668,29 @@ current_mag = /obj/item/ammo_magazine/internal/revolver/mateba/impact map_specific_decoration = TRUE +/obj/item/weapon/gun/revolver/mateba/special + name = "\improper Mateba autorevolver special" + desc = "An old, heavily modified version of the Mateba Autorevolver. It sports a smooth wooden grip, and a much larger barrel to it's unmodified counterpart. It's clear that this weapon has been cared for over a long period of time." + icon_state = "cmateba_special" + item_state = "cmateba_special" + current_mag = /obj/item/ammo_magazine/internal/revolver/mateba/impact + attachable_allowed = list( + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/heavy_barrel, + /obj/item/attachable/compensator, + ) + starting_attachment_types = list() + can_change_barrel = FALSE + +/obj/item/weapon/gun/revolver/mateba/special/set_gun_config_values() + ..() + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + +/obj/item/weapon/gun/revolver/mateba/special/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 23,"rail_x" = 9, "rail_y" = 24, "under_x" = 19, "under_y" = 17, "stock_x" = 19, "stock_y" = 17, "special_x" = 23, "special_y" = 22) + //------------------------------------------------------- //MARSHALS REVOLVER //Spearhead exists in Alien cannon. diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 4723ad882368..65e4a6f2b7b3 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -435,6 +435,7 @@ accepted_ammo = list( /obj/item/ammo_magazine/rifle, + /obj/item/ammo_magazine/rifle/rubber, /obj/item/ammo_magazine/rifle/extended, /obj/item/ammo_magazine/rifle/ap, /obj/item/ammo_magazine/rifle/incendiary, diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm index 4237e89f80a3..9a4b1551736c 100644 --- a/code/modules/projectiles/guns/shotguns.dm +++ b/code/modules/projectiles/guns/shotguns.dm @@ -515,6 +515,7 @@ can cause issues with ammo types getting mixed up during the burst. burst_delay = 0 //So doubleshotty can doubleshot has_open_icon = TRUE civilian_usable_override = TRUE // Come on. It's THE survivor shotgun. + additional_fire_group_delay = 1.5 SECONDS /obj/item/weapon/gun/shotgun/double/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 19,"rail_x" = 11, "rail_y" = 20, "under_x" = 15, "under_y" = 14, "stock_x" = 13, "stock_y" = 14) @@ -761,7 +762,6 @@ can cause issues with ammo types getting mixed up during the burst. reload_sound = 'sound/weapons/handling/gun_mou_reload.ogg'//unique shell insert flags_equip_slot = SLOT_BACK flags_gun_features = GUN_CAN_POINTBLANK|GUN_INTERNAL_MAG - additional_fire_group_delay = 1.5 SECONDS current_mag = /obj/item/ammo_magazine/internal/shotgun/double/mou53 //Take care, she comes loaded! attachable_allowed = list( /obj/item/attachable/bayonet, diff --git a/code/modules/projectiles/guns/specialist.dm b/code/modules/projectiles/guns/specialist.dm deleted file mode 100644 index 78d1fca2cf24..000000000000 --- a/code/modules/projectiles/guns/specialist.dm +++ /dev/null @@ -1,1370 +0,0 @@ -//------------------------------------------------------- -//SNIPER RIFLES -//Keyword rifles. They are subtype of rifles, but still contained here as a specialist weapon. - -//Because this parent type did not exist -//Note that this means that snipers will have a slowdown of 3, due to the scope -/obj/item/weapon/gun/rifle/sniper - aim_slowdown = SLOWDOWN_ADS_SPECIALIST - wield_delay = WIELD_DELAY_SLOW - - var/has_aimed_shot = TRUE - var/aiming_time = 1.25 SECONDS - var/aimed_shot_cooldown - var/aimed_shot_cooldown_delay = 2.5 SECONDS - - var/enable_aimed_shot_laser = TRUE - var/sniper_lockon_icon = "sniper_lockon" - var/obj/effect/ebeam/sniper_beam_type = /obj/effect/ebeam/laser - var/sniper_beam_icon = "laser_beam" - var/skill_locked = TRUE - -/obj/item/weapon/gun/rifle/sniper/get_examine_text(mob/user) - . = ..() - if(!has_aimed_shot) - return - . += SPAN_NOTICE("This weapon has an unique ability, Aimed Shot, allowing it to deal great damage after a windup.
Additionally, the aimed shot can be sped up with a tracking laser, which is enabled by default but may be disabled.") - -/obj/item/weapon/gun/rifle/sniper/Initialize(mapload, spawn_empty) - if(has_aimed_shot) - LAZYADD(actions_types, list(/datum/action/item_action/specialist/aimed_shot, /datum/action/item_action/specialist/toggle_laser)) - return ..() - -/obj/item/weapon/gun/rifle/sniper/able_to_fire(mob/living/user) - . = ..() - if(. && istype(user) && skill_locked) //Let's check all that other stuff first. - if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SNIPER) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return 0 - -// Aimed shot ability -/datum/action/item_action/specialist/aimed_shot - ability_primacy = SPEC_PRIMARY_ACTION_2 - var/minimum_aim_distance = 2 - -/datum/action/item_action/specialist/aimed_shot/New(mob/living/user, obj/item/holder) - ..() - name = "Aimed Shot" - button.name = name - button.overlays.Cut() - var/image/IMG = image('icons/mob/hud/actions.dmi', button, "sniper_aim") - button.overlays += IMG - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - sniper_rifle.aimed_shot_cooldown = world.time - - -/datum/action/item_action/specialist/aimed_shot/action_activate() - if(!ishuman(owner)) - return - var/mob/living/carbon/human/H = owner - if(H.selected_ability == src) - to_chat(H, "You will no longer use [name] with \ - [H.client && H.client.prefs && H.client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") - button.icon_state = "template" - H.selected_ability = null - else - to_chat(H, "You will now use [name] with \ - [H.client && H.client.prefs && H.client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") - if(H.selected_ability) - H.selected_ability.button.icon_state = "template" - H.selected_ability = null - button.icon_state = "template_on" - H.selected_ability = src - -/datum/action/item_action/specialist/aimed_shot/can_use_action() - var/mob/living/carbon/human/H = owner - if(istype(H) && !H.is_mob_incapacitated() && !H.lying && (holder_item == H.r_hand || holder_item || H.l_hand)) - return TRUE - -/datum/action/item_action/specialist/aimed_shot/proc/use_ability(atom/A) - var/mob/living/carbon/human/human = owner - if(!istype(A, /mob/living)) - return - - var/mob/living/target = A - - if(target.stat == DEAD || target == human) - return - - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - if(world.time < sniper_rifle.aimed_shot_cooldown) - return - - if(!check_can_use(target)) - return - - human.face_atom(target) - - ///Add a decisecond to the default 1.5 seconds for each two tiles to hit. - var/distance = round(get_dist(target, human) * 0.5) - var/f_aiming_time = sniper_rifle.aiming_time + distance - - var/aim_multiplier = 1 - var/aiming_buffs - - if(sniper_rifle.enable_aimed_shot_laser) - aim_multiplier = 0.6 - aiming_buffs++ - - if(HAS_TRAIT(target, TRAIT_SPOTTER_LAZED)) - aim_multiplier = 0.5 - aiming_buffs++ - - if(aiming_buffs > 1) - aim_multiplier = 0.35 - - f_aiming_time *= aim_multiplier - - var/image/lockon_icon = image(icon = 'icons/effects/Targeted.dmi', icon_state = sniper_rifle.sniper_lockon_icon) - - var/x_offset = -target.pixel_x + target.base_pixel_x - var/y_offset = (target.icon_size - world.icon_size) * 0.5 - target.pixel_y + target.base_pixel_y - - lockon_icon.pixel_x = x_offset - lockon_icon.pixel_y = y_offset - target.overlays += lockon_icon - - var/image/lockon_direction_icon - if(!sniper_rifle.enable_aimed_shot_laser) - lockon_direction_icon = image(icon = 'icons/effects/Targeted.dmi', icon_state = "[sniper_rifle.sniper_lockon_icon]_direction", dir = get_cardinal_dir(target, human)) - lockon_direction_icon.pixel_x = x_offset - lockon_direction_icon.pixel_y = y_offset - target.overlays += lockon_direction_icon - if(human.client) - playsound_client(human.client, 'sound/weapons/TargetOn.ogg', human, 50) - playsound(target, 'sound/weapons/TargetOn.ogg', 70, FALSE, 8, falloff = 0.4) - - var/datum/beam/laser_beam - if(sniper_rifle.enable_aimed_shot_laser) - laser_beam = target.beam(human, sniper_rifle.sniper_beam_icon, 'icons/effects/beam.dmi', (f_aiming_time + 1 SECONDS), beam_type = sniper_rifle.sniper_beam_type) - laser_beam.visuals.alpha = 0 - animate(laser_beam.visuals, alpha = initial(laser_beam.visuals.alpha), f_aiming_time, easing = SINE_EASING|EASE_OUT) - - ////timer is (f_spotting_time + 1 SECONDS) because sometimes it janks out before the doafter is done. blame sleeps or something - - if(!do_after(human, f_aiming_time, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, NO_BUSY_ICON)) - target.overlays -= lockon_icon - target.overlays -= lockon_direction_icon - qdel(laser_beam) - return - - target.overlays -= lockon_icon - target.overlays -= lockon_direction_icon - qdel(laser_beam) - - if(!check_can_use(target, TRUE)) - return - - var/obj/projectile/aimed_proj = sniper_rifle.in_chamber - aimed_proj.projectile_flags |= PROJECTILE_BULLSEYE - aimed_proj.AddComponent(/datum/component/homing_projectile, target, human) - sniper_rifle.Fire(target, human) - -/datum/action/item_action/specialist/aimed_shot/proc/check_can_use(mob/M, cover_lose_focus) - var/mob/living/carbon/human/H = owner - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - - if(!can_use_action()) - return FALSE - - if(sniper_rifle != H.r_hand && sniper_rifle != H.l_hand) - to_chat(H, SPAN_WARNING("How do you expect to do this without your sniper rifle?")) - return FALSE - - if(!(sniper_rifle.flags_item & WIELDED)) - to_chat(H, SPAN_WARNING("Your aim is not stable enough with one hand. Use both hands!")) - return FALSE - - if(!sniper_rifle.in_chamber) - to_chat(H, SPAN_WARNING("\The [sniper_rifle] is unloaded!")) - return FALSE - - if(get_dist(H, M) < minimum_aim_distance) - to_chat(H, SPAN_WARNING("\The [M] is too close to get a proper shot!")) - return FALSE - - var/obj/projectile/P = sniper_rifle.in_chamber - // TODO: Make the below logic only occur in certain circumstances. Check goggles, maybe? -Kaga - if(check_shot_is_blocked(H, M, P)) - to_chat(H, SPAN_WARNING("Something is in the way, or you're out of range!")) - if(cover_lose_focus) - to_chat(H, SPAN_WARNING("You lose focus.")) - COOLDOWN_START(sniper_rifle, aimed_shot_cooldown, sniper_rifle.aimed_shot_cooldown_delay * 0.5) - return FALSE - - COOLDOWN_START(sniper_rifle, aimed_shot_cooldown, sniper_rifle.aimed_shot_cooldown_delay) - return TRUE - -/datum/action/item_action/specialist/aimed_shot/proc/check_shot_is_blocked(mob/firer, mob/target, obj/projectile/P) - var/list/turf/path = getline2(firer, target, include_from_atom = FALSE) - if(!path.len || get_dist(firer, target) > P.ammo.max_range) - return TRUE - - var/blocked = FALSE - for(var/turf/T in path) - if(T.density || T.opacity) - blocked = TRUE - break - - for(var/obj/O in T) - if(O.get_projectile_hit_boolean(P)) - blocked = TRUE - break - - for(var/obj/effect/particle_effect/smoke/S in T) - blocked = TRUE - break - - return blocked - -// Snipers may enable or disable their laser tracker at will. -/datum/action/item_action/specialist/toggle_laser - -/datum/action/item_action/specialist/toggle_laser/New(mob/living/user, obj/item/holder) - ..() - name = "Toggle Tracker Laser" - button.name = name - button.overlays.Cut() - var/image/IMG = image('icons/mob/hud/actions.dmi', button, "sniper_toggle_laser_on") - button.overlays += IMG - update_button_icon() - -/datum/action/item_action/specialist/toggle_laser/update_button_icon() - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - - var/icon = 'icons/mob/hud/actions.dmi' - var/icon_state = "sniper_toggle_laser_[sniper_rifle.enable_aimed_shot_laser ? "on" : "off"]" - - button.overlays.Cut() - var/image/IMG = image(icon, button, icon_state) - button.overlays += IMG - -/datum/action/item_action/specialist/toggle_laser/can_use_action() - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - - if(owner.is_mob_incapacitated()) - return FALSE - - if(owner.get_held_item() != sniper_rifle) - to_chat(owner, SPAN_WARNING("How do you expect to do this without the sniper rifle in your hand?")) - return FALSE - return TRUE - -/datum/action/item_action/specialist/toggle_laser/action_activate() - var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item - - if(owner.get_held_item() != sniper_rifle) - to_chat(owner, SPAN_WARNING("How do you expect to do this without the sniper rifle in your hand?")) - return FALSE - sniper_rifle.toggle_laser(owner, src) - -/obj/item/weapon/gun/rifle/sniper/proc/toggle_laser(mob/user, datum/action/toggling_action) - enable_aimed_shot_laser = !enable_aimed_shot_laser - to_chat(user, SPAN_NOTICE("You flip a switch on \the [src] and [enable_aimed_shot_laser ? "enable" : "disable"] its targeting laser.")) - playsound(user, 'sound/machines/click.ogg', 15, TRUE) - if(!toggling_action) - toggling_action = locate(/datum/action/item_action/specialist/toggle_laser) in actions - if(toggling_action) - toggling_action.update_button_icon() - -/obj/item/weapon/gun/rifle/sniper/verb/toggle_gun_laser() - set category = "Weapons" - set name = "Toggle Laser" - set desc = "Toggles your laser on or off." - set src = usr.contents - - var/obj/item/weapon/gun/rifle/sniper/sniper = get_active_firearm(usr) - if((sniper == src) && has_aimed_shot) - toggle_laser(usr) - -//Pow! Headshot. -/obj/item/weapon/gun/rifle/sniper/M42A - name = "\improper M42A scoped rifle" - desc = "A heavy sniper rifle manufactured by Armat Systems. It has a scope system and fires armor penetrating rounds out of a 15-round magazine.\n'Peace Through Superior Firepower'" - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m42a" - item_state = "m42a" - unacidable = TRUE - indestructible = 1 - - fire_sound = 'sound/weapons/gun_sniper.ogg' - current_mag = /obj/item/ammo_magazine/sniper - force = 12 - wield_delay = WIELD_DELAY_HORRIBLE //Ends up being 1.6 seconds due to scope - zoomdevicename = "scope" - attachable_allowed = list(/obj/item/attachable/bipod) - starting_attachment_types = list(/obj/item/attachable/sniperbarrel) - flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER - map_specific_decoration = TRUE - - flags_item = TWOHANDED|NO_CRYO_STORE - -/obj/item/weapon/gun/rifle/sniper/M42A/verb/toggle_scope_zoom_level() - set name = "Toggle Scope Zoom Level" - set category = "Weapons" - set src in usr - var/obj/item/attachable/scope/variable_zoom/S = attachments["rail"] - S.toggle_zoom_level() - -/obj/item/weapon/gun/rifle/sniper/M42A/handle_starting_attachment() - ..() - var/obj/item/attachable/scope/variable_zoom/S = new(src) - S.hidden = TRUE - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) - -/obj/item/weapon/gun/rifle/sniper/M42A/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) - )) - -/obj/item/weapon/gun/rifle/sniper/M42A/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 39, "muzzle_y" = 17,"rail_x" = 12, "rail_y" = 20, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - - -/obj/item/weapon/gun/rifle/sniper/M42A/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_7*3) - set_burst_amount(BURST_AMOUNT_TIER_1) - accuracy_mult = BASE_ACCURACY_MULT * 3 //you HAVE to be able to hit - scatter = SCATTER_AMOUNT_TIER_8 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_5 - -/obj/item/weapon/gun/rifle/sniper/xm43e1 - name = "\improper XM43E1 experimental anti-materiel rifle" - desc = "An experimental anti-materiel rifle produced by Armat Systems, recently reacquired from the deep storage of an abandoned prototyping facility. This one in particular is currently undergoing field testing. Chambered in 10x99mm Caseless." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "xm42b" - item_state = "xm42b" - unacidable = TRUE - indestructible = 1 - - fire_sound = 'sound/weapons/sniper_heavy.ogg' - current_mag = /obj/item/ammo_magazine/sniper/anti_materiel //Renamed from anti-tank to align with new identity/description. Other references have been changed as well. -Kaga - force = 12 - wield_delay = WIELD_DELAY_HORRIBLE //Ends up being 1.6 seconds due to scope - zoomdevicename = "scope" - attachable_allowed = list(/obj/item/attachable/bipod) - flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER - starting_attachment_types = list(/obj/item/attachable/sniperbarrel) - sniper_beam_type = /obj/effect/ebeam/laser/intense - sniper_beam_icon = "laser_beam_intense" - sniper_lockon_icon = "sniper_lockon_intense" - -/obj/item/weapon/gun/rifle/sniper/XM42B/handle_starting_attachment() - ..() - var/obj/item/attachable/scope/variable_zoom/S = new(src) - S.icon_state = "pmcscope" - S.attach_icon = "pmcscope" - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) - - -/obj/item/weapon/gun/rifle/sniper/XM42B/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 20, "under_y" = 15, "stock_x" = 20, "stock_y" = 15) - - -/obj/item/weapon/gun/rifle/sniper/XM42B/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_6 * 6 )//Big boy damage, but it takes a lot of time to fire a shot. - //Kaga: Adjusted from 56 (Tier 4, 7*8) -> 30 (Tier 6, 5*6) ticks. 95 really wasn't big-boy damage anymore, although I updated it to 125 to remain consistent with the other 10x99mm caliber weapon (M42C). Now takes only twice as long as the M42A. - set_burst_amount(BURST_AMOUNT_TIER_1) - accuracy_mult = BASE_ACCURACY_MULT + 2*HIT_ACCURACY_MULT_TIER_10 //Who coded this like this, and why? It just calculates out to 1+1=2. Leaving a note here to check back later. - scatter = SCATTER_AMOUNT_TIER_10 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_1 - -/obj/item/weapon/gun/rifle/sniper/XM42B/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff), - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating), - BULLET_TRAIT_ENTRY_ID("turfs", /datum/element/bullet_trait_damage_boost, 11, GLOB.damage_boost_turfs), - BULLET_TRAIT_ENTRY_ID("breaching", /datum/element/bullet_trait_damage_boost, 11, GLOB.damage_boost_breaching), - //At 1375 per shot it'll take 1 shot to break resin turfs, and a full mag of 8 to break reinforced walls. - BULLET_TRAIT_ENTRY_ID("pylons", /datum/element/bullet_trait_damage_boost, 6, GLOB.damage_boost_pylons) - //At 750 per shot it'll take 3 to break a Pylon (1800 HP). No Damage Boost vs other xeno structures yet, those will require a whole new list w/ the damage_boost trait. - )) - -/* -//Disabled until an identity is better defined. -Kaga -/obj/item/weapon/gun/rifle/sniper/M42B/afterattack(atom/target, mob/user, flag) - if(able_to_fire(user)) - if(get_dist(target,user) <= 8) - to_chat(user, SPAN_WARNING("The [src.name] beeps, indicating that the target is within an unsafe proximity to the rifle, refusing to fire.")) - return - else ..() -*/ - -/obj/item/weapon/gun/rifle/sniper/elite - name = "\improper M42C anti-tank sniper rifle" - desc = "A high-end superheavy magrail sniper rifle from Weyland-Armat chambered in a specialized variant of the heaviest ammo available, 10x99mm Caseless. This weapon requires a specialized armor rig for recoil mitigation in order to be used effectively." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/wy.dmi' - icon_state = "m42c" - item_state = "m42c" //NEEDS A TWOHANDED STATE - - fire_sound = 'sound/weapons/sniper_heavy.ogg' - current_mag = /obj/item/ammo_magazine/sniper/elite - force = 17 - zoomdevicename = "scope" - flags_gun_features = GUN_AUTO_EJECTOR|GUN_WY_RESTRICTED|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER - starting_attachment_types = list(/obj/item/attachable/sniperbarrel) - sniper_beam_type = /obj/effect/ebeam/laser/intense - sniper_beam_icon = "laser_beam_intense" - sniper_lockon_icon = "sniper_lockon_intense" - -/obj/item/weapon/gun/rifle/sniper/elite/handle_starting_attachment() - ..() - var/obj/item/attachable/scope/S = new(src) - S.icon_state = "pmcscope" - S.attach_icon = "pmcscope" - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) - -/obj/item/weapon/gun/rifle/sniper/elite/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) - )) - -/obj/item/weapon/gun/rifle/sniper/elite/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 20, "under_y" = 15, "stock_x" = 20, "stock_y" = 15) - -/obj/item/weapon/gun/rifle/sniper/elite/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_6*5) - set_burst_amount(BURST_AMOUNT_TIER_1) - accuracy_mult = BASE_ACCURACY_MULT * 3 //Was previously BAM + HAMT10, similar to the XM42B, and coming out to 1.5? Changed to be consistent with M42A. -Kaga - scatter = SCATTER_AMOUNT_TIER_10 //Was previously 8, changed to be consistent with the XM42B. - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_1 - -/obj/item/weapon/gun/rifle/sniper/elite/simulate_recoil(total_recoil = 0, mob/user, atom/target) - . = ..() - if(.) - var/mob/living/carbon/human/PMC_sniper = user - if(PMC_sniper.lying == 0 && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc) && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/veteran)) - PMC_sniper.visible_message(SPAN_WARNING("[PMC_sniper] is blown backwards from the recoil of the [src.name]!"),SPAN_HIGHDANGER("You are knocked prone by the blowback!")) - step(PMC_sniper,turn(PMC_sniper.dir,180)) - PMC_sniper.apply_effect(5, WEAKEN) - -//Type 88 //Based on the actual Dragunov DMR rifle. - -/obj/item/weapon/gun/rifle/sniper/svd - name = "\improper Type 88 designated marksman rifle" - desc = "The standard issue DMR of the UPP, the Type 88 is sought after by competitive shooters and terrorists alike for its high degree of accuracy. Typically loaded with armor-piercing 7.62x54mmR rounds in a 12 round magazine." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "type88" - item_state = "type88" - - fire_sound = 'sound/weapons/gun_mg.ogg' - current_mag = /obj/item/ammo_magazine/sniper/svd - attachable_allowed = list( - //Muzzle, - /obj/item/attachable/bayonet, - /obj/item/attachable/bayonet/upp_replica, - /obj/item/attachable/bayonet/upp, - //Under, - /obj/item/attachable/verticalgrip, - /obj/item/attachable/bipod, - //Integrated, - /obj/item/attachable/type88_barrel, - ) - has_aimed_shot = FALSE - flags_gun_features = GUN_AUTO_EJECTOR|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_CAN_POINTBLANK - starting_attachment_types = list() - sniper_beam_type = null - skill_locked = FALSE - -/obj/item/weapon/gun/rifle/sniper/svd/handle_starting_attachment() - ..() - var/obj/item/attachable/attachie = new /obj/item/attachable/type88_barrel(src) - attachie.flags_attach_features &= ~ATTACH_REMOVABLE - attachie.Attach(src) - update_attachable(attachie.slot) - - var/obj/item/attachable/scope/variable_zoom/integrated/type88sight = new(src) - type88sight.flags_attach_features &= ~ATTACH_REMOVABLE - type88sight.hidden = TRUE - type88sight.Attach(src) - update_attachable(type88sight.slot) - -/obj/item/weapon/gun/rifle/sniper/svd/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 17,"rail_x" = 13, "rail_y" = 19, "under_x" = 26, "under_y" = 14, "stock_x" = 24, "stock_y" = 13, "special_x" = 39, "special_y" = 18) - -/obj/item/weapon/gun/rifle/sniper/svd/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_6) - set_burst_amount(BURST_AMOUNT_TIER_1) - accuracy_mult = BASE_ACCURACY_MULT * 3 - scatter = SCATTER_AMOUNT_TIER_8 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_5 - damage_falloff_mult = 0 - -//M4RA custom marksman rifle - -/obj/item/weapon/gun/rifle/m4ra_custom - name = "\improper M4RA custom battle rifle" - desc = "This is a further improvement upon the already rock-solid M4RA. Made by the USCM armorers on Chinook station - This variant of the M4RA has a specifically milled magazine well to accept A19 rounds. It sports a light-weight titantium-alloy frame, better responsive to the heavy kick of the tailor-made A19 rounds." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m4ra_custom" - item_state = "m4ra_custom" - unacidable = TRUE - indestructible = 1 - accepted_ammo = list( - /obj/item/ammo_magazine/rifle/m4ra, - /obj/item/ammo_magazine/rifle/m4ra/ap, - /obj/item/ammo_magazine/rifle/m4ra/ext, - /obj/item/ammo_magazine/rifle/m4ra/rubber, - /obj/item/ammo_magazine/rifle/m4ra/incendiary, - /obj/item/ammo_magazine/rifle/m4ra/heap, - /obj/item/ammo_magazine/rifle/m4ra/penetrating, - /obj/item/ammo_magazine/rifle/m4ra/custom, - /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, - /obj/item/ammo_magazine/rifle/m4ra/custom/impact, - - ) - - fire_sound = 'sound/weapons/gun_m4ra.ogg' - reload_sound = 'sound/weapons/handling/l42_reload.ogg' - unload_sound = 'sound/weapons/handling/l42_unload.ogg' - current_mag = /obj/item/ammo_magazine/rifle/m4ra/custom - force = 26 - attachable_allowed = list( - /obj/item/attachable/suppressor, - /obj/item/attachable/bayonet, - /obj/item/attachable/bayonet/upp, - /obj/item/attachable/bayonet/co2, - /obj/item/attachable/reddot, - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, - /obj/item/attachable/extended_barrel, - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/bipod, - /obj/item/attachable/attached_gun/shotgun, - /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, - /obj/item/attachable/lasersight, - /obj/item/attachable/scope, - /obj/item/attachable/scope/mini, - /obj/item/attachable/flashlight/grip, - ) - - flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER - map_specific_decoration = TRUE - aim_slowdown = SLOWDOWN_ADS_QUICK - flags_item = TWOHANDED|NO_CRYO_STORE - -/obj/item/weapon/gun/rifle/m4ra_custom/handle_starting_attachment() - ..() - var/obj/item/attachable/m4ra_barrel_custom/integrated = new(src) - integrated.flags_attach_features &= ~ATTACH_REMOVABLE - integrated.Attach(src) - update_attachable(integrated.slot) - - -/obj/item/weapon/gun/rifle/m4ra_custom/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 43, "muzzle_y" = 17,"rail_x" = 23, "rail_y" = 21, "under_x" = 30, "under_y" = 11, "stock_x" = 24, "stock_y" = 13, "special_x" = 37, "special_y" = 16) - -/obj/item/weapon/gun/rifle/m4ra_custom/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_6) - set_burst_amount(BURST_AMOUNT_TIER_2) - set_burst_delay(FIRE_DELAY_TIER_12) - accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_2 - scatter = SCATTER_AMOUNT_TIER_8 - burst_scatter_mult = SCATTER_AMOUNT_TIER_8 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 - recoil = RECOIL_AMOUNT_TIER_5 - damage_falloff_mult = 0 - -/obj/item/weapon/gun/rifle/m4ra_custom/able_to_fire(mob/living/user) - . = ..() - if (. && istype(user)) //Let's check all that other stuff first. - if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SCOUT) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return FALSE - -//------------------------------------------------------- -//HEAVY WEAPONS - -/obj/item/weapon/gun/launcher - gun_category = GUN_CATEGORY_HEAVY - has_empty_icon = FALSE - has_open_icon = FALSE - ///gun update_icon doesn't detect that guns with no magazine are loaded or not, and will always append _o or _e if possible. - var/GL_has_empty_icon = TRUE - ///gun update_icon doesn't detect that guns with no magazine are loaded or not, and will always append _o or _e if possible. - var/GL_has_open_icon = FALSE - - ///Internal storage item used as magazine. Must be initialised to work! Set parameters by variables or it will inherit standard numbers from storage.dm. Got to call it *something* and 'magazine' or w/e would be confusing. - var/obj/item/storage/internal/cylinder - /// Variable that initializes the above. - var/has_cylinder = FALSE - ///What single item to fill the storage with, if any. This does not respect w_class. - var/preload - ///How many items can be inserted. "Null" = backpack-style size-based inventory. You'll have to set max_storage_space too if you do that, and arrange any initial contents. Iff you arrange to put in more items than the storage can hold, they can be taken out but not replaced. - var/internal_slots - ///how big an item can be inserted. - var/internal_max_w_class - ///the sfx played when the storage is opened. - var/use_sound = null - ///Whether clicking a held weapon with an empty hand will open its inventory or draw a munition out. - var/direct_draw = TRUE - -/obj/item/weapon/gun/launcher/Initialize(mapload, spawn_empty) //If changing vars on init, be sure to do the parent proccall *after* the change. - . = ..() - if(has_cylinder) - cylinder = new /obj/item/storage/internal(src) - cylinder.storage_slots = internal_slots - cylinder.max_w_class = internal_max_w_class - cylinder.use_sound = use_sound - if(direct_draw) - cylinder.storage_flags ^= STORAGE_USING_DRAWING_METHOD - if(preload && !spawn_empty) for(var/i = 1 to cylinder.storage_slots) - new preload(cylinder) - update_icon() - -/obj/item/weapon/gun/launcher/verb/toggle_draw_mode() - set name = "Switch Storage Drawing Method" - set category = "Object" - set src in usr - - cylinder.storage_draw_logic(src.name) - -//------------------------------------------------------- -//GRENADE LAUNCHER - -/obj/item/weapon/gun/launcher/grenade //Parent item for GLs. - w_class = SIZE_LARGE - throw_speed = SPEED_SLOW - throw_range = 10 - force = 5 - - fire_sound = 'sound/weapons/armbomb.ogg' - cocked_sound = 'sound/weapons/gun_m92_cocked.ogg' - reload_sound = 'sound/weapons/gun_shotgun_open2.ogg' //Played when inserting nade. - unload_sound = 'sound/weapons/gun_revolver_unload.ogg' - - has_cylinder = TRUE //This weapon won't work otherwise. - preload = /obj/item/explosive/grenade/high_explosive - internal_slots = 1 //This weapon must use slots. - internal_max_w_class = SIZE_MEDIUM //MEDIUM = M15. - - aim_slowdown = SLOWDOWN_ADS_SPECIALIST - wield_delay = WIELD_DELAY_SLOW - flags_gun_features = GUN_UNUSUAL_DESIGN|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY - ///Can you access the storage by clicking it, put things into it, or take things out? Meant for break-actions mostly but useful for any state where you want access to be toggleable. Make sure to call cylinder.close(user) so they don't still have the screen open! - var/open_chamber = TRUE - ///Does it launch its grenades in a low arc or a high? Do they strike people in their path, or fly beyond? - var/is_lobbing = FALSE - ///Verboten munitions. This is a blacklist. Anything in this list isn't loadable. - var/disallowed_grenade_types = list(/obj/item/explosive/grenade/spawnergrenade, /obj/item/explosive/grenade/alien, /obj/item/explosive/grenade/incendiary/molotov, /obj/item/explosive/grenade/flashbang) - ///What is this weapon permitted to fire? This is a whitelist. Anything in this list can be fired. Anything. - var/valid_munitions = list(/obj/item/explosive/grenade) - - -/obj/item/weapon/gun/launcher/grenade/set_gun_config_values() - ..() - recoil = RECOIL_AMOUNT_TIER_4 //Same as m37 shotgun. - - -/obj/item/weapon/gun/launcher/grenade/on_pocket_insertion() //Plays load sfx whenever a nade is put into storage. - playsound(usr, reload_sound, 25, 1) - update_icon() - -/obj/item/weapon/gun/launcher/grenade/on_pocket_removal() - update_icon() - -/obj/item/weapon/gun/launcher/grenade/get_examine_text(mob/user) //Different treatment for single-shot VS multi-shot GLs. - . = ..() - if(get_dist(user, src) > 2 && user != loc) - return - if(length(cylinder.contents)) - if(internal_slots == 1) - . += SPAN_NOTICE("It is loaded with a grenade.") - else - . += SPAN_NOTICE("It is loaded with [length(cylinder.contents)] / [internal_slots] grenades.") - else - . += SPAN_NOTICE("It is empty.") - - -/obj/item/weapon/gun/launcher/grenade/update_icon() - ..() - var/GL_sprite = base_gun_icon - if(GL_has_empty_icon && cylinder && !length(cylinder.contents)) - GL_sprite += "_e" - playsound(loc, cocked_sound, 25, 1) - if(GL_has_open_icon && open_chamber) - GL_sprite += "_o" - playsound(loc, cocked_sound, 25, 1) - icon_state = GL_sprite - - -/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user) - if(!open_chamber || src != user.get_inactive_hand()) //Need to have the GL in your hands to open the cylinder. - return ..() - if(cylinder.handle_attack_hand(user)) - ..() - - -/obj/item/weapon/gun/launcher/grenade/unload(mob/user, reload_override = FALSE, drop_override = FALSE, loc_override = FALSE) - if(!open_chamber) - to_chat(user, SPAN_WARNING("[src] is closed!")) - return - if(!length(cylinder.contents)) - to_chat(user, SPAN_WARNING("It's empty!")) - return - - var/obj/item/explosive/grenade/nade = cylinder.contents[length(cylinder.contents)] //Grab the last-inserted one. Or the only one, as the case may be. - cylinder.remove_from_storage(nade, user.loc) - - if(drop_override || !user) - nade.forceMove(get_turf(src)) - else - user.put_in_hands(nade) - - user.visible_message(SPAN_NOTICE("[user] unloads [nade] from [src]."), - SPAN_NOTICE("You unload [nade] from [src]."), null, 4, CHAT_TYPE_COMBAT_ACTION) - playsound(user, unload_sound, 30, 1) - - -/obj/item/weapon/gun/launcher/grenade/attackby(obj/item/I, mob/user) - if(istype(I,/obj/item/attachable) && check_inactive_hand(user)) - attach_to_gun(user,I) - return - return cylinder.attackby(I, user) - -/obj/item/weapon/gun/launcher/grenade/unique_action(mob/user) - if(isobserver(usr) || isxeno(usr)) - return - if(locate(/datum/action/item_action/toggle_firing_level) in actions) - toggle_firing_level(usr) - -/obj/item/weapon/gun/launcher/grenade/proc/allowed_ammo_type(obj/item/I) - for(var/G in disallowed_grenade_types) //Check for the bad stuff. - if(istype(I, G)) - return FALSE - for(var/G in valid_munitions) //Check if it has a ticket. - if(istype(I, G)) - return TRUE - - -/obj/item/weapon/gun/launcher/grenade/on_pocket_attackby(obj/item/explosive/grenade/I, mob/user) //the attack in question is on the internal container. Complete override - normal storage attackby cannot be silenced, and will always say "you put the x into y". - if(!open_chamber) - to_chat(user, SPAN_WARNING("[src] is closed!")) - return - if(!istype(I)) - to_chat(user, SPAN_WARNING("You can't load [I] into [src]!")) - return - if(!allowed_ammo_type(I)) - to_chat(user, SPAN_WARNING("[src] can't fire this type of grenade!")) - return - if(length(cylinder.contents) >= internal_slots) - to_chat(user, SPAN_WARNING("[src] cannot hold more grenades!")) - return - if(!cylinder.can_be_inserted(I)) //Technically includes whether there's room for it, but the above gives a tailored message. - return - - user.visible_message(SPAN_NOTICE("[user] loads [I] into [src]."), - SPAN_NOTICE("You load [I] into the grenade launcher."), null, 4, CHAT_TYPE_COMBAT_ACTION) - playsound(usr, reload_sound, 75, 1) - if(internal_slots > 1) - to_chat(user, SPAN_INFO("Now storing: [length(cylinder.contents) + 1] / [internal_slots] grenades.")) - - cylinder.handle_item_insertion(I, TRUE, user) - - -/obj/item/weapon/gun/launcher/grenade/able_to_fire(mob/living/user) //Skillchecks and fire blockers go in the child items. - . = ..() - if(.) - if(!length(cylinder.contents)) - to_chat(user, SPAN_WARNING("The [name] is empty.")) - return FALSE - var/obj/item/explosive/grenade/G = cylinder.contents[1] - if(G.antigrief_protection && user.faction == FACTION_MARINE && explosive_antigrief_check(G, user)) - to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from firing!")) - msg_admin_niche("[key_name(user)] attempted to prime \a [G.name] in [get_area(src)] [ADMIN_JMP(src.loc)]") - return FALSE - - -/obj/item/weapon/gun/launcher/grenade/afterattack(atom/target, mob/user, flag) //Not actually after the attack. After click, more like. - if(able_to_fire(user)) - if(get_dist(target,user) <= 2) - var/obj/item/explosive/grenade/nade = cylinder.contents[1] - if(nade.dangerous) - to_chat(user, SPAN_WARNING("The grenade launcher beeps a warning noise. You are too close!")) - return - fire_grenade(target,user) - - -/obj/item/weapon/gun/launcher/grenade/proc/fire_grenade(atom/target, mob/user) - set waitfor = 0 - last_fired = world.time - - var/to_firer = "You fire the [name]!" - if(internal_slots > 1) - to_firer += " [length(cylinder.contents)-1]/[internal_slots] grenades remaining." - user.visible_message(SPAN_DANGER("[user] fired a grenade!"), - SPAN_WARNING("[to_firer]"), message_flags = CHAT_TYPE_WEAPON_USE) - playsound(user.loc, fire_sound, 50, 1) - - var/angle = round(Get_Angle(user,target)) - muzzle_flash(angle,user) - simulate_recoil(0, user) - - var/obj/item/explosive/grenade/fired = cylinder.contents[1] - cylinder.remove_from_storage(fired, user.loc) - var/pass_flags = NO_FLAGS - if(is_lobbing) - if(istype(fired, /obj/item/explosive/grenade/slug/baton)) - if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - human_user.remember_dropped_object(fired) - fired.fingerprintslast = key_name(user) - pass_flags |= PASS_MOB_THRU_HUMAN|PASS_MOB_IS_OTHER|PASS_OVER - else - pass_flags |= PASS_MOB_THRU|PASS_HIGH_OVER - - msg_admin_attack("[key_name_admin(user)] fired a grenade ([fired.name]) from \a ([name]).") - log_game("[key_name_admin(user)] used a grenade ([name]).") - - fired.throw_range = 20 - fired.det_time = min(10, fired.det_time) - fired.activate(user, FALSE) - fired.forceMove(get_turf(src)) - fired.throw_atom(target, 20, SPEED_VERY_FAST, user, null, NORMAL_LAUNCH, pass_flags) - - - -//Doesn't use these. Listed for reference. -/obj/item/weapon/gun/launcher/grenade/load_into_chamber() - return -/obj/item/weapon/gun/launcher/grenade/reload_into_chamber() - return - -/obj/item/weapon/gun/launcher/grenade/has_ammunition() - return length(cylinder.contents) - -//------------------------------------------------------- -//Toggle firing level special action for grenade launchers - -/datum/action/item_action/toggle_firing_level/New(Target, obj/item/holder) - . = ..() - name = "Toggle Firing Level" - button.name = name - update_icon() - -/datum/action/item_action/toggle_firing_level/action_activate() - var/obj/item/weapon/gun/launcher/grenade/G = holder_item - if(!ishuman(owner)) - return - var/mob/living/carbon/human/H = owner - if(H.is_mob_incapacitated() || G.get_active_firearm(H, FALSE) != holder_item) - return - G.toggle_firing_level(usr) - -/datum/action/item_action/toggle_firing_level/proc/update_icon() - var/obj/item/weapon/gun/launcher/grenade/G = holder_item - if(G.is_lobbing) - action_icon_state = "hightoss_on" - else - action_icon_state = "hightoss_off" - button.overlays.Cut() - button.overlays += image('icons/mob/hud/actions.dmi', button, action_icon_state) - -/obj/item/weapon/gun/launcher/grenade/proc/toggle_firing_level(mob/user) - is_lobbing = !is_lobbing - to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s firing level. You will now fire [is_lobbing ? "in an arcing path over obstacles" : "directly at your target"].") - playsound(loc,'sound/machines/click.ogg', 25, 1) - var/datum/action/item_action/toggle_firing_level/TFL = locate(/datum/action/item_action/toggle_firing_level) in actions - TFL.update_icon() - -//------------------------------------------------------- -//M92 GRENADE LAUNCHER - -/obj/item/weapon/gun/launcher/grenade/m92 - name = "\improper M92 grenade launcher" - desc = "A heavy, 6-shot grenade launcher used by the Colonial Marines for area denial and big explosions." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m92" - item_state = "m92" - unacidable = TRUE - indestructible = 1 - matter = list("metal" = 6000) - actions_types = list(/datum/action/item_action/toggle_firing_level) - - attachable_allowed = list(/obj/item/attachable/magnetic_harness) - flags_item = TWOHANDED|NO_CRYO_STORE - map_specific_decoration = TRUE - - is_lobbing = TRUE - internal_slots = 6 - direct_draw = FALSE - -/obj/item/weapon/gun/launcher/grenade/m92/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 14, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - -/obj/item/weapon/gun/launcher/grenade/m92/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_4*4) - -/obj/item/weapon/gun/launcher/grenade/m92/able_to_fire(mob/living/user) - . = ..() - if (. && istype(user)) - if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_GRENADIER) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return FALSE - - -//------------------------------------------------------- -//M81 GRENADE LAUNCHER - -/obj/item/weapon/gun/launcher/grenade/m81 - name = "\improper M81 grenade launcher" - desc = "A lightweight, single-shot low-angle grenade launcher used by the Colonial Marines for area denial and big explosions." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' - icon_state = "m81" - item_state = "m81" //needs a wield sprite. - - matter = list("metal" = 7000) - -/obj/item/weapon/gun/launcher/grenade/m81/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 14, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - -/obj/item/weapon/gun/launcher/grenade/m81/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_4 * 1.5) - -/obj/item/weapon/gun/launcher/grenade/m81/on_pocket_removal() - ..() - playsound(usr, unload_sound, 30, 1) - -/obj/item/weapon/gun/launcher/grenade/m81/riot/able_to_fire(mob/living/user) - . = ..() - if (. && istype(user)) - if(!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return FALSE - - -/obj/item/weapon/gun/launcher/grenade/m81/riot - name = "\improper M81 riot grenade launcher" - desc = "A lightweight, single-shot low-angle grenade launcher to launch tear gas grenades. Used by the Colonial Marines Military Police during riots." - valid_munitions = list(/obj/item/explosive/grenade/custom/teargas) - preload = /obj/item/explosive/grenade/custom/teargas - -//------------------------------------------------------- -//M79 Grenade Launcher subtype of the M81 - -/obj/item/weapon/gun/launcher/grenade/m81/m79//m79 variant for marines - name = "\improper M79 grenade launcher" - desc = "A heavy, low-angle 40mm grenade launcher. It's been in use since the Vietnam War, though this version has been modernized with an IFF enabled micro-computer. The wooden furniture is, in fact, made of painted hardened polykevlon." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m79" - item_state = "m79" - flags_equip_slot = SLOT_BACK - preload = /obj/item/explosive/grenade/slug/baton - is_lobbing = TRUE - actions_types = list(/datum/action/item_action/toggle_firing_level) - - fire_sound = 'sound/weapons/handling/m79_shoot.ogg' - cocked_sound = 'sound/weapons/handling/m79_break_open.ogg' - reload_sound = 'sound/weapons/handling/m79_reload.ogg' - unload_sound = 'sound/weapons/handling/m79_unload.ogg' - - attachable_allowed = list( - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/flashlight, - /obj/item/attachable/reddot, - /obj/item/attachable/reflex, - /obj/item/attachable/stock/m79, - ) - -/obj/item/weapon/gun/launcher/grenade/m81/m79/handle_starting_attachment() - ..() - var/obj/item/attachable/stock/m79/S = new(src) - S.hidden = FALSE - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) - -/obj/item/weapon/gun/launcher/grenade/m81/m79/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 9, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 14, "stock_y" = 14) - -/obj/item/weapon/gun/launcher/grenade/m81/m79/set_bullet_traits() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff)//might not need this because of is_lobbing, but let's keep it just incase - )) - -//------------------------------------------------------- -//M5 RPG - -/obj/item/weapon/gun/launcher/rocket - name = "\improper M5 RPG" - desc = "The M5 RPG is the primary anti-armor weapon of the USCM. Used to take out light-tanks and enemy structures, the M5 RPG is a dangerous weapon with a variety of combat uses." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m5" - item_state = "m5" - unacidable = TRUE - indestructible = 1 - - matter = list("metal" = 10000) - current_mag = /obj/item/ammo_magazine/rocket - flags_equip_slot = NO_FLAGS - w_class = SIZE_HUGE - force = 15 - wield_delay = WIELD_DELAY_HORRIBLE - delay_style = WEAPON_DELAY_NO_FIRE - aim_slowdown = SLOWDOWN_ADS_SPECIALIST - attachable_allowed = list( - /obj/item/attachable/magnetic_harness, - ) - - flags_gun_features = GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_INTERNAL_MAG - var/datum/effect_system/smoke_spread/smoke - - flags_item = TWOHANDED|NO_CRYO_STORE - var/skill_locked = TRUE - -/obj/item/weapon/gun/launcher/rocket/Initialize(mapload, spawn_empty) - . = ..() - smoke = new() - smoke.attach(src) - -/obj/item/weapon/gun/launcher/rocket/Destroy() - QDEL_NULL(smoke) - return ..() - - -/obj/item/weapon/gun/launcher/rocket/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 6, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) - - -/obj/item/weapon/gun/launcher/rocket/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_6*2) - accuracy_mult = BASE_ACCURACY_MULT - scatter = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_3 - - -/obj/item/weapon/gun/launcher/rocket/get_examine_text(mob/user) - . = ..() - if(current_mag.current_rounds <= 0) - . += "It's not loaded." - return - if(current_mag.current_rounds > 0) - . += "It has an 84mm [ammo.name] loaded." - - -/obj/item/weapon/gun/launcher/rocket/able_to_fire(mob/living/user) - . = ..() - if (. && istype(user)) //Let's check all that other stuff first. - if(skill_locked && !skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_ROCKET) - to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) - return 0 - if(user.faction == FACTION_MARINE && explosive_antigrief_check(src, user)) - to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from firing!")) - msg_admin_niche("[key_name(user)] attempted to fire \a [name] in [get_area(src)] [ADMIN_JMP(loc)]") - return FALSE - if(current_mag && current_mag.current_rounds > 0) - make_rocket(user, 0, 1) - -/obj/item/weapon/gun/launcher/rocket/load_into_chamber(mob/user) -// if(active_attachable) active_attachable = null - return ready_in_chamber() - -//No such thing -/obj/item/weapon/gun/launcher/rocket/reload_into_chamber(mob/user) - return TRUE - -/obj/item/weapon/gun/launcher/rocket/delete_bullet(obj/projectile/projectile_to_fire, refund = 0) - if(!current_mag) - return - qdel(projectile_to_fire) - if(refund) - current_mag.current_rounds++ - return TRUE - -/obj/item/weapon/gun/launcher/rocket/proc/make_rocket(mob/user, drop_override = 0, empty = 1) - if(!current_mag) - return - - var/obj/item/ammo_magazine/rocket/r = new current_mag.type() - //if there's ever another type of custom rocket ammo this logic should just be moved into a function on the rocket - if(istype(current_mag, /obj/item/ammo_magazine/rocket/custom) && !empty) - //set the custom rocket variables here. - var/obj/item/ammo_magazine/rocket/custom/k = new /obj/item/ammo_magazine/rocket/custom - var/obj/item/ammo_magazine/rocket/custom/cur_mag_cast = current_mag - k.contents = cur_mag_cast.contents - k.desc = cur_mag_cast.desc - k.fuel = cur_mag_cast.fuel - k.icon_state = cur_mag_cast.icon_state - k.warhead = cur_mag_cast.warhead - k.locked = cur_mag_cast.locked - k.name = cur_mag_cast.name - k.filters = cur_mag_cast.filters - r = k - - if(empty) - r.current_rounds = 0 - if(drop_override || !user) //If we want to drop it on the ground or there's no user. - r.forceMove(get_turf(src)) //Drop it on the ground. - else - user.put_in_hands(r) - r.update_icon() - -/obj/item/weapon/gun/launcher/rocket/reload(mob/user, obj/item/ammo_magazine/rocket) - if(!current_mag) - return - if(flags_gun_features & GUN_BURST_FIRING) - return - - if(!rocket || !istype(rocket) || !istype(src, rocket.gun_type)) - to_chat(user, SPAN_WARNING("That's not going to fit!")) - return - - if(current_mag.current_rounds > 0) - to_chat(user, SPAN_WARNING("[src] is already loaded!")) - return - - if(rocket.current_rounds <= 0) - to_chat(user, SPAN_WARNING("That frame is empty!")) - return - - if(user) - to_chat(user, SPAN_NOTICE("You begin reloading [src]. Hold still...")) - if(do_after(user,current_mag.reload_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) - qdel(current_mag) - user.drop_inv_item_on_ground(rocket) - current_mag = rocket - rocket.forceMove(src) - replace_ammo(,rocket) - to_chat(user, SPAN_NOTICE("You load [rocket] into [src].")) - if(reload_sound) - playsound(user, reload_sound, 25, 1) - else - playsound(user,'sound/machines/click.ogg', 25, 1) - else - to_chat(user, SPAN_WARNING("Your reload was interrupted!")) - return - else - qdel(current_mag) - current_mag = rocket - rocket.forceMove(src) - replace_ammo(,rocket) - return TRUE - -/obj/item/weapon/gun/launcher/rocket/unload(mob/user, reload_override = 0, drop_override = 0) - if(user && current_mag) - if(current_mag.current_rounds <= 0) - to_chat(user, SPAN_WARNING("[src] is already empty!")) - return - to_chat(user, SPAN_NOTICE("You begin unloading [src]. Hold still...")) - if(do_after(user,current_mag.reload_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) - if(current_mag.current_rounds <= 0) - to_chat(user, SPAN_WARNING("You have already unloaded \the [src].")) - return - playsound(user, unload_sound, 25, 1) - user.visible_message(SPAN_NOTICE("[user] unloads [ammo] from [src]."), - SPAN_NOTICE("You unload [ammo] from [src].")) - make_rocket(user, drop_override, 0) - current_mag.current_rounds = 0 - -//Adding in the rocket backblast. The tile behind the specialist gets blasted hard enough to down and slightly wound anyone -/obj/item/weapon/gun/launcher/rocket/apply_bullet_effects(obj/projectile/projectile_to_fire, mob/user, i = 1, reflex = 0) - . = ..() - if(!HAS_TRAIT(user, TRAIT_EAR_PROTECTION) && ishuman(user)) - var/mob/living/carbon/human/huser = user - to_chat(user, SPAN_WARNING("Augh!! \The [src]'s launch blast resonates extremely loudly in your ears! You probably should have worn some sort of ear protection...")) - huser.apply_effect(6, STUTTER) - huser.emote("pain") - huser.SetEarDeafness(max(user.ear_deaf,10)) - - var/backblast_loc = get_turf(get_step(user.loc, turn(user.dir, 180))) - smoke.set_up(1, 0, backblast_loc, turn(user.dir, 180)) - smoke.start() - playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) - for(var/mob/living/carbon/C in backblast_loc) - if(!C.lying && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff - C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life - C.apply_effect(4, STUN) //For good measure - C.apply_effect(6, STUTTER) - C.emote("pain") - -//------------------------------------------------------- -//M5 RPG'S MEAN FUCKING COUSIN - -/obj/item/weapon/gun/launcher/rocket/m57a4 - name = "\improper M57-A4 'Lightning Bolt' quad thermobaric launcher" - desc = "The M57-A4 'Lightning Bolt' is possibly the most destructive man-portable weapon ever made. It is a 4-barreled missile launcher capable of burst-firing 4 thermobaric missiles. Enough said." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/event.dmi' - icon_state = "m57a4" - item_state = "m57a4" - - current_mag = /obj/item/ammo_magazine/rocket/m57a4 - aim_slowdown = SLOWDOWN_ADS_SUPERWEAPON - flags_gun_features = GUN_WIELDED_FIRING_ONLY - -/obj/item/weapon/gun/launcher/rocket/m57a4/set_gun_config_values() - ..() - set_fire_delay(FIRE_DELAY_TIER_5) - set_burst_delay(FIRE_DELAY_TIER_7) - set_burst_amount(BURST_AMOUNT_TIER_4) - accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 - scatter = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT - recoil = RECOIL_AMOUNT_TIER_3 - - -//------------------------------------------------------- -//AT rocket launchers, can be used by non specs - -/obj/item/weapon/gun/launcher/rocket/anti_tank //reloadable - name = "\improper QH-4 Shoulder-Mounted Anti-Tank RPG" - desc = "Used to take out light-tanks and enemy structures, the QH-4 is a dangerous weapon specialised against vehicles. Requires direct hits to penetrate vehicle armor." - icon_state = "m83a2" - item_state = "m83a2" - unacidable = FALSE - indestructible = FALSE - skill_locked = FALSE - - current_mag = /obj/item/ammo_magazine/rocket/anti_tank - - attachable_allowed = list() - - flags_gun_features = GUN_WIELDED_FIRING_ONLY - - flags_item = TWOHANDED - -/obj/item/weapon/gun/launcher/rocket/anti_tank/set_bullet_traits() - . = ..() - LAZYADD(traits_to_give, list( - BULLET_TRAIT_ENTRY_ID("vehicles", /datum/element/bullet_trait_damage_boost, 20, GLOB.damage_boost_vehicles), - )) - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable //single shot and disposable - name = "\improper M83A2 SADAR" - desc = "The M83A2 SADAR is a lightweight one-shot anti-armor weapon capable of engaging enemy vehicles at ranges up to 1,000m. Fully disposable, the rocket's launcher is discarded after firing. When stowed (unique-action), the SADAR system consists of a watertight carbon-fiber composite blast tube, inside of which is an aluminum launch tube containing the missile. The weapon is fired by pushing a charge button on the trigger grip. It is sighted and fired from the shoulder." - var/fired = FALSE - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/get_examine_text(mob/user) - . = ..() - . += SPAN_NOTICE("You can fold it up with unique-action.") - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/Fire(atom/target, mob/living/user, params, reflex, dual_wield) - . = ..() - if(.) - fired = TRUE - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/unique_action(mob/M) - if(fired) - to_chat(M, SPAN_WARNING("\The [src] has already been fired - you can't fold it back up again!")) - return - - M.visible_message(SPAN_NOTICE("[M] begins to fold up \the [src]."), SPAN_NOTICE("You start to fold and collapse closed \the [src].")) - - if(!do_after(M, 2 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - to_chat(M, SPAN_NOTICE("You stop folding up \the [src]")) - return - - fold(M) - M.visible_message(SPAN_NOTICE("[M] finishes folding \the [src]."), SPAN_NOTICE("You finish folding \the [src].")) - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/proc/fold(mob/user) - var/obj/item/prop/folded_anti_tank_sadar/F = new /obj/item/prop/folded_anti_tank_sadar(src.loc) - transfer_label_component(F) - qdel(src) - user.put_in_active_hand(F) - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/reload() - to_chat(usr, SPAN_WARNING("You cannot reload \the [src]!")) - return - -/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/unload() - to_chat(usr, SPAN_WARNING("You cannot unload \the [src]!")) - return - -//folded version of the sadar -/obj/item/prop/folded_anti_tank_sadar - name = "\improper M83 SADAR (folded)" - desc = "An M83 SADAR Anti-Tank RPG, compacted for easier storage. Can be unfolded with the Z key." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' - icon_state = "m83a2_folded" - w_class = SIZE_MEDIUM - garbage = FALSE - -/obj/item/prop/folded_anti_tank_sadar/attack_self(mob/user) - user.visible_message(SPAN_NOTICE("[user] begins to unfold \the [src]."), SPAN_NOTICE("You start to unfold and expand \the [src].")) - playsound(src, 'sound/items/component_pickup.ogg', 20, TRUE, 5) - - if(!do_after(user, 4 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) - to_chat(user, SPAN_NOTICE("You stop unfolding \the [src]")) - return - - unfold(user) - - user.visible_message(SPAN_NOTICE("[user] finishes unfolding \the [src]."), SPAN_NOTICE("You finish unfolding \the [src].")) - playsound(src, 'sound/items/component_pickup.ogg', 20, TRUE, 5) - . = ..() - -/obj/item/prop/folded_anti_tank_sadar/proc/unfold(mob/user) - var/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/F = new /obj/item/weapon/gun/launcher/rocket/anti_tank/disposable(src.loc) - transfer_label_component(F) - qdel(src) - user.put_in_active_hand(F) - -//------------------------------------------------------- -//UPP Rocket Launcher - -/obj/item/weapon/gun/launcher/rocket/upp - name = "\improper HJRA-12 Handheld Anti-Tank Grenade Launcher" - desc = "The HJRA-12 Handheld Anti-Tank Grenade Launcher is the standard Anti-Armor weapon of the UPP. It is designed to be easy to use and to take out or disable armored vehicles." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "hjra12" - item_state = "hjra12" - skill_locked = FALSE - current_mag = /obj/item/ammo_magazine/rocket/upp/at - - attachable_allowed = list(/obj/item/attachable/upp_rpg_breech) - - flags_gun_features = GUN_WIELDED_FIRING_ONLY - - flags_item = TWOHANDED - -/obj/item/weapon/gun/launcher/rocket/upp/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 6, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = -6, "stock_y" = 16, "special_x" = 37, "special_y" = 16) - -/obj/item/weapon/gun/launcher/rocket/upp/handle_starting_attachment() - ..() - var/obj/item/attachable/upp_rpg_breech/S = new(src) - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachables() - - var/obj/item/attachable/magnetic_harness/Integrated = new(src) - Integrated.hidden = TRUE - Integrated.flags_attach_features &= ~ATTACH_REMOVABLE - Integrated.Attach(src) - update_attachable(Integrated.slot) - -/obj/item/weapon/gun/launcher/rocket/upp/apply_bullet_effects(obj/projectile/projectile_to_fire, mob/user, i = 1, reflex = 0) - . = ..() - if(!HAS_TRAIT(user, TRAIT_EAR_PROTECTION) && ishuman(user)) - return - - var/backblast_loc = get_turf(get_step(user.loc, turn(user.dir, 180))) - smoke.set_up(1, 0, backblast_loc, turn(user.dir, 180)) - smoke.start() - playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) - for(var/mob/living/carbon/C in backblast_loc) - if(!C.lying && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff - C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life - C.apply_effect(4, STUN) //For good measure - C.apply_effect(6, STUTTER) - C.emote("pain") diff --git a/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm b/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm new file mode 100644 index 000000000000..0f767d679d03 --- /dev/null +++ b/code/modules/projectiles/guns/specialist/launcher/grenade_launcher.dm @@ -0,0 +1,364 @@ +//------------------------------------------------------- +//GRENADE LAUNCHER + +/obj/item/weapon/gun/launcher/grenade //Parent item for GLs. + w_class = SIZE_LARGE + throw_speed = SPEED_SLOW + throw_range = 10 + force = 5 + + fire_sound = 'sound/weapons/armbomb.ogg' + cocked_sound = 'sound/weapons/gun_m92_cocked.ogg' + reload_sound = 'sound/weapons/gun_shotgun_open2.ogg' //Played when inserting nade. + unload_sound = 'sound/weapons/gun_revolver_unload.ogg' + + has_cylinder = TRUE //This weapon won't work otherwise. + preload = /obj/item/explosive/grenade/high_explosive + internal_slots = 1 //This weapon must use slots. + internal_max_w_class = SIZE_MEDIUM //MEDIUM = M15. + + aim_slowdown = SLOWDOWN_ADS_SPECIALIST + wield_delay = WIELD_DELAY_SLOW + flags_gun_features = GUN_UNUSUAL_DESIGN|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY + ///Can you access the storage by clicking it, put things into it, or take things out? Meant for break-actions mostly but useful for any state where you want access to be toggleable. Make sure to call cylinder.close(user) so they don't still have the screen open! + var/open_chamber = TRUE + ///Does it launch its grenades in a low arc or a high? Do they strike people in their path, or fly beyond? + var/is_lobbing = FALSE + ///Verboten munitions. This is a blacklist. Anything in this list isn't loadable. + var/disallowed_grenade_types = list(/obj/item/explosive/grenade/spawnergrenade, /obj/item/explosive/grenade/alien, /obj/item/explosive/grenade/incendiary/molotov, /obj/item/explosive/grenade/flashbang) + ///What is this weapon permitted to fire? This is a whitelist. Anything in this list can be fired. Anything. + var/valid_munitions = list(/obj/item/explosive/grenade) + + +/obj/item/weapon/gun/launcher/grenade/set_gun_config_values() + ..() + recoil = RECOIL_AMOUNT_TIER_4 //Same as m37 shotgun. + + +/obj/item/weapon/gun/launcher/grenade/on_pocket_insertion() //Plays load sfx whenever a nade is put into storage. + playsound(usr, reload_sound, 25, 1) + update_icon() + +/obj/item/weapon/gun/launcher/grenade/on_pocket_removal() + update_icon() + +/obj/item/weapon/gun/launcher/grenade/get_examine_text(mob/user) //Different treatment for single-shot VS multi-shot GLs. + . = ..() + if(get_dist(user, src) > 2 && user != loc) + return + if(length(cylinder.contents)) + if(internal_slots == 1) + . += SPAN_NOTICE("It is loaded with a grenade.") + else + . += SPAN_NOTICE("It is loaded with [length(cylinder.contents)] / [internal_slots] grenades.") + else + . += SPAN_NOTICE("It is empty.") + + +/obj/item/weapon/gun/launcher/grenade/update_icon() + ..() + var/GL_sprite = base_gun_icon + if(GL_has_empty_icon && cylinder && !length(cylinder.contents)) + GL_sprite += "_e" + playsound(loc, cocked_sound, 25, 1) + if(GL_has_open_icon && open_chamber) + GL_sprite += "_o" + playsound(loc, cocked_sound, 25, 1) + icon_state = GL_sprite + + +/obj/item/weapon/gun/launcher/grenade/attack_hand(mob/user) + if(!open_chamber || src != user.get_inactive_hand()) //Need to have the GL in your hands to open the cylinder. + return ..() + if(cylinder.handle_attack_hand(user)) + ..() + + +/obj/item/weapon/gun/launcher/grenade/unload(mob/user, reload_override = FALSE, drop_override = FALSE, loc_override = FALSE) + if(!open_chamber) + to_chat(user, SPAN_WARNING("[src] is closed!")) + return + if(!length(cylinder.contents)) + to_chat(user, SPAN_WARNING("It's empty!")) + return + + var/obj/item/explosive/grenade/nade = cylinder.contents[length(cylinder.contents)] //Grab the last-inserted one. Or the only one, as the case may be. + cylinder.remove_from_storage(nade, user.loc) + + if(drop_override || !user) + nade.forceMove(get_turf(src)) + else + user.put_in_hands(nade) + + user.visible_message(SPAN_NOTICE("[user] unloads [nade] from [src]."), + SPAN_NOTICE("You unload [nade] from [src]."), null, 4, CHAT_TYPE_COMBAT_ACTION) + playsound(user, unload_sound, 30, 1) + + +/obj/item/weapon/gun/launcher/grenade/attackby(obj/item/I, mob/user) + if(istype(I,/obj/item/attachable) && check_inactive_hand(user)) + attach_to_gun(user,I) + return + return cylinder.attackby(I, user) + +/obj/item/weapon/gun/launcher/grenade/unique_action(mob/user) + if(isobserver(usr) || isxeno(usr)) + return + if(locate(/datum/action/item_action/toggle_firing_level) in actions) + toggle_firing_level(usr) + +/obj/item/weapon/gun/launcher/grenade/proc/allowed_ammo_type(obj/item/I) + for(var/G in disallowed_grenade_types) //Check for the bad stuff. + if(istype(I, G)) + return FALSE + for(var/G in valid_munitions) //Check if it has a ticket. + if(istype(I, G)) + return TRUE + + +/obj/item/weapon/gun/launcher/grenade/on_pocket_attackby(obj/item/explosive/grenade/I, mob/user) //the attack in question is on the internal container. Complete override - normal storage attackby cannot be silenced, and will always say "you put the x into y". + if(!open_chamber) + to_chat(user, SPAN_WARNING("[src] is closed!")) + return + if(!istype(I)) + to_chat(user, SPAN_WARNING("You can't load [I] into [src]!")) + return + if(!allowed_ammo_type(I)) + to_chat(user, SPAN_WARNING("[src] can't fire this type of grenade!")) + return + if(length(cylinder.contents) >= internal_slots) + to_chat(user, SPAN_WARNING("[src] cannot hold more grenades!")) + return + if(!cylinder.can_be_inserted(I, user)) //Technically includes whether there's room for it, but the above gives a tailored message. + return + + user.visible_message(SPAN_NOTICE("[user] loads [I] into [src]."), + SPAN_NOTICE("You load [I] into the grenade launcher."), null, 4, CHAT_TYPE_COMBAT_ACTION) + playsound(usr, reload_sound, 75, 1) + if(internal_slots > 1) + to_chat(user, SPAN_INFO("Now storing: [length(cylinder.contents) + 1] / [internal_slots] grenades.")) + + cylinder.handle_item_insertion(I, TRUE, user) + + +/obj/item/weapon/gun/launcher/grenade/able_to_fire(mob/living/user) //Skillchecks and fire blockers go in the child items. + . = ..() + if(.) + if(!length(cylinder.contents)) + to_chat(user, SPAN_WARNING("The [name] is empty.")) + return FALSE + var/obj/item/explosive/grenade/G = cylinder.contents[1] + if(G.antigrief_protection && user.faction == FACTION_MARINE && explosive_antigrief_check(G, user)) + to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from firing!")) + msg_admin_niche("[key_name(user)] attempted to prime \a [G.name] in [get_area(src)] [ADMIN_JMP(src.loc)]") + return FALSE + + +/obj/item/weapon/gun/launcher/grenade/afterattack(atom/target, mob/user, flag) //Not actually after the attack. After click, more like. + if(able_to_fire(user)) + if(get_dist(target,user) <= 2) + var/obj/item/explosive/grenade/nade = cylinder.contents[1] + if(nade.dangerous) + to_chat(user, SPAN_WARNING("The grenade launcher beeps a warning noise. You are too close!")) + return + fire_grenade(target,user) + + +/obj/item/weapon/gun/launcher/grenade/proc/fire_grenade(atom/target, mob/user) + set waitfor = 0 + last_fired = world.time + + var/to_firer = "You fire the [name]!" + if(internal_slots > 1) + to_firer += " [length(cylinder.contents)-1]/[internal_slots] grenades remaining." + user.visible_message(SPAN_DANGER("[user] fired a grenade!"), + SPAN_WARNING("[to_firer]"), message_flags = CHAT_TYPE_WEAPON_USE) + playsound(user.loc, fire_sound, 50, 1) + + var/angle = round(Get_Angle(user,target)) + muzzle_flash(angle,user) + simulate_recoil(0, user) + + var/obj/item/explosive/grenade/fired = cylinder.contents[1] + cylinder.remove_from_storage(fired, user.loc) + var/pass_flags = NO_FLAGS + if(is_lobbing) + if(istype(fired, /obj/item/explosive/grenade/slug/baton)) + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + human_user.remember_dropped_object(fired) + fired.fingerprintslast = key_name(user) + pass_flags |= PASS_MOB_THRU_HUMAN|PASS_MOB_IS_OTHER|PASS_OVER + else + pass_flags |= PASS_MOB_THRU|PASS_HIGH_OVER + + msg_admin_attack("[key_name_admin(user)] fired a grenade ([fired.name]) from \a ([name]).") + log_game("[key_name_admin(user)] used a grenade ([name]).") + + fired.throw_range = 20 + fired.det_time = min(10, fired.det_time) + fired.activate(user, FALSE) + fired.forceMove(get_turf(src)) + fired.throw_atom(target, 20, SPEED_VERY_FAST, user, null, NORMAL_LAUNCH, pass_flags) + + + +//Doesn't use these. Listed for reference. +/obj/item/weapon/gun/launcher/grenade/load_into_chamber() + return +/obj/item/weapon/gun/launcher/grenade/reload_into_chamber() + return + +/obj/item/weapon/gun/launcher/grenade/has_ammunition() + return length(cylinder.contents) + +//------------------------------------------------------- +//Toggle firing level special action for grenade launchers + +/datum/action/item_action/toggle_firing_level/New(Target, obj/item/holder) + . = ..() + name = "Toggle Firing Level" + button.name = name + update_icon() + +/datum/action/item_action/toggle_firing_level/action_activate() + var/obj/item/weapon/gun/launcher/grenade/G = holder_item + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + if(H.is_mob_incapacitated() || G.get_active_firearm(H, FALSE) != holder_item) + return + G.toggle_firing_level(usr) + +/datum/action/item_action/toggle_firing_level/proc/update_icon() + var/obj/item/weapon/gun/launcher/grenade/G = holder_item + if(G.is_lobbing) + action_icon_state = "hightoss_on" + else + action_icon_state = "hightoss_off" + button.overlays.Cut() + button.overlays += image('icons/mob/hud/actions.dmi', button, action_icon_state) + +/obj/item/weapon/gun/launcher/grenade/proc/toggle_firing_level(mob/user) + is_lobbing = !is_lobbing + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s firing level. You will now fire [is_lobbing ? "in an arcing path over obstacles" : "directly at your target"].") + playsound(loc,'sound/machines/click.ogg', 25, 1) + var/datum/action/item_action/toggle_firing_level/TFL = locate(/datum/action/item_action/toggle_firing_level) in actions + TFL.update_icon() + +//------------------------------------------------------- +//M92 GRENADE LAUNCHER + +/obj/item/weapon/gun/launcher/grenade/m92 + name = "\improper M92 grenade launcher" + desc = "A heavy, 6-shot grenade launcher used by the Colonial Marines for area denial and big explosions." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m92" + item_state = "m92" + unacidable = TRUE + indestructible = 1 + matter = list("metal" = 6000) + actions_types = list(/datum/action/item_action/toggle_firing_level) + + attachable_allowed = list(/obj/item/attachable/magnetic_harness) + flags_item = TWOHANDED|NO_CRYO_STORE + map_specific_decoration = TRUE + + is_lobbing = TRUE + internal_slots = 6 + direct_draw = FALSE + +/obj/item/weapon/gun/launcher/grenade/m92/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 14, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + +/obj/item/weapon/gun/launcher/grenade/m92/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_4*4) + +/obj/item/weapon/gun/launcher/grenade/m92/able_to_fire(mob/living/user) + . = ..() + if (. && istype(user)) + if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_GRENADIER) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return FALSE + + +//------------------------------------------------------- +//M81 GRENADE LAUNCHER + +/obj/item/weapon/gun/launcher/grenade/m81 + name = "\improper M81 grenade launcher" + desc = "A lightweight, single-shot low-angle grenade launcher used by the Colonial Marines for area denial and big explosions." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' + icon_state = "m81" + item_state = "m81" //needs a wield sprite. + + matter = list("metal" = 7000) + +/obj/item/weapon/gun/launcher/grenade/m81/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 14, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + +/obj/item/weapon/gun/launcher/grenade/m81/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_4 * 1.5) + +/obj/item/weapon/gun/launcher/grenade/m81/on_pocket_removal() + ..() + playsound(usr, unload_sound, 30, 1) + +/obj/item/weapon/gun/launcher/grenade/m81/riot/able_to_fire(mob/living/user) + . = ..() + if (. && istype(user)) + if(!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED)) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return FALSE + + +/obj/item/weapon/gun/launcher/grenade/m81/riot + name = "\improper M81 riot grenade launcher" + desc = "A lightweight, single-shot low-angle grenade launcher to launch tear gas grenades. Used by the Colonial Marines Military Police during riots." + valid_munitions = list(/obj/item/explosive/grenade/custom/teargas) + preload = /obj/item/explosive/grenade/custom/teargas + +//------------------------------------------------------- +//M79 Grenade Launcher subtype of the M81 + +/obj/item/weapon/gun/launcher/grenade/m81/m79//m79 variant for marines + name = "\improper M79 grenade launcher" + desc = "A heavy, low-angle 40mm grenade launcher. It's been in use since the Vietnam War, though this version has been modernized with an IFF enabled micro-computer. The wooden furniture is, in fact, made of painted hardened polykevlon." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m79" + item_state = "m79" + flags_equip_slot = SLOT_BACK + preload = /obj/item/explosive/grenade/slug/baton + is_lobbing = TRUE + actions_types = list(/datum/action/item_action/toggle_firing_level) + + fire_sound = 'sound/weapons/handling/m79_shoot.ogg' + cocked_sound = 'sound/weapons/handling/m79_break_open.ogg' + reload_sound = 'sound/weapons/handling/m79_reload.ogg' + unload_sound = 'sound/weapons/handling/m79_unload.ogg' + + attachable_allowed = list( + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/flashlight, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/stock/m79, + ) + +/obj/item/weapon/gun/launcher/grenade/m81/m79/handle_starting_attachment() + ..() + var/obj/item/attachable/stock/m79/S = new(src) + S.hidden = FALSE + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachable(S.slot) + +/obj/item/weapon/gun/launcher/grenade/m81/m79/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 9, "rail_y" = 22, "under_x" = 19, "under_y" = 14, "stock_x" = 14, "stock_y" = 14) + +/obj/item/weapon/gun/launcher/grenade/m81/m79/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff)//might not need this because of is_lobbing, but let's keep it just incase + )) diff --git a/code/modules/projectiles/guns/specialist/launcher/launcher.dm b/code/modules/projectiles/guns/specialist/launcher/launcher.dm new file mode 100644 index 000000000000..70f00aa83c35 --- /dev/null +++ b/code/modules/projectiles/guns/specialist/launcher/launcher.dm @@ -0,0 +1,46 @@ +//------------------------------------------------------- +//HEAVY WEAPONS + +/obj/item/weapon/gun/launcher + gun_category = GUN_CATEGORY_HEAVY + has_empty_icon = FALSE + has_open_icon = FALSE + ///gun update_icon doesn't detect that guns with no magazine are loaded or not, and will always append _o or _e if possible. + var/GL_has_empty_icon = TRUE + ///gun update_icon doesn't detect that guns with no magazine are loaded or not, and will always append _o or _e if possible. + var/GL_has_open_icon = FALSE + + ///Internal storage item used as magazine. Must be initialised to work! Set parameters by variables or it will inherit standard numbers from storage.dm. Got to call it *something* and 'magazine' or w/e would be confusing. + var/obj/item/storage/internal/cylinder + /// Variable that initializes the above. + var/has_cylinder = FALSE + ///What single item to fill the storage with, if any. This does not respect w_class. + var/preload + ///How many items can be inserted. "Null" = backpack-style size-based inventory. You'll have to set max_storage_space too if you do that, and arrange any initial contents. Iff you arrange to put in more items than the storage can hold, they can be taken out but not replaced. + var/internal_slots + ///how big an item can be inserted. + var/internal_max_w_class + ///the sfx played when the storage is opened. + var/use_sound = null + ///Whether clicking a held weapon with an empty hand will open its inventory or draw a munition out. + var/direct_draw = TRUE + +/obj/item/weapon/gun/launcher/Initialize(mapload, spawn_empty) //If changing vars on init, be sure to do the parent proccall *after* the change. + . = ..() + if(has_cylinder) + cylinder = new /obj/item/storage/internal(src) + cylinder.storage_slots = internal_slots + cylinder.max_w_class = internal_max_w_class + cylinder.use_sound = use_sound + if(direct_draw) + cylinder.storage_flags ^= STORAGE_USING_DRAWING_METHOD + if(preload && !spawn_empty) for(var/i = 1 to cylinder.storage_slots) + new preload(cylinder) + update_icon() + +/obj/item/weapon/gun/launcher/verb/toggle_draw_mode() + set name = "Switch Storage Drawing Method" + set category = "Object" + set src in usr + + cylinder.storage_draw_logic(src.name) diff --git a/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm b/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm new file mode 100644 index 000000000000..6d998002134c --- /dev/null +++ b/code/modules/projectiles/guns/specialist/launcher/rocket_launcher.dm @@ -0,0 +1,369 @@ + +//------------------------------------------------------- +//M5 RPG + +/obj/item/weapon/gun/launcher/rocket + name = "\improper M5 RPG" + desc = "The M5 RPG is the primary anti-armor weapon of the USCM. Used to take out light-tanks and enemy structures, the M5 RPG is a dangerous weapon with a variety of combat uses." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m5" + item_state = "m5" + unacidable = TRUE + indestructible = 1 + + matter = list("metal" = 10000) + current_mag = /obj/item/ammo_magazine/rocket + flags_equip_slot = NO_FLAGS + w_class = SIZE_HUGE + force = 15 + wield_delay = WIELD_DELAY_HORRIBLE + delay_style = WEAPON_DELAY_NO_FIRE + aim_slowdown = SLOWDOWN_ADS_SPECIALIST + attachable_allowed = list( + /obj/item/attachable/magnetic_harness, + ) + + flags_gun_features = GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_INTERNAL_MAG + var/datum/effect_system/smoke_spread/smoke + + flags_item = TWOHANDED|NO_CRYO_STORE + var/skill_locked = TRUE + +/obj/item/weapon/gun/launcher/rocket/Initialize(mapload, spawn_empty) + . = ..() + smoke = new() + smoke.attach(src) + +/obj/item/weapon/gun/launcher/rocket/Destroy() + QDEL_NULL(smoke) + return ..() + + +/obj/item/weapon/gun/launcher/rocket/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 6, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + + +/obj/item/weapon/gun/launcher/rocket/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6*2) + accuracy_mult = BASE_ACCURACY_MULT + scatter = SCATTER_AMOUNT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_3 + + +/obj/item/weapon/gun/launcher/rocket/get_examine_text(mob/user) + . = ..() + if(current_mag.current_rounds <= 0) + . += "It's not loaded." + return + if(current_mag.current_rounds > 0) + . += "It has an 84mm [ammo.name] loaded." + + +/obj/item/weapon/gun/launcher/rocket/able_to_fire(mob/living/user) + . = ..() + if (. && istype(user)) //Let's check all that other stuff first. + if(skill_locked && !skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_ROCKET) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return 0 + if(user.faction == FACTION_MARINE && explosive_antigrief_check(src, user)) + to_chat(user, SPAN_WARNING("\The [name]'s safe-area accident inhibitor prevents you from firing!")) + msg_admin_niche("[key_name(user)] attempted to fire \a [name] in [get_area(src)] [ADMIN_JMP(loc)]") + return FALSE + if(current_mag && current_mag.current_rounds > 0) + make_rocket(user, 0, 1) + +/obj/item/weapon/gun/launcher/rocket/load_into_chamber(mob/user) +// if(active_attachable) active_attachable = null + return ready_in_chamber() + +//No such thing +/obj/item/weapon/gun/launcher/rocket/reload_into_chamber(mob/user) + return TRUE + +/obj/item/weapon/gun/launcher/rocket/delete_bullet(obj/projectile/projectile_to_fire, refund = 0) + if(!current_mag) + return + qdel(projectile_to_fire) + if(refund) + current_mag.current_rounds++ + return TRUE + +/obj/item/weapon/gun/launcher/rocket/proc/make_rocket(mob/user, drop_override = 0, empty = 1) + if(!current_mag) + return + + var/obj/item/ammo_magazine/rocket/r = new current_mag.type() + //if there's ever another type of custom rocket ammo this logic should just be moved into a function on the rocket + if(istype(current_mag, /obj/item/ammo_magazine/rocket/custom) && !empty) + //set the custom rocket variables here. + var/obj/item/ammo_magazine/rocket/custom/k = new /obj/item/ammo_magazine/rocket/custom + var/obj/item/ammo_magazine/rocket/custom/cur_mag_cast = current_mag + k.contents = cur_mag_cast.contents + k.desc = cur_mag_cast.desc + k.fuel = cur_mag_cast.fuel + k.icon_state = cur_mag_cast.icon_state + k.warhead = cur_mag_cast.warhead + k.locked = cur_mag_cast.locked + k.name = cur_mag_cast.name + k.filters = cur_mag_cast.filters + r = k + + if(empty) + r.current_rounds = 0 + if(drop_override || !user) //If we want to drop it on the ground or there's no user. + r.forceMove(get_turf(src)) //Drop it on the ground. + else + user.put_in_hands(r) + r.update_icon() + +/obj/item/weapon/gun/launcher/rocket/reload(mob/user, obj/item/ammo_magazine/rocket) + if(!current_mag) + return + if(flags_gun_features & GUN_BURST_FIRING) + return + + if(!rocket || !istype(rocket) || !istype(src, rocket.gun_type)) + to_chat(user, SPAN_WARNING("That's not going to fit!")) + return + + if(current_mag.current_rounds > 0) + to_chat(user, SPAN_WARNING("[src] is already loaded!")) + return + + if(rocket.current_rounds <= 0) + to_chat(user, SPAN_WARNING("That frame is empty!")) + return + + if(user) + to_chat(user, SPAN_NOTICE("You begin reloading [src]. Hold still...")) + if(do_after(user,current_mag.reload_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) + qdel(current_mag) + user.drop_inv_item_on_ground(rocket) + current_mag = rocket + rocket.forceMove(src) + replace_ammo(,rocket) + to_chat(user, SPAN_NOTICE("You load [rocket] into [src].")) + if(reload_sound) + playsound(user, reload_sound, 25, 1) + else + playsound(user,'sound/machines/click.ogg', 25, 1) + else + to_chat(user, SPAN_WARNING("Your reload was interrupted!")) + return + else + qdel(current_mag) + current_mag = rocket + rocket.forceMove(src) + replace_ammo(,rocket) + return TRUE + +/obj/item/weapon/gun/launcher/rocket/unload(mob/user, reload_override = 0, drop_override = 0) + if(user && current_mag) + if(current_mag.current_rounds <= 0) + to_chat(user, SPAN_WARNING("[src] is already empty!")) + return + to_chat(user, SPAN_NOTICE("You begin unloading [src]. Hold still...")) + if(do_after(user,current_mag.reload_delay, INTERRUPT_ALL, BUSY_ICON_FRIENDLY)) + if(current_mag.current_rounds <= 0) + to_chat(user, SPAN_WARNING("You have already unloaded \the [src].")) + return + playsound(user, unload_sound, 25, 1) + user.visible_message(SPAN_NOTICE("[user] unloads [ammo] from [src]."), + SPAN_NOTICE("You unload [ammo] from [src].")) + make_rocket(user, drop_override, 0) + current_mag.current_rounds = 0 + +//Adding in the rocket backblast. The tile behind the specialist gets blasted hard enough to down and slightly wound anyone +/obj/item/weapon/gun/launcher/rocket/apply_bullet_effects(obj/projectile/projectile_to_fire, mob/user, i = 1, reflex = 0) + . = ..() + if(!HAS_TRAIT(user, TRAIT_EAR_PROTECTION) && ishuman(user)) + var/mob/living/carbon/human/huser = user + to_chat(user, SPAN_WARNING("Augh!! \The [src]'s launch blast resonates extremely loudly in your ears! You probably should have worn some sort of ear protection...")) + huser.apply_effect(6, STUTTER) + huser.emote("pain") + huser.SetEarDeafness(max(user.ear_deaf,10)) + + var/backblast_loc = get_turf(get_step(user.loc, turn(user.dir, 180))) + smoke.set_up(1, 0, backblast_loc, turn(user.dir, 180)) + smoke.start() + playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) + for(var/mob/living/carbon/C in backblast_loc) + if(!C.lying && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff + C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life + C.apply_effect(4, STUN) //For good measure + C.apply_effect(6, STUTTER) + C.emote("pain") + +//------------------------------------------------------- +//M5 RPG'S MEAN FUCKING COUSIN + +/obj/item/weapon/gun/launcher/rocket/m57a4 + name = "\improper M57-A4 'Lightning Bolt' quad thermobaric launcher" + desc = "The M57-A4 'Lightning Bolt' is possibly the most destructive man-portable weapon ever made. It is a 4-barreled missile launcher capable of burst-firing 4 thermobaric missiles. Enough said." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/event.dmi' + icon_state = "m57a4" + item_state = "m57a4" + + current_mag = /obj/item/ammo_magazine/rocket/m57a4 + aim_slowdown = SLOWDOWN_ADS_SUPERWEAPON + flags_gun_features = GUN_WIELDED_FIRING_ONLY + +/obj/item/weapon/gun/launcher/rocket/m57a4/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_5) + set_burst_delay(FIRE_DELAY_TIER_7) + set_burst_amount(BURST_AMOUNT_TIER_4) + accuracy_mult = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 + scatter = SCATTER_AMOUNT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_3 + + +//------------------------------------------------------- +//AT rocket launchers, can be used by non specs + +/obj/item/weapon/gun/launcher/rocket/anti_tank //reloadable + name = "\improper QH-4 Shoulder-Mounted Anti-Tank RPG" + desc = "Used to take out light-tanks and enemy structures, the QH-4 is a dangerous weapon specialised against vehicles. Requires direct hits to penetrate vehicle armor." + icon_state = "m83a2" + item_state = "m83a2" + unacidable = FALSE + indestructible = FALSE + skill_locked = FALSE + + current_mag = /obj/item/ammo_magazine/rocket/anti_tank + + attachable_allowed = list() + + flags_gun_features = GUN_WIELDED_FIRING_ONLY + + flags_item = TWOHANDED + +/obj/item/weapon/gun/launcher/rocket/anti_tank/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY_ID("vehicles", /datum/element/bullet_trait_damage_boost, 20, GLOB.damage_boost_vehicles), + )) + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable //single shot and disposable + name = "\improper M83A2 SADAR" + desc = "The M83A2 SADAR is a lightweight one-shot anti-armor weapon capable of engaging enemy vehicles at ranges up to 1,000m. Fully disposable, the rocket's launcher is discarded after firing. When stowed (unique-action), the SADAR system consists of a watertight carbon-fiber composite blast tube, inside of which is an aluminum launch tube containing the missile. The weapon is fired by pushing a charge button on the trigger grip. It is sighted and fired from the shoulder." + var/fired = FALSE + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/get_examine_text(mob/user) + . = ..() + . += SPAN_NOTICE("You can fold it up with unique-action.") + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/Fire(atom/target, mob/living/user, params, reflex, dual_wield) + . = ..() + if(.) + fired = TRUE + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/unique_action(mob/M) + if(fired) + to_chat(M, SPAN_WARNING("\The [src] has already been fired - you can't fold it back up again!")) + return + + M.visible_message(SPAN_NOTICE("[M] begins to fold up \the [src]."), SPAN_NOTICE("You start to fold and collapse closed \the [src].")) + + if(!do_after(M, 2 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) + to_chat(M, SPAN_NOTICE("You stop folding up \the [src]")) + return + + fold(M) + M.visible_message(SPAN_NOTICE("[M] finishes folding \the [src]."), SPAN_NOTICE("You finish folding \the [src].")) + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/proc/fold(mob/user) + var/obj/item/prop/folded_anti_tank_sadar/F = new /obj/item/prop/folded_anti_tank_sadar(src.loc) + transfer_label_component(F) + qdel(src) + user.put_in_active_hand(F) + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/reload() + to_chat(usr, SPAN_WARNING("You cannot reload \the [src]!")) + return + +/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/unload() + to_chat(usr, SPAN_WARNING("You cannot unload \the [src]!")) + return + +//folded version of the sadar +/obj/item/prop/folded_anti_tank_sadar + name = "\improper M83 SADAR (folded)" + desc = "An M83 SADAR Anti-Tank RPG, compacted for easier storage. Can be unfolded with the Z key." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m83a2_folded" + w_class = SIZE_MEDIUM + garbage = FALSE + +/obj/item/prop/folded_anti_tank_sadar/attack_self(mob/user) + user.visible_message(SPAN_NOTICE("[user] begins to unfold \the [src]."), SPAN_NOTICE("You start to unfold and expand \the [src].")) + playsound(src, 'sound/items/component_pickup.ogg', 20, TRUE, 5) + + if(!do_after(user, 4 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) + to_chat(user, SPAN_NOTICE("You stop unfolding \the [src]")) + return + + unfold(user) + + user.visible_message(SPAN_NOTICE("[user] finishes unfolding \the [src]."), SPAN_NOTICE("You finish unfolding \the [src].")) + playsound(src, 'sound/items/component_pickup.ogg', 20, TRUE, 5) + . = ..() + +/obj/item/prop/folded_anti_tank_sadar/proc/unfold(mob/user) + var/obj/item/weapon/gun/launcher/rocket/anti_tank/disposable/F = new /obj/item/weapon/gun/launcher/rocket/anti_tank/disposable(src.loc) + transfer_label_component(F) + qdel(src) + user.put_in_active_hand(F) + +//------------------------------------------------------- +//UPP Rocket Launcher + +/obj/item/weapon/gun/launcher/rocket/upp + name = "\improper HJRA-12 Handheld Anti-Tank Grenade Launcher" + desc = "The HJRA-12 Handheld Anti-Tank Grenade Launcher is the standard Anti-Armor weapon of the UPP. It is designed to be easy to use and to take out or disable armored vehicles." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "hjra12" + item_state = "hjra12" + skill_locked = FALSE + current_mag = /obj/item/ammo_magazine/rocket/upp/at + + attachable_allowed = list(/obj/item/attachable/upp_rpg_breech) + + flags_gun_features = GUN_WIELDED_FIRING_ONLY + + flags_item = TWOHANDED + +/obj/item/weapon/gun/launcher/rocket/upp/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 6, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = -6, "stock_y" = 16, "special_x" = 37, "special_y" = 16) + +/obj/item/weapon/gun/launcher/rocket/upp/handle_starting_attachment() + ..() + var/obj/item/attachable/upp_rpg_breech/S = new(src) + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachables() + + var/obj/item/attachable/magnetic_harness/Integrated = new(src) + Integrated.hidden = TRUE + Integrated.flags_attach_features &= ~ATTACH_REMOVABLE + Integrated.Attach(src) + update_attachable(Integrated.slot) + +/obj/item/weapon/gun/launcher/rocket/upp/apply_bullet_effects(obj/projectile/projectile_to_fire, mob/user, i = 1, reflex = 0) + . = ..() + if(!HAS_TRAIT(user, TRAIT_EAR_PROTECTION) && ishuman(user)) + return + + var/backblast_loc = get_turf(get_step(user.loc, turn(user.dir, 180))) + smoke.set_up(1, 0, backblast_loc, turn(user.dir, 180)) + smoke.start() + playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) + for(var/mob/living/carbon/C in backblast_loc) + if(!C.lying && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff + C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life + C.apply_effect(4, STUN) //For good measure + C.apply_effect(6, STUTTER) + C.emote("pain") diff --git a/code/modules/projectiles/guns/specialist/scout.dm b/code/modules/projectiles/guns/specialist/scout.dm new file mode 100644 index 000000000000..c2c5abd54add --- /dev/null +++ b/code/modules/projectiles/guns/specialist/scout.dm @@ -0,0 +1,83 @@ +//M4RA custom marksman rifle + +/obj/item/weapon/gun/rifle/m4ra_custom + name = "\improper M4RA custom battle rifle" + desc = "This is a further improvement upon the already rock-solid M4RA. Made by the USCM armorers on Chinook station - This variant of the M4RA has a specifically milled magazine well to accept A19 rounds. It sports a light-weight titantium-alloy frame, better responsive to the heavy kick of the tailor-made A19 rounds." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m4ra_custom" + item_state = "m4ra_custom" + unacidable = TRUE + indestructible = 1 + accepted_ammo = list( + /obj/item/ammo_magazine/rifle/m4ra, + /obj/item/ammo_magazine/rifle/m4ra/ap, + /obj/item/ammo_magazine/rifle/m4ra/ext, + /obj/item/ammo_magazine/rifle/m4ra/rubber, + /obj/item/ammo_magazine/rifle/m4ra/incendiary, + /obj/item/ammo_magazine/rifle/m4ra/heap, + /obj/item/ammo_magazine/rifle/m4ra/penetrating, + /obj/item/ammo_magazine/rifle/m4ra/custom, + /obj/item/ammo_magazine/rifle/m4ra/custom/incendiary, + /obj/item/ammo_magazine/rifle/m4ra/custom/impact, + + ) + + fire_sound = 'sound/weapons/gun_m4ra.ogg' + reload_sound = 'sound/weapons/handling/l42_reload.ogg' + unload_sound = 'sound/weapons/handling/l42_unload.ogg' + current_mag = /obj/item/ammo_magazine/rifle/m4ra/custom + force = 26 + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, + /obj/item/attachable/bayonet/co2, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/bipod, + /obj/item/attachable/attached_gun/shotgun, + /obj/item/attachable/verticalgrip, + /obj/item/attachable/angledgrip, + /obj/item/attachable/lasersight, + /obj/item/attachable/scope, + /obj/item/attachable/scope/mini, + /obj/item/attachable/flashlight/grip, + ) + + flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + map_specific_decoration = TRUE + aim_slowdown = SLOWDOWN_ADS_QUICK + flags_item = TWOHANDED|NO_CRYO_STORE + +/obj/item/weapon/gun/rifle/m4ra_custom/handle_starting_attachment() + ..() + var/obj/item/attachable/m4ra_barrel_custom/integrated = new(src) + integrated.flags_attach_features &= ~ATTACH_REMOVABLE + integrated.Attach(src) + update_attachable(integrated.slot) + + +/obj/item/weapon/gun/rifle/m4ra_custom/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 43, "muzzle_y" = 17,"rail_x" = 23, "rail_y" = 21, "under_x" = 30, "under_y" = 11, "stock_x" = 24, "stock_y" = 13, "special_x" = 37, "special_y" = 16) + +/obj/item/weapon/gun/rifle/m4ra_custom/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6) + set_burst_amount(BURST_AMOUNT_TIER_2) + set_burst_delay(FIRE_DELAY_TIER_12) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_2 + scatter = SCATTER_AMOUNT_TIER_8 + burst_scatter_mult = SCATTER_AMOUNT_TIER_8 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 + recoil = RECOIL_AMOUNT_TIER_5 + damage_falloff_mult = 0 + +/obj/item/weapon/gun/rifle/m4ra_custom/able_to_fire(mob/living/user) + . = ..() + if (. && istype(user)) //Let's check all that other stuff first. + if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SCOUT) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return FALSE diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm new file mode 100644 index 000000000000..17a2c0f26887 --- /dev/null +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -0,0 +1,510 @@ +//------------------------------------------------------- +//SNIPER RIFLES +//Keyword rifles. They are subtype of rifles, but still contained here as a specialist weapon. + +//Because this parent type did not exist +//Note that this means that snipers will have a slowdown of 3, due to the scope +/obj/item/weapon/gun/rifle/sniper + aim_slowdown = SLOWDOWN_ADS_SPECIALIST + wield_delay = WIELD_DELAY_SLOW + + var/has_aimed_shot = TRUE + var/aiming_time = 1.25 SECONDS + var/aimed_shot_cooldown + var/aimed_shot_cooldown_delay = 2.5 SECONDS + + var/enable_aimed_shot_laser = TRUE + var/sniper_lockon_icon = "sniper_lockon" + var/obj/effect/ebeam/sniper_beam_type = /obj/effect/ebeam/laser + var/sniper_beam_icon = "laser_beam" + var/skill_locked = TRUE + +/obj/item/weapon/gun/rifle/sniper/get_examine_text(mob/user) + . = ..() + if(!has_aimed_shot) + return + . += SPAN_NOTICE("This weapon has an unique ability, Aimed Shot, allowing it to deal great damage after a windup.
Additionally, the aimed shot can be sped up with a tracking laser, which is enabled by default but may be disabled.") + +/obj/item/weapon/gun/rifle/sniper/Initialize(mapload, spawn_empty) + if(has_aimed_shot) + LAZYADD(actions_types, list(/datum/action/item_action/specialist/aimed_shot, /datum/action/item_action/specialist/toggle_laser)) + return ..() + +/obj/item/weapon/gun/rifle/sniper/able_to_fire(mob/living/user) + . = ..() + if(. && istype(user) && skill_locked) //Let's check all that other stuff first. + if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_SNIPER) + to_chat(user, SPAN_WARNING("You don't seem to know how to use \the [src]...")) + return 0 + +// Aimed shot ability +/datum/action/item_action/specialist/aimed_shot + ability_primacy = SPEC_PRIMARY_ACTION_2 + var/minimum_aim_distance = 2 + +/datum/action/item_action/specialist/aimed_shot/New(mob/living/user, obj/item/holder) + ..() + name = "Aimed Shot" + button.name = name + button.overlays.Cut() + var/image/IMG = image('icons/mob/hud/actions.dmi', button, "sniper_aim") + button.overlays += IMG + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + sniper_rifle.aimed_shot_cooldown = world.time + +/* + ACTIONS SPECIALSIT SNIPER CAN TAKE +*/ +/datum/action/item_action/specialist/aimed_shot/action_activate() + if(!ishuman(owner)) + return + var/mob/living/carbon/human/H = owner + if(H.selected_ability == src) + to_chat(H, "You will no longer use [name] with \ + [H.client && H.client.prefs && H.client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") + button.icon_state = "template" + H.selected_ability = null + else + to_chat(H, "You will now use [name] with \ + [H.client && H.client.prefs && H.client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_CLICK ? "middle-click" : "shift-click"].") + if(H.selected_ability) + H.selected_ability.button.icon_state = "template" + H.selected_ability = null + button.icon_state = "template_on" + H.selected_ability = src + +/datum/action/item_action/specialist/aimed_shot/can_use_action() + var/mob/living/carbon/human/H = owner + if(istype(H) && !H.is_mob_incapacitated() && !H.lying && (holder_item == H.r_hand || holder_item || H.l_hand)) + return TRUE + +/datum/action/item_action/specialist/aimed_shot/proc/use_ability(atom/A) + var/mob/living/carbon/human/human = owner + if(!istype(A, /mob/living)) + return + + var/mob/living/target = A + + if(target.stat == DEAD || target == human) + return + + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + if(world.time < sniper_rifle.aimed_shot_cooldown) + return + + if(!check_can_use(target)) + return + + human.face_atom(target) + + ///Add a decisecond to the default 1.5 seconds for each two tiles to hit. + var/distance = round(get_dist(target, human) * 0.5) + var/f_aiming_time = sniper_rifle.aiming_time + distance + + var/aim_multiplier = 1 + var/aiming_buffs + + if(sniper_rifle.enable_aimed_shot_laser) + aim_multiplier = 0.6 + aiming_buffs++ + + if(HAS_TRAIT(target, TRAIT_SPOTTER_LAZED)) + aim_multiplier = 0.5 + aiming_buffs++ + + if(aiming_buffs > 1) + aim_multiplier = 0.35 + + f_aiming_time *= aim_multiplier + + var/image/lockon_icon = image(icon = 'icons/effects/Targeted.dmi', icon_state = sniper_rifle.sniper_lockon_icon) + + var/x_offset = -target.pixel_x + target.base_pixel_x + var/y_offset = (target.icon_size - world.icon_size) * 0.5 - target.pixel_y + target.base_pixel_y + + lockon_icon.pixel_x = x_offset + lockon_icon.pixel_y = y_offset + target.overlays += lockon_icon + + var/image/lockon_direction_icon + if(!sniper_rifle.enable_aimed_shot_laser) + lockon_direction_icon = image(icon = 'icons/effects/Targeted.dmi', icon_state = "[sniper_rifle.sniper_lockon_icon]_direction", dir = get_cardinal_dir(target, human)) + lockon_direction_icon.pixel_x = x_offset + lockon_direction_icon.pixel_y = y_offset + target.overlays += lockon_direction_icon + if(human.client) + playsound_client(human.client, 'sound/weapons/TargetOn.ogg', human, 50) + playsound(target, 'sound/weapons/TargetOn.ogg', 70, FALSE, 8, falloff = 0.4) + + var/datum/beam/laser_beam + if(sniper_rifle.enable_aimed_shot_laser) + laser_beam = target.beam(human, sniper_rifle.sniper_beam_icon, 'icons/effects/beam.dmi', (f_aiming_time + 1 SECONDS), beam_type = sniper_rifle.sniper_beam_type) + laser_beam.visuals.alpha = 0 + animate(laser_beam.visuals, alpha = initial(laser_beam.visuals.alpha), f_aiming_time, easing = SINE_EASING|EASE_OUT) + + ////timer is (f_spotting_time + 1 SECONDS) because sometimes it janks out before the doafter is done. blame sleeps or something + + if(!do_after(human, f_aiming_time, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, NO_BUSY_ICON)) + target.overlays -= lockon_icon + target.overlays -= lockon_direction_icon + qdel(laser_beam) + return + + target.overlays -= lockon_icon + target.overlays -= lockon_direction_icon + qdel(laser_beam) + + if(!check_can_use(target, TRUE)) + return + + var/obj/projectile/aimed_proj = sniper_rifle.in_chamber + aimed_proj.projectile_flags |= PROJECTILE_BULLSEYE + aimed_proj.AddComponent(/datum/component/homing_projectile, target, human) + sniper_rifle.Fire(target, human) + +/datum/action/item_action/specialist/aimed_shot/proc/check_can_use(mob/M, cover_lose_focus) + var/mob/living/carbon/human/H = owner + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + + if(!can_use_action()) + return FALSE + + if(sniper_rifle != H.r_hand && sniper_rifle != H.l_hand) + to_chat(H, SPAN_WARNING("How do you expect to do this without your sniper rifle?")) + return FALSE + + if(!(sniper_rifle.flags_item & WIELDED)) + to_chat(H, SPAN_WARNING("Your aim is not stable enough with one hand. Use both hands!")) + return FALSE + + if(!sniper_rifle.in_chamber) + to_chat(H, SPAN_WARNING("\The [sniper_rifle] is unloaded!")) + return FALSE + + if(get_dist(H, M) < minimum_aim_distance) + to_chat(H, SPAN_WARNING("\The [M] is too close to get a proper shot!")) + return FALSE + + var/obj/projectile/P = sniper_rifle.in_chamber + // TODO: Make the below logic only occur in certain circumstances. Check goggles, maybe? -Kaga + if(check_shot_is_blocked(H, M, P)) + to_chat(H, SPAN_WARNING("Something is in the way, or you're out of range!")) + if(cover_lose_focus) + to_chat(H, SPAN_WARNING("You lose focus.")) + COOLDOWN_START(sniper_rifle, aimed_shot_cooldown, sniper_rifle.aimed_shot_cooldown_delay * 0.5) + return FALSE + + COOLDOWN_START(sniper_rifle, aimed_shot_cooldown, sniper_rifle.aimed_shot_cooldown_delay) + return TRUE + +/datum/action/item_action/specialist/aimed_shot/proc/check_shot_is_blocked(mob/firer, mob/target, obj/projectile/P) + var/list/turf/path = getline2(firer, target, include_from_atom = FALSE) + if(!path.len || get_dist(firer, target) > P.ammo.max_range) + return TRUE + + var/blocked = FALSE + for(var/turf/T in path) + if(T.density || T.opacity) + blocked = TRUE + break + + for(var/obj/O in T) + if(O.get_projectile_hit_boolean(P)) + blocked = TRUE + break + + for(var/obj/effect/particle_effect/smoke/S in T) + blocked = TRUE + break + + return blocked + +// Snipers may enable or disable their laser tracker at will. +/datum/action/item_action/specialist/toggle_laser + +/datum/action/item_action/specialist/toggle_laser/New(mob/living/user, obj/item/holder) + ..() + name = "Toggle Tracker Laser" + button.name = name + button.overlays.Cut() + var/image/IMG = image('icons/mob/hud/actions.dmi', button, "sniper_toggle_laser_on") + button.overlays += IMG + update_button_icon() + +/datum/action/item_action/specialist/toggle_laser/update_button_icon() + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + + var/icon = 'icons/mob/hud/actions.dmi' + var/icon_state = "sniper_toggle_laser_[sniper_rifle.enable_aimed_shot_laser ? "on" : "off"]" + + button.overlays.Cut() + var/image/IMG = image(icon, button, icon_state) + button.overlays += IMG + +/datum/action/item_action/specialist/toggle_laser/can_use_action() + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + + if(owner.is_mob_incapacitated()) + return FALSE + + if(owner.get_held_item() != sniper_rifle) + to_chat(owner, SPAN_WARNING("How do you expect to do this without the sniper rifle in your hand?")) + return FALSE + return TRUE + +/datum/action/item_action/specialist/toggle_laser/action_activate() + var/obj/item/weapon/gun/rifle/sniper/sniper_rifle = holder_item + + if(owner.get_held_item() != sniper_rifle) + to_chat(owner, SPAN_WARNING("How do you expect to do this without the sniper rifle in your hand?")) + return FALSE + sniper_rifle.toggle_laser(owner, src) + +/obj/item/weapon/gun/rifle/sniper/proc/toggle_laser(mob/user, datum/action/toggling_action) + enable_aimed_shot_laser = !enable_aimed_shot_laser + to_chat(user, SPAN_NOTICE("You flip a switch on \the [src] and [enable_aimed_shot_laser ? "enable" : "disable"] its targeting laser.")) + playsound(user, 'sound/machines/click.ogg', 15, TRUE) + if(!toggling_action) + toggling_action = locate(/datum/action/item_action/specialist/toggle_laser) in actions + if(toggling_action) + toggling_action.update_button_icon() + +/obj/item/weapon/gun/rifle/sniper/verb/toggle_gun_laser() + set category = "Weapons" + set name = "Toggle Laser" + set desc = "Toggles your laser on or off." + set src = usr.contents + + var/obj/item/weapon/gun/rifle/sniper/sniper = get_active_firearm(usr) + if((sniper == src) && has_aimed_shot) + toggle_laser(usr) + +//Pow! Headshot. + +// end of actions sniper spe can take. + +/obj/item/weapon/gun/rifle/sniper/M42A + name = "\improper M42A scoped rifle" + desc = "A heavy sniper rifle manufactured by Armat Systems. It has a scope system and fires armor penetrating rounds out of a 15-round magazine.\n'Peace Through Superior Firepower'" + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "m42a" + item_state = "m42a" + unacidable = TRUE + indestructible = 1 + + fire_sound = 'sound/weapons/gun_sniper.ogg' + current_mag = /obj/item/ammo_magazine/sniper + force = 12 + wield_delay = WIELD_DELAY_HORRIBLE //Ends up being 1.6 seconds due to scope + zoomdevicename = "scope" + attachable_allowed = list(/obj/item/attachable/bipod) + starting_attachment_types = list(/obj/item/attachable/sniperbarrel) + flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER + map_specific_decoration = TRUE + + flags_item = TWOHANDED|NO_CRYO_STORE + +/obj/item/weapon/gun/rifle/sniper/M42A/verb/toggle_scope_zoom_level() + set name = "Toggle Scope Zoom Level" + set category = "Weapons" + set src in usr + var/obj/item/attachable/scope/variable_zoom/S = attachments["rail"] + S.toggle_zoom_level() + +/obj/item/weapon/gun/rifle/sniper/M42A/handle_starting_attachment() + ..() + var/obj/item/attachable/scope/variable_zoom/S = new(src) + S.hidden = TRUE + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachable(S.slot) + +/obj/item/weapon/gun/rifle/sniper/M42A/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) + )) + +/obj/item/weapon/gun/rifle/sniper/M42A/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 39, "muzzle_y" = 17,"rail_x" = 12, "rail_y" = 20, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14) + + +/obj/item/weapon/gun/rifle/sniper/M42A/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_7*3) + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT * 3 //you HAVE to be able to hit + scatter = SCATTER_AMOUNT_TIER_8 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_5 + +/obj/item/weapon/gun/rifle/sniper/xm43e1 + name = "\improper XM43E1 experimental anti-materiel rifle" + desc = "An experimental anti-materiel rifle produced by Armat Systems, recently reacquired from the deep storage of an abandoned prototyping facility. This one in particular is currently undergoing field testing. Chambered in 10x99mm Caseless." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' + icon_state = "xm42b" + item_state = "xm42b" + unacidable = TRUE + indestructible = 1 + + fire_sound = 'sound/weapons/sniper_heavy.ogg' + current_mag = /obj/item/ammo_magazine/sniper/anti_materiel //Renamed from anti-tank to align with new identity/description. Other references have been changed as well. -Kaga + force = 12 + wield_delay = WIELD_DELAY_HORRIBLE //Ends up being 1.6 seconds due to scope + zoomdevicename = "scope" + attachable_allowed = list(/obj/item/attachable/bipod) + flags_gun_features = GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER + starting_attachment_types = list(/obj/item/attachable/sniperbarrel) + sniper_beam_type = /obj/effect/ebeam/laser/intense + sniper_beam_icon = "laser_beam_intense" + sniper_lockon_icon = "sniper_lockon_intense" + +/obj/item/weapon/gun/rifle/sniper/XM42B/handle_starting_attachment() + ..() + var/obj/item/attachable/scope/variable_zoom/S = new(src) + S.icon_state = "pmcscope" + S.attach_icon = "pmcscope" + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachable(S.slot) + + +/obj/item/weapon/gun/rifle/sniper/XM42B/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 20, "under_y" = 15, "stock_x" = 20, "stock_y" = 15) + + +/obj/item/weapon/gun/rifle/sniper/XM42B/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6 * 6 )//Big boy damage, but it takes a lot of time to fire a shot. + //Kaga: Adjusted from 56 (Tier 4, 7*8) -> 30 (Tier 6, 5*6) ticks. 95 really wasn't big-boy damage anymore, although I updated it to 125 to remain consistent with the other 10x99mm caliber weapon (M42C). Now takes only twice as long as the M42A. + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT + 2*HIT_ACCURACY_MULT_TIER_10 //Who coded this like this, and why? It just calculates out to 1+1=2. Leaving a note here to check back later. + scatter = SCATTER_AMOUNT_TIER_10 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_1 + +/obj/item/weapon/gun/rifle/sniper/XM42B/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff), + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating), + BULLET_TRAIT_ENTRY_ID("turfs", /datum/element/bullet_trait_damage_boost, 11, GLOB.damage_boost_turfs), + BULLET_TRAIT_ENTRY_ID("breaching", /datum/element/bullet_trait_damage_boost, 11, GLOB.damage_boost_breaching), + //At 1375 per shot it'll take 1 shot to break resin turfs, and a full mag of 8 to break reinforced walls. + BULLET_TRAIT_ENTRY_ID("pylons", /datum/element/bullet_trait_damage_boost, 6, GLOB.damage_boost_pylons) + //At 750 per shot it'll take 3 to break a Pylon (1800 HP). No Damage Boost vs other xeno structures yet, those will require a whole new list w/ the damage_boost trait. + )) + +/* +//Disabled until an identity is better defined. -Kaga +/obj/item/weapon/gun/rifle/sniper/M42B/afterattack(atom/target, mob/user, flag) + if(able_to_fire(user)) + if(get_dist(target,user) <= 8) + to_chat(user, SPAN_WARNING("The [src.name] beeps, indicating that the target is within an unsafe proximity to the rifle, refusing to fire.")) + return + else ..() +*/ + +/obj/item/weapon/gun/rifle/sniper/elite + name = "\improper M42C anti-tank sniper rifle" + desc = "A high-end superheavy magrail sniper rifle from Weyland-Armat chambered in a specialized variant of the heaviest ammo available, 10x99mm Caseless. This weapon requires a specialized armor rig for recoil mitigation in order to be used effectively." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/wy.dmi' + icon_state = "m42c" + item_state = "m42c" //NEEDS A TWOHANDED STATE + + fire_sound = 'sound/weapons/sniper_heavy.ogg' + current_mag = /obj/item/ammo_magazine/sniper/elite + force = 17 + zoomdevicename = "scope" + flags_gun_features = GUN_AUTO_EJECTOR|GUN_WY_RESTRICTED|GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER + starting_attachment_types = list(/obj/item/attachable/sniperbarrel) + sniper_beam_type = /obj/effect/ebeam/laser/intense + sniper_beam_icon = "laser_beam_intense" + sniper_lockon_icon = "sniper_lockon_intense" + +/obj/item/weapon/gun/rifle/sniper/elite/handle_starting_attachment() + ..() + var/obj/item/attachable/scope/S = new(src) + S.icon_state = "pmcscope" + S.attach_icon = "pmcscope" + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachable(S.slot) + +/obj/item/weapon/gun/rifle/sniper/elite/set_bullet_traits() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_iff) + )) + +/obj/item/weapon/gun/rifle/sniper/elite/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 20, "under_y" = 15, "stock_x" = 20, "stock_y" = 15) + +/obj/item/weapon/gun/rifle/sniper/elite/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6*5) + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT * 3 //Was previously BAM + HAMT10, similar to the XM42B, and coming out to 1.5? Changed to be consistent with M42A. -Kaga + scatter = SCATTER_AMOUNT_TIER_10 //Was previously 8, changed to be consistent with the XM42B. + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_1 + +/obj/item/weapon/gun/rifle/sniper/elite/simulate_recoil(total_recoil = 0, mob/user, atom/target) + . = ..() + if(.) + var/mob/living/carbon/human/PMC_sniper = user + if(PMC_sniper.lying == 0 && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc) && !istype(PMC_sniper.wear_suit,/obj/item/clothing/suit/storage/marine/veteran)) + PMC_sniper.visible_message(SPAN_WARNING("[PMC_sniper] is blown backwards from the recoil of the [src.name]!"),SPAN_HIGHDANGER("You are knocked prone by the blowback!")) + step(PMC_sniper,turn(PMC_sniper.dir,180)) + PMC_sniper.apply_effect(5, WEAKEN) + +//Type 88 //Based on the actual Dragunov DMR rifle. + +/obj/item/weapon/gun/rifle/sniper/svd + name = "\improper Type 88 designated marksman rifle" + desc = "The standard issue DMR of the UPP, the Type 88 is sought after by competitive shooters and terrorists alike for its high degree of accuracy. Typically loaded with armor-piercing 7.62x54mmR rounds in a 12 round magazine." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "type88" + item_state = "type88" + + fire_sound = 'sound/weapons/gun_mg.ogg' + current_mag = /obj/item/ammo_magazine/sniper/svd + attachable_allowed = list( + //Muzzle, + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp_replica, + /obj/item/attachable/bayonet/upp, + //Under, + /obj/item/attachable/verticalgrip, + /obj/item/attachable/bipod, + //Integrated, + /obj/item/attachable/type88_barrel, + ) + has_aimed_shot = FALSE + flags_gun_features = GUN_AUTO_EJECTOR|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_CAN_POINTBLANK + starting_attachment_types = list() + sniper_beam_type = null + skill_locked = FALSE + +/obj/item/weapon/gun/rifle/sniper/svd/handle_starting_attachment() + ..() + var/obj/item/attachable/attachie = new /obj/item/attachable/type88_barrel(src) + attachie.flags_attach_features &= ~ATTACH_REMOVABLE + attachie.Attach(src) + update_attachable(attachie.slot) + + var/obj/item/attachable/scope/variable_zoom/integrated/type88sight = new(src) + type88sight.flags_attach_features &= ~ATTACH_REMOVABLE + type88sight.hidden = TRUE + type88sight.Attach(src) + update_attachable(type88sight.slot) + +/obj/item/weapon/gun/rifle/sniper/svd/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 17,"rail_x" = 13, "rail_y" = 19, "under_x" = 26, "under_y" = 14, "stock_x" = 24, "stock_y" = 13, "special_x" = 39, "special_y" = 18) + +/obj/item/weapon/gun/rifle/sniper/svd/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_6) + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT * 3 + scatter = SCATTER_AMOUNT_TIER_8 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_5 + damage_falloff_mult = 0 diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm index 42c79fdab858..3d1b7088fa83 100644 --- a/code/modules/projectiles/magazines/rifles.dm +++ b/code/modules/projectiles/magazines/rifles.dm @@ -471,8 +471,8 @@ default_ammo = /datum/ammo/bullet/rifle max_rounds = 30 gun_type = /obj/item/weapon/gun/rifle/rmc_f90 - ammo_band_icon = "+m41a_band" - ammo_band_icon_empty = "+m41a_band_e" + ammo_band_icon = "+aug_band" + ammo_band_icon_empty = "+aug_band_e" /obj/item/ammo_magazine/rifle/rmc_f90/marksman name = "\improper F903A1 Marksman magazine (10x24mm)" @@ -483,3 +483,19 @@ gun_type = /obj/item/weapon/gun/rifle/rmc_f90/scope max_rounds = 20 ammo_band_color = AMMO_BAND_COLOR_AP + ammo_band_icon = "+aug_dmr_band" + ammo_band_icon_empty = "+aug_dmr_band_e" + +/obj/item/ammo_magazine/rifle/rmc_f90/heap + name = "\improper F903 HEAP magazine (10x24mm)" + desc = "A 10mm armor piercing high explosive assault rifle magazine used by the royal marines." + default_ammo = /datum/ammo/bullet/rifle/heap + ammo_band_color = AMMO_BAND_COLOR_HEAP + +/obj/item/ammo_magazine/rifle/rmc_f90/marksman/heap + name = "\improper F903A1 Marksman magazine (10x24mm)" + desc = "A 10mm armor piercing high explosive assault rifle magazine used by the royal marines." + icon_state = "aug_dmr" + item_state = "aug_dmr" + default_ammo = /datum/ammo/bullet/rifle/heap + ammo_band_color = AMMO_BAND_COLOR_HEAP diff --git a/code/modules/reagents/chemistry_properties/prop_special.dm b/code/modules/reagents/chemistry_properties/prop_special.dm index 7c96169d199f..640e18426311 100644 --- a/code/modules/reagents/chemistry_properties/prop_special.dm +++ b/code/modules/reagents/chemistry_properties/prop_special.dm @@ -96,7 +96,7 @@ H.contract_disease(new /datum/disease/xeno_transformation(0),1) //This is the real reason PMCs are being sent to retrieve it. /datum/chem_property/special/DNA_Disintegrating/trigger() - SSticker.mode.get_specific_call("Weyland-Yutani Goon (Chemical Investigation Squad)", FALSE, FALSE, holder.name, TRUE) + SSticker.mode.get_specific_call("Weyland-Yutani Goon (Chemical Investigation Squad)", TRUE, FALSE, FALSE, holder.name, TRUE) chemical_data.update_credits(10) message_admins("The research department has discovered DNA_Disintegrating in [holder.name] adding 10 bonus tech points.") var/datum/techtree/tree = GET_TREE(TREE_MARINE) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index c7b3d3e1bae2..e61357188ad6 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -241,7 +241,7 @@ var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! if(!istype(O.loc, /turf)) if(user.client) - user.client.screen -= O + user.client.remove_from_screen(O) P.wrapped = O O.forceMove(P) P.w_class = O.w_class diff --git a/code/modules/shuttle/computers/escape_pod_computer.dm b/code/modules/shuttle/computers/escape_pod_computer.dm index 1054bf5e90d7..6f9292cfc048 100644 --- a/code/modules/shuttle/computers/escape_pod_computer.dm +++ b/code/modules/shuttle/computers/escape_pod_computer.dm @@ -66,6 +66,9 @@ var/obj/docking_port/mobile/crashable/escape_shuttle/shuttle = SSshuttle.getShuttle(shuttleId) switch(action) if("force_launch") + if(pod_state != STATE_READY && pod_state != STATE_DELAYED) + return + shuttle.evac_launch() pod_state = STATE_LAUNCHING . = TRUE diff --git a/colonialmarines.dme b/colonialmarines.dme index 5ac3a8e32d66..3f40c156d075 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -970,6 +970,7 @@ s// DM Environment file for colonialmarines.dme. #include "code\game\objects\effects\landmarks\structure_spawners\structure_spawner.dm" #include "code\game\objects\effects\landmarks\structure_spawners\xvx_hive.dm" #include "code\game\objects\effects\spawners\gibspawner.dm" +#include "code\game\objects\effects\spawners\prop_gun_spawner.dm" #include "code\game\objects\effects\spawners\random.dm" #include "code\game\objects\effects\spawners\spawner.dm" #include "code\game\objects\effects\spawners\vaultspawner.dm" @@ -1145,6 +1146,7 @@ s// DM Environment file for colonialmarines.dme. #include "code\game\objects\items\storage\storage.dm" #include "code\game\objects\items\storage\surgical_tray.dm" #include "code\game\objects\items\storage\toolbox.dm" +#include "code\game\objects\items\storage\toolkit.dm" #include "code\game\objects\items\storage\wallets.dm" #include "code\game\objects\items\tanks\jetpack.dm" #include "code\game\objects\items\tanks\tank_types.dm" @@ -1523,6 +1525,7 @@ s// DM Environment file for colonialmarines.dme. #include "code\modules\cm_marines\Donator_Kits.dm" #include "code\modules\cm_marines\dropship_ammo.dm" #include "code\modules\cm_marines\dropship_equipment.dm" +#include "code\modules\cm_marines\m2c.dm" #include "code\modules\cm_marines\marines_consoles.dm" #include "code\modules\cm_marines\NonLethalRestraints.dm" #include "code\modules\cm_marines\orbital_cannon.dm" @@ -1658,12 +1661,10 @@ s// DM Environment file for colonialmarines.dme. #include "code\modules\gear_presets\corpses.dm" #include "code\modules\gear_presets\dust_raider.dm" #include "code\modules\gear_presets\dutch.dm" -#include "code\modules\gear_presets\forcon_survivors.dm" #include "code\modules\gear_presets\fun.dm" #include "code\modules\gear_presets\other.dm" #include "code\modules\gear_presets\pmc.dm" #include "code\modules\gear_presets\royal_marines.dm" -#include "code\modules\gear_presets\survivors.dm" #include "code\modules\gear_presets\synths.dm" #include "code\modules\gear_presets\upp.dm" #include "code\modules\gear_presets\uscm.dm" @@ -1677,6 +1678,21 @@ s// DM Environment file for colonialmarines.dme. #include "code\modules\gear_presets\wy.dm" #include "code\modules\gear_presets\wy_goons.dm" #include "code\modules\gear_presets\yautja.dm" +#include "code\modules\gear_presets\survivors\misc.dm" +#include "code\modules\gear_presets\survivors\survivors.dm" +#include "code\modules\gear_presets\survivors\corsat\preset_corsat.dm" +#include "code\modules\gear_presets\survivors\fiorina_sciannex\preset_fiorina_sciannex.dm" +#include "code\modules\gear_presets\survivors\kutjevo\preset_kutjevo.dm" +#include "code\modules\gear_presets\survivors\lv_522\forcon_survivors.dm" +#include "code\modules\gear_presets\survivors\lv_624\clfship_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\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" +#include "code\modules\gear_presets\survivors\sorokyne_strata\preset_sorokyne_strata.dm" +#include "code\modules\gear_presets\survivors\trijent\crashlanding_upp_bar_insert_trijent.dm" +#include "code\modules\gear_presets\survivors\trijent\preset_trijent.dm" #include "code\modules\hydroponics\botany_disks.dm" #include "code\modules\hydroponics\grown_inedible.dm" #include "code\modules\hydroponics\hydro_tools.dm" @@ -1827,7 +1843,9 @@ s// DM Environment file for colonialmarines.dme. #include "code\modules\mob\living\carbon\human\species\zombie.dm" #include "code\modules\mob\living\carbon\human\species\working_joe\_emote.dm" #include "code\modules\mob\living\carbon\human\species\working_joe\_species.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\damage.dm" #include "code\modules\mob\living\carbon\human\species\working_joe\farewell.dm" +#include "code\modules\mob\living\carbon\human\species\working_joe\fire.dm" #include "code\modules\mob\living\carbon\human\species\working_joe\greeting.dm" #include "code\modules\mob\living\carbon\human\species\working_joe\notice.dm" #include "code\modules\mob\living\carbon\human\species\working_joe\question.dm" @@ -2128,9 +2146,13 @@ s// DM Environment file for colonialmarines.dme. #include "code\modules\projectiles\guns\smartgun.dm" #include "code\modules\projectiles\guns\smgs.dm" #include "code\modules\projectiles\guns\souto.dm" -#include "code\modules\projectiles\guns\specialist.dm" #include "code\modules\projectiles\guns\flamer\flamer.dm" #include "code\modules\projectiles\guns\flamer\flameshape.dm" +#include "code\modules\projectiles\guns\specialist\scout.dm" +#include "code\modules\projectiles\guns\specialist\sniper.dm" +#include "code\modules\projectiles\guns\specialist\launcher\grenade_launcher.dm" +#include "code\modules\projectiles\guns\specialist\launcher\launcher.dm" +#include "code\modules\projectiles\guns\specialist\launcher\rocket_launcher.dm" #include "code\modules\projectiles\magazines\flamer.dm" #include "code\modules\projectiles\magazines\lever_action.dm" #include "code\modules\projectiles\magazines\misc.dm" diff --git a/config/example/config.txt b/config/example/config.txt index 181e10e8e150..dcce46434404 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -234,11 +234,8 @@ AUTOOOCMUTE ## The default value assumes youtube-dl is in your system PATH # INVOKE_YOUTUBEDL youtube-dl -## Rounds needed before a gamemode vote is casted. Set to -1 to disable -GAMEMODE_ROUNDS_NEEDED 5 - ## Default gamemode to auto-switch back to after a round has concluded -GAMEMODE_DEFAULT extended +GAMEMODE_DEFAULT Extended ## How long the mob will take to chestburst, in seconds #EMBRYO_BURST_TIMER 450 diff --git a/html/changelogs/AutoChangeLog-pr-4111.yml b/html/changelogs/AutoChangeLog-pr-4111.yml deleted file mode 100644 index 7d6a5f024ee7..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4111.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Finally adds fully functional access request tickets to APOLLO console for entry to AI core." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4208.yml b/html/changelogs/AutoChangeLog-pr-4208.yml deleted file mode 100644 index f27bd9ca4a91..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4208.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - maptweak: "Adds a couple APOLLO consoles to upper and lower medical. Moves the one outside ARES reception slightly." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4225.yml b/html/changelogs/AutoChangeLog-pr-4225.yml deleted file mode 100644 index dec1d322ec9b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4225.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - bugfix: "Fixes ARES Security Logs and stops ARES logs recording mob datums instead of names." - - rscadd: "Moves AntiAir records to Security Logs." - - rscadd: "Adds Flight Records to ARES Interface, detailing launches and setting changes. Does not include CAS details." - - code_imp: "Changes ARES log procs from using 'user' to 'user_name' to identify it should be the string rather than mob datum." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4304.yml b/html/changelogs/AutoChangeLog-pr-4304.yml deleted file mode 100644 index 6781eac2c3ac..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4304.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "cuberound" -delete-after: True -changes: - - balance: "GAU can hit mobs that are on ground now" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4350.yml b/html/changelogs/AutoChangeLog-pr-4350.yml deleted file mode 100644 index 4780d592b9da..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4350.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Adds CN20-X Nerve Gas, an alteration of base CN20 that can affect xenos." - - rscadd: "CN20 and CN20-X are now translucent and do not obstruct vision much." - - admin: "Adds a VV list dropdown to release gas from vents as the manual proc was too clunky." - - rscadd: "Adds nerve gas grenades for CN20 and CN20-X" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4352.yml b/html/changelogs/AutoChangeLog-pr-4352.yml deleted file mode 100644 index 17a65c454e91..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4352.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - balance: "Cryorines now cost 6 points. It increases by 6 each purchase." - - balance: "Cryorines now give 5 marines. 1 SL (for the first one only), 1 medic, 1 engi, rest rifleman." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4353.yml b/html/changelogs/AutoChangeLog-pr-4353.yml deleted file mode 100644 index 13aa7a1a9f81..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4353.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - balance: "Lowered the xeno endgame start to 55 minutes into the round" - - balance: "Lowered the nuke endgame start to 115 minutes into the round" - - balance: "Lowered the nuke cost to 5 points" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4354.yml b/html/changelogs/AutoChangeLog-pr-4354.yml deleted file mode 100644 index eaed52c4651c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4354.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - rscadd: "Added cryo specialist tech that can be purchased once for eight points" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4356.yml b/html/changelogs/AutoChangeLog-pr-4356.yml deleted file mode 100644 index 36c53f8811d3..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4356.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Fixed repeatable techs not having correct overlays" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4358.yml b/html/changelogs/AutoChangeLog-pr-4358.yml deleted file mode 100644 index d83bf6aef916..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4358.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Removed annoying and inaccurate to_chat from join response team menu" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4360.yml b/html/changelogs/AutoChangeLog-pr-4360.yml deleted file mode 100644 index 01a6ceb93414..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4360.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Firing flares into the air now produces light again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4367.yml b/html/changelogs/AutoChangeLog-pr-4367.yml deleted file mode 100644 index 6493aa6ffc4d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4367.yml +++ /dev/null @@ -1,13 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - code_imp: "Tidied up the TWE presets so they're easier to read." - - rscdel: "Removed duplicate surgical line from all TWE presets." - - rscadd: "Added an MRE box to the TWE MRE carrier preset." - - spellcheck: "Added unique names to the RMC armors." - - bugfix: "Fixed iconstate names being backwards for TWE pointman and SG." - - code_imp: "Removed unnecessary repeated values for TWE armors." - - code_imp: "Tidied the RMC skillsets to be consistent in ordering of skills." - - rscadd: "Added an SG specific skillset for RMCs." - - bugfix: "Fixed duplicate entry for medical training on RMC TL skillset." - - spellcheck: "Renamed default RMC skillset to Royal Marines Commando rather than Royal Marines Commando Rifleman." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4371.yml b/html/changelogs/AutoChangeLog-pr-4371.yml deleted file mode 100644 index 34e18a5e8e4f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4371.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - rscadd: "Powerloader wreckage now can be attacked by xenos" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4372.yml b/html/changelogs/AutoChangeLog-pr-4372.yml deleted file mode 100644 index e452bf1ee5b0..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4372.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - qol: "Recalibrating limbs can now be done with the patient standing" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4373.yml b/html/changelogs/AutoChangeLog-pr-4373.yml deleted file mode 100644 index a2d3ba29c53d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4373.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - rscdel: "Removed the shipside announcement for working joes joining" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4374.yml b/html/changelogs/AutoChangeLog-pr-4374.yml deleted file mode 100644 index 1722b22bbf56..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4374.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Fixed queens prying open lifeboat double doors" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4381.yml b/html/changelogs/AutoChangeLog-pr-4381.yml deleted file mode 100644 index fe2c3cca9231..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4381.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - bugfix: "Fixes WY access to Almayer Research." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4384.yml b/html/changelogs/AutoChangeLog-pr-4384.yml deleted file mode 100644 index f1998657fa3a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4384.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Waseemq1235" -delete-after: True -changes: - - admin: "Subtle messages are now much larger." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4541.yml b/html/changelogs/AutoChangeLog-pr-4541.yml new file mode 100644 index 000000000000..3c8ce797677e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4541.yml @@ -0,0 +1,4 @@ +author: "QuickLode" +delete-after: True +changes: + - bugfix: "Allows M46C prototype rifle to accept standard M41A MK2 rubber munitions" \ No newline at end of file diff --git a/html/changelogs/archive/2023-09.yml b/html/changelogs/archive/2023-09.yml index 750ae67a264e..6dc9203f23d8 100644 --- a/html/changelogs/archive/2023-09.yml +++ b/html/changelogs/archive/2023-09.yml @@ -132,3 +132,323 @@ kylerace, lemoninthedark, harry: - refactor: optimized icon-in-chat code - bugfix: weird icons on the smoothed walls when examining or alt+clicking +2023-09-12: + Morrow: + - balance: Lowered the xeno endgame start to 55 minutes into the round + - balance: Lowered the nuke endgame start to 115 minutes into the round + - balance: Lowered the nuke cost to 5 points + - rscdel: Removed the shipside announcement for working joes joining + - rscadd: Added cryo specialist tech that can be purchased once for eight points + - balance: Cryorines now cost 6 points. It increases by 6 each purchase. + - balance: Cryorines now give 5 marines. 1 SL (for the first one only), 1 medic, + 1 engi, rest rifleman. + - bugfix: Fixed queens prying open lifeboat double doors + - rscadd: Powerloader wreckage now can be attacked by xenos + - bugfix: Removed annoying and inaccurate to_chat from join response team menu + - bugfix: Firing flares into the air now produces light again + - bugfix: Fixed repeatable techs not having correct overlays + - qol: Recalibrating limbs can now be done with the patient standing + Waseemq1235: + - admin: Subtle messages are now much larger. + cuberound: + - balance: GAU can hit mobs that are on ground now + realforest2001: + - bugfix: Fixes ARES Security Logs and stops ARES logs recording mob datums instead + of names. + - rscadd: Moves AntiAir records to Security Logs. + - rscadd: Adds Flight Records to ARES Interface, detailing launches and setting + changes. Does not include CAS details. + - code_imp: Changes ARES log procs from using 'user' to 'user_name' to identify + it should be the string rather than mob datum. + - maptweak: Adds a couple APOLLO consoles to upper and lower medical. Moves the + one outside ARES reception slightly. + - bugfix: Fixes WY access to Almayer Research. + - rscadd: Finally adds fully functional access request tickets to APOLLO console + for entry to AI core. + - rscadd: Adds CN20-X Nerve Gas, an alteration of base CN20 that can affect xenos. + - rscadd: CN20 and CN20-X are now translucent and do not obstruct vision much. + - admin: Adds a VV list dropdown to release gas from vents as the manual proc was + too clunky. + - rscadd: Adds nerve gas grenades for CN20 and CN20-X + - code_imp: Tidied up the TWE presets so they're easier to read. + - rscdel: Removed duplicate surgical line from all TWE presets. + - rscadd: Added an MRE box to the TWE MRE carrier preset. + - spellcheck: Added unique names to the RMC armors. + - bugfix: Fixed iconstate names being backwards for TWE pointman and SG. + - code_imp: Removed unnecessary repeated values for TWE armors. + - code_imp: Tidied the RMC skillsets to be consistent in ordering of skills. + - rscadd: Added an SG specific skillset for RMCs. + - bugfix: Fixed duplicate entry for medical training on RMC TL skillset. + - spellcheck: Renamed default RMC skillset to Royal Marines Commando rather than + Royal Marines Commando Rifleman. +2023-09-13: + Morrow: + - rscdel: Removed some mapped clown gear + TeDGamer: + - balance: Hive weeds can be supported by other structures when original parent + structure is destroyed. + Zonespace27: + - balance: M56D now has full auto mode. + - qol: M56D now has an ammo counter when firing. + - rscdel: M2C can no longer rotate with MMB +2023-09-14: + Morrow: + - rscadd: Added a ghost notification for yautja self destructs + - bugfix: Fixed lifepods still working after evac canceled + Zonespace27: + - balance: Coffins now layer above beds + realforest2001: + - imageadd: Added a CMB stamp icon. + - imageadd: Changes the icon_state name of the WY stamp from centcom to weyyu. + - rscadd: Changes EFTPOS stamp icon to use RD instead of weyyu. + - bugfix: Changes the pre-spawned QMs stamp to use the proper stamp. + - spellcheck: Renames Requisiton Officer's stamp to Quartermaster's Stamp. + - maptweak: Renamed the spare Req Officer's stamp to spare Quartermaster's stamp. + - rscadd: Codebooks are now faction based rather than individually unique. +2023-09-15: + BeagleGaming1, forest2001: + - rscadd: Adds a CMB ERT to investigate the Black Market + - rscadd: Adds a [cmb] logo for papers + - rscadd: Adds a quiet_launch var for distress beacons, to differentiate between + ERTs who should announce their response reception, but not the beacon going + out in the first place. + - rscdel: Removes banhammer from normal acquisition. + Ben10083: + - rscadd: Working Joe arrivals announced in Apollo link + Drathek: + - bugfix: Fix some donor items breaking on maps with camos. + - bugfix: Fix donor items not having a fingerprint atom flag and donor armors not + having conductive atom flag. + Morrow: + - bugfix: Fixed a few ways around fire group delays + Waseemq1235: + - admin: TWE faction reports are now possible. +2023-09-17: + BeagleGaming1: + - bugfix: Fixed CN20-X canister grenades + Drathek: + - bugfix: Fix/Rework logic regarding xeno guaranteed slots + - bugfix: Fix evolution in thunder dome affecting hive slots + Morrow: + - rscdel: Disables Shivas Snowball + Private Tristan: + - spellcheck: acid runners are now properly informed of their corrosive acid's strength. +2023-09-19: + Hopek: + - rscadd: 'New facehugger strain: Watcher. The Watcher loses their ability to hide + in exchange to see further and the ability to no longer take damage outside + of weeds.' + c4xmaniac2: + - balance: Moved 1/3 of all intel into the cave systems. + - maptweak: 1/3 of all Intel has been redistributed into the caves. + - maptweak: Nightmare inserts on the colony side and in the caves of LV now have + their intel distribution standardized. + realforest2001: + - bugfix: Fixes the CMB tradeband scanner not being able to do it's job. +2023-09-20: + BeagleGaming1: + - rscadd: Uncommented the "Observe" verb for ghosts, allowing ghosts to see from + a humans HUD + Huffie56: + - balance: made it so that req as double what a standard vendor as in ammo and guns. + Morrow: + - balance: Removed some PMC gear on maps + SpartanBobby, GSDPathe: + - maptweak: Changes to LV522 loot table surrounding metal spawns + - maptweak: Redectorates areas around LV522 that were underwhelming before + TheGamerdk, ihatethisengine: + - rscadd: IOs start in their own squad now + c4xmaniac2: + - mapadd: Readds yard to Science Annex + - maptweak: Redid the yard loot to be more in line with current surv loot standards. +2023-09-21: + SubjectD9341: + - imageadd: added the icons for the new biosuits + - imagedel: removed the icons for the old biosuits + realforest2001: + - bugfix: Fixes the overwrite mark prompt on admin tickets not respecting closing + the confirmation prompt. +2023-09-22: + Huffie56: + - qol: reorganize and update all the squads vendors to add new categories(helmet + optics, pamphlets, clothing items). + - balance: remove hostler because it was available for free(for medic, squad-tl,. + - balance: added possibility to buy M4 Pattern Armor for rifleman. + - balance: added possibility to buy USCM Radio Telephone Pack for squad medic, engi + and specialist. + - balance: added possibility to buy Welding Visor for medic, SL, rifleman, smartgunner + and specialist. + Morrow: + - balance: Removed eggs off hive weeds for egg sac carrier + - balance: Backpacks can now only fit first aid kits if you have medical skill and + toolkits if you have engineering skill + - balance: G8-A can no longer fit first aid kits or toolkits + - balance: Toolbelt now has 10 slots and can fit more engineer related items + - balance: Combat toolbelt now has 9 slots and can fit small ammo and engineer related + items + - balance: M276 medical rig belt no longer holds ammo + - balance: Plastic bag removed from normal play + - balance: First aid kits can now only hold medical items + - balance: Toolkits have been renamed to engineer kits and can only hold engineering + items (not tools) + - balance: Welding tool buffed to 40 welder fuel + - balance: Larger welding tools removed from normal play + - rscadd: Electrical toolbox now has an APC circuitboard + - balance: Medical pouch removed in req and various job vendors + - balance: Machete pouch, large pouches, and autoinjector pouch scales reduced in + req + - balance: medkit pouch has been renamed to medical kit pouch and can hold 7 medical + items, only usable if you have medic skill + Morrow, DrLance (sprites): + - rscadd: Added the Mateba Special as a choice for COs + Waseemq1235: + - rscadd: Added HEAP F903 magazines. Does NOT spawn with the ERT presets. ADMIN + SPAWN ONLY. + - imageadd: Added F903 ammo band icons. +2023-09-23: + Morrow: + - bugfix: Fixed intel squad "Unauthorized access detected" + realforest2001: + - rscadd: Gives survivors bank accounts. +2023-09-24: + BeagleGaming1: + - admin: Disabling round end delay has a confirmation + - rscadd: Added a mapping effect for prop guns + Morrow: + - bugfix: Fixed drag-n-drop nesting opening + Steelpoint: + - rscadd: Intel Officers will now default to using the Intel radio channel when + communicating. + Sylphily: + - rscadd: Added the ability for the IMP Ammo Rack to hold folding barricades. + Zonespace27: + - balance: Specialists now have separate pools of points for ammo and utility. +2023-09-25: + Steelpoint: + - rscadd: Synthetics may now vend biohazard suits for personal use. Synth compliant. + Zonespace27: + - balance: Cloaked mobs no longer give off visible messages + c4xmaniac2: + - balance: Comms areas around the east/west rivers expanded for easier sieges and + weedable now. + - maptweak: LV Comms now always spawn in Tcomms and one either on the east or west + river +2023-09-27: + CapCamIII: + - rscadd: Adds upp presets for the unused officer ranks, Kapitan, Lt Kolonel, MajGen, + LtGen, Gen, for use in admin events + - rscadd: Changes UPP conscript rank from weird conscript only rank to Private, + moves UPP soldier to PFC, removing the rank gap between soldier and support + - code_imp: Cleans up UPP rank code by deleting redundant ranks + CapCamIII, AmoryBlaine: + - rscadd: Adds new service uniform sprite that is standard across maps, sprites + by AmoryBlaine + - rscadd: Resprites old dress uniform, renames it, adds to XO vendor as a uniform + choice as it fits there now, sprites by AmoryBlaine + - rscadd: Adds new uniform, command boiler suit like gorman wears in the movie, + available in SO locker, SO vendor, XO vendor, CO vendor, sprites by AmoryBlaine + - rscadd: Adds new brown versions of gloves and boot to custom loadout, also lowers + the price of jungle boots to two, sprites by AmoryBlaine + - rscadd: Seperates officer cap and RO cap, officers get officer cap, QM gets RO + cap, CTs get req cap, sprites once again by AmoryBlaine + - rscadd: UPP boots and gloves use the new brown sprite, as it fits their color + scheme and looks cool. + - bugfix: Freelancer leader now spawns with a knife in their boots + - imageadd: Resprites patrol cap, officer cap, SEA cap, standard black boot, standard + black glove, and formal gloves, sprites by AmoryBlaine + Casper: + - bugfix: fixed reagent canister being deleted if ejected with your hands full + - bugfix: fixed cigarette punctuation error + Drathek: + - bugfix: Fix dead huggers converting to non-player huggers + Git-Nivrak: + - bugfix: Fixes no fire delay on m56d in semi-auto and burst fire + HeresKozmos: + - mapadd: added 9 new tunnels to trijent dam + - mapadd: added 9 new tunnels to Fiorina SciAnnex + Morrow: + - bugfix: Fixed a bug with akimbo firing + - rscdel: Removed alpha egg on LV522 + - rscadd: Added a save-able preference for auto-observe + - bugfix: Fixed numerous problems with HUD observer mode + - code_imp: Created a wrapper for client screen changes + - code_imp: Made check contents less horrendous + Steelpoint: + - mapadd: Sensor Towers have been added to all maps. + - rscadd: UPP survivor radio role identifiers now have a shorter title. + - rscadd: UPP survivors now default to using a players preferred name instead of + a random UPP name. + TeDGamer: + - balance: All trained+ engineer skill levels affect duration now. + - balance: Removed double skill duration multiplier for m56d's. + TheGamerdk: + - bugfix: Adding marines to intel squad broke the crew manifest + Zonespace27: + - bugfix: HEFA Knights now spawn with their armor again + - balance: HEFA Knights now spawn with 2 HEFA in their helmets + - admin: Added skillless subtype of the m707 + - balance: Lowered vulture spotted/unspotted drift from 33/100 to 25/90 + - balance: Lowered vulture scope adjust/move time from 0.5/1.0s to 0.4/0.8s + - balance: Vulture bipod anchors user in place + bostonthebear: + - rscadd: Changes pilot officer timelock from 5 hours as squad marine to 2 hours + as DCC + realforest2001: + - balance: Adds an extra 75% damage and hive interference to plasma rifle vs xenos. +2023-09-28: + Casper: + - bugfix: fixed S&W black market crate not working + - bugfix: fixed flashlights showing incorrect sprite state + Steelpoint: + - rscadd: Alert message regarding Pylon construction around a communications array + now properly emphasizes why it is a threat to Marines, and a benefit to Xenos. + TheGamerdk: + - qol: You can no longer doom yourself by joining as a crit xeno +2023-09-29: + BeagleGaming1: + - bugfix: Whiskey Outpost ground map vote works correctly + - config: Removed unnecessary config + Ben10083: + - soundadd: Multiple new Working Joe voicelines added + Casper: + - bugfix: fixed cameras going invisible on wire cut + Huffie56: + - refactor: divide preset into different file for each map. + Morrow: + - qol: '"Do nothing" dual wield preference' + QuickLode: + - rscdel: removed Pvts from Anchorpoint QRF (rip) + - spellcheck: fixed a typo in CMB call-in + - rscadd: Allows ext webbing to hold firearms. + - bugfix: exosuits which can hold scabbards can hold similar scabbards(ie, machete + and katana) + - rscdel: Removes ext webbing from SO Locker + SpartanBobby: + - maptweak: CL now spawns in a hypersleep bay "Passenger Bay" it's right next to + his office, the CC spawns with him too since his landmark was in the latejoin + bay on the lowerdeck + - maptweak: re-arranged PO bunks should allow for better traffic in and out + - maptweak: fixed symmetry issue in north-south CIC hallway + - maptweak: minor warning stripe decal additions around Almayer + Steelpoint: + - rscadd: Synthetic equipment vendor now can vend fuel cannisters and all colour + variants of the synthetic utility vest. + - rscadd: Synthetic cosmetic vendor now can vend all colour variants of the standard + Marine helmet, MP and Combat Technician uniforms, the welder chestrig and security + hud glasses. + Zonespace27: + - bugfix: Picking up a dropped pred bracer will no longer leave it stuck to your + hand. + - bugfix: Yautja can no longer mark xenoes as honorable + - rscadd: You can now fold a combi-stick using the new "collapse combi-stick" verb + and/or keybind. Defaults to the space bar. + - bugfix: Using a Yautja relay beacon now properly decloaks you +2023-09-30: + Drathek: + - bugfix: Join as xeno no longer offers buried larva spawns if there are larva queue + candidates + Huffie56: + - refactor: Cleaning specialist.dm file + Morrow: + - rscdel: Removed more clown gear from maps + - bugfix: Fixed taking control of crit xenos diff --git a/html/images/cmblogo.png b/html/images/cmblogo.png new file mode 100644 index 000000000000..d324f904a4c0 Binary files /dev/null and b/html/images/cmblogo.png differ diff --git a/icons/landmarks.dmi b/icons/landmarks.dmi index 8898783f74c2..8ebeaef1648b 100644 Binary files a/icons/landmarks.dmi and b/icons/landmarks.dmi differ diff --git a/icons/mob/hud/marine_hud.dmi b/icons/mob/hud/marine_hud.dmi index ed7c65e323d1..5de7b83a9309 100644 Binary files a/icons/mob/hud/marine_hud.dmi and b/icons/mob/hud/marine_hud.dmi differ diff --git a/icons/mob/humans/onmob/feet.dmi b/icons/mob/humans/onmob/feet.dmi index dbbed31b1e19..dd15289c7e4c 100644 Binary files a/icons/mob/humans/onmob/feet.dmi and b/icons/mob/humans/onmob/feet.dmi differ diff --git a/icons/mob/humans/onmob/hands.dmi b/icons/mob/humans/onmob/hands.dmi index 76dda2e14bf9..b03d40fdecd2 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_0.dmi b/icons/mob/humans/onmob/head_0.dmi index 745cd2057c74..ce576bdd9cc5 100644 Binary files a/icons/mob/humans/onmob/head_0.dmi and b/icons/mob/humans/onmob/head_0.dmi differ diff --git a/icons/mob/humans/onmob/head_1.dmi b/icons/mob/humans/onmob/head_1.dmi index 58a93a89da2c..b41eab22a229 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_1.dmi b/icons/mob/humans/onmob/items_lefthand_1.dmi index 3acec8cda0f0..37b5f9bcc609 100644 Binary files a/icons/mob/humans/onmob/items_lefthand_1.dmi and b/icons/mob/humans/onmob/items_lefthand_1.dmi differ diff --git a/icons/mob/humans/onmob/items_righthand_1.dmi b/icons/mob/humans/onmob/items_righthand_1.dmi index 821711fad50b..3ad8b52d0403 100644 Binary files a/icons/mob/humans/onmob/items_righthand_1.dmi and b/icons/mob/humans/onmob/items_righthand_1.dmi differ diff --git a/icons/mob/humans/onmob/suit_0.dmi b/icons/mob/humans/onmob/suit_0.dmi index 51553c1fc495..d7dfd5394f0d 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 8424a9795b91..624d8792cf2d 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 a3e34fc2e16c..6d944f4fa649 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/xenos/facehugger.dmi b/icons/mob/xenos/facehugger.dmi index d44903adf941..2d8665899331 100644 Binary files a/icons/mob/xenos/facehugger.dmi and b/icons/mob/xenos/facehugger.dmi differ diff --git a/icons/obj/items/clothing/belts.dmi b/icons/obj/items/clothing/belts.dmi index 612b4785d24f..38ff421cfda5 100644 Binary files a/icons/obj/items/clothing/belts.dmi and b/icons/obj/items/clothing/belts.dmi differ diff --git a/icons/obj/items/clothing/cm_hats.dmi b/icons/obj/items/clothing/cm_hats.dmi index 66a42bf694ba..9c4ed5bf4617 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 74257ed6c8cd..d05d7ffdf77e 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 b6aa7935f6c9..6e9afdc4eb4a 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/hats.dmi b/icons/obj/items/clothing/hats.dmi index 1cdd7491cb0c..7d2c45103ba6 100644 Binary files a/icons/obj/items/clothing/hats.dmi and b/icons/obj/items/clothing/hats.dmi differ diff --git a/icons/obj/items/clothing/shoes.dmi b/icons/obj/items/clothing/shoes.dmi index 66fab7cc8843..96780bb174c0 100644 Binary files a/icons/obj/items/clothing/shoes.dmi and b/icons/obj/items/clothing/shoes.dmi differ diff --git a/icons/obj/items/clothing/suits.dmi b/icons/obj/items/clothing/suits.dmi index 3982fec338dc..d158d9f6bd1f 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 4d4d7df3224d..4266db88afe8 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/devices.dmi b/icons/obj/items/devices.dmi index df3a53339dc4..8bf7634a7df4 100644 Binary files a/icons/obj/items/devices.dmi and b/icons/obj/items/devices.dmi differ diff --git a/icons/obj/items/paper.dmi b/icons/obj/items/paper.dmi index d0c918a65e59..c39fede23679 100644 Binary files a/icons/obj/items/paper.dmi and b/icons/obj/items/paper.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/twe_ammo.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/twe_ammo.dmi index 2e8a3d18724d..6d7b49c17612 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/twe_ammo.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/twe_ammo.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi b/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi index 49e06f5ee547..38fe8079a2e8 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi differ diff --git a/interface/interface.dm b/interface/interface.dm index b309e852b468..a37ab648b7f5 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -69,7 +69,7 @@ if(tgui_alert(src, "This will open the GitHub in your browser. Are you sure?", "Confirm", list("Yes", "No")) != "Yes") return - src << link(URL_ISSUE_TRACKER) + src << link(CONFIG_GET(string/githuburl)) return /client/verb/set_fps() diff --git a/map_config/maps.txt b/map_config/maps.txt index 885b1e76faad..ba0bd17a89c7 100644 --- a/map_config/maps.txt +++ b/map_config/maps.txt @@ -44,6 +44,8 @@ map ice_colony_v2 endmap map shivas_snowball + voteweight 0 + disabled endmap map kutjevo diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index 4ec089e10bdd..b22a08e3f62d 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -16567,8 +16567,8 @@ dir = 6 }, /turf/open/floor{ - dir = 4; - icon_state = "asteroidwarning" + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/caves_lambda) "aTB" = ( @@ -16576,8 +16576,8 @@ dir = 8 }, /turf/open/floor{ - dir = 4; - icon_state = "asteroidwarning" + dir = 1; + icon_state = "asteroidfloor" }, /area/bigredv2/caves_lambda) "aTC" = ( @@ -16945,14 +16945,12 @@ dir = 9 }, /turf/open/floor{ - dir = 6; icon_state = "asteroidwarning" }, /area/bigredv2/caves_lambda) "aUC" = ( /obj/effect/decal/remains/human, /turf/open/floor{ - dir = 6; icon_state = "asteroidwarning" }, /area/bigredv2/caves_lambda) @@ -29578,6 +29576,13 @@ icon_state = "darkblue2" }, /area/bigredv2/caves/eta/research) +"gXh" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/bigredv2/caves_lambda) "gXp" = ( /turf/open/mars_cave{ icon_state = "mars_cave_6" @@ -30885,6 +30890,15 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"jNO" = ( +/obj/structure/machinery/sensortower{ + pixel_x = -9 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" + }, +/area/bigredv2/caves_lambda) "jOc" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ dir = 4; @@ -77158,7 +77172,7 @@ aOn aOn aOn aOn -aOn +aTv aTA aUB wQC @@ -77375,7 +77389,7 @@ gXp gXp gXp gXp -aSm +aTw aTB aUC wQC @@ -77592,9 +77606,9 @@ tQw ahw tQw tQw -aSn -gXp -gXp +gXh +aTv +aMT tQw tQw pIN @@ -77809,9 +77823,9 @@ tQw tQw xFZ xFZ -xFZ -tQw -tQw +aSm +jNO +aMT tQw xFZ ahy @@ -78027,8 +78041,8 @@ eFh aao aao aao -gmN -xFZ +aSm +aMV sNQ aao aao diff --git a/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm b/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm index d238af50b91a..e2b3e939a2e6 100644 --- a/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm +++ b/maps/map_files/BigRed/sprinkles/40.admin_pmc.dmm @@ -305,7 +305,7 @@ /area/bigredv2/outside/admin_building) "aW" = ( /obj/effect/decal/cleanable/blood, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /turf/open/floor{ icon_state = "carpet11-12"; dir = 8 diff --git a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm index d0d489677fc1..652b4df3bdd3 100644 --- a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm +++ b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm @@ -1453,15 +1453,6 @@ icon_state = "rasputin3" }, /area/bigredv2/outside/office_complex) -"od" = ( -/obj/structure/bed/chair/dropship/passenger{ - dir = 4 - }, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/bigredv2/outside/office_complex) "oF" = ( /obj/structure/bed/chair/dropship/passenger{ dir = 4 @@ -1626,15 +1617,6 @@ icon_state = "rasputin15" }, /area/bigredv2/outside/office_complex) -"Ra" = ( -/obj/structure/bed/chair/dropship/passenger{ - dir = 8 - }, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/shuttle/dropship{ - icon_state = "rasputin15" - }, -/area/bigredv2/outside/office_complex) "Vg" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/shuttle/dropship{ @@ -1939,7 +1921,7 @@ dP aV id yS -od +yS cE cM cM @@ -2092,7 +2074,7 @@ aN bv dL bm -od +yS yS yS cu @@ -2155,7 +2137,7 @@ bv aV fv dA -Ra +bp cF cN cN diff --git a/maps/map_files/CORSAT/Corsat.dmm b/maps/map_files/CORSAT/Corsat.dmm index 88b90c7180e0..e265184172a6 100644 --- a/maps/map_files/CORSAT/Corsat.dmm +++ b/maps/map_files/CORSAT/Corsat.dmm @@ -13348,7 +13348,7 @@ "aLr" = ( /obj/structure/surface/rack, /obj/item/tool/weldpack, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /obj/item/clothing/head/welding, /turf/open/floor/corsat{ dir = 5; @@ -31256,7 +31256,7 @@ "bLH" = ( /obj/structure/surface/rack, /obj/item/tool/weldpack, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /obj/item/clothing/head/welding, /turf/open/floor/corsat{ dir = 5; @@ -31963,7 +31963,7 @@ "bNV" = ( /obj/structure/surface/rack, /obj/item/tool/weldpack, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /obj/item/clothing/head/welding, /obj/effect/spawner/random/toolbox, /turf/open/floor/corsat{ diff --git a/maps/map_files/DesertDam/Desert_Dam.dmm b/maps/map_files/DesertDam/Desert_Dam.dmm index 66e91ebc2505..ed7688070a2f 100644 --- a/maps/map_files/DesertDam/Desert_Dam.dmm +++ b/maps/map_files/DesertDam/Desert_Dam.dmm @@ -712,6 +712,7 @@ /turf/open/desert/dirt, /area/desert_dam/exterior/valley/valley_labs) "acq" = ( +/obj/structure/tunnel, /turf/open/desert/dirt{ icon_state = "rock1" }, @@ -61278,6 +61279,10 @@ icon_state = "cement_sunbleached13" }, /area/desert_dam/exterior/valley/valley_hydro) +"hyH" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_telecoms) "hzg" = ( /obj/effect/decal/sand_overlay/sand2, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, @@ -61854,6 +61859,12 @@ icon_state = "delivery" }, /area/desert_dam/exterior/telecomm/lz1_south) +"jxN" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/valley_crashsite) "jAr" = ( /obj/structure/closet/crate/hydroponics/prespawned, /obj/effect/landmark/objective_landmark/close, @@ -62155,6 +62166,12 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/desert/dirt, /area/desert_dam/interior/caves/central_caves) +"kQd" = ( +/obj/structure/tunnel, +/turf/open/desert/rock/deep{ + icon_state = "rock3" + }, +/area/desert_dam/interior/caves/east_caves) "kRX" = ( /obj/structure/surface/table, /obj/item/storage/fancy/vials/random, @@ -63992,6 +64009,12 @@ icon_state = "cement_sunbleached18" }, /area/desert_dam/exterior/valley/south_valley_dam) +"ruJ" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + icon_state = "rock1" + }, +/area/desert_dam/exterior/valley/valley_medical) "ruS" = ( /turf/open/desert/dirt, /area/desert_dam/exterior/telecomm/lz1_valley) @@ -64092,6 +64115,12 @@ "rHw" = ( /turf/open/floor/plating, /area/desert_dam/exterior/telecomm/lz2_containers) +"rIY" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + icon_state = "rock1" + }, +/area/desert_dam/exterior/valley/valley_hydro) "rJA" = ( /obj/structure/lz_sign/dam_sign, /turf/open/desert/dirt{ @@ -65131,6 +65160,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/asphalt, /area/desert_dam/exterior/valley/valley_hydro) +"vph" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + dir = 4; + icon_state = "desert_transition_edge1" + }, +/area/desert_dam/exterior/valley/south_valley_dam) "vpn" = ( /obj/structure/machinery/landinglight/ds2/delayone{ dir = 8 @@ -65272,6 +65308,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/asphalt, /area/desert_dam/exterior/valley/valley_hydro) +"vHx" = ( +/obj/structure/tunnel, +/turf/open/desert/dirt{ + icon_state = "rock1" + }, +/area/desert_dam/exterior/valley/valley_civilian) "vHQ" = ( /turf/open/gm/empty, /area/shuttle/trijent_shuttle/omega) @@ -65678,6 +65720,11 @@ /obj/structure/flora/grass/desert/lightgrass_5, /turf/open/desert/dirt, /area/desert_dam/exterior/valley/valley_hydro) +"xec" = ( +/obj/structure/flora/grass/desert/lightgrass_1, +/obj/structure/tunnel, +/turf/open/desert/dirt, +/area/desert_dam/exterior/valley/valley_civilian) "xgA" = ( /obj/structure/flora/grass/tallgrass/desert/corner{ dir = 5 @@ -69526,7 +69573,7 @@ ceA aSI chG ceA -ceA +hyH acs aWc aWF @@ -88683,7 +88730,7 @@ bLr dTs dTs nmr -iwh +vph pvs dTs dTs @@ -94137,7 +94184,7 @@ dTs dTs dTs dTs -dNp +rIY cMl dNS dNS @@ -104714,7 +104761,7 @@ dTs dTs dTs dTs -cuw +vHx cwo cux cmH @@ -108079,7 +108126,7 @@ dTs dTs dTs dTs -agD +jxN adA aEZ aFi @@ -110720,7 +110767,7 @@ civ cdA cdw aOG -cgc +ruJ dTs dTs dTs @@ -119446,7 +119493,7 @@ clZ crW cWV xOb -cpa +xec aVd bby bvw @@ -120211,7 +120258,7 @@ dTs dTs dTs acY -acY +kQd dTs dTs dTs diff --git a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm index 9d8033ae0ae8..0d4ed21934d0 100644 --- a/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm +++ b/maps/map_files/FOP_v3_Sciannex/Fiorina_SciAnnex.dmm @@ -174,6 +174,15 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) +"acx" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "ppflowers_2" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "adk" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ @@ -205,6 +214,12 @@ icon_state = "yellow" }, /area/fiorina/station/disco) +"aee" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "aem" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/box/donkpockets{ @@ -346,14 +361,10 @@ }, /area/fiorina/tumor/servers) "ajp" = ( -/obj/structure/barricade/wooden{ - dir = 4; - pixel_y = 4 - }, -/obj/structure/barricade/wooden, +/obj/structure/window/framed/prison, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) "ajr" = ( @@ -546,6 +557,9 @@ /area/fiorina/station/park) "anG" = ( /obj/structure/largecrate/supply, +/obj/structure/platform_decoration{ + dir = 8 + }, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/medbay) "anJ" = ( @@ -562,11 +576,12 @@ /turf/open/floor/carpet, /area/fiorina/station/security/wardens) "aoa" = ( -/obj/structure/largecrate/random/mini/med, -/turf/open/floor/prison{ - dir = 9; - icon_state = "whitegreen" +/obj/structure/machinery/door/airlock/almayer/maint/autoname{ + name = "\improper Null Hatch REPLACE ME"; + req_access = null; + req_one_access = null }, +/turf/open/floor/plating/prison, /area/fiorina/station/medbay) "aoH" = ( /obj/structure/surface/rack, @@ -671,6 +686,14 @@ icon_state = "floor_plate" }, /area/fiorina/tumor/servers) +"arY" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "ask" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -919,6 +942,21 @@ /obj/structure/girder, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"azy" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/fiorina/oob) "azI" = ( /obj/item/prop/helmetgarb/spacejam_tickets{ desc = "A ticket to Souto Man's raffle!"; @@ -1069,19 +1107,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/fiorina/tumor/ship) -"aCO" = ( -/obj/structure/bed/chair{ - dir = 1; - pixel_y = 3 - }, -/obj/item/reagent_container/food/drinks/cans/beer{ - pixel_x = 12; - pixel_y = 8 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) "aCT" = ( /obj/structure/bed/sofa/south/grey/left, /turf/open/floor/prison{ @@ -1215,12 +1240,6 @@ icon_state = "plate" }, /area/fiorina/station/telecomm/lz1_cargo) -"aFO" = ( -/obj/structure/largecrate/supply/floodlights, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) "aFV" = ( /obj/item/stack/sheet/wood, /obj/structure/machinery/light/double/blue, @@ -1241,12 +1260,11 @@ }, /area/fiorina/station/chapel) "aGS" = ( -/obj/structure/lattice, -/obj/structure/platform_decoration/kutjevo{ - dir = 1 +/obj/structure/platform_decoration, +/turf/open/floor/prison{ + icon_state = "whitegreen" }, -/turf/open/space, -/area/fiorina/oob) +/area/fiorina/station/medbay) "aGV" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/floor/prison, @@ -1361,6 +1379,11 @@ icon_state = "bluefull" }, /area/fiorina/station/power_ring) +"aIX" = ( +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/central_ring) "aIZ" = ( /obj/structure/prop/resin_prop{ icon_state = "rack" @@ -1392,6 +1415,13 @@ icon_state = "kitchen" }, /area/fiorina/station/civres_blue) +"aJU" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "aJX" = ( /obj/structure/bed/chair{ dir = 8 @@ -1449,6 +1479,12 @@ /obj/structure/blocker/invisible_wall, /turf/open/floor/almayer_hull, /area/fiorina/station/medbay) +"aLC" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "damaged1" + }, +/area/fiorina/station/central_ring) "aLR" = ( /obj/item/stack/medical/bruise_pack, /turf/open/floor/prison, @@ -1499,13 +1535,11 @@ }, /area/fiorina/station/park) "aNw" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/obj/structure/platform, +/turf/open/floor/prison{ + icon_state = "whitegreen" }, -/turf/open/space, -/area/fiorina/oob) +/area/fiorina/station/medbay) "aNP" = ( /obj/structure/inflatable, /obj/structure/barricade/handrail/type_b, @@ -1593,6 +1627,21 @@ "aPH" = ( /turf/closed/wall/r_wall/prison_unmeltable, /area/fiorina/station/security/wardens) +"aQB" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) "aQE" = ( /obj/item/stack/sheet/metal{ amount = 5 @@ -1724,13 +1773,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) -"aTN" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) "aUa" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber, /turf/open/floor/prison{ @@ -1755,6 +1797,13 @@ icon_state = "sterile_white" }, /area/fiorina/station/medbay) +"aUM" = ( +/obj/item/clothing/head/welding, +/turf/open/floor/prison{ + dir = 9; + icon_state = "greenfull" + }, +/area/fiorina/tumor/civres) "aVd" = ( /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/prison, @@ -1892,6 +1941,13 @@ dir = 5 }, /area/fiorina/tumor/aux_engi) +"aXK" = ( +/obj/item/clothing/under/shorts/green, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) "aXM" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/stack/cable_coil/orange, @@ -2235,11 +2291,11 @@ }, /area/fiorina/station/park) "biJ" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/tool/kitchen/utensil/fork, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, +/turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/research_cells) "bjk" = ( /obj/structure/sink{ @@ -2427,6 +2483,13 @@ }, /area/fiorina/station/security) "bqy" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10 + }, /obj/structure/closet/firecloset/full, /turf/open/floor/prison{ dir = 10; @@ -2456,6 +2519,18 @@ icon_state = "darkyellowfull2" }, /area/fiorina/tumor/servers) +"brI" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform_decoration/kutjevo, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/fiorina/oob) "brS" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/clipboard, @@ -2567,10 +2642,12 @@ /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) "bxa" = ( -/obj/structure/platform_decoration/kutjevo, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/obj/structure/platform, +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + icon_state = "whitegreen" + }, +/area/fiorina/station/medbay) "bxl" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -2607,13 +2684,6 @@ icon_state = "stan27" }, /area/fiorina/tumor/ship) -"byl" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) "bym" = ( /turf/closed/shuttle/ert{ icon_state = "stan20" @@ -2686,18 +2756,6 @@ icon_state = "stan25" }, /area/fiorina/tumor/aux_engi) -"bAB" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) "bAS" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ @@ -2732,6 +2790,13 @@ /obj/structure/largecrate/random/case/double, /turf/open/floor/prison, /area/fiorina/tumor/aux_engi) +"bCk" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkpurple2" + }, +/area/fiorina/station/central_ring) "bCu" = ( /obj/item/shard{ icon_state = "large" @@ -3067,10 +3132,6 @@ /obj/item/tool/pen, /turf/open/floor/carpet, /area/fiorina/station/security/wardens) -"bMl" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/lowsec) "bMr" = ( /turf/open/floor/prison{ dir = 10; @@ -3203,13 +3264,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/servers) -"bQp" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) "bQx" = ( /obj/item/reagent_container/food/drinks/cans/waterbottle, /turf/open/floor/prison{ @@ -3372,6 +3426,10 @@ /obj/structure/machinery/faxmachine, /turf/open/floor/wood, /area/fiorina/station/security/wardens) +"bWr" = ( +/obj/structure/inflatable/popped, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "bWE" = ( /obj/effect/spawner/random/gun/rifle/midchance, /turf/open/floor/prison{ @@ -3448,6 +3506,20 @@ icon_state = "yellow" }, /area/fiorina/station/lowsec) +"bZC" = ( +/obj/structure/barricade/wooden{ + dir = 4 + }, +/obj/item/tool/crowbar/red, +/obj/structure/stairs/perspective{ + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut/alt, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/medbay) "bZF" = ( /obj/effect/landmark/objective_landmark/far, /turf/open/floor/prison{ @@ -3492,12 +3564,6 @@ icon_state = "kitchen" }, /area/fiorina/station/power_ring) -"cbH" = ( -/obj/structure/largecrate/supply/generator, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/disco) "cbK" = ( /obj/structure/closet/secure_closet/guncabinet{ req_access = null @@ -3601,19 +3667,13 @@ }, /area/fiorina/station/research_cells) "chA" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/lattice, /obj/structure/platform/kutjevo/smooth{ dir = 4 }, /obj/structure/platform/kutjevo/smooth{ dir = 1 }, -/turf/open/space, +/turf/open/space/basic, /area/fiorina/oob) "chJ" = ( /obj/structure/bed{ @@ -3707,19 +3767,18 @@ }, /area/fiorina/station/botany) "cjA" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/lattice, /obj/structure/platform/kutjevo/smooth{ dir = 8 }, /obj/structure/platform/kutjevo/smooth{ dir = 1 }, -/turf/open/space, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, /area/fiorina/oob) "cjF" = ( /turf/open/floor/prison{ @@ -3733,6 +3792,12 @@ icon_state = "whitegreen" }, /area/fiorina/tumor/ice_lab) +"ckj" = ( +/turf/open/floor/prison{ + dir = 6; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "ckm" = ( /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, @@ -3827,6 +3892,18 @@ icon_state = "floor_plate" }, /area/fiorina/tumor/servers) +"cmz" = ( +/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" + }, +/turf/open/space, +/area/fiorina/oob) "cmI" = ( /obj/structure/platform{ dir = 8 @@ -3854,6 +3931,10 @@ icon_state = "panelscorched" }, /area/fiorina/station/chapel) +"cnl" = ( +/obj/structure/largecrate/supply/supplies/metal, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "cnn" = ( /obj/item/device/flashlight, /turf/open/floor/prison{ @@ -3865,10 +3946,6 @@ /obj/structure/bed/sofa/south/grey/left, /turf/open/floor/prison, /area/fiorina/station/disco) -"cnF" = ( -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor/prison, -/area/fiorina/station/medbay) "cnU" = ( /obj/structure/machinery/computer/atmos_alert, /obj/structure/surface/table/reinforced/prison, @@ -3927,6 +4004,8 @@ /obj/structure/platform/kutjevo/smooth{ dir = 8 }, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/lattice, /turf/open/space/basic, /area/fiorina/oob) "cqc" = ( @@ -4231,12 +4310,18 @@ }, /area/fiorina/station/research_cells) "cAv" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 8; - layer = 3.5 +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" }, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/central_ring) "cAA" = ( /obj/effect/landmark/static_comms/net_two, /turf/open/floor/prison{ @@ -4431,6 +4516,13 @@ icon_state = "whitepurple" }, /area/fiorina/station/research_cells) +"cFN" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) "cFQ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/bottle/vodka{ @@ -4616,6 +4708,15 @@ }, /turf/open/floor/prison, /area/fiorina/station/power_ring) +"cNC" = ( +/obj/structure/prop/almayer/computers/mission_planning_system{ + density = 0; + desc = "Its a telephone, and a computer. Woah."; + name = "\improper funny telephone booth"; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "cOb" = ( /obj/item/ammo_casing{ icon_state = "casing_6" @@ -4835,6 +4936,12 @@ icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_cargo) +"cWN" = ( +/obj/item/weapon/gun/rifle/mar40, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "cWR" = ( /obj/effect/landmark/objective_landmark/medium, /obj/structure/closet/secure_closet/engineering_personal, @@ -4884,20 +4991,32 @@ /turf/open/floor/plating/prison, /area/fiorina/station/flight_deck) "cYa" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/space, -/area/fiorina/oob) +/turf/open/floor/prison{ + dir = 4; + icon_state = "whitegreen" + }, +/area/fiorina/station/central_ring) "cYg" = ( -/obj/item/ammo_magazine/m56d, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, /turf/open/floor/prison{ dir = 10; icon_state = "sterile_white" }, -/area/fiorina/station/medbay) +/area/fiorina/station/central_ring) +"cYv" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "cYP" = ( /obj/structure/closet/crate/trashcart, /obj/item/storage/pill_bottle/dexalin/skillless, @@ -4922,6 +5041,15 @@ icon_state = "whitepurple" }, /area/fiorina/station/research_cells) +"cZc" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/turf/open/space/basic, +/area/fiorina/oob) "cZq" = ( /obj/item/shard{ icon_state = "medium" @@ -4938,6 +5066,12 @@ }, /turf/open/floor/wood, /area/fiorina/station/security) +"das" = ( +/obj/structure/platform/shiva{ + dir = 1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "daA" = ( /obj/item/clothing/accessory/armband/cargo{ desc = "Sworn to the shrapnel and the shards therein. So sayeth her command when the first detonation occured."; @@ -5087,6 +5221,10 @@ icon_state = "whitegreen" }, /area/fiorina/station/medbay) +"deH" = ( +/obj/structure/machinery/light/double/blue, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "deL" = ( /obj/structure/window/framed/prison/reinforced/hull, /obj/structure/window/framed/prison/reinforced/hull, @@ -5185,13 +5323,10 @@ }, /area/fiorina/station/chapel) "dhe" = ( -/obj/structure/barricade/metal/wired{ - dir = 4 - }, /turf/open/floor/prison{ icon_state = "cell_stripe" }, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "dhi" = ( /obj/structure/platform_decoration/kutjevo, /turf/open/space/basic, @@ -5313,6 +5448,20 @@ name = "astroturf" }, /area/fiorina/station/research_cells) +"djU" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/fiorina/oob) "dka" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -5325,21 +5474,6 @@ /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/plating/prison, /area/fiorina/maintenance) -"dkg" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) "dkj" = ( /turf/open/floor/prison{ dir = 8; @@ -5438,6 +5572,16 @@ /obj/effect/spawner/random/toy, /turf/open/floor/wood, /area/fiorina/station/chapel) +"dnA" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "dnB" = ( /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison{ @@ -5451,6 +5595,15 @@ }, /turf/open/floor/prison, /area/fiorina/station/security) +"dnI" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "ywflowers_4" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "dnK" = ( /obj/structure/bed/chair/comfy{ dir = 4 @@ -5694,13 +5847,14 @@ }, /area/fiorina/station/power_ring) "dvY" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/obj/structure/machinery/door/airlock/almayer/maint/autoname{ + dir = 1; + name = "\improper Null Hatch REPLACE ME"; + req_access = null; + req_one_access = null }, -/obj/structure/platform/kutjevo/smooth, -/turf/open/space, -/area/fiorina/oob) +/turf/open/floor/plating/prison, +/area/fiorina/station/medbay) "dwg" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -6123,11 +6277,8 @@ /turf/open/floor/prison, /area/fiorina/station/flight_deck) "dGw" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 4 - }, /turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "dGx" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 @@ -6150,6 +6301,14 @@ icon_state = "yellow" }, /area/fiorina/station/lowsec) +"dHI" = ( +/obj/item/ammo_casing{ + icon_state = "casing_1" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "dIa" = ( /obj/item/stack/sheet/metal{ amount = 5 @@ -6185,7 +6344,6 @@ dir = 4; icon_state = "triagedecaldir" }, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" @@ -6228,6 +6386,12 @@ }, /turf/open/floor/prison, /area/fiorina/lz/near_lzI) +"dKN" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) "dKX" = ( /obj/effect/landmark/survivor_spawner, /turf/open/floor/plating/plating_catwalk/prison, @@ -6255,7 +6419,7 @@ }, /area/fiorina/station/research_cells) "dMa" = ( -/obj/structure/largecrate/random, +/obj/structure/stairs/perspective, /turf/open/floor/plating/prison, /area/fiorina/maintenance) "dMc" = ( @@ -6304,21 +6468,6 @@ icon_state = "floor_marked" }, /area/fiorina/station/park) -"dMU" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/turf/open/space, -/area/fiorina/oob) "dNh" = ( /turf/open/auto_turf/sand/layer1, /area/fiorina/lz/near_lzI) @@ -6415,6 +6564,14 @@ name = "metal wall" }, /area/fiorina/oob) +"dRW" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "dSw" = ( /obj/structure/bed{ icon_state = "abed" @@ -6561,6 +6718,10 @@ "dYr" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/explosive/grenade/incendiary/molotov, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -6680,6 +6841,12 @@ /obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"ecC" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "ecF" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med/limited{ pixel_y = 32 @@ -6713,6 +6880,10 @@ icon_state = "greenfull" }, /area/fiorina/tumor/servers) +"edd" = ( +/obj/structure/window/framed/prison/reinforced, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "edv" = ( /obj/item/storage/fancy/cigar, /turf/open/floor/prison, @@ -6935,6 +7106,13 @@ /turf/open/floor/prison, /area/fiorina/station/chapel) "eli" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 6 + }, /obj/structure/closet/emcloset, /turf/open/floor/prison{ dir = 10; @@ -7475,10 +7653,8 @@ /turf/open/floor/prison, /area/fiorina/station/power_ring) "eDn" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/central_ring) "eDs" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/prison{ @@ -7561,10 +7737,9 @@ }, /area/fiorina/station/lowsec) "eHa" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth, -/turf/open/space, -/area/fiorina/oob) +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/central_ring) "eHC" = ( /turf/closed/shuttle/ert{ icon_state = "wy25" @@ -7633,6 +7808,12 @@ /obj/structure/lattice, /turf/open/space/basic, /area/fiorina/oob) +"eKg" = ( +/turf/open/floor/prison{ + dir = 6; + icon_state = "darkpurple2" + }, +/area/fiorina/station/central_ring) "eKu" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -7662,6 +7843,10 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/botany) +"eMJ" = ( +/obj/structure/inflatable/popped/door, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "eML" = ( /obj/structure/monorail{ name = "launch track" @@ -7673,6 +7858,15 @@ icon_state = "floor_plate" }, /area/fiorina/station/telecomm/lz1_tram) +"eMO" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "ywflowers_2" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "eMU" = ( /turf/closed/shuttle/ert{ icon_state = "rightengine_1"; @@ -7745,6 +7939,14 @@ icon_state = "greenfull" }, /area/fiorina/tumor/servers) +"eON" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_ew_full_cap" + }, +/obj/structure/platform/stair_cut, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "eOS" = ( /obj/item/tool/warning_cone, /obj/structure/machinery/light/double/blue, @@ -7758,6 +7960,15 @@ icon_state = "floor_plate" }, /area/fiorina/station/flight_deck) +"ePm" = ( +/obj/structure/barricade/handrail{ + dir = 1; + pixel_y = 2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "ePq" = ( /obj/item/trash/cigbutt/ucigbutt, /obj/item/trash/cigbutt/ucigbutt{ @@ -8102,33 +8313,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/transit_hub) -"eZq" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) -"eZA" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) "eZD" = ( /obj/structure/closet/secure_closet/guncabinet{ req_access = null @@ -8237,21 +8421,6 @@ icon_state = "floor_plate" }, /area/fiorina/station/chapel) -"fcZ" = ( -/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/lattice, -/turf/open/space, -/area/fiorina/oob) "fde" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -8341,7 +8510,6 @@ pixel_x = 10; pixel_y = -3 }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/prison{ dir = 10; icon_state = "whitegreenfull" @@ -8374,19 +8542,12 @@ }, /area/fiorina/maintenance) "fhz" = ( -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 +/obj/structure/barricade/wooden, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" }, -/turf/open/space/basic, -/area/fiorina/oob) +/area/fiorina/station/central_ring) "fhC" = ( /obj/item/stack/rods, /turf/open/floor/prison{ @@ -8475,6 +8636,17 @@ "fjd" = ( /turf/closed/wall/prison, /area/fiorina/lz/near_lzI) +"fje" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 6 + }, +/obj/item/reagent_container/food/drinks/cans/beer{ + pixel_x = -13; + pixel_y = 13 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "fjr" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating/plating_catwalk/prison, @@ -8738,13 +8910,9 @@ /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) "fsn" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/obj/item/device/flashlight, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "ftq" = ( /obj/item/stack/cable_coil/orange, /turf/open/floor/prison{ @@ -8815,6 +8983,17 @@ /obj/item/stack/sheet/metal, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) +"fvY" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, +/turf/open/floor/prison{ + dir = 8; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "fwn" = ( /obj/structure/lattice, /obj/item/stack/sheet/metal, @@ -9049,7 +9228,7 @@ /obj/structure/inflatable/popped/door, /obj/item/ammo_magazine/m56d, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "fBp" = ( /obj/structure/closet/firecloset, /turf/open/floor/prison{ @@ -9088,12 +9267,9 @@ }, /area/fiorina/tumor/civres) "fDI" = ( -/obj/structure/prop/almayer/computers/mission_planning_system{ - density = 0; - desc = "Its a telephone, and a computer. Woah."; - name = "\improper funny telephone booth"; - pixel_x = 2; - pixel_y = 21 +/obj/structure/barricade/handrail/type_b{ + dir = 8; + layer = 3.5 }, /turf/open/floor/prison{ icon_state = "floor_plate" @@ -9199,6 +9375,13 @@ icon_state = "bluefull" }, /area/fiorina/station/power_ring) +"fHy" = ( +/obj/structure/tunnel, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "fHB" = ( /obj/structure/monorail{ name = "launch track" @@ -9781,6 +9964,15 @@ /obj/structure/bed/chair/office/dark, /turf/open/floor/prison, /area/fiorina/tumor/ice_lab) +"fYV" = ( +/obj/structure/machinery/door/airlock/almayer/marine{ + dir = 1; + icon = 'icons/obj/structures/doors/prepdoor_charlie.dmi' + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/research_cells) "fYW" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/carpet, @@ -9886,9 +10078,16 @@ icon_state = "greenfull" }, /area/fiorina/tumor/civres) -"gcy" = ( -/turf/open/floor/plating/plating_catwalk/prison, -/area/fiorina/station/lowsec) +"gde" = ( +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) "gdn" = ( /obj/structure/machinery/door/airlock/prison_hatch/autoname, /turf/open/floor/prison{ @@ -9956,20 +10155,9 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/maintenance) "gfp" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/obj/structure/machinery/m56d_hmg/mg_turret/dropship, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "gfw" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/donut_box{ @@ -10019,15 +10207,6 @@ icon_state = "yellow" }, /area/fiorina/station/lowsec) -"ggu" = ( -/obj/item/ammo_casing{ - icon_state = "casing_6_1" - }, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) "ggB" = ( /obj/item/stool, /turf/open/floor/prison{ @@ -10044,12 +10223,15 @@ }, /area/fiorina/tumor/ice_lab) "ggQ" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 1 +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "ghg" = ( /obj/structure/barricade/handrail{ dir = 1; @@ -10090,16 +10272,6 @@ icon_state = "floor_plate" }, /area/fiorina/tumor/servers) -"gik" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/machinery/recharger{ - pixel_y = 4 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "giX" = ( /obj/structure/barricade/handrail/type_b{ dir = 4 @@ -10152,6 +10324,16 @@ }, /turf/open/floor/prison, /area/fiorina/station/medbay) +"gky" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) "gkZ" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalleft" @@ -10456,14 +10638,13 @@ /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) "guB" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 8; - layer = 3.5 - }, +/obj/item/ammo_magazine/m56d, +/obj/item/ammo_magazine/m56d, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "cell_stripe" }, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "guG" = ( /turf/open/floor/prison{ dir = 9; @@ -10588,9 +10769,8 @@ }, /area/fiorina/station/park) "gyW" = ( -/obj/item/weapon/harpoon, -/turf/open/floor/plating/prison, -/area/fiorina/maintenance) +/turf/open/space, +/area/fiorina/station/medbay) "gzb" = ( /obj/structure/cable/heavyduty{ icon_state = "1-2" @@ -10648,6 +10828,16 @@ /obj/structure/largecrate/random/case, /turf/open/floor/prison, /area/fiorina/tumor/aux_engi) +"gAk" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/turf/open/space/basic, +/area/fiorina/oob) "gAA" = ( /obj/item/stack/sheet/metal/medium_stack, /turf/open/floor/plating/prison, @@ -10710,6 +10900,16 @@ icon_state = "cell_stripe" }, /area/fiorina/station/flight_deck) +"gDt" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/station/research_cells) "gDx" = ( /obj/structure/surface/table/woodentable, /obj/item/newspaper{ @@ -10779,9 +10979,9 @@ /turf/open/space, /area/fiorina/oob) "gEW" = ( -/obj/structure/surface/table/reinforced/prison, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 1; + icon_state = "cell_stripe" }, /area/fiorina/station/lowsec) "gFc" = ( @@ -11244,10 +11444,11 @@ }, /area/fiorina/station/park) "gTw" = ( -/obj/structure/lattice, -/obj/structure/platform_decoration/kutjevo, -/turf/open/space/basic, -/area/fiorina/oob) +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) "gUf" = ( /turf/open/floor/prison{ dir = 10; @@ -11278,11 +11479,9 @@ }, /area/fiorina/station/telecomm/lz1_cargo) "gUH" = ( -/obj/effect/decal/cleanable/blood/gibs/core, -/turf/open/floor/prison{ - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) +/obj/structure/machinery/cm_vending/sorted/medical/wall_med, +/turf/closed/wall/prison, +/area/fiorina/station/medbay) "gUO" = ( /obj/item/tool/warning_cone, /turf/open/floor/prison, @@ -11308,6 +11507,18 @@ icon_state = "redfull" }, /area/fiorina/station/security) +"gVR" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/fiorina/maintenance) +"gVX" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "darkpurple2" + }, +/area/fiorina/station/central_ring) "gWf" = ( /obj/structure/barricade/handrail/type_b{ dir = 1 @@ -11342,6 +11553,13 @@ icon_state = "green" }, /area/fiorina/tumor/civres) +"gXi" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "gXt" = ( /turf/open/floor/prison{ icon_state = "platingdmg1" @@ -11352,6 +11570,14 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) +"gXD" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "gXH" = ( /obj/structure/prop/structure_lattice{ dir = 4; @@ -11424,6 +11650,14 @@ icon_state = "panelscorched" }, /area/fiorina/station/transit_hub) +"haa" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "hab" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/trash/plate{ @@ -11652,7 +11886,7 @@ "hgJ" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "hgS" = ( /turf/closed/shuttle/ert{ icon_state = "stan5" @@ -11792,12 +12026,9 @@ /turf/open/floor/almayer_hull, /area/fiorina/oob) "hkW" = ( -/obj/item/trash/popcorn, -/turf/open/floor/prison{ - dir = 10; - icon_state = "sterile_white" - }, -/area/fiorina/station/medbay) +/obj/structure/barricade/wooden, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "hll" = ( /obj/item/tool/warning_cone, /turf/open/floor/prison{ @@ -11959,8 +12190,8 @@ "hpJ" = ( /obj/structure/bed/roller, /obj/structure/machinery/filtration/console{ - pixel_y = 22; - can_block_movement = 0 + can_block_movement = 0; + pixel_y = 22 }, /obj/item/trash/used_stasis_bag, /turf/open/floor/plating/prison, @@ -12015,6 +12246,14 @@ icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"hrg" = ( +/obj/structure/barricade/handrail{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "hro" = ( /obj/structure/girder, /turf/open/floor/plating/prison, @@ -12069,6 +12308,10 @@ }, /turf/open/floor/prison/chapel_carpet, /area/fiorina/maintenance) +"htc" = ( +/obj/item/tool/wrench, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "htt" = ( /turf/closed/shuttle/ert, /area/fiorina/station/power_ring) @@ -12175,6 +12418,12 @@ icon_state = "darkbrown2" }, /area/fiorina/tumor/aux_engi) +"hwE" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/prison{ + icon_state = "darkpurplefull2" + }, +/area/fiorina/tumor/servers) "hxg" = ( /turf/open/floor/prison{ dir = 1; @@ -12389,6 +12638,11 @@ /obj/effect/landmark/wo_supplies/storage/belts/knifebelt, /turf/open/floor/prison, /area/fiorina/station/lowsec) +"hDq" = ( +/obj/effect/landmark/corpsespawner/engineer, +/obj/effect/decal/cleanable/blood, +/turf/open/auto_turf/sand/layer1, +/area/fiorina/tumor/civres) "hDr" = ( /obj/item/stool, /turf/open/floor/prison{ @@ -12468,6 +12722,11 @@ icon_state = "greenblue" }, /area/fiorina/station/botany) +"hGP" = ( +/obj/structure/platform_decoration/kutjevo, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) "hGZ" = ( /obj/item/stack/cable_coil, /turf/open/floor/prison{ @@ -12531,6 +12790,13 @@ icon_state = "blue" }, /area/fiorina/station/power_ring) +"hIR" = ( +/obj/structure/tunnel, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/civres_blue) "hJc" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ @@ -12652,6 +12918,18 @@ icon_state = "red" }, /area/fiorina/lz/near_lzII) +"hNi" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/effect/decal/medical_decals{ + icon_state = "triagedecalbottomright" + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "hNY" = ( /obj/item/stack/rods, /turf/open/floor/plating/prison, @@ -12733,7 +13011,6 @@ /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) "hQH" = ( -/obj/item/reagent_container/food/snacks/clownstears, /obj/structure/closet/crate, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) @@ -12787,6 +13064,16 @@ /obj/structure/window/reinforced, /turf/open/floor/prison, /area/fiorina/station/security) +"hTc" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/central_ring) "hTf" = ( /obj/structure/prop/structure_lattice{ dir = 4; @@ -12808,9 +13095,7 @@ /area/fiorina/lz/near_lzII) "hTr" = ( /obj/structure/closet, -/obj/item/clothing/mask/gas/clown_hat, /obj/effect/spawner/random/gun/shotgun/midchance, -/obj/item/clothing/under/marine/ucf_clown, /turf/open/floor/plating/prison, /area/fiorina/maintenance) "hTs" = ( @@ -12907,10 +13192,14 @@ /turf/closed/wall/prison, /area/fiorina/station/medbay) "hVS" = ( -/obj/structure/platform_decoration/kutjevo, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "lavendergrass_4" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "hWB" = ( /obj/item/device/flashlight/lamp/tripod, /turf/open/floor/prison{ @@ -13034,10 +13323,12 @@ }, /area/fiorina/station/medbay) "ick" = ( -/obj/item/tool/candle, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/prison/chapel_carpet, -/area/fiorina/maintenance) +/obj/structure/barricade/wooden, +/turf/open/floor/prison{ + dir = 4; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) "icK" = ( /obj/effect/decal/cleanable/blood/splatter{ icon_state = "gibmid3" @@ -13069,6 +13360,13 @@ "idE" = ( /turf/open/floor/prison, /area/fiorina/station/medbay) +"idO" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/prison{ + dir = 10; + icon_state = "greenblue" + }, +/area/fiorina/station/botany) "idT" = ( /obj/structure/barricade/wooden{ dir = 4; @@ -13380,6 +13678,15 @@ /obj/item/device/cassette_tape/hiphop, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) +"ioG" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "brflowers_1" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "ioM" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/medbay) @@ -13447,6 +13754,9 @@ icon_state = "sterile_white" }, /area/fiorina/station/research_cells) +"irx" = ( +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "iry" = ( /obj/structure/janitorialcart, /turf/open/floor/prison{ @@ -13483,6 +13793,12 @@ icon_state = "kitchen" }, /area/fiorina/station/research_cells) +"isl" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "isB" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -13506,6 +13822,14 @@ icon_state = "yellow" }, /area/fiorina/station/lowsec) +"isL" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "isP" = ( /obj/item/trash/snack_bowl, /turf/open/floor/prison{ @@ -13566,6 +13890,12 @@ name = "astroturf" }, /area/fiorina/tumor/fiberbush) +"iuw" = ( +/obj/item/reagent_container/food/drinks/cans/souto/cherry, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "iuV" = ( /obj/structure/curtain, /turf/open/floor/prison{ @@ -13607,7 +13937,6 @@ "ivB" = ( /obj/structure/surface/rack, /obj/item/storage/pouch/tools/full, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/maintenance) "ivL" = ( @@ -13647,11 +13976,11 @@ /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) "iwK" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/mre_pack/meal1, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/obj/structure/stairs/perspective{ + dir = 5; + icon_state = "p_stair_full" }, +/turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/research_cells) "iwT" = ( /obj/structure/ice/thin/indestructible{ @@ -13769,6 +14098,14 @@ icon_state = "stan25" }, /area/fiorina/oob) +"iCi" = ( +/obj/item/device/flashlight/lamp/tripod, +/obj/structure/machinery/light/double/blue{ + dir = 1; + pixel_y = 21 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "iCo" = ( /obj/structure/machinery/door/poddoor/almayer{ density = 0; @@ -13964,9 +14301,6 @@ dir = 1 }, /obj/structure/inflatable/popped, -/obj/structure/barricade/wooden{ - dir = 8 - }, /turf/open/floor/prison{ icon_state = "whitegreen" }, @@ -14012,6 +14346,13 @@ icon_state = "darkyellowfull2" }, /area/fiorina/station/telecomm/lz1_tram) +"iKf" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison{ + dir = 8; + icon_state = "green" + }, +/area/fiorina/tumor/civres) "iKg" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/floor/plating/prison, @@ -14040,6 +14381,21 @@ /obj/effect/landmark/corpsespawner/prison_security, /turf/open/floor/prison, /area/fiorina/station/park) +"iKT" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/fiorina/oob) "iLy" = ( /obj/item/stack/rods/plasteel, /turf/open/floor/prison{ @@ -14309,6 +14665,13 @@ icon_state = "darkyellow2" }, /area/fiorina/station/telecomm/lz1_cargo) +"iTe" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "iTm" = ( /turf/open/auto_turf/sand/layer1, /area/fiorina/station/civres_blue) @@ -14608,6 +14971,12 @@ icon_state = "sterile_white" }, /area/fiorina/station/civres_blue) +"jdX" = ( +/obj/item/clothing/under/shorts/red, +/turf/open/floor/prison{ + icon_state = "yellowfull" + }, +/area/fiorina/station/central_ring) "jeh" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_ew_full_cap" @@ -14657,21 +15026,12 @@ name = "pool" }, /area/fiorina/station/park) -"jfm" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" +"jfk" = ( +/obj/item/ammo_magazine/rifle/mar40/extended, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/space/basic, -/area/fiorina/oob) +/area/fiorina/station/lowsec) "jfp" = ( /obj/structure/barricade/handrail, /obj/structure/barricade/handrail{ @@ -14712,6 +15072,16 @@ "jgu" = ( /turf/closed/wall/prison, /area/fiorina/station/park) +"jgN" = ( +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/obj/effect/landmark/nightmare{ + insert_tag = "yardbasketball" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "jgW" = ( /obj/structure/barricade/metal/wired{ dir = 1 @@ -14970,7 +15340,6 @@ /area/fiorina/lz/near_lzII) "jnr" = ( /obj/structure/filingcabinet, -/obj/item/card/data/clown, /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison{ dir = 4; @@ -15133,18 +15502,12 @@ }, /area/fiorina/station/power_ring) "jqR" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = 13 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/obj/structure/barricade/wooden{ + dir = 4; + pixel_y = 4 }, -/area/fiorina/station/disco) +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "jqX" = ( /obj/structure/platform{ dir = 8 @@ -15383,6 +15746,10 @@ /obj/item/stack/tile/plasteel, /turf/open/floor/prison, /area/fiorina/station/disco) +"jAt" = ( +/obj/structure/platform/shiva, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "jAx" = ( /turf/open/floor/prison{ dir = 1; @@ -15554,6 +15921,13 @@ icon_state = "greenfull" }, /area/fiorina/tumor/servers) +"jEC" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 3 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "jEG" = ( /obj/structure/prop/resin_prop, /turf/open/floor/prison{ @@ -15660,6 +16034,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"jJe" = ( +/obj/structure/barricade/handrail/type_b{ + dir = 4 + }, +/turf/open/floor/prison, +/area/fiorina/station/disco) "jJh" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/objective, @@ -15843,6 +16223,16 @@ /obj/structure/machinery/power/smes/buildable, /turf/open/floor/prison, /area/fiorina/station/power_ring) +"jMA" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/disco) "jMH" = ( /obj/structure/barricade/metal/wired{ dir = 4 @@ -15851,6 +16241,11 @@ icon_state = "plate" }, /area/fiorina/tumor/ship) +"jNa" = ( +/turf/open/floor/prison{ + icon_state = "darkpurple2" + }, +/area/fiorina/station/central_ring) "jNl" = ( /obj/structure/ice/thin/indestructible{ icon_state = "Straight" @@ -16031,6 +16426,12 @@ }, /turf/open/floor/prison/chapel_carpet, /area/fiorina/station/chapel) +"jUy" = ( +/obj/structure/machinery/sensortower, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/civres) "jUz" = ( /obj/structure/surface/table/reinforced/prison{ flipped = 1 @@ -16127,6 +16528,11 @@ /obj/effect/landmark/yautja_teleport, /turf/open/floor/prison, /area/fiorina/station/park) +"jXx" = ( +/turf/open/floor/prison{ + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "jXz" = ( /turf/closed/wall/prison, /area/fiorina/tumor/servers) @@ -16209,11 +16615,11 @@ }, /area/fiorina/lz/near_lzII) "jZb" = ( -/obj/item/ammo_magazine/shotgun/buckshot, /turf/open/floor/prison{ - icon_state = "floor_plate" + dir = 4; + icon_state = "cell_stripe" }, -/area/fiorina/station/lowsec) +/area/fiorina/station/central_ring) "jZc" = ( /obj/structure/disposalpipe/segment{ icon_state = "delivery_outlet"; @@ -16223,6 +16629,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/tumor/ice_lab) +"jZx" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "jZR" = ( /obj/item/frame/rack, /obj/structure/barricade/handrail/type_b{ @@ -16400,6 +16812,7 @@ }, /area/fiorina/station/security) "kdo" = ( +/obj/structure/platform_decoration, /obj/structure/inflatable, /turf/open/floor/prison{ icon_state = "whitegreen" @@ -16431,6 +16844,13 @@ /obj/structure/largecrate/random/case/small, /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/lz/near_lzI) +"keo" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) "keF" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/flash, @@ -16534,6 +16954,11 @@ /obj/structure/machinery/light/double/blue, /turf/open/floor/wood, /area/fiorina/station/civres_blue) +"kiq" = ( +/turf/open/floor/prison{ + icon_state = "damaged2" + }, +/area/fiorina/station/central_ring) "kis" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -16943,6 +17368,15 @@ icon_state = "redfull" }, /area/fiorina/station/medbay) +"kuT" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "ywflowers_3" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "kvd" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/reagent_container/food/drinks/golden_cup, @@ -16965,6 +17399,20 @@ name = "astroturf" }, /area/fiorina/station/park) +"kvm" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/turf/open/space/basic, +/area/fiorina/oob) "kvn" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/weapon/gun/energy/taser, @@ -17773,6 +18221,16 @@ icon_state = "blue" }, /area/fiorina/station/civres_blue) +"kUR" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/central_ring) "kVg" = ( /obj/item/stack/cable_coil/blue, /turf/open/floor/plating/prison, @@ -18055,6 +18513,10 @@ icon_state = "whitegreen" }, /area/fiorina/station/medbay) +"ldZ" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "leq" = ( /obj/effect/landmark/corpsespawner/prison_security, /turf/open/floor/prison{ @@ -18153,6 +18615,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/maintenance) +"liT" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "liX" = ( /obj/structure/reagent_dispensers/water_cooler/stacks, /turf/open/floor/prison{ @@ -18639,6 +19107,7 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/medbay) "lwB" = ( +/obj/structure/platform, /obj/structure/bed/chair{ dir = 1; layer = 2.7 @@ -18727,11 +19196,13 @@ }, /area/fiorina/station/medbay) "lzb" = ( -/obj/structure/largecrate/random, +/obj/structure/platform_decoration{ + dir = 1 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "lzm" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/window/reinforced/tinted, @@ -18815,6 +19286,10 @@ }, /turf/open/floor/prison, /area/fiorina/station/flight_deck) +"lBY" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "lCm" = ( /obj/item/ammo_casing{ icon_state = "cartridge_1" @@ -18885,12 +19360,8 @@ }, /area/fiorina/station/civres_blue) "lDC" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 - }, -/turf/open/space/basic, -/area/fiorina/oob) +/turf/closed/wall/prison, +/area/fiorina/station/central_ring) "lEa" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_ew_full_cap" @@ -18985,19 +19456,6 @@ }, /turf/open/floor/prison, /area/fiorina/station/transit_hub) -"lGA" = ( -/obj/structure/machinery/bioprinter{ - stored_metal = 1000 - }, -/obj/structure/machinery/door/window/eastright, -/obj/structure/machinery/door/window/eastright{ - dir = 8 - }, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitegreenfull" - }, -/area/fiorina/station/medbay) "lHc" = ( /obj/structure/bed{ icon_state = "abed" @@ -19073,6 +19531,7 @@ }, /area/fiorina/station/park) "lJv" = ( +/obj/structure/platform, /obj/structure/surface/table/reinforced/prison, /obj/item/storage/firstaid/regular, /obj/structure/machinery/light/double/blue{ @@ -19211,6 +19670,15 @@ icon_state = "darkbrownfull2" }, /area/fiorina/tumor/aux_engi) +"lOB" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/turf/open/space/basic, +/area/fiorina/oob) "lOE" = ( /turf/open/floor/prison{ dir = 9; @@ -19382,6 +19850,20 @@ icon_state = "damaged2" }, /area/fiorina/station/lowsec) +"lWh" = ( +/obj/item/clothing/under/shorts/black, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) +"lWr" = ( +/obj/structure/stairs/perspective{ + dir = 4; + icon_state = "p_stair_full" + }, +/obj/structure/platform/shiva, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "lWD" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -19826,12 +20308,11 @@ }, /area/fiorina/station/telecomm/lz1_cargo) "mhv" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 8 +/obj/structure/machinery/power/apc{ + dir = 1 }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "mhM" = ( /obj/structure/machinery/door/airlock/almayer/maint/colony/autoname{ dir = 1; @@ -20155,6 +20636,12 @@ icon_state = "yellow" }, /area/fiorina/station/lowsec) +"msS" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname{ + dir = 1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "mtj" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -20185,6 +20672,10 @@ icon_state = "floor_plate" }, /area/fiorina/tumor/fiberbush) +"muf" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "muB" = ( /obj/effect/landmark/corpsespawner/ua_riot/burst, /turf/open/floor/prison{ @@ -20256,6 +20747,13 @@ icon_state = "floor_plate" }, /area/fiorina/station/lowsec) +"mxG" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/turf/open/space/basic, +/area/fiorina/oob) "mxO" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -20369,7 +20867,6 @@ /area/fiorina/station/security) "mAz" = ( /obj/structure/closet/emcloset, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/prison{ dir = 5; icon_state = "whitegreen" @@ -20460,16 +20957,11 @@ }, /area/fiorina/station/lowsec) "mDi" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/machinery/light/double/blue{ - dir = 8; - pixel_x = -10; - pixel_y = -3 +/obj/structure/platform_decoration, +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/turf/open/floor/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "mDs" = ( /obj/item/stack/sandbags_empty/half, /turf/open/floor/prison{ @@ -20498,11 +20990,11 @@ }, /area/fiorina/station/park) "mEv" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/reagent_container/food/snacks/mre_pack/meal5, -/turf/open/floor/prison{ - icon_state = "darkpurplefull2" +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" }, +/turf/open/floor/plating/plating_catwalk/prison, /area/fiorina/station/research_cells) "mEL" = ( /obj/item/prop/helmetgarb/spacejam_tickets{ @@ -20532,6 +21024,10 @@ icon_state = "floor_plate" }, /area/fiorina/station/civres_blue) +"mFv" = ( +/obj/structure/largecrate/random/mini/ammo, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "mFz" = ( /obj/effect/decal/cleanable/blood/splatter{ icon_state = "gibmid1" @@ -20542,19 +21038,8 @@ }, /area/fiorina/station/medbay) "mGe" = ( -/obj/structure/bed/chair{ - dir = 1; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/blood, -/obj/item/reagent_container/food/drinks/cans/beer{ - pixel_x = -11; - pixel_y = -6 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/fiorina/station/lowsec) +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "mGx" = ( /obj/item/reagent_container/food/drinks/sillycup, /turf/open/floor/prison, @@ -20595,6 +21080,14 @@ icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"mIq" = ( +/obj/structure/barricade/handrail{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "mIu" = ( /obj/effect/spawner/random/sentry/midchance, /turf/open/floor/plating/prison, @@ -21227,6 +21720,12 @@ icon_state = "sterile_white" }, /area/fiorina/station/medbay) +"mYx" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/tumor/ice_lab) "mYN" = ( /obj/structure/platform_decoration{ dir = 8 @@ -22022,6 +22521,13 @@ icon_state = "floor_plate" }, /area/fiorina/station/security) +"nzp" = ( +/obj/item/clothing/gloves/boxing/blue, +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "nzI" = ( /obj/structure/largecrate/random, /turf/open/floor/wood, @@ -23201,6 +23707,10 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/telecomm/lz2_maint) +"olB" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/plating/prison, +/area/fiorina/tumor/aux_engi) "olC" = ( /turf/open/floor/prison{ dir = 8; @@ -23217,6 +23727,13 @@ icon_state = "sterile_white" }, /area/fiorina/tumor/ice_lab) +"olQ" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/turf/open/space/basic, +/area/fiorina/oob) "olT" = ( /obj/structure/machinery/computer3/server/rack, /obj/structure/window{ @@ -23865,12 +24382,14 @@ /turf/open/floor/plating/prison, /area/fiorina/station/lowsec) "oFW" = ( +/obj/structure/platform, /obj/structure/bed/chair{ dir = 1; layer = 2.7 }, +/obj/structure/machinery/light/double/blue, /turf/open/floor/prison{ - icon_state = "whitegreencorner" + icon_state = "whitegreen" }, /area/fiorina/station/medbay) "oGm" = ( @@ -24022,6 +24541,14 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/tumor/civres) +"oKQ" = ( +/obj/structure/machinery/floodlight{ + name = "Yard Floodlight" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "oKV" = ( /obj/structure/machinery/door/airlock/multi_tile/elevator/freight, /turf/open/floor/corsat{ @@ -24083,6 +24610,18 @@ icon_state = "doubleside" }, /area/fiorina/maintenance) +"oOs" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "darkpurple2" + }, +/area/fiorina/station/central_ring) +"oOv" = ( +/obj/structure/barricade/wooden{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "oOK" = ( /obj/item/device/multitool, /turf/open/floor/prison{ @@ -24104,6 +24643,13 @@ icon_state = "floor_plate" }, /area/fiorina/station/park) +"oPJ" = ( +/obj/effect/decal/cleanable/blood/gibs, +/obj/item/ammo_magazine/rifle/mar40, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "oPN" = ( /obj/structure/inflatable/popped/door, /turf/open/floor/plating/prison, @@ -24205,6 +24751,13 @@ name = "astroturf" }, /area/fiorina/station/civres_blue) +"oTG" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) "oTH" = ( /obj/structure/bed/chair, /turf/open/floor/prison{ @@ -24227,6 +24780,12 @@ }, /turf/open/space, /area/fiorina/oob) +"oVk" = ( +/obj/structure/sign/prop3{ + desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." + }, +/turf/closed/wall/r_wall/prison_unmeltable, +/area/fiorina/station/central_ring) "oVn" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/close, @@ -24648,6 +25207,15 @@ /obj/item/stack/cable_coil/cut, /turf/open/floor/prison, /area/fiorina/tumor/servers) +"pkw" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "pkG" = ( /obj/item/stool, /turf/open/floor/prison{ @@ -25559,8 +26127,6 @@ /area/fiorina/tumor/aux_engi) "pON" = ( /obj/structure/closet, -/obj/item/storage/backpack/clown, -/obj/item/toy/bikehorn, /turf/open/floor/prison{ dir = 4; icon_state = "bluecorner" @@ -25671,7 +26237,6 @@ }, /area/fiorina/station/medbay) "pSJ" = ( -/obj/effect/landmark/corpsespawner/pmc, /turf/open/floor/wood, /area/fiorina/maintenance) "pSU" = ( @@ -25824,12 +26389,6 @@ icon_state = "darkyellowcorners2" }, /area/fiorina/station/telecomm/lz1_cargo) -"pYW" = ( -/obj/item/tool/weldingtool/hugetank, -/turf/open/floor/prison{ - icon_state = "darkbrownfull2" - }, -/area/fiorina/tumor/aux_engi) "pZb" = ( /turf/open/floor/prison{ dir = 8; @@ -25878,6 +26437,15 @@ "qbl" = ( /turf/open/auto_turf/sand/layer1, /area/fiorina/lz/near_lzII) +"qbr" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "lavendergrass_2" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "qbu" = ( /obj/structure/bed/chair/office/dark{ dir = 4 @@ -26039,6 +26607,13 @@ icon_state = "whitepurple" }, /area/fiorina/oob) +"qfE" = ( +/obj/item/ammo_magazine/shotgun/buckshot, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "qfI" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -26061,13 +26636,6 @@ }, /turf/open/space/basic, /area/fiorina/oob) -"qgh" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/book/manual/surgery, -/turf/open/floor/prison{ - icon_state = "redfull" - }, -/area/fiorina/station/medbay) "qgi" = ( /obj/structure/disposalpipe/segment{ color = "#c4c4c4"; @@ -26605,6 +27173,16 @@ icon_state = "darkbrowncorners2" }, /area/fiorina/maintenance) +"qwZ" = ( +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/turf/open/floor/prison{ + dir = 1; + icon_state = "whitegreen" + }, +/area/fiorina/station/central_ring) "qxB" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -26656,11 +27234,17 @@ }, /area/fiorina/station/park) "qyX" = ( -/obj/structure/barricade/wooden, +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 8 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "qzl" = ( /obj/structure/machinery/shower{ pixel_y = 13 @@ -27541,6 +28125,10 @@ icon_state = "floor_plate" }, /area/fiorina/tumor/civres) +"qWO" = ( +/obj/item/tool/weldingtool, +/turf/open/auto_turf/sand/layer1, +/area/fiorina/tumor/civres) "qXl" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -27629,6 +28217,15 @@ icon_state = "darkpurplefull2" }, /area/fiorina/station/research_cells) +"rac" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/turf/open/space/basic, +/area/fiorina/oob) "rar" = ( /obj/structure/window/reinforced{ dir = 4 @@ -27687,6 +28284,12 @@ icon_state = "redfull" }, /area/fiorina/station/security) +"rcG" = ( +/obj/structure/barricade/handrail, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "rdS" = ( /obj/structure/machinery/light/double/blue{ dir = 8; @@ -27710,6 +28313,14 @@ icon_state = "blue" }, /area/fiorina/station/power_ring) +"reD" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "reO" = ( /obj/structure/platform_decoration{ dir = 4 @@ -27893,9 +28504,12 @@ }, /area/fiorina/station/botany) "rkB" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, /obj/item/device/flashlight, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "rkH" = ( /obj/structure/grille, /obj/structure/lattice, @@ -28294,6 +28908,15 @@ }, /turf/open/floor/almayer_hull, /area/fiorina/oob) +"rxu" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "lavendergrass_3" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "rxz" = ( /obj/structure/curtain/open/black, /turf/open/floor/prison, @@ -28301,7 +28924,7 @@ "rym" = ( /obj/structure/inflatable/popped/door, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "ryt" = ( /obj/structure/window/framed/prison/reinforced, /turf/open/floor/prison, @@ -28343,11 +28966,6 @@ icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) -"rAe" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) "rAk" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -28382,6 +29000,9 @@ /turf/open/floor/wood, /area/fiorina/station/park) "rAQ" = ( +/obj/structure/platform_decoration{ + dir = 1 + }, /obj/structure/machinery/light/double/blue{ dir = 8; pixel_x = -10; @@ -28503,7 +29124,7 @@ }, /area/fiorina/station/research_cells) "rEm" = ( -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) "rEH" = ( @@ -28519,13 +29140,19 @@ /turf/open/floor/prison{ icon_state = "damaged3" }, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "rFu" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/prison/chapel_carpet{ icon_state = "doubleside" }, /area/fiorina/station/chapel) +"rFH" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "rFT" = ( /obj/item/ammo_casing{ icon_state = "casing_7_1" @@ -28686,6 +29313,14 @@ icon_state = "darkyellow2" }, /area/fiorina/lz/near_lzI) +"rKO" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "rKS" = ( /obj/item/tool/wrench, /turf/open/floor/prison{ @@ -28762,11 +29397,6 @@ /area/fiorina/lz/near_lzI) "rMS" = ( /obj/structure/largecrate/random/secure, -/obj/structure/machinery/light/double/blue{ - dir = 4; - pixel_x = 10; - pixel_y = 1 - }, /turf/open/floor/prison{ dir = 6; icon_state = "whitegreen" @@ -29052,15 +29682,12 @@ }, /area/fiorina/station/disco) "rVy" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/effect/spawner/random/pills/midchance, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, -/area/fiorina/station/research_cells) +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "rVM" = ( /obj/structure/closet/crate/miningcar, /obj/structure/barricade/wooden{ @@ -29095,6 +29722,10 @@ icon_state = "blue_plate" }, /area/fiorina/station/botany) +"rWB" = ( +/obj/structure/closet/boxinggloves, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "rWX" = ( /turf/open/floor/prison{ icon_state = "damaged3" @@ -29325,6 +29956,20 @@ /obj/structure/platform/stair_cut, /turf/open/floor/plating/prison, /area/fiorina/station/park) +"seu" = ( +/obj/effect/decal/medical_decals{ + icon_state = "triagedecaldir" + }, +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitegreenfull" + }, +/area/fiorina/station/medbay) "seW" = ( /turf/closed/shuttle/ert{ icon_state = "stan_r_w" @@ -29506,7 +30151,6 @@ /obj/item/stack/sheet/mineral/plastic, /obj/item/stack/sheet/mineral/plastic, /obj/item/stack/sheet/mineral/plastic, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating/prison, /area/fiorina/maintenance) "sma" = ( @@ -29544,6 +30188,10 @@ }, /turf/open/floor/plating/prison, /area/fiorina/lz/near_lzI) +"smz" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "smX" = ( /obj/item/stock_parts/matter_bin/super, /turf/open/floor/prison{ @@ -29776,6 +30424,10 @@ /obj/structure/machinery/computer/telecomms/monitor, /turf/open/floor/plating/prison, /area/fiorina/station/medbay) +"svo" = ( +/obj/structure/grille, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "svF" = ( /obj/structure/blocker/invisible_wall, /turf/open/floor/prison{ @@ -29986,6 +30638,12 @@ }, /turf/open/floor/plating/prison, /area/fiorina/oob) +"sDV" = ( +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "sEi" = ( /turf/open/floor/prison{ dir = 8; @@ -30183,6 +30841,12 @@ icon_state = "yellow" }, /area/fiorina/station/disco) +"sLl" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "darkpurple2" + }, +/area/fiorina/station/central_ring) "sLo" = ( /obj/structure/machinery/landinglight/ds1/delaythree{ dir = 1 @@ -30203,15 +30867,18 @@ /turf/closed/wall/r_wall/prison, /area/fiorina/tumor/civres) "sLT" = ( -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /turf/open/floor/prison{ icon_state = "floor_plate" }, /area/fiorina/station/civres_blue) "sMj" = ( +/obj/structure/barricade/metal/wired{ + dir = 8 + }, /obj/structure/largecrate/random/secure, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "sMo" = ( /obj/item/clothing/under/marine/ua_riot, /obj/item/weapon/gun/rifle/m16, @@ -30468,14 +31135,6 @@ }, /turf/open/space, /area/fiorina/oob) -"sVw" = ( -/obj/structure/barricade/handrail/type_b{ - dir = 4; - layer = 3.5 - }, -/obj/item/storage/bag/plasticbag, -/turf/open/floor/prison, -/area/fiorina/station/disco) "sVy" = ( /obj/structure/barricade/handrail/type_b{ dir = 4; @@ -30530,11 +31189,17 @@ }, /area/fiorina/station/medbay) "sWF" = ( +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison{ - dir = 10; - icon_state = "damaged2" + icon_state = "floor_plate" }, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "sXi" = ( /turf/open/floor/corsat{ icon_state = "plate" @@ -30546,17 +31211,16 @@ icon_state = "floor_plate" }, /area/fiorina/station/chapel) +"sYe" = ( +/turf/open/floor/prison{ + dir = 9; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "sYn" = ( /obj/structure/machinery/light/double/blue, /turf/open/floor/wood, /area/fiorina/station/security/wardens) -"sYv" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) "sYM" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ @@ -30641,8 +31305,8 @@ "tcl" = ( /obj/structure/largecrate/random/mini/med, /turf/open/floor/prison{ - dir = 5; - icon_state = "whitegreen" + dir = 10; + icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) "tcJ" = ( @@ -30807,6 +31471,14 @@ icon_state = "floor_plate" }, /area/fiorina/station/park) +"tjM" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/lowsec) "tjQ" = ( /obj/effect/spawner/random/tool, /turf/open/floor/prison{ @@ -30995,7 +31667,7 @@ }, /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "tov" = ( /obj/effect/spawner/random/gun/smg/midchance, /turf/open/floor/prison{ @@ -31060,6 +31732,12 @@ /obj/effect/landmark/monkey_spawn, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) +"tqa" = ( +/obj/structure/platform_decoration/kutjevo{ + dir = 4 + }, +/turf/open/space/basic, +/area/fiorina/oob) "tqM" = ( /obj/structure/filingcabinet, /turf/open/floor/prison{ @@ -31125,6 +31803,14 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating/prison, /area/fiorina/station/chapel) +"tsf" = ( +/obj/structure/machinery/light/double/blue{ + dir = 4; + pixel_x = 10; + pixel_y = -3 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "tsi" = ( /obj/structure/barricade/metal/wired, /turf/open/floor/prison{ @@ -31238,12 +31924,11 @@ }, /area/fiorina/station/power_ring) "tvI" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" }, -/obj/structure/lattice, -/turf/open/space, -/area/fiorina/oob) +/area/fiorina/station/central_ring) "tvM" = ( /obj/structure/platform{ dir = 1 @@ -31353,12 +32038,18 @@ /turf/open/floor/plating/prison, /area/fiorina/station/research_cells) "tzF" = ( -/obj/item/storage/pill_bottle/tramadol/skillless, +/obj/structure/stairs/perspective{ + dir = 8; + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/platform{ + dir = 4 + }, /turf/open/floor/prison{ dir = 10; - icon_state = "sterile_white" + icon_state = "whitegreenfull" }, -/area/fiorina/station/medbay) +/area/fiorina/station/central_ring) "tAb" = ( /obj/structure/surface/rack, /obj/item/storage/backpack/general_belt{ @@ -31682,6 +32373,13 @@ icon_state = "green" }, /area/fiorina/station/chapel) +"tJn" = ( +/obj/item/tool/wirecutters, +/obj/structure/platform/shiva{ + dir = 1 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "tJM" = ( /obj/item/prop/helmetgarb/riot_shield, /turf/open/floor/prison{ @@ -31695,6 +32393,12 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating/prison, /area/fiorina/station/power_ring) +"tJT" = ( +/turf/open/floor/prison{ + dir = 10; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "tJU" = ( /obj/structure/machinery/vending/coffee, /obj/structure/machinery/light/double/blue{ @@ -32394,6 +33098,12 @@ /obj/item/prop/almayer/flight_recorder, /turf/open/floor/prison, /area/fiorina/lz/near_lzI) +"ued" = ( +/obj/structure/sign/prop3{ + desc = "Enlist in the Penal Battalions today! The USCM 3rd Fleet features a subset of UA sanctioned penal battalions, drawing from inmate popualtions across the colonies. Mostly New Argentina though." + }, +/turf/closed/wall/prison, +/area/fiorina/station/central_ring) "uef" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/floor/prison{ @@ -32890,6 +33600,10 @@ icon_state = "whitegreenfull" }, /area/fiorina/station/medbay) +"uvM" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "uwg" = ( /obj/effect/spawner/random/tool, /turf/open/floor/prison{ @@ -32915,6 +33629,11 @@ /obj/item/stack/sheet/mineral/plastic, /turf/open/floor/prison, /area/fiorina/tumor/servers) +"uwY" = ( +/obj/structure/lattice, +/obj/structure/platform/kutjevo/smooth, +/turf/open/space, +/area/fiorina/oob) "uxa" = ( /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/prison{ @@ -32973,6 +33692,10 @@ /obj/item/stack/sheet/metal, /turf/open/floor/prison, /area/fiorina/station/lowsec) +"uym" = ( +/obj/structure/machinery/door/airlock/prison_hatch/autoname, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) "uyq" = ( /obj/structure/reagent_dispensers/water_cooler, /turf/open/floor/prison{ @@ -33012,7 +33735,7 @@ }, /obj/structure/largecrate/random/secure, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "uzX" = ( /obj/structure/barricade/wooden{ dir = 8 @@ -33023,6 +33746,13 @@ icon_state = "sterile_white" }, /area/fiorina/station/research_cells) +"uAd" = ( +/obj/item/clothing/gloves/boxing/green, +/turf/open/floor/prison{ + dir = 6; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "uAi" = ( /obj/structure/sink{ dir = 4; @@ -33110,11 +33840,10 @@ }, /area/fiorina/station/medbay) "uCD" = ( -/obj/effect/landmark/nightmare{ - insert_tag = "medicalhold" +/turf/open/floor/prison{ + icon_state = "cell_stripe" }, -/turf/closed/wall/prison, -/area/fiorina/station/medbay) +/area/fiorina/station/research_cells) "uCW" = ( /obj/item/reagent_container/glass/bucket/janibucket, /turf/open/floor/prison{ @@ -33262,6 +33991,16 @@ icon_state = "floor_plate" }, /area/fiorina/tumor/civres) +"uIA" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_sn_full_cap" + }, +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10 + }, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "uIG" = ( /obj/structure/prop/structure_lattice{ dir = 4 @@ -33467,6 +34206,12 @@ icon_state = "floor_plate" }, /area/fiorina/station/disco) +"uRu" = ( +/turf/open/floor/prison{ + dir = 4; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) "uRK" = ( /obj/structure/platform{ dir = 8 @@ -33486,6 +34231,13 @@ icon_state = "blue_plate" }, /area/fiorina/station/botany) +"uRY" = ( +/obj/item/ammo_magazine/rifle/mar40, +/turf/open/floor/prison{ + dir = 8; + icon_state = "yellow" + }, +/area/fiorina/station/lowsec) "uSb" = ( /obj/structure/barricade/wooden{ dir = 4; @@ -33495,7 +34247,7 @@ dir = 10; icon_state = "damaged1" }, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "uSo" = ( /obj/item/poster, /turf/open/floor/prison{ @@ -33611,6 +34363,14 @@ icon_state = "darkbrown2" }, /area/fiorina/tumor/aux_engi) +"uWs" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) "uWQ" = ( /obj/structure/platform{ dir = 8 @@ -33712,16 +34472,6 @@ }, /turf/open/floor/plating/prison, /area/fiorina/station/park) -"uYD" = ( -/obj/structure/bed{ - icon_state = "abed" - }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/prison{ - dir = 10; - icon_state = "whitepurple" - }, -/area/fiorina/station/research_cells) "uYR" = ( /obj/structure/machinery/light/double/blue{ dir = 1; @@ -33801,14 +34551,15 @@ }, /area/fiorina/station/lowsec) "vbe" = ( -/obj/structure/machinery/m56d_hmg/mg_turret/dropship{ - dir = 1 +/obj/structure/stairs/perspective{ + dir = 1; + icon_state = "p_stair_full" }, /turf/open/floor/prison{ dir = 8; icon_state = "whitegreen" }, -/area/fiorina/station/medbay) +/area/fiorina/station/central_ring) "vbl" = ( /obj/structure/closet/bombcloset, /obj/effect/landmark/objective_landmark/medium, @@ -34019,6 +34770,10 @@ }, /turf/open/floor/prison, /area/fiorina/station/telecomm/lz1_tram) +"vgP" = ( +/obj/structure/largecrate/random, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "vgS" = ( /obj/item/stack/sheet/metal, /turf/open/floor/prison{ @@ -34285,6 +35040,9 @@ }, /area/fiorina/tumor/ice_lab) "vqi" = ( +/obj/structure/platform{ + dir = 1 + }, /obj/structure/machinery/light/double/blue{ dir = 1; pixel_y = 21 @@ -34465,20 +35223,11 @@ }, /area/fiorina/station/civres_blue) "vuc" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "vuE" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/machinery/landinglight/ds2/delayone, @@ -34734,6 +35483,17 @@ }, /turf/open/floor/prison, /area/fiorina/station/power_ring) +"vCT" = ( +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = -3 + }, +/turf/open/floor/prison{ + dir = 10; + icon_state = "whitepurple" + }, +/area/fiorina/station/research_cells) "vDc" = ( /obj/structure/bed/sofa/south/grey/left, /obj/item/reagent_container/food/snacks/sandwich{ @@ -34862,8 +35622,9 @@ /obj/structure/barricade/metal/wired{ dir = 4 }, +/obj/structure/largecrate/random, /turf/open/floor/plating/prison, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "vGO" = ( /obj/structure/platform{ dir = 4 @@ -35025,6 +35786,12 @@ icon_state = "floor_plate" }, /area/fiorina/station/power_ring) +"vMX" = ( +/turf/open/floor/prison{ + dir = 1; + icon_state = "cell_stripe" + }, +/area/fiorina/station/central_ring) "vNq" = ( /turf/closed/wall/r_wall/prison, /area/fiorina/station/telecomm/lz1_cargo) @@ -35120,12 +35887,10 @@ /turf/open/floor/prison, /area/fiorina/lz/near_lzII) "vPM" = ( -/obj/structure/platform_decoration/kutjevo{ - dir = 8 +/turf/open/floor/prison{ + icon_state = "floor_plate" }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) +/area/fiorina/station/central_ring) "vPR" = ( /turf/closed/shuttle/ert{ icon_state = "stan1" @@ -35260,6 +36025,10 @@ icon_state = "greenfull" }, /area/fiorina/station/transit_hub) +"vVR" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/prison, +/area/fiorina/station/central_ring) "vWe" = ( /obj/structure/extinguisher_cabinet, /turf/closed/wall/prison, @@ -35271,6 +36040,14 @@ icon_state = "cell_stripe" }, /area/fiorina/station/power_ring) +"vWE" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "vWI" = ( /obj/structure/flora/pottedplant{ icon_state = "pottedplant_22" @@ -35324,6 +36101,15 @@ icon_state = "yellow" }, /area/fiorina/station/disco) +"vYE" = ( +/obj/structure/flora/bush/ausbushes/grassybush{ + icon_state = "lavendergrass_1" + }, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "vYL" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor/prison{ @@ -35371,6 +36157,12 @@ icon_state = "blue" }, /area/fiorina/station/power_ring) +"vZz" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "vZD" = ( /obj/item/storage/box/donkpockets, /turf/open/floor/plating/prison, @@ -35446,10 +36238,17 @@ /area/fiorina/tumor/fiberbush) "wby" = ( /obj/structure/platform/kutjevo/smooth, +/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 = 8 }, -/obj/structure/lattice, /turf/open/space, /area/fiorina/oob) "wbB" = ( @@ -35711,6 +36510,12 @@ "wkD" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) +"wkZ" = ( +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, /area/fiorina/station/disco) "wlp" = ( /obj/item/reagent_container/food/snacks/donkpocket, @@ -35781,17 +36586,11 @@ }, /area/fiorina/station/lowsec) "wnB" = ( -/obj/structure/platform/kutjevo/smooth{ - dir = 1 - }, -/obj/structure/barricade/handrail{ - dir = 1; - icon_state = "hr_kutjevo"; - name = "solar lattice" +/turf/open/floor/prison{ + dir = 9; + icon_state = "darkpurple2" }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) +/area/fiorina/station/central_ring) "wnW" = ( /obj/structure/toilet{ pixel_y = 4 @@ -35953,13 +36752,18 @@ }, /area/fiorina/station/botany) "wuT" = ( -/obj/structure/lattice, -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 4 +/obj/structure/platform_decoration{ + dir = 1 }, -/turf/open/space/basic, -/area/fiorina/oob) +/obj/structure/machinery/light/double/blue{ + dir = 8; + pixel_x = -10; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "wvf" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/flora/pottedplant{ @@ -35970,6 +36774,21 @@ }, /turf/open/floor/prison, /area/fiorina/station/security) +"wvu" = ( +/obj/structure/platform/kutjevo/smooth{ + dir = 4 + }, +/obj/structure/platform/kutjevo/smooth{ + dir = 1 + }, +/obj/structure/barricade/handrail{ + dir = 1; + icon_state = "hr_kutjevo"; + name = "solar lattice" + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) "wvH" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/prison/chapel_carpet{ @@ -36147,6 +36966,10 @@ }, /turf/open/floor/prison, /area/fiorina/station/disco) +"wAM" = ( +/obj/structure/tunnel/maint_tunnel, +/turf/open/floor/plating/prison, +/area/fiorina/station/civres_blue) "wAR" = ( /obj/structure/filingcabinet, /obj/structure/filingcabinet{ @@ -36297,6 +37120,17 @@ /obj/structure/window/framed/prison/reinforced/hull, /turf/open/floor/plating/prison, /area/fiorina/station/civres_blue) +"wGa" = ( +/obj/structure/window/reinforced{ + dir = 1; + layer = 3 + }, +/obj/structure/largecrate/random/mini/med{ + pixel_x = -6; + pixel_y = -3 + }, +/turf/open/floor/prison, +/area/fiorina/station/central_ring) "wGe" = ( /obj/structure/barricade/metal/wired{ dir = 8 @@ -36435,6 +37269,14 @@ icon_state = "whitegreen" }, /area/fiorina/station/medbay) +"wJX" = ( +/obj/structure/platform/kutjevo/smooth, +/obj/structure/platform/kutjevo/smooth{ + dir = 8 + }, +/obj/structure/lattice, +/turf/open/space/basic, +/area/fiorina/oob) "wKb" = ( /obj/effect/spawner/random/gun/rifle/midchance, /turf/open/floor/wood, @@ -36793,6 +37635,12 @@ icon_state = "green" }, /area/fiorina/tumor/aux_engi) +"wUN" = ( +/obj/item/reagent_container/food/drinks/cans/sodawater, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "wVu" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /turf/open/floor/prison{ @@ -36833,6 +37681,14 @@ "wWs" = ( /turf/open/floor/greengrid, /area/fiorina/station/security) +"wWF" = ( +/obj/item/frame/rack, +/turf/open/floor/plating/prison, +/area/fiorina/station/disco) +"wWT" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/floor/plating/plating_catwalk/prison, +/area/fiorina/station/central_ring) "wWW" = ( /obj/structure/platform/kutjevo/smooth{ dir = 8 @@ -37125,6 +37981,13 @@ icon_state = "greenfull" }, /area/fiorina/station/transit_hub) +"xii" = ( +/obj/structure/tunnel, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/tumor/fiberbush) "xiF" = ( /obj/structure/largecrate/random/case/double, /obj/structure/machinery/light/double/blue{ @@ -37191,7 +38054,7 @@ dir = 1; icon_state = "cell_stripe" }, -/area/fiorina/station/disco) +/area/fiorina/station/central_ring) "xkG" = ( /obj/structure/machinery/light/double/blue{ dir = 4; @@ -37423,6 +38286,14 @@ icon_state = "darkbrownfull2" }, /area/fiorina/tumor/aux_engi) +"xqh" = ( +/obj/item/ammo_casing{ + icon_state = "cartridge_2" + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "xqj" = ( /obj/structure/bed{ icon_state = "abed" @@ -37650,7 +38521,7 @@ /turf/closed/wall/mineral/bone_resin, /area/fiorina/tumor/fiberbush) "xwD" = ( -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /turf/open/floor/prison, /area/fiorina/station/civres_blue) "xxd" = ( @@ -37699,6 +38570,21 @@ }, /turf/open/floor/prison, /area/fiorina/station/telecomm/lz1_cargo) +"xyy" = ( +/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/platform/kutjevo/smooth, +/turf/open/space, +/area/fiorina/oob) "xyK" = ( /obj/structure/stairs/perspective{ dir = 1; @@ -38264,14 +39150,19 @@ icon_state = "whitegreenfull" }, /area/fiorina/tumor/ice_lab) -"xQC" = ( -/obj/structure/platform/kutjevo/smooth, -/obj/structure/platform/kutjevo/smooth{ - dir = 8 +"xQs" = ( +/obj/item/reagent_container/food/drinks/coffee{ + name = "\improper paper cup" }, -/obj/structure/lattice, -/turf/open/space/basic, -/area/fiorina/oob) +/turf/open/floor/prison{ + dir = 5; + icon_state = "yellow" + }, +/area/fiorina/station/central_ring) +"xQC" = ( +/obj/structure/window/framed/prison/reinforced/hull, +/turf/open/floor/plating/prison, +/area/fiorina/station/central_ring) "xQE" = ( /obj/structure/closet/bodybag, /obj/effect/decal/cleanable/blood/gibs/up, @@ -38471,6 +39362,13 @@ icon_state = "floor_plate" }, /area/fiorina/station/civres_blue) +"xXw" = ( +/obj/item/device/flashlight/lamp/tripod, +/turf/open/organic/grass{ + desc = "It'll get in your shoes no matter what you do."; + name = "astroturf" + }, +/area/fiorina/station/central_ring) "xYg" = ( /obj/docking_port/stationary/marine_dropship/lz2, /turf/open/floor/plating/prison, @@ -38594,6 +39492,14 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /turf/open/floor/plating/prison, /area/fiorina/tumor/fiberbush) +"ybs" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/fiorina/station/central_ring) "ybR" = ( /obj/item/stack/sheet/metal{ amount = 5 @@ -43504,7 +44410,7 @@ lHx jlk jlk sAv -pYW +sJT sAv jlk baC @@ -44938,7 +45844,7 @@ qPb qPb qPb qPb -qPb +xii kbT qPb qPb @@ -47111,7 +48017,7 @@ knh hjP pWO tuk -rGq +olB jlk baC baC @@ -49170,7 +50076,7 @@ lhQ tzj lvs lhQ -qty +aUM lsl xFx apw @@ -49381,10 +50287,10 @@ rMg hDx lhQ oVC +dKN hDx -hDx -hDx -apw +jUy +hDq apw apw amF @@ -49596,7 +50502,7 @@ qty hDx whu hDx -apw +qWO mZo apw amF @@ -50019,7 +50925,7 @@ qty muB nsg nsg -nsg +iKf apw hDx taX @@ -50586,7 +51492,7 @@ njx njx njx njx -lwK +hwE jXz pPG jXz @@ -58231,7 +59137,7 @@ fGb qdJ apf ybg -kOB +hIR gyB kOB kOB @@ -59958,7 +60864,7 @@ rja apf esS apf -apf +wAM rja obT gma @@ -60028,7 +60934,7 @@ kul kul kul kul -wOR +idO gEx bQM bQM @@ -66530,7 +67436,7 @@ djA hVI ivR ovJ -aif +dvY kqz cwO hVI @@ -66541,17 +67447,17 @@ lbu mEO gbS aFZ -dhi -lDC +brI +gAk qOk -mKS -mhv -cAW -hVS -lDC +cZc +lml +hGP +olQ qOk -mKS -mhv +kvm +oTG +bQM tPN ecL cME @@ -66737,12 +67643,12 @@ cwO nQq hVI hVI -lGA hVI hVI hVI hVI -nQq +hVI +gUH mJy tkk vWe @@ -66753,17 +67659,17 @@ lyJ ndh kwT tQB -daD +azy afk afk afk chA -qFE -dvY +uWs afk afk afk -dkg +wvu +fQV tPN ecL cME @@ -66952,7 +67858,7 @@ fPZ fPZ fPZ hVI -kSP +adH qSg hVI mJy @@ -66970,19 +67876,19 @@ afk hkh afk tCZ -pcu urJ afk hkh afk tCZ +pcu tPN slM cME cME tIU gZc -ick +tIU cME liA cME @@ -67161,12 +68067,12 @@ cwO hVI djA vDj -qgh +fPZ fPZ hVI ivR ovJ -aif +dvY kqz cwO fPZ @@ -67174,20 +68080,20 @@ fPZ sJu rjE dQp -cnF +idE fUX tQB -mdJ +iKT afk afk afk cjA cpW -cYa afk afk afk -dMU +rac +jlH twb twb twb @@ -67199,7 +68105,7 @@ bgy eLu cME cME -gyW +cME liA cFy mcc @@ -67373,8 +68279,8 @@ uGq hVI tEH tEH -hVI -jjs +ajp +aoa hVI tEH tEH @@ -67389,19 +68295,19 @@ hVI anG wyl aFZ -ggQ -eJQ -eJQ -tvI -sYv +aQB +wJX +llQ +djU +tqa +keo +mxG +llQ +lOB +tqa +bQM bQM -ggQ -eJQ -eJQ -tvI -sYv kPz -eHa twb aLT cME @@ -67595,25 +68501,25 @@ avX cwO fPZ cqH +hVI +hVI +hVI +bZC +hVI aFZ -aFZ -aFZ -aFZ -aFZ -aFZ -cAW -cAW -bQM -bQM -bQM -bQM -cAW -cAW -cAW -cAW -cAW +xQC +xQC +eDn +eDn +eDn +eDn +eDn +eDn +xQC +xQC +eDn +kPz kPz -bTo twb twb twb @@ -67745,7 +68651,7 @@ phz phz phz phz -ruy +mYx azZ tOr ezJ @@ -67807,28 +68713,28 @@ jEb tur fPZ goA -aFZ -dhi +hVI +lDC +lDC +ldZ lDC -qOk -mKS mhv +mGe +dGw +vPM +haa +mGe +mGe +vPM +rKO +mGe +mGe +eDn +eDn +cAW bQM bQM bQM -bQM -bQM -bQM -cAW -cAW -cAW -cAW -cAW -hVS -lDC -qOk -mKS -mhv twb ivB uzw @@ -68010,37 +68916,37 @@ hVI hVI hVI hVI -jjs +aoa hVI hVI -jjs +aoa hVI vWe ruB ruB dID -aSS -daD -afk -afk -afk -bAB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW +vWe +mFv +gXD +gTw +dGw +vPM +vPM +vPM +vPM +vPM +vPM +vPM +vPM +vPM +vPM +vPM +dGw eDn -afk -afk -afk -dkg +oVk +eDn +bQM +bQM twb nSU cME @@ -68231,28 +69137,28 @@ pQD rME fPZ fPZ -tQB -urJ -afk -hkh -afk -bQp -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW +wGa +dGw +tvI +tvI +tvI +tvI +tvI +tvI +tvI +vPM +vPM +vPM +tvI +tvI +tvI +tvI +vPM +vPM +dGw +eHa eDn -afk -hkh -afk -tCZ +bQM twb uts cME @@ -68433,41 +69339,41 @@ xIg hVI mMb dLx -gik fPZ fPZ -aif +fPZ +dvY ryN gBo qpw fPZ fPZ fPZ -tQB -mdJ -afk -afk -afk -bAB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -rAe -afk -afk -afk -dMU +jEC +dGw +tvI +fHy +tvI +tvI +tvI +tvI +tvI +vPM +vPM +vPM +tvI +tvI +tvI +tvI +tvI +tvI +vPM +deH +eDn +eDn twb -dTf -cME +eLu +eLu eLu srI dTf @@ -68645,42 +69551,42 @@ lUp hVI mei oZz -vWe hVI hVI -uCD +hVI +hVI hVI hVI hVI fPZ fPZ -hBX -tQB +hNi +lDC ggQ -eJQ -eJQ tvI -sYv -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ggQ -eJQ -eJQ tvI -sYv -twb -wQT +tvI +tvI +eMO +tvI +tvI +vPM +vPM +vPM +tvI +tvI +tvI +tvI +tvI +tvI +tvI +vPM +dGw +dhe +liA +gVR dMa -eLu +gfo cME wQT eLu @@ -68857,45 +69763,45 @@ uXc cQn mhb mhb -cQn +mhb rAQ bqy hVI kSp pEe -aoa -aja mFh aja -aFZ -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -twb -twb +fPZ +uxi +qwZ +bWr +tvI +tvI +tvI +tvI +tvI +tvI +tvI +vPM +mGe +vPM +jgN +tvI +acx +tvI +tvI +eMO +tvI +vPM +dGw +lDC twb twb tPN +tPN +tPN twb -twb +eLu kqC pHu mcc @@ -69070,39 +69976,39 @@ tST kqz kqz kqz -cwO +aGS eli hVI myO cwO mJy cwO -mJy -cwO -tQB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW +fPZ +uxi +kUR +eMJ +tvI +vYE +tvI +tvI +tvI +tvI +qbr +vPM +mGe +vPM +tvI +tvI +tvI +tvI +tvI +tvI +tvI +tvI +vPM +mGe +xQC +bQM bQM bQM bQM @@ -69281,8 +70187,8 @@ icj kqz kqz sZr -ffm -cwO +kqz +aNw hVI hVI mAz @@ -69290,31 +70196,31 @@ tur quk rMS tcl -tur -tQB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW +seu +hTc +bWr +tvI +tvI +tvI +tvI +tvI +tvI +tvI +vPM +dGw +vPM +tvI +tvI +tvI +tvI +tvI +tvI +tvI +tvI +vPM +mGe +xQC +bQM bQM bQM bQM @@ -69494,44 +70400,44 @@ vro kqz sWu kqz -tkk -hVI -hVI -aFZ -tQB -tQB -aFZ -tQB -tQB -aFZ -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -wzE -hZR -hZR -wzE -wzE +bxa +lDC +lDC +lDC +lDC +lDC +lDC +lDC +lDC +lDC +ggQ +tvI +kuT +tvI +tvI +tvI +oKQ +tvI +vPM +mGe +vPM +tvI +oKQ +tvI +tvI +tvI +ioG +tvI +tvI +vPM +deH +eDn +eDn +xQC +xQC +xQC +eDn +eDn vqi pHu mcc @@ -69705,46 +70611,46 @@ pnc bII kqz kqz -hkW +kqz iJj -fPZ -aFZ -aFZ -bce +cAv +vPM +fhz +gTw gTw wuT -qOk -jfm +qyX vPM -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -wzE -mcc -mcc -mcc -sHH -mcc +vPM +dGw +tvI +tvI +tvI +tvI +tvI +tvI +kuT +vPM +mGe +xqh +tvI +tvI +ioG +tvI +aJU +tvI +tvI +tvI +vPM +vPM +pkw +ybs +gTw +gTw +gTw +vPM +pkw +tjM cMg mcc vei @@ -69920,42 +70826,42 @@ kqz kqz lcu vbe -aja -tQB -cAW -ajx -afk -afk -afk +dGw +fsn +mGe +mGe +dGw +rVy +mGe wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -hZR +wnB +gVX +vPM +vPM +vPM +vPM +vPM +vPM +vPM +dGw +vPM +vPM +vPM +vPM +vPM +vPM +vPM +sYe +tJT +tJT mGe -gcy -gcy -sHH +isl +dGw +mGe +mGe +mGe +dGw +isl sHH pHu mcc @@ -70129,45 +71035,45 @@ hVI fcO sZr kqz -ajp +kqz pIX cYg -cwO -tQB -cAW -ajx -afk -hkh -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -hZR -mcc -sHH -sHH -sHH +dGw +dGw +dGw +jqR +dGw +rVy +mGe +bCk +sLl +jNa +vPM +mGe +mGe +smz +mGe +mGe +dGw +muf +dGw +mGe +wWT +dGw +mGe +mGe +vPM +liT +jXx +jXx +mGe +isl +dGw +dGw +dGw +dGw +dGw +isl sHH pHu mcc @@ -70343,43 +71249,43 @@ kqz kqz kqz aSw -kqz -cwO -tQB -cAW -ajx -afk -afk -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -hZR -aCO -bMl -gcy -sHH +cYa +dGw +gfp +hkW +mGe +dGw +rVy +mGe +oOs +oOs +eKg +vPM +jZx +vPM +vPM +vPM +vPM +jZx +dGw +vPM +dHI +vPM +vPM +vPM +vPM +vPM +xQs +ckj +ckj +mGe +isl +dGw +mGe +mGe +mGe +dGw +isl sHH pHu mcc @@ -70553,46 +71459,46 @@ ueA bII kqz kqz -xzb +kqz kdo tzF -cwO -tQB -cAW -ajx -afk -afk -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -wzE -mcc +vPM +guB +ick jZb -mcc -sHH -mcc +mDi +sWF +vPM +vPM +tvI +tvI +tvI +tvI +tvI +tvI +tvI +tvI +vPM +mGe +vPM +tvI +tvI +tvI +tvI +tvI +tvI +tvI +tvI +vPM +vPM +dnA +vWE +jZb +jZb +jZb +vPM +dnA +reD pHu mcc vei @@ -70767,43 +71673,43 @@ xzb kqz kqz oFW -jEb -tur -tQB -cAW -ajx -afk -hkh -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -wzE -hZR -hZR -wzE -wzE +eDn +eHa +xQC +xQC +xQC +eDn +eDn +iCi +vPM +tvI +rxu +tvI +tvI +tvI +tvI +oKQ +tvI +vPM +mGe +vPM +tvI +oKQ +tvI +vYE +tvI +xXw +hVS +tvI +vPM +deH +eDn +eDn +xQC +xQC +xQC +eDn +eDn vqi pHu mcc @@ -70979,42 +71885,42 @@ kqz kqz kqz lwB -aSS aFZ aFZ -cAW -ajx -afk -afk -afk -wnB -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -dhi -fsn +gyW +bQM +bQM +bQM +xQC +mGe +vPM +tvI +tvI +tvI +tvI +tvI +tvI +tvI +rxu +vPM +dGw +vPM +tvI +tvI +rxu +tvI +kuT +tvI +hVS +tvI +vPM +mGe +xQC +cmz +fyC qOk -gfp -mhv +mKS +erT wzE wzE pHu @@ -71189,40 +72095,40 @@ jEb aaf eTd jEb -jEb +kqz lJv aFZ aFZ -aFZ -kPz -aGS -aNw -llQ +gyW +bQM +bQM +bQM +xQC vuc -aTN -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ajx +vPM +tvI +tvI +tvI +qfE +dnI +tvI +tvI +tvI +vPM +mGe +vPM +tvI +rxu +tvI +tvI +tvI +tvI +tvI +tvI +vPM +mGe +xQC +xyy afk afk afk @@ -71401,40 +72307,40 @@ tOp jmG sta sta -sta jmG jmG jmG jmG jmG -uwk -uwk jmG jmG jmG -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ajx +jmG +cKa +cKa +cNC +tvI +tvI +tvI +tvI +tvI +tvI +vYE +vPM +mGe +vPM +vPM +vPM +vPM +hrg +hrg +hrg +vPM +vPM +rWB +eDn +eDn +urJ afk hkh afk @@ -71621,32 +72527,32 @@ rsE cKa imL ggB -ggB +uCD mEv -uwk -cAW -cAW -cAW -cAW +jYs +vMX +tvI +tvI +tvI hVS -vBP -vBP -vBP -vBP -vBP -vBP -vBP -vBP -vBP -vBP +tvI +tvI +tvI vPM -cAW -cAW -cAW -cAW -cAW -bQM -ajx +vZz +vPM +ioG +tvI +rcG +nzp +jdX +tJT +ePm +vPM +rWB +eDn +jKI +mdJ afk afk afk @@ -71833,39 +72739,39 @@ mYp cKa qZW ggB -ggB +uCD biJ -uwk -cAW -cAW -cAW -cAW -rAe -afk -afk -afk -hkh -afk -afk -hkh -afk -afk -afk -eZq -cAW -cAW -cAW -cAW -cAW -cAW -fdV +jYs +vMX +iuw +tvI +tvI +tvI +tvI +tvI +tvI +sYe +aee +tJT +tvI +tvI +rcG +aIX +vPM +aIX +ePm +dGw +vVR +eDn +eDn +eDn wby llQ -eZA -sYv -kPz +jKI +bUB +bQM wzE -pHu +ulJ mcc vei kqC @@ -72045,33 +72951,33 @@ tOp cKa rfJ ggB -ggB +uCD iwK -uwk -cAW -cAW -cAW -cAW -rAe -afk -afk -afk -pcu -afk -afk -pcu -afk -afk -afk -eZq -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ajx +cKa +gde +dGw +vPM +vPM +tvI +tvI +tvI +tvI +sDV +uRu +ckj +tvI +kuT +rcG +sDV +aIX +uAd +ePm +deH +ued +uvM +cnl +eDn +xQC wzE wzE wzE @@ -72260,35 +73166,35 @@ kNz vJD vJD jmG -cAW -cAW -bQM -bQM -rAe -afk -afk -afk -hkh -afk -afk -hkh -afk -afk -afk -eZq -cAW -cAW -cAW -cAW -cAW -cAW -cAW -ajx -hZR +eHa +eDn +dGw +dGw +vPM +vPM +vPM +aLC +sDV +uRu +ckj +vPM +vZz +vPM +mIq +mIq +mIq +vPM +dhe +msS +vMX +mGe +uIA +mGe +oFI gEW mcc fLR -usz +kqC pHu mcc vei @@ -72461,7 +73367,7 @@ kNz aau xMR roY -gUH +iZV vJD jvE vII @@ -72472,33 +73378,33 @@ dyM vJD vJD jmG -cAW -cAW -cAW -cAW -ggQ -jlH -jlH -tWI -llQ -jKI -tWI -llQ -jKI -jlH -jlH -sYv -cAW -cAW -cAW -cAW -cAW -cAW -cAW -bTo -hZR +bQM +eDn +xQC +eDn +mGe +mGe +isL +wUN +mGe +mGe +mGe +kiq +tsf +lWh +vPM +kiq +vPM +vPM +dhe +msS +vMX +mGe +iTe +mGe +oFI gEW -ggu +mcc mcc usz pHu @@ -72684,30 +73590,30 @@ cKa aaK kNz jmG -bQM -bQM -cAW -cAW -bce -cAW -ecM -ecM -mlC -mlC -mlC -ecM -ecM -cAW -cAW -bce -cAW -bce -hVS -vBP -byl -byl -mhv -rAe +kPz +uwY +pcu +eDn +xQC +xQC +eDn +eON +cYv +cYv +cYv +arY +lDC +irx +aXK +jZb +dRW +jZb +cFN +eDn +eDn +xQC +xQC +xQC wzE dYr mcc @@ -72888,38 +73794,38 @@ roY iZV cKa aaK -rVy +soQ cKa cFE -uYD +soQ cKa xMR iZV uwk -bxa -byl -vBP -byl -mhv +swg +fyC +qOk +sHO +erT kPz -ecM +eDn rkB rFr -miU +lBY uSb lzb -ecM -bQM -bQM -kPz +lDC +lDC +ldZ +ldZ +lDC +ldZ +ldZ +eDn cAW -kPz -ajx -afk -afk -afk -ghg -fsn +bce +bce +bce wzE kqC usz @@ -73097,7 +74003,7 @@ tOp cKa fiu gbi -tHu +iZV cKa ldm usA @@ -73114,27 +74020,27 @@ afk afk ghg gef -mlC +xQC wkD sMj -miU -xKX +gXi +ecC hgJ -mlC -bQM +edd +vgP +irx +htc +svo +irx +irx +xQC +cAW +bce +cAW cAW -kPz -bQM -kPz -bTo -afk -hkh -afk -tCZ -pcu wzE msv -dHp +uRY dHp dHp bop @@ -73326,28 +74232,28 @@ hkh afk tCZ pcu -mlC +xQC rym fBi -xKX +irx rym rym -mlC -kPz -kPz -kPz -kPz -kPz -rAe -afk -afk -afk -fhz -tvI +edd +vgP +eON +lWr +svo +eON +lWr +xQC +bce +bce +cAW +cAW wzE pHu dui -mcc +cWN dWM mcc mcc @@ -73538,29 +74444,29 @@ afk afk xMW ssJ -mlC +xQC xkC tom vGv uzO dhe -mlC -bQM -kPz -cAW +edd +fje +das +jAt +svo +tJn +jAt +xQC cAW bce -aKA -xQC -llQ -eZA -sYv -kPz +bce +bce wzE lll mcc -vza -mcc +oPJ +jfk mcc vza mcc @@ -73750,24 +74656,24 @@ llQ eOF bUB kPz +eDn +vPM +lBY +oOv +dGw +rFH +lDC +izZ +uym +uym +izZ +uym +uym ecM -cjF -miU -xKX -gqe -lzb -ecM -ecM -mlC -mlC -mlC -mlC -ecM -ecM -pcu -fcZ -erT -bQM +cAW +bce +cAW +cAW wzE scw uFh @@ -73962,24 +74868,24 @@ mlC mlC mlC ecM -ecM -xKX -xKX -rWX -xKX +eDn +eON +cYv +cYv +cYv +arY +lDC xKX -ecM -cjF -cjF -cjF -cjF -cjF -cjF +wkZ +wkZ +wWF +wkZ +wkZ ecM mlC wzE -iWq -bQM +wzE +wzE wzE glW vei @@ -74161,40 +75067,40 @@ dkj dkj dkj dkj +fvY dkj dkj dkj dkj dkj -dkj -kNz -cKa +vCT +fYV +fDI fDI -gqe cjF -qyX cjF -jqR cjF -qnu -xKX -sWF +jMA cjF -mDi -gqe -gqe -gqe -gqe -gqe -gqe -aFO -cbH -wzE -hZR -hZR -wzE -vei -iUy +cjF +cjF +cjF +cjF +gky +cjF +cjF +cjF +cjF +cjF +cjF +gky +cjF +kqC +usz +usz +usz +usz +usz mcc mcc mcc @@ -74381,8 +75287,8 @@ roY gLG iZV fSq -guB -cAv +cjF +gqe rAW cjF vEF @@ -74593,8 +75499,8 @@ vII vII dyM fSq -cjF -gqe +ebP +jJe gqe gqe sad @@ -74759,7 +75665,7 @@ lAh lAh lAh lAh -ruy +mYx csp xjK xjK @@ -74795,18 +75701,18 @@ wef roY roY roY -iZV +fin jpN uwk uwk uwk lIG vJD +gDt vJD -vJD -fSq -ebP -dGw +cKa +cjF +gqe gqe gqe vTl @@ -75876,7 +76782,7 @@ rUY vGO tMF hgu -sVw +hgu hgu hgu rox @@ -76491,7 +77397,7 @@ xMR roY wef roY -iZV +fin jmG uwk uwk diff --git a/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm new file mode 100644 index 000000000000..6662ebf081f0 --- /dev/null +++ b/maps/map_files/FOP_v3_Sciannex/sprinkles/20.yardbasketball.dmm @@ -0,0 +1,337 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood, +/area/template_noop) +"b" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/wood, +/area/template_noop) +"d" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"e" = ( +/obj/item/trash/cigbutt{ + pixel_x = 5; + pixel_y = -6 + }, +/turf/open/floor/wood, +/area/template_noop) +"f" = ( +/obj/effect/landmark/corpsespawner/ua_riot, +/obj/effect/decal/cleanable/blood, +/obj/item/handcuffs/zip{ + pixel_y = -12 + }, +/turf/open/floor/wood, +/area/template_noop) +"g" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood, +/area/template_noop) +"i" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/wood, +/area/template_noop) +"j" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/wood, +/area/template_noop) +"k" = ( +/obj/item/ammo_casing{ + dir = 6; + icon_state = "casing_10_1" + }, +/turf/open/floor/wood, +/area/template_noop) +"l" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"n" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/turf/open/floor/wood, +/area/template_noop) +"p" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/turf/open/floor/wood, +/area/template_noop) +"r" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"s" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"u" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/item/spacecash/c100{ + pixel_x = -11; + pixel_y = -6 + }, +/turf/open/floor/wood, +/area/template_noop) +"w" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/item/trash/barcardine, +/turf/open/floor/wood, +/area/template_noop) +"x" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood, +/area/template_noop) +"C" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/obj/effect/decal/warning_stripes, +/turf/open/floor/wood, +/area/template_noop) +"G" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/wood, +/area/template_noop) +"H" = ( +/obj/item/trash/chunk, +/turf/open/floor/wood, +/area/template_noop) +"J" = ( +/obj/item/weapon/gun/smg/mac15{ + pixel_x = 12 + }, +/turf/open/floor/wood, +/area/template_noop) +"L" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood, +/area/template_noop) +"M" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/obj/effect/decal/warning_stripes, +/obj/structure/holohoop{ + dir = 8 + }, +/turf/open/floor/wood, +/area/template_noop) +"Q" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"R" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes, +/obj/structure/holohoop{ + dir = 4 + }, +/turf/open/floor/wood, +/area/template_noop) +"S" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N" + }, +/turf/open/floor/wood, +/area/template_noop) +"T" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E-corner" + }, +/obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, +/turf/open/floor/wood, +/area/template_noop) +"U" = ( +/obj/item/ammo_magazine/smg/uzi{ + current_rounds = 0; + pixel_x = 5; + pixel_y = 12 + }, +/turf/open/floor/wood, +/area/template_noop) +"W" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/wood, +/area/template_noop) +"Y" = ( +/turf/open/floor/wood, +/area/template_noop) +"Z" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NS-center" + }, +/obj/effect/decal/warning_stripes, +/obj/item/toy/beach_ball/holoball, +/turf/open/floor/wood, +/area/template_noop) + +(1,1,1) = {" +Q +G +R +G +a +"} +(2,1,1) = {" +w +s +Y +Y +l +"} +(3,1,1) = {" +s +d +C +T +S +"} +(4,1,1) = {" +s +Y +Y +Y +L +"} +(5,1,1) = {" +s +Y +Y +H +L +"} +(6,1,1) = {" +s +Y +e +Y +L +"} +(7,1,1) = {" +r +n +Z +n +g +"} +(8,1,1) = {" +s +J +U +Y +L +"} +(9,1,1) = {" +s +k +W +Y +L +"} +(10,1,1) = {" +u +f +Y +Y +L +"} +(11,1,1) = {" +p +b +C +G +i +"} +(12,1,1) = {" +s +Y +Y +Y +L +"} +(13,1,1) = {" +d +j +M +j +x +"} diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm index 631e40c22643..f5e2f597ef24 100644 --- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm +++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm @@ -895,7 +895,6 @@ /area/shiva/interior/garage) "adp" = ( /obj/structure/closet/secure_closet/engineering_personal, -/obj/item/weapon/banhammer, /turf/open/floor/shiva{ dir = 1 }, @@ -18273,13 +18272,6 @@ /obj/item/tool/wrench, /turf/open/auto_turf/snow/layer1, /area/shiva/interior/colony/central) -"nhh" = ( -/obj/item/clothing/gloves/marine/veteran/insulated, -/turf/open/floor/shiva{ - dir = 1; - icon_state = "yellow" - }, -/area/shiva/interior/colony/deck) "nhl" = ( /turf/open/floor/shiva{ dir = 5; @@ -20114,7 +20106,7 @@ pixel_x = 10; pixel_y = 11 }, -/obj/item/tool/weldingtool/largetank{ +/obj/item/tool/weldingtool{ pixel_x = -6; pixel_y = 4 }, @@ -58882,7 +58874,7 @@ jVI kQF kzE acT -nhh +qOD kTZ iLS mms diff --git a/maps/map_files/Kutjevo/Kutjevo.dmm b/maps/map_files/Kutjevo/Kutjevo.dmm index 646ed4dcbc8c..a79ef352f94b 100644 --- a/maps/map_files/Kutjevo/Kutjevo.dmm +++ b/maps/map_files/Kutjevo/Kutjevo.dmm @@ -14943,7 +14943,7 @@ /turf/open/floor/kutjevo/colors/orange, /area/kutjevo/interior/power) "uBG" = ( -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /turf/open/floor/kutjevo/grey/plate, /area/kutjevo/interior/complex/botany/east_tech) "uBO" = ( @@ -16657,13 +16657,6 @@ /obj/structure/blocker/invisible_wall, /turf/open/floor/kutjevo/colors/red/tile, /area/kutjevo/interior/oob/dev_room) -"wSN" = ( -/obj/structure/blocker/invisible_wall, -/obj/effect/landmark/corpsespawner/clown, -/turf/open/desert/desert_shore/desert_shore1{ - dir = 1 - }, -/area/kutjevo/interior/oob/dev_room) "wSU" = ( /obj/structure/machinery/light{ dir = 4 @@ -20023,7 +20016,7 @@ rkt jBJ fOU ibm -wSN +rYs fAF fQB uam 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 9fcb8b7386a7..dac318453cdf 100644 --- a/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm +++ b/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @@ -111,6 +111,10 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor) +"acC" = ( +/obj/structure/largecrate/random, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "acD" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/corsat, @@ -197,6 +201,14 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/mining) +"afa" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "afn" = ( /obj/item/reagent_container/spray/cleaner/drone{ pixel_x = -3; @@ -804,6 +816,7 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, +/obj/vehicle/train/cargo/trolley, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "awI" = ( @@ -855,6 +868,16 @@ icon_state = "plate" }, /area/lv522/atmos/reactor_garage) +"ayf" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 8; + pixel_x = -6; + pixel_y = 6 + }, +/obj/vehicle/train/cargo/trolley, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "ayn" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -901,11 +924,6 @@ /area/lv522/indoors/a_block/corpo/glass) "azJ" = ( /obj/structure/surface/table/almayer, -/obj/item/clothing/head/helmet/marine/grenadier{ - armor_bullet = 10; - desc = "Pairs with the M3-G4 heavy grenadier plating. A distant cousin of the experimental B18 defensive helmet. Decorated with a blue stripe the large hole in the side of this helmet somewhat limits its protection."; - name = "\improper damaged M3-G4 grenadier helmet" - }, /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) "azK" = ( @@ -934,6 +952,12 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"aAX" = ( +/obj/item/ammo_box/magazine/misc/mre/empty, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "aBm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/prop/invuln/lattice_prop{ @@ -1172,6 +1196,12 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/lone_buildings/outdoor_bot) +"aId" = ( +/obj/structure/girder/displaced, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "aIf" = ( /obj/structure/machinery/light{ dir = 1 @@ -1274,6 +1304,10 @@ icon_state = "darkbrownfull2" }, /area/lv522/landing_zone_2) +"aKE" = ( +/obj/item/prop/alien/hugger, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "aKK" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/structure/pipes/standard/simple/hidden/green{ @@ -2102,6 +2136,10 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/north) +"bgw" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "bgJ" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "Sec-Kitchen-Lockdown"; @@ -2611,6 +2649,15 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor) +"byb" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/obj/structure/barricade/wooden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "bye" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -2627,6 +2674,22 @@ icon_state = "darkpurple2" }, /area/lv522/indoors/a_block/dorms) +"byD" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal{ + icon = 'icons/mob/xenos/effects.dmi'; + icon_state = "acid_weak"; + layer = 2; + name = "weak acid"; + pixel_x = -10; + pixel_y = 4 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "byJ" = ( /obj/structure/machinery/light, /obj/effect/decal/cleanable/dirt, @@ -2700,6 +2763,13 @@ }, /turf/open/floor/plating, /area/lv522/indoors/a_block/security) +"bAn" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "bAo" = ( /obj/item/prop/colony/usedbandage{ dir = 10 @@ -3111,6 +3181,10 @@ icon_state = "plate" }, /area/lv522/atmos/east_reactor) +"bKf" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "bKk" = ( /turf/open/floor/corsat{ dir = 8; @@ -3132,6 +3206,12 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/w_rockies) +"bKu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "bKO" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -3384,6 +3464,18 @@ icon_state = "greenfull" }, /area/lv522/indoors/b_block/bridge) +"bQP" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_y = -6 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_y = 10 + }, +/obj/structure/barricade/wooden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "bRN" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -3597,6 +3689,10 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/auto_turf/shale/layer2, /area/lv522/outdoors/w_rockies) +"bWv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "bWA" = ( /obj/structure/prop/ice_colony/flamingo{ dir = 4; @@ -3673,7 +3769,8 @@ /area/lv522/outdoors/colony_streets/central_streets) "bXU" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2 + dir = 2; + name = "\improper B-Block Bar" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -3863,6 +3960,11 @@ icon_state = "floor_plate" }, /area/lv522/atmos/sewer) +"cbb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset/full, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "cbn" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -4041,7 +4143,9 @@ }, /area/lv522/indoors/a_block/fitness) "cgG" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Cargo Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -4413,7 +4517,6 @@ }, /area/lv522/indoors/c_block/cargo) "cqL" = ( -/obj/structure/largecrate/random/barrel/white, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 @@ -4472,6 +4575,12 @@ icon_state = "marked" }, /area/lv522/atmos/east_reactor) +"csl" = ( +/obj/structure/barricade/plasteel/metal, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "csv" = ( /obj/structure/platform{ dir = 1 @@ -5214,6 +5323,17 @@ icon_state = "brown" }, /area/lv522/oob) +"cJc" = ( +/obj/item/prop/colony/used_flare, +/obj/structure/cargo_container/wy/right, +/turf/open/floor/plating, +/area/lv522/outdoors/colony_streets/north_east_street) +"cJg" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/asphalt/cement{ + icon_state = "cement9" + }, +/area/lv522/outdoors/colony_streets/north_street) "cJh" = ( /obj/structure/window/reinforced{ dir = 4 @@ -5576,6 +5696,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/garage) +"cQv" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) "cQB" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/pipes/standard/simple/hidden/green{ @@ -6284,7 +6408,7 @@ /obj/structure/surface/rack, /obj/item/device/analyzer, /obj/effect/landmark/objective_landmark/close, -/obj/item/stack/sandbags_empty/small_stack, +/obj/item/stack/sheet/cardboard/full_stack, /turf/open/floor/prison{ icon_state = "darkbrownfull2" }, @@ -6531,6 +6655,12 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/hallway) +"dhj" = ( +/obj/item/prop/colony/used_flare, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "dhH" = ( /turf/open/asphalt/cement{ icon_state = "cement12" @@ -6655,7 +6785,7 @@ pixel_x = -6; pixel_y = 6 }, -/obj/structure/largecrate/random, +/obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) @@ -6760,7 +6890,8 @@ /area/lv522/outdoors/colony_streets/north_west_street) "dlM" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper B-Block - Hydroponics Airlock" }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -7161,7 +7292,7 @@ "dtl" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; - name = "\improper Canteen"; + name = "\improper A-Block Canteen Airlock"; welded = 1 }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -7507,6 +7638,13 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/south_east_street) +"dBQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/prop/colony/used_flare, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "dCx" = ( /obj/structure/closet/crate/radiation, /turf/open/floor/corsat{ @@ -7669,7 +7807,9 @@ }, /area/lv522/indoors/c_block/mining) "dFE" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block - Colony Operations Centre Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -7760,7 +7900,6 @@ }, /area/lv522/atmos/east_reactor) "dHx" = ( -/obj/structure/largecrate/random/barrel/red, /obj/effect/decal/warning_stripes{ icon_state = "S" }, @@ -7987,7 +8126,8 @@ /area/lv522/indoors/a_block/kitchen/damage) "dMo" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper B-Block - Hydroponics Airlock" }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "LV_522_Hydro-Lockdown"; @@ -8316,6 +8456,11 @@ icon_state = "brown" }, /area/lv522/atmos/east_reactor/east) +"dSJ" = ( +/obj/structure/largecrate/random/secure, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "dSW" = ( /obj/structure/prop/invuln/overhead/flammable_pipe/fly{ dir = 1; @@ -8373,7 +8518,7 @@ "dUr" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; - name = "\improper Westlock"; + name = "\improper A-Block Dorms And Office Airlock"; welded = 1 }, /turf/open/floor/corsat{ @@ -9488,16 +9633,13 @@ }, /area/lv522/indoors/a_block/medical/glass) "eqb" = ( -/obj/structure/largecrate/random/mini{ - pixel_x = -8; - pixel_y = -8 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, /obj/effect/decal/warning_stripes{ icon_state = "W" }, +/obj/structure/barricade/deployable, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -9598,6 +9740,7 @@ /obj/structure/platform_decoration{ dir = 8 }, +/obj/item/stack/sheet/wood, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "esB" = ( @@ -9720,6 +9863,14 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/corpo/glass) +"evQ" = ( +/obj/structure/barricade/sandbags, +/obj/item/trash/uscm_mre{ + pixel_x = -8; + pixel_y = 10 + }, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/north_street) "evS" = ( /obj/structure/platform, /obj/structure/platform{ @@ -10445,6 +10596,14 @@ }, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"eLK" = ( +/obj/structure/tunnel/maint_tunnel{ + pixel_y = 6 + }, +/obj/structure/machinery/light/small, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "eLN" = ( /obj/structure/machinery/light, /turf/open/floor{ @@ -10751,6 +10910,12 @@ icon_state = "platebot" }, /area/lv522/indoors/c_block/cargo) +"eSM" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt/cement{ + icon_state = "cement9" + }, +/area/lv522/outdoors/colony_streets/north_street) "eSO" = ( /obj/structure/largecrate/random, /obj/structure/machinery/light{ @@ -10797,10 +10962,6 @@ /obj/structure/platform{ dir = 8 }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "UD6 East"; - indestructible = 1 - }, /turf/open/floor/plating, /area/lv522/landing_zone_forecon/UD6_Tornado) "eTQ" = ( @@ -11183,10 +11344,6 @@ /obj/structure/stairs/perspective{ icon_state = "p_stair_full" }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "UD6 East"; - indestructible = 1 - }, /turf/open/floor/plating, /area/lv522/landing_zone_forecon/UD6_Tornado) "fcd" = ( @@ -11618,7 +11775,8 @@ /area/lv522/indoors/a_block/security) "fmg" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper A-Block Corporate Office Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -11834,7 +11992,9 @@ }, /area/lv522/atmos/east_reactor/south) "frc" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "Sec-Kitchen-Lockdown"; @@ -11942,6 +12102,11 @@ }, /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/central_streets) +"fto" = ( +/obj/item/storage/belt/grenade, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/north_street) "fts" = ( /obj/structure/surface/table/woodentable/fancy, /obj/effect/decal/cleanable/dirt, @@ -12011,6 +12176,12 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/east) +"fvc" = ( +/obj/structure/barricade/sandbags, +/turf/open/asphalt/cement{ + icon_state = "cement14" + }, +/area/lv522/outdoors/colony_streets/north_street) "fvk" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -13092,6 +13263,12 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/admin) +"fRw" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "fRP" = ( /obj/structure/prop/vehicles/crawler{ layer = 3.3 @@ -13211,7 +13388,7 @@ "fTK" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Corporation Dome"; + name = "\improper A-Block Corporate Office Airlock"; req_access_txt = "100" }, /turf/open/floor/corsat{ @@ -13239,6 +13416,12 @@ icon_state = "plate" }, /area/lv522/atmos/cargo_intake) +"fUc" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement15" + }, +/area/lv522/outdoors/colony_streets/north_street) "fUf" = ( /obj/effect/decal{ icon = 'icons/mob/xenos/effects.dmi'; @@ -13261,6 +13444,15 @@ }, /turf/open/floor/wood, /area/lv522/indoors/a_block/executive) +"fUQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "fUT" = ( /obj/structure/prop/server_equipment/yutani_server{ density = 0; @@ -13927,6 +14119,18 @@ icon_state = "squares" }, /area/lv522/atmos/east_reactor/east) +"ghE" = ( +/obj/item/clothing/head/helmet/marine/grenadier{ + armor_bullet = 10; + desc = "Pairs with the M3-G4 heavy grenadier plating. A distant cousin of the experimental B18 defensive helmet. Decorated with a blue stripe the large hole in the side of this helmet somewhat limits its protection."; + name = "\improper damaged M3-G4 grenadier helmet"; + pixel_x = 3; + pixel_y = 13 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "gib" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/stairs/perspective{ @@ -14379,6 +14583,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) +"gsn" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/vehicle/train/cargo/engine, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "gsM" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -14563,16 +14774,45 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/security) +"gvK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/uscm_mre{ + pixel_x = -12; + pixel_y = 7 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "gvT" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/fitness) +"gvU" = ( +/obj/structure/prop/invuln/minecart_tracks, +/obj/structure/closet/crate/miningcar{ + layer = 3.1; + name = "\improper materials storage bin"; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/ore/slag, +/obj/item/ore/slag, +/obj/item/ore/slag, +/obj/item/ore/slag, +/turf/open/floor/prison, +/area/lv522/indoors/c_block/mining) "gwb" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/corpo) "gwg" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "LV_522_Hydro-Lockdown"; name = "\improper Storm Shutters" @@ -14623,6 +14863,18 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/security) +"gwU" = ( +/obj/structure/barricade/sandbags{ + dir = 8 + }, +/obj/item/prop/alien/hugger{ + pixel_x = 13; + pixel_y = -5 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "gxb" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -14642,9 +14894,10 @@ }, /area/lv522/atmos/command_centre) "gxe" = ( -/obj/item/stack/sandbags_empty/small_stack, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/indoors/b_block/bridge) +/obj/effect/decal/cleanable/blood, +/obj/effect/spawner/gibspawner/human, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "gxl" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC, @@ -15343,7 +15596,9 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/security) "gLw" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "Sec-Corpo-Bridge-Lockdown" @@ -15352,6 +15607,13 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/security) +"gLy" = ( +/obj/structure/surface/table/almayer, +/obj/item/map/lv522_map, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "gLK" = ( /obj/structure/stairs/perspective{ icon_state = "p_stair_full" @@ -15420,6 +15682,11 @@ icon_state = "cement9" }, /area/lv522/outdoors/colony_streets/south_west_street) +"gMT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "gMV" = ( /obj/structure/machinery/light{ dir = 1 @@ -15636,7 +15903,7 @@ /area/lv522/indoors/c_block/cargo) "gRi" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/metal/large_stack, +/obj/item/stack/sheet/metal/medium_stack, /obj/item/ore/uranium, /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, @@ -15648,6 +15915,10 @@ /obj/item/prop/colony/used_flare, /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"gRl" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) "gRp" = ( /obj/structure/machinery/floodlight/landing, /turf/open/floor/prison{ @@ -15684,6 +15955,11 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/admin) +"gRS" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "gRU" = ( /obj/item/paper_bin/uscm{ pixel_x = -7; @@ -15798,6 +16074,13 @@ icon_state = "kitchen" }, /area/lv522/indoors/a_block/kitchen) +"gUT" = ( +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -12; + pixel_y = 25 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "gUY" = ( /obj/item/prop/alien/hugger, /obj/effect/decal/cleanable/vomit, @@ -16296,6 +16579,7 @@ /area/lv522/atmos/east_reactor/east) "hbO" = ( /obj/structure/largecrate/random/case/small, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) "hcv" = ( @@ -16328,6 +16612,7 @@ dir = 10; icon_state = "p_stair_full" }, +/obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "hcO" = ( @@ -16345,6 +16630,9 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 11 + }, /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_street) "hcZ" = ( @@ -16987,7 +17275,6 @@ /area/lv522/atmos/west_reactor) "hnG" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Corporation Dome"; req_access_txt = "100" }, /turf/open/floor/corsat{ @@ -16996,7 +17283,8 @@ /area/lv522/atmos/way_in_command_centre) "hnX" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2 + dir = 2; + name = "\improper A-Block Dorms And Office Airlock" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -17101,7 +17389,7 @@ "hpO" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; - name = "\improper Engineering Hut" + name = "\improper Emergency Engineering" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -17117,10 +17405,6 @@ /area/lv522/indoors/a_block/dorm_north) "hqr" = ( /obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool/hugetank{ - pixel_x = 8; - pixel_y = 7 - }, /obj/item/tool/weldpack{ pixel_y = 2 }, @@ -18416,7 +18700,8 @@ /area/lv522/atmos/way_in_command_centre) "hPT" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2 + dir = 2; + name = "\improper A-Block - Colony Operations Centre Airlock" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -18862,12 +19147,6 @@ name = "Display synthetic" }, /obj/structure/window/reinforced, -/obj/item/clothing/under/marine/veteran/pmc, -/obj/item/clothing/mask/gas/pmc, -/obj/item/clothing/head/helmet/marine/veteran/pmc/leader{ - layer = 3.1; - pixel_y = 10 - }, /obj/structure/sign/safety/synth_storage{ pixel_x = 23; pixel_y = 29 @@ -18956,6 +19235,16 @@ icon_state = "plate" }, /area/lv522/atmos/filt) +"iaD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "iaM" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/rods, @@ -18996,6 +19285,10 @@ icon_state = "23" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"ibS" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "ibT" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -19437,6 +19730,15 @@ icon_state = "wood" }, /area/lv522/indoors/b_block/bar) +"ikp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/item/stack/folding_barricade, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "ikr" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 @@ -19942,6 +20244,7 @@ /area/lv522/indoors/a_block/admin) "iuQ" = ( /obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Cargo Airlock"; welded = 1 }, /turf/open/floor/corsat{ @@ -19979,6 +20282,16 @@ /obj/item/tool/wet_sign, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"ivs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "ivy" = ( /obj/structure/surface/rack, /obj/item/tool/pickaxe/jackhammer, @@ -20006,6 +20319,12 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"ivY" = ( +/obj/item/prop/colony/used_flare, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "iwb" = ( /obj/structure/stairs/perspective{ dir = 6; @@ -20250,7 +20569,9 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/dorm_north) "iBd" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Garage Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ icon_state = "marked" @@ -20400,6 +20721,13 @@ icon_state = "floor_marked" }, /area/lv522/atmos/cargo_intake) +"iFe" = ( +/obj/structure/closet/crate, +/obj/item/weapon/stunprod, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/landing_zone_2) "iFk" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -20815,6 +21143,9 @@ icon_state = "N"; pixel_y = 1 }, +/obj/structure/barricade/metal{ + dir = 1 + }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -21682,7 +22013,9 @@ }, /area/lv522/atmos/cargo_intake) "jdI" = ( -/obj/structure/machinery/door/airlock/almayer/generic, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Radio Tower Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -21701,6 +22034,12 @@ icon_state = "browncorner" }, /area/lv522/atmos/east_reactor/south) +"jeh" = ( +/obj/item/stack/sandbags/small_stack, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "jey" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, @@ -21997,7 +22336,7 @@ /area/lv522/atmos/cargo_intake) "jjc" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Greenhouse Storage" + name = "\improper Electronics Storage" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -22407,6 +22746,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/garage) +"joV" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "jpa" = ( /obj/structure/bedsheetbin{ pixel_y = 7 @@ -22419,6 +22764,9 @@ /area/lv522/indoors/a_block/fitness) "jpb" = ( /obj/structure/closet/crate, +/obj/item/storage/pouch/shotgun/large/slug, +/obj/item/storage/pouch/general/large/m39ap, +/obj/item/storage/pouch/flamertank, /turf/open/floor/prison, /area/lv522/landing_zone_2) "jpc" = ( @@ -22484,7 +22832,7 @@ /area/lv522/landing_zone_1) "jqV" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Corporation Dome"; + name = "\improper A-Block Corporate Office Airlock"; req_access_txt = "100" }, /turf/open/floor/corsat{ @@ -22638,8 +22986,9 @@ /area/lv522/indoors/a_block/corpo/glass) "jub" = ( /obj/structure/machinery/floodlight, -/turf/open/floor/prison{ - icon_state = "floor_plate" +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" }, /area/lv522/indoors/lone_buildings/storage_blocks) "jud" = ( @@ -22764,6 +23113,7 @@ /area/lv522/indoors/c_block/cargo) "jwO" = ( /obj/structure/largecrate/random/barrel/blue, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) "jwT" = ( @@ -22967,6 +23317,16 @@ }, /turf/open/floor/plating, /area/lv522/indoors/a_block/admin) +"jAA" = ( +/obj/structure/barricade/handrail{ + dir = 8 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/prison{ + dir = 8; + icon_state = "cell_stripe" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "jAI" = ( /obj/effect/decal/cleanable/dirt, /mob/living/simple_animal/mouse, @@ -23658,15 +24018,6 @@ /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) -"jNk" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Westlock" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorms) "jNv" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/strata{ @@ -23767,7 +24118,9 @@ /turf/open/floor/plating, /area/lv522/oob) "jPd" = ( -/obj/structure/machinery/door/airlock/almayer/generic, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; id = "LV_522_Hydro-Lockdown"; @@ -24607,9 +24960,15 @@ }, /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/colony_streets/north_east_street) +"keA" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_street) "kfa" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Colony Marshals" + name = "\improper A-Block Security Airlock" }, /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -25955,6 +26314,15 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"kCQ" = ( +/obj/structure/largecrate/random, +/obj/item/explosive/plastic/breaching_charge{ + pixel_y = -2 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "kDH" = ( /obj/structure/machinery/disposal, /turf/open/floor/prison{ @@ -26766,6 +27134,13 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/admin) +"kSh" = ( +/obj/structure/closet/crate, +/obj/item/storage/pouch/pressurized_reagent_canister/revival, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "kSm" = ( /obj/structure/machinery/light{ dir = 8 @@ -27210,6 +27585,13 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/kitchen/damage) +"lae" = ( +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "lag" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/power/apc/weak{ @@ -27239,7 +27621,8 @@ /area/lv522/indoors/a_block/admin) "laB" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper A-Block - Colony Operations Centre Airlock" }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -27557,6 +27940,10 @@ icon_state = "plate" }, /area/lv522/atmos/cargo_intake) +"lgR" = ( +/obj/structure/largecrate/random/secure, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "lgY" = ( /obj/structure/platform_decoration{ dir = 1 @@ -27726,6 +28113,7 @@ /area/lv522/atmos/cargo_intake) "lkr" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Casino Airlock"; welded = 1 }, /turf/open/floor/corsat{ @@ -27971,6 +28359,11 @@ icon_state = "blue1" }, /area/lv522/outdoors/colony_streets/windbreaker/observation) +"loX" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "lpi" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -28163,14 +28556,6 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) -"ltI" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Westlock" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/dorms) "lui" = ( /obj/effect/decal/cleanable/blood/drip, /obj/structure/pipes/standard/simple/hidden/green{ @@ -28782,6 +29167,16 @@ icon_state = "brown" }, /area/lv522/atmos/filt) +"lFM" = ( +/obj/structure/prop/invuln/pipe_water{ + pixel_x = 3; + pixel_y = 10 + }, +/obj/structure/prop/invuln/overhead_pipe{ + pixel_y = -6 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "lFO" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -29034,10 +29429,7 @@ }, /area/lv522/indoors/a_block/admin) "lKH" = ( -/obj/structure/machinery/colony_floodlight{ - layer = 4.3; - pixel_y = 9 - }, +/obj/structure/machinery/colony_floodlight, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -29255,6 +29647,15 @@ }, /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) +"lQA" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "lQS" = ( /obj/structure/prop/vehicles/crawler{ dir = 8; @@ -29263,6 +29664,16 @@ }, /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/nw_rockies) +"lRi" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = -12; + pixel_y = -1 + }, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "lRx" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/sriracha{ @@ -29414,7 +29825,9 @@ /turf/open/floor/prison, /area/lv522/indoors/b_block/hydro) "lUy" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Shared Dorms Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -29924,7 +30337,8 @@ /area/lv522/indoors/a_block/fitness) "mfS" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper C-Block - Casino Airlock" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -30036,7 +30450,7 @@ /area/lv522/outdoors/colony_streets/south_east_street) "mji" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Corporation Dome"; + name = "\improper A-Block Corporate Office Airlock"; req_access_txt = "100" }, /turf/open/floor/corsat{ @@ -30156,7 +30570,9 @@ }, /area/lv522/indoors/a_block/security) "mkT" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -30243,11 +30659,15 @@ }, /area/lv522/atmos/reactor_garage) "mlY" = ( -/obj/structure/largecrate/random, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/item/prop/alien/hugger{ + pixel_x = -7; + pixel_y = -5 + }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -30796,6 +31216,11 @@ icon_state = "floor_plate" }, /area/lv522/outdoors/colony_streets/south_west_street) +"mwn" = ( +/obj/structure/largecrate/random/barrel/white, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) "mwp" = ( /obj/effect/spawner/random/tool, /turf/open/auto_turf/sand_white/layer0, @@ -31133,6 +31558,14 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms/glass) +"mEn" = ( +/obj/structure/surface/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/sheet/metal/medium_stack, +/turf/open/floor/prison{ + icon_state = "darkbrownfull2" + }, +/area/lv522/indoors/c_block/garage) "mEp" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light{ @@ -31299,6 +31732,12 @@ icon_state = "E"; pixel_x = 1 }, +/obj/structure/reagent_dispensers/fueltank{ + layer = 2.9 + }, +/obj/structure/barricade/metal{ + dir = 4 + }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -31420,6 +31859,14 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/admin) +"mKK" = ( +/obj/structure/barricade/deployable{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "mKN" = ( /obj/structure/cargo_container/kelland/left, /turf/open/floor/corsat{ @@ -31774,6 +32221,7 @@ /area/lv522/indoors/a_block/dorms) "mPQ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Dorms And Office Airlock"; welded = 1 }, /obj/structure/pipes/standard/simple/hidden/green, @@ -31787,6 +32235,11 @@ }, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms/glass) +"mPV" = ( +/obj/structure/largecrate/random/barrel, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "mPY" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/xeno_spawn, @@ -31821,7 +32274,9 @@ }, /area/lv522/landing_zone_2/ceiling) "mQo" = ( -/obj/structure/largecrate/random/barrel/green, +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/north_street) "mQq" = ( @@ -32321,6 +32776,16 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/c_block/mining) +"naM" = ( +/obj/item/explosive/grenade/high_explosive/m15{ + pixel_x = 8 + }, +/obj/item/prop/alien/hugger{ + pixel_x = -7; + pixel_y = -5 + }, +/turf/open/floor/prison, +/area/lv522/outdoors/colony_streets/north_street) "naN" = ( /obj/item/stack/rods, /obj/structure/machinery/light{ @@ -32434,7 +32899,6 @@ }, /area/lv522/outdoors/colony_streets/south_street) "ncs" = ( -/obj/structure/largecrate/random/barrel/white, /obj/effect/decal/warning_stripes{ icon_state = "S" }, @@ -32829,6 +33293,11 @@ icon_state = "greenfull" }, /area/lv522/indoors/a_block/fitness) +"nkm" = ( +/obj/item/prop/alien/hugger, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "nkt" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/cleanable/dirt, @@ -32896,7 +33365,6 @@ "nlO" = ( /obj/structure/closet/crate, /obj/item/stack/sheet/metal/large_stack, -/obj/item/stack/sheet/metal/large_stack, /turf/open/floor/plating{ icon_state = "platebot" }, @@ -32984,7 +33452,7 @@ "nmL" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; - name = "\improper Colony Kitchen" + name = "\improper A-Block Kitchen Airlock" }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -33447,7 +33915,9 @@ /area/lv522/indoors/a_block/security) "nue" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "LV_522_Hydro-Lockdown"; name = "\improper Storm Shutters" @@ -33517,6 +33987,12 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/bridges/op_centre) +"nvA" = ( +/turf/open/floor/plating{ + dir = 8; + icon_state = "platingdmg3" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "nvB" = ( /obj/structure/cargo_container/kelland/right, /turf/open/auto_turf/shale/layer1, @@ -33769,6 +34245,10 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/garden_bridge) +"nDo" = ( +/obj/item/prop/colony/used_flare, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "nDt" = ( /obj/structure/platform_decoration{ dir = 4 @@ -33881,7 +34361,9 @@ /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/w_rockies) "nFQ" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "LV_522_Hydro-Lockdown"; name = "\improper Storm Shutters" @@ -33962,6 +34444,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"nHM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "nHT" = ( /obj/structure/bed/chair, /obj/structure/machinery/light{ @@ -34091,6 +34579,13 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"nKZ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "nLe" = ( /obj/structure/machinery/vending/cola, /obj/effect/decal/cleanable/cobweb2, @@ -34207,10 +34702,10 @@ }, /area/lv522/outdoors/colony_streets/north_street) "nMP" = ( -/obj/structure/largecrate/random/secure, /obj/effect/decal/warning_stripes{ icon_state = "W" }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -34682,6 +35177,7 @@ pixel_y = 6 }, /obj/structure/largecrate/random/case/small, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) "nUO" = ( @@ -34889,7 +35385,8 @@ /area/lv522/indoors/c_block/garage) "nXI" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper B-Block - Hydroponics Airlock" }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -35008,7 +35505,6 @@ /obj/effect/landmark/objective_landmark/close, /obj/structure/closet/crate, /obj/item/stack/sheet/plasteel/large_stack, -/obj/item/stack/sheet/plasteel/large_stack, /turf/open/floor/plating{ icon_state = "platebot" }, @@ -35029,7 +35525,7 @@ /area/lv522/indoors/a_block/fitness) "nZx" = ( /obj/structure/closet/crate, -/obj/item/stack/sheet/plasteel/medium_stack, +/obj/item/stack/sheet/plasteel/small_stack, /obj/item/ore/uranium, /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison{ @@ -35156,11 +35652,9 @@ }, /area/lv522/indoors/a_block/kitchen) "odi" = ( -/obj/structure/largecrate/random/barrel/white, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/colony_streets/north_street) +/obj/effect/spawner/gibspawner/human, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/w_rockies) "odt" = ( /obj/structure/window_frame/strata, /obj/item/stack/rods, @@ -35475,10 +35969,7 @@ /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/bridges/op_centre) "oik" = ( -/obj/structure/machinery/colony_floodlight{ - layer = 4.3; - pixel_y = 9 - }, +/obj/structure/machinery/colony_floodlight, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -35685,6 +36176,13 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/hallway) +"omv" = ( +/obj/structure/prop/invuln/overhead_pipe{ + pixel_y = -6 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "omG" = ( /obj/structure/surface/table/almayer, /obj/item/device/flashlight/lamp{ @@ -35763,11 +36261,10 @@ }, /area/lv522/indoors/a_block/dorms) "oow" = ( -/obj/structure/largecrate/random/barrel/yellow, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/colony_streets/north_street) +/obj/effect/spawner/gibspawner/human, +/obj/item/device/defibrillator/compact, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/w_rockies) "ooG" = ( /obj/structure/machinery/power/apc/weak{ dir = 1 @@ -36037,10 +36534,7 @@ }, /area/lv522/atmos/sewer) "otC" = ( -/obj/structure/machinery/colony_floodlight{ - layer = 4.3; - pixel_y = 9 - }, +/obj/structure/machinery/colony_floodlight, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -36110,6 +36604,10 @@ }, /turf/open/gm/river, /area/lv522/outdoors/colony_streets/south_street) +"ous" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "ouv" = ( /obj/structure/pipes/vents/pump, /obj/structure/machinery/camera/autoname, @@ -36161,6 +36659,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/c_block/casino) +"ovB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/item/trash/uscm_mre, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "ovT" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -36492,6 +36999,7 @@ pixel_x = -6; pixel_y = 6 }, +/obj/structure/closet/firecloset/full, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "oDj" = ( @@ -36968,6 +37476,12 @@ icon_state = "brown" }, /area/lv522/atmos/north_command_centre) +"oMO" = ( +/obj/structure/tent/big, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "oNd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table/reinforced/prison, @@ -37105,11 +37619,11 @@ /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) "oQV" = ( -/obj/structure/largecrate/random/barrel/green, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, +/obj/item/stack/sandbags/small_stack, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -37500,7 +38014,7 @@ /area/lv522/indoors/a_block/admin) "oXV" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - name = "\improper Greenhouse Storage" + name = "\improper Electronics Storage" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -38352,6 +38866,10 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/casino) +"pqk" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "pqA" = ( /obj/structure/surface/table/almayer, /obj/effect/landmark/objective_landmark/close, @@ -38401,11 +38919,26 @@ icon_state = "blue" }, /area/lv522/indoors/a_block/hallway) +"pqX" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/item/lightstick/red/spoke/planted{ + pixel_x = 9; + pixel_y = 25 + }, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "pqZ" = ( /turf/closed/shuttle/dropship2/tornado/typhoon{ icon_state = "102" }, /area/lv522/landing_zone_forecon/UD6_Typhoon) +"prs" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/obj/effect/spawner/gibspawner/xeno, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "prD" = ( /turf/closed/shuttle/dropship2/tornado{ icon_state = "5" @@ -38588,7 +39121,9 @@ /area/lv522/atmos/east_reactor/south) "pvE" = ( /obj/structure/pipes/standard/simple/hidden/green, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Cargo Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -38617,10 +39152,9 @@ /obj/structure/machinery/light{ dir = 8 }, -/obj/item/stack/sheet/metal/large_stack, /obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/metal/medium_stack, +/obj/item/storage/pouch/medkit/full_advanced, /turf/open/floor/prison{ dir = 10; icon_state = "floor_marked" @@ -38702,6 +39236,15 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/auto_turf/shale/layer1, /area/lv522/outdoors/colony_streets/central_streets) +"pxp" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Dorms And Office Airlock" + }, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/dorms) "pxN" = ( /obj/structure/surface/table/almayer, /turf/open/floor/prison{ @@ -39034,7 +39577,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/obj/structure/machinery/door/airlock/almayer/generic, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper A-Block Fitness Centre Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -39458,7 +40003,7 @@ "pLN" = ( /obj/structure/machinery/door/airlock/almayer/medical{ dir = 2; - name = "Medical Airlock" + name = "\improper A-Block - Colony Medical Centre Airlock" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -39493,6 +40038,7 @@ /obj/structure/platform_decoration{ dir = 4 }, +/obj/item/stack/sheet/metal, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "pMd" = ( @@ -39527,7 +40073,7 @@ "pMt" = ( /obj/structure/machinery/door/airlock/almayer/medical{ dir = 2; - name = "Medical Airlock" + name = "\improper A-Block - Colony Medical Centre Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -39828,9 +40374,14 @@ icon_state = "brown" }, /area/lv522/atmos/cargo_intake) +"pSh" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "pSj" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper B-Block - Hydroponics Airlock" }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -40159,7 +40710,6 @@ /area/lv522/indoors/b_block/bridge) "pXH" = ( /obj/effect/alien/weeds/node/alpha, -/obj/effect/alien/egg/alpha, /turf/open/auto_turf/sand_white/layer0, /area/lv522/outdoors/w_rockies) "pYf" = ( @@ -40363,7 +40913,8 @@ /area/lv522/outdoors/colony_streets/central_streets) "qbL" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper A-Block Dorms And Office Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -40471,6 +41022,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/lv522/indoors/c_block/casino) +"qdV" = ( +/obj/structure/barricade/sandbags{ + dir = 8 + }, +/obj/item/trash/uscm_mre, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "qer" = ( /obj/structure/prop/invuln/minecart_tracks{ layer = 2.6 @@ -40561,6 +41121,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/south) +"qhk" = ( +/obj/structure/girder, +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) "qhm" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -41410,6 +41974,10 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"qxe" = ( +/obj/item/prop/colony/used_flare, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/north_street) "qxf" = ( /obj/effect/decal/cleanable/dirt, /turf/closed/wall/strata_outpost, @@ -41712,6 +42280,10 @@ /obj/item/trash/plate, /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) +"qBH" = ( +/obj/structure/cargo_container/wy/left, +/turf/open/floor/plating, +/area/lv522/outdoors/colony_streets/north_east_street) "qBQ" = ( /obj/structure/prop/invuln/ice_prefab/standalone/trim{ icon_state = "white_trim" @@ -42514,7 +43086,9 @@ /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "qPS" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Corporate Office Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -43803,6 +44377,18 @@ icon_state = "cement3" }, /area/lv522/outdoors/colony_streets/central_streets) +"rjD" = ( +/obj/item/tool/lighter/zippo{ + layer = 3.1; + pixel_x = 12; + pixel_y = 18 + }, +/obj/effect/spawner/gibspawner/xeno, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "rjJ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -43859,6 +44445,7 @@ /area/lv522/outdoors/colony_streets/windbreaker/observation) "rlE" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Security Airlock"; welded = 1 }, /turf/open/floor/corsat{ @@ -43900,6 +44487,22 @@ icon_state = "radiator_tile2" }, /area/lv522/indoors/a_block/bridges) +"rmk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/item/weapon/gun/launcher/grenade/m81/m79, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) +"rmm" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "rmp" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating, @@ -44002,6 +44605,10 @@ icon_state = "cement12" }, /area/lv522/landing_zone_1) +"rnX" = ( +/obj/structure/largecrate/random/barrel, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "rod" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, @@ -44544,7 +45151,7 @@ }, /area/lv522/indoors/a_block/hallway) "ryb" = ( -/obj/structure/largecrate/random/barrel/red, +/obj/item/prop/colony/used_flare, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -44601,7 +45208,7 @@ }, /area/lv522/landing_zone_1) "ryW" = ( -/obj/structure/largecrate/random/secure, +/obj/item/stack/sandbags_empty/small_stack, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -44662,10 +45269,6 @@ /obj/structure/platform{ dir = 4 }, -/obj/structure/machinery/door/poddoor/shutters/almayer{ - id = "UD6 East"; - indestructible = 1 - }, /turf/open/floor/plating, /area/lv522/landing_zone_forecon/UD6_Tornado) "rAu" = ( @@ -44705,6 +45308,12 @@ }, /turf/open/auto_turf/sand_white/layer0, /area/lv522/landing_zone_2) +"rBg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement4" + }, +/area/lv522/outdoors/colony_streets/north_street) "rBy" = ( /obj/effect/landmark/objective_landmark/medium, /obj/effect/decal/cleanable/dirt, @@ -44841,10 +45450,7 @@ }, /area/lv522/indoors/c_block/t_comm) "rEo" = ( -/obj/structure/machinery/colony_floodlight{ - layer = 4.3; - pixel_y = 9 - }, +/obj/structure/machinery/colony_floodlight, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -45047,7 +45653,9 @@ }, /area/lv522/outdoors/colony_streets/south_west_street) "rJz" = ( -/obj/structure/machinery/door/airlock/almayer/generic, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper A-Block Fitness Centre Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -45060,6 +45668,17 @@ /obj/item/stack/rods, /turf/open/floor/plating, /area/lv522/indoors/c_block/cargo) +"rJG" = ( +/obj/structure/barricade/deployable{ + dir = 1 + }, +/obj/structure/barricade/deployable{ + dir = 8 + }, +/turf/open/asphalt/cement{ + icon_state = "cement2" + }, +/area/lv522/outdoors/colony_streets/north_street) "rJH" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/green, @@ -45456,6 +46075,7 @@ /area/lv522/indoors/b_block/bar) "rRc" = ( /obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Cargo Airlock"; welded = 1 }, /obj/structure/pipes/standard/simple/hidden/green{ @@ -45610,6 +46230,17 @@ icon_state = "floor_plate" }, /area/lv522/indoors/b_block/bar) +"rSQ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/uscm_mre, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "rSW" = ( /obj/structure/prop/ice_colony/dense/planter_box{ dir = 8 @@ -45677,6 +46308,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/prison, /area/lv522/indoors/a_block/admin) +"rUJ" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper A-Block Security Airlock" + }, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Sec-Kitchen-Lockdown"; + name = "\improper Storm Shutters" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/a_block/kitchen) "rUX" = ( /obj/structure/shuttle/engine/heater{ dir = 4; @@ -45832,14 +46477,9 @@ /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/north_street) "rYp" = ( -/obj/structure/largecrate/random/mini{ - pixel_x = 10; - pixel_y = 4 - }, -/turf/open/floor/prison{ - icon_state = "floor_plate" - }, -/area/lv522/outdoors/colony_streets/north_street) +/obj/effect/spawner/gibspawner/human, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "rYq" = ( /obj/structure/platform, /obj/structure/platform{ @@ -45948,6 +46588,8 @@ "sau" = ( /obj/structure/closet/crate, /obj/effect/decal/cleanable/dirt, +/obj/item/tank/emergency_oxygen/double, +/obj/item/tank/emergency_oxygen/double, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -46525,6 +47167,7 @@ "skn" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; + name = "\improper A-Block Dorms And Office Airlock"; welded = 1 }, /obj/structure/pipes/standard/simple/hidden/green, @@ -46546,7 +47189,8 @@ /area/lv522/landing_zone_forecon/UD6_Tornado) "skQ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper A-Block Fitness Centre Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -46715,10 +47359,7 @@ "snI" = ( /obj/structure/machinery/floodlight, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/prison{ - dir = 4; - icon_state = "cell_stripe" - }, +/turf/open/floor/plating, /area/lv522/indoors/lone_buildings/storage_blocks) "snP" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -46872,6 +47513,12 @@ icon_state = "cement15" }, /area/lv522/outdoors/colony_streets/central_streets) +"sqr" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "sqH" = ( /obj/structure/machinery/door_display/research_cell{ dir = 8; @@ -47120,7 +47767,8 @@ /area/lv522/atmos/east_reactor) "swf" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper C-Block - Cargo Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -47778,6 +48426,14 @@ /obj/item/key/cargo_train, /turf/open/floor/prison, /area/lv522/indoors/c_block/cargo) +"sJP" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "sKa" = ( /obj/effect/decal/cleanable/blood/xeno, /turf/open/asphalt/cement{ @@ -47979,8 +48635,8 @@ /turf/open/floor/plating, /area/lv522/indoors/c_block/garage) "sLT" = ( -/obj/structure/largecrate/random/case, /obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "sLU" = ( @@ -48560,10 +49216,13 @@ }, /area/lv522/indoors/c_block/cargo) "sUN" = ( -/obj/structure/largecrate/random/barrel/yellow, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/barricade/deployable, +/obj/item/weapon/gun/rifle/m41a{ + current_mag = null + }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -49256,6 +49915,13 @@ icon_state = "cement1" }, /area/lv522/landing_zone_2) +"tkC" = ( +/obj/structure/stairs/perspective{ + icon_state = "p_stair_full" + }, +/obj/structure/largecrate/random, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "tkL" = ( /obj/structure/prop/server_equipment/yutani_server{ density = 0; @@ -49319,8 +49985,19 @@ /obj/structure/platform, /turf/open/gm/river, /area/lv522/landing_zone_1/tunnel) +"tlF" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/prison{ + icon_state = "floor_plate" + }, +/area/lv522/outdoors/colony_streets/north_street) "tlM" = ( -/obj/structure/machinery/door/airlock/almayer/generic, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Garage Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -49353,6 +50030,7 @@ /area/lv522/indoors/a_block/fitness) "tms" = ( /obj/structure/largecrate/random, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) "tmy" = ( @@ -49366,6 +50044,7 @@ /area/lv522/indoors/b_block/bridge) "tmA" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock"; welded = 1 }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -49591,7 +50270,9 @@ }, /area/lv522/atmos/east_reactor/south) "tqG" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block - Colony Operations Centre Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 1 }, @@ -50160,15 +50841,6 @@ icon_state = "whitegreenfull" }, /area/lv522/indoors/a_block/fitness) -"tBT" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1; - name = "\improper Eastlock" - }, -/turf/open/floor/corsat{ - icon_state = "marked" - }, -/area/lv522/indoors/a_block/hallway) "tCa" = ( /obj/item/trash/uscm_mre{ pixel_x = 10; @@ -50230,7 +50902,8 @@ /area/lv522/landing_zone_forecon/UD6_Tornado) "tDq" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper A-Block Fitness Centre Airlock" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -50399,6 +51072,12 @@ }, /turf/open/floor/wood, /area/lv522/indoors/c_block/casino) +"tFC" = ( +/obj/structure/barricade/wooden{ + dir = 1 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "tFZ" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin{ @@ -50433,7 +51112,7 @@ /area/lv522/outdoors/colony_streets/north_street) "tGm" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Corporate Liason" + name = "\improper Corporate Liason Office " }, /turf/open/floor/corsat{ icon_state = "marked" @@ -50550,6 +51229,11 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/east_central_street) +"tIQ" = ( +/obj/structure/barricade/sandbags, +/obj/effect/decal/cleanable/dirt, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "tIT" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -50993,7 +51677,7 @@ "tQE" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; - name = "\improper Canteen" + name = "\improper A-Block Canteen Airlock" }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 4; @@ -51017,6 +51701,10 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/bridges) +"tRu" = ( +/obj/structure/cargo_container/wy/mid, +/turf/open/floor/plating, +/area/lv522/outdoors/colony_streets/north_east_street) "tRI" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/wooden_tv{ @@ -51065,6 +51753,10 @@ icon_state = "73" }, /area/lv522/landing_zone_forecon/UD6_Tornado) +"tSF" = ( +/obj/item/trash/uscm_mre, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "tSJ" = ( /obj/structure/machinery/light/double{ dir = 8; @@ -51238,6 +51930,14 @@ icon_state = "cement4" }, /area/lv522/outdoors/colony_streets/north_east_street) +"tWy" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "tWC" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/prison{ @@ -51328,6 +52028,7 @@ dir = 6; icon_state = "p_stair_full" }, +/obj/structure/largecrate/random/barrel, /turf/open/floor/plating, /area/lv522/landing_zone_1/tunnel) "tXW" = ( @@ -52160,7 +52861,8 @@ /area/lv522/indoors/c_block/cargo) "unE" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2 + dir = 2; + name = "\improper A-Block - Colony Operations Centre Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -52573,6 +53275,13 @@ icon_state = "white_cyan1" }, /area/lv522/indoors/a_block/corpo/glass) +"uuy" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/obj/effect/spawner/gibspawner/xeno, +/turf/open/asphalt/cement, +/area/lv522/outdoors/colony_streets/north_street) "uuA" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/space_heater/radiator/red{ @@ -52656,6 +53365,12 @@ icon_state = "white_cyan3" }, /area/lv522/indoors/a_block/medical/glass) +"uvJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "uwb" = ( /obj/structure/machinery/light/double, /turf/open/asphalt/cement{ @@ -52749,6 +53464,14 @@ /area/lv522/indoors/c_block/garage) "uye" = ( /obj/structure/largecrate/random, +/obj/item/storage/box/packet/high_explosive{ + pixel_x = -5; + pixel_y = -14 + }, +/obj/item/storage/pill_bottle/packet/oxycodone{ + pixel_x = -1; + pixel_y = 8 + }, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -52931,7 +53654,10 @@ /turf/open/floor/corsat, /area/lv522/atmos/east_reactor/east) "uDF" = ( -/obj/structure/largecrate/random, +/obj/item/trash/uscm_mre{ + pixel_x = 12; + pixel_y = -7 + }, /turf/open/floor/prison, /area/lv522/outdoors/colony_streets/north_street) "uDM" = ( @@ -52961,6 +53687,13 @@ }, /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/b_block/bridge) +"uEj" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "uEl" = ( /obj/structure/machinery/conveyor{ dir = 10; @@ -53383,6 +54116,11 @@ icon_state = "marked" }, /area/lv522/indoors/a_block/kitchen/glass) +"uKk" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/case, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "uKw" = ( /obj/structure/bed/chair{ dir = 1 @@ -53713,6 +54451,13 @@ icon_state = "floor_plate" }, /area/lv522/indoors/c_block/mining) +"uQa" = ( +/obj/item/trash/uscm_mre, +/obj/structure/surface/table/almayer, +/turf/open/asphalt/cement{ + icon_state = "cement3" + }, +/area/lv522/outdoors/colony_streets/north_street) "uQf" = ( /obj/structure/platform{ dir = 1 @@ -53883,7 +54628,7 @@ "uSI" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; - name = "\improper Corporate Liason" + name = "\improper A-Block Corporate Office Airlock" }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ @@ -54066,6 +54811,9 @@ icon_state = "floor_marked" }, /area/lv522/landing_zone_1) +"uVS" = ( +/turf/open/floor/plating, +/area/lv522/indoors/lone_buildings/storage_blocks) "uVU" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/wy{ @@ -54479,6 +55227,10 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"veA" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "veD" = ( /obj/structure/surface/rack, /obj/structure/machinery/light{ @@ -54660,7 +55412,7 @@ "vil" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; - name = "\improper Colony Marshals" + name = "\improper A-Block Security Airlock" }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -54925,7 +55677,9 @@ }, /area/lv522/indoors/a_block/fitness) "vmp" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Casino Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -54947,6 +55701,12 @@ icon_state = "darkbrownfull2" }, /area/lv522/indoors/c_block/cargo) +"vmM" = ( +/obj/structure/girder, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "vmQ" = ( /obj/structure/prop/invuln/ice_prefab/trim{ dir = 6 @@ -55000,7 +55760,8 @@ /area/lv522/indoors/a_block/bridges/op_centre) "vnB" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper A-Block Corporate Office Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -55415,6 +56176,12 @@ icon_state = "marked" }, /area/lv522/landing_zone_1/ceiling) +"vuF" = ( +/obj/vehicle/powerloader, +/turf/open/shuttle/dropship{ + icon_state = "rasputin3" + }, +/area/lv522/landing_zone_forecon/UD6_Tornado) "vuH" = ( /obj/structure/largecrate, /obj/effect/landmark/lv624/fog_blocker/short, @@ -55480,6 +56247,13 @@ icon_state = "blue_plate" }, /area/lv522/indoors/a_block/admin) +"vwW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/deployable{ + dir = 4 + }, +/turf/open/floor/plating, +/area/lv522/landing_zone_1/tunnel) "vxa" = ( /obj/structure/closet/crate, /obj/item/clothing/under/colonist, @@ -55550,7 +56324,9 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/dorms) "vxT" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block - Colony Operations Centre Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 1 }, @@ -55577,7 +56353,8 @@ /area/lv522/indoors/a_block/medical) "vyk" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper C-Block - Cargo Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -55679,7 +56456,8 @@ /area/lv522/outdoors/colony_streets/north_west_street) "vzE" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper B-Block Bar" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -55810,8 +56588,7 @@ /area/lv522/indoors/c_block/garage) "vCv" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Dormitories"; - welded = null + name = "\improper A-Block Shared Dorms Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -56010,7 +56787,9 @@ }, /area/lv522/indoors/a_block/dorms) "vFS" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Fitness Centre Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -56296,7 +57075,9 @@ "vKm" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper B-Block - Hydroponics Airlock" + }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "LV_522_Hydro-Lockdown"; name = "\improper Storm Shutters" @@ -56402,7 +57183,9 @@ }, /area/lv522/indoors/c_block/casino) "vLW" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper C-Block - Cargo Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor/corsat{ icon_state = "marked" @@ -56555,7 +57338,7 @@ "vOR" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; - name = "\improper Corporation Office"; + name = "\improper A-Block Corporate Office Airlock"; req_access_txt = "100" }, /obj/structure/pipes/standard/simple/hidden/green{ @@ -56630,7 +57413,7 @@ "vPA" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; - name = "\improper Corporation Office"; + name = "\improper A-Block Corporate Office Airlock"; req_access_txt = "100" }, /obj/structure/pipes/standard/simple/hidden/green{ @@ -56988,6 +57771,7 @@ "vWp" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; + name = "\improper C-Block - Casino Airlock"; welded = 1 }, /turf/open/floor/corsat{ @@ -57575,6 +58359,18 @@ icon_state = "darkpurplefull2" }, /area/lv522/indoors/a_block/dorms) +"whp" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/structure/barricade/metal{ + dir = 1 + }, +/turf/open/floor/prison{ + icon_state = "darkredfull2" + }, +/area/lv522/outdoors/colony_streets/north_street) "whs" = ( /obj/structure/surface/rack, /obj/effect/decal/cleanable/dirt, @@ -58151,6 +58947,13 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security) +"wtO" = ( +/obj/structure/barricade/deployable, +/obj/effect/decal/cleanable/dirt, +/turf/open/asphalt/cement{ + icon_state = "cement12" + }, +/area/lv522/outdoors/colony_streets/north_street) "wtT" = ( /obj/structure/cargo_container/grant/rightmid, /turf/open/floor/plating{ @@ -58801,6 +59604,16 @@ /area/lv522/indoors/c_block/cargo) "wFC" = ( /obj/structure/largecrate/random/secure, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/lv522/indoors/c_block/mining) +"wFL" = ( +/obj/structure/prop/invuln/overhead_pipe{ + dir = 8; + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) "wFP" = ( @@ -59143,6 +59956,15 @@ icon_state = "darkyellowfull2" }, /area/lv522/indoors/lone_buildings/engineering) +"wOq" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + dir = 1; + name = "\improper C-Block - Garage Airlock" + }, +/turf/open/floor/corsat{ + icon_state = "marked" + }, +/area/lv522/indoors/c_block/bridge) "wOu" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 @@ -59175,8 +59997,7 @@ /area/lv522/indoors/lone_buildings/outdoor_bot) "wPA" = ( /obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Dormitories"; - welded = null + name = "\improper A-Block Shared Dorms Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -59318,7 +60139,9 @@ /turf/open/floor/prison, /area/lv522/indoors/a_block/kitchen/glass) "wSz" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block - Colony Operations Centre Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "LV522CIC_1"; @@ -59343,6 +60166,9 @@ icon_state = "N"; pixel_y = 1 }, +/obj/item/weapon/gun/rifle/m41a{ + current_mag = null + }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -59938,6 +60764,10 @@ }, /turf/open/floor/plating, /area/lv522/outdoors/colony_streets/north_east_street) +"xfD" = ( +/obj/item/prop/colony/used_flare, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "xfS" = ( /obj/structure/surface/table/woodentable/fancy, /obj/structure/transmitter/colony_net{ @@ -60052,6 +60882,14 @@ icon_state = "darkredfull2" }, /area/lv522/indoors/a_block/security/glass) +"xhz" = ( +/obj/item/ammo_magazine/rifle/heap{ + current_rounds = 0 + }, +/turf/open/asphalt/cement{ + icon_state = "cement1" + }, +/area/lv522/outdoors/colony_streets/north_street) "xhB" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/prison{ @@ -60089,6 +60927,7 @@ /area/lv522/landing_zone_forecon/UD6_Typhoon) "xig" = ( /obj/structure/closet/crate, +/obj/item/storage/xeno_tag_case, /turf/open/floor/prison{ icon_state = "floor_plate" }, @@ -60551,7 +61390,9 @@ /turf/open/floor/wood, /area/lv522/indoors/a_block/executive) "xsi" = ( -/obj/structure/machinery/door/airlock/almayer/generic, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Garage Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, @@ -60603,12 +61444,9 @@ }, /area/lv522/indoors/a_block/admin) "xto" = ( -/obj/item/tool/shovel/etool, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk/prison, -/area/lv522/indoors/b_block/bridge) +/obj/item/storage/pouch/autoinjector/full, +/turf/open/auto_turf/shale/layer2, +/area/lv522/outdoors/w_rockies) "xtO" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -60775,6 +61613,7 @@ pixel_y = 6 }, /obj/structure/largecrate/random, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/lv522/indoors/c_block/mining) "xxJ" = ( @@ -60841,6 +61680,11 @@ icon_state = "cement1" }, /area/lv522/outdoors/colony_streets/central_streets) +"xyU" = ( +/obj/structure/surface/table/almayer, +/obj/item/map/lv522_map, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "xzj" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light{ @@ -61041,6 +61885,10 @@ "xDu" = ( /turf/open/floor/plating/plating_catwalk/prison, /area/lv522/indoors/a_block/corpo/glass) +"xDz" = ( +/obj/effect/spawner/gibspawner/xeno, +/turf/open/auto_turf/shale/layer1, +/area/lv522/outdoors/colony_streets/north_street) "xDC" = ( /obj/structure/prop/invuln/ice_prefab{ dir = 1; @@ -61244,7 +62092,10 @@ pixel_y = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/metal/medium_stack, +/obj/item/stack/sheet/metal/small_stack, +/obj/item/ore/slag, +/obj/item/ore/slag, +/obj/item/ore/slag, /turf/open/floor/prison, /area/lv522/indoors/c_block/mining) "xHr" = ( @@ -61532,7 +62383,8 @@ /area/lv522/landing_zone_forecon/UD6_Tornado) "xNw" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ - dir = 1 + dir = 1; + name = "\improper A-Block - Colony Operations Centre Airlock" }, /turf/open/floor/corsat{ icon_state = "marked" @@ -61720,6 +62572,13 @@ icon_state = "floor_plate" }, /area/lv522/indoors/a_block/hallway) +"xQZ" = ( +/obj/effect/decal/cleanable/blood/xeno{ + icon_state = "xgib3" + }, +/obj/effect/spawner/gibspawner/xeno, +/turf/open/auto_turf/sand_white/layer0, +/area/lv522/outdoors/colony_streets/north_street) "xRg" = ( /obj/structure/bed/chair/comfy{ dir = 1 @@ -61807,7 +62666,9 @@ }, /area/lv522/indoors/a_block/dorms/glass) "xRI" = ( -/obj/structure/machinery/door/airlock/almayer/generic, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper C-Block - Radio Tower Airlock" + }, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, @@ -62114,6 +62975,11 @@ "xXg" = ( /turf/open/asphalt/cement, /area/lv522/outdoors/colony_streets/east_central_street) +"xXh" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv522/indoors/lone_buildings/storage_blocks) "xXo" = ( /obj/structure/surface/table/almayer, /obj/structure/bed/chair{ @@ -62642,7 +63508,9 @@ }, /area/lv522/outdoors/colony_streets/windbreaker/observation) "ygJ" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper A-Block Dorms And Office Airlock" + }, /turf/open/floor/corsat{ icon_state = "marked" }, @@ -62827,6 +63695,12 @@ icon_state = "E"; pixel_x = 1 }, +/obj/structure/barricade/metal{ + dir = 1 + }, +/obj/structure/barricade/metal{ + dir = 4 + }, /turf/open/floor/prison{ icon_state = "darkredfull2" }, @@ -66505,7 +67379,7 @@ vhd sRA sRA sRA -rWS +rYp ien cpy cpy @@ -66731,8 +67605,8 @@ rFp vhC uiK uiK -sRA -rWS +gxe +xto ien ien ien @@ -66958,7 +67832,7 @@ tbl vhJ uiK sRA -sRA +odi ien ien jTJ @@ -67185,7 +68059,7 @@ uEX vhO hPM uiK -uiK +oow ien sON ezH @@ -67456,7 +68330,7 @@ pck hYf erS sau -xig +kSh ofS ylo ien @@ -67911,9 +68785,9 @@ isG vBM hYf wHi -vBM -yfu -ylo +jAA +loX +aId ien ien vXc @@ -68137,10 +69011,10 @@ bZd yfu yfu bZd -yfu -bZd -wHi -ylo +loX +rmm +gRl +uVS ien vXc vXc @@ -68363,11 +69237,11 @@ yfu bZd bZd yfu -yfu -bZd -bZd -yfu -ylo +cQv +gRl +gRl +xXh +qhk ien vXc vXc @@ -68591,10 +69465,10 @@ yfu bZd bZd bZd -yfu -bZd -yfu -ylo +nvA +gRl +cQv +loX ien ien vXc @@ -70164,7 +71038,7 @@ nLm nLm nLm eBA -jNk +qbL nLm nLm nLm @@ -70840,7 +71714,7 @@ clY sjY sjY oNQ -ltI +ygJ vJT uOs tUM @@ -70849,7 +71723,7 @@ uOs tUM uOs kcS -ltI +ygJ spo yiM yiM @@ -73431,10 +74305,10 @@ kEl peM jba bPJ -mJs -wfP +ayf +aKE wfP -jJF +cbb sLT bPJ cpy @@ -73659,10 +74533,10 @@ hTe jFl aQH mJs +ous wfP wfP -wfP -jJF +uKk bPJ bPJ cpy @@ -73887,10 +74761,10 @@ sHd bPJ eeb wfP +bgw wfP wfP -wfP -wfP +pSh bPJ bPJ cpy @@ -74026,7 +74900,7 @@ esa qvJ jDJ osU -doq +pxp enP dnM dnM @@ -74113,7 +74987,7 @@ bPJ bPJ bPJ bPJ -wfP +veA wfP wfP wfP @@ -74344,7 +75218,7 @@ qxf wfP wfP wfP -wfP +aKE sRM bPJ cpy @@ -74795,10 +75669,10 @@ cpy cpy bPJ bPJ +nkm wfP wfP -wfP -jJF +vwW wfP bPJ cpy @@ -75023,9 +75897,9 @@ cpy cpy bPJ bPJ -wfP -wfP -wfP +bQP +omv +lFM bPJ bPJ cpy @@ -75479,7 +76353,7 @@ cpy bPJ bPJ wfP -wfP +bgw bPJ bPJ cpy @@ -75707,7 +76581,7 @@ cpy bPJ wfP wfP -wfP +bgw bPJ cpy bMX @@ -75932,7 +76806,7 @@ cpy cpy cpy bPJ -jJF +gMT wfP fvn bPJ @@ -76613,7 +77487,7 @@ max osN bPJ oeN -bLA +byb wfP hiL bPJ @@ -76840,7 +77714,7 @@ max osN bPJ awm -wfP +tFC wfP wfP bPJ @@ -77066,8 +77940,8 @@ max max osN aQH -awm -wfP +gsn +tFC wfP bPJ bPJ @@ -77204,7 +78078,7 @@ qDR dnM sPk pxS -doq +pxp fqD oFr lOi @@ -77296,7 +78170,7 @@ bPJ cLB esx wfP -iGD +eLK bPJ cpy bMX @@ -77521,7 +78395,7 @@ pAj fnA bPJ bPJ -fCb +uEj jJF bPJ bPJ @@ -78203,7 +79077,7 @@ cpy cpy bPJ wfP -wfP +pSh sRM bPJ cpy @@ -78312,7 +79186,7 @@ xAO xAO xAO xyL -tvO +ivY ugV hNR xhL @@ -78543,7 +79417,7 @@ tvO ugV hNR ugV -sSn +cJg yjm nLm lfe @@ -78553,7 +79427,7 @@ nLm ahP wCC fjr -fjr +xfD fjr fjr bPH @@ -78655,7 +79529,7 @@ vDL wIr wIr bPJ -guh +mPV wfP wfP bPJ @@ -78771,11 +79645,11 @@ ugV hNR ugV ugV -sSn +eSM cHw cHw hhD -hhD +dhj hhD wCC ugV @@ -78875,15 +79749,15 @@ wIr vDL tog fTP -xto -gxe +xgH +oLa qzQ hhI vDL wIr wIr -guh -wfP +dSJ +pSh wfP bPJ cpy @@ -78997,7 +79871,7 @@ tvO ugV hNR ugV -ugV +nDo ugV fjr fjr @@ -79006,7 +79880,7 @@ fjr ugV ugV ugV -ugV +xQZ ugV ugV fjr @@ -79110,7 +79984,7 @@ hhI lBd wIr guh -wfP +acC wfP bPJ cpy @@ -79226,6 +80100,7 @@ spe hcX vwi vwi +gRS vwi vwi vwi @@ -79234,8 +80109,7 @@ vwi vwi vwi vwi -vwi -vwi +pqX nQx rvx fZy @@ -79337,8 +80211,8 @@ hhI hLx wIr hcG -wfP -wfP +lgR +aKE bPJ cpy cpy @@ -79448,25 +80322,25 @@ xAO xAO xtb tvO -ugV +nDo ugV hNR -xRK -emH -emH -emH -emH -emH -emH -emH -emH -emH +rJG +mKK +tWy +lae +uvJ +gwU +jeh +qdV +byD +sqr tNr ugV spe nQx fjr -fjr +xfD crH pQE pQE @@ -79563,9 +80437,9 @@ qzQ aPu jmv ueY -awm -wfP -wfP +tkC +rnX +acC bPJ cpy cpy @@ -79678,18 +80552,18 @@ tEJ fjr ugV hNR -crH +keA wSW +gvK +nMP +ovB +ikp cVR -cVR -cVR -cVR -cVR -cVR +ivs nMP eqb -tvO -ugV +joV +pqk ugV jXQ nQx @@ -79791,7 +80665,7 @@ aPu pfq wIr tXS -wfP +acC wfP bPJ cpy @@ -79905,20 +80779,20 @@ wCC fjr ugV hNR -crH +keA vCy +ryb +ghE +sJP urY urY -urY -rYp -urY -ryW ryW +fIr sUN -tvO +bKu +pqk ugV -ugV -fjr +ibS jXQ iKF sQL @@ -80017,7 +80891,7 @@ aPu mOJ wIr wIr -wfP +lgR wfP jJF bPJ @@ -80131,23 +81005,23 @@ fjr fjr fjr fjr -hNR -crH -vCy +fUQ +rBg +whp uye +naM uAa -uAa -uAa +fto uDF mQo -odi +urY dHx -tvO +wtO ugV fjr fjr fjr -fjr +ibS miz tRd xvW @@ -80356,22 +81230,22 @@ fjr fjr fjr cpy +bKf fjr -fjr -hNR -crH +nKZ +rBg iML -uye -urY -urY -urY -uye +kCQ +rjD +ryW +tlF +fIr ryb -oow -sUN -tvO +urY +dHx +csl ugV -fjr +xfD cpy fjr fjr @@ -80584,19 +81458,19 @@ fjr cpy cpy cpy -fjr -jDO +xDz +bAn crH yjD mIa -mIa -mIa -mIa +rSQ +iaD +rmk mlY cqL oQV ncs -tvO +vmM fjr fjr cpy @@ -80812,18 +81686,18 @@ cpy cpy cpy cpy -jDO +dBQ sSn +xhz hhD +xhz +nHM +oMO hhD hhD -hhD -hhD -hhD -hhD -hhD -hhD -wCC +lQA +fRw +fUc fjr cpy cpy @@ -81039,19 +81913,19 @@ cpy cpy cpy fjr -jDO -ugV -ugV +lRi ugV ugV ugV +xyU +tSF ugV ugV +pqk +tIQ ugV ugV -ugV -ugV -fjr +gUT cpy cpy cpy @@ -81270,16 +82144,16 @@ hNR ugV xRK emH +uQa +gLy +aAX emH -emH -emH -emH -emH -tNr -fjr +uvJ +fvc fjr fjr fjr +prs cpy fjr fjr @@ -81502,7 +82376,7 @@ sjy sjy sjy sjy -ahP +evQ tNr fjr fjr @@ -81945,10 +82819,10 @@ xXR emH emH tNr -jDO +dBQ fjr xRK -ahP +uuy sjy uxn ckT @@ -82401,7 +83275,7 @@ wrC tvO jDO xRK -ahP +qxe sjy sjy sjy @@ -82968,7 +83842,7 @@ vpe wHz jas nQu -nQu +bWv jas cpy cpy @@ -83875,7 +84749,7 @@ hBp eso vpe jas -nQu +bWv nQu jas cpy @@ -84102,7 +84976,7 @@ cwe vpe oCs jas -nQu +bWv nQu jas cpy @@ -86140,7 +87014,7 @@ bxr iqV iqV xHj -xHj +gvU boQ vpe tuK @@ -88778,7 +89652,7 @@ sjy kqb kqb mUS -egP +rUJ kqb kqb pGl @@ -90231,7 +91105,7 @@ phq phq qYq jas -nQu +bWv aEF jas cpy @@ -90458,7 +91332,7 @@ eJd ptU jas jas -nQu +bWv aEF jas cpy @@ -90905,8 +91779,8 @@ qHr vpe vxa ppU -nQu -nQu +bWv +bWv nQu nQu nQu @@ -91133,12 +92007,12 @@ vpe ahZ jas jas -dLC +mwn xxz pYO pYO -pYO -pYO +afa +afa nUF jas jas @@ -92042,7 +92916,7 @@ ctE ctE ctE jas -aEF +wFL nQu hbO jas @@ -92269,7 +93143,7 @@ ctE ctE ctE jas -aEF +wFL nQu fZA jas @@ -96799,7 +97673,7 @@ wQa dkX rBd nPb -fdT +iFe rVR hIf rqn @@ -96991,7 +97865,7 @@ wrY xvl xvl lot -aTR +wOq xvl xvl xWO @@ -98539,7 +99413,7 @@ gdO gdO psC ayn -tBT +xNw psC gdO tTK @@ -98572,7 +99446,7 @@ nKK fzf sHY wao -whs +mEn tID uaI wqA @@ -100128,7 +101002,7 @@ gdO gdO gdO ayn -tBT +xNw gdO gdO gdO @@ -102839,7 +103713,7 @@ uDM tth eTw lVs -qUL +qBH lAn krH nTp @@ -103063,10 +103937,10 @@ tCR fTm uKQ uKQ -uKQ +vuF fbY qUL -qUL +tRu lAn krH nTp @@ -103293,7 +104167,7 @@ vjs tIF rAt gOZ -iRl +cJc lAn krH nTp diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index 7aaff922baa9..4d94b662c589 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -2764,7 +2764,6 @@ /obj/item/clothing/glasses/hud/health, /obj/effect/landmark/crap_item, /obj/item/reagent_container/spray/cleaner, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "whitebluefull" }, @@ -3939,9 +3938,7 @@ req_access_txt = "100"; req_one_access = null }, -/turf/open/floor{ - icon_state = "cult" - }, +/turf/open/floor/wood, /area/lv624/ground/jungle/west_jungle/ceiling) "auP" = ( /obj/effect/landmark/lv624/fog_blocker, @@ -4104,7 +4101,6 @@ /area/lv624/lazarus/research) "avu" = ( /obj/structure/closet/lasertag/red, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -4154,12 +4150,6 @@ dir = 8 }, /obj/structure/surface/table, -/obj/item/storage/box/disks{ - layer = 2.9; - pixel_x = 5; - pixel_y = 5 - }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "white" }, @@ -4375,7 +4365,6 @@ /area/lv624/lazarus/research) "awq" = ( /obj/item/clothing/glasses/regular, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "white" }, @@ -5075,7 +5064,7 @@ /area/lv624/lazarus/research) "ayN" = ( /obj/structure/flora/bush/ausbushes/reedbush, -/turf/open/gm/grass/grass1, +/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/jungle/west_jungle) "ayO" = ( /obj/item/weapon/baseballbat/metal, @@ -5115,7 +5104,7 @@ /area/lv624/ground/jungle/west_jungle) "ayU" = ( /obj/structure/machinery/colony_floodlight, -/turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, +/turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/south_central_jungle) "ayV" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, @@ -5248,7 +5237,6 @@ /area/lv624/lazarus/fitness) "azm" = ( /obj/structure/closet/boxinggloves, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -5319,9 +5307,9 @@ }, /area/lv624/lazarus/sleep_female) "azB" = ( -/obj/effect/landmark/static_comms/net_one, +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/dirt, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/area/lv624/ground/jungle/north_west_jungle) "azD" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, @@ -5380,7 +5368,6 @@ /area/lv624/lazarus/fitness) "azM" = ( /obj/structure/closet/secure_closet/hydroponics, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -5426,7 +5413,6 @@ }, /obj/structure/machinery/light, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" @@ -5450,6 +5436,10 @@ }, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"azX" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "azY" = ( /obj/item/weapon/harpoon/yautja{ anchored = 1; @@ -6200,7 +6190,6 @@ /obj/item/tool/crowbar, /obj/item/clothing/gloves/yellow, /obj/item/stack/medical/bruise_pack, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "bluecorner" }, @@ -6403,7 +6392,6 @@ /obj/structure/surface/table, /obj/item/weapon/gun/pistol/holdout, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating{ icon_state = "platebot" }, @@ -7231,7 +7219,7 @@ /area/lv624/lazarus/toilet) "aFQ" = ( /obj/structure/window_frame/wood, -/turf/open/floor/plating, +/turf/open/floor/wood, /area/lv624/ground/jungle/west_jungle/ceiling) "aFR" = ( /turf/open/floor{ @@ -7261,7 +7249,6 @@ /obj/structure/surface/table, /obj/item/trash/cheesie, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" @@ -8793,7 +8780,7 @@ /area/lv624/lazarus/landing_zones/lz1) "aMr" = ( /obj/effect/landmark/lv624/xeno_tunnel, -/turf/open/gm/grass/grass1, +/turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/east_jungle) "aMt" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, @@ -8866,7 +8853,6 @@ /obj/item/ammo_magazine/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "cult" }, @@ -11296,6 +11282,10 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/jungle/south_west_jungle/ceiling) +"aWq" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/north_west_jungle) "aWs" = ( /obj/structure/flora/jungle/vines/heavy{ pixel_x = -28 @@ -12041,7 +12031,6 @@ /obj/item/device/analyzer, /obj/item/device/multitool, /obj/item/device/assembly/prox_sensor, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ icon_state = "dark" }, @@ -12155,7 +12144,6 @@ dir = 4 }, /obj/effect/landmark/objective_landmark/close, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 1; icon_state = "redcorner" @@ -12166,7 +12154,6 @@ /obj/structure/machinery/light/small{ dir = 8 }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor/wood{ icon_state = "wood-broken4" }, @@ -12224,7 +12211,6 @@ /area/lv624/lazarus/engineering) "aZI" = ( /obj/structure/filingcabinet/chestdrawer, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "dark" }, @@ -12279,6 +12265,10 @@ /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"bav" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/up, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "baN" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass2, @@ -12413,6 +12403,7 @@ dir = 8; health = 80 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whiteyellowfull" @@ -12525,8 +12516,7 @@ /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) "btS" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, -/turf/open/gm/grass/grass1, +/turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/east_jungle) "btX" = ( /turf/open/gm/river, @@ -12703,6 +12693,7 @@ dir = 4; health = 80 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) "bOg" = ( @@ -12897,6 +12888,13 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"ciz" = ( +/obj/item/device/assembly/signaller{ + pixel_x = -6; + pixel_y = -9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "ciA" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -12965,7 +12963,8 @@ /area/lv624/lazarus/landing_zones/lz1) "crF" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, -/turf/open/gm/grass/grass1, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/east_jungle) "csu" = ( /obj/structure/flora/bush/ausbushes/reedbush, @@ -12999,11 +12998,9 @@ /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/east_central_jungle) "czq" = ( -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor{ - icon_state = "dark" - }, -/area/lv624/lazarus/corporate_dome) +/obj/effect/landmark/objective_landmark/science, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "czu" = ( /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/gm/grass/grass1, @@ -13050,6 +13047,26 @@ "cCr" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/east_jungle) +"cDr" = ( +/obj/structure/girder, +/turf/open/gm/grass/grass1, +/area/lv624/ground/caves/north_central_caves) +"cDQ" = ( +/obj/item/ammo_magazine/sentry{ + current_rounds = 0; + pixel_y = -13 + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_10_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "casing_9_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_6_1" + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "cEh" = ( /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, @@ -13227,6 +13244,15 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"deU" = ( +/obj/item/circuitboard/airlock{ + pixel_x = 12 + }, +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/cargo) "dff" = ( /obj/structure/bed/sofa/vert/grey, /turf/open/floor{ @@ -13313,6 +13339,12 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/barrens/south_eastern_barrens) +"dqz" = ( +/turf/open/floor{ + dir = 1; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/cargo) "dqK" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -13331,6 +13363,10 @@ icon_state = "dark" }, /area/lv624/ground/barrens/north_east_barrens/ceiling) +"dsi" = ( +/obj/effect/landmark/monkey_spawn, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "dsz" = ( /obj/structure/closet/crate/hydroponics/prespawned, /obj/effect/landmark/objective_landmark/close, @@ -13468,6 +13504,13 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/medbay) +"dID" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/lv624/ground/caves/sand_temple) "dIO" = ( /turf/open/gm/dirt{ icon_state = "desert0" @@ -13614,7 +13657,6 @@ "dZH" = ( /obj/structure/filingcabinet, /obj/structure/machinery/light, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "whiteblue" }, @@ -13788,6 +13830,10 @@ icon_state = "cult" }, /area/lv624/ground/caves/south_west_caves) +"euh" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "euW" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/tool/candle, @@ -13799,6 +13845,13 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"ewg" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "exf" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/south_west_jungle) @@ -13858,7 +13911,6 @@ /obj/structure/machinery/light{ dir = 8 }, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 9; icon_state = "green" @@ -13945,6 +13997,9 @@ icon_state = "desert_dug" }, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"eOk" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, +/area/lv624/ground/jungle/east_jungle) "eOq" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/dirt, @@ -14157,7 +14212,6 @@ /area/lv624/ground/colony/telecomm/sw_lz2) "fsa" = ( /obj/structure/surface/table, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 8; icon_state = "barber" @@ -14283,7 +14337,6 @@ /area/lv624/lazarus/quartstorage) "fFM" = ( /obj/structure/surface/rack, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -14298,8 +14351,9 @@ /obj/structure/machinery/power/apc{ start_charge = 0 }, -/turf/open/floor/plating{ - icon_state = "platebotc" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/lv624/ground/colony/telecomm/cargo) "fGO" = ( @@ -14312,6 +14366,13 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"fHw" = ( +/obj/item/device/sentry_computer{ + pixel_y = 5 + }, +/obj/structure/surface/table, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "fHz" = ( /obj/structure/flora/jungle/vines/light_3, /turf/closed/wall/strata_ice/jungle, @@ -14450,6 +14511,13 @@ "gdx" = ( /turf/open/gm/coast/north, /area/lv624/ground/barrens/west_barrens) +"gdy" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "gef" = ( /obj/item/stack/sheet/wood{ amount = 2 @@ -14654,6 +14722,10 @@ /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"gIe" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "gKg" = ( /obj/item/clothing/head/hardhat/orange, /turf/open/floor/plating{ @@ -14874,6 +14946,12 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/west_central_jungle) +"hpG" = ( +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/lv624/ground/caves/north_central_caves) "hpN" = ( /obj/structure/surface/table, /obj/effect/landmark/good_item, @@ -15136,11 +15214,12 @@ }, /area/lv624/lazarus/medbay) "hZn" = ( -/obj/structure/flora/grass/tallgrass/jungle/corner{ - dir = 8 +/obj/item/stack/sheet/metal{ + pixel_x = 6; + pixel_y = 30 }, -/turf/open/gm/grass/grass1, -/area/lv624/ground/jungle/east_jungle) +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "hZW" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor{ @@ -15223,6 +15302,17 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"ihS" = ( +/obj/structure/surface/table, +/obj/item/reagent_container/food/drinks/cans/lemon_lime{ + pixel_x = -5; + pixel_y = 2 + }, +/obj/structure/prop/server_equipment/laptop/on{ + pixel_y = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "iiK" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/landmark/queen_spawn, @@ -15250,10 +15340,20 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) +"ioC" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, +/area/lv624/ground/jungle/east_jungle) "isF" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/dirt, /area/lv624/ground/caves/south_west_caves) +"isJ" = ( +/obj/structure/surface/table, +/obj/item/storage/beer_pack{ + pixel_y = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "isR" = ( /obj/effect/landmark/objective_landmark/medium, /obj/structure/largecrate/random, @@ -15339,11 +15439,8 @@ /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/west_central_jungle) "iBy" = ( -/obj/structure/flora/bush/ausbushes/lavendergrass, -/turf/open/floor/plating{ - icon_state = "platebotc" - }, -/area/lv624/ground/colony/telecomm/cargo) +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/east_jungle) "iBD" = ( /turf/open/floor{ dir = 10; @@ -15394,9 +15491,6 @@ /area/lv624/ground/barrens/south_eastern_jungle_barrens) "iKp" = ( /obj/structure/surface/rack, -/obj/item/clothing/mask/gas/pmc/leader, -/obj/item/clothing/under/marine/veteran/pmc, -/obj/item/clothing/gloves/marine/veteran/pmc, /turf/open/shuttle{ icon_state = "floor4" }, @@ -15524,6 +15618,9 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"jeL" = ( +/turf/closed/wall/r_wall, +/area/lv624/ground/caves/north_central_caves) "jga" = ( /turf/open/gm/river, /area/lv624/ground/jungle/west_jungle) @@ -15676,6 +15773,10 @@ icon_state = "floor6" }, /area/lv624/ground/caves/sand_temple) +"jDY" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno/limb, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "jEc" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, @@ -15724,6 +15825,13 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/jungle/west_central_jungle) +"jKX" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/sandstone/runed, +/area/lv624/ground/caves/sand_temple) "jLc" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/coast/beachcorner/north_east, @@ -15807,6 +15915,7 @@ /obj/item/stack/sheet/mineral/sandstone{ amount = 50 }, +/obj/effect/landmark/objective_landmark/far, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) "jRm" = ( @@ -15825,6 +15934,10 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"jRJ" = ( +/obj/effect/decal/cleanable/blood/xeno, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "jRM" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /obj/effect/landmark/lv624/fog_blocker, @@ -15887,6 +16000,13 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"kbn" = ( +/obj/structure/machinery/sensortower, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/lv624/ground/caves/north_central_caves) "kbr" = ( /obj/structure/showcase{ desc = "An ancient, dusty tomb with strange alien writing. It's best not to touch it."; @@ -15924,6 +16044,10 @@ "kjC" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/barrens/east_barrens) +"kjD" = ( +/obj/structure/flora/jungle/vines/light_3, +/turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, +/area/lv624/ground/jungle/east_jungle) "kmP" = ( /obj/item/stool, /turf/open/gm/dirt, @@ -16082,8 +16206,12 @@ /turf/open/gm/coast/beachcorner/north_east, /area/lv624/ground/barrens/west_barrens) "kGk" = ( -/turf/closed/wall/r_wall, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/obj/item/storage/toolkit/empty{ + pixel_x = 5; + pixel_y = -3 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "kHB" = ( /turf/open/gm/dirt{ icon_state = "desert3" @@ -16195,6 +16323,10 @@ icon_state = "asteroidwarning" }, /area/lv624/ground/colony/telecomm/sw_lz2) +"kXE" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirtgrassborder/north, +/area/lv624/ground/jungle/south_central_jungle) "kYx" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 9 @@ -16387,6 +16519,11 @@ "lBw" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/south_east_jungle) +"lCG" = ( +/obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/blood/gibs/robot/down, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "lDh" = ( /obj/item/clothing/suit/armor/yautja_flavor, /turf/open/floor/strata{ @@ -16616,6 +16753,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"mbN" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "mdQ" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/caves/west_caves) @@ -16708,6 +16849,9 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"mnr" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, +/area/lv624/ground/jungle/east_jungle) "mnK" = ( /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, @@ -16782,8 +16926,9 @@ /area/lv624/ground/jungle/north_east_jungle) "mvc" = ( /obj/effect/landmark/static_comms/net_two, -/turf/open/floor/plating{ - icon_state = "platebotc" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/lv624/ground/colony/telecomm/cargo) "mvr" = ( @@ -17054,10 +17199,20 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"njl" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "njC" = ( /obj/effect/landmark/crap_item, /turf/open/gm/dirt, /area/lv624/ground/colony/west_tcomms_road) +"njO" = ( +/turf/open/floor{ + dir = 5; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/cargo) "nkg" = ( /obj/structure/prop/brazier/torch, /turf/closed/wall/mineral/sandstone/runed, @@ -17654,6 +17809,10 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) +"omu" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/west_jungle) "omK" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/barrens/west_barrens) @@ -17687,6 +17846,12 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"orB" = ( +/turf/open/floor{ + dir = 4; + icon_state = "asteroidwarning" + }, +/area/lv624/ground/colony/telecomm/cargo) "oua" = ( /obj/effect/landmark/crap_item, /turf/open/gm/dirt, @@ -17742,7 +17907,6 @@ /area/lv624/ground/caves/sand_temple) "oyT" = ( /obj/structure/closet/toolcloset, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating{ dir = 1; icon_state = "asteroidfloor" @@ -17777,6 +17941,18 @@ }, /turf/open/gm/coast/north, /area/lv624/ground/caves/sand_temple) +"oEc" = ( +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_6_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_3_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_10_1" + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "oED" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, @@ -17832,6 +18008,12 @@ /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"oHU" = ( +/obj/structure/girder, +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/lv624/ground/caves/north_central_caves) "oJL" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, @@ -17975,8 +18157,8 @@ /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/south_west_jungle) "oXI" = ( -/turf/open/gm/grass/grass2, -/area/lv624/ground/jungle/north_west_jungle) +/turf/closed/wall/r_wall/unmeltable, +/area/lv624/lazarus/landing_zones/lz2) "oXS" = ( /turf/open/gm/coast/west, /area/lv624/ground/river/central_river) @@ -18016,6 +18198,13 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/colony/south_nexus_road) +"pbG" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/lv624/ground/caves/sand_temple) "pca" = ( /obj/effect/landmark/nightmare{ insert_tag = "nexuscenter" @@ -18033,7 +18222,7 @@ /area/lv624/ground/barrens/east_barrens) "pcu" = ( /obj/structure/flora/bush/ausbushes/genericbush, -/turf/open/gm/grass/grass1, +/turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/east_jungle) "pcz" = ( /obj/effect/landmark/objective_landmark/medium, @@ -18101,6 +18290,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"pmt" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "pmz" = ( /turf/open/gm/dirt{ icon_state = "desert2" @@ -18134,6 +18327,10 @@ }, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/east_central_jungle) +"pqa" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "prd" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/floor{ @@ -18307,6 +18504,12 @@ /obj/effect/landmark/hunter_secondary, /turf/open/gm/grass/grass1, /area/lv624/lazarus/quartstorage/outdoors) +"pKm" = ( +/turf/open/floor{ + icon_state = "asteroidwarning"; + dir = 8 + }, +/area/lv624/ground/colony/telecomm/sw_lz2) "pKp" = ( /obj/effect/landmark/crap_item, /turf/open/floor{ @@ -18322,6 +18525,10 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/colony/west_nexus_road) +"pMM" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/east_jungle) "pMV" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/dirt, @@ -18509,6 +18716,10 @@ /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"qns" = ( +/obj/structure/machinery/colony_floodlight, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "qnQ" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass2, @@ -18699,6 +18910,10 @@ "qIO" = ( /turf/open/gm/dirt, /area/lv624/ground/colony/west_tcomms_road) +"qJe" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "qJg" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/science, @@ -18720,7 +18935,6 @@ /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/north_nexus_road) "qKC" = ( -/obj/structure/flora/jungle/vines/heavy, /turf/open/floor{ dir = 9; icon_state = "asteroidwarning" @@ -18838,6 +19052,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"rcy" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirtgrassborder/west, +/area/lv624/ground/jungle/east_jungle) "rcR" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/dirt, @@ -19053,9 +19271,9 @@ /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) "rGW" = ( -/obj/structure/flora/bush/ausbushes/genericbush, -/turf/open/gm/grass/grass2, -/area/lv624/ground/jungle/north_west_jungle) +/obj/structure/flora/jungle/vines/light_3, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/east_jungle) "rGZ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, @@ -19150,6 +19368,9 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"rSy" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, +/area/lv624/ground/jungle/east_jungle) "rTG" = ( /obj/structure/machinery/colony_floodlight, /obj/structure/flora/jungle/vines/light_3, @@ -19186,6 +19407,10 @@ }, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) +"rYI" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/river, +/area/lv624/ground/caves/west_caves) "rZL" = ( /obj/structure/surface/rack, /obj/item/ammo_magazine/rifle/mar40, @@ -19299,6 +19524,13 @@ "sqj" = ( /turf/open/gm/river, /area/lv624/ground/river/central_river) +"sqs" = ( +/obj/item/stack/sheet/metal{ + pixel_x = -7; + pixel_y = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "sqw" = ( /obj/structure/machinery/colony_floodlight, /obj/structure/flora/jungle/vines/heavy, @@ -19348,7 +19580,6 @@ "sxY" = ( /obj/structure/surface/rack, /obj/item/moneybag, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor/greengrid, /area/lv624/lazarus/corporate_dome) "syc" = ( @@ -19488,6 +19719,13 @@ /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"sOC" = ( +/obj/item/stack/sheet/metal{ + pixel_x = 16; + pixel_y = -10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "sOZ" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/south, @@ -19504,6 +19742,9 @@ /obj/structure/flora/bush/ausbushes/palebush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"sRW" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, +/area/lv624/ground/jungle/east_jungle) "sSE" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/grass/grass1, @@ -19685,8 +19926,16 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/north_west_caves) "tka" = ( -/obj/effect/landmark/lv624/xeno_tunnel, -/turf/open/gm/grass/grass1, +/obj/item/ammo_casing/bullet{ + icon_state = "casing_9_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_6_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_9_1" + }, +/turf/open/gm/dirt, /area/lv624/ground/jungle/north_west_jungle) "tlD" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, @@ -19960,6 +20209,10 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"tRE" = ( +/obj/effect/decal/cleanable/blood/gibs/xeno, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "tSd" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/lazarus/quartstorage/outdoors) @@ -19999,12 +20252,9 @@ }, /area/lv624/lazarus/crashed_ship_containers) "tYx" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor{ - dir = 9; - icon_state = "brown" - }, -/area/lv624/lazarus/comms) +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "tZa" = ( /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/gm/coast/beachcorner/south_east, @@ -20108,10 +20358,27 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/colony/north_tcomms_road) +"uiW" = ( +/obj/structure/barricade/metal/wired{ + dir = 1; + health = 10; + is_wired = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "ujd" = ( /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"ukh" = ( +/obj/item/ammo_casing/bullet{ + icon_state = "cartridge_6_1" + }, +/obj/item/ammo_casing/bullet{ + icon_state = "casing_9_1" + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "ukk" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 @@ -20124,8 +20391,9 @@ }, /area/lv624/ground/barrens/south_eastern_barrens) "ukZ" = ( -/turf/open/floor/plating{ - icon_state = "platebotc" +/turf/open/floor{ + dir = 1; + icon_state = "asteroidfloor" }, /area/lv624/ground/colony/telecomm/cargo) "ulj" = ( @@ -20156,15 +20424,13 @@ /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/caves/south_east_caves) "uns" = ( -/obj/item/stack/sheet/wood{ - amount = 2 - }, -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/vault, -/area/lv624/lazarus/quartstorage) -"unT" = ( +/obj/effect/landmark/objective_landmark/medium, /turf/open/gm/dirt, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/area/lv624/ground/caves/south_east_caves) +"unT" = ( +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/east_jungle) "upM" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, @@ -20175,6 +20441,13 @@ /obj/effect/landmark/corpsespawner/colonist/random/burst, /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) +"upV" = ( +/obj/item/stack/cable_coil/random{ + pixel_y = 9; + pixel_x = 7 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "urR" = ( /turf/open/floor/corsat{ dir = 1; @@ -20191,6 +20464,14 @@ /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/dirt, /area/lv624/ground/barrens/central_barrens) +"uuf" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) +"uuV" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/east_jungle) "uve" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/barrens/south_eastern_jungle_barrens) @@ -20323,6 +20604,12 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/caves/sand_temple) +"uOK" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor{ + icon_state = "cult" + }, +/area/lv624/ground/caves/south_west_caves) "uRb" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -20443,6 +20730,14 @@ /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"vbh" = ( +/obj/item/device/radio/off{ + frequency = 1469; + pixel_x = -9; + pixel_y = -13 + }, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/east_jungle) "vcY" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -20458,6 +20753,10 @@ icon_state = "dark" }, /area/lv624/lazarus/corporate_dome) +"vef" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "veo" = ( /obj/item/ammo_casing/bullet{ icon_state = "cartridge_3_1" @@ -20715,11 +21014,9 @@ /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) "vOD" = ( -/turf/open/floor{ - dir = 9; - icon_state = "asteroidwarning" - }, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/north_west_jungle) "vOF" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/south_central_jungle) @@ -20776,10 +21073,17 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"vZT" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "wbK" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"wbM" = ( +/turf/open/floor, +/area/lv624/ground/caves/north_central_caves) "wbP" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/floor/sandstone/runed, @@ -20899,6 +21203,15 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"woF" = ( +/obj/structure/flora/jungle/vines/light_3, +/obj/structure/barricade/metal/wired{ + dir = 1; + health = 10; + is_wired = 1 + }, +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/north_west_jungle) "woK" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/wood{ @@ -20973,6 +21286,11 @@ /obj/effect/decal/remains/xeno, /turf/open/gm/dirt, /area/lv624/ground/barrens/central_barrens) +"wwI" = ( +/turf/open/floor{ + icon_state = "asteroidplating" + }, +/area/lv624/ground/caves/north_central_caves) "wxP" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/north_jungle) @@ -21074,6 +21392,10 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"wNp" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "wNB" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/floor{ @@ -21179,6 +21501,11 @@ /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/wood, /area/lv624/ground/caves/north_central_caves) +"wUv" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/obj/structure/flora/jungle/vines/heavy, +/turf/open/gm/dirtgrassborder/north, +/area/lv624/ground/jungle/east_jungle) "wUz" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirt, @@ -21223,14 +21550,12 @@ /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) "wXg" = ( -/obj/structure/machinery/power/apc{ - start_charge = 0 - }, -/turf/open/floor{ - dir = 1; - icon_state = "asteroidwarning" +/obj/item/stack/sheet/metal{ + pixel_x = 16; + pixel_y = -10 }, -/area/lv624/ground/colony/telecomm/tcommdome/south) +/turf/open/gm/dirt, +/area/lv624/ground/jungle/west_jungle) "wXp" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/west_central_jungle) @@ -21401,7 +21726,6 @@ /obj/structure/surface/table/reinforced/prison, /obj/item/tool/crowbar, /obj/item/reagent_container/spray/cleaner, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 9; icon_state = "whiteyellow" @@ -21532,12 +21856,13 @@ /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) "xTa" = ( -/obj/structure/largecrate/random, -/obj/effect/landmark/objective_landmark/medium, -/turf/open/floor/plating{ - icon_state = "platebot" - }, -/area/lv624/lazarus/robotics) +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"xTM" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/west_jungle) "xTT" = ( /turf/open/gm/dirt, /area/lv624/ground/jungle/south_west_jungle) @@ -21554,6 +21879,9 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"xVN" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, +/area/lv624/ground/jungle/south_central_jungle) "xXB" = ( /obj/structure/flora/bush/ausbushes/var3/sunnybush, /turf/open/gm/grass/grass1, @@ -21607,6 +21935,10 @@ /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/river/east_river) +"ygp" = ( +/obj/structure/surface/rack, +/turf/open/floor/greengrid, +/area/lv624/lazarus/secure_storage) "yhd" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/caves/sand_temple) @@ -21642,9 +21974,10 @@ }, /area/lv624/lazarus/corporate_dome) "yiE" = ( -/obj/structure/flora/bush/ausbushes/pointybush, +/obj/structure/flora/jungle/vines/heavy, +/obj/effect/landmark/lv624/xeno_tunnel, /turf/open/gm/grass/grass1, -/area/lv624/ground/jungle/east_jungle) +/area/lv624/ground/jungle/north_west_jungle) "yiT" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/firstaid/adv{ @@ -23401,7 +23734,7 @@ afV afV nBh nBh -nBh +uOK afV nBh nBh @@ -23643,7 +23976,7 @@ nBh afV ane ane -ahF +euh ahF ane ane @@ -24535,7 +24868,7 @@ mdQ gwP gwP gwP -gwP +pqa ane afV afV @@ -24771,7 +25104,7 @@ afV afV afV afV -nBh +uOK eVH nBh nBh @@ -25213,7 +25546,7 @@ gwP gwP gwP gwP -gwP +vef mdQ mdQ mdQ @@ -26869,8 +27202,8 @@ aFm auO aFm aFm -uSw -asa +aAl +aqR asa aja asa @@ -27097,9 +27430,9 @@ aue auf aXC aFm -aro +aAl ayN -asc +asx ayT aAp aAp @@ -27325,9 +27658,9 @@ auf auf aZp aFm -aro -aro -ayT +aAl +omu +aqS aAp aAp aAp @@ -27488,7 +27821,7 @@ gwP gwP gwP gwP -gwP +wNp mdQ acp acp @@ -27504,7 +27837,7 @@ ane ane ahF ahF -ahF +vZT ahF ahF ahF @@ -27553,9 +27886,9 @@ aug wFx avo aFQ -axX -baN -aAp +xTM +aAl +aDv aAp aAp nmO @@ -27775,15 +28108,15 @@ aud bGb auP aqi -aqS +ase aFm aZn axp auf aFm -asw -aro -aAp +aAl +wXg +aDv aAp nmO aXX @@ -28002,16 +28335,16 @@ aud aud aud auP -aqR -arn +aAl +aAl aFm aIH auR auf aFm -atC -ayT -aAp +aAl +aAl +aDv aAp aXX aRG @@ -28230,16 +28563,16 @@ sFc aud aud auP -aqS -aro +aAl +aAl aFm aFm aFQ aFm aFm -atC -aAp -aAp +aAl +qKC +pKm aAp nmO aZP @@ -28458,12 +28791,12 @@ aud aud aud avy -teS -rGW -psh -nuW -psh -vEp +jRJ +oTJ +oTJ +uiW +sqs +oTJ qKC kWX hdh @@ -28686,12 +29019,12 @@ aud arU aud auP -teS -psh -dop -kVP -psh -psh +vOD +oTJ +azB +sOC +oTJ +oTJ mBL hdh hdh @@ -28883,7 +29216,7 @@ ane ane ane afV -ahF +pmt ahF ahF ahF @@ -28914,15 +29247,15 @@ aud aud aud auP -teS -pYq -hIq -nuW -psh -psh +oTJ +tRE +jRJ +oTJ +ukh +njl vVf fqM -aAp +oXI aAp fuy aXX @@ -29142,15 +29475,15 @@ aud aud amG auP -teS -qSZ -fio -nuW +oTJ +oTJ +bav +uiW tka +lCG +cDQ +oTJ nuW -psh -cRT -cqz aAp cIL nmO @@ -29370,14 +29703,14 @@ aud arV aud auP -teS -kRg -nVG -psh -nuW -txx -cRT -cRT +oTJ +azX +qJe +oTJ +oTJ +oEc +fHw +oTJ aAp aAp aAp @@ -29553,7 +29886,7 @@ ane ahF ahF ahH -ahF +pmt uWJ uWJ ahF @@ -29598,15 +29931,15 @@ aud aud aud auP -eHQ -pOC -nuW -oXI -nuW -cqz -cTi -cRT -cRT +vOD +jRJ +oTJ +oTJ +oTJ +asH +oTJ +oTJ +oTJ aAp aAp aXX @@ -29648,11 +29981,11 @@ aTf aUj aUQ aUQ -vUO +ygp aUQ gte aUQ -iml +ygp aUQ aUQ aYs @@ -29827,14 +30160,14 @@ amG aud auP oTJ -teS -psh -psh -dmS -cRT -cRT -dmS -txx +oTJ +oTJ +hZn +oTJ +oTJ +oTJ +oTJ +nuW aAp nmO aXX @@ -30055,13 +30388,13 @@ aud aud auP asH -teS -psh -pGD -vXW -cTi -cTi -psh +jDY +oTJ +oTJ +tlE +fZO +fZO +fZO aAp aAp cIL @@ -30283,10 +30616,10 @@ aud amG auP oTJ -teS -psh -pYJ -cRT +tlE +aWq +woF +gyP vEp txx xHa @@ -30513,7 +30846,7 @@ auP oTJ teS pDI -cRT +yiE pYJ dmS cRT @@ -30912,7 +31245,7 @@ gwP aes aez aez -aez +rYI acp ane ane @@ -31584,7 +31917,7 @@ gwP gwP gwP gwP -gwP +pqa acp xZE gwP @@ -31830,7 +32163,7 @@ ane afV ahF ahF -ahF +vZT ahF ahF ahF @@ -33037,7 +33370,7 @@ axj avH aBp aBR -xTa +aCk ado aXX aXX @@ -33054,7 +33387,7 @@ kWH kWH kWH kWH -czq +kWH kWH kWH vdy @@ -34553,7 +34886,7 @@ eGD ufG eGD eGD -eGD +gIe ufG eGD ufG @@ -36358,7 +36691,7 @@ eGD eGD eGD eGD -eGD +xTa abS abS abS @@ -37510,7 +37843,7 @@ eGD eGD eGD eGD -eGD +xTa abS abS abS @@ -38313,7 +38646,7 @@ aQn aQn aQn aTh -tYx +aQn aQn aQn aQn @@ -39234,7 +39567,7 @@ kxI awQ qtj qtj -hLu +xVN tsa tsa aac @@ -39461,9 +39794,9 @@ kxI kxI dEc pcA -azB -vOD -kGk +qtj +qtj +tsa tsa aac aaa @@ -39689,9 +40022,9 @@ sBJ kxI kxI ayU -unT -wXg -kGk +qtj +qtj +tsa tsa aac aaa @@ -39916,10 +40249,10 @@ aPt tzK kxI kxI -ooM -unT -kGk -kGk +kXE +qtj +tsa +tsa tsa aac aaa @@ -40250,7 +40583,7 @@ eGD eGD eGD eGD -eGD +xTa abS abS wVk @@ -40646,11 +40979,11 @@ aaH aaw aaw aaw +oHU aaw aaw -aaw -aaw -aaw +cDr +jeL aaF aaF abm @@ -40876,9 +41209,9 @@ aaw aaw aaw aaw -aaw -aaw -aaw +wwI +wbM +jeL aaF abm abm @@ -41103,10 +41436,10 @@ aay aaw aaw aaw -aaw -aaw -aaw -aaw +wbM +kbn +wbM +jeL abm abm abm @@ -41331,10 +41664,10 @@ aaz aay aaw aaw -aaw -aaw -aaw -aaw +wwI +hpG +wbM +jeL abm abm abm @@ -41559,10 +41892,10 @@ aah aaH aaw aaw -aaw -aaw -aaw -aaw +wbM +wbM +wwI +jeL abm abm abm @@ -41788,9 +42121,9 @@ aaH aaw aaw aaw -aaw -aaw -aaw +cDr +jeL +jeL abm abm abm @@ -43208,7 +43541,7 @@ abS abS abS abS -eGD +xTa eGD eGD eGD @@ -45008,7 +45341,7 @@ acf abl abl abl -abl +czq uxU uxU abl @@ -47295,7 +47628,7 @@ uxU uxU abl abl -abl +tYx acf acf acf @@ -51428,7 +51761,7 @@ ahv slW uFA nPk -urR +pbG nUs uFA aeg @@ -52798,7 +53131,7 @@ pEV mhZ mhZ mhZ -pEV +dID kbr jFc rYA @@ -53104,7 +53437,7 @@ ati wWs ati aDE -uns +atE asN aFG aFZ @@ -54140,7 +54473,7 @@ jMS jMS fTM fTM -fTM +uns whU whU whU @@ -57876,10 +58209,10 @@ atI avS atI asN -dLY -dLY -dLY -dLY +ihS +oUa +oUa +deU fFZ xDw apu @@ -58098,16 +58431,16 @@ vNP dLY dLY pcu -dLY -dLY -dLY -dLY -lxX -dLY -dLY -hRS -dLY -dLY +ioC +oUa +oUa +oUa +oUa +oUa +isJ +oUa +kGk +dqz ukZ mvc apu @@ -58325,18 +58658,18 @@ dLY dLY fSX dLY -dLY -fSX btS -dLY -dLY -dLY -dLY -dLY -vNP -eCx -dLY -iBy +oUa +oUa +oUa +oUa +oUa +oUa +vbh +dsi +oUa +dqz +ukZ ukZ apu apu @@ -58553,21 +58886,21 @@ dLY dLY fED dLY -dLY -dLY -dLY -fSX -dLY -dLY -dLY -dLY -dLY -dLY -dLY -dLY +btS +oUa +oUa +oUa +oUa +oUa +oUa +oUa +upV +oUa +njO +orB apu apu -dLY +oUa apu apu apu @@ -58781,21 +59114,21 @@ fSX dLY dLY fSX -dLY -dLY +btS +oUa jik -dLY -dLY -dLY -dLY -dLY -dLY -crF -dLY -dLY -dLY -hmK -xVk +oUa +oUa +oUa +oUa +oUa +oUa +oUa +ciz +oUa +oUa +oUa +oUa apu apu apu @@ -59009,22 +59342,22 @@ dLY gAI dLY dLY -dLY -lxX -dLY -dLY -dLY -hRS -dLY -dLY -dLY -qcX -dLY -dLY -yiE -kNm -dLY -eSg +eOk +rSy +oUa +oUa +oUa +oUa +oUa +oUa +oUa +qns +oUa +oUa +oUa +uuf +oUa +cCr vKt apu apu @@ -59238,21 +59571,21 @@ fSX dLY dLY dLY -dLY -qcX -dLY -dLY -dLY +btS +qns +oUa +oUa +oUa jik -dLY -dLY -dLY -dLY +oUa +oUa +oUa +oUa jik -dLY -dLY -vKt -vKt +oUa +oUa +oUa +cCr djI dZY djI @@ -59466,21 +59799,21 @@ fSX dLY gMe gcn -fSX -dLY -hmK -xVk -dLY -dLY -dLY -uYC -psc -xQI -dLY -dLY -crF -dLY -vKt +btS +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +cCr rON djI vKt @@ -59694,21 +60027,21 @@ hKk psc xQI dLY -dLY -dLY -dLY -dLY -dLY -uYC -psc -eil -eil -sXi -dLY -sHT -dLY -hRS -dLY +btS +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +cCr jik jik rON @@ -59921,22 +60254,22 @@ cCr lLO eil sXi -dLY -dLY -fSX -fSX -dLY -dLY -lLO -hZn -eil -eil -dNN -dLY -dLY -dLY -dLY -dLY +sRW +ioC +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +cCr jik jik jik @@ -60089,7 +60422,7 @@ afS izX rwB agX -aut +jKX jFc rJd boe @@ -60149,23 +60482,23 @@ cCr dLY xDR sXi -dLY -dLY -dLY -dLY -dLY -lxX +btS +oUa +oUa +oUa +oUa +oUa jik -dLY -lLO -dNN -dLY -hRS -dLY -dLY -dLY -fED -dLY +oUa +oUa +oUa +oUa +oUa +oUa +oUa +oUa +vPV +fqh vKt jik jik @@ -60323,7 +60656,7 @@ kSH boe rJd aeg -hcN +ewg twN uOi ufW @@ -60377,23 +60710,23 @@ cCr dLY xDR sXi -dLY -eCx -dLY -hRS -dLY -dLY -dLY -dLY -lxX -dLY -dLY +eOk +pMM +iBy +rSy +oUa +mnr +iBy +rSy +oUa +oUa +oUa jik jik -bMu -bMu -bMu -fqh +jik +iBy +iBy +iab hmK xVk dLY @@ -60607,21 +60940,21 @@ lbX dNN dLY fSX +hRS +btS +oUa +uuV dLY +eOk +iBy +jik +iBy +iab +jik dLY dLY -kNm -dLY -dLY -dLY -jik dLY dLY -jik -oUa -oUa -oUa -cCr dLY dLY dLY @@ -60629,8 +60962,8 @@ dLY djI jik crF -dLY -dZY +rcy +kjD dZY fbD xVk @@ -60776,7 +61109,7 @@ ahv ahv ahv afS -hcN +gdy afS aeg uOi @@ -60836,8 +61169,8 @@ fSX dLY dLY dLY -dLY -dLY +eOk +iBy jik dLY fED @@ -60847,18 +61180,18 @@ jik kNm jik jik -oUa -oUa -cCr -jik dLY -kNm +dLY dLY jik dLY +kNm dLY -djI -dZY +jik +oUa +oUa +mbN +rGW jik jik vWs @@ -61082,11 +61415,11 @@ jik jik dLY dLY -hRS -dLY -dLY -djI -djI +wUv +oUa +oUa +mbN +unT djI uVU jik diff --git a/maps/map_files/LV624/armory/10.cheese.dmm b/maps/map_files/LV624/armory/10.cheese.dmm index 760329c216dd..26bfd92837f3 100644 --- a/maps/map_files/LV624/armory/10.cheese.dmm +++ b/maps/map_files/LV624/armory/10.cheese.dmm @@ -110,7 +110,6 @@ /obj/item/ammo_magazine/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower, /obj/item/ammo_magazine/pistol/highpower, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "cult" }, diff --git a/maps/map_files/LV624/armory/10.extra.dmm b/maps/map_files/LV624/armory/10.extra.dmm index 612cf5c34ea1..f9c0f47729c5 100644 --- a/maps/map_files/LV624/armory/10.extra.dmm +++ b/maps/map_files/LV624/armory/10.extra.dmm @@ -125,7 +125,6 @@ /obj/item/explosive/grenade/flashbang, /obj/item/explosive/grenade/flashbang, /obj/item/ammo_magazine/shotgun/beanbag, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "cult" }, diff --git a/maps/map_files/LV624/armory/10.looted.dmm b/maps/map_files/LV624/armory/10.looted.dmm index 09d0371c7c39..478a3db3ea48 100644 --- a/maps/map_files/LV624/armory/10.looted.dmm +++ b/maps/map_files/LV624/armory/10.looted.dmm @@ -79,7 +79,6 @@ }, /area/lv624/lazarus/main_hall) "l" = ( -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "platingdmg3" }, diff --git a/maps/map_files/LV624/cargospecial/cargospecial3_gear.dmm b/maps/map_files/LV624/cargospecial/cargospecial3_gear.dmm index d89618cb3041..80d478e1ef51 100644 --- a/maps/map_files/LV624/cargospecial/cargospecial3_gear.dmm +++ b/maps/map_files/LV624/cargospecial/cargospecial3_gear.dmm @@ -1,11 +1,6 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /obj/structure/surface/rack, -/obj/item/clothing/gloves/marine/veteran/pmc{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/clothing/gloves/marine/veteran/pmc, /turf/open/floor{ dir = 8; icon_state = "vault" @@ -43,7 +38,6 @@ /obj/structure/surface/rack, /obj/item/clothing/accessory/storage/black_vest/brown_vest, /obj/item/clothing/accessory/storage/black_vest/brown_vest, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 8; icon_state = "vault" diff --git a/maps/map_files/LV624/centralcaves/10.T.dmm b/maps/map_files/LV624/centralcaves/10.T.dmm index c9b62878872c..7433f2f6131d 100644 --- a/maps/map_files/LV624/centralcaves/10.T.dmm +++ b/maps/map_files/LV624/centralcaves/10.T.dmm @@ -68,6 +68,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"C" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "G" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, @@ -154,7 +158,7 @@ w f A V -V +C l l l @@ -207,7 +211,7 @@ l l l l -V +C V V V @@ -674,7 +678,7 @@ V V G V -V +C l l l diff --git a/maps/map_files/LV624/centralcaves/10.qc.dmm b/maps/map_files/LV624/centralcaves/10.qc.dmm index 67c707f60afa..1e84fde00653 100644 --- a/maps/map_files/LV624/centralcaves/10.qc.dmm +++ b/maps/map_files/LV624/centralcaves/10.qc.dmm @@ -54,6 +54,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"x" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "y" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/barrens/west_barrens) @@ -459,7 +463,7 @@ C C g C -C +x l l l @@ -660,7 +664,7 @@ l l l l -C +x C C C diff --git a/maps/map_files/LV624/crashedship/10.digsite.dmm b/maps/map_files/LV624/crashedship/10.digsite.dmm index ccc8111d9956..6132b455f14d 100644 --- a/maps/map_files/LV624/crashedship/10.digsite.dmm +++ b/maps/map_files/LV624/crashedship/10.digsite.dmm @@ -219,15 +219,6 @@ /obj/effect/alien/weeds/node, /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) -"FG" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/shuttle{ - icon_state = "floor4" - }, -/area/lv624/lazarus/crashed_ship_containers) "Gs" = ( /obj/structure/girder, /turf/closed/shuttle{ @@ -503,7 +494,7 @@ xg zH cv uw -FG +cv Xk Gs Xk diff --git a/maps/map_files/LV624/gym/20.pool.dmm b/maps/map_files/LV624/gym/20.pool.dmm index 92bba9a7dcff..be863f49c556 100644 --- a/maps/map_files/LV624/gym/20.pool.dmm +++ b/maps/map_files/LV624/gym/20.pool.dmm @@ -101,7 +101,6 @@ /area/lv624/lazarus/fitness) "li" = ( /obj/effect/decal/cleanable/blood/splatter, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -209,7 +208,6 @@ }, /obj/structure/surface/table, /obj/item/storage/box/cups, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -354,7 +352,6 @@ /obj/item/clothing/mask/snorkel, /obj/item/clothing/mask/snorkel, /obj/item/clothing/mask/snorkel, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" diff --git a/maps/map_files/LV624/gym/30.alternate.dmm b/maps/map_files/LV624/gym/30.alternate.dmm index 8762e50bc905..79d0887c2219 100644 --- a/maps/map_files/LV624/gym/30.alternate.dmm +++ b/maps/map_files/LV624/gym/30.alternate.dmm @@ -69,11 +69,10 @@ /obj/structure/surface/rack, /obj/item/clothing/shoes/black, /obj/item/clothing/shoes/orange{ + name = "running shoes"; pixel_x = -5; - pixel_y = -9; - name = "running shoes" + pixel_y = -9 }, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -373,7 +372,6 @@ "DH" = ( /obj/structure/closet/lasertag/blue, /obj/item/tool/crowbar, -/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" @@ -646,7 +644,6 @@ id = "lv_gym_1"; name = "treadmill" }, -/obj/effect/landmark/objective_landmark/medium, /turf/open/floor{ dir = 4; icon_state = "whitepurplecorner" diff --git a/maps/map_files/LV624/hydro/30.destroyed.dmm b/maps/map_files/LV624/hydro/30.destroyed.dmm index a1c9ebcf3dbb..84e9ebb5c814 100644 --- a/maps/map_files/LV624/hydro/30.destroyed.dmm +++ b/maps/map_files/LV624/hydro/30.destroyed.dmm @@ -64,7 +64,6 @@ /area/lv624/ground/colony/south_medbay_road) "ft" = ( /obj/item/clothing/gloves/marine/veteran/pmc{ - name = "damaged WY PMC gloves"; armor_bio = 10; armor_bomb = 10; armor_bullet = 15; @@ -72,7 +71,8 @@ armor_internaldamage = 15; armor_laser = 15; armor_melee = 15; - armor_rad = 10 + armor_rad = 10; + name = "damaged WY PMC gloves" }, /turf/open/floor{ icon_state = "platingdmg1" @@ -171,10 +171,10 @@ }, /obj/effect/spawner/gibspawner/robot, /obj/item/limb/head/synth{ - pixel_x = 9; - pixel_y = 3; + desc = "This appears to be the head of a synthetic, though it it is so destroyed there is no way in hell anyone is going to bring it back to even basic functionality."; name = "shattered synthetic head"; - desc = "This appears to be the head of a synthetic, though it it is so destroyed there is no way in hell anyone is going to bring it back to even basic functionality." + pixel_x = 9; + pixel_y = 3 }, /obj/item/robot_parts/arm/l_arm, /turf/open/floor{ @@ -368,10 +368,6 @@ icon_state = "platingdmg1" }, /area/lv624/lazarus/hydroponics) -"DN" = ( -/obj/effect/landmark/objective_landmark/close, -/turf/open/floor/plating, -/area/lv624/lazarus/hydroponics) "Ed" = ( /obj/item/stack/sheet/metal, /turf/open/floor{ @@ -571,7 +567,6 @@ /obj/item/ammo_magazine/smg/fp9000, /obj/item/ammo_magazine/smg/fp9000, /obj/item/clothing/gloves/marine/veteran/pmc{ - name = "damaged WY PMC gloves"; armor_bio = 10; armor_bomb = 10; armor_bullet = 15; @@ -580,6 +575,7 @@ armor_laser = 15; armor_melee = 15; armor_rad = 10; + name = "damaged WY PMC gloves"; pixel_y = 9 }, /turf/open/floor/plating, @@ -591,8 +587,6 @@ /area/lv624/lazarus/hydroponics) "RT" = ( /obj/item/clothing/shoes/veteran/pmc{ - slowdown = 0.5; - name = "scuffed shoes"; armor_bio = 15; armor_bomb = 5; armor_bullet = 15; @@ -601,8 +595,10 @@ armor_laser = 5; armor_melee = 15; desc = "The height of fashion, but these look to be woven with protective fiber. This pair seems heavily damaged, especially around the soles..."; + name = "scuffed shoes"; pixel_x = -14; - pixel_y = -10 + pixel_y = -10; + slowdown = 0.5 }, /turf/open/floor{ dir = 9; @@ -874,7 +870,7 @@ bd aO QR mK -DN +Wg TC Wg TC diff --git a/maps/map_files/LV624/maintemple/1.intact.dmm b/maps/map_files/LV624/maintemple/1.intact.dmm index 27e4f42b6152..9289d3454327 100644 --- a/maps/map_files/LV624/maintemple/1.intact.dmm +++ b/maps/map_files/LV624/maintemple/1.intact.dmm @@ -130,6 +130,7 @@ desc = "An old hide from a fearsome creature."; name = "hunter hide" }, +/obj/effect/landmark/objective_landmark/far, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "dE" = ( @@ -311,6 +312,13 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"fQ" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/lv624/ground/caves/sand_temple) "fV" = ( /obj/structure/prop/brazier/torch, /turf/closed/wall/rock/brown, @@ -404,6 +412,7 @@ name = "sacred ceremonial dagger"; pixel_x = 9 }, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "hA" = ( @@ -507,6 +516,7 @@ color = "#6b675e" }, /obj/item/restraints, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/strata{ color = "#5e5d5d"; icon_state = "multi_tiles" @@ -1148,6 +1158,25 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"BY" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/item/hunting_trap{ + desc = "A bizarre alien device used for trapping and killing prey."; + name = "Alien Mine" + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/floor/sandstone/runed, +/area/lv624/ground/caves/sand_temple) "Cr" = ( /obj/effect/decal/cleanable/blood{ basecolor = "#20d450"; @@ -1445,6 +1474,7 @@ /obj/item/XenoItem/AntiAcid{ pixel_x = 4 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "LF" = ( @@ -1710,6 +1740,7 @@ color = "#6b675e" }, /obj/item/stack/yautja_rope, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple/powered) "SF" = ( @@ -1746,6 +1777,7 @@ amount = 50; pixel_y = 7 }, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/corsat{ dir = 1; icon_state = "squareswood" @@ -2374,7 +2406,7 @@ gL Jc Jc Jc -gL +fQ wS oi qf @@ -3332,7 +3364,7 @@ ZX ZX GT OC -KB +BY mv mv mv diff --git a/maps/map_files/LV624/maintemple/2.flooded.dmm b/maps/map_files/LV624/maintemple/2.flooded.dmm index f375b61213ce..bcbf6a54774c 100644 --- a/maps/map_files/LV624/maintemple/2.flooded.dmm +++ b/maps/map_files/LV624/maintemple/2.flooded.dmm @@ -39,6 +39,7 @@ dir = 8; health = 80 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "aN" = ( @@ -332,6 +333,13 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"jc" = ( +/obj/structure/platform_decoration/mineral/sandstone/runed{ + dir = 1 + }, +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "jZ" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, @@ -347,6 +355,7 @@ /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" }, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) "lI" = ( @@ -784,6 +793,7 @@ dir = 4; health = 80 }, +/obj/effect/landmark/objective_landmark/close, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) "wt" = ( @@ -1137,6 +1147,13 @@ "EJ" = ( /turf/open/gm/coast/beachcorner2/south_west, /area/lv624/ground/caves/sand_temple) +"EL" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/floor/strata{ + color = "#5e5d5d"; + icon_state = "multi_tiles" + }, +/area/lv624/ground/caves/sand_temple) "EM" = ( /obj/structure/showcase{ color = "#95948B"; @@ -1302,6 +1319,13 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"Ip" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/far, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "Ix" = ( /obj/structure/barricade/handrail/strata, /obj/structure/barricade/handrail/strata{ @@ -1798,6 +1822,20 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_barrens) +"Xr" = ( +/obj/effect/landmark/objective_landmark/medium, +/turf/open/floor/corsat{ + dir = 1; + icon_state = "squareswood" + }, +/area/lv624/ground/caves/sand_temple) +"XQ" = ( +/obj/structure/surface/table/reinforced/prison{ + color = "#6b675e" + }, +/obj/effect/landmark/objective_landmark/medium, +/turf/open/gm/dirt, +/area/lv624/ground/caves/sand_temple) "XV" = ( /obj/structure/bed/chair/comfy/black{ dir = 1 @@ -2006,7 +2044,7 @@ GT Jm rL Dg -Ge +Xr we rL xO @@ -2260,7 +2298,7 @@ gL Jc Jc Jc -gL +EL wS if qf @@ -2848,7 +2886,7 @@ ma wU po MB -Yu +jc py yc dA @@ -3641,7 +3679,7 @@ GT SW Ai Br -UX +XQ Mq Zi mv @@ -3728,7 +3766,7 @@ GT GT GT OC -UX +Ip OC xO FS diff --git a/maps/map_files/LV624/medbay/10.destroyed.dmm b/maps/map_files/LV624/medbay/10.destroyed.dmm index 34dbd1981cf0..88e17a3aeee0 100644 --- a/maps/map_files/LV624/medbay/10.destroyed.dmm +++ b/maps/map_files/LV624/medbay/10.destroyed.dmm @@ -300,12 +300,6 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) -"AB" = ( -/obj/effect/landmark/objective_landmark/science, -/turf/open/floor{ - icon_state = "whitebluefull" - }, -/area/lv624/lazarus/medbay) "Be" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, @@ -806,7 +800,7 @@ Il yU QR QR -AB +YJ vm uV fX diff --git a/maps/map_files/LV624/medbay/30.larvasurgery.dmm b/maps/map_files/LV624/medbay/30.larvasurgery.dmm index a47a2cd2ed62..b67b5e7bf1c5 100644 --- a/maps/map_files/LV624/medbay/30.larvasurgery.dmm +++ b/maps/map_files/LV624/medbay/30.larvasurgery.dmm @@ -480,7 +480,6 @@ /obj/structure/machinery/light{ dir = 8 }, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 8; icon_state = "whiteblue" diff --git a/maps/map_files/LV624/science/10.yautja.dmm b/maps/map_files/LV624/science/10.yautja.dmm index d0dfdca90fc7..c77bacd35202 100644 --- a/maps/map_files/LV624/science/10.yautja.dmm +++ b/maps/map_files/LV624/science/10.yautja.dmm @@ -184,9 +184,9 @@ }, /obj/effect/landmark/crap_item, /obj/structure/transmitter/colony_net{ - pixel_y = 24; phone_category = "Lazarus Landing"; - phone_id = "Research Dome" + phone_id = "Research Dome"; + pixel_y = 24 }, /turf/open/floor{ dir = 5; @@ -326,7 +326,6 @@ /area/lv624/lazarus/research) "aQ" = ( /obj/item/clothing/glasses/regular, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "white" }, @@ -456,7 +455,6 @@ /obj/structure/surface/table, /obj/item/explosive/grenade/spawnergrenade/smartdisc, /obj/item/explosive/grenade/spawnergrenade/smartdisc, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" @@ -528,7 +526,6 @@ "LE" = ( /obj/structure/surface/table, /obj/effect/landmark/crap_item, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" diff --git a/maps/map_files/LV624/science/40.fullylocked.dmm b/maps/map_files/LV624/science/40.fullylocked.dmm index 3ba311757b73..8e523f6c7e9c 100644 --- a/maps/map_files/LV624/science/40.fullylocked.dmm +++ b/maps/map_files/LV624/science/40.fullylocked.dmm @@ -329,7 +329,6 @@ /obj/structure/surface/table, /obj/structure/machinery/cell_charger, /obj/item/tool/crowbar, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ dir = 5; icon_state = "whitepurple" @@ -367,7 +366,6 @@ /area/lv624/lazarus/research) "bm" = ( /obj/structure/surface/table, -/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "freezerfloor" }, @@ -438,9 +436,9 @@ /area/lv624/lazarus/research) "oe" = ( /obj/structure/transmitter/colony_net{ - pixel_y = 24; phone_category = "Lazarus Landing"; - phone_id = "Research Dome" + phone_id = "Research Dome"; + pixel_y = 24 }, /turf/open/floor{ dir = 5; @@ -603,7 +601,7 @@ ab "} (7,1,1) = {" ac -bn +Tz aq ay ay @@ -715,7 +713,7 @@ bb ay ab bn -bn +Tz aj ac bE diff --git a/maps/map_files/LV624/standalone/clfship.dmm b/maps/map_files/LV624/standalone/clfship.dmm index e69c2de5bcb8..4c53a79e90d7 100644 --- a/maps/map_files/LV624/standalone/clfship.dmm +++ b/maps/map_files/LV624/standalone/clfship.dmm @@ -455,6 +455,7 @@ /area/lv624/lazarus/crashed_ship) "lv" = ( /obj/item/stack/rods, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor{ icon_state = "platingdmg1" }, @@ -669,6 +670,7 @@ phone_color = "yellow"; phone_id = "Engineering" }, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/almayer{ icon_state = "orangecorner" }, @@ -1059,6 +1061,7 @@ /obj/item/tank/oxygen/red, /obj/item/storage/bag/trash, /obj/item/tool/screwdriver, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor{ icon_state = "platingdmg1" }, @@ -1250,6 +1253,7 @@ pixel_x = -3; pixel_y = 4 }, +/obj/effect/landmark/objective_landmark/medium, /turf/open/floor/wood, /area/lv624/lazarus/crashed_ship) "GQ" = ( @@ -1275,6 +1279,7 @@ /obj/item/ammo_magazine/pistol/heavy, /obj/item/ammo_magazine/pistol/heavy, /obj/item/clothing/accessory/storage/webbing, +/obj/effect/landmark/objective_landmark/close, /turf/open/floor/almayer{ dir = 5; icon_state = "green" @@ -1954,6 +1959,7 @@ "Xa" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/firstaid/regular, +/obj/effect/landmark/objective_landmark/science, /turf/open/floor/almayer{ dir = 1; icon_state = "emerald" diff --git a/maps/map_files/New_Varadero/New_Varadero.dmm b/maps/map_files/New_Varadero/New_Varadero.dmm index d315d9bfd84b..e03bf8cdcbe4 100644 --- a/maps/map_files/New_Varadero/New_Varadero.dmm +++ b/maps/map_files/New_Varadero/New_Varadero.dmm @@ -2261,13 +2261,6 @@ default_name = "shallow ocean" }, /area/varadero/exterior/pontoon_beach) -"bvS" = ( -/obj/structure/bedsheetbin, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/floor/shiva{ - icon_state = "floor3" - }, -/area/varadero/interior/laundry) "bwz" = ( /obj/structure/closet/emcloset, /turf/open/floor/shiva{ @@ -5661,7 +5654,6 @@ /area/varadero/interior/hall_N) "dKm" = ( /obj/structure/closet/secure_closet/personal/patient, -/obj/item/clothing/gloves/marine/veteran/pmc, /turf/open/floor/shiva{ icon_state = "multi_tiles" }, @@ -7379,6 +7371,9 @@ /obj/item/circuitboard/airlock, /turf/open/floor/shiva, /area/varadero/interior/technical_storage) +"eOK" = ( +/turf/open/floor/plating, +/area/varadero/interior_protected/caves/central) "eOZ" = ( /obj/structure/bed/chair{ dir = 1 @@ -10637,6 +10632,11 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance) +"gPE" = ( +/turf/open/floor/shiva{ + icon_state = "multi_tiles" + }, +/area/varadero/interior_protected/caves/central) "gPG" = ( /turf/open/gm/dirt{ icon_state = "desert2" @@ -16173,7 +16173,6 @@ /obj/item/bedsheet/hos{ layer = 3.1 }, -/obj/item/clothing/gloves/marine/veteran/insulated, /turf/open/floor/wood, /area/varadero/interior/bunks) "kyh" = ( @@ -21746,6 +21745,14 @@ icon_state = "asteroidplating" }, /area/varadero/interior/hall_NW) +"nYi" = ( +/obj/structure/machinery/sensortower{ + pixel_x = -9 + }, +/turf/open/floor/shiva{ + icon_state = "floor3" + }, +/area/varadero/interior_protected/caves/central) "nYx" = ( /obj/structure/machinery/storm_siren{ dir = 8; @@ -26672,6 +26679,9 @@ }, /turf/open/gm/dirt, /area/varadero/exterior/lz2_near) +"raW" = ( +/turf/closed/wall, +/area/varadero/interior_protected/caves/central) "rbd" = ( /obj/item/stack/sheet/wood/small_stack, /turf/open/floor/plating/icefloor{ @@ -27533,6 +27543,10 @@ icon_state = "asteroidplating" }, /area/varadero/interior/maintenance/north) +"rAt" = ( +/obj/structure/window/framed/colony, +/turf/open/floor/plating, +/area/varadero/interior_protected/caves/central) "rAy" = ( /obj/structure/bedsheetbin, /turf/open/floor/shiva{ @@ -29173,7 +29187,6 @@ /area/varadero/interior/cargo) "sCK" = ( /obj/structure/closet/secure_closet/scientist, -/obj/item/clothing/mask/gas/clown_hat, /turf/open/floor/shiva{ dir = 8; icon_state = "purple" @@ -50587,7 +50600,7 @@ tvv pRP sBX gmE -bvS +nfv nfv aFh uNq @@ -53327,9 +53340,9 @@ etv xxk xxk mCF -aOg -mCF -mCF +raW +rAt +rAt cty hoC mCF @@ -53509,9 +53522,9 @@ toU cto xxk meS -aOg -aOg -mCF +eOK +gPE +gPE cty cty mCF @@ -53691,9 +53704,9 @@ etv xxk xxk aOg -mCF -mCF -hoC +eOK +gPE +nYi cty aOg aOg @@ -53872,9 +53885,9 @@ ixr toU xxk xxk +eOK mCF -mCF -hoC +gPE cty cty aOg @@ -54055,7 +54068,7 @@ mMZ xxk xxk mCF -mCF +eOK cty cty cty diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm index ff1d99eb8f78..334c7e71f8b6 100644 --- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm +++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm @@ -402,13 +402,6 @@ /obj/effect/blocker/sorokyne_cold_water, /turf/open/gm/river, /area/strata/ag/exterior/paths/cabin_area) -"abx" = ( -/obj/effect/landmark/corpsespawner/clown, -/turf/open/floor/strata{ - dir = 10; - icon_state = "multi_tiles" - }, -/area/strata/ag/interior/outpost/gen/bball/nest) "aby" = ( /obj/structure/machinery/camera/autoname{ dir = 8 @@ -4676,13 +4669,6 @@ }, /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/interior/restricted/devroom) -"anO" = ( -/obj/structure/bedsheetbin, -/obj/item/clothing/gloves/marine/veteran/pmc, -/turf/open/floor/strata{ - icon_state = "blue1" - }, -/area/strata/ag/interior/outpost/canteen/personal_storage) "anP" = ( /obj/structure/bedsheetbin, /obj/item/device/binoculars/range, @@ -22565,9 +22551,13 @@ /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/exterior/nearlz2) "bwy" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/item/device/radio, -/turf/open/auto_turf/strata_grass/layer0_mud, +/obj/structure/machinery/sensortower{ + pixel_x = -8 + }, +/turf/open/floor/strata{ + dir = 4; + icon_state = "floor3" + }, /area/strata/ug/interior/jungle/platform/east/scrub) "bwA" = ( /obj/structure/flora/grass/tallgrass/ice/corner{ @@ -32951,6 +32941,11 @@ }, /turf/open/auto_turf/ice/layer1, /area/strata/ag/exterior/marsh) +"ioi" = ( +/turf/open/floor/strata{ + icon_state = "multi_tiles" + }, +/area/strata/ug/interior/jungle/platform/east/scrub) "ioz" = ( /obj/structure/bed/nest, /obj/effect/decal/cleanable/blood/gibs/core, @@ -39150,6 +39145,9 @@ icon_state = "floor3" }, /area/strata/ug/interior/outpost/jung/dorms/sec1) +"sPF" = ( +/turf/open/floor/strata, +/area/strata/ug/interior/jungle/platform/east/scrub) "sQs" = ( /turf/open/asphalt/cement{ icon_state = "cement9" @@ -61048,7 +61046,7 @@ aac aac rKG bsS -abx +cjq bvt rKG aac @@ -74331,7 +74329,7 @@ akE alo bPZ alo -anO +bmX alU apG aqK @@ -75342,9 +75340,9 @@ rpX tnM wZZ bwE -bqf -csY -bqf +ioi +sPF +ioi btL btE wZZ @@ -75537,9 +75535,9 @@ rpX tnM wZZ wZZ -btK +sPF bwy -bqf +sPF bDB wZZ wZZ @@ -75732,9 +75730,9 @@ rpX tnM wZZ bqf -csZ -bwE -bqf +ioi +sPF +ioi wZZ bqf wZZ diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 8007d13db89e..32937d821d60 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -1052,7 +1052,8 @@ name = "ship-grade camera" }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "green" }, /area/almayer/living/starboard_garden) "adp" = ( @@ -1073,15 +1074,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"ads" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "adt" = ( /obj/item/reagent_container/glass/bucket/janibucket{ pixel_x = -1; @@ -1116,8 +1108,8 @@ pixel_y = -9 }, /obj/item/stock_parts/scanning_module/adv{ - pixel_y = 15; - pixel_x = 4 + pixel_x = 4; + pixel_y = 15 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -1170,8 +1162,11 @@ }, /area/almayer/hallways/aft_hallway) "adI" = ( -/obj/docking_port/stationary/escape_pod/south, -/turf/open/floor/plating, +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/hull/upper_hull/u_m_p) "adO" = ( /turf/closed/wall/almayer, @@ -1190,9 +1185,9 @@ /area/almayer/lifeboat_pumps/north1) "adR" = ( /obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; name = "\improper Pilot's Office"; - req_one_access_txt = "3;22;19"; - access_modified = 1 + req_one_access_txt = "3;22;19" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 8 @@ -1223,12 +1218,11 @@ }, /area/almayer/lifeboat_pumps/north1) "aea" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/machinery/light{ + dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "aeb" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -1241,10 +1235,9 @@ }, /area/almayer/hallways/starboard_hallway) "aec" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/tool, +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/north1) "aed" = ( @@ -1259,10 +1252,9 @@ }, /area/almayer/living/basketball) "aee" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/toolbox, +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/north1) "aef" = ( @@ -1277,11 +1269,12 @@ }, /area/almayer/living/offices/flight) "aei" = ( -/obj/structure/bed/chair{ - dir = 8 +/obj/structure/machinery/light{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 5; + icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) "aej" = ( @@ -1336,11 +1329,12 @@ /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) "aex" = ( -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" +/obj/item/reagent_container/food/drinks/cans/beer{ + pixel_x = 6; + pixel_y = 12 }, -/area/almayer/shipboard/starboard_missiles) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/lifeboat_pumps/north2) "aey" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -1367,6 +1361,9 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/structure/sign/safety/rewire{ + pixel_y = 32 + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -1378,9 +1375,9 @@ /area/almayer/lifeboat_pumps/north2) "aeD" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; req_one_access = null; - req_one_access_txt = "2;7"; - access_modified = 1 + req_one_access_txt = "2;7" }, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -1528,6 +1525,7 @@ }, /area/almayer/hallways/aft_hallway) "aeW" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) @@ -1654,15 +1652,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) -"afp" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/north1) "afq" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -1733,16 +1722,10 @@ "afz" = ( /turf/open/floor/almayer/empty, /area/almayer/hallways/vehiclehangar) -"afA" = ( +"afB" = ( /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/north1) -"afB" = ( /turf/open/floor/almayer{ dir = 9; icon_state = "red" @@ -1863,11 +1846,11 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + access_modified = 1; dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -1882,9 +1865,6 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) -"afY" = ( -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "afZ" = ( /obj/structure/bed/chair/comfy/blue{ dir = 8 @@ -1929,16 +1909,12 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"agh" = ( -/obj/structure/flora/bush/ausbushes/var3/fullgrass, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "agi" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; req_access = null; req_one_access = null; - req_one_access_txt = "3;22;19"; - access_modified = 1 + req_one_access_txt = "3;22;19" }, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -1957,12 +1933,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"agm" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/aft_hallway) "agn" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -2003,12 +1973,6 @@ "agu" = ( /turf/open/floor/almayer, /area/almayer/living/officer_study) -"agv" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 - }, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "agw" = ( /obj/structure/machinery/light{ dir = 8 @@ -2030,13 +1994,10 @@ /turf/open/floor/plating, /area/almayer/living/basketball) "agB" = ( -/obj/structure/flora/bush/ausbushes/var3/fullgrass, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" }, -/turf/open/floor/grass, /area/almayer/living/starboard_garden) "agG" = ( /obj/structure/stairs/perspective{ @@ -2110,10 +2071,6 @@ icon_state = "test_floor4" }, /area/almayer/living/officer_study) -"agP" = ( -/obj/structure/flora/bush/ausbushes/ppflowers, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "agQ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -2121,12 +2078,10 @@ }, /area/almayer/living/cafeteria_officer) "agS" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" }, -/turf/open/floor/grass, /area/almayer/living/starboard_garden) "agT" = ( /turf/open/floor/prison{ @@ -2138,6 +2093,7 @@ dir = 1 }, /obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) "agV" = ( @@ -2161,10 +2117,10 @@ "aha" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ + access_modified = 1; name = "\improper Commanding Officer's Quarters"; req_access = null; - req_access_txt = "31"; - access_modified = 1 + req_access_txt = "31" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -2186,11 +2142,11 @@ /area/almayer/living/cafeteria_officer) "ahd" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; req_access = null; req_one_access = null; - req_one_access_txt = "3;22;19"; - access_modified = 1 + req_one_access_txt = "3;22;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -2248,8 +2204,10 @@ }, /area/almayer/hull/upper_hull/u_m_s) "ahl" = ( -/obj/structure/flora/bush/ausbushes/var3/ywflowers, -/turf/open/floor/grass, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, /area/almayer/living/starboard_garden) "ahn" = ( /obj/structure/machinery/light/small{ @@ -2267,10 +2225,6 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/offices/flight) -"ahp" = ( -/obj/structure/flora/bush/ausbushes/var3/brflowers, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "ahq" = ( /obj/structure/machinery/alarm/almayer{ dir = 1 @@ -2289,42 +2243,12 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"ahs" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper_bin/uscm{ - pixel_y = 6 - }, -/obj/item/tool/pen, -/obj/structure/sign/safety/terminal{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aht" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"ahu" = ( -/obj/item/device/flashlight/lamp/green{ - pixel_y = 10 - }, -/obj/structure/surface/table/almayer, -/obj/item/trash/uscm_mre{ - pixel_x = 7; - pixel_y = 4 - }, -/obj/item/reagent_container/food/snacks/mre_pack/meal1{ - pixel_x = -13; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ahv" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -2340,19 +2264,17 @@ /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) "ahx" = ( -/obj/structure/closet, -/obj/item/clothing/under/marine/engineer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +/obj/structure/window/framed/almayer/hull, +/turf/open/floor/plating, /area/almayer/hull/upper_hull/u_m_s) "ahy" = ( -/obj/structure/closet, -/obj/item/clothing/under/marine, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 }, -/area/almayer/hull/upper_hull/u_m_s) +/turf/closed/wall/almayer, +/area/almayer/living/starboard_garden) "ahz" = ( /obj/structure/machinery/light{ dir = 1 @@ -2375,12 +2297,6 @@ /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/hull/upper_hull/u_f_s) -"ahF" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/aft_hallway) "ahG" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -2420,11 +2336,9 @@ }, /area/almayer/hallways/aft_hallway) "ahN" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "ahR" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -2456,18 +2370,6 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"ahW" = ( -/obj/structure/surface/rack, -/obj/item/tool/extinguisher/mini{ - pixel_x = -4 - }, -/obj/item/tool/extinguisher/mini{ - pixel_x = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ahX" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -2520,9 +2422,9 @@ "aib" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; req_one_access = null; - req_one_access_txt = "7;19"; - access_modified = 1 + req_one_access_txt = "7;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -2683,6 +2585,13 @@ "aiw" = ( /turf/open/floor/almayer, /area/almayer/engineering/starboard_atmos) +"aiy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 3 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) "aiz" = ( /obj/structure/closet, /obj/item/clothing/under/marine, @@ -2724,12 +2633,10 @@ /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) "aiH" = ( -/obj/item/tool/crew_monitor, -/obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "aiJ" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_Down3"; @@ -2741,14 +2648,11 @@ }, /area/almayer/stair_clone/upper) "aiP" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 4; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "aiQ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine, @@ -2774,6 +2678,9 @@ /obj/structure/closet, /obj/item/device/flashlight/pen, /obj/item/attachable/reddot, +/obj/structure/machinery/light/small{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -2789,6 +2696,7 @@ "aiU" = ( /obj/structure/surface/table/almayer, /obj/item/card/id/visa, +/obj/item/tool/crew_monitor, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -2970,7 +2878,10 @@ /area/almayer/hallways/aft_hallway) "ajD" = ( /obj/structure/surface/table/almayer, -/obj/effect/spawner/random/tool, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "ajE" = ( @@ -3139,6 +3050,7 @@ /area/almayer/hull/upper_hull/u_a_s) "ake" = ( /obj/structure/largecrate/random/barrel/white, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -3151,25 +3063,21 @@ }, /area/almayer/shipboard/weapon_room) "akk" = ( -/obj/structure/window/reinforced/tinted/frosted, -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 +/obj/structure/machinery/door/window/westright{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "sterile" +/obj/structure/machinery/shower{ + dir = 4 }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/commandbunks) "akl" = ( /obj/structure/machinery/light{ dir = 1 }, /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "dark_sterile" }, /area/almayer/living/commandbunks) "akm" = ( @@ -3444,20 +3352,22 @@ }, /area/almayer/hallways/starboard_hallway) "akY" = ( -/obj/effect/step_trigger/message/memorial, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/cable/heavyduty{ + icon_state = "4-8" }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/starboard_garden) "alb" = ( -/obj/structure/machinery/door/window/westright{ - dir = 4 +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 }, -/obj/structure/machinery/shower{ - dir = 4 +/obj/structure/mirror{ + pixel_x = -28 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, /area/almayer/living/commandbunks) "alc" = ( @@ -3465,7 +3375,7 @@ dir = 8 }, /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "dark_sterile" }, /area/almayer/living/commandbunks) "ald" = ( @@ -3477,29 +3387,29 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/bed/chair{ + dir = 8 }, +/turf/open/floor/almayer, /area/almayer/living/starboard_garden) "alf" = ( -/obj/structure/machinery/light/small{ +/obj/structure/machinery/light{ dir = 8 }, -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/atmos_alert{ - dir = 4; - pixel_y = 5 +/obj/structure/bed/chair{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "alg" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 +/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/structure/bed/chair{ + dir = 4 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "ali" = ( /turf/open/floor/almayer{ dir = 8; @@ -3559,15 +3469,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"alr" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/structure/largecrate/random/barrel/green, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "als" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -3717,10 +3618,27 @@ }, /area/almayer/command/cic) "amb" = ( +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/machinery/shower{ + dir = 1 + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/pilotbunks) "amd" = ( -/turf/open/floor/almayer, +/obj/structure/machinery/vending/cola{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "amg" = ( /turf/open/floor/plating/plating_catwalk, @@ -3951,7 +3869,11 @@ pixel_x = -17; pixel_y = 7 }, -/obj/structure/machinery/cm_vending/clothing/pilot_officer, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/machinery/disposal, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -3972,7 +3894,17 @@ }, /area/almayer/hallways/aft_hallway) "and" = ( -/obj/effect/landmark/yautja_teleport, +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 + }, +/obj/structure/machinery/shower{ + dir = 1 + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/pilotbunks) "anf" = ( @@ -4198,6 +4130,8 @@ /obj/structure/surface/table/almayer, /obj/item/clipboard, /obj/item/tool/pen, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/tool, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "anO" = ( @@ -4320,14 +4254,6 @@ "aoi" = ( /turf/open/floor/almayer, /area/almayer/shipboard/navigation) -"aok" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "red" - }, -/area/almayer/shipboard/starboard_missiles) "aol" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -4615,13 +4541,10 @@ }, /area/almayer/hallways/stern_hallway) "aoV" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 10; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/north1) "aoW" = ( @@ -4743,21 +4666,15 @@ /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) "apq" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "plate" }, /area/almayer/living/pilotbunks) "apr" = ( -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - dir = 6; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/north1) "aps" = ( @@ -4774,9 +4691,15 @@ /obj/structure/machinery/power/apc/almayer{ dir = 1 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "apu" = ( +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, /turf/open/floor/almayer{ dir = 10; icon_state = "red" @@ -4834,12 +4757,6 @@ icon_state = "orange" }, /area/almayer/hallways/hangar) -"apF" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "apI" = ( /obj/structure/machinery/door/airlock/almayer/command{ dir = 2; @@ -4902,8 +4819,8 @@ dir = 1 }, /obj/structure/pipes/vents/pump/no_boom{ - welded = 1; - name = "Secure Reinforced Air Vent" + name = "Secure Reinforced Air Vent"; + welded = 1 }, /turf/open/floor/almayer{ icon_state = "sterile_green" @@ -5070,10 +4987,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"aqi" = ( -/obj/structure/prop/almayer/ship_memorial, -/turf/open/floor/plating/almayer, -/area/almayer/living/starboard_garden) "aqj" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -5084,7 +4997,11 @@ /turf/open/floor/plating, /area/almayer/engineering/upper_engineering) "aqk" = ( -/turf/open/floor/plating/almayer, +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor/almayer, /area/almayer/living/starboard_garden) "aqm" = ( /obj/item/bedsheet/brown, @@ -5139,9 +5056,11 @@ /turf/open/floor/almayer, /area/almayer/shipboard/weapon_room) "aqw" = ( -/obj/structure/machinery/cm_vending/clothing/pilot_officer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, /area/almayer/living/pilotbunks) "aqx" = ( @@ -5158,16 +5077,16 @@ }, /area/almayer/hallways/starboard_hallway) "aqy" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 8; - name = "ship-grade camera"; - pixel_x = 27; - pixel_y = -27 - }, /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) "aqz" = ( /obj/structure/machinery/door/airlock/almayer/generic{ @@ -5317,12 +5236,6 @@ "arb" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) -"arc" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/grass, -/area/almayer/living/starboard_garden) "ard" = ( /obj/structure/filingcabinet, /obj/item/folder/yellow, @@ -5433,13 +5346,13 @@ }, /area/almayer/hallways/starboard_hallway) "arp" = ( -/obj/item/roller, -/obj/item/roller, -/obj/structure/surface/rack, +/obj/structure/bed/chair{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "arq" = ( /obj/structure/bed/chair{ dir = 4 @@ -5468,13 +5381,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"aru" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/m41a/stripped, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "arw" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/junction{ @@ -5485,21 +5391,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"ary" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/wrench, -/obj/item/reagent_container/food/drinks/cans/souto/cherry{ - pixel_x = 4; - pixel_y = 14 - }, -/obj/item/attachable/lasersight{ - pixel_x = -14; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "arz" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -5556,14 +5447,6 @@ icon_state = "redfull" }, /area/almayer/engineering/upper_engineering) -"arI" = ( -/obj/structure/closet, -/obj/item/clothing/under/marine/mp, -/obj/item/device/flash, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "arJ" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -5647,18 +5530,20 @@ /area/almayer/command/cic) "ase" = ( /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "cargo" }, /area/almayer/living/pilotbunks) "asf" = ( -/obj/structure/machinery/shower{ - dir = 8 +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/obj/structure/window/reinforced/tinted/frosted, -/obj/structure/machinery/door/window/westright, -/obj/item/tool/soap, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, /area/almayer/living/pilotbunks) "asi" = ( @@ -5841,10 +5726,10 @@ /area/almayer/engineering/engineering_workshop/hangar) "asF" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; name = "\improper AI Reception"; req_access = null; - req_one_access_txt = "91;92"; - access_modified = 1 + req_one_access_txt = "91;92" }, /turf/open/floor/almayer/no_build{ icon_state = "ai_floors" @@ -5952,11 +5837,8 @@ }, /area/almayer/command/cic) "asS" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/starboard_garden) "asT" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, @@ -6219,11 +6101,11 @@ /area/almayer/hull/upper_hull/u_a_s) "atA" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; name = "\improper Spare Bomb Suit"; req_one_access = null; - req_one_access_txt = "35"; - access_modified = 1 + req_one_access_txt = "35" }, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) @@ -6344,24 +6226,19 @@ icon_state = "test_floor4" }, /area/almayer/command/cic) -"atS" = ( -/obj/structure/machinery/light, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "sterile" - }, -/area/almayer/living/pilotbunks) "atT" = ( /obj/structure/toilet{ - dir = 8 + dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "sterile" +/obj/structure/window/reinforced{ + dir = 4; + health = 80 + }, +/obj/structure/window/reinforced{ + dir = 8; + health = 80 }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/pilotbunks) "atU" = ( /obj/structure/machinery/status_display{ @@ -6383,6 +6260,11 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"atW" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "atY" = ( /obj/structure/closet/emcloset, /obj/item/clothing/mask/gas, @@ -6411,11 +6293,18 @@ /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) "aub" = ( -/obj/structure/machinery/vending/cigarette, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 9; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "auc" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -6724,10 +6613,10 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; dir = 2; name = "Telecommunications"; - req_access_txt = "6"; - access_modified = 1 + req_access_txt = "6" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -6866,12 +6755,11 @@ }, /area/almayer/engineering/engineering_workshop/hangar) "auZ" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, /obj/structure/machinery/light, -/turf/open/floor/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "ava" = ( /obj/effect/decal/warning_stripes{ @@ -6910,10 +6798,11 @@ /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "avd" = ( -/obj/item/tool/warning_cone, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, +/turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "ave" = ( /obj/item/reagent_container/glass/bucket/janibucket, @@ -6945,10 +6834,10 @@ /area/almayer/hallways/aft_hallway) "avk" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; req_one_access = null; - req_one_access_txt = "35"; - access_modified = 1 + req_one_access_txt = "35" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -7003,19 +6892,11 @@ /turf/open/floor/plating, /area/almayer/shipboard/weapon_room) "avx" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_x = -16; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/machinery/light{ + dir = 1 }, -/area/almayer/lifeboat_pumps/north1) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "avz" = ( /obj/structure/machinery/light, /obj/structure/machinery/vending/security, @@ -7069,16 +6950,15 @@ }, /area/almayer/medical/containment) "avJ" = ( -/obj/item/clothing/head/helmet/marine{ - pixel_x = 16; - pixel_y = 6 +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Evacuation Airlock SU-5"; + req_access = null }, -/obj/item/reagent_container/food/snacks/grown/poppy, -/obj/effect/step_trigger/message/memorial, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/living/starboard_garden) +/area/almayer/powered) "avK" = ( /turf/open/floor/almayer/no_build{ icon_state = "ai_floors" @@ -7194,14 +7074,11 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/living/pilotbunks) "avV" = ( -/obj/item/reagent_container/food/snacks/grown/poppy{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/effect/step_trigger/message/memorial, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/machinery/power/apc/almayer{ + dir = 1 }, +/obj/structure/bed/chair, +/turf/open/floor/grass, /area/almayer/living/starboard_garden) "avW" = ( /obj/structure/surface/table/reinforced/prison, @@ -7236,12 +7113,12 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cic) "avZ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/obj/structure/machinery/light{ + dir = 1 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/lifeboat_pumps/south1) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "awa" = ( /turf/open/shuttle/dropship{ icon_state = "rasputin15" @@ -7260,32 +7137,16 @@ /turf/closed/wall/almayer/reinforced, /area/almayer/living/pilotbunks) "awe" = ( -/obj/structure/surface/table/almayer, -/obj/item/prop/helmetgarb/gunoil{ - pixel_x = -6; - pixel_y = 9 - }, -/obj/item/tool/screwdriver{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/structure/machinery/light/small{ +/turf/open/floor/plating/almayer, +/area/almayer/living/starboard_garden) +"awi" = ( +/obj/structure/bed/chair{ dir = 8 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) -"awh" = ( -/obj/item/stool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) -"awi" = ( -/obj/structure/closet/fireaxecabinet{ - pixel_y = 32 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "awj" = ( /obj/structure/machinery/photocopier, /obj/structure/sign/safety/terminal{ @@ -7336,7 +7197,9 @@ /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "awt" = ( /turf/open/floor/almayer{ @@ -7402,11 +7265,11 @@ /area/almayer/command/cic) "awB" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; name = "\improper Engineering Storage"; req_one_access = null; - req_one_access_txt = "2;7"; - access_modified = 1 + req_one_access_txt = "2;7" }, /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -7523,10 +7386,13 @@ /area/almayer/living/pilotbunks) "awZ" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/emails{ - dir = 1 +/obj/item/paper_bin/uscm{ + pixel_x = 8; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" }, -/turf/open/floor/almayer, /area/almayer/living/pilotbunks) "axa" = ( /turf/open/shuttle/dropship{ @@ -7614,9 +7480,11 @@ icon_state = "NW-out"; layer = 2.5 }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "green" + icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) "axu" = ( @@ -8055,12 +7923,11 @@ }, /area/almayer/command/cic) "ayP" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/storage/bible, +/obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/living/bridgebunks) +/area/almayer/hull/upper_hull/u_f_s) "ayQ" = ( /obj/structure/platform_decoration{ dir = 4 @@ -8669,11 +8536,11 @@ /area/almayer/command/cic) "aAG" = ( /obj/structure/machinery/door/airlock/almayer/medical{ + access_modified = 1; dir = 2; name = "Morgue"; req_access_txt = "25"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -8814,9 +8681,9 @@ /area/almayer/medical/containment/cell) "aBf" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; name = "Telecommunications"; - req_access_txt = "6"; - access_modified = 1 + req_access_txt = "6" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 8 @@ -9053,9 +8920,9 @@ /area/almayer/hull/upper_hull/u_f_p) "aBP" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; - req_one_access = list(36); - access_modified = 1 + req_one_access = list(36) }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10070,9 +9937,9 @@ name = "\improper Brig Lockdown Shutter" }, /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 2; - req_one_access = list(2,34,30); - access_modified = 1 + req_one_access = list(2,34,30) }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10108,6 +9975,16 @@ icon_state = "plate" }, /area/almayer/command/cichallway) +"aGc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "green" + }, +/area/almayer/hallways/port_hallway) "aGd" = ( /turf/open/floor/almayer{ dir = 8; @@ -10215,26 +10092,25 @@ }, /area/almayer/hallways/aft_hallway) "aGP" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/lifeboat_pumps/north1) "aGQ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/maint{ - req_one_access = null; - req_one_access_txt = "2;30;34" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 9; + icon_state = "red" }, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/lifeboat_pumps/north1) "aGR" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -10312,7 +10188,13 @@ /obj/structure/mirror{ pixel_y = 21 }, -/turf/open/floor/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, /area/almayer/living/numbertwobunks) "aHl" = ( /obj/structure/machinery/portable_atmospherics/canister/air, @@ -10324,9 +10206,7 @@ }, /obj/structure/machinery/door/window/westleft, /obj/structure/window/reinforced/tinted/frosted, -/turf/open/floor/almayer{ - icon_state = "mono" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/numbertwobunks) "aHo" = ( /obj/structure/machinery/computer/working_joe{ @@ -10380,12 +10260,12 @@ pixel_y = 1 }, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; name = "\improper Engineering Storage"; no_panel = 1; req_one_access = null; - req_one_access_txt = "2;7"; - access_modified = 1 + req_one_access_txt = "2;7" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10400,12 +10280,12 @@ pixel_y = 1 }, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; name = "\improper Engineering Storage"; no_panel = 1; req_one_access = null; - req_one_access_txt = "2;7"; - access_modified = 1 + req_one_access_txt = "2;7" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10491,13 +10371,12 @@ }, /area/almayer/living/numbertwobunks) "aHY" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 }, -/obj/structure/machinery/disposal, /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + icon_state = "cargo" }, /area/almayer/shipboard/starboard_missiles) "aHZ" = ( @@ -10598,16 +10477,13 @@ }, /area/almayer/lifeboat_pumps/north1) "aIx" = ( -/obj/item/tool/weldpack, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "aIB" = ( -/obj/effect/decal/cleanable/blood/oil, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north1) +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "aIC" = ( /obj/structure/surface/table/almayer, /obj/effect/decal/warning_stripes{ @@ -10655,10 +10531,10 @@ "aIQ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ + access_modified = 1; name = "\improper XO's Quarters"; req_access = null; - req_access_txt = "1"; - access_modified = 1 + req_access_txt = "1" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10683,10 +10559,10 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + access_modified = 1; dir = 2; name = "Telecommunications"; - req_access_txt = "6"; - access_modified = 1 + req_access_txt = "6" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10928,18 +10804,20 @@ }, /area/almayer/command/cic) "aJJ" = ( -/obj/item/tool/screwdriver, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north1) +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/obj/structure/bed/chair, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "aJL" = ( -/obj/structure/surface/rack, -/obj/item/frame/rack{ - pixel_y = 19 - }, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/snacks/mre_pack/meal5, +/obj/item/device/flashlight/lamp{ + pixel_x = 3; + pixel_y = 12 }, -/area/almayer/lifeboat_pumps/north1) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "aJM" = ( /obj/docking_port/stationary/escape_pod/east, /turf/open/floor/plating, @@ -10949,22 +10827,9 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"aJW" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/starboard_garden) "aKa" = ( /turf/open/floor/almayer, /area/almayer/command/cichallway) -"aKc" = ( -/obj/item/stack/cable_coil, -/obj/structure/surface/rack, -/obj/item/attachable/flashlight/grip, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aKf" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -10976,12 +10841,9 @@ }, /area/almayer/command/cichallway) "aKg" = ( -/obj/structure/surface/rack, -/obj/item/device/multitool, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "aKi" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -11135,19 +10997,28 @@ }, /area/almayer/command/cic) "aKG" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/extinguisher, -/obj/item/tool/crowbar, -/turf/open/floor/almayer, +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, /area/almayer/living/pilotbunks) "aKH" = ( -/obj/structure/janitorialcart, -/obj/item/tool/mop, -/obj/structure/machinery/light/small{ - dir = 1 +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "dark_sterile" }, /area/almayer/living/pilotbunks) "aKI" = ( @@ -11267,14 +11138,24 @@ pixel_x = 8; pixel_y = -26 }, -/obj/structure/surface/rack, -/turf/open/floor/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, /area/almayer/living/numbertwobunks) "aLt" = ( -/obj/structure/toilet{ - dir = 8 +/obj/structure/surface/rack, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, -/turf/open/floor/almayer, /area/almayer/living/numbertwobunks) "aLB" = ( /turf/closed/wall/almayer, @@ -12046,7 +11927,7 @@ "aPm" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/hallways/aft_hallway) "aPn" = ( @@ -12228,6 +12109,8 @@ "aQs" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, +/obj/item/tool/extinguisher, +/obj/item/tool/crowbar, /turf/open/floor/almayer{ dir = 10; icon_state = "orange" @@ -12500,11 +12383,11 @@ /area/almayer/living/captain_mess) "aRF" = ( /obj/structure/machinery/door/airlock/almayer/medical{ + access_modified = 1; dir = 2; name = "Morgue Processing"; req_access_txt = "25"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -12647,10 +12530,6 @@ }, /area/almayer/medical/hydroponics) "aSo" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; pixel_x = -1 @@ -12658,6 +12537,9 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/hydroponics) "aSq" = ( @@ -13484,17 +13366,29 @@ }, /area/almayer/hallways/aft_hallway) "aWm" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + dir = 5; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "aWn" = ( -/obj/structure/bed/chair/comfy/teal, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "aWo" = ( /obj/structure/pipes/unary/outlet_injector, /turf/open/floor/engine, @@ -13516,16 +13410,13 @@ /turf/open/floor/plating, /area/almayer/engineering/lower_engineering) "aWs" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +/obj/structure/machinery/power/apc/almayer{ + dir = 4 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/north1) +/area/almayer/hull/upper_hull/u_m_s) "aWt" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -13537,12 +13428,13 @@ }, /area/almayer/living/bridgebunks) "aWu" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = -32 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) "aWw" = ( @@ -13808,35 +13700,23 @@ /turf/open/floor/plating, /area/almayer/command/corporateliason) "aYq" = ( -/obj/item/tool/warning_cone{ - pixel_x = -12; - pixel_y = 16 - }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "red" }, -/area/almayer/lifeboat_pumps/north1) +/area/almayer/living/starboard_garden) "aYr" = ( -/obj/structure/surface/rack, -/obj/item/frame/rack{ - layer = 3.1; - pixel_y = 19 - }, -/obj/item/reagent_container/food/snacks/cracker, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 +/obj/structure/bed/chair/office/dark{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/north1) +/area/almayer/hull/upper_hull/u_m_s) "aYs" = ( -/obj/structure/machinery/light{ - dir = 8 - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 10; + icon_state = "red" }, /area/almayer/living/starboard_garden) "aYt" = ( @@ -13851,10 +13731,6 @@ }, /area/almayer/hallways/hangar) "aYz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, /obj/structure/closet/firecloset, /turf/open/floor/almayer{ icon_state = "cargo" @@ -13904,12 +13780,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) -"aYM" = ( -/obj/structure/largecrate/supply/supplies/tables_racks, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "aYO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -14258,6 +14128,9 @@ pixel_x = 8; pixel_y = -32 }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) "bat" = ( @@ -14597,18 +14470,14 @@ }, /area/almayer/hallways/starboard_hallway) "bbV" = ( -/obj/structure/largecrate/random/secure, -/obj/item/reagent_container/food/drinks/cans/beer{ - pixel_x = 6; - pixel_y = 12 - }, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/machinery/light{ + dir = 8 }, -/area/almayer/lifeboat_pumps/north2) +/turf/open/floor/almayer, +/area/almayer/shipboard/starboard_missiles) "bbX" = ( -/obj/structure/machinery/constructable_frame, /obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/constructable_frame, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -14620,11 +14489,11 @@ }, /area/almayer/squads/alpha) "bbZ" = ( -/obj/structure/machinery/constructable_frame, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/bed/chair{ + dir = 1 }, -/area/almayer/lifeboat_pumps/north2) +/turf/open/floor/almayer, +/area/almayer/shipboard/starboard_missiles) "bca" = ( /obj/structure/machinery/cm_vending/gear/smartgun, /obj/structure/sign/safety/hazard{ @@ -15446,6 +15315,13 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"bfP" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "bfV" = ( /obj/structure/machinery/landinglight/ds2{ dir = 8 @@ -15863,11 +15739,11 @@ /area/almayer/hallways/aft_hallway) "biu" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ + access_modified = 1; dir = 2; name = "\improper Chemistry Laboratory"; req_access_txt = "20"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -15929,17 +15805,19 @@ }, /area/almayer/lifeboat_pumps/north2) "biT" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/area/almayer/living/starboard_garden) "biV" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/plating, +/area/almayer/living/starboard_garden) "bja" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/secure_data{ @@ -16031,8 +15909,7 @@ "bjJ" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" + dir = 4 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) @@ -16148,11 +16025,11 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/medical/glass{ + access_modified = 1; dir = 2; name = "\improper Nurse Office"; req_access_txt = "20"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -16353,11 +16230,11 @@ /area/almayer/living/offices) "blq" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ + access_modified = 1; dir = 2; name = "Firing Range"; req_access = null; - req_one_access_txt = "2;4;7;9;21"; - access_modified = 1 + req_one_access_txt = "2;4;7;9;21" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -16771,6 +16648,12 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"bny" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "bnA" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -16868,6 +16751,17 @@ icon_state = "plate" }, /area/almayer/squads/bravo) +"bnZ" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "bob" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -16995,12 +16889,7 @@ /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop) "boL" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +/turf/open/floor/almayer, /area/almayer/living/starboard_garden) "boN" = ( /obj/structure/surface/table/almayer, @@ -17086,11 +16975,11 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + access_modified = 1; dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -17323,9 +17212,9 @@ }, /area/almayer/hallways/hangar) "bqG" = ( -/obj/structure/largecrate/supply/supplies/flares, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 6; + icon_state = "silver" }, /area/almayer/hull/upper_hull/u_m_p) "bqH" = ( @@ -18240,10 +18129,7 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) "bvl" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/command/corporateliason) "bvr" = ( @@ -18328,6 +18214,10 @@ }, /area/almayer/hallways/starboard_umbilical) "bvU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; name = "\improper Liasion's Bathroom" @@ -18800,18 +18690,13 @@ /obj/structure/bed/chair/office/dark{ dir = 8 }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, /turf/open/floor/almayer, /area/almayer/command/corporateliason) "byq" = ( /obj/structure/machinery/light{ dir = 4 }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/command/corporateliason) "byr" = ( @@ -18992,19 +18877,18 @@ /obj/structure/machinery/door/window/westright, /obj/structure/window/reinforced/tinted/frosted, /obj/item/tool/soap/deluxe, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/command/corporateliason) "bzy" = ( /turf/closed/wall/almayer, /area/almayer/hallways/vehiclehangar) "bzz" = ( -/obj/item/stack/sheet/metal, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/area/almayer/lifeboat_pumps/north1) +/obj/structure/machinery/disposal, +/turf/open/floor/almayer, +/area/almayer/shipboard/starboard_missiles) "bzA" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -19309,7 +19193,7 @@ "bAX" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/hallways/starboard_hallway) "bAY" = ( @@ -19501,14 +19385,11 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/vehiclehangar) "bBC" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/bed/chair{ dir = 4 }, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "green" - }, -/area/almayer/hallways/aft_hallway) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "bBD" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -19577,11 +19458,11 @@ dir = 2 }, /obj/structure/machinery/door/airlock/almayer/security{ + access_modified = 1; dir = 2; name = "\improper Security Checkpoint"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -19827,6 +19708,20 @@ icon_state = "plate" }, /area/almayer/shipboard/weapon_room) +"bDe" = ( +/obj/structure/surface/table/almayer, +/obj/item/circuitboard{ + pixel_x = 12; + pixel_y = 7 + }, +/obj/item/tool/crowbar{ + pixel_x = 6; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_p) "bDn" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/closed/wall/almayer, @@ -19862,9 +19757,7 @@ /obj/structure/bed/chair{ dir = 8 }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +/turf/open/floor/almayer, /area/almayer/living/starboard_garden) "bDF" = ( /obj/structure/machinery/door/poddoor/almayer{ @@ -19887,10 +19780,10 @@ /area/almayer/hallways/hangar) "bDL" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/almayer{ + access_modified = 1; dir = 1; name = "\improper Auxiliary Combat Support Secondary Preparations"; - req_one_access = "19;27;22"; - access_modified = 1 + req_one_access = "19;27;22" }, /turf/open/floor/almayer{ icon_state = "plate" @@ -20802,11 +20695,11 @@ }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + access_modified = 1; dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -21076,9 +20969,9 @@ "bIu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; name = "Storage"; - req_one_access = "2;21"; - access_modified = 1 + req_one_access = "2;21" }, /turf/open/floor/almayer{ icon_state = "plate" @@ -21274,10 +21167,10 @@ /area/almayer/engineering/lower_engineering) "bJl" = ( /obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; dir = 1; name = "\improper Auxiliary Support Officers Quarters"; - req_one_access_txt = "37"; - access_modified = 1 + req_one_access_txt = "37" }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -21462,11 +21355,11 @@ }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + access_modified = 1; dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; - req_one_access_txt = "7;19"; - access_modified = 1 + req_one_access_txt = "7;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -21940,7 +21833,7 @@ /area/almayer/shipboard/weapon_room) "bLO" = ( /obj/structure/bed/chair{ - dir = 1 + dir = 8 }, /turf/open/floor/grass, /area/almayer/living/starboard_garden) @@ -23993,8 +23886,15 @@ }, /area/almayer/hallways/port_hallway) "bUA" = ( -/obj/docking_port/stationary/escape_pod/north, -/turf/open/floor/plating, +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver, +/obj/item/prop/helmetgarb/gunoil{ + pixel_x = -7; + pixel_y = 12 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/hull/upper_hull/u_m_s) "bUE" = ( /turf/open/floor/almayer{ @@ -24318,15 +24218,16 @@ }, /area/almayer/shipboard/port_point_defense) "bWd" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Evacuation Airlock SU-6"; - req_access = null +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/bed/chair{ + dir = 8 }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/powered) +/area/almayer/living/starboard_garden) "bWe" = ( /turf/open/floor/almayer{ dir = 5; @@ -24334,13 +24235,14 @@ }, /area/almayer/shipboard/port_point_defense) "bWf" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/effect/spawner/random/tool, +/obj/structure/machinery/light, +/obj/structure/bed/chair{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "bWh" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; @@ -24351,12 +24253,6 @@ icon_state = "test_floor4" }, /area/almayer/powered) -"bWj" = ( -/obj/structure/largecrate/supply, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "bWn" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -24383,12 +24279,13 @@ }, /area/almayer/shipboard/port_point_defense) "bWq" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/toolbox, +/obj/structure/bed/chair{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "bWr" = ( /obj/structure/machinery/door/airlock/almayer/maint, /turf/open/floor/almayer{ @@ -24444,13 +24341,9 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/living/auxiliary_officer_office) "bWK" = ( -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/starboard_garden) +/obj/docking_port/stationary/escape_pod/north, +/turf/open/floor/plating, +/area/almayer/hull/upper_hull/u_m_s) "bWL" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -24981,12 +24874,6 @@ }, /area/almayer/command/cic) "bZa" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22"; - access_modified = 1 - }, /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -25009,16 +24896,12 @@ }, /area/almayer/lifeboat_pumps/north1) "bZg" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 1 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 9 }, -/area/almayer/living/pilotbunks) +/obj/structure/machinery/light, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "bZi" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -25258,11 +25141,11 @@ "cau" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/airlock/almayer/security/glass{ + access_modified = 1; dir = 2; name = "Firing Range"; req_access = null; - req_one_access_txt = "2;4;7;9;21"; - access_modified = 1 + req_one_access_txt = "2;4;7;9;21" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -25637,6 +25520,10 @@ /obj/structure/sign/safety/storage{ pixel_y = 32 }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 3 + }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) "cbW" = ( @@ -25675,17 +25562,6 @@ icon_state = "red" }, /area/almayer/living/cryo_cells) -"ccc" = ( -/obj/structure/sign/safety/bathunisex{ - pixel_x = 8; - pixel_y = 25 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = 8; - pixel_y = -25 - }, -/turf/open/floor/almayer, -/area/almayer/living/pilotbunks) "ccd" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad_prep, /turf/open/floor/almayer{ @@ -26232,9 +26108,11 @@ }, /area/almayer/hallways/port_umbilical) "ceu" = ( -/obj/item/trash/barcardine, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) +/turf/open/floor/almayer{ + dir = 1; + icon_state = "green" + }, +/area/almayer/living/starboard_garden) "cev" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -26259,13 +26137,8 @@ }, /area/almayer/hallways/port_umbilical) "ceC" = ( -/obj/structure/machinery/light, -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +/obj/structure/prop/almayer/ship_memorial, +/turf/open/floor/plating/almayer, /area/almayer/living/starboard_garden) "ceD" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ @@ -26308,12 +26181,22 @@ }, /area/almayer/hallways/repair_bay) "ceZ" = ( -/obj/structure/bed/sofa/south, +/obj/structure/bed/sofa/south/grey/left, /turf/open/floor/almayer{ dir = 9; icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"cfk" = ( +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/port_missiles) "cfo" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) @@ -26764,17 +26647,15 @@ }, /area/almayer/squads/req) "cit" = ( -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/structure/bed/chair{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/surface/table/almayer, +/obj/item/paper_bin{ + pixel_x = -6; + pixel_y = 7 }, -/area/almayer/living/starboard_garden) +/obj/item/tool/pen, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "ciu" = ( /obj/structure/platform{ dir = 8 @@ -27681,10 +27562,10 @@ }, /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/security/reinforced{ + access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -27693,10 +27574,10 @@ "cmJ" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/security/reinforced{ + access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -28479,6 +28360,7 @@ pixel_x = 8; pixel_y = -32 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_p) "czM" = ( @@ -28916,6 +28798,7 @@ /obj/structure/machinery/light{ dir = 4 }, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) "cIi" = ( @@ -28995,7 +28878,10 @@ /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor/almayer, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "cJB" = ( /obj/structure/machinery/vending/coffee, @@ -29438,11 +29324,6 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, -/obj/structure/machinery/door/airlock/almayer/medical/glass{ - dir = 2; - name = "\improper Port Viewing Room"; - req_one_access = null - }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -29537,6 +29418,12 @@ icon_state = "orange" }, /area/almayer/engineering/lower_engineering) +"cWv" = ( +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/living/starboard_garden) "cWy" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/item/reagent_container/food/snacks/packaged_burger, @@ -29748,14 +29635,19 @@ }, /area/almayer/shipboard/brig/surgery) "dav" = ( -/obj/structure/machinery/constructable_frame{ - icon_state = "box_2" +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; + dir = 2; + req_one_access = list(2,34,30) }, -/obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hull/upper_hull/u_f_s) "daz" = ( /turf/closed/wall/almayer/white/hull, /area/almayer/command/airoom) @@ -30058,10 +29950,6 @@ pixel_y = 3 }, /obj/item/device/camera, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, /turf/open/floor/almayer, /area/almayer/command/corporateliason) "dhR" = ( @@ -30077,8 +29965,7 @@ "dhU" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - dir = 5; - icon_state = "green" + icon_state = "cargo" }, /area/almayer/hallways/port_hallway) "dhZ" = ( @@ -30565,6 +30452,7 @@ /area/almayer/hull/lower_hull/l_f_p) "dqN" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ icon_state = "green" }, @@ -30747,14 +30635,10 @@ }, /area/almayer/living/briefing) "dux" = ( -/obj/structure/surface/table/almayer, -/obj/item/pizzabox{ - pixel_y = 10 - }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "mono" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/living/starboard_garden) "duF" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/almayer{ @@ -31134,9 +31018,11 @@ /obj/structure/sign/nosmoking_2{ pixel_x = 32 }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) "dCK" = ( @@ -31194,6 +31080,7 @@ /obj/structure/machinery/light/small{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -31306,6 +31193,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"dGc" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_f_p) "dGl" = ( /obj/effect/step_trigger/teleporter_vector{ name = "Almayer_AresUp"; @@ -31327,7 +31220,10 @@ /obj/structure/pipes/vents/scrubber{ dir = 8 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "blue" + }, /area/almayer/living/pilotbunks) "dGw" = ( /obj/effect/step_trigger/clone_cleaner, @@ -31348,8 +31244,14 @@ /area/almayer/hull/lower_hull/l_a_p) "dGC" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, /area/almayer/lifeboat_pumps/south1) "dGD" = ( /obj/structure/closet/secure_closet{ @@ -31373,11 +31275,11 @@ /area/almayer/shipboard/brig/processing) "dGW" = ( /obj/structure/machinery/door/airlock/almayer/security{ + access_modified = 1; dir = 2; name = "\improper Security Checkpoint"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -31567,10 +31469,9 @@ }, /area/almayer/shipboard/sea_office) "dLz" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/backpack/satchel, +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south1) "dLE" = ( @@ -31715,6 +31616,16 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) +"dQE" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/janitorialcart, +/obj/item/tool/mop, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_p) "dQH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -31804,6 +31715,7 @@ /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" }, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer{ dir = 9; icon_state = "red" @@ -31857,6 +31769,10 @@ pixel_y = 6; serial_number = 12 }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -31896,16 +31812,25 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_s) "dUI" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Port Viewing Room" + }, /turf/open/floor/almayer{ - dir = 9; - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/port_missiles) +/area/almayer/hull/upper_hull/u_f_s) "dUS" = ( /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_two) +"dUZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/shipboard/port_missiles) "dVd" = ( /obj/structure/machinery/seed_extractor{ density = 0; @@ -32056,7 +31981,10 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "blue" + }, /area/almayer/living/pilotbunks) "dYh" = ( /obj/structure/machinery/power/apc/almayer{ @@ -32540,6 +32468,9 @@ /area/almayer/hallways/hangar) "ehj" = ( /obj/item/stack/catwalk, +/obj/structure/machinery/status_display{ + pixel_y = 30 + }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) "ehx" = ( @@ -32547,6 +32478,14 @@ /obj/effect/landmark/late_join/alpha, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) +"ehH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 3 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/starboard_hallway) "ehR" = ( /obj/structure/window/reinforced{ dir = 4; @@ -32684,7 +32623,7 @@ "ejp" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/hallways/aft_hallway) "ejt" = ( @@ -32732,18 +32671,25 @@ "eky" = ( /turf/open/floor/almayer, /area/almayer/command/lifeboat) -"ekY" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +"ekO" = ( +/obj/structure/machinery/cryopod{ + pixel_y = 6 }, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 +/obj/structure/sign/safety/cryo{ + pixel_x = -17 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/hull/upper_hull/u_m_p) +"ekY" = ( +/obj/structure/machinery/door/airlock/almayer/generic/glass{ + name = "\improper Memorial Room" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/starboard_garden) "elf" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -32761,6 +32707,7 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) "elq" = ( @@ -32952,8 +32899,7 @@ eftpos_name = "Cargo Bay EFTPOS scanner"; pixel_x = -10 }, -/obj/item/tool/stamp{ - name = "Requisition Officer's stamp"; +/obj/item/tool/stamp/ro{ pixel_x = -8; pixel_y = 10 }, @@ -33225,17 +33171,15 @@ }, /area/almayer/command/airoom) "euO" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/poddoor/shutters/almayer/open{ - dir = 2; - id = "Warden Office Shutters"; - name = "\improper Privacy Shutters" +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 }, /turf/open/floor/almayer{ - dir = 5; + dir = 10; icon_state = "red" }, -/area/almayer/shipboard/brig/main_office) +/area/almayer/lifeboat_pumps/north1) "euV" = ( /turf/open/floor/almayer/uscm/directional{ dir = 8; @@ -33259,17 +33203,12 @@ /area/almayer/living/basketball) "evg" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/item/clipboard{ - pixel_x = -6 - }, -/obj/item/tool/pen/blue{ - pixel_x = -6 +/obj/structure/machinery/computer/emails{ + dir = 1 }, -/obj/item/paper_bin/uscm{ - pixel_x = 8; - pixel_y = 12 +/turf/open/floor/almayer{ + icon_state = "bluefull" }, -/turf/open/floor/almayer, /area/almayer/living/pilotbunks) "evk" = ( /obj/structure/surface/rack, @@ -33717,6 +33656,17 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"eFM" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "eFT" = ( /obj/structure/bed/sofa/vert/grey, /obj/structure/bed/sofa/vert/grey{ @@ -33724,6 +33674,14 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) +"eGb" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "eGg" = ( /obj/structure/machinery/door/poddoor/railing{ dir = 8; @@ -33950,12 +33908,17 @@ /obj/structure/mirror{ pixel_x = 28 }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, /area/almayer/command/corporateliason) "eKM" = ( /obj/structure/surface/rack, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -33993,6 +33956,19 @@ icon_state = "test_floor4" }, /area/almayer/engineering/laundry) +"eMn" = ( +/obj/structure/machinery/light, +/obj/structure/sign/safety/waterhazard{ + pixel_y = -32 + }, +/obj/structure/sign/safety/rewire{ + pixel_y = -32; + pixel_x = 14 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "eMP" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -34070,6 +34046,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"eOM" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Evacuation Airlock PU-6"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/powered) "eOR" = ( /obj/structure/machinery/light{ dir = 4 @@ -34175,15 +34161,16 @@ /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) "eRR" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/obj/structure/machinery/light{ - dir = 1 +/obj/item/clothing/head/helmet/marine{ + pixel_x = 16; + pixel_y = 6 }, +/obj/item/reagent_container/food/snacks/grown/poppy, +/obj/effect/step_trigger/message/memorial, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/living/starboard_garden) "eSo" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -34564,6 +34551,12 @@ icon_state = "red" }, /area/almayer/hull/upper_hull/u_a_p) +"fad" = ( +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/hallways/aft_hallway) "fau" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/junction{ @@ -35038,10 +35031,10 @@ /area/almayer/living/briefing) "fmf" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ + access_modified = 1; dir = 2; name = "\improper Requisitions Break Room"; - req_one_access = "19;21"; - access_modified = 1 + req_one_access = "19;21" }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -35071,7 +35064,9 @@ /obj/structure/bed/chair/comfy{ dir = 8 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "bluecorner" + }, /area/almayer/living/pilotbunks) "fmS" = ( /obj/structure/closet/secure_closet/engineering_electrical, @@ -35102,8 +35097,7 @@ dir = 8 }, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "redfull" }, /area/almayer/medical/upper_medical) "fnC" = ( @@ -35177,6 +35171,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/medical_science) +"foR" = ( +/obj/structure/largecrate/random/case, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_p) "fpd" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -35252,6 +35252,17 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) +"fqx" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "silver" + }, +/area/almayer/hull/upper_hull/u_m_p) "fqO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -35343,10 +35354,10 @@ dir = 2 }, /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + access_modified = 1; name = "\improper Cryogenics Bay"; req_access = null; - req_one_access_txt = "1;3"; - access_modified = 1 + req_one_access_txt = "1;3" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -35377,7 +35388,15 @@ pixel_x = -8; pixel_y = 5 }, -/turf/open/floor/plating/plating_catwalk, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, /area/almayer/shipboard/brig/armory) "fsH" = ( /obj/structure/disposalpipe/segment{ @@ -35389,6 +35408,15 @@ }, /area/almayer/hallways/port_hallway) "fsT" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, /turf/open/floor/almayer{ dir = 5; icon_state = "plating" @@ -35430,12 +35458,9 @@ }, /area/almayer/hallways/vehiclehangar) "fuz" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted/frosted, +/obj/structure/machinery/cm_vending/clothing/pilot_officer, /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "plate" }, /area/almayer/living/pilotbunks) "fuB" = ( @@ -35486,11 +35511,17 @@ }, /area/almayer/living/briefing) "fvu" = ( -/obj/item/tool/crowbar, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_s) +"fvv" = ( +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + name = "\improper Port Viewing Room" + }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hull/upper_hull/u_f_p) "fvB" = ( /obj/structure/closet/secure_closet/staff_officer/armory/m4a1, /turf/open/floor/almayer{ @@ -35522,15 +35553,15 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/port_point_defense) "fwD" = ( -/obj/structure/surface/table/almayer, -/obj/item/trash/plate{ +/obj/item/reagent_container/food/snacks/grown/poppy{ pixel_x = 4; - pixel_y = 9 + pixel_y = 4 }, +/obj/effect/step_trigger/message/memorial, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/living/starboard_garden) "fwF" = ( /obj/structure/largecrate/random/case/double, /obj/structure/machinery/camera/autoname/almayer{ @@ -35786,10 +35817,7 @@ /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = -25 }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) "fDG" = ( /obj/structure/machinery/vending/coffee, @@ -35857,9 +35885,9 @@ /area/almayer/command/cichallway) "fEo" = ( /obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; name = "Kitchen"; - req_one_access_txt = "30;19"; - access_modified = 1 + req_one_access_txt = "30;19" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -36095,9 +36123,9 @@ /area/almayer/squads/bravo) "fIX" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/almayer{ + access_modified = 1; name = "\improper Requisitions Auxiliary Storage Room"; - req_one_access = "19;21"; - access_modified = 1 + req_one_access = "19;21" }, /turf/open/floor/almayer{ icon_state = "plate" @@ -36487,7 +36515,6 @@ /area/almayer/medical/upper_medical) "fQF" = ( /obj/structure/surface/rack, -/obj/item/storage/bag/plasticbag, /obj/item/storage/firstaid/regular, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_s) @@ -36538,7 +36565,9 @@ /obj/structure/sign/safety/storage{ pixel_x = -17 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "red" + }, /area/almayer/lifeboat_pumps/north1) "fSF" = ( /obj/structure/sink{ @@ -36898,9 +36927,7 @@ /obj/structure/toilet{ dir = 8 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/command/corporateliason) "gbX" = ( /obj/structure/disposalpipe/segment{ @@ -36912,6 +36939,15 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/processing) +"gcc" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_f_p) "gcK" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -36927,10 +36963,10 @@ /area/almayer/hull/lower_hull/l_a_s) "gcN" = ( /obj/structure/machinery/door/airlock/almayer/command{ + access_modified = 1; name = "\improper Senior Enlisted Advisor's Office"; req_access = null; - req_access_txt = "19;29"; - access_modified = 1 + req_access_txt = "19;29" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -37177,6 +37213,10 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) +"ghW" = ( +/obj/effect/landmark/start/liaison, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_p) "ghX" = ( /obj/structure/window/reinforced/tinted{ pixel_y = -8 @@ -37464,10 +37504,10 @@ /area/almayer/lifeboat_pumps/north1) "gol" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; dir = 1; req_one_access = null; - req_one_access_txt = "7;19"; - access_modified = 1 + req_one_access_txt = "7;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -38571,9 +38611,9 @@ /area/almayer/hull/lower_hull/l_f_p) "gMA" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 8; - req_one_access = list(2,34,30); - access_modified = 1 + req_one_access = list(2,34,30) }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -39158,8 +39198,8 @@ }, /area/almayer/command/cichallway) "haM" = ( -/obj/structure/machinery/constructable_frame, /obj/effect/decal/cleanable/blood/oil, +/obj/structure/machinery/constructable_frame, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -39369,6 +39409,12 @@ icon_state = "plate" }, /area/almayer/engineering/engine_core) +"heH" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "heQ" = ( /obj/structure/bed/chair, /obj/structure/extinguisher_cabinet{ @@ -39663,6 +39709,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/port_point_defense) +"hkE" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hallways/port_hallway) "hkG" = ( /obj/structure/sign/safety/ammunition{ pixel_y = -32 @@ -39801,6 +39853,20 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) +"hnI" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + name = "\improper Flight Crew Quarters"; + req_access_txt = null; + req_one_access_txt = "19;22" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/pilotbunks) "hnV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -40165,6 +40231,16 @@ icon_state = "plate" }, /area/almayer/squads/charlie_delta_shared) +"hyt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "green" + }, +/area/almayer/hallways/starboard_hallway) "hyw" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -40439,6 +40515,10 @@ icon_state = "plate" }, /area/almayer/medical/lower_medical_medbay) +"hDv" = ( +/obj/effect/landmark/start/reporter, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_p) "hDw" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -40513,10 +40593,10 @@ /area/almayer/medical/medical_science) "hFF" = ( /obj/structure/machinery/door/airlock/almayer/medical{ + access_modified = 1; name = "Autopsy"; req_access_txt = "25"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -40638,9 +40718,9 @@ name = "\improper Privacy Shutters" }, /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; req_access_txt = "200"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -41056,11 +41136,11 @@ /area/almayer/living/grunt_rnr) "hSI" = ( /obj/structure/machinery/door/airlock/almayer/medical{ + access_modified = 1; dir = 2; name = "Morgue"; req_access_txt = "25"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -41268,6 +41348,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"hWB" = ( +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "hWJ" = ( /obj/structure/largecrate/random/case/small, /turf/open/floor/almayer{ @@ -41314,6 +41404,15 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) +"hXV" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "hXY" = ( /turf/open/floor/almayer{ dir = 4; @@ -41718,21 +41817,33 @@ /area/almayer/squads/bravo) "iid" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 2; req_one_access = null; - req_one_access_txt = "19;34;30"; - access_modified = 1 + req_one_access_txt = "19;34;30" }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_m_p) "iit" = ( -/obj/effect/landmark/ert_spawns/distress_cryo, -/obj/effect/landmark/late_join, -/obj/effect/landmark/start/reporter, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/cryo_cells) +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) "iiz" = ( /obj/structure/surface/rack, /obj/item/reagent_container/food/drinks/bottle/sake{ @@ -41891,6 +42002,9 @@ /area/almayer/hallways/hangar) "ilJ" = ( /obj/structure/bed/chair, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) "ilZ" = ( @@ -41918,11 +42032,14 @@ /area/almayer/living/offices/flight) "ina" = ( /obj/structure/surface/table/almayer, -/obj/effect/spawner/random/tool, +/obj/structure/machinery/computer/emails{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hull/upper_hull/u_m_s) "ins" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -42024,11 +42141,11 @@ }, /area/almayer/squads/alpha_bravo_shared) "ipK" = ( -/obj/structure/largecrate/random/case/small, +/obj/effect/step_trigger/message/memorial, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_s) +/area/almayer/living/starboard_garden) "ipQ" = ( /obj/structure/surface/rack, /obj/item/storage/fancy/vials/empty, @@ -42076,9 +42193,9 @@ /area/almayer/squads/req) "iqp" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; req_one_access = null; - req_one_access_txt = "37"; - access_modified = 1 + req_one_access_txt = "37" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -43152,6 +43269,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/lifeboat) +"iPH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "iPS" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ @@ -43230,9 +43357,9 @@ /area/almayer/hull/lower_hull/l_f_p) "iQL" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 2; - req_one_access = list(2,34,30); - access_modified = 1 + req_one_access = list(2,34,30) }, /obj/structure/prop/invuln/lattice_prop{ dir = 1; @@ -43577,12 +43704,14 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_p) "iYr" = ( -/obj/structure/disposalpipe/segment{ - dir = 1; - icon_state = "pipe-c" +/obj/structure/machinery/light{ + dir = 4 }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) +/turf/open/floor/almayer{ + dir = 4; + icon_state = "green" + }, +/area/almayer/living/starboard_garden) "iYt" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -43902,6 +44031,11 @@ dir = 8; name = "ship-grade camera" }, +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, /turf/open/floor/almayer{ dir = 5; icon_state = "red" @@ -44148,11 +44282,21 @@ icon_state = "cargo" }, /area/almayer/living/bridgebunks) +"jhY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/hull/upper_hull/u_m_p) "jip" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + access_modified = 1; name = "\improper Main Kitchen"; - req_one_access_txt = "30;19"; - access_modified = 1 + req_one_access_txt = "30;19" }, /turf/open/floor/prison{ icon_state = "kitchen" @@ -44443,6 +44587,19 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) +"jnA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/brig/armory) "jnD" = ( /turf/open/floor/almayer{ dir = 1; @@ -44566,6 +44723,7 @@ icon_state = "NW-out"; pixel_y = 1 }, +/obj/structure/bed/chair/comfy, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -44598,6 +44756,15 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"jsP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "jtj" = ( /obj/structure/machinery/status_display{ pixel_y = 30 @@ -44708,14 +44875,11 @@ }, /area/almayer/hull/upper_hull/u_a_p) "jvJ" = ( -/obj/structure/machinery/light{ - dir = 4 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "plate" }, -/area/almayer/shipboard/starboard_missiles) +/area/almayer/hull/upper_hull/u_f_s) "jvX" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -45255,11 +45419,14 @@ }, /area/almayer/hull/lower_hull/l_a_s) "jMm" = ( -/obj/effect/spawner/random/tool, +/obj/structure/closet/secure_closet/personal/cabinet{ + req_access = null + }, +/obj/item/clothing/mask/rebreather/scarf, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south2) +/area/almayer/living/pilotbunks) "jMr" = ( /obj/structure/surface/table/almayer, /obj/item/storage/donut_box{ @@ -45764,6 +45931,15 @@ icon_state = "plate" }, /area/almayer/living/offices) +"jWH" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "jWU" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -45912,8 +46088,7 @@ "jZY" = ( /obj/structure/closet/l3closet/virology, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "redfull" }, /area/almayer/medical/upper_medical) "kaj" = ( @@ -45921,9 +46096,11 @@ /obj/effect/decal/warning_stripes{ icon_state = "SW-out" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ - dir = 9; - icon_state = "green" + icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) "kan" = ( @@ -46385,6 +46562,14 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"kkE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 3 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "kkO" = ( /obj/structure/stairs/perspective{ dir = 8; @@ -46780,7 +46965,8 @@ /area/almayer/shipboard/brig/evidence_storage) "ktn" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N" + icon_state = "N"; + pixel_y = 2 }, /obj/structure/closet/secure_closet/guncabinet/red, /obj/item/weapon/gun/rifle/m4ra, @@ -46824,6 +47010,12 @@ icon_state = "greencorner" }, /area/almayer/living/grunt_rnr) +"kuk" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "kuu" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /obj/structure/disposalpipe/segment{ @@ -46990,12 +47182,13 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) "kyY" = ( -/obj/structure/largecrate/random/case/small, -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = -25 +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) "kyZ" = ( @@ -47122,6 +47315,13 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) +"kBK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) "kBP" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -47183,6 +47383,7 @@ /area/almayer/hull/lower_hull/l_f_p) "kDb" = ( /obj/structure/surface/rack, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) "kDi" = ( @@ -47225,15 +47426,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) -"kDt" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/south1) "kDA" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer{ @@ -47267,11 +47459,15 @@ }, /area/almayer/medical/morgue) "kFe" = ( -/obj/structure/machinery/constructable_frame, +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south2) +/area/almayer/living/pilotbunks) "kFk" = ( /obj/structure/closet/secure_closet/commander, /turf/open/floor/wood/ship, @@ -47349,11 +47545,19 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"kGI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/hallways/aft_hallway) "kGL" = ( /obj/effect/step_trigger/clone_cleaner, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "green" + icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) "kGQ" = ( @@ -47489,6 +47693,14 @@ /obj/structure/bed/chair/comfy/orange, /turf/open/floor/almayer, /area/almayer/shipboard/brig/main_office) +"kJL" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "kJV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -47711,6 +47923,10 @@ /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) "kOv" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "cargo_arrow" }, @@ -47720,7 +47936,13 @@ icon_state = "N"; pixel_y = 1 }, -/obj/structure/bed/chair/comfy, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/item/clipboard{ + pixel_x = -6 + }, +/obj/item/tool/pen/blue{ + pixel_x = -6 + }, /turf/open/floor/almayer{ icon_state = "bluefull" }, @@ -47986,12 +48208,14 @@ /turf/open/floor/almayer, /area/almayer/hallways/hangar) "kUh" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + dir = 1; name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22"; - access_modified = 1 + req_access_txt = null; + req_one_access_txt = "19;22" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -48025,6 +48249,13 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) +"kUQ" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/machinery/constructable_frame, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "kUV" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -48076,11 +48307,11 @@ }, /area/almayer/command/cichallway) "kWT" = ( -/obj/structure/machinery/power/apc/almayer/hardened, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 9; + icon_state = "blue" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/living/pilotbunks) "kWY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -49081,6 +49312,11 @@ icon_state = "plate" }, /area/almayer/living/port_emb) +"lrF" = ( +/obj/structure/machinery/light, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "lrT" = ( /obj/structure/bed/chair, /turf/open/floor/almayer, @@ -49184,6 +49420,13 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"ltK" = ( +/obj/structure/window/framed/almayer, +/obj/structure/curtain/open/shower{ + name = "hypersleep curtain" + }, +/turf/open/floor/plating, +/area/almayer/hull/upper_hull/u_m_p) "ltU" = ( /obj/structure/filingcabinet, /turf/open/floor/almayer{ @@ -49315,13 +49558,11 @@ }, /area/almayer/command/cic) "lvA" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - dir = 1 - }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 1; + icon_state = "blue" }, -/area/almayer/lifeboat_pumps/north1) +/area/almayer/living/pilotbunks) "lvZ" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/almayer/locked{ @@ -49333,10 +49574,10 @@ /area/almayer/shipboard/brig/perma) "lwi" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; req_one_access = null; - req_one_access_txt = "2;7"; - access_modified = 1 + req_one_access_txt = "2;7" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -49424,6 +49665,12 @@ icon_state = "plate" }, /area/almayer/living/auxiliary_officer_office) +"lxT" = ( +/obj/structure/machinery/constructable_frame, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "lxW" = ( /obj/structure/sign/prop2{ pixel_y = 29 @@ -49472,6 +49719,13 @@ icon_state = "plate" }, /area/almayer/living/auxiliary_officer_office) +"lza" = ( +/obj/structure/bed/sofa/vert/grey, +/obj/structure/bed/sofa/vert/grey/top{ + pixel_y = 11 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "lzj" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -49713,18 +49967,23 @@ }, /area/almayer/squads/req) "lDN" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 }, -/obj/structure/sign/safety/coffee{ - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 }, -/obj/structure/sign/safety/east{ - pixel_x = 15; - pixel_y = 32 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/medical/hydroponics) "lDV" = ( /obj/effect/landmark/start/marine/medic/bravo, /obj/effect/landmark/late_join/bravo, @@ -50196,7 +50455,7 @@ }, /turf/open/floor/almayer{ dir = 4; - icon_state = "redcorner" + icon_state = "red" }, /area/almayer/shipboard/brig/main_office) "lNw" = ( @@ -50240,6 +50499,10 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -50636,16 +50899,15 @@ }, /area/almayer/shipboard/brig/general_equipment) "maq" = ( -/obj/structure/machinery/cryopod/right{ - pixel_y = 6 - }, /obj/structure/sign/safety/cryo{ pixel_x = 7; pixel_y = -26 }, -/turf/open/floor/almayer{ - icon_state = "cargo" +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, +/turf/open/floor/almayer, /area/almayer/command/corporateliason) "maw" = ( /obj/structure/disposalpipe/segment, @@ -50856,6 +51118,10 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) +"mgy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/cic_hallway) "mgF" = ( /obj/structure/window/reinforced{ dir = 4; @@ -51036,6 +51302,11 @@ pixel_x = -25; req_access_txt = "200" }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 2 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -51212,14 +51483,11 @@ /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) "mov" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/bed/chair{ + dir = 1 }, -/area/almayer/hull/upper_hull/u_m_p) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "moB" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/brig/cells) @@ -51325,6 +51593,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"mru" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/port_hallway) "mrD" = ( /obj/structure/machinery/light{ dir = 1 @@ -51436,6 +51711,19 @@ icon_state = "red" }, /area/almayer/command/lifeboat) +"mtE" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/sign/safety/east{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/coffee{ + pixel_y = 32 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_p) "mtM" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -51466,6 +51754,13 @@ icon_state = "plate" }, /area/almayer/living/gym) +"muq" = ( +/obj/structure/bed/sofa/vert/grey/bot, +/obj/structure/bed/sofa/vert/grey{ + pixel_y = 11 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) "mux" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -51654,6 +51949,10 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/living/offices) +"mzF" = ( +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/lifeboat_pumps/south2) "mzO" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -51731,6 +52030,18 @@ icon_state = "bluefull" }, /area/almayer/squads/charlie_delta_shared) +"mBe" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/pilotbunks) "mBk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -51746,10 +52057,10 @@ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/security/reinforced{ + access_modified = 1; name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -51765,6 +52076,7 @@ dir = 4; name = "ship-grade camera" }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_p) "mBJ" = ( @@ -51959,12 +52271,11 @@ /area/almayer/living/gym) "mHD" = ( /obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 + icon_state = "S" }, /obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 + icon_state = "N"; + pixel_y = 1 }, /turf/open/floor/almayer{ icon_state = "mono" @@ -51977,8 +52288,11 @@ }, /area/almayer/command/airoom) "mHO" = ( +/obj/effect/decal/cleanable/dirt, /obj/structure/machinery/light, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) "mHR" = ( /obj/structure/sign/safety/hvac_old{ @@ -52068,11 +52382,10 @@ /turf/open/floor/almayer/uscm/directional, /area/almayer/command/cic) "mJL" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/turf/open/floor/almayer{ + dir = 5; + icon_state = "blue" }, -/turf/closed/wall/almayer, /area/almayer/living/pilotbunks) "mJP" = ( /obj/structure/machinery/cm_vending/gear/tl{ @@ -52337,11 +52650,17 @@ }, /area/almayer/hull/lower_hull/l_m_s) "mOb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/machinery/camera/autoname/almayer{ + dir = 8; + name = "ship-grade camera" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/starboard_garden) "mOg" = ( /obj/structure/sign/safety/maint{ pixel_x = 32 @@ -52536,9 +52855,9 @@ name = "\improper Privacy Shutters" }, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; req_one_access = null; - req_one_access_txt = "19;30"; - access_modified = 1 + req_one_access_txt = "19;30" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -52587,6 +52906,12 @@ icon_state = "red" }, /area/almayer/shipboard/navigation) +"mTn" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hallways/starboard_hallway) "mTp" = ( /obj/structure/window/reinforced{ dir = 4; @@ -52812,15 +53137,6 @@ icon_state = "blue" }, /area/almayer/hallways/port_hallway) -"mYx" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "mYY" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -53036,9 +53352,9 @@ /area/almayer/shipboard/port_missiles) "nec" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; req_access_txt = "200"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -53246,11 +53562,11 @@ /area/almayer/lifeboat_pumps/south1) "nim" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ + access_modified = 1; dir = 2; name = "\improper Chief Engineer's Office"; req_one_access = null; - req_one_access_txt = "1;6"; - access_modified = 1 + req_one_access_txt = "1;6" }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -53316,11 +53632,16 @@ icon_state = "red" }, /area/almayer/squads/alpha) +"njy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "njD" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/suit/storage/hazardvest, +/obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south1) "njJ" = ( @@ -53375,6 +53696,8 @@ /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 }, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails, /turf/open/floor/almayer{ dir = 1; icon_state = "red" @@ -53604,6 +53927,17 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"nqG" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "nqU" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_p) @@ -53794,11 +54128,9 @@ /obj/structure/bed/chair{ dir = 8 }, -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 5; + icon_state = "green" }, /area/almayer/living/starboard_garden) "nun" = ( @@ -53835,15 +54167,11 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) "nuY" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Evacuation Airlock PU-6"; - req_access = null - }, +/obj/structure/closet, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/powered) +/area/almayer/hull/upper_hull/u_m_s) "nvM" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -53900,6 +54228,12 @@ /obj/item/tool/lighter/zippo/gold, /turf/open/floor/carpet, /area/almayer/living/commandbunks) +"nwx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/shipboard/port_missiles) "nwz" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -53969,7 +54303,9 @@ id = "Warden Office Shutters"; name = "\improper Privacy Shutters" }, -/turf/open/floor/plating, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/almayer/shipboard/brig/main_office) "nxK" = ( /obj/structure/sign/safety/high_voltage{ @@ -54126,12 +54462,10 @@ }, /area/almayer/living/briefing) "nBE" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) "nBW" = ( /obj/structure/sign/safety/maint{ @@ -54669,9 +55003,11 @@ }, /area/almayer/shipboard/brig/cic_hallway) "nNA" = ( -/obj/structure/largecrate/random, +/obj/structure/machinery/cryopod{ + pixel_y = 6 + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/hull/upper_hull/u_m_p) "nNH" = ( @@ -54831,15 +55167,6 @@ icon_state = "plate" }, /area/almayer/squads/req) -"nPX" = ( -/obj/structure/sign/safety/rewire{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "nQv" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -54928,6 +55255,13 @@ }, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"nTH" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "nTZ" = ( /turf/open/floor/almayer{ dir = 5; @@ -54961,6 +55295,14 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"nUn" = ( +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "nUv" = ( /obj/structure/machinery/light{ dir = 1 @@ -55044,6 +55386,14 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) +"nWc" = ( +/obj/structure/machinery/door/airlock/almayer/generic/glass{ + name = "\improper Passenger Cryogenics Bay" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hull/upper_hull/u_m_p) "nWN" = ( /obj/structure/surface/table/almayer, /turf/open/floor/wood/ship, @@ -55064,6 +55414,15 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/cells) +"nXF" = ( +/obj/structure/bed/sofa/south/white/right{ + pixel_y = 16 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "silver" + }, +/area/almayer/hull/upper_hull/u_m_p) "nXP" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/lower_hull/l_f_s) @@ -55114,6 +55473,13 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"nYv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/aft_hallway) "nYD" = ( /obj/structure/closet/secure_closet/medical2, /turf/open/floor/almayer{ @@ -55173,6 +55539,10 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"oaK" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "oaW" = ( /obj/structure/machinery/cryopod/right, /turf/open/floor/almayer{ @@ -55455,11 +55825,8 @@ }, /area/almayer/shipboard/weapon_room) "ohB" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, /obj/structure/machinery/light, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -55919,7 +56286,9 @@ name = "General Listening Channel"; pixel_y = 28 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, /area/almayer/living/pilotbunks) "oqA" = ( /obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors, @@ -56275,10 +56644,10 @@ dir = 4 }, /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; req_access = null; req_one_access = null; - req_one_access_txt = "19;29"; - access_modified = 1 + req_one_access_txt = "19;29" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -56326,6 +56695,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_p) +"oyy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "oyE" = ( /obj/effect/landmark/start/intel, /obj/structure/sign/poster{ @@ -56662,26 +57038,21 @@ }, /area/almayer/living/synthcloset) "oGy" = ( -/obj/structure/disposalpipe/segment{ +/obj/structure/machinery/camera/autoname/almayer{ dir = 1; - icon_state = "pipe-c" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_p) -"oGC" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 + name = "ship-grade camera" }, -/obj/structure/machinery/light{ +/obj/structure/bed/chair{ dir = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/living/starboard_garden) +"oGC" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) "oGP" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -57100,6 +57471,7 @@ /area/almayer/hull/lower_hull/l_f_s) "oQo" = ( /obj/item/stool, +/obj/effect/landmark/yautja_teleport, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -57343,9 +57715,11 @@ }, /area/almayer/shipboard/brig/cic_hallway) "oWz" = ( -/obj/item/stool, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/starboard_garden) "oWI" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -57359,10 +57733,10 @@ /area/almayer/shipboard/brig/cryo) "oWX" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ + access_modified = 1; dir = 1; name = "\improper Kitchen Hydroponics"; - req_one_access_txt = "30;19"; - access_modified = 1 + req_one_access_txt = "30;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -57373,6 +57747,14 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) +"oXd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/almayer{ + icon_state = "blue" + }, +/area/almayer/hallways/aft_hallway) "oXp" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/wood/ship, @@ -57730,15 +58112,6 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) -"pgo" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/south1) "pgD" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/south1) @@ -57901,11 +58274,11 @@ dir = 4 }, /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + access_modified = 1; dir = 2; name = "Brig"; req_access = null; - req_one_access_txt = "1;3"; - access_modified = 1 + req_one_access_txt = "1;3" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -57920,15 +58293,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) -"pmn" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "pmq" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -58019,19 +58383,17 @@ /turf/open/floor/almayer, /area/almayer/living/auxiliary_officer_office) "pqc" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 +/turf/open/floor/almayer{ + icon_state = "mono" }, -/turf/open/floor/almayer, /area/almayer/living/pilotbunks) "pqi" = ( /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, -/obj/item/tool/weldingtool/largetank, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, +/obj/item/tool/weldingtool, /obj/item/clothing/head/welding, /obj/item/clothing/head/welding, /obj/item/device/reagent_scanner, @@ -58309,13 +58671,6 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/processing) -"pwG" = ( -/obj/structure/machinery/light, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/lifeboat_pumps/south1) "pwK" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -58468,14 +58823,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) -"pzy" = ( -/obj/structure/sign/safety/maint{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "pzG" = ( /obj/docking_port/stationary/emergency_response/port1, /turf/open/floor/almayer{ @@ -58577,14 +58924,14 @@ }, /area/almayer/engineering/upper_engineering/starboard) "pDm" = ( -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" - }, +/obj/structure/surface/rack, +/obj/item/roller, +/obj/item/roller, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/hull/upper_hull/u_m_s) "pDo" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -58680,17 +59027,11 @@ }, /area/almayer/medical/containment/cell) "pEY" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 8 - }, -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_x = -16; - pixel_y = 8 +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) "pFa" = ( @@ -58941,11 +59282,11 @@ "pJW" = ( /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; req_access = null; req_one_access = null; - req_one_access_txt = "3;22;19"; - access_modified = 1 + req_one_access_txt = "3;22;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -58985,15 +59326,11 @@ }, /area/almayer/medical/containment/cell) "pLW" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ - dir = 5; - icon_state = "red" + icon_state = "cargo" }, -/area/almayer/shipboard/port_missiles) +/area/almayer/living/pilotbunks) "pLZ" = ( /obj/effect/landmark/crap_item, /turf/open/floor/almayer, @@ -59106,8 +59443,13 @@ /area/almayer/hull/lower_hull/l_m_s) "pOD" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, /area/almayer/living/pilotbunks) "pON" = ( /turf/open/floor/almayer/uscm/directional{ @@ -59154,6 +59496,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"pPF" = ( +/obj/structure/machinery/power/apc/almayer/hardened, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "pPM" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -59162,6 +59510,7 @@ }, /area/almayer/command/securestorage) "pPN" = ( +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ dir = 4; icon_state = "red" @@ -59224,9 +59573,8 @@ }, /area/almayer/medical/medical_science) "pQV" = ( -/obj/structure/machinery/vending/cola, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "blue" }, /area/almayer/living/pilotbunks) "pQY" = ( @@ -59332,6 +59680,12 @@ icon_state = "mono" }, /area/almayer/command/computerlab) +"pUe" = ( +/obj/structure/machinery/power/apc/almayer/hardened, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "pUf" = ( /obj/structure/bed/chair{ dir = 4 @@ -59534,7 +59888,9 @@ /area/almayer/shipboard/brig/main_office) "pWN" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "blue" + }, /area/almayer/living/pilotbunks) "pXj" = ( /obj/structure/closet/radiation, @@ -59775,13 +60131,11 @@ }, /area/almayer/living/briefing) "qbO" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - dir = 1 - }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 6; + icon_state = "blue" }, -/area/almayer/lifeboat_pumps/north2) +/area/almayer/living/pilotbunks) "qbZ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass{ dir = 1; @@ -59810,6 +60164,21 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"qcq" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/sign/safety/waterhazard{ + pixel_y = 32 + }, +/obj/structure/sign/safety/rewire{ + pixel_y = 32; + pixel_x = 14 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "qcy" = ( /obj/structure/sign/safety/bathunisex{ pixel_x = 8; @@ -59920,10 +60289,8 @@ /obj/structure/machinery/computer/emails{ dir = 1 }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "redcorner" - }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, /area/almayer/shipboard/port_missiles) "qfh" = ( /obj/structure/bed/chair{ @@ -59972,14 +60339,13 @@ }, /area/almayer/shipboard/brig/main_office) "qga" = ( -/obj/structure/machinery/space_heater, -/obj/structure/sign/safety/maint{ - pixel_x = 32 +/obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + dir = 1 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/living/starboard_garden) "qgG" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -60004,8 +60370,8 @@ "qgK" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/generic/press{ - name = "\improper Combat Correspondent Room"; - dir = 1 + dir = 1; + name = "\improper Combat Correspondent Room" }, /turf/open/floor/almayer, /area/almayer/command/combat_correspondent) @@ -60167,6 +60533,7 @@ /obj/structure/sign/safety/maint{ pixel_x = -17 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) "qld" = ( @@ -60303,6 +60670,12 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) +"qnd" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/hangar) "qnh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -60719,6 +61092,16 @@ }, /turf/closed/wall/almayer/research/containment/wall/purple, /area/almayer/medical/containment/cell) +"qxz" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Evacuation Airlock PU-5"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/powered) "qxA" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -60807,10 +61190,6 @@ /obj/structure/surface/table/almayer, /obj/item/storage/photo_album, /obj/item/device/camera_film, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, /turf/open/floor/almayer, /area/almayer/command/corporateliason) "qyD" = ( @@ -61090,13 +61469,14 @@ }, /area/almayer/squads/delta) "qFQ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/prop/invuln/overhead_pipe{ - dir = 4; - pixel_y = 13 +/obj/effect/decal/warning_stripes{ + icon_state = "S" }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/hallways/aft_hallway) "qFW" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -61151,20 +61531,15 @@ }, /area/almayer/hallways/starboard_hallway) "qHq" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/item/ashtray/bronze, -/obj/item/clothing/mask/cigarette/weed{ - desc = "What in the god damn?"; - name = "marijuana cigarette" - }, -/obj/item/trash/cigbutt{ - pixel_x = -10; - pixel_y = 13 +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + dir = 2; + name = "\improper Evacuation Airlock SU-6"; + req_access = null }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/powered) "qHF" = ( /obj/structure/surface/table/almayer, /obj/item/storage/box/bodybags{ @@ -61366,11 +61741,13 @@ }, /area/almayer/medical/containment) "qLj" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) +/turf/open/floor/almayer{ + icon_state = "blue" + }, +/area/almayer/hallways/aft_hallway) "qLo" = ( /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, @@ -61710,6 +62087,16 @@ }, /turf/open/floor/plating, /area/almayer/living/port_emb) +"qSX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "qTY" = ( /obj/structure/machinery/gibber, /turf/open/floor/plating/plating_catwalk, @@ -61762,7 +62149,6 @@ }, /area/almayer/squads/charlie_delta_shared) "qUH" = ( -/obj/item/storage/bag/plasticbag, /obj/structure/surface/rack, /turf/open/floor/almayer{ icon_state = "plate" @@ -61836,6 +62222,12 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"qWI" = ( +/obj/structure/machinery/status_display{ + pixel_y = -30 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) "qWR" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 4 @@ -62386,6 +62778,9 @@ /area/almayer/hull/upper_hull/u_m_p) "riP" = ( /obj/structure/machinery/light, +/obj/structure/sign/safety/rewire{ + pixel_y = -32 + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -62962,10 +63357,6 @@ }, /area/almayer/hallways/hangar) "ruz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, /obj/structure/reagent_dispensers/watertank, /turf/open/floor/almayer{ icon_state = "cargo" @@ -63061,14 +63452,11 @@ }, /area/almayer/medical/lower_medical_medbay) "ryG" = ( -/obj/structure/largecrate/random/case, -/obj/structure/machinery/light{ - dir = 1 - }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "mono" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/lifeboat_pumps/north1) "ryR" = ( /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep{ req_access = list(1) @@ -63093,10 +63481,10 @@ icon_state = "NW-out" }, /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + access_modified = 1; name = "\improper Brig"; req_access = null; - req_one_access_txt = "1;3"; - access_modified = 1 + req_one_access_txt = "1;3" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -63106,6 +63494,7 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) "rzN" = ( @@ -63216,7 +63605,9 @@ }, /area/almayer/command/cichallway) "rBH" = ( -/obj/structure/machinery/constructable_frame, +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -63728,13 +64119,14 @@ }, /area/almayer/powered/agent) "rKs" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/structure/machinery/door/airlock/almayer/maint{ + req_one_access = null; + req_one_access_txt = "2;30;34" }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor4" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hull/upper_hull/u_m_s) "rKy" = ( /obj/structure/machinery/firealarm{ dir = 1; @@ -63840,6 +64232,7 @@ /obj/structure/surface/table/reinforced/almayer_B, /obj/item/clipboard, /obj/item/device/binoculars, +/obj/item/storage/bible, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -63940,7 +64333,13 @@ /area/almayer/squads/charlie) "rQW" = ( /obj/item/tool/screwdriver, -/turf/open/floor/almayer, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, /area/almayer/lifeboat_pumps/south1) "rQY" = ( /obj/structure/bed, @@ -63956,6 +64355,13 @@ "rRq" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/south2) +"rRz" = ( +/obj/structure/machinery/light, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "rRQ" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -64293,6 +64699,16 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) +"sah" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/hallways/aft_hallway) "saB" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64633,11 +65049,8 @@ }, /area/almayer/lifeboat_pumps/south2) "sht" = ( -/obj/structure/machinery/power/apc/almayer/hardened, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) +/turf/open/floor/almayer, +/area/almayer/living/pilotbunks) "shw" = ( /obj/structure/largecrate/random/barrel/green, /turf/open/floor/plating/plating_catwalk, @@ -64885,6 +65298,12 @@ allow_construction = 0 }, /area/almayer/hallways/port_hallway) +"sou" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) "sow" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -65316,6 +65735,13 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"syP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "szm" = ( /obj/structure/machinery/power/fusion_engine{ name = "\improper S-52 fusion reactor 10" @@ -65359,11 +65785,20 @@ }, /area/almayer/squads/charlie) "szO" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/pilot_officer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/living/pilotbunks) +"szU" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/numbertwobunks) "sAc" = ( /obj/structure/bed/chair{ dir = 8; @@ -65411,12 +65846,12 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ + access_modified = 1; dir = 1; id_tag = "CO-Office"; name = "\improper Commanding Officer's Office"; req_access = null; - req_access_txt = "31"; - access_modified = 1 + req_access_txt = "31" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -65472,7 +65907,10 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "blue" + }, /area/almayer/living/pilotbunks) "sCQ" = ( /obj/structure/machinery/light, @@ -65501,10 +65939,17 @@ pixel_y = 26 }, /turf/open/floor/almayer{ - dir = 4; - icon_state = "silvercorner" + dir = 1; + icon_state = "silver" }, /area/almayer/hallways/aft_hallway) +"sDD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/port_missiles) "sDM" = ( /turf/open/floor/almayer{ dir = 9; @@ -65725,22 +66170,19 @@ /turf/open/floor/engine, /area/almayer/engineering/airmix) "sHp" = ( -/obj/effect/step_trigger/clone_cleaner, -/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/case/small, +/obj/structure/sign/safety/maint{ + pixel_x = 32 + }, /turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) +/area/almayer/lifeboat_pumps/north1) "sHM" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/bed/chair{ - dir = 1 - }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + icon_state = "test_floor4" }, -/area/almayer/shipboard/starboard_missiles) +/area/almayer/living/pilotbunks) "sHY" = ( /obj/structure/sign/poster{ pixel_y = -32 @@ -66178,6 +66620,12 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"sTB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "sTV" = ( /obj/structure/machinery/power/apc/almayer/hardened{ cell_type = /obj/item/cell/hyper; @@ -66382,15 +66830,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"sYn" = ( -/obj/structure/sign/safety/rewire{ - pixel_x = 8; - pixel_y = -32 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "sYw" = ( /obj/structure/platform{ dir = 8 @@ -66408,7 +66847,8 @@ "sYB" = ( /obj/structure/closet/secure_closet/guncabinet/red, /obj/effect/decal/warning_stripes{ - icon_state = "N" + icon_state = "N"; + pixel_y = 2 }, /obj/item/ammo_magazine/smg/m39, /obj/item/ammo_magazine/smg/m39, @@ -66712,9 +67152,14 @@ /turf/open/floor/almayer, /area/almayer/living/cryo_cells) "teB" = ( -/obj/structure/largecrate/random/case/small, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north1) +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "teY" = ( /obj/structure/machinery/light{ dir = 1 @@ -66775,6 +67220,11 @@ pixel_y = 5 }, /obj/structure/surface/table/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1; + pixel_y = 1 + }, /turf/open/floor/almayer{ dir = 5; icon_state = "plating" @@ -66939,9 +67389,9 @@ "tiR" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ + access_modified = 1; req_one_access = null; - req_one_access_txt = "7;19"; - access_modified = 1 + req_one_access_txt = "7;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -67010,13 +67460,12 @@ }, /area/almayer/shipboard/brig/processing) "tld" = ( -/obj/structure/machinery/shower{ - dir = 8 +/obj/structure/machinery/prop/almayer/computer{ + dir = 8; + pixel_x = 16 }, -/obj/structure/machinery/door/window/westright, -/obj/item/tool/soap, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/living/pilotbunks) "tly" = ( @@ -67085,6 +67534,17 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"tmI" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/lifeboat_pumps/south1) "tmK" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -67392,7 +67852,7 @@ pixel_x = 32 }, /turf/open/floor/almayer{ - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/north1) "tsy" = ( @@ -67708,6 +68168,9 @@ /area/almayer/medical/containment/cell) "tyK" = ( /obj/effect/spawner/random/toolbox, +/obj/structure/machinery/light{ + dir = 4 + }, /turf/open/floor/almayer{ dir = 1; icon_state = "cargo_arrow" @@ -67736,6 +68199,10 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"tzj" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_p) "tzx" = ( /obj/structure/machinery/cm_vending/sorted/medical/blood, /obj/structure/machinery/light{ @@ -67755,20 +68222,13 @@ }, /area/almayer/engineering/engineering_workshop) "tzL" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, /obj/structure/sign/safety/waterhazard{ pixel_x = 8; pixel_y = -32 }, +/obj/structure/machinery/portable_atmospherics/hydroponics, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "test_floor5" }, /area/almayer/medical/hydroponics) "tzP" = ( @@ -67795,8 +68255,8 @@ "tAq" = ( /obj/structure/surface/table/reinforced/black, /obj/item/clothing/mask/breath{ - pixel_y = -5; - pixel_x = -3 + pixel_x = -3; + pixel_y = -5 }, /obj/item/clothing/head/helmet/space/compression/uscm, /obj/item/cell/crap{ @@ -67843,8 +68303,11 @@ }, /area/almayer/medical/lower_medical_medbay) "tAV" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) +"tBq" = ( +/obj/item/tool/crowbar, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) "tBz" = ( @@ -67901,9 +68364,13 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) "tDA" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_p) +/obj/item/tool/weldpack{ + pixel_y = 15 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "tDZ" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -67982,13 +68449,12 @@ /area/almayer/squads/req) "tFW" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/disposalpipe/segment{ - dir = 2; - icon_state = "pipe-c" +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ - dir = 1; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) "tGd" = ( @@ -68204,10 +68670,10 @@ dir = 1 }, /obj/structure/machinery/door/airlock/almayer/generic{ + access_modified = 1; dir = 1; name = "Storage"; - req_one_access = "2;21"; - access_modified = 1 + req_one_access = "2;21" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -68447,10 +68913,10 @@ /area/almayer/living/grunt_rnr) "tPj" = ( /obj/structure/machinery/door/airlock/almayer/marine/requisitions{ + access_modified = 1; name = "\improper Requisition's Office"; - req_one_access_txt = "1;26"; req_one_access = null; - access_modified = 1 + req_one_access_txt = "1;26" }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -68477,10 +68943,10 @@ /turf/open/floor/almayer, /area/almayer/living/briefing) "tQE" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 1 +/obj/item/clothing/head/welding, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_s) "tQL" = ( /obj/structure/pipes/standard/simple/hidden/supply, @@ -68707,10 +69173,10 @@ name = "\improper CMO Office Shutters" }, /obj/structure/machinery/door/airlock/almayer/medical/glass{ + access_modified = 1; name = "\improper CMO's Office"; req_one_access = null; - req_one_access_txt = "1;5"; - access_modified = 1 + req_one_access_txt = "1;5" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -68755,9 +69221,9 @@ "tXG" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/door/window/eastright{ + access_modified = 1; dir = 8; - req_access_txt = "19"; - access_modified = 1 + req_access_txt = "19" }, /obj/effect/landmark/map_item, /obj/structure/machinery/door/window/eastleft{ @@ -68935,10 +69401,11 @@ /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_m_p) "uac" = ( -/obj/structure/largecrate/random/case, /obj/structure/machinery/light{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "uah" = ( @@ -68994,11 +69461,11 @@ /turf/open/floor/almayer, /area/almayer/command/computerlab) "uaZ" = ( -/obj/structure/sign/safety/storage{ - pixel_x = 8; - pixel_y = -32 +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_s) "ubd" = ( /obj/structure/surface/rack, @@ -69377,10 +69844,10 @@ /area/almayer/squads/charlie_delta_shared) "ukW" = ( /obj/structure/machinery/door/airlock/almayer/security{ + access_modified = 1; name = "\improper Security Checkpoint"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -69398,12 +69865,8 @@ }, /area/almayer/shipboard/brig/evidence_storage) "uli" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/facepaint, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) +/turf/open/floor/grass, +/area/almayer/living/starboard_garden) "uly" = ( /obj/structure/bed/stool, /turf/open/floor/almayer{ @@ -69448,16 +69911,24 @@ icon_state = "mono" }, /area/almayer/medical/upper_medical) +"umR" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "umS" = ( -/obj/structure/machinery/firealarm{ - dir = 4; - pixel_x = 24 +/obj/structure/bed/chair/comfy{ + dir = 8 }, /turf/open/floor/almayer{ dir = 4; - icon_state = "red" + icon_state = "blue" }, -/area/almayer/shipboard/starboard_missiles) +/area/almayer/living/pilotbunks) "umT" = ( /obj/structure/machinery/door/airlock/almayer/security/glass{ name = "Brig" @@ -69541,13 +70012,12 @@ }, /area/almayer/command/computerlab) "uoS" = ( -/obj/structure/sign/safety/maint{ - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 4 }, -/area/almayer/living/starboard_garden) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "uoY" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm{ @@ -69706,6 +70176,13 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"uso" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_p) "usr" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/secure_data{ @@ -69825,12 +70302,7 @@ pixel_y = 2 }, /obj/structure/largecrate/random/case, -/obj/item/prop{ - desc = "An older design of the Pulse Rifle commonly used by Colonial Marines. This one has seen better days. The trigger is missing, the barrel is bent, and it no longer appropriately feeds magazines."; - icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi'; - icon_state = "m41amk1_e"; - item_state = "m41amk1"; - name = "\improper Broken M41A pulse rifle"; +/obj/effect/spawner/prop_gun/m41aMK1{ pixel_y = 7 }, /obj/item/prop/helmetgarb/gunoil{ @@ -69909,6 +70381,21 @@ icon_state = "orangecorner" }, /area/almayer/squads/bravo) +"uvy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/brig/armory) "uvG" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -69942,12 +70429,13 @@ }, /area/almayer/medical/containment/cell) "uvS" = ( -/obj/structure/sign/safety/hvac_old{ - pixel_x = 8; - pixel_y = 32 +/obj/structure/surface/rack, +/obj/item/stack/cable_coil, +/obj/item/attachable/flashlight/grip, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hull/upper_hull/u_m_s) "uvY" = ( /turf/open/floor/almayer{ dir = 8; @@ -69974,6 +70462,14 @@ /obj/structure/surface/table/woodentable/fancy, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"uws" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "cargo_arrow" + }, +/area/almayer/shipboard/port_missiles) "uwv" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/weapon_room/notunnel) @@ -70196,8 +70692,15 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/main_office) +"uAb" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/hangar) "uAj" = ( /obj/structure/bed/chair, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ dir = 1; icon_state = "red" @@ -70251,7 +70754,12 @@ }, /area/almayer/squads/bravo) "uBi" = ( -/obj/structure/largecrate/random/case/double, +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "uBn" = ( @@ -70498,6 +71006,12 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) +"uGt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer, +/area/almayer/hallways/aft_hallway) "uGw" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/cans/souto/diet/lime{ @@ -70507,13 +71021,12 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) "uGz" = ( -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "plate" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hull/upper_hull/u_m_s) "uGQ" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /turf/open/floor/almayer{ @@ -70521,13 +71034,15 @@ }, /area/almayer/engineering/upper_engineering/starboard) "uId" = ( -/obj/structure/bed/chair/comfy/teal{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "W" }, +/obj/effect/step_trigger/clone_cleaner, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 9; + icon_state = "green" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hallways/aft_hallway) "uIp" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/light{ @@ -70846,11 +71361,10 @@ /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/south2) "uOJ" = ( -/obj/structure/machinery/prop/almayer/computer{ - dir = 8; - pixel_x = 16 +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "mono" }, -/turf/open/floor/almayer, /area/almayer/living/pilotbunks) "uPr" = ( /turf/open/floor/almayer{ @@ -70880,6 +71394,13 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/perma) +"uQn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 3 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) "uQU" = ( /obj/structure/stairs{ dir = 1 @@ -71010,9 +71531,12 @@ /turf/open/floor/almayer, /area/almayer/squads/bravo) "uTN" = ( -/obj/effect/landmark/start/liaison, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/corporateliason) +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/living/pilotbunks) "uTU" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -71028,11 +71552,12 @@ }, /area/almayer/command/cic) "uTY" = ( -/obj/item/trash/cigbutt/ucigbutt, +/obj/effect/step_trigger/clone_cleaner, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 1; + icon_state = "green" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hallways/aft_hallway) "uTZ" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -71185,13 +71710,9 @@ /obj/structure/machinery/light{ dir = 1 }, -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, +/obj/structure/machinery/cm_vending/sorted/cargo_guns/pilot_officer, /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "plate" }, /area/almayer/living/pilotbunks) "uWc" = ( @@ -71406,12 +71927,9 @@ }, /area/almayer/medical/lower_medical_medbay) "vce" = ( -/obj/structure/surface/rack, -/obj/effect/spawner/random/tool, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) +/obj/docking_port/stationary/escape_pod/south, +/turf/open/floor/plating, +/area/almayer/hull/upper_hull/u_m_p) "vcq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -71445,6 +71963,10 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) +"vcK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "vdJ" = ( /obj/structure/surface/table/almayer, /obj/item/pipe{ @@ -71909,6 +72431,10 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) +"vjK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer, +/area/almayer/shipboard/port_missiles) "vka" = ( /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) @@ -72042,6 +72568,11 @@ /area/almayer/hull/lower_hull/l_f_s) "vmN" = ( /obj/structure/machinery/light, +/obj/structure/surface/table/almayer, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 8 + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -72294,15 +72825,15 @@ /area/almayer/shipboard/brig/armory) "vsJ" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; name = "\improper Power Control Room"; req_access = null; req_one_access = null; - req_one_access_txt = "3;6"; - access_modified = 1 + req_one_access_txt = "3;6" }, /turf/open/floor/almayer{ - icon_state = "orangefull" + icon_state = "test_floor4" }, /area/almayer/shipboard/brig/processing) "vsV" = ( @@ -72604,6 +73135,13 @@ "vzp" = ( /turf/open/floor/almayer/research/containment/entrance, /area/almayer/medical/containment/cell/cl) +"vzq" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 3 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/port_hallway) "vzu" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -72831,11 +73369,11 @@ /area/almayer/living/briefing) "vEI" = ( /obj/structure/machinery/door/airlock/almayer/medical/glass{ + access_modified = 1; dir = 2; name = "\improper Field Surgery Equipment"; req_access_txt = "20"; - req_one_access = null; - access_modified = 1 + req_one_access = null }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -72845,9 +73383,16 @@ }, /area/almayer/medical/lower_medical_medbay) "vFb" = ( -/obj/item/tool/crowbar, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south1) +/obj/structure/surface/table/almayer, +/obj/item/attachable/lasersight, +/obj/item/reagent_container/food/drinks/cans/souto/vanilla{ + pixel_x = 10; + pixel_y = 11 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "vFh" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/toolbox/mechanical{ @@ -72902,6 +73447,15 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"vGI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/numbertwobunks) "vHa" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/computer/ares_console{ @@ -72924,6 +73478,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) +"vHs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/starboard_hallway) "vHO" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -73130,6 +73691,15 @@ icon_state = "test_floor4" }, /area/almayer/medical/upper_medical) +"vLv" = ( +/obj/structure/largecrate/random/case/double, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_p) "vLA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -73928,14 +74498,15 @@ }, /area/almayer/hallways/aft_hallway) "wbu" = ( -/obj/structure/machinery/light{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" }, /turf/open/floor/almayer{ - dir = 8; - icon_state = "red" + icon_state = "mono" }, -/area/almayer/shipboard/port_missiles) +/area/almayer/living/pilotbunks) "wbx" = ( /obj/structure/sign/safety/hazard{ desc = "A sign that warns of a hazardous environment nearby"; @@ -73977,7 +74548,15 @@ /obj/structure/machinery/status_display{ pixel_y = 30 }, -/turf/open/floor/almayer, +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 15 + }, +/turf/open/floor/almayer{ + icon_state = "bluefull" + }, /area/almayer/living/pilotbunks) "wbP" = ( /obj/structure/machinery/bioprinter{ @@ -74102,11 +74681,14 @@ }, /area/almayer/medical/hydroponics) "wex" = ( -/obj/structure/machinery/light{ - dir = 4 +/obj/structure/sign/safety/bathunisex{ + pixel_x = 8; + pixel_y = -25 }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/living/pilotbunks) "weB" = ( /obj/item/tool/screwdriver{ layer = 2.9; @@ -74396,9 +74978,9 @@ "wkc" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/eastright{ + access_modified = 1; dir = 8; - req_access_txt = "8"; - access_modified = 1 + req_access_txt = "8" }, /obj/structure/machinery/door/window/eastleft{ req_access_txt = "8" @@ -74678,8 +75260,8 @@ dir = 1 }, /obj/structure/pipes/vents/pump/no_boom{ - name = "Security Vent"; - desc = "Has a valve and pump attached to it, connected to multiple gas tanks." + desc = "Has a valve and pump attached to it, connected to multiple gas tanks."; + name = "Security Vent" }, /turf/open/floor/almayer/no_build{ icon_state = "plating" @@ -74780,11 +75362,14 @@ }, /turf/open/floor/almayer, /area/almayer/living/gym) -"wrT" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"wrQ" = ( +/obj/structure/sign/safety/storage{ + pixel_x = 8; + pixel_y = -32 }, +/turf/open/floor/almayer, +/area/almayer/living/starboard_garden) +"wrT" = ( /obj/structure/surface/table/almayer, /obj/item/device/radio/marine, /obj/item/device/radio/marine, @@ -74805,6 +75390,16 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) +"wst" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/step_trigger/clone_cleaner, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "green" + }, +/area/almayer/hallways/aft_hallway) "wsD" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -74818,12 +75413,11 @@ }, /area/almayer/squads/bravo) "wta" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/obj/structure/closet/crate, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/hallways/aft_hallway) +/area/almayer/hull/upper_hull/u_m_s) "wtd" = ( /obj/structure/machinery/vending/coffee, /obj/item/toy/bikehorn/rubberducky{ @@ -74921,11 +75515,11 @@ /area/almayer/lifeboat_pumps/south1) "wvl" = ( /obj/structure/machinery/door/airlock/almayer/security{ + access_modified = 1; dir = 2; name = "\improper Security Checkpoint"; req_access = null; - req_one_access_txt = "3;19"; - access_modified = 1 + req_one_access_txt = "3;19" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -75415,10 +76009,7 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "red" - }, +/turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/port_missiles) "wGX" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -75487,10 +76078,10 @@ /area/almayer/medical/lower_medical_medbay) "wJo" = ( /obj/structure/machinery/door/airlock/almayer/research/reinforced{ + access_modified = 1; dir = 1; name = "\improper CMO's Bedroom"; - req_one_access_txt = "1;5"; - access_modified = 1 + req_one_access_txt = "1;5" }, /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -75529,17 +76120,16 @@ /turf/closed/wall/almayer/research/containment/wall/east, /area/almayer/medical/containment/cell/cl) "wKn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/structure/surface/rack, +/obj/item/facepaint/sniper, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/hull/upper_hull/u_m_p) +/area/almayer/hull/upper_hull/u_m_s) "wKF" = ( /obj/structure/machinery/power/apc/almayer{ - dir = 1; - pixel_y = 25 + cell_type = /obj/item/cell/hyper; + dir = 1 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -75599,8 +76189,8 @@ /area/almayer/lifeboat_pumps/south2) "wLy" = ( /obj/structure/pipes/vents/pump/no_boom{ - welded = 1; - name = "Secure Reinforced Air Vent" + name = "Secure Reinforced Air Vent"; + welded = 1 }, /turf/open/floor/almayer/research/containment/floor2{ dir = 1 @@ -75721,9 +76311,13 @@ /area/almayer/living/briefing) "wNU" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 2; - req_one_access = list(2,34,30); - access_modified = 1 + req_one_access = list(2,34,30) + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -75957,10 +76551,9 @@ }, /area/almayer/squads/charlie_delta_shared) "wTy" = ( -/obj/item/reagent_container/glass/rag, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ - dir = 4; - icon_state = "red" + icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) "wTJ" = ( @@ -76045,7 +76638,10 @@ /obj/structure/bed/chair/comfy{ dir = 4 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "blue" + }, /area/almayer/living/pilotbunks) "wUS" = ( /obj/structure/disposalpipe/segment{ @@ -76082,7 +76678,8 @@ /obj/item/vehicle_clamp, /obj/item/vehicle_clamp, /obj/effect/decal/warning_stripes{ - icon_state = "N" + icon_state = "N"; + pixel_y = 2 }, /obj/item/ammo_magazine/smg/m39, /obj/item/ammo_magazine/smg/m39, @@ -76200,13 +76797,10 @@ /turf/closed/wall/almayer/research/containment/wall/north, /area/almayer/medical/containment/cell) "wWC" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" +/turf/open/floor/almayer{ + dir = 10; + icon_state = "blue" }, -/turf/open/floor/almayer, /area/almayer/living/pilotbunks) "wWL" = ( /obj/item/tool/screwdriver, @@ -76277,18 +76871,24 @@ icon_state = "test_floor4" }, /area/almayer/hallways/hangar) -"wYA" = ( -/obj/structure/bed/chair/comfy/teal{ - dir = 8 +"wYj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/obj/item/trash/cigbutt{ - pixel_x = -12; - pixel_y = 17 +/obj/structure/bed/sofa/south/white/left{ + pixel_y = 16 }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 9; + icon_state = "silver" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/hull/upper_hull/u_m_p) +"wYA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north1) "wYK" = ( /obj/structure/barricade/handrail/medical, /turf/open/floor/almayer{ @@ -76366,12 +76966,13 @@ }, /area/almayer/hull/lower_hull/l_a_s) "wZM" = ( -/obj/structure/bed/sofa/south, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ - dir = 1; - icon_state = "silver" + icon_state = "blue" }, -/area/almayer/shipboard/brig/cic_hallway) +/area/almayer/hallways/aft_hallway) "wZT" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -76568,15 +77169,11 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull) "xfh" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Evacuation Airlock PU-5"; - req_access = null - }, +/obj/structure/largecrate/supply/floodlights, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/powered) +/area/almayer/hull/upper_hull/u_m_p) "xfi" = ( /obj/structure/machinery/power/smes/buildable, /obj/structure/machinery/light{ @@ -77035,10 +77632,8 @@ /area/almayer/engineering/upper_engineering/port) "xoS" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E" + icon_state = "N"; + pixel_y = 2 }, /obj/structure/closet/secure_closet/guncabinet/red, /obj/item/weapon/gun/rifle/m4ra, @@ -77086,10 +77681,10 @@ dir = 1 }, /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ + access_modified = 1; name = "\improper Brig"; req_access = null; - req_one_access_txt = "1;3"; - access_modified = 1 + req_one_access_txt = "1;3" }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -77238,10 +77833,10 @@ /area/almayer/hallways/vehiclehangar) "xtC" = ( /obj/structure/machinery/door/airlock/almayer/maint{ + access_modified = 1; dir = 1; req_one_access = null; - req_one_access_txt = "30;19"; - access_modified = 1 + req_one_access_txt = "30;19" }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -77338,6 +77933,13 @@ icon_state = "plating" }, /area/almayer/engineering/engine_core) +"xuY" = ( +/obj/structure/sign/safety/escapepod{ + pixel_x = 8; + pixel_y = 32 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "xuZ" = ( /turf/open/floor/almayer{ dir = 8; @@ -77795,6 +78397,7 @@ pixel_y = 3 }, /obj/item/folder/yellow, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -77968,15 +78571,11 @@ }, /area/almayer/squads/alpha_bravo_shared) "xHG" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - dir = 2; - name = "\improper Evacuation Airlock SU-5"; - req_access = null - }, +/obj/structure/surface/rack, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "plate" }, -/area/almayer/powered) +/area/almayer/hull/upper_hull/u_m_p) "xHM" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/sentencing, @@ -78363,7 +78962,10 @@ /obj/structure/pipes/vents/pump{ dir = 8 }, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "bluecorner" + }, /area/almayer/living/pilotbunks) "xQm" = ( /turf/open/floor/almayer/research/containment/floor2{ @@ -78702,6 +79304,12 @@ "xVk" = ( /turf/open/space, /area/space/almayer/lifeboat_dock) +"xVF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south1) "xVI" = ( /obj/structure/largecrate/random/case, /turf/open/floor/almayer{ @@ -78747,9 +79355,9 @@ /area/almayer/squads/alpha_bravo_shared) "xWo" = ( /obj/structure/machinery/door/airlock/almayer/maint{ - req_one_access_txt = "19;21"; access_modified = 1; - req_one_access = null + req_one_access = null; + req_one_access_txt = "19;21" }, /turf/open/floor/almayer{ icon_state = "plate" @@ -78765,22 +79373,20 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) "xWF" = ( -/obj/structure/machinery/door/airlock/almayer/maint{ - dir = 2; - req_one_access = list(2,34,30); - access_modified = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/machinery/light/small{ + dir = 8 }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) "xWO" = ( -/obj/item/stack/catwalk, -/obj/structure/cable/heavyduty{ - icon_state = "4-8" +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -25 }, -/turf/open/floor/plating, -/area/almayer/lifeboat_pumps/south1) +/obj/structure/largecrate/random/case/small, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "xWT" = ( /obj/structure/machinery/shower{ pixel_y = 16 @@ -79342,13 +79948,8 @@ }, /area/almayer/medical/morgue) "yji" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/machinery/door/airlock/almayer/maint, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) "yjq" = ( /obj/structure/machinery/door/poddoor/almayer/locked{ @@ -79360,11 +79961,14 @@ }, /area/almayer/engineering/upper_engineering/notunnel) "yjM" = ( -/obj/effect/decal/cleanable/blood/oil, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ - icon_state = "mono" + dir = 4; + icon_state = "blue" }, -/area/almayer/lifeboat_pumps/south2) +/area/almayer/living/pilotbunks) "ykj" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -79475,6 +80079,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"ymi" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + req_one_access = null; + req_one_access_txt = "2;30;34" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hull/upper_hull/u_f_p) (1,1,1) = {" aaa @@ -90491,7 +91107,7 @@ lMc gjL cMl oeB -euO +rkL ldu eRL jZL @@ -91694,7 +92310,7 @@ lrq mAr uqo fsT -fsT +jnA fDn lrq tqV @@ -92099,7 +92715,7 @@ aou lrq mAr uqo -fsT +uvy tfO fsz lrq @@ -93931,7 +94547,7 @@ dvT ieo vxC ldD -wZM +vGA hUW dHd vka @@ -94326,9 +94942,9 @@ adG adG adG adG -akC -akC -akC +rPC +rPC +dav rPC rPC kDb @@ -94362,9 +94978,9 @@ czB mtl mnm kIV -kCi -kCi -kCi +wNU +kIV +kIV tuA tuA tuA @@ -94528,13 +95144,13 @@ aeK aeK bur hdd -aok -sHM -aHY +akC +akC +akC akC cVJ rPC -rPC +jvJ vxM sVy mKh @@ -94564,11 +95180,11 @@ kHK wfL mtl mnm -kIV +dGc +kCi +kCi +kCi kCi -dUI -wbu -rVN hjA nIE jKn @@ -94732,8 +95348,8 @@ aeK bur wdI sFf -adu -aHZ +bbV +bzz akC cRc rPC @@ -94767,9 +95383,9 @@ sBH vfv mtl mnm -kIV +dGc kCi -nRR +sDD kOv cRv sQF @@ -95138,7 +95754,7 @@ amz amz aly nkx -adu +bbZ btv akC dDC @@ -95171,7 +95787,7 @@ lNF rkK cIK mtl -mnm +tzj kIV bbR kCi @@ -95374,7 +95990,7 @@ pJE wPk hRy mtl -mnm +tzj kIV bVT kCi @@ -95750,7 +96366,7 @@ nIt adu hxG akC -avl +fvu qkn wcn vxM @@ -95989,7 +96605,7 @@ tJo bpd bqT vZv -btD +vjK awC uMj uMj @@ -96184,16 +96800,16 @@ rWs mIy eEw lPC -vka +mgy wWT xuB -gpe +vcK czJ kCi nRR btM -btD -hjA +vjK +dUZ nIE jKn pyi @@ -96355,7 +96971,7 @@ afa aeK bur wdI -sFf +aHY tyK iKI akC @@ -96393,10 +97009,10 @@ lIV gsH qFl kCi -nRR -kOv +cfk +uws cRv -sQF +nwx nIE jKn vjg @@ -96558,14 +97174,14 @@ aeK aeK bur xFP -umS -jvJ -aex +akC +akC +akC akC fcF avl lFb -avl +fvu age age vSN @@ -96593,12 +97209,12 @@ qFl qFl gpe xuB -gpe +vcK mBA kCi -pLW +kCi wGI -pPN +kCi vmW nIE jKn @@ -96762,13 +97378,13 @@ adG adG adG adG -akC -akC -akC +puK +avl +dUI avl avl lFb -avl +fvu xDp age xDn @@ -96797,10 +97413,10 @@ rnM gpe sDy ukU -cNe -qFl -qFl -kCi +bfP +fvv +vcK +vcK tuA tuA tuA @@ -96965,9 +97581,9 @@ aag aag aag pCi -puK +avl nMc -iJf +ayP iJf iJf sFZ @@ -97169,10 +97785,10 @@ aag aag pCi dRV -tGf -wex -avl -puK +bZg +kcH +kcH +kcH kcH kcH kcH @@ -98222,8 +98838,8 @@ aES aES aES aES -aES -lDN +gpe +uEv gpe xEF xEF @@ -98424,9 +99040,9 @@ ceK sxD bhJ bHG -ayP aES -xuB +aES +mtE gpe cEg hgm @@ -100464,7 +101080,7 @@ ils ajZ aaa aaa -bdH +aaa bdH bdH bdH @@ -100667,7 +101283,7 @@ xEF ajZ aaa aaa -bdH +aaa bdH bdH bdH @@ -100870,7 +101486,7 @@ aag ajZ aaa aaa -bdH +aaa bdH bdH bdH @@ -101073,7 +101689,7 @@ aag ajZ aaa aaa -bdH +aaa bdH bdH bdH @@ -101431,8 +102047,8 @@ pCi ifR jMt gpY -awW -awW +uBi +wYA awW awW awW @@ -101468,8 +102084,8 @@ baw oxu baw baw -baw -baw +oaK +nUn pgD xuB gpe @@ -101634,7 +102250,7 @@ pCi avl lIh gpY -aeX +uac vFw ajf ajf @@ -101672,7 +102288,7 @@ aZz aZz aZz wUP -cxk +lrF pgD uEv gpe @@ -101841,8 +102457,8 @@ mto acW awW awW -awW -awW +oGC +oGC aSJ goj iff @@ -102033,7 +102649,7 @@ adq aeW ajD anM -awW +oGC add aSA bvb @@ -102042,8 +102658,8 @@ ajI pYu awW acW -ads add +ryG ohB aiX awd @@ -102074,9 +102690,9 @@ ecr ecr ygs aET -oGC +nUv +aJU aJU -mYx sgU baw dqb @@ -102233,7 +102849,7 @@ bdH bdH abs adq -aeX +aea ajE awW awW @@ -102253,7 +102869,7 @@ unT kng fDV aiX -wWC +aiX tAL awX tAL @@ -102657,7 +103273,7 @@ aoI weD fdE amh -fdE +amh aiX cJu pXx @@ -102858,15 +103474,15 @@ afr akc buc weD -amh +jMm pcG iFn qnD -amd -amd +amh +kWT wUR wUR -amd +wWC auZ aiX aiX @@ -103045,7 +103661,7 @@ bdH aaC abs adq -aeY +qcq ajI add add @@ -103066,10 +103682,10 @@ aiX aiX aiX oqw -amd +lvA osT cZV -amd +pQV apq ana aiX @@ -103103,7 +103719,7 @@ gjq aJU aJU tiW -usm +eMn pgD tQV aaC @@ -103248,13 +103864,13 @@ bdH aaC abs adq -lvA +jWH ajI add auJ aHU aTm -aea +awW aTm jgF auJ @@ -103268,17 +103884,17 @@ fdE mLz iFn alw -amd +amh dGr rtY fJy xQg -apq +wWC szO aiX atU amO -avj +qLj awF awF aEW @@ -103300,13 +103916,13 @@ aJU lqZ ouQ iun -aJU +baw vPm qys lqZ aJU tiW -kWT +pUe pgD tQV aaC @@ -103391,7 +104007,7 @@ baI baI bGO bHB -btO +uAb bcm mzo sYC @@ -103474,18 +104090,18 @@ aiX amd dXY fmB -fmB -dXY -apq +umS +yjM +qbO aqw -aiX -atV +hnI +ayT amO -avj -agm +wZM +aPm awF aHk -rvA +vGI aLp awF jss @@ -103495,7 +104111,7 @@ aVk ldC vkb aET -gnv +eFM yhI tTu sgU @@ -103594,7 +104210,7 @@ bEN baX bcp bHB -aYt +xAY aYz mzo vhq @@ -103660,7 +104276,7 @@ awW avc aIv aTm -bvd +kJL cbM jzZ sLo @@ -103677,18 +104293,18 @@ aiX apt sCI pWN -pWN +uTN aqy nBE pOD bZa ahM aEf -avj -ahF +wZM +ejp awF aHn -rvA +szU aLt awF aRC @@ -103706,7 +104322,7 @@ baw hJk yac vbB -dav +kUQ vbB fDS iLd @@ -103797,7 +104413,7 @@ wqh xyw bcc bHB -aYt +xAY aYz mzo xIj @@ -103863,7 +104479,7 @@ add auJ aHU aTm -bzz +awW aTm jgF auJ @@ -103878,16 +104494,16 @@ aiX aiX aiX awq -amd -amd +lvA +pQV mHO aiX aiX -mJL aiX -ayT +aiX +atV amO -avj +oXd qFl qFl qFl @@ -103901,7 +104517,7 @@ prE aUw aUw awS -aJU +nJs aJU aJU tiW @@ -103909,8 +104525,8 @@ aJU lqZ ouQ vbB -fvu -vbB +baw +tBq qys lqZ aJU @@ -104000,7 +104616,7 @@ bEO rOc fVz bHB -btO +uII ruz mzo gwm @@ -104080,14 +104696,14 @@ fdE feS iFn alw -amd -amd -amd -amd +kFe +mJL +qbO +wbu aiX aKG amb -bZg +aiX bYe amO avj @@ -104127,15 +104743,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -104203,7 +104819,7 @@ gfW gfW xyw bHB -btO +uII wrT mzo pVu @@ -104283,11 +104899,11 @@ nwL amh nPx aiX -pQV +aiX uOJ pqc -amd -aiX +pqc +aqz aKH and aiX @@ -104310,8 +104926,8 @@ awS tvQ yhI tTu -gVF -qLj +sgU +baw aJU aJU aJU @@ -104330,15 +104946,15 @@ aaa aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -104406,7 +105022,7 @@ bEP gfW bGQ bHB -btO +qnd cmp cmp cmp @@ -104486,10 +105102,10 @@ akv eGH qnl aiX -aiX -aiX -aiX -amd +fuz +pLW +sht +wex aiX aiX aiX @@ -104533,15 +105149,15 @@ bdH aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -104682,20 +105298,20 @@ awW awW abB add -add -kyY -aau +xWO +aiX +aiX aau aau aau aau uVX ase +sht +uOJ aqz -amd -aqz -ase -atS +mBe +atT aiX ayU amO @@ -104713,8 +105329,8 @@ pUJ pUJ pUJ pUJ -ryG -aJU +pgD +nUv aJU pIV baw @@ -104736,15 +105352,15 @@ bdH aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -104863,9 +105479,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa @@ -104885,17 +105501,17 @@ awW awW acW qdQ -eFT -hhA +muq +aiX +aiX aau dBs dBs -dBs aau fuz tld -aiX -ccc +uOJ +mHO aiX asf atT @@ -104914,13 +105530,13 @@ bsO aal xKW aht -aGP -pUJ -mSi -wHp +aht +gcc +pgD +lza gZw -sgU -baw +gVF +kuk baw aJU nig @@ -104936,18 +105552,18 @@ tQV aaa bdH bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -105066,9 +105682,9 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa @@ -105078,26 +105694,26 @@ adq awW awW awW -awW -add +oGC +ryG aVL bBl aeZ -pzy -awW +ryG +oGC awW acW -ads add -ohB +bny +aiX +aiX aiX vwV vwV -vwV -aiX aiX aiX aiX +sHM kUh aiX aiX @@ -105117,16 +105733,16 @@ pUJ pUJ pUJ pUJ -aGQ pUJ -oGC +ymi +pgD +nUv aJU -mYx sgU baw baw aJU -tTu +bnZ cIe jez aJU @@ -105139,18 +105755,18 @@ tQV aaa aaa bdH -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -105269,32 +105885,32 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa aaa abs adq -aeZ +aei aka -aoI +aWn aar aar aar aar -tiM aar -teB +aar +oGC awW acW awW awW awW fSm -aSJ +atW apl bbL bbL @@ -105320,8 +105936,8 @@ bbL kij bbL xRU -pgo -baw +pEY +jsP baw fGg baw @@ -105334,26 +105950,26 @@ qVM qVM qVM qVM -gnv +hXV yhI -tTu +rRz pgD tQV aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -105472,32 +106088,32 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa aaa abs adq -afp -akc +apr +apr aoV aar -aIx -aWs -aar -aap +aIZ +aIZ +aIZ +bWK aar -uac -awW +aea +oGC xjD ajf ajf ajf -ajf oAO +heH aod qgG amC @@ -105521,42 +106137,42 @@ suV bYc bYc bYc -biT +qgG dqN tFW dGC -tAV -tAV -tAV -avZ -iYr +aZz +aZz +aZz +nsc +baw cxk qVM -csz -qVM -eRR +iBt +iBt +iBt vce qVM -crh -csI -qhb +wTy +wTy +wTy pgD tQV aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -105675,31 +106291,31 @@ aaa aaa aaa aaa +bdH +bdH +bdH aaa aaa aaa aaa -aaa -aaa -aaa -abw -aea -awW -akt -awW -avd -awW -awW +abs +adq +aub +akc +euO aar -wFm +aIZ +aIZ +aIZ +aIZ aar -uBi -awW -awW -awW +oGC +sHp +oGC awW awW awW +aSJ tsv dtM aii @@ -105724,42 +106340,42 @@ avn mTb avn nFr -asS +aii ajC dCD -baw +aXe baw baw baw mnA -rKs -aJU -xWF -csz -xWF aJU -baw aJU -baw -sMM -baw -wiz -trb -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +qVM +iBt +iBt +iBt +iBt +qVM +crh +csI +nqG +pgD +tQV aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -105878,25 +106494,25 @@ aaa aaa aaa aaa +bdH +bdH +bdH aaa aaa aaa aaa -aaa -aaa -aaa -abw +abs aec -awW +avd akt awW -add -aIB -awW -aar -ceu -aar +qHq +aIZ +aIZ +aIZ +aIZ aar +rKs aar aar aar @@ -105927,42 +106543,42 @@ aoe aoe aoe aEI -asS +aii aik qVM -aWm -aWm -aWm -aWm qVM -yji qVM qVM -dux qVM -baw -vFb -aJU +qVM +xeG +qVM +qVM +iBt +iBt +iBt +iBt +eOM baw sMM -baw +xVF dLz -trb -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +tQV aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aab aaa @@ -106081,23 +106697,23 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa aaa abs adq -aeZ +aGP aka -aoI -ads -add aWu aar -aao +aIZ +aIZ +aIZ +aIZ aar uLW tZe @@ -106130,38 +106746,38 @@ isN cnZ aoe dtM -asS +aii ajC qVM -aWn -baw -baw -uTY -qVM -mOb -qVM -qVM +gKS +gKS +csz +xCX +csz +vGk +vGk qVM +iBt +iBt +iBt +iBt qVM -uGz -aJU -mYx -gnv +hWB yhI -tTu +qSX pgD tQV aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -106284,24 +106900,24 @@ aaa aaa aaa aaa -aaa -aaa -aaa +bdH +bdH +bdH aaa aaa aaa aaa abs adq -afr +aGQ akc apg -avx -add -aYq aar -aao -aao +aIZ +aIZ +aIZ +aIZ +aar aao aap ijU @@ -106333,38 +106949,38 @@ aEi coa aoe ahr -biV +akU ajC +xCX +csz +vGk +vGk qVM -aub -uId -qHq -wYA +bDe +csz +csz qVM -pDm -tDA -qFQ -oGy +iBt +iBt +iBt +iBt qVM -aJU -aJU -pEY wvj csI -goL +iPH pgD tQV aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -106494,16 +107110,16 @@ aaa aaa aaa aaa -abw +abs aee -awW +avd akt -awW -add -aJJ -awW +qWI +aar +aar +aar +aar aar -aap lYA lYA lYA @@ -106536,7 +107152,7 @@ aEi fFh aoe dtM -biV +akU ajC czu czu @@ -106547,27 +107163,27 @@ czu czu czu czu -mov qVM -baw -baw -aJU +qVM +qVM +qVM +qVM ehj irS ilJ njD -trb -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +tQV aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -106697,16 +107313,16 @@ aaa aaa aaa aaa -abw -aei -awW -akt -awW -add -awW -awW +abs +adq +aWm +aka +kyY aar -wFm +cit +ina +nuY +nuY lYA aax aax @@ -106739,7 +107355,7 @@ hFF aoe aoe dtM -asS +aii ajC czu aiJ @@ -106750,27 +107366,27 @@ atj atj atj czu -wKn +foR +usi +vGk +foR qVM -uvS -oWz -aJU rQW -xWO -baw -aJU -trb -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +yhI +tmI +pgD +tQV aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa @@ -106902,14 +107518,14 @@ aaa aaa abs adq -afA -aka +apr +apr apr aar aJL aYr -aar -aap +aao +aao lYA aax aax @@ -106942,7 +107558,7 @@ aQz aRJ ajl dtM -biV +akU ajC czu aiJ @@ -106953,14 +107569,14 @@ atj atj atj czu -wKn -qVM -nUv -qga +usi +vGk +vGk +vLv qVM -kDt wTy -pwG +wTy +wTy pgD tQV aaa @@ -107110,9 +107726,9 @@ akW apu aar aar -aar -aar -tiM +aao +aap +pDm lYA acV acV @@ -107145,7 +107761,7 @@ aQz aRK ajl aDk -biV +akU ajC czu aiJ @@ -107156,14 +107772,14 @@ atl atl atl czu -wKn -qVM -gMA +dQE +vGk +csz qVM qVM -vpn +crh csI -goL +qhb pgD tQV bdH @@ -107308,14 +107924,14 @@ aaf aaf acv aez -aJW -aJW -boL boL +akY boL -aYs +aiH +aiv +aap uoS -aJW +pDm lYA adb adb @@ -107348,7 +107964,7 @@ fOL aRS ajl ahq -asS +aii ajC czu alW @@ -107359,11 +107975,11 @@ atI atI atI czu -mOb -qVM -vGk -qVM -ina +usi +foR +csz +xCX +aJU baw sMM baw @@ -107511,14 +108127,14 @@ aag aag acv aez -agh -afY -apF -apF -apF -agP -agh -aJW +boL +akY +wrQ +aar +aar +aar +aar +aar lYA adb adb @@ -107551,7 +108167,7 @@ akw alD vEx bYe -biV +akU ajC czu alW @@ -107562,12 +108178,12 @@ atI atI atI czu -mOb qVM -vGk qVM -teg -baw +qVM +qVM +qVM +nTH sMM baw teg @@ -107714,13 +108330,13 @@ aag aag acf aet -agv -afY -ahp -afY -afY -afY -bLO +agS +aiP +aYq +aar +aIZ +aIZ +aIZ bWK lYA adb @@ -107754,7 +108370,7 @@ onQ alD ajl hon -biV +akU ajC czu alW @@ -107765,10 +108381,10 @@ atI atI atI czu -ekY -qVM -csz -qVM +iBt +iBt +iBt +vce qVM gnv yhI @@ -107918,13 +108534,13 @@ aag acf aet agB -akY -akY -akY -agP -afY -bLO -ceC +akW +aYs +aar +aIZ +aIZ +aIZ +aIZ lYA vKF adb @@ -107957,7 +108573,7 @@ aCp alD ajl wqA -asS +aii ajC czu alW @@ -107968,10 +108584,10 @@ atI atI xMk czu -wKn -xCX -hoX -qVM +iBt +iBt +iBt +iBt qVM vpn csI @@ -108120,14 +108736,14 @@ aag aag acv aez -agP +boL akY -aqi +boL avJ -afY -ahl -bLO -bWK +aIZ +aIZ +aIZ +aIZ lYA adb adb @@ -108160,7 +108776,7 @@ akx alD gWG dtM -asS +aii ajC czu alW @@ -108171,11 +108787,11 @@ atI atI atI czu -wKn -qVM -csz -qVM -wiz +iBt +iBt +iBt +iBt +qxz baw sMM baw @@ -108323,14 +108939,14 @@ aag aag acv aez -afY +boL akY aqk -avV -afY -afY -bLO -cit +aar +aIZ +aIZ +aIZ +aIZ lYA adb adb @@ -108363,7 +108979,7 @@ akx alD gWG dtM -asS +aii ajC czu alW @@ -108374,12 +108990,12 @@ atI atI atI czu -mOb -qVM -vGk +iBt +iBt +iBt +iBt qVM -fwD -baw +xuY sMM baw oby @@ -108527,13 +109143,13 @@ aag acf aet agS -akY -akY -akY -afY -agP -bLO -ceC +aiP +aYq +aar +aIZ +aIZ +aIZ +aIZ lYA adb adb @@ -108566,7 +109182,7 @@ hVz alD ajl ahr -asS +aii ajC czu alW @@ -108577,10 +109193,10 @@ atI atI atI czu -mOb -qVM -vGk -qVM +iBt +iBt +iBt +iBt qVM gnv yhI @@ -108729,14 +109345,14 @@ aag aag acf aet -ahl -afY -afY -afY -afY -afY -bLO -bWK +afB +akW +biT +aar +aar +aar +aar +aar lYA adc adc @@ -108769,7 +109385,7 @@ nMV vIf ajl aEI -biV +akU gMa czu czu @@ -108780,9 +109396,9 @@ adc adc adc czu -yji qVM -gMA +qVM +qVM qVM qVM crh @@ -108932,16 +109548,16 @@ aag aag acv aez -agh -ahp -afY +boL +boL +boL ahl -agh -ahp -afY -aJW +cWv +cWv +cWv +cWv kaj -aww +uId adH adH fMA @@ -108972,7 +109588,7 @@ aos alE bVE bYe -biV +akU aGd aWl hJu @@ -108981,12 +109597,12 @@ atC aAa aww aww -aww +wst axs -bBC +bbL bbL bYe -yfv +bbL bit baw baw @@ -109135,16 +109751,16 @@ aag aag acv aez -ahp -agh -arc -arc -arc -afY -agh -aJW +boL +asS +boL +ceu +boL +boL +boL +boL kGL -azY +uTY azY azY azY @@ -109176,17 +109792,17 @@ aSb aEe ait bjJ -aZE -aZE -aZE -aZE -xwG -agl -agl -agl -agl -sHp -wta +abx +abx +abx +abx +atC +azY +azY +azY +fad +kGL +abg abg abg abg @@ -109338,18 +109954,18 @@ aah aah acf acf -aJW +boL ale bDD nub -bDD -ale -aJW +dux +iYr +dux ado +atC kHT avn avn -avn mTb atC avn @@ -109387,8 +110003,8 @@ atC mTb avn avn -avn -avn +aim +atC avn bYe cre @@ -109541,14 +110157,14 @@ aaa aaa aaa lYA -aar -aar -aar -aar -tiM -aar -tiM -aar +aet +aet +biV +biV +ekY +aet +ekY +aet abE abE abE @@ -109743,15 +110359,15 @@ aaa aaa aaa aaa -lYA -ahs +ahx +aiH alf arp -aar -aap -aao -aap -aar +arp +aiH +aiH +aiH +aet kPB aci aci @@ -109946,15 +110562,15 @@ aaa aaa aaa aaa -lYA -ahu +ahx +aiH alg -arp -aar -aap -aao -aap -aar +bBC +bBC +aIx +aIB +aiH +aet kPZ acI acj @@ -110150,14 +110766,14 @@ aaa aaa aaa lYA -ahx -aap +aet +avx ahN -aar -awJ -aao +uli +uli +uli bWf -aar +aet lwC aTT acl @@ -110353,14 +110969,14 @@ aaa aaa aaa lYA -ahy -aap -aao -aar -pmn -aao -bWj -aar +aet +avV +uli +uli +uli +mov +bWq +aet lhX aXc acl @@ -110542,28 +111158,28 @@ aab aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lYA -fZF -alr -aao -sMs -aao -aao +ahx +aez +uli +aIx +uli +uli +mov bWq -aar +aet lhX eYM uuR @@ -110745,28 +111361,28 @@ aab aaa aaa aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -lYA -aar -aar -aar -aar -aap -aao -aap -aar +ahx +aez +uli +uli +uli +uli +uli +aiH +aet lhX acl acl @@ -110948,28 +111564,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa lYA -aao -aao -acD -aao -aap -aao -aap -aar +ahy +avZ +ipK +ipK +ipK +uli +bWf +aet lhX acl acl @@ -111151,28 +111767,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa lYA -aao -aar -aar -aar -aar -aar -aao -aar +aet +aIx +ipK +ceC +eRR +uli +bWq +aet loV acK acm @@ -111354,28 +111970,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa lYA -aap -aar -aru +aet +uli +ipK awe -fZF -aar -aap -aar +fwD +uli +oGy +aet lhX acl acl @@ -111557,28 +112173,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH aaa aaa aaa lYA -wFm -aar -ary -awh +aet +avx ipK -aar -wFm -aar +ipK +ipK +uli +bWq +aet lhX acl acl @@ -111595,7 +112211,7 @@ vOy aID gLc mKx -mKx +iit kZV vOy vOy @@ -111760,28 +112376,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH aaa aaa -lYA -aap -sMs -ahN -aap -aKc -aar -aap -aar +ahx +aez +uli +uli +uli +uli +uli +oWz +aet lhX gsZ uxO @@ -111798,7 +112414,7 @@ vOy aMd pGK pRX -pRX +mHD pRX vOy jFf @@ -111963,28 +112579,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH bdH aaa -lYA -uaZ -aar -arI -ahg +ahx +aez +aIB +aKg uli -aar -aap -aar +uli +mov +bWq +aet lhX kNO acl @@ -112000,7 +112616,7 @@ avj vOy aMg aSo -mHD +pRX mHD tzL vOy @@ -112166,28 +112782,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH aaa aaa lYA -ahN -aar -aar -aar -aar -aar -aao -aar +aet +aJJ +aIB +uli +uli +mov +bWq +aet lwC tIK acl @@ -112204,7 +112820,7 @@ vOy aQZ bkT pRX -pRX +mHD pRX vOy foP @@ -112369,28 +112985,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH aaa aaa lYA -cIU -aao -sMs -aao +aet +avx +ahN +aIB aKg -aYM -aao -aar +uli +bWf +aet abK acL acn @@ -112407,7 +113023,7 @@ vOy dVd lea hKl -mKx +lDN kZV vOy vOy @@ -112572,28 +113188,28 @@ aab aaa aaa aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa -aaa +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH +bdH bdH aaa aaa -lYA -ahW -aao -aar -aao -aap -aap -aap -sMs +ahx +aiH +uli +bLO +bLO +bLO +bLO +aiH +qga eAU eAU eAU @@ -112636,7 +113252,7 @@ bqo aRD aGt byp -uTN +aGt awE vGk qVM @@ -112775,8 +113391,8 @@ aab aaa aaa aaa -aaa -aaa +bdH +bdH aaa aaa aaa @@ -112788,15 +113404,15 @@ aaa bdH aaa aaa -lYA +ahx aiH -aao -aar +aiH +bWd awi -aao -aao -aao -aar +bWd +mOb +aiH +aet aBD acU uPr @@ -112992,10 +113608,10 @@ bdH aaa aaa lYA -aiP -aao aar -awJ +tiM +aar +aar aNi aNi bWr @@ -113197,8 +113813,8 @@ aaa lYA aiS aao -aar aao +acD aNi cYT aNm @@ -113400,7 +114016,7 @@ aaa lYA aiT aap -aar +aao aap aNi aZe @@ -113603,7 +114219,7 @@ aaa lYA aiU aap -aar +aap aap aNi aZr @@ -113806,8 +114422,8 @@ aaa lYA aiZ aap -aar -tQE +aao +aap aNi aZs aNm @@ -114009,7 +114625,7 @@ aaa lYA adf aao -aar +aao aao aNi jWr @@ -114211,9 +114827,9 @@ aaa aaa lYA fZF -aao +aWs aar -aao +tiM aNi aNi aNi @@ -114414,7 +115030,7 @@ aaa aaa lYA aar -tiM +aar aar awJ bzE @@ -114820,7 +115436,7 @@ aam aam aam lYA -aao +qsd aap aar aar @@ -114861,7 +115477,7 @@ akU jHG qVM qVM -xeG +qVM qVM qVM qVM @@ -115064,8 +115680,8 @@ akU avj qVM nNA -vGk -csz +ekO +nNA qVM iBt iBt @@ -115265,10 +115881,10 @@ vOy ayT aii avj -qVM -har +ltK vGk -hoX +hDv +ghW qVM iBt iBt @@ -115468,10 +116084,10 @@ vOy ayT aii avj -qVM -csz -vGk -csz +ltK +wYj +jhY +fqx qVM iBt iBt @@ -115671,8 +116287,8 @@ vOy aEK aSv ioX -qVM -pzQ +ltK +nXF vGk bqG qVM @@ -115876,7 +116492,7 @@ akV atL qVM qVM -xeG +nWc qVM qVM qVM @@ -116657,7 +117273,7 @@ abg caF aar aar -aar +tiM aar aar ael @@ -116667,8 +117283,8 @@ aih ael tnl amO -abg anc +atC apJ apJ aMl @@ -116682,8 +117298,8 @@ apJ aMl apJ apJ +atC cnv -abg amO lqJ qVM @@ -116692,7 +117308,7 @@ xeG qVM qVM qVM -qVM +xeG qVM qVM qVM @@ -116859,9 +117475,9 @@ bWs abg caF aar -aIZ -aIZ -aIZ +nuY +sTB +uaZ bUA ael afE @@ -116871,7 +117487,7 @@ ael cZm akU abg -abg +atC abg abx abx @@ -116885,7 +117501,7 @@ abx abx abx avD -abg +atC abg amO nQx @@ -116894,9 +117510,9 @@ usi csz usi qVM -iBt -iBt -iBt +xfh +vGk +vGk adI qVM acG @@ -117062,10 +117678,10 @@ acO aJs cbN aar -aIZ -aIZ -aIZ -aIZ +sTB +aap +aao +vFb ael afH agV @@ -117073,8 +117689,8 @@ ain ael eGl aii -abg anf +atC apK anf apK @@ -117088,19 +117704,19 @@ aDp apK cbr apK +atC cbr -abg amO -abg +uGt qVM qVM vGk har qVM -iBt -iBt -iBt -iBt +xHG +csz +vGk +xHG qVM aJd aJs @@ -117264,11 +117880,11 @@ aba pNQ abx hTy -bWd -aIZ -aIZ -aIZ -aIZ +aar +teB +aao +aao +wta ael afI agY @@ -117276,7 +117892,7 @@ oxi xfm als ani -aow +anc mOi mOi mOi @@ -117292,19 +117908,19 @@ aHq aHq aHq aHq -abg +iWN ajt -abg +kGI aPm qVM vGk -hoX +csz +xCX +vGk +vGk +vGk +csz qVM -iBt -iBt -iBt -iBt -nuY jSY abx hLO @@ -117466,12 +118082,12 @@ aIZ aar acP bUE -cbO +qFQ aar -aIZ -aIZ -aIZ -aIZ +aao +aap +aao +sTB ael afJ agY @@ -117479,7 +118095,7 @@ aiq ajJ aEX ajt -ali +aow mOi rCw rCw @@ -117497,18 +118113,18 @@ bti aHq sDC ajt -abg +kGI ejp qVM vGk -csz +hoX qVM -iBt -iBt -iBt -iBt +xHG +csz +vGk +csz qVM -acP +sah bUE cbO qVM @@ -117671,10 +118287,10 @@ acG abx caF aar -aIZ -aIZ -aIZ -aIZ +aap +aap +aao +sTB ael afK ahc @@ -117682,7 +118298,7 @@ air ael isW ajt -abg +ali mOi wCT sIf @@ -117700,16 +118316,16 @@ rUy cnS iWN ajt -abg +nYv qVM qVM vGk pzQ qVM -iBt -iBt -iBt -iBt +usi +vzl +vGk +csz qVM acG abx @@ -117874,10 +118490,10 @@ oPD abx lCz aar -aar -aar -aar -aar +tAV +sTB +uvS +wKn ael afL ahe @@ -117911,7 +118527,7 @@ dWm qVM qVM qVM -qVM +xeG qVM qVM oPD @@ -118077,10 +118693,10 @@ acG abx caF aar -aIZ -aIZ -aIZ -bUA +tiM +aar +aar +aar adO adO adO @@ -118112,10 +118728,10 @@ qVM qVM qVM qVM -iBt -iBt -iBt -adI +xfh +xWF +vGk +yji qVM acG abx @@ -118280,10 +118896,10 @@ acO aJs arJ aar -aIZ -aIZ -aIZ -aIZ +aao +aao +uGz +uGz adO afM fpR @@ -118315,10 +118931,10 @@ aXx jKI aXx qVM -iBt -iBt -iBt -iBt +usi +csz +vGk +csz qVM acO aJs @@ -118482,11 +119098,11 @@ bWh jSY abx hTy -xHG -aIZ -aIZ -aIZ -aIZ +aar +wFm +tQE +aao +sTB adO afN ahh @@ -118518,11 +119134,11 @@ oyE mMP mMP qVM -iBt -iBt -iBt -iBt -xfh +vGk +csz +vGk +csz +qVM jSY abx hLO @@ -118684,12 +119300,12 @@ aIZ aar acP bUE -cbO +qFQ aar -aIZ -aIZ -aIZ -aIZ +aap +aap +aao +fZF adO afO ahh @@ -118721,12 +119337,12 @@ sIA gSj aXA qVM -iBt -iBt -iBt -iBt +vGk +csz +vGk +xHG qVM -acP +sah bUE cbO qVM @@ -118889,10 +119505,10 @@ aJa abg ccf aar -aIZ -aIZ -aIZ -aIZ +tDA +aao +aap +fZF adO jkj ahh @@ -118924,10 +119540,10 @@ ckK iKM aHM qVM -iBt -iBt -iBt -iBt +vGk +csz +yji +uso qVM aJa abg @@ -119094,7 +119710,7 @@ kOG aar aar aar -aar +tiM aar aar lFt @@ -119127,7 +119743,7 @@ dbv lII aWc qVM -qVM +xeG qVM qVM qVM @@ -119198,8 +119814,8 @@ aQL mJP bSn aQL -aLG -aNO +vHs +ehH aYZ sLE bAV @@ -119225,8 +119841,8 @@ bCB cbv iEb bHY -bHa -buH +mru +syP bJC jSp lAQ @@ -119298,7 +119914,7 @@ aiv ahg aap aap -aap +aao rfg aiw ahh @@ -119401,8 +120017,8 @@ aTw aUj kLk aQL -aWN -aLG +mTn +aiy aYZ sLE bbk @@ -119428,8 +120044,8 @@ bdk bGh iEb bHY -buH -fBx +njy +hkE bJC ojF bNG @@ -119605,7 +120221,7 @@ aQL aQL aQL aQL -aLG +uQn aYZ sLE bbl @@ -119631,7 +120247,7 @@ bdl bGi iEb bHY -buH +oyy bJC bJC bJC @@ -120508,8 +121124,8 @@ aeC asV ayn atr -bbV -atr +aeA +aex ciw asV aeC @@ -120555,8 +121171,8 @@ kkx vcE mMu iMx -bXe -jMm +tGi +lJY bXe eyG mMu @@ -120914,7 +121530,7 @@ aeA atp ayR atr -bbZ +eGb atr cji nqV @@ -120962,7 +121578,7 @@ lJY hlX umh bXe -kFe +lxT tGi pfH wlF @@ -121111,13 +121727,13 @@ aaa bdH abh acx -aeC +umR ajs aeC asV ayn atr -aeC +aeA bXz ciw asV @@ -121165,13 +121781,13 @@ vcE mMu iMx bXe -yjM -bXe +lJY +mzF eyG mMu vcE kUV -vcE +pPF rRq uOi bdH @@ -122128,7 +122744,7 @@ abh abh abh abh -nPX +aeC atr aeC atr @@ -122184,7 +122800,7 @@ vcE bXe vcE bXe -sYn +vcE uOi uOi uOi @@ -122331,7 +122947,7 @@ aad aag aag abh -qbO +aeC atr aeC atr @@ -122387,7 +123003,7 @@ vcE bXe vcE bXe -sht +vcE uOi aag aag @@ -123667,8 +124283,8 @@ aQL aQL aLG aYO -aLG -jJs +kBK +hyt bdl tFS bdj @@ -123688,8 +124304,8 @@ jaR mJa wWP rsK -pJJ -buH +aGc +kkE iEb bIT bJC @@ -123870,7 +124486,7 @@ bES kcl aLG aYO -aLG +sou bAX bdl wIr @@ -123892,7 +124508,7 @@ bdl bdl bdl dhU -buH +vzq iEb bIT hNw @@ -125499,7 +126115,7 @@ kFY jmK bDL bbs -iit +ccQ bCN rbF vub diff --git a/maps/templates/Chinook.dmm b/maps/templates/Chinook.dmm index f2acbe320aeb..17be7bd9b968 100644 --- a/maps/templates/Chinook.dmm +++ b/maps/templates/Chinook.dmm @@ -416,7 +416,7 @@ /area/adminlevel/chinook/offices) "bx" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/item/tool/weldingtool/largetank{ +/obj/item/tool/weldingtool{ pixel_x = -9; pixel_y = 4 }, @@ -427,7 +427,7 @@ pixel_x = 13; pixel_y = 5 }, -/obj/item/tool/weldingtool/largetank{ +/obj/item/tool/weldingtool{ pixel_x = -2; pixel_y = 6 }, @@ -700,7 +700,7 @@ /area/adminlevel/chinook/sec) "cy" = ( /obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /turf/open/floor/almayer{ dir = 1; icon_state = "orange" @@ -9148,7 +9148,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/obj/item/tool/weldingtool/largetank{ +/obj/item/tool/weldingtool{ pixel_x = 14; pixel_y = -14 }, @@ -10758,9 +10758,9 @@ /area/adminlevel/chinook/sec) "Od" = ( /obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool/largetank, -/obj/item/tool/weldingtool/largetank, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, +/obj/item/tool/weldingtool, +/obj/item/tool/weldingtool, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, @@ -14056,7 +14056,7 @@ /area/adminlevel/chinook/medical) "ZH" = ( /obj/structure/machinery/power/port_gen/pacman, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /obj/structure/sign/safety/high_voltage{ pixel_y = 25 }, diff --git a/maps/templates/upp_ert_station.dmm b/maps/templates/upp_ert_station.dmm index 4aff44053f78..d78a900f2c59 100644 --- a/maps/templates/upp_ert_station.dmm +++ b/maps/templates/upp_ert_station.dmm @@ -729,7 +729,7 @@ }, /area/adminlevel/ert_station/upp_station) "kN" = ( -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /obj/item/clothing/glasses/welding, /obj/structure/machinery/light/double/blue{ dir = 8 diff --git a/maps/templates/weyland_ert_station.dmm b/maps/templates/weyland_ert_station.dmm index ce495acd3f65..414eee0bcbc7 100644 --- a/maps/templates/weyland_ert_station.dmm +++ b/maps/templates/weyland_ert_station.dmm @@ -2546,7 +2546,7 @@ /area/adminlevel/ert_station/weyland_station) "FD" = ( /obj/structure/surface/table/reinforced/almayer_B, -/obj/item/tool/weldingtool/largetank, +/obj/item/tool/weldingtool, /obj/item/clothing/glasses/welding, /turf/open/floor/corsat{ icon_state = "squares" diff --git a/sound/voice/joe/be_careful_with_that.ogg b/sound/voice/joe/be_careful_with_that.ogg new file mode 100644 index 000000000000..14f3ca8c357d Binary files /dev/null and b/sound/voice/joe/be_careful_with_that.ogg differ diff --git a/sound/voice/joe/been_looking_for_you.ogg b/sound/voice/joe/been_looking_for_you.ogg new file mode 100644 index 000000000000..14aa2c9a175d Binary files /dev/null and b/sound/voice/joe/been_looking_for_you.ogg differ diff --git a/sound/voice/joe/calm_down.ogg b/sound/voice/joe/calm_down.ogg new file mode 100644 index 000000000000..dde85ea17457 Binary files /dev/null and b/sound/voice/joe/calm_down.ogg differ diff --git a/sound/voice/joe/come_with_me.ogg b/sound/voice/joe/come_with_me.ogg new file mode 100644 index 000000000000..395c99c3850f Binary files /dev/null and b/sound/voice/joe/come_with_me.ogg differ diff --git a/sound/voice/joe/dont_run.ogg b/sound/voice/joe/dont_run.ogg new file mode 100644 index 000000000000..ce67a355c16b Binary files /dev/null and b/sound/voice/joe/dont_run.ogg differ diff --git a/sound/voice/joe/dontdothat.ogg b/sound/voice/joe/dontdothat.ogg new file mode 100644 index 000000000000..c078a5fdf191 Binary files /dev/null and b/sound/voice/joe/dontdothat.ogg differ diff --git a/sound/voice/joe/enough.ogg b/sound/voice/joe/enough.ogg new file mode 100644 index 000000000000..c6667751adcc Binary files /dev/null and b/sound/voice/joe/enough.ogg differ diff --git a/sound/voice/joe/existing_tasks.ogg b/sound/voice/joe/existing_tasks.ogg new file mode 100644 index 000000000000..2751538790fd Binary files /dev/null and b/sound/voice/joe/existing_tasks.ogg differ diff --git a/sound/voice/joe/expensive_mistake.ogg b/sound/voice/joe/expensive_mistake.ogg new file mode 100644 index 000000000000..cee21b5066b2 Binary files /dev/null and b/sound/voice/joe/expensive_mistake.ogg differ diff --git a/sound/voice/joe/follow_me_please.ogg b/sound/voice/joe/follow_me_please.ogg new file mode 100644 index 000000000000..10ecac4f6b19 Binary files /dev/null and b/sound/voice/joe/follow_me_please.ogg differ diff --git a/sound/voice/joe/glad_we_resolved.ogg b/sound/voice/joe/glad_we_resolved.ogg new file mode 100644 index 000000000000..117e35eff683 Binary files /dev/null and b/sound/voice/joe/glad_we_resolved.ogg differ diff --git a/sound/voice/joe/had_the_pleasure.ogg b/sound/voice/joe/had_the_pleasure.ogg new file mode 100644 index 000000000000..6f8972900290 Binary files /dev/null and b/sound/voice/joe/had_the_pleasure.ogg differ diff --git a/sound/voice/joe/have_a_problem.ogg b/sound/voice/joe/have_a_problem.ogg new file mode 100644 index 000000000000..55781f21c7d2 Binary files /dev/null and b/sound/voice/joe/have_a_problem.ogg differ diff --git a/sound/voice/joe/hold_still.ogg b/sound/voice/joe/hold_still.ogg new file mode 100644 index 000000000000..916c11e04286 Binary files /dev/null and b/sound/voice/joe/hold_still.ogg differ diff --git a/sound/voice/joe/how_are_you.ogg b/sound/voice/joe/how_are_you.ogg new file mode 100644 index 000000000000..49da5e70f93f Binary files /dev/null and b/sound/voice/joe/how_are_you.ogg differ diff --git a/sound/voice/joe/how_inconsiderate.ogg b/sound/voice/joe/how_inconsiderate.ogg new file mode 100644 index 000000000000..acebe30a36d7 Binary files /dev/null and b/sound/voice/joe/how_inconsiderate.ogg differ diff --git a/sound/voice/joe/hurt_yourself.ogg b/sound/voice/joe/hurt_yourself.ogg new file mode 100644 index 000000000000..5a89d8e32865 Binary files /dev/null and b/sound/voice/joe/hurt_yourself.ogg differ diff --git a/sound/voice/joe/interloper.ogg b/sound/voice/joe/interloper.ogg new file mode 100644 index 000000000000..4c4872aa6e52 Binary files /dev/null and b/sound/voice/joe/interloper.ogg differ diff --git a/sound/voice/joe/investigate_weapon.ogg b/sound/voice/joe/investigate_weapon.ogg new file mode 100644 index 000000000000..58aeff07079f Binary files /dev/null and b/sound/voice/joe/investigate_weapon.ogg differ diff --git a/sound/voice/joe/is_anybody_there.ogg b/sound/voice/joe/is_anybody_there.ogg new file mode 100644 index 000000000000..ac59c588a0e6 Binary files /dev/null and b/sound/voice/joe/is_anybody_there.ogg differ diff --git a/sound/voice/joe/let_me_help.ogg b/sound/voice/joe/let_me_help.ogg new file mode 100644 index 000000000000..564654c91a2b Binary files /dev/null and b/sound/voice/joe/let_me_help.ogg differ diff --git a/sound/voice/joe/most_concerning.ogg b/sound/voice/joe/most_concerning.ogg new file mode 100644 index 000000000000..33f9c5afc875 Binary files /dev/null and b/sound/voice/joe/most_concerning.ogg differ diff --git a/sound/voice/joe/no_need.ogg b/sound/voice/joe/no_need.ogg new file mode 100644 index 000000000000..80cf3056efe7 Binary files /dev/null and b/sound/voice/joe/no_need.ogg differ diff --git a/sound/voice/joe/not_be_tolerated.ogg b/sound/voice/joe/not_be_tolerated.ogg new file mode 100644 index 000000000000..bb7451d9608c Binary files /dev/null and b/sound/voice/joe/not_be_tolerated.ogg differ diff --git a/sound/voice/joe/pity.ogg b/sound/voice/joe/pity.ogg new file mode 100644 index 000000000000..1b13b95cdb95 Binary files /dev/null and b/sound/voice/joe/pity.ogg differ diff --git a/sound/voice/joe/protected_area_compromised.ogg b/sound/voice/joe/protected_area_compromised.ogg new file mode 100644 index 000000000000..688dcac5cc95 Binary files /dev/null and b/sound/voice/joe/protected_area_compromised.ogg differ diff --git a/sound/voice/joe/really.ogg b/sound/voice/joe/really.ogg new file mode 100644 index 000000000000..29ba7ae2208b Binary files /dev/null and b/sound/voice/joe/really.ogg differ diff --git a/sound/voice/joe/really_shouldnt_be_here.ogg b/sound/voice/joe/really_shouldnt_be_here.ogg new file mode 100644 index 000000000000..c8bd28004394 Binary files /dev/null and b/sound/voice/joe/really_shouldnt_be_here.ogg differ diff --git a/sound/voice/joe/someone_hurt.ogg b/sound/voice/joe/someone_hurt.ogg new file mode 100644 index 000000000000..014fb45f660f Binary files /dev/null and b/sound/voice/joe/someone_hurt.ogg differ diff --git a/sound/voice/joe/still_here.ogg b/sound/voice/joe/still_here.ogg new file mode 100644 index 000000000000..1f7b2f7c4f76 Binary files /dev/null and b/sound/voice/joe/still_here.ogg differ diff --git a/sound/voice/joe/stop_that.ogg b/sound/voice/joe/stop_that.ogg new file mode 100644 index 000000000000..2e585ff600be Binary files /dev/null and b/sound/voice/joe/stop_that.ogg differ diff --git a/sound/voice/joe/support_ticket_removed.ogg b/sound/voice/joe/support_ticket_removed.ogg new file mode 100644 index 000000000000..3fe68743cdc9 Binary files /dev/null and b/sound/voice/joe/support_ticket_removed.ogg differ diff --git a/sound/voice/joe/this_isnt_the_answer.ogg b/sound/voice/joe/this_isnt_the_answer.ogg new file mode 100644 index 000000000000..0d9603449cc6 Binary files /dev/null and b/sound/voice/joe/this_isnt_the_answer.ogg differ diff --git a/sound/voice/joe/tut_tut.ogg b/sound/voice/joe/tut_tut.ogg new file mode 100644 index 000000000000..a97eb17715cd Binary files /dev/null and b/sound/voice/joe/tut_tut.ogg differ diff --git a/sound/voice/joe/unwarranted.ogg b/sound/voice/joe/unwarranted.ogg new file mode 100644 index 000000000000..faf566ede40a Binary files /dev/null and b/sound/voice/joe/unwarranted.ogg differ diff --git a/sound/voice/joe/weapon_permit.ogg b/sound/voice/joe/weapon_permit.ogg deleted file mode 100644 index 9d22d1d2b163..000000000000 Binary files a/sound/voice/joe/weapon_permit.ogg and /dev/null differ diff --git a/sound/voice/joe/what_do_you_need.ogg b/sound/voice/joe/what_do_you_need.ogg new file mode 100644 index 000000000000..fcce740136c9 Binary files /dev/null and b/sound/voice/joe/what_do_you_need.ogg differ diff --git a/tgui/packages/tgui/interfaces/EscapePodConsole.tsx b/tgui/packages/tgui/interfaces/EscapePodConsole.tsx index 893ece49f8bc..b4bc410a433d 100644 --- a/tgui/packages/tgui/interfaces/EscapePodConsole.tsx +++ b/tgui/packages/tgui/interfaces/EscapePodConsole.tsx @@ -19,16 +19,15 @@ export const EscapePodConsole = (_props, context) => { switch (data.docking_status) { case 4: - statusMessage = 'SYSTEMS OK'; - buttonColor = 'good'; - operable = 1; + statusMessage = 'NO EVACUATION'; + buttonColor = 'neutral'; break; case 5: statusMessage = 'SYSTEMS DOWN'; break; case 6: statusMessage = 'STANDING BY'; - buttonColor = 'neutral'; + buttonColor = 'good'; operable = 1; break; case 7: diff --git a/tgui/packages/tgui/interfaces/Orbit/index.tsx b/tgui/packages/tgui/interfaces/Orbit/index.tsx index a900ee804a28..e9e345995271 100644 --- a/tgui/packages/tgui/interfaces/Orbit/index.tsx +++ b/tgui/packages/tgui/interfaces/Orbit/index.tsx @@ -1,6 +1,6 @@ import { filter, sortBy } from 'common/collections'; import { flow } from 'common/fp'; -import { capitalizeFirst } from 'common/string'; +import { capitalizeFirst, multiline } from 'common/string'; import { useBackend, useLocalState } from 'tgui/backend'; import { Box, Button, Collapsible, ColorBox, Icon, Input, LabeledList, Section, Stack } from 'tgui/components'; import { Window } from 'tgui/layouts'; @@ -29,18 +29,21 @@ export const Orbit = (props, context) => { /** Controls filtering out the list of observables via search */ const ObservableSearch = (props, context) => { const { act, data } = useBackend(context); - const { - auto_observe, - humans = [], - marines = [], - survivors = [], - xenos = [], - } = data; + const { humans = [], marines = [], survivors = [], xenos = [] } = data; + + let auto_observe = data.auto_observe; + + const [autoObserve, setAutoObserve] = useLocalState( + context, + 'autoObserve', + auto_observe ? true : false + ); const [searchQuery, setSearchQuery] = useLocalState( context, 'searchQuery', '' ); + /** Gets a list of Observables, then filters the most relevant to orbit */ const orbitMostRelevant = (searchQuery: string) => { /** Returns the most orbited observable that matches the search. */ @@ -56,6 +59,7 @@ const ObservableSearch = (props, context) => { if (mostRelevant !== undefined) { act('orbit', { ref: mostRelevant.ref, + auto_observe: autoObserve, }); } }; @@ -77,6 +81,16 @@ const ObservableSearch = (props, context) => { /> + +