From 96dae68d31925c167e6008af357cb92116b7b92c Mon Sep 17 00:00:00 2001 From: riot <103988604+CapCamIII@users.noreply.github.com> Date: Mon, 21 Aug 2023 06:11:45 -0500 Subject: [PATCH 01/55] fixes m4ra custom barrel offset (#4202) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit i accidentally deleted the pr form and i cant be bothered to re-open the open pr page so you're getting this in a messed up version without big text, 🖕 ABOUT THE PULL REQUEST OR SOMETHING fixes the offset for m4ra custom's barrel, appropriately putting it on the gun WHY ITS GOOD FOR THE GAME PROBABLY bugfix Changelog :cl: fix: fixes the offset on m4ra custom barrel, it should appropriately be sat right on the gun sprite /:cl: --- code/modules/projectiles/guns/specialist.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/specialist.dm b/code/modules/projectiles/guns/specialist.dm index 184c0ed38266..7152106869a9 100644 --- a/code/modules/projectiles/guns/specialist.dm +++ b/code/modules/projectiles/guns/specialist.dm @@ -580,7 +580,7 @@ /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) + 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" = 39, "special_y" = 17) /obj/item/weapon/gun/rifle/m4ra_custom/set_gun_config_values() ..() From 25f082e71603260590a46f281bca90c6b67a9ff5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 21 Aug 2023 12:20:44 +0100 Subject: [PATCH 02/55] Automatic changelog for PR #4202 [ci skip] --- html/changelogs/AutoChangeLog-pr-4202.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4202.yml diff --git a/html/changelogs/AutoChangeLog-pr-4202.yml b/html/changelogs/AutoChangeLog-pr-4202.yml new file mode 100644 index 000000000000..e744587580fb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4202.yml @@ -0,0 +1,4 @@ +author: "CapCamIII" +delete-after: True +changes: + - bugfix: "fixes the offset on m4ra custom barrel, it should appropriately be sat right on the gun sprite" \ No newline at end of file From 670331594a2955bcdbfe283dc7e1336e331ee4db Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 22 Aug 2023 01:05:43 +0000 Subject: [PATCH 03/55] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4202.yml | 4 ---- html/changelogs/archive/2023-08.yml | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4202.yml diff --git a/html/changelogs/AutoChangeLog-pr-4202.yml b/html/changelogs/AutoChangeLog-pr-4202.yml deleted file mode 100644 index e744587580fb..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4202.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CapCamIII" -delete-after: True -changes: - - bugfix: "fixes the offset on m4ra custom barrel, it should appropriately be sat right on the gun sprite" \ No newline at end of file diff --git a/html/changelogs/archive/2023-08.yml b/html/changelogs/archive/2023-08.yml index 6e252ade22b8..ee712fb75694 100644 --- a/html/changelogs/archive/2023-08.yml +++ b/html/changelogs/archive/2023-08.yml @@ -283,3 +283,7 @@ Huffie56: - bugfix: prevent belt flare being filled by dump in action leaving no space for flare gun. +2023-08-22: + CapCamIII: + - bugfix: fixes the offset on m4ra custom barrel, it should appropriately be sat + right on the gun sprite From 1dd447530feb51c9dd647aeed2d4219bd0c96173 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Tue, 22 Aug 2023 13:58:44 +0100 Subject: [PATCH 04/55] Faction Access & Almayer Security Overhaul (#4035) # About the pull request Removes the majority of accesses from non marine characters. No more free walking into CIC for the CLF, you're gonna have to work for it. Creates faction specific accesses for basic things, these are not assigned to anything at the moment. Overhauled how we get accesses so it no longer uses a bazillion different procs and instead relies on a centralised proc and defines. Added specific access lists for WY Goons, PMCs, Liaison and Survivor Liaison as they're tailored to their uses. Added very generic CLF and UPP lists, all UPP personnel have all their accesses FOR NOW. Added a mapping var (access_changed) for identifying doors/objects that have non-standard access tags to allow for easier locating of things that need updates should access numbers be changed. # Explain why it's good for the game Right now we use a million different procs to get accesses. This is really confusing and makes it difficult to tell who's getting what as it's spread out all over the place. As for why I'm changing ERT accesses, this is something discussed with Morrow and Nanu, it doesn't make a whole lot of sense for your average CLF plebian to be able to walk through all security measures on a military ship like they don't exist. Instead, they'll now get at most the generic Emergency Response codes to open specific areas of the ship key to responders - Medbay and Maintenance. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Overhauled how ID accesses are assigned via proc, compiling all the many different procs we used into one. add: Added faction specific accesses to all major factions. del: Removed almost all marine accesses from non marine presets. No more free CIC access to CLF. code: Removed duplicate code in the VAI file. add: Adds a mapping var to indicate a door has non-standard access tags. This is to make it significantly easier for any future access changes to know if they need to look somewhere. maptweak: Applied this var to every door I could find on the Almayer that has non-standard access. Colonies and other stuff to come in a future update. add: Added various new accesses to colonial doors, added WY_SECURITY and WY_RESEARCH to marine research doors. maptweak: Added reinforced piping to lifeboats area. Didn't make much sense for a cruicial part of the evacuation procedures to be prone to spontaneous explosions that can singlehandedly end a marine evacuation without hostiles ever seeing it. maptweak: Added reinforced piping to the research closed loop (it's a closed loop). Also removed CIC access from containment shutters as CIC access can't open the doors. maptweak: Changed a couple walls around research from standard to reinforced, to fit with the containment breach shutters. /:cl: --- code/__DEFINES/access.dm | 146 ++++- code/datums/agents/tools/stimulants.dm | 1 - code/game/jobs/access.dm | 510 +++++++++++------ code/game/machinery/ARES/ARES_procs.dm | 4 +- .../machinery/computer/dropship_weapons.dm | 4 +- code/game/machinery/computer/medical.dm | 2 +- code/game/machinery/doors/airlock_types.dm | 44 +- code/game/machinery/doors/multi_tile.dm | 16 +- code/game/objects/items/cards_ids.dm | 10 +- .../objects/items/circuitboards/airlock.dm | 2 +- .../objects/items/devices/portable_vendor.dm | 2 +- code/game/objects/items/storage/firstaid.dm | 21 +- code/game/objects/items/storage/lockbox.dm | 2 +- code/game/objects/items/weapons/stunbaton.dm | 2 +- code/game/objects/objs.dm | 2 + .../closets/secure/guncabinet.dm | 2 +- .../closets/secure/secure_closets.dm | 2 +- .../crates_lockers/secure_crates.dm | 2 +- code/modules/admin/verbs/debug.dm | 8 +- code/modules/cm_marines/marines_consoles.dm | 10 +- code/modules/gear_presets/clf.dm | 174 ++---- code/modules/gear_presets/cmb.dm | 4 +- code/modules/gear_presets/contractor.dm | 65 +-- code/modules/gear_presets/corpses.dm | 124 ++-- code/modules/gear_presets/fun.dm | 4 +- code/modules/gear_presets/other.dm | 33 +- code/modules/gear_presets/pmc.dm | 10 +- code/modules/gear_presets/survivors.dm | 27 +- code/modules/gear_presets/synths.dm | 8 +- code/modules/gear_presets/upp.dm | 4 +- code/modules/gear_presets/uscm.dm | 2 +- code/modules/gear_presets/uscm_dress.dm | 6 +- code/modules/gear_presets/uscm_event.dm | 42 +- code/modules/gear_presets/uscm_police.dm | 2 +- code/modules/gear_presets/uscm_ship.dm | 16 +- code/modules/gear_presets/whiteout.dm | 2 +- code/modules/gear_presets/wo.dm | 12 +- code/modules/gear_presets/wy.dm | 21 +- code/modules/gear_presets/wy_goons.dm | 6 +- maps/map_files/USS_Almayer/USS_Almayer.dmm | 532 ++++++++++-------- maps/predship/huntership.dmm | 23 +- maps/shuttles/dropship_alamo.dmm | 6 +- maps/shuttles/dropship_normandy.dmm | 6 +- 43 files changed, 1040 insertions(+), 881 deletions(-) diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index 044271be9b5a..97e4b0dbd1e8 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -43,6 +43,7 @@ most of them are tied into map-placed objects. This should be reworked in the fu #define ACCESS_MARINE_SYNTH 36 #define ACCESS_MARINE_ASO 37 +#define ACCESS_MARINE_CHAPLAIN 38 // AI Core Accesses /// Used in temporary passes @@ -52,7 +53,9 @@ most of them are tied into map-placed objects. This should be reworked in the fu /// Used to access Maintenance Protocols on ARES Interface. #define ACCESS_ARES_DEBUG 92 -//Surface access levels +//================================================= + +//Civilian access levels #define ACCESS_CIVILIAN_PUBLIC 100 #define ACCESS_CIVILIAN_LOGISTICS 101 #define ACCESS_CIVILIAN_ENGINEERING 102 @@ -60,23 +63,138 @@ most of them are tied into map-placed objects. This should be reworked in the fu #define ACCESS_CIVILIAN_BRIG 104 #define ACCESS_CIVILIAN_MEDBAY 105 #define ACCESS_CIVILIAN_COMMAND 106 +#define ACCESS_PRESS 110 + +///The generic "I'm a bad guy" access +#define ACCESS_ILLEGAL_PIRATE 120 + +//================================================= + +//Weyland Yutani access levels (200-229) +///Found on just about all corporate ID cards +#define ACCESS_WY_GENERAL 200 +///WY employee override for most colonial areas +#define ACCESS_WY_COLONIAL 201 +#define ACCESS_WY_MEDICAL 202 +#define ACCESS_WY_SECURITY 203 +#define ACCESS_WY_ENGINEERING 204 +#define ACCESS_WY_FLIGHT 205 +#define ACCESS_WY_RESEARCH 206 +///WY access given to field executives, like a marine liaison. +#define ACCESS_WY_EXEC 207 + +#define ACCESS_WY_PMC 210 +#define ACCESS_WY_PMC_TL 211 +#define ACCESS_WY_ARMORY 212 +///Secret research or other projects with highly restricted access +#define ACCESS_WY_SECRETS 213 + +#define ACCESS_WY_LEADERSHIP 215 +///Senior leadership, the highest ranks +#define ACCESS_WY_SENIOR_LEAD 216 + +//================================================= + +//Union of Progressive Peoples access levels (230-259) +///Found on just about all Union ID cards +#define ACCESS_UPP_GENERAL 230 +#define ACCESS_UPP_MEDICAL 231 +#define ACCESS_UPP_ENGINEERING 232 +#define ACCESS_UPP_SECURITY 233 +#define ACCESS_UPP_ARMORY 234 +#define ACCESS_UPP_FLIGHT 235 +#define ACCESS_UPP_RESEARCH 236 + +#define ACCESS_UPP_COMMANDO 239 +#define ACCESS_UPP_LEADERSHIP 240 +///Senior leadership, the highest ranks +#define ACCESS_UPP_SENIOR_LEAD 241 + +//================================================= + +//Colonial Liberation Front access levels (260-289) +///Found on just about all CLF ID cards +#define ACCESS_CLF_GENERAL 260 +#define ACCESS_CLF_MEDICAL 261 +#define ACCESS_CLF_ENGINEERING 262 +#define ACCESS_CLF_SECURITY 263 +#define ACCESS_CLF_ARMORY 264 +#define ACCESS_CLF_FLIGHT 265 + +#define ACCESS_CLF_LEADERSHIP 270 +///Senior leadership, the highest ranks +#define ACCESS_CLF_SENIOR_LEAD 271 + +//================================================= + +//Three World Empire access levels (290-319) +///Found on just about all Imperial ID cards +#define ACCESS_TWE_GENERAL 290 +#define ACCESS_TWE_MEDICAL 291 +#define ACCESS_TWE_ENGINEERING 292 +#define ACCESS_TWE_SECURITY 293 +#define ACCESS_TWE_ARMORY 294 +#define ACCESS_TWE_FLIGHT 295 +#define ACCESS_TWE_RESEARCH 296 + +#define ACCESS_TWE_COMMANDO 299 +#define ACCESS_TWE_LEADERSHIP 300 +///Senior leadership, the highest ranks +#define ACCESS_TWE_SENIOR_LEAD 301 -//Special access levels. Should be alright to modify these. -#define ACCESS_WY_PMC_GREEN 180 -#define ACCESS_WY_PMC_ORANGE 181 -#define ACCESS_WY_PMC_RED 182 -#define ACCESS_WY_PMC_BLACK 183 -#define ACCESS_WY_PMC_WHITE 184 -#define ACCESS_WY_CORPORATE 200 -#define ACCESS_ILLEGAL_PIRATE 201 -#define ACCESS_WY_CORPORATE_DS 202 -#define ACCESS_PRESS 203 //================================================= // Yautja Access Levels /// Requires a visible ID chip to open -#define ACCESS_YAUTJA_SECURE 250 +#define ACCESS_YAUTJA_SECURE 390 /// Elders+ only -#define ACCESS_YAUTJA_ELDER 251 +#define ACCESS_YAUTJA_ELDER 391 /// Ancients only -#define ACCESS_YAUTJA_ANCIENT 252 +#define ACCESS_YAUTJA_ANCIENT 392 + +///Temporary, just so I can flag places I need to change +#define ACCESS_COME_BACK_TO_ME 999 + + +//Big lists of access codes, so I can get rid of the half a million different "get_bla_bla_bla_access" procs. +//See /proc/get_access(access_list = ACCESS_LIST_GLOBAL) +///Well... everything (non Yautja). +#define ACCESS_LIST_GLOBAL "EVERYTHING" + +///Most of the USCM Access Levels used on the USS Almayer, excluding highly restricted ones. +#define ACCESS_LIST_MARINE_MAIN "Almayer (Main)" +///All USCM Access levels used on the USS Almayer +#define ACCESS_LIST_MARINE_ALL "Almayer (ALL)" +///Used by the Wey-Yu - USCM Liaison +#define ACCESS_LIST_MARINE_LIAISON "Wey-Yu (Liaison)" + +///The accesses granted to emergency responders. +#define ACCESS_LIST_EMERGENCY_RESPONSE "Almayer (ERT)" +///Access used by United Americas responders. +#define ACCESS_LIST_UA "United Americas" + +///Generic/basic access to Wey-Yu stuff +#define ACCESS_LIST_WY_BASE "Wey-Yu (Basic)" +///Wey-Yu Corp Security access. +#define ACCESS_LIST_WY_GOON "Wey-Yu (Goons)" +///Wey-Yu PMCs access. +#define ACCESS_LIST_WY_PMC "Wey-Yu (PMC)" +///Access levels for WY senior leadership +#define ACCESS_LIST_WY_SENIOR "Wey-Yu (Senior Lead)" +///All access levels associated with Weyland Yutani +#define ACCESS_LIST_WY_ALL "Wey-Yu (ALL)" + +///All the access levels in the civillian category, excluding Press. +#define ACCESS_LIST_COLONIAL_ALL "Colonial (ALL)" +///Used by the Wey-Yu - Civil Authority Liaison +#define ACCESS_LIST_CIVIL_LIAISON "Colonial (Liaison)" +///The access used by delivery ERT (Pizza/Souto) +#define ACCESS_LIST_DELIVERY "Delivery" + +///All access levels associated with UPP +#define ACCESS_LIST_UPP_ALL "UPP (ALL)" + +///Generic/basic access to CLF stuff +#define ACCESS_LIST_CLF_BASE "CLF (Basic)" +///All access levels associated with CLF +#define ACCESS_LIST_CLF_ALL "CLF (ALL)" diff --git a/code/datums/agents/tools/stimulants.dm b/code/datums/agents/tools/stimulants.dm index f4cd9c40f9ba..ff177a1310d2 100644 --- a/code/datums/agents/tools/stimulants.dm +++ b/code/datums/agents/tools/stimulants.dm @@ -6,7 +6,6 @@ pill_type_to_fill = /obj/item/reagent_container/pill/stimulant req_access = null - req_role = null /obj/item/storage/pill_bottle/ultrazine/antag/id_check(mob/user) if(!skillcheckexplicit(user, SKILL_ANTAG, SKILL_ANTAG_AGENT)) diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 425a09afb591..0d10b06d5fef 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -93,119 +93,244 @@ return return 1 -///Grants access to EVERYWHERE -/proc/get_global_access() - return get_all_marine_access() + get_all_main_access() -///Grants standard access for all factions, does not include high restrictions like COs office. -/proc/get_all_main_access() - return get_antagonist_access() + get_all_civilian_access() + get_all_weyland_access() - -/proc/get_all_civilian_access() - return list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ) - -///Includes restricted accesses -/proc/get_all_marine_access() - return list( - ACCESS_MARINE_CO, - ACCESS_MARINE_AI, - ACCESS_MARINE_AI_TEMP, - ) + get_main_marine_access() - -///All Almayer accesses other than the highly restricted ones, such as CO's office. -/proc/get_main_marine_access() - return list( - ACCESS_MARINE_SENIOR, - ACCESS_MARINE_DATABASE, - ACCESS_MARINE_COMMAND, - ACCESS_MARINE_CMP, - ACCESS_MARINE_BRIG, - ACCESS_MARINE_ARMORY, - ACCESS_MARINE_CMO, - ACCESS_MARINE_MEDBAY, - ACCESS_MARINE_CHEMISTRY, - ACCESS_MARINE_MORGUE, - ACCESS_MARINE_RESEARCH, - ACCESS_MARINE_CE, - ACCESS_MARINE_ENGINEERING, - ACCESS_MARINE_MAINT, - ACCESS_MARINE_OT, - ACCESS_MARINE_RO, - ACCESS_MARINE_CARGO, - ACCESS_MARINE_PREP, - ACCESS_MARINE_MEDPREP, - ACCESS_MARINE_ENGPREP, - ACCESS_MARINE_SMARTPREP, - ACCESS_MARINE_LEADER, - ACCESS_MARINE_SPECPREP, - ACCESS_MARINE_TL_PREP, - ACCESS_MARINE_ALPHA, - ACCESS_MARINE_BRAVO, - ACCESS_MARINE_CHARLIE, - ACCESS_MARINE_DELTA, - ACCESS_MARINE_PILOT, - ACCESS_MARINE_DROPSHIP, - ACCESS_MARINE_SEA, - ACCESS_MARINE_KITCHEN, - ACCESS_MARINE_SYNTH, - ACCESS_PRESS, - ACCESS_MARINE_ASO, - ) - -/proc/get_all_weyland_access() - return list(ACCESS_WY_PMC_GREEN, ACCESS_WY_PMC_ORANGE, ACCESS_WY_PMC_RED, ACCESS_WY_PMC_BLACK, ACCESS_WY_PMC_WHITE, ACCESS_WY_CORPORATE) - -///CLF & UPP, UPP Commandos have global. -/proc/get_antagonist_access() - return get_main_marine_access() + list(ACCESS_ILLEGAL_PIRATE) - -///Used by PMCs and elite mercs. -/proc/get_weyland_pmc_access() - return get_all_main_access() - -///This is only used by USCM ERTs at present -/proc/get_friendly_ert_access() - return get_main_marine_access() + get_all_civilian_access() - -///Pizza and Souto -/proc/get_civil_ert_access() - return list(ACCESS_MARINE_COMMAND, ACCESS_MARINE_CARGO, ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS) + +/proc/get_access(access_list = ACCESS_LIST_GLOBAL) + switch(access_list) + if(ACCESS_LIST_GLOBAL) + return list(ACCESS_ILLEGAL_PIRATE) + get_access(ACCESS_LIST_MARINE_ALL) + get_access(ACCESS_LIST_WY_ALL) + get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_CLF_ALL) + get_access(ACCESS_LIST_UPP_ALL) + if(ACCESS_LIST_MARINE_MAIN) + return list( + ACCESS_MARINE_SENIOR, + ACCESS_MARINE_DATABASE, + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_CMP, + ACCESS_MARINE_BRIG, + ACCESS_MARINE_ARMORY, + ACCESS_MARINE_CMO, + ACCESS_MARINE_MEDBAY, + ACCESS_MARINE_CHEMISTRY, + ACCESS_MARINE_MORGUE, + ACCESS_MARINE_RESEARCH, + ACCESS_MARINE_CE, + ACCESS_MARINE_ENGINEERING, + ACCESS_MARINE_MAINT, + ACCESS_MARINE_OT, + ACCESS_MARINE_RO, + ACCESS_MARINE_CARGO, + ACCESS_MARINE_PREP, + ACCESS_MARINE_MEDPREP, + ACCESS_MARINE_ENGPREP, + ACCESS_MARINE_SMARTPREP, + ACCESS_MARINE_LEADER, + ACCESS_MARINE_SPECPREP, + ACCESS_MARINE_TL_PREP, + ACCESS_MARINE_ALPHA, + ACCESS_MARINE_BRAVO, + ACCESS_MARINE_CHARLIE, + ACCESS_MARINE_DELTA, + ACCESS_MARINE_PILOT, + ACCESS_MARINE_DROPSHIP, + ACCESS_MARINE_SEA, + ACCESS_MARINE_KITCHEN, + ACCESS_MARINE_SYNTH, + ACCESS_MARINE_ASO, + ACCESS_MARINE_CHAPLAIN, + ACCESS_PRESS, + ) + + if(ACCESS_LIST_MARINE_ALL) + return list( + ACCESS_MARINE_CO, + ACCESS_MARINE_AI, + ACCESS_MARINE_AI_TEMP, + ) + get_access(ACCESS_LIST_MARINE_MAIN) + + if(ACCESS_LIST_EMERGENCY_RESPONSE) + return list( + ACCESS_MARINE_MAINT, + ACCESS_MARINE_MEDBAY, + ACCESS_MARINE_KITCHEN, + ACCESS_PRESS, + ) + + if(ACCESS_LIST_UA) + return get_access(ACCESS_LIST_MARINE_MAIN) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_MARINE_LIAISON) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_FLIGHT, + ACCESS_WY_RESEARCH, + ACCESS_WY_EXEC, + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_RESEARCH, + ACCESS_MARINE_MEDBAY, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_COLONIAL_ALL) + return list( + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ACCESS_CIVILIAN_BRIG, + ACCESS_CIVILIAN_MEDBAY, + ACCESS_CIVILIAN_COMMAND, + ) + + if(ACCESS_LIST_CIVIL_LIAISON) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_RESEARCH, + ACCESS_WY_EXEC, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_DELIVERY) + return list( + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_CARGO, + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ) + + + if(ACCESS_LIST_WY_ALL) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ACCESS_WY_SECURITY, + ACCESS_WY_ENGINEERING, + ACCESS_WY_FLIGHT, + ACCESS_WY_RESEARCH, + ACCESS_WY_EXEC, + ACCESS_WY_PMC, + ACCESS_WY_PMC_TL, + ACCESS_WY_ARMORY, + ACCESS_WY_SECRETS, + ACCESS_WY_LEADERSHIP, + ACCESS_WY_SENIOR_LEAD, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_WY_BASE) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ) + + if(ACCESS_LIST_WY_SENIOR) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ACCESS_WY_SECURITY, + ACCESS_WY_ENGINEERING, + ACCESS_WY_FLIGHT, + ACCESS_WY_RESEARCH, + ACCESS_WY_EXEC, + ACCESS_WY_PMC, + ACCESS_WY_PMC_TL, + ACCESS_WY_ARMORY, + ACCESS_WY_LEADERSHIP, + ACCESS_WY_SENIOR_LEAD, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + + if(ACCESS_LIST_WY_GOON) + return list( + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_MEDICAL, + ACCESS_WY_SECURITY, + ACCESS_WY_RESEARCH, + ACCESS_WY_ARMORY, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_EMERGENCY_RESPONSE) + + if(ACCESS_LIST_WY_PMC) + return list( + ACCESS_WY_PMC, + ACCESS_WY_ENGINEERING, + ACCESS_WY_FLIGHT, + ) + get_access(ACCESS_LIST_WY_GOON) + + if(ACCESS_LIST_CLF_ALL) + return list( + ACCESS_CLF_SECURITY, + ACCESS_CLF_ARMORY, + ACCESS_CLF_LEADERSHIP, + ACCESS_CLF_SENIOR_LEAD, + ) + get_access(ACCESS_LIST_CLF_BASE) + + if(ACCESS_LIST_CLF_BASE) + return list( + ACCESS_CLF_GENERAL, + ACCESS_CLF_MEDICAL, + ACCESS_CLF_ENGINEERING, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_EMERGENCY_RESPONSE) + + if(ACCESS_LIST_UPP_ALL) + return list( + ACCESS_UPP_GENERAL, + ACCESS_UPP_MEDICAL, + ACCESS_UPP_ENGINEERING, + ACCESS_UPP_SECURITY, + ACCESS_UPP_ARMORY, + ACCESS_UPP_FLIGHT, + ACCESS_UPP_RESEARCH, + ACCESS_UPP_COMMANDO, + ACCESS_UPP_LEADERSHIP, + ACCESS_UPP_SENIOR_LEAD, + ) + get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_EMERGENCY_RESPONSE) /proc/get_region_accesses(code) switch(code) - if(0) - return get_all_main_access() - if(1) - return list(ACCESS_MARINE_CMP, ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY) // Security - if(2) - return list(ACCESS_MARINE_CMO, ACCESS_MARINE_MEDBAY, ACCESS_MARINE_MORGUE, ACCESS_MARINE_CHEMISTRY) // Medbay - if(3) - return list(ACCESS_MARINE_RESEARCH, ACCESS_MARINE_CHEMISTRY, ACCESS_MARINE_MORGUE) // Research - if(4) - return list(ACCESS_MARINE_CE, ACCESS_MARINE_ENGINEERING, ACCESS_MARINE_OT, ACCESS_MARINE_MAINT) // Engineering - if(5) - return list(ACCESS_MARINE_CO, ACCESS_MARINE_SENIOR, ACCESS_MARINE_DATABASE, ACCESS_MARINE_COMMAND, ACCESS_MARINE_RO, ACCESS_MARINE_CARGO, ACCESS_MARINE_SEA, ACCESS_MARINE_SYNTH) // Command - if(6) - return list(ACCESS_MARINE_PREP, ACCESS_MARINE_MEDPREP, ACCESS_MARINE_ENGPREP, ACCESS_MARINE_SMARTPREP, ACCESS_MARINE_LEADER, ACCESS_MARINE_SPECPREP, ACCESS_MARINE_TL_PREP, ACCESS_MARINE_KITCHEN)//spess mahreens - if(7) - return list(ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, ACCESS_MARINE_DELTA) // Squads - if(8) + if(0)//Everything + return get_access(ACCESS_LIST_COLONIAL_ALL) + get_access(ACCESS_LIST_MARINE_MAIN) + if(1)//Security + return list(ACCESS_MARINE_CMP, ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY) + if(2)//Medbay + return list(ACCESS_MARINE_CMO, ACCESS_MARINE_MEDBAY, ACCESS_MARINE_MORGUE, ACCESS_MARINE_CHEMISTRY) + if(3)//Research + return list(ACCESS_MARINE_RESEARCH, ACCESS_MARINE_CHEMISTRY, ACCESS_MARINE_MORGUE) + if(4)//Engineering + return list(ACCESS_MARINE_CE, ACCESS_MARINE_ENGINEERING, ACCESS_MARINE_OT, ACCESS_MARINE_MAINT) + if(5)//Command + return list( + ACCESS_MARINE_SENIOR, + ACCESS_MARINE_DATABASE, + ACCESS_MARINE_COMMAND, + ACCESS_MARINE_RO, + ACCESS_MARINE_CARGO, + ACCESS_MARINE_SEA, + ACCESS_MARINE_SYNTH, + ) + if(6)//Marines + return list( + ACCESS_MARINE_PREP, + ACCESS_MARINE_MEDPREP, + ACCESS_MARINE_ENGPREP, + ACCESS_MARINE_SMARTPREP, + ACCESS_MARINE_LEADER, + ACCESS_MARINE_SPECPREP, + ACCESS_MARINE_TL_PREP, + ACCESS_MARINE_KITCHEN, + ) + if(7)//Squads + return list(ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, ACCESS_MARINE_DELTA) + if(8)//Civilian return list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ) //Civilian + ACCESS_CIVILIAN_PUBLIC, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_LOGISTICS, + ACCESS_CIVILIAN_BRIG, + ACCESS_CIVILIAN_MEDBAY, + ACCESS_CIVILIAN_COMMAND, + ) /proc/get_region_accesses_name(code) switch(code) @@ -230,55 +355,124 @@ /proc/get_access_desc(A) switch(A) - if(ACCESS_MARINE_CMP) return "CMP's Office" - if(ACCESS_MARINE_BRIG) return "Brig" - if(ACCESS_MARINE_ARMORY) return "Armory" - if(ACCESS_MARINE_CMO) return "CMO's Office" - if(ACCESS_MARINE_MEDBAY) return "[MAIN_SHIP_NAME] Medbay" - if(ACCESS_MARINE_RESEARCH) return "[MAIN_SHIP_NAME] Research" - if(ACCESS_MARINE_CHEMISTRY) return "[MAIN_SHIP_NAME] Chemistry" - if(ACCESS_MARINE_MORGUE) return "[MAIN_SHIP_NAME] Morgue" - if(ACCESS_MARINE_CE) return "CE's Office" - if(ACCESS_MARINE_RO) return "RO's Office" - if(ACCESS_MARINE_ENGINEERING) return "[MAIN_SHIP_NAME] Engineering" - if(ACCESS_MARINE_OT) return "[MAIN_SHIP_NAME] Ordnance Workshop" - if(ACCESS_MARINE_SENIOR) return "[MAIN_SHIP_NAME] Senior Command" - if(ACCESS_MARINE_CO) return "Commander's Quarters" - if(ACCESS_MARINE_DATABASE) return "[MAIN_SHIP_NAME]'s Database" - if(ACCESS_MARINE_COMMAND) return "[MAIN_SHIP_NAME] Command" - if(ACCESS_MARINE_CREWMAN) return "Vehicle Crewman" - if(ACCESS_MARINE_PREP) return "Marine Prep" - if(ACCESS_MARINE_ENGPREP) return "Marine Squad Engineering" - if(ACCESS_MARINE_MEDPREP) return "Marine Squad Medical" - if(ACCESS_MARINE_SPECPREP) return "Marine Weapons Specialist" - if(ACCESS_MARINE_SMARTPREP) return "Marine Smartgunner" - if(ACCESS_MARINE_TL_PREP) return "Marine Team Leader" - if(ACCESS_MARINE_LEADER) return "Marine Leader" - if(ACCESS_MARINE_ALPHA) return "Alpha Squad" - if(ACCESS_MARINE_BRAVO) return "Bravo Squad" - if(ACCESS_MARINE_CHARLIE) return "Charlie Squad" - if(ACCESS_MARINE_DELTA) return "Delta Squad" - if(ACCESS_MARINE_CARGO) return "Requisitions" - if(ACCESS_MARINE_DROPSHIP) return "Dropship Piloting" - if(ACCESS_MARINE_PILOT) return "Pilot Gear" - if(ACCESS_MARINE_MAINT) return "[MAIN_SHIP_NAME] Maintenance" - if(ACCESS_CIVILIAN_RESEARCH) return "Civilian Research" - if(ACCESS_CIVILIAN_COMMAND) return "Civilian Command" - if(ACCESS_CIVILIAN_MEDBAY) return "Civilian Medbay" - if(ACCESS_CIVILIAN_LOGISTICS) return "Civilian Logistics" - if(ACCESS_CIVILIAN_ENGINEERING) return "Civilian Engineering" - if(ACCESS_CIVILIAN_BRIG) return "Civilian Brig" - if(ACCESS_CIVILIAN_PUBLIC) return "Civilian" - if(ACCESS_MARINE_SEA) return "SEA's Office" - if(ACCESS_MARINE_KITCHEN) return "Kitchen" - if(ACCESS_MARINE_SYNTH) return "Synthetic Storage" - if(ACCESS_MARINE_AI) return "AI Core" + if(ACCESS_MARINE_CMP) + return "CMP's Office" + if(ACCESS_MARINE_BRIG) + return "Brig" + if(ACCESS_MARINE_ARMORY) + return "Armory" + if(ACCESS_MARINE_CMO) + return "CMO's Office" + if(ACCESS_MARINE_MEDBAY) + return "[MAIN_SHIP_NAME] Medbay" + if(ACCESS_MARINE_RESEARCH) + return "[MAIN_SHIP_NAME] Research" + if(ACCESS_MARINE_CHEMISTRY) + return "[MAIN_SHIP_NAME] Chemistry" + if(ACCESS_MARINE_MORGUE) + return "[MAIN_SHIP_NAME] Morgue" + if(ACCESS_MARINE_CE) + return "CE's Office" + if(ACCESS_MARINE_RO) + return "RO's Office" + if(ACCESS_MARINE_ENGINEERING) + return "[MAIN_SHIP_NAME] Engineering" + if(ACCESS_MARINE_OT) + return "[MAIN_SHIP_NAME] Ordnance Workshop" + if(ACCESS_MARINE_SENIOR) + return "[MAIN_SHIP_NAME] Senior Command" + if(ACCESS_MARINE_CO) + return "Commander's Quarters" + if(ACCESS_MARINE_DATABASE) + return "[MAIN_SHIP_NAME]'s Database" + if(ACCESS_MARINE_COMMAND) + return "[MAIN_SHIP_NAME] Command" + if(ACCESS_MARINE_CREWMAN) + return "Vehicle Crewman" + if(ACCESS_MARINE_PREP) + return "Marine Prep" + if(ACCESS_MARINE_ENGPREP) + return "Marine Squad Engineering" + if(ACCESS_MARINE_MEDPREP) + return "Marine Squad Medical" + if(ACCESS_MARINE_SPECPREP) + return "Marine Weapons Specialist" + if(ACCESS_MARINE_SMARTPREP) + return "Marine Smartgunner" + if(ACCESS_MARINE_TL_PREP) + return "Marine Team Leader" + if(ACCESS_MARINE_LEADER) + return "Marine Leader" + if(ACCESS_MARINE_ALPHA) + return "Alpha Squad" + if(ACCESS_MARINE_BRAVO) + return "Bravo Squad" + if(ACCESS_MARINE_CHARLIE) + return "Charlie Squad" + if(ACCESS_MARINE_DELTA) + return "Delta Squad" + if(ACCESS_MARINE_CARGO) + return "Requisitions" + if(ACCESS_MARINE_DROPSHIP) + return "Dropship Piloting" + if(ACCESS_MARINE_PILOT) + return "Pilot Gear" + if(ACCESS_MARINE_MAINT) + return "[MAIN_SHIP_NAME] Maintenance" + if(ACCESS_CIVILIAN_RESEARCH) + return "Civilian Research" + if(ACCESS_CIVILIAN_COMMAND) + return "Civilian Command" + if(ACCESS_CIVILIAN_MEDBAY) + return "Civilian Medbay" + if(ACCESS_CIVILIAN_LOGISTICS) + return "Civilian Logistics" + if(ACCESS_CIVILIAN_ENGINEERING) + return "Civilian Engineering" + if(ACCESS_CIVILIAN_BRIG) + return "Civilian Brig" + if(ACCESS_CIVILIAN_PUBLIC) + return "Civilian" + if(ACCESS_MARINE_SEA) + return "SEA's Office" + if(ACCESS_MARINE_KITCHEN) + return "Kitchen" + if(ACCESS_MARINE_SYNTH) + return "Synthetic Storage" + if(ACCESS_MARINE_AI) + return "AI Core" + if(ACCESS_MARINE_AI_TEMP) + return "AI Access" + if(ACCESS_ARES_DEBUG) + return "AI Debug" /proc/get_weyland_access_desc(A) switch(A) - if(ACCESS_WY_PMC_GREEN) return "Wey-Yu PMC Green" - if(ACCESS_WY_PMC_ORANGE) return "Wey-Yu PMC Orange" - if(ACCESS_WY_PMC_RED) return "Wey-Yu PMC Red" - if(ACCESS_WY_PMC_BLACK) return "Wey-Yu PMC Black" - if(ACCESS_WY_PMC_WHITE) return "Wey-Yu PMC White" - if(ACCESS_WY_CORPORATE) return "Wey-Yu Executive" + if(ACCESS_WY_GENERAL) + return "Wey-Yu General" + if(ACCESS_WY_COLONIAL) + return "Wey-Yu Colony" + if(ACCESS_WY_MEDICAL) + return "Wey-Yu Medical" + if(ACCESS_WY_SECURITY) + return "Wey-Yu Security" + if(ACCESS_WY_ENGINEERING) + return "Wey-Yu Engineering" + if(ACCESS_WY_FLIGHT) + return "Wey-Yu Flight Control" + if(ACCESS_WY_RESEARCH) + return "Wey-Yu Research" + if(ACCESS_WY_EXEC) + return "Wey-Yu Corporate" + if(ACCESS_WY_PMC) + return "Wey-Yu PMC" + if(ACCESS_WY_PMC_TL) + return "Wey-Yu PMC Lead" + if(ACCESS_WY_ARMORY) + return "Wey-Yu Armory" + if(ACCESS_WY_SECRETS) + return "Wey-Yu HighSec" + if(ACCESS_WY_LEADERSHIP) + return "Wey-Yu Leadership" + if(ACCESS_WY_SENIOR_LEAD) + return "Wey-Yu Senior Leadership" diff --git a/code/game/machinery/ARES/ARES_procs.dm b/code/game/machinery/ARES/ARES_procs.dm index c78a0131b7f1..a335a36994e5 100644 --- a/code/game/machinery/ARES/ARES_procs.dm +++ b/code/game/machinery/ARES/ARES_procs.dm @@ -118,7 +118,7 @@ GLOBAL_LIST_INIT(maintenance_categories, list( return ARES_ACCESS_CO if(ACCESS_MARINE_SENIOR in card.access) return ARES_ACCESS_SENIOR - if(ACCESS_WY_CORPORATE in card.access) + if(ACCESS_WY_GENERAL in card.access) return ARES_ACCESS_CORPORATE if(ACCESS_MARINE_COMMAND in card.access) return ARES_ACCESS_COMMAND @@ -613,7 +613,7 @@ GLOBAL_LIST_INIT(maintenance_categories, list( return APOLLO_ACCESS_AUTHED if(ACCESS_MARINE_AI_TEMP in card.access) return APOLLO_ACCESS_TEMP - if((ACCESS_MARINE_SENIOR in card.access ) || (ACCESS_MARINE_ENGINEERING in card.access) || (ACCESS_WY_CORPORATE in card.access)) + if((ACCESS_MARINE_SENIOR in card.access ) || (ACCESS_MARINE_ENGINEERING in card.access) || (ACCESS_WY_GENERAL in card.access)) return APOLLO_ACCESS_REPORTER else return APOLLO_ACCESS_REQUEST diff --git a/code/game/machinery/computer/dropship_weapons.dm b/code/game/machinery/computer/dropship_weapons.dm index 2d943d643cb3..60bf17388db8 100644 --- a/code/game/machinery/computer/dropship_weapons.dm +++ b/code/game/machinery/computer/dropship_weapons.dm @@ -712,7 +712,7 @@ /obj/structure/machinery/computer/dropship_weapons/dropship1 name = "\improper 'Alamo' weapons controls" - req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT) firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship() /obj/structure/machinery/computer/dropship_weapons/dropship1/New() @@ -721,7 +721,7 @@ /obj/structure/machinery/computer/dropship_weapons/dropship2 name = "\improper 'Normandy' weapons controls" - req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_MARINE_LEADER, ACCESS_MARINE_DROPSHIP, ACCESS_WY_FLIGHT) firemission_envelope = new /datum/cas_fire_envelope/uscm_dropship() /obj/structure/machinery/computer/dropship_weapons/dropship2/New() diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 3c92bd33a681..b68ca41d6f09 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -5,7 +5,7 @@ desc = "This can be used to check medical records." icon_state = "medcomp" density = TRUE - req_one_access = list(ACCESS_MARINE_MEDBAY, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_MARINE_MEDBAY, ACCESS_WY_MEDICAL) circuit = /obj/item/circuitboard/computer/med_data var/obj/item/card/id/scan = null var/last_user_name = "" diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 373c74767bb4..f4d09796194c 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -10,32 +10,32 @@ name = "\improper Command Airlock" icon = 'icons/obj/structures/doors/comdoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_com - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/security/colony name = "\improper Security Airlock" icon = 'icons/obj/structures/doors/secdoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_sec - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_SECURITY) /obj/structure/machinery/door/airlock/engineering/colony name = "\improper Engineering Airlock" icon = 'icons/obj/structures/doors/engidoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_eng - req_one_access = list(ACCESS_CIVILIAN_COMMAND, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS) + req_one_access = list(ACCESS_CIVILIAN_COMMAND, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/medical/colony name = "\improper Medical Airlock" icon = 'icons/obj/structures/doors/medidoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_med - req_one_access = list(ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND) + req_one_access = list(ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/maintenance/colony name = "\improper Maintenance Hatch" icon = 'icons/obj/structures/doors/maintdoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_mai - req_one_access = list(ACCESS_CIVILIAN_PUBLIC) + req_one_access = list(ACCESS_CIVILIAN_PUBLIC, ACCESS_CIVILIAN_ENGINEERING, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/external/colony name = "\improper External Airlock" @@ -61,7 +61,7 @@ icon = 'icons/obj/structures/doors/vault.dmi' opacity = TRUE assembly_type = /obj/structure/airlock_assembly/airlock_assembly_highsecurity //Until somebody makes better sprites. - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_LEADERSHIP) /obj/structure/machinery/door/airlock/freezer/colony name = "\improper Freezer Airlock" @@ -83,7 +83,7 @@ opacity = FALSE assembly_type = /obj/structure/airlock_assembly/airlock_assembly_com glass = 1 - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/glass_engineering/colony name = "\improper Engineering Airlock" @@ -130,7 +130,7 @@ name = "\improper Research Airlock" icon = 'icons/obj/structures/doors/medidoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_research - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/glass_research/colony name = "\improper Research Airlock" @@ -139,7 +139,7 @@ assembly_type = /obj/structure/airlock_assembly/airlock_assembly_research glass = 1 heat_proof = 1 - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/glass_mining/colony name = "\improper Mining Airlock" @@ -214,7 +214,7 @@ name = "\improper Research Airlock" icon = 'icons/obj/structures/doors/medidoor.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_science - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_RESEARCH) /obj/structure/machinery/door/airlock/glass_science/colony name = "\improper Research Airlock" @@ -222,13 +222,13 @@ opacity = 0 assembly_type = /obj/structure/airlock_assembly/airlock_assembly_science glass = 1 - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_RESEARCH) /obj/structure/machinery/door/airlock/highsecurity/colony name = "\improper High Tech Security Airlock" icon = 'icons/obj/structures/doors/hightechsecurity.dmi' assembly_type = /obj/structure/airlock_assembly/airlock_assembly_highsecurity - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_SECURITY, ACCESS_WY_LEADERSHIP) //STRATA AIRLOCKS // Add me later y'know? @@ -392,7 +392,7 @@ /obj/structure/machinery/door/airlock/almayer/command/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/almayer/command/autoname autoname = TRUE @@ -403,7 +403,7 @@ /obj/structure/machinery/door/airlock/almayer/command/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/almayer/secure name = "\improper Secure Airlock" @@ -521,11 +521,11 @@ /obj/structure/machinery/door/airlock/almayer/research name = "\improper Research Airlock" icon = 'icons/obj/structures/doors/medidoor.dmi' - req_access = list(ACCESS_MARINE_RESEARCH) + req_one_access = list(ACCESS_MARINE_RESEARCH, ACCESS_WY_RESEARCH, ACCESS_WY_EXEC) /obj/structure/machinery/door/airlock/almayer/research/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL, ACCESS_WY_RESEARCH) /obj/structure/machinery/door/airlock/almayer/research/autoname autoname = TRUE @@ -536,7 +536,7 @@ /obj/structure/machinery/door/airlock/almayer/research/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL, ACCESS_WY_RESEARCH) /obj/structure/machinery/door/airlock/almayer/research/glass name = "\improper Research Airlock" @@ -547,7 +547,7 @@ /obj/structure/machinery/door/airlock/almayer/research/glass/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/almayer/research/glass/autoname autoname = TRUE @@ -558,7 +558,7 @@ /obj/structure/machinery/door/airlock/almayer/research/glass/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/almayer/generic name = "\improper Airlock" @@ -576,7 +576,11 @@ /obj/structure/machinery/door/airlock/almayer/generic/corporate name = "Corporate Liaison's Quarters" icon = 'icons/obj/structures/doors/personaldoor.dmi' - req_access = list(ACCESS_WY_CORPORATE) + req_access = list(ACCESS_WY_GENERAL) + +/obj/structure/machinery/door/airlock/almayer/generic/press + name = "Press Office" + req_access = list(ACCESS_PRESS) /obj/structure/machinery/door/airlock/almayer/marine name = "\improper Airlock" diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index ee30af72558e..2a49b8696a9f 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -39,7 +39,7 @@ /obj/structure/machinery/door/airlock/multi_tile/command/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/medical name = "Medical Airlock" @@ -69,7 +69,7 @@ /obj/structure/machinery/door/airlock/multi_tile/research/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/research/reinforced name = "Reinforced Research Airlock" @@ -77,7 +77,7 @@ /obj/structure/machinery/door/airlock/multi_tile/research/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/secure name = "Secure Airlock" @@ -183,7 +183,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor name = "\improper Command Airlock" @@ -194,7 +194,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/reinforced name = "\improper Reinforced Command Airlock" @@ -202,7 +202,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/solid icon = 'icons/obj/structures/doors/2x1comdoor_solid.dmi' @@ -211,7 +211,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/solid/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/solid/reinforced name = "\improper Reinforced Command Airlock" @@ -219,7 +219,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/comdoor/solid/reinforced/colony req_access = null - req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/multi_tile/almayer/handle_multidoor() if(!(width > 1)) return //Bubblewrap diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 976ec285c8f4..a5e0eafe2f91 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -210,7 +210,7 @@ assignment = "Corporate Mercenary" /obj/item/card/id/pmc/New() - access = get_all_weyland_access() + access = get_access(ACCESS_LIST_WY_ALL) ..() /obj/item/card/id/pmc/ds @@ -236,7 +236,7 @@ assignment = "General" /obj/item/card/id/general/New() - access = get_all_weyland_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /obj/item/card/id/provost name = "provost holo-badge" @@ -246,7 +246,7 @@ assignment = "Provost" /obj/item/card/id/provost/New() - access = get_all_weyland_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /obj/item/card/id/syndicate name = "agent card" @@ -331,7 +331,7 @@ assignment = "Captain" /obj/item/card/id/captains_spare/New() - access = get_all_marine_access() + access = get_access(ACCESS_LIST_MARINE_ALL) ..() /obj/item/card/id/centcom @@ -342,7 +342,7 @@ assignment = "General" /obj/item/card/id/centcom/New() - access = get_all_weyland_access() + access = get_access(ACCESS_LIST_WY_ALL) ..() diff --git a/code/game/objects/items/circuitboards/airlock.dm b/code/game/objects/items/circuitboards/airlock.dm index 873d326847ec..4de97a8e20f3 100644 --- a/code/game/objects/items/circuitboards/airlock.dm +++ b/code/game/objects/items/circuitboards/airlock.dm @@ -44,7 +44,7 @@ t1 += "
" - var/list/accesses = get_all_main_access() + var/list/accesses = get_access(ACCESS_LIST_MARINE_ALL) for (var/acc in accesses) var/aname = get_access_desc(acc) diff --git a/code/game/objects/items/devices/portable_vendor.dm b/code/game/objects/items/devices/portable_vendor.dm index 875087efbff0..65e2128a02c0 100644 --- a/code/game/objects/items/devices/portable_vendor.dm +++ b/code/game/objects/items/devices/portable_vendor.dm @@ -238,7 +238,7 @@ special_prod_time_lock = CL_BRIEFCASE_TIME_LOCK special_prods = list(/obj/item/implanter/neurostim, /obj/item/reagent_container/hypospray/autoinjector/ultrazine/liaison) - req_access = list(ACCESS_WY_CORPORATE) + req_access = list(ACCESS_WY_EXEC) req_role = JOB_CORPORATE_LIAISON listed_products = list( list("INCENTIVES", 0, null, null, null), diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 0d976b4cdf57..5816da7740c3 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -616,40 +616,35 @@ icon_state = "pill_canister11" max_storage_space = 5 skilllock = SKILL_MEDICAL_DEFAULT //CL can open it - var/idlock = 1 + var/idlock = TRUE pill_type_to_fill = /obj/item/reagent_container/pill/ultrazine/unmarked display_maptext = FALSE //for muh corporate secrets - Stan_Albatross - req_access = list(ACCESS_WY_CORPORATE) - var/req_role = JOB_CORPORATE_LIAISON + req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_RESEARCH) black_market_value = 35 /obj/item/storage/pill_bottle/ultrazine/proc/id_check(mob/user) if(!idlock) - return 1 + return TRUE var/mob/living/carbon/human/H = user if(!allowed(user)) to_chat(user, SPAN_NOTICE("It must have some kind of ID lock...")) - return 0 + return FALSE var/obj/item/card/id/I = H.wear_id if(!istype(I)) //not wearing an ID to_chat(H, SPAN_NOTICE("It must have some kind of ID lock...")) - return 0 + return FALSE if(I.registered_name != H.real_name) to_chat(H, SPAN_WARNING("Wrong ID card owner detected.")) - return 0 - - if(req_role && I.rank != req_role) - to_chat(H, SPAN_NOTICE("It must have some kind of ID lock...")) - return 0 + return FALSE - return 1 + return TRUE /obj/item/storage/pill_bottle/ultrazine/attack_self(mob/living/user) if(!id_check(user)) @@ -663,7 +658,7 @@ /obj/item/storage/pill_bottle/ultrazine/skillless name = "\improper Ultrazine pill bottle" - idlock = 0 + idlock = FALSE display_maptext = TRUE maptext_label = "Uz" diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index 30be2f6bc2e2..50a6cc92cb5f 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -51,7 +51,7 @@ /obj/item/storage/lockbox/loyalty name = "\improper Wey-Yu equipment lockbox" - req_access = list(ACCESS_WY_CORPORATE) + req_one_access = list(ACCESS_WY_EXEC, ACCESS_WY_SECURITY) /obj/item/storage/lockbox/loyalty/fill_preset_inventory() new /obj/item/ammo_magazine/pistol/es4(src) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 20e5ac4f9bdc..6cb9f58aae37 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -11,7 +11,7 @@ w_class = SIZE_MEDIUM attack_verb = list("beaten") - req_one_access = list(ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY, ACCESS_MARINE_SENIOR, ACCESS_WY_CORPORATE, ACCESS_WY_PMC_GREEN, ACCESS_CIVILIAN_BRIG) + req_one_access = list(ACCESS_MARINE_BRIG, ACCESS_MARINE_ARMORY, ACCESS_MARINE_SENIOR, ACCESS_WY_GENERAL, ACCESS_WY_SECURITY, ACCESS_CIVILIAN_BRIG) var/stunforce = 50 var/status = 0 //whether the thing is on or not var/obj/item/cell/bcell = null diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index b92624cf4201..24f019b9f89f 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -29,6 +29,8 @@ var/list/req_one_access = null var/req_access_txt = null var/req_one_access_txt = null + ///Whether or not this instance is using accesses different from initial code. Used for easy locating in map files. + var/access_modified = FALSE var/flags_obj = NO_FLAGS /// set when a player uses a pen on a renamable object diff --git a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm index 357606e01ee6..8bb00a349fce 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/guncabinet.dm @@ -130,4 +130,4 @@ /obj/structure/closet/secure_closet/guncabinet/wy name = "weyland yutani gun cabinet" - req_access = ACCESS_WY_CORPORATE + req_access = ACCESS_WY_SECURITY diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 435dfce3f122..e290a23a61e9 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -41,7 +41,7 @@ open() else src.req_access = list() - src.req_access += pick(get_all_main_access()) + src.req_access += pick(get_access(ACCESS_LIST_MARINE_MAIN)) ..() /obj/structure/closet/secure_closet/proc/togglelock(mob/living/user) diff --git a/code/game/objects/structures/crates_lockers/secure_crates.dm b/code/game/objects/structures/crates_lockers/secure_crates.dm index b4ebb6d5e827..0bd77d877ee6 100644 --- a/code/game/objects/structures/crates_lockers/secure_crates.dm +++ b/code/game/objects/structures/crates_lockers/secure_crates.dm @@ -104,7 +104,7 @@ open() else src.req_access = list() - src.req_access += pick(get_all_main_access()) + src.req_access += pick(get_access(ACCESS_LIST_MARINE_MAIN)) ..() diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 6be6b14e0247..0297145c7e8d 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -203,7 +203,7 @@ /client/proc/cmd_admin_grantfullaccess(mob/M in GLOB.mob_list) set category = null - set name = "Grant Full Access" + set name = "Grant Global Access" if(!check_rights(R_DEBUG|R_ADMIN)) return @@ -216,11 +216,11 @@ if (H.wear_id) var/obj/item/card/id/id = H.wear_id id.icon_state = "gold" - id:access = get_global_access() + id:access = get_access(ACCESS_LIST_GLOBAL) else var/obj/item/card/id/id = new/obj/item/card/id(M); id.icon_state = "gold" - id:access = get_all_main_access() + id:access = get_access(ACCESS_LIST_GLOBAL) id.registered_name = H.real_name id.registered_ref = WEAKREF(H) id.assignment = "Captain" @@ -230,7 +230,7 @@ else alert("Invalid mob") - message_admins("[key_name_admin(usr)] has granted [M.key] full access.") + message_admins("[key_name_admin(usr)] has granted [M.key] global access.") /client/proc/cmd_admin_grantallskills(mob/M in GLOB.mob_list) set category = null diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index ad0ebac8307b..a3bea392c201 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -109,7 +109,7 @@ Access:
"} - var/known_access_rights = get_all_main_access() + var/known_access_rights = get_access(ACCESS_LIST_MARINE_ALL) for(var/A in target_id_card.access) if(A in known_access_rights) contents += " [get_access_desc(A)]" @@ -197,7 +197,7 @@ else var/list/new_access = list() if(is_centcom) - new_access = get_all_weyland_access() + new_access = get_access(ACCESS_LIST_WY_ALL) else var/datum/job/job = RoleAuthority.roles_for_mode[target] @@ -205,7 +205,7 @@ visible_message("[SPAN_BOLD("[src]")] states, \"DATA ERROR: Can not find next entry in database: [target]\"") return new_access = job.get_access() - target_id_card.access -= get_all_weyland_access() + get_all_main_access() + target_id_card.access -= get_access(ACCESS_LIST_WY_ALL) + get_access(ACCESS_LIST_MARINE_MAIN) target_id_card.access |= new_access target_id_card.assignment = target target_id_card.rank = target @@ -227,7 +227,7 @@ log_idmod(target_id_card, " [key_name_admin(usr)] granted [access_type] IFF. ") return TRUE access_type = text2num(params["access_target"]) - if(access_type in (is_centcom ? get_all_weyland_access() : get_main_marine_access())) + if(access_type in (is_centcom ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN))) if(access_type in target_id_card.access) target_id_card.access -= access_type log_idmod(target_id_card, " [key_name_admin(usr)] revoked access '[access_type]'. ") @@ -239,7 +239,7 @@ if(!authenticated || !target_id_card) return - target_id_card.access |= (is_centcom ? get_all_weyland_access() : get_main_marine_access()) + target_id_card.access |= (is_centcom ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN)) target_id_card.faction_group |= factions log_idmod(target_id_card, " [key_name_admin(usr)] granted the ID all access and USCM IFF. ") return TRUE diff --git a/code/modules/gear_presets/clf.dm b/code/modules/gear_presets/clf.dm index 311605a407c7..901de2c21ca3 100644 --- a/code/modules/gear_presets/clf.dm +++ b/code/modules/gear_presets/clf.dm @@ -9,7 +9,7 @@ /datum/equipment_preset/clf/New() . = ..() - access = get_antagonist_access() + access = get_access(ACCESS_LIST_CLF_BASE) /datum/equipment_preset/clf/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = pick(60;MALE, 40;FEMALE) @@ -439,6 +439,10 @@ role_comm_title = "SPC" skills = /datum/skills/clf/specialist +/datum/equipment_preset/clf/specialist/New() + . = ..() + access = get_access(ACCESS_LIST_CLF_BASE) + list(ACCESS_CLF_ARMORY) + /datum/equipment_preset/clf/specialist/load_gear(mob/living/carbon/human/new_human) //jumpsuit and their webbing @@ -550,131 +554,6 @@ //*****************************************************************************************************/ -/datum/equipment_preset/clf/commander - name = "CLF Cell Commander" - flags = EQUIPMENT_PRESET_EXTRA - assignment = JOB_CLF_COMMANDER - rank = JOB_CLF_COMMANDER - role_comm_title = "CMDR" - skills = /datum/skills/clf/commander - -/datum/equipment_preset/clf/commander/load_gear(mob/living/carbon/human/new_human) - new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/mercenary/miner(new_human), WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF/command(new_human), WEAR_L_EAR) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/clf(new_human), WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/militia/smartgun(new_human), WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/mateba/highimpact(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/mateba/highimpact(new_human), WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smartgun/clf(new_human), WEAR_J_STORE) - 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/belt/gun/smartgunner/clf/full(new_human), WEAR_WAIST) - 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/storage/pouch/survival/full(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) - -/datum/equipment_preset/clf/commander/get_antag_clothing_equipment() - return list( - list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), - list("Combat Boots", 0, /obj/item/clothing/shoes/combat, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), - list("CLF Uniform", 0, /obj/item/clothing/under/colonist/clf, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("CLF Smartgun Armor", 0, /obj/item/clothing/suit/storage/militia/smartgun, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("Black Gloves", 0, /obj/item/clothing/gloves/black, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), - list("CLF Smartgunner Belt", 0, /obj/item/storage/belt/gun/smartgunner/clf, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), - list("Headset", 0, /obj/item/device/radio/headset/distress/CLF/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Flashlight", 0, /obj/item/device/flashlight, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), - - list("HELMET (CHOOSE 1)", 0, null, null, null), - list("Y8 Miner Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/mercenary/miner, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - - list("POUCHES (CHOOSE 2)", 0, null, null, null), - 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_RECOMMENDED), - 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_RECOMMENDED), - list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, 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("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("ATTACHMENTS (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("Gyroscopic Stabilizer", 0, /obj/item/attachable/gyro, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Laser Sight", 0, /obj/item/attachable/lasersight, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Masterkey Shotgun", 0, /obj/item/attachable/attached_gun/shotgun, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), - list("Recoil Compensator", 0, /obj/item/attachable/compensator, 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/clf/commander/get_antag_gear_equipment() - return list( - list("CELL LEADER SET (MANDATORY)", 0, null, null, null), - list("Essential Leader Set", 0, /obj/effect/essentials_set/leader/upp, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - - list("GENERAL SUPPLIES", 0, null, null, null), - list("Megaphone", 5, /obj/item/device/megaphone, null, VENDOR_ITEM_REGULAR), - 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("Adv Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR), - list("Adv 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("Sensor Medical HUD", 4, /obj/item/clothing/glasses/hud/sensor, null, VENDOR_ITEM_MANDATORY), - - list("SPECIAL AMMUNITION", 0, null, null, null), - list("M16 AP Magazine (5.56x45mm)", 10, /obj/item/ammo_magazine/rifle/m16/ap, null, VENDOR_ITEM_REGULAR), - list("MAR Extended Magazine (7.62x39mm)", 10, /obj/item/ammo_magazine/rifle/mar40/extended, null, VENDOR_ITEM_REGULAR), - list("Shotgun Incendiary Shells (Handful)", 15, /obj/item/ammo_magazine/handful/shotgun/incendiary, null, VENDOR_ITEM_REGULAR), - - list("EXPLOSIVES", 0, null, null, null), - list("EMP Grenade", 10, /obj/item/explosive/grenade/empgrenade, null, VENDOR_ITEM_REGULAR), - list("Improvised Explosive Device", 15, /obj/item/explosive/grenade/custom/ied, null, VENDOR_ITEM_REGULAR), - list("Improvised Firebomb", 10, /obj/item/explosive/grenade/incendiary/molotov, null, VENDOR_ITEM_REGULAR), - list("Incendiary IED", 15, /obj/item/explosive/grenade/custom/ied_incendiary, null, VENDOR_ITEM_REGULAR), - list("Improvised Phosphorus Bomb", 20, /obj/item/explosive/grenade/phosphorus/clf, null, VENDOR_ITEM_REGULAR), - list("Smoke Grenade", 5, /obj/item/explosive/grenade/smokebomb, 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("Large General Pouch", 10, /obj/item/storage/pouch/general/large, null, VENDOR_ITEM_REGULAR), - list("Random Useful (Or Not) Item", 5, /obj/effect/essentials_set/random/clf_bonus_item, 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) - ) - -//*****************************************************************************************************/ - /datum/equipment_preset/clf/leader name = "CLF Leader" flags = EQUIPMENT_PRESET_EXTRA @@ -683,6 +562,10 @@ role_comm_title = "LDR" skills = /datum/skills/clf/leader +/datum/equipment_preset/clf/leader/New() + . = ..() + access = get_access(ACCESS_LIST_CLF_BASE) + list(ACCESS_CLF_ARMORY, ACCESS_CLF_LEADERSHIP, ACCESS_CLF_FLIGHT) + /datum/equipment_preset/clf/leader/load_gear(mob/living/carbon/human/new_human) //No random armor, so that it's more clear that he's the leader @@ -828,6 +711,9 @@ rank = JOB_CLF_SYNTH role_comm_title = "Syn" +/datum/equipment_preset/clf/synth/New() + . = ..() + access = get_access(ACCESS_LIST_CLF_ALL) /datum/equipment_preset/clf/synth/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = pick(50;MALE,50;FEMALE) @@ -1014,20 +900,24 @@ role_comm_title = "CMDR" skills = /datum/skills/clf/commander -/datum/equipment_preset/clf/commander/load_gear(mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/mercenary/miner(H), WEAR_HEAD) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF/command(H), WEAR_L_EAR) - H.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/clf(H), WEAR_BODY) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/militia/smartgun(H), WEAR_JACKET) - H.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/mateba/highimpact(H), WEAR_IN_JACKET) - H.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/mateba/highimpact(H), WEAR_IN_JACKET) - H.equip_to_slot_or_del(new /obj/item/weapon/gun/smartgun/clf(H), WEAR_J_STORE) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), WEAR_HANDS) - H.equip_to_slot_or_del(new /obj/item/storage/belt/gun/smartgunner/clf/full(H), WEAR_WAIST) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp(H), WEAR_FEET) - - H.equip_to_slot_or_del(new /obj/item/storage/pouch/survival/full(H), WEAR_L_STORE) - H.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(H), WEAR_R_STORE) +/datum/equipment_preset/clf/commander/New() + . = ..() + access = get_access(ACCESS_LIST_CLF_ALL) + +/datum/equipment_preset/clf/commander/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/mercenary/miner(new_human), WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF/command(new_human), WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/clf(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/militia/smartgun(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/mateba/highimpact(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/mateba/highimpact(new_human), WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smartgun/clf(new_human), WEAR_J_STORE) + 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/belt/gun/smartgunner/clf/full(new_human), WEAR_WAIST) + 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/storage/pouch/survival/full(new_human), WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full(new_human), WEAR_R_STORE) /datum/equipment_preset/clf/commander/get_antag_clothing_equipment() return list( @@ -1092,8 +982,8 @@ 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("Adv Burn Kit", 2, /obj/item/stack/medical/advanced/ointment, null, VENDOR_ITEM_REGULAR), + list("Adv 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), diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm index 55602ec956f3..c42b1bf868f0 100644 --- a/code/modules/gear_presets/cmb.dm +++ b/code/modules/gear_presets/cmb.dm @@ -10,7 +10,7 @@ /datum/equipment_preset/cmb/New() . = ..() - access = get_friendly_ert_access() + access = get_access(ACCESS_LIST_UA) /datum/equipment_preset/cmb/load_name(mob/living/carbon/human/new_human) new_human.gender = pick(80;MALE,20;FEMALE) @@ -404,7 +404,7 @@ /datum/equipment_preset/uscm/cmb/New() . = ..() - access = get_friendly_ert_access() + access = get_access(ACCESS_LIST_UA) assignment = "Anchorpoint Station Marine Rifleman" rank = JOB_SQUAD_MARINE diff --git a/code/modules/gear_presets/contractor.dm b/code/modules/gear_presets/contractor.dm index 62495ac59213..9a4497e071ed 100644 --- a/code/modules/gear_presets/contractor.dm +++ b/code/modules/gear_presets/contractor.dm @@ -1,49 +1,3 @@ -/datum/equipment_preset/contractor - name = "Military Contractor" - - assignment = "VAI Mercenary" - rank = JOB_CONTRACTOR - idtype = /obj/item/card/id/data - faction = FACTION_CONTRACTOR - -/datum/equipment_preset/contractor/New() - . = ..() - access = get_all_main_access() - -/datum/equipment_preset/contractor/load_name(mob/living/carbon/human/new_human, randomise) - new_human.gender = pick(80;MALE,20;FEMALE) - var/datum/preferences/A = new() - A.randomize_appearance(new_human) - var/random_name - var/static/list/colors = list("BLACK" = list(15, 15, 25), "BROWN" = list(102, 51, 0), "AUBURN" = list(139, 62, 19)) - var/static/list/hair_colors = colors.Copy() + list("BLONDE" = list(197, 164, 30), "CARROT" = list(174, 69, 42)) - var/hair_color = pick(hair_colors) - new_human.r_hair = hair_colors[hair_color][1] - new_human.g_hair = hair_colors[hair_color][2] - new_human.b_hair = hair_colors[hair_color][3] - new_human.r_facial = hair_colors[hair_color][1] - new_human.g_facial = hair_colors[hair_color][2] - new_human.b_facial = hair_colors[hair_color][3] - var/eye_color = pick(colors) - new_human.r_eyes = colors[eye_color][1] - new_human.g_eyes = colors[eye_color][2] - new_human.b_eyes = colors[eye_color][3] - idtype = /obj/item/card/id/data - if(new_human.gender == MALE) - random_name = "[pick(first_names_male)] [pick(last_names)]" - new_human.h_style = pick("Crewcut", "Shaved Head", "Buzzcut", "Undercut", "Side Undercut", "Pvt. Joker", "Marine Fade", "Low Fade", "Medium Fade", "High Fade", "No Fade", "Coffee House Cut", "Flat Top",) - new_human.f_style = pick("5 O'clock Shadow", "Shaved", "Full Beard", "3 O'clock Moustache", "5 O'clock Shadow", "5 O'clock Moustache", "7 O'clock Shadow", "7 O'clock Moustache",) - else - random_name = "[pick(first_names_female)] [pick(last_names)]" - new_human.h_style = pick("Ponytail 1", "Ponytail 2", "Ponytail 3", "Ponytail 4", "Pvt. Redding", "Pvt. Clarison", "Cpl. Dietrich", "Pvt. Vasquez", "Marine Bun", "Marine Bun 2", "Marine Flat Top",) - new_human.change_real_name(new_human, random_name) - new_human.age = rand(20,45) - new_human.r_hair = rand(15,35) - new_human.g_hair = rand(15,35) - new_human.b_hair = rand(25,45) - -//*****************************************************************************************************/ - /datum/equipment_preset/contractor name = "Military Contractor" faction = FACTION_CONTRACTOR @@ -57,10 +11,10 @@ /datum/equipment_preset/contractor/New() . = ..() - access = get_all_main_access() + access = get_access(ACCESS_LIST_EMERGENCY_RESPONSE) -/datum/equipment_preset/dust_raider/load_name(mob/living/carbon/human/new_human) +/datum/equipment_preset/contractor/load_name(mob/living/carbon/human/new_human) new_human.gender = pick(60;MALE,40;FEMALE) var/datum/preferences/A = new() A.randomize_appearance(new_human) @@ -595,11 +549,6 @@ skills = /datum/skills/contractor/heavy faction = FACTION_CONTRACTOR - -/datum/equipment_preset/contractor/covert/heavy/New() - . = ..() - access = get_weyland_pmc_access() - /datum/equipment_preset/contractor/covert/heavy/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new headset_type, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/ua_civvies, WEAR_BODY) @@ -648,11 +597,6 @@ skills = /datum/skills/contractor/engi faction = FACTION_CONTRACTOR - -/datum/equipment_preset/contractor/covert/engi/New() - . = ..() - access = get_weyland_pmc_access() - /datum/equipment_preset/contractor/covert/engi/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/wy_davisone, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/black_vest/tool_webbing, WEAR_ACCESSORY) @@ -700,11 +644,6 @@ skills = /datum/skills/contractor/medic faction = FACTION_CONTRACTOR - -/datum/equipment_preset/contractor/covert/medic/New() - . = ..() - access = get_weyland_pmc_access() - /datum/equipment_preset/contractor/covert/medic/load_gear(mob/living/carbon/human/new_human) //clothing new_human.equip_to_slot_or_del(new /obj/item/clothing/under/colonist/wy_davisone, WEAR_BODY) diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm index 18903ef491ee..62782b77eae5 100644 --- a/code/modules/gear_presets/corpses.dm +++ b/code/modules/gear_presets/corpses.dm @@ -221,7 +221,7 @@ /datum/equipment_preset/corpse/clown/New() . = ..() //As a joke, clown has all access so they can clown everywhere... - access = get_all_main_access() + 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. @@ -467,12 +467,12 @@ ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_COMMAND, - ACCESS_WY_PMC_GREEN, - ACCESS_WY_PMC_ORANGE, - ACCESS_WY_PMC_RED, - ACCESS_WY_PMC_BLACK, - ACCESS_WY_PMC_WHITE, - ACCESS_WY_CORPORATE, + ACCESS_WY_MEDICAL, + ACCESS_WY_ENGINEERING, + ACCESS_WY_SECURITY, + ACCESS_WY_LEADERSHIP, + ACCESS_WY_COLONIAL, + ACCESS_WY_GENERAL, ) /datum/equipment_preset/corpse/bridgeofficer/johnson/load_gear(mob/living/carbon/human/new_human) @@ -527,12 +527,9 @@ ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_COMMAND, - ACCESS_WY_PMC_GREEN, - ACCESS_WY_PMC_ORANGE, - ACCESS_WY_PMC_RED, - ACCESS_WY_PMC_BLACK, - ACCESS_WY_PMC_WHITE, - ACCESS_WY_CORPORATE, + ACCESS_WY_SECURITY, + ACCESS_WY_COLONIAL, + ACCESS_WY_GENERAL, ) /datum/equipment_preset/corpse/wysec/load_gear(mob/living/carbon/human/new_human) @@ -629,8 +626,6 @@ ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_COMMAND, - ACCESS_MARINE_MAINT, - ACCESS_WY_CORPORATE, ) /datum/equipment_preset/corpse/ua_riot/load_gear(mob/living/carbon/human/new_human) @@ -678,11 +673,15 @@ faction_group = FACTION_LIST_WY languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) access = list( - ACCESS_WY_CORPORATE, + 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, - ACCESS_MARINE_DROPSHIP, - ACCESS_MARINE_RESEARCH, - ACCESS_MARINE_MEDBAY, ) /datum/equipment_preset/corpse/wy/manager/load_gear(mob/living/carbon/human/new_human) @@ -716,17 +715,10 @@ idtype = /obj/item/card/id/silver xenovictim = FALSE faction = FACTION_CLF - access = list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ACCESS_MARINE_MAINT, - ACCESS_WY_CORPORATE, - ) + +/datum/equipment_preset/corpse/clf/New() + . = ..() + access = get_access(ACCESS_LIST_EMERGENCY_RESPONSE) + get_access(ACCESS_LIST_COLONIAL_ALL) /datum/equipment_preset/corpse/clf/load_gear(mob/living/carbon/human/new_human) @@ -758,17 +750,10 @@ idtype = /obj/item/card/id/silver xenovictim = FALSE faction = FACTION_UPP - access = list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ACCESS_MARINE_MAINT, - ACCESS_WY_CORPORATE, - ) + +/datum/equipment_preset/corpse/upp/New() + . = ..() + access = get_access(ACCESS_LIST_EMERGENCY_RESPONSE) + get_access(ACCESS_LIST_COLONIAL_ALL) /datum/equipment_preset/corpse/upp/load_gear(mob/living/carbon/human/new_human) @@ -807,9 +792,16 @@ languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) access = list( ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_WY_CORPORATE, ACCESS_CIVILIAN_LOGISTICS, + ACCESS_CIVILIAN_ENGINEERING, + ACCESS_CIVILIAN_RESEARCH, + ACCESS_CIVILIAN_BRIG, + ACCESS_CIVILIAN_MEDBAY, + ACCESS_CIVILIAN_COMMAND, + ACCESS_WY_GENERAL, + ACCESS_WY_COLONIAL, + ACCESS_WY_SECURITY, + ACCESS_WY_PMC, ) /datum/equipment_preset/corpse/pmc/load_gear(mob/living/carbon/human/new_human) @@ -881,17 +873,10 @@ assignment = "Freelancer Mercenary" idtype = /obj/item/card/id/silver xenovictim = FALSE - access = list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ACCESS_MARINE_MAINT, - ACCESS_WY_CORPORATE, - ) + +/datum/equipment_preset/corpse/freelancer/New() + . = ..() + access = get_access(ACCESS_LIST_EMERGENCY_RESPONSE) + get_access(ACCESS_LIST_COLONIAL_ALL) /datum/equipment_preset/corpse/freelancer/load_gear(mob/living/carbon/human/new_human) @@ -921,17 +906,10 @@ idtype = /obj/item/card/id/silver faction = FACTION_DUTCH xenovictim = FALSE - access = list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ACCESS_MARINE_MAINT, - ACCESS_WY_CORPORATE, - ) + +/datum/equipment_preset/corpse/dutchrifle/New() + . = ..() + access = get_access(ACCESS_LIST_EMERGENCY_RESPONSE) + get_access(ACCESS_LIST_COLONIAL_ALL) /datum/equipment_preset/corpse/dutchrifle/load_gear(mob/living/carbon/human/new_human) @@ -959,17 +937,10 @@ idtype = /obj/item/card/id/silver faction = FACTION_PIZZA xenovictim = FALSE - access = list( - ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_LOGISTICS, - ACCESS_CIVILIAN_ENGINEERING, - ACCESS_CIVILIAN_RESEARCH, - ACCESS_CIVILIAN_BRIG, - ACCESS_CIVILIAN_MEDBAY, - ACCESS_CIVILIAN_COMMAND, - ACCESS_MARINE_MAINT, - ACCESS_WY_CORPORATE, - ) + +/datum/equipment_preset/corpse/pizza/New() + . = ..() + access = get_access(ACCESS_LIST_DELIVERY) /datum/equipment_preset/corpse/pizza/load_gear(mob/living/carbon/human/new_human) @@ -1014,7 +985,6 @@ ACCESS_CIVILIAN_MEDBAY, ACCESS_CIVILIAN_COMMAND, ACCESS_MARINE_MAINT, - ACCESS_WY_CORPORATE, ) /datum/equipment_preset/corpse/gladiator/load_gear(mob/living/carbon/human/new_human) diff --git a/code/modules/gear_presets/fun.dm b/code/modules/gear_presets/fun.dm index 20a7f18077dd..8eacbb8161d2 100644 --- a/code/modules/gear_presets/fun.dm +++ b/code/modules/gear_presets/fun.dm @@ -246,7 +246,7 @@ /datum/equipment_preset/fun/santa/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/fun/santa/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = MALE @@ -342,7 +342,7 @@ /datum/equipment_preset/fun/van_bandolier/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/fun/van_bandolier/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = MALE diff --git a/code/modules/gear_presets/other.dm b/code/modules/gear_presets/other.dm index c2beca202e84..9780b739cf67 100644 --- a/code/modules/gear_presets/other.dm +++ b/code/modules/gear_presets/other.dm @@ -38,7 +38,7 @@ /datum/equipment_preset/other/freelancer/New() . = ..() - access = get_all_main_access() + access = get_access(ACCESS_LIST_EMERGENCY_RESPONSE) //ACCESS_COME_BACK_TO_ME /datum/equipment_preset/other/freelancer/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = pick(60;MALE,40;FEMALE) @@ -247,7 +247,7 @@ /datum/equipment_preset/other/elite_merc/New() . = ..() - access = get_all_main_access() + access = get_access(ACCESS_LIST_EMERGENCY_RESPONSE) /datum/equipment_preset/other/elite_merc/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = pick(70;MALE,30;FEMALE) @@ -278,10 +278,6 @@ skills = /datum/skills/mercenary/elite faction = FACTION_MERCENARY -/datum/equipment_preset/other/elite_merc/standard/New() - . = ..() - access = get_weyland_pmc_access() - /datum/equipment_preset/other/elite_merc/standard/load_gear(mob/living/carbon/human/new_human) //TODO: add unique backpacks and satchels //clothes @@ -319,10 +315,6 @@ skills = /datum/skills/mercenary/elite/heavy faction = FACTION_MERCENARY -/datum/equipment_preset/other/elite_merc/heavy/New() - . = ..() - access = get_weyland_pmc_access() - /datum/equipment_preset/other/elite_merc/heavy/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels //clothes @@ -363,9 +355,6 @@ skills = /datum/skills/mercenary/elite/engineer faction = FACTION_MERCENARY -/datum/equipment_preset/other/elite_merc/engineer/New() - . = ..() - access = get_weyland_pmc_access() /datum/equipment_preset/other/elite_merc/engineer/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels @@ -420,10 +409,6 @@ skills = /datum/skills/mercenary/elite/medic faction = FACTION_MERCENARY -/datum/equipment_preset/other/elite_merc/medic/New() - . = ..() - access = get_weyland_pmc_access() - /datum/equipment_preset/other/elite_merc/medic/load_gear(mob/living/carbon/human/new_human) //webbing var/obj/item/clothing/under/marine/veteran/mercenary/support/SUPPORT = new() @@ -470,10 +455,6 @@ skills = /datum/skills/mercenary/elite/leader faction = FACTION_MERCENARY -/datum/equipment_preset/other/elite_merc/leader/New() - . = ..() - access = get_weyland_pmc_access() - /datum/equipment_preset/other/elite_merc/leader/load_gear(mob/living/carbon/human/new_human) //clothes new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/dutch, WEAR_L_EAR) @@ -512,7 +493,7 @@ /datum/equipment_preset/other/business_person/New() . = ..() - access = get_all_main_access() + access = get_access(ACCESS_LIST_CIVIL_LIAISON) /datum/equipment_preset/other/business_person/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels @@ -562,7 +543,7 @@ /datum/equipment_preset/other/pizza/New() . = ..() - access = get_civil_ert_access() + access = get_access(ACCESS_LIST_DELIVERY) /datum/equipment_preset/other/pizza/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = pick(MALE,FEMALE) @@ -607,7 +588,7 @@ /datum/equipment_preset/other/souto/New() . = ..() - access = get_civil_ert_access() + access = get_access(ACCESS_LIST_DELIVERY) /datum/equipment_preset/other/souto/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = MALE @@ -789,7 +770,7 @@ /datum/equipment_preset/other/xeno_cultist/New() . = ..() - access = get_all_civilian_access() + access = get_access(ACCESS_LIST_COLONIAL_ALL) /datum/equipment_preset/other/xeno_cultist/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain/cultist(new_human), WEAR_BODY) @@ -912,7 +893,7 @@ /datum/equipment_preset/other/tank/New() . = ..() - access = get_antagonist_access() + access = get_access(ACCESS_LIST_EMERGENCY_RESPONSE) /datum/equipment_preset/other/tank/load_gear(mob/living/carbon/human/new_human) diff --git a/code/modules/gear_presets/pmc.dm b/code/modules/gear_presets/pmc.dm index 5fa5dd1374e8..fcfb61a7d810 100644 --- a/code/modules/gear_presets/pmc.dm +++ b/code/modules/gear_presets/pmc.dm @@ -12,7 +12,7 @@ /datum/equipment_preset/pmc/New() . = ..() - access = get_weyland_pmc_access() + access = get_access(ACCESS_LIST_WY_PMC) /datum/equipment_preset/pmc/load_name(mob/living/carbon/human/new_human, randomise) @@ -691,6 +691,10 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), skills = /datum/skills/pmc/SL headset_type = /obj/item/device/radio/headset/distress/pmc/command +/datum/equipment_preset/pmc/pmc_leader/New() + . = ..() + access = get_access(ACCESS_LIST_WY_PMC) + list(ACCESS_WY_LEADERSHIP, ACCESS_WY_PMC_TL) + /datum/equipment_preset/pmc/pmc_leader/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels new_human.equip_to_slot_or_del(new headset_type, WEAR_L_EAR) @@ -843,6 +847,10 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null), skills = /datum/skills/pmc/SL/chem headset_type = /obj/item/device/radio/headset/distress/pmc/command +/datum/equipment_preset/pmc/pmc_lead_investigator/New() + . = ..() + access = get_access(ACCESS_LIST_WY_PMC) + list(ACCESS_WY_LEADERSHIP, ACCESS_WY_PMC_TL) + /datum/equipment_preset/pmc/pmc_lead_investigator/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels new_human.equip_to_slot_or_del(new headset_type, WEAR_L_EAR) diff --git a/code/modules/gear_presets/survivors.dm b/code/modules/gear_presets/survivors.dm index 9ab5e7c8d22c..243cb9440824 100644 --- a/code/modules/gear_presets/survivors.dm +++ b/code/modules/gear_presets/survivors.dm @@ -326,7 +326,13 @@ flags = EQUIPMENT_PRESET_START_OF_ROUND paygrade = "WYC2" idtype = /obj/item/card/id/silver/clearance_badge/cl - access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_WY_CORPORATE,ACCESS_CIVILIAN_COMMAND) + 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 @@ -1151,10 +1157,13 @@ paygrade = "WYC2" role_comm_title = "ICC Rep." flags = EQUIPMENT_PRESET_START_OF_ROUND - access = list(ACCESS_CIVILIAN_PUBLIC,ACCESS_WY_CORPORATE,ACCESS_CIVILIAN_COMMAND) 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) @@ -1390,13 +1399,15 @@ idtype = /obj/item/card/id/silver/clearance_badge/manager faction_group = list(FACTION_WY, FACTION_SURVIVOR) access = list( - ACCESS_WY_CORPORATE, + 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, - ACCESS_MARINE_COMMAND, - ACCESS_MARINE_DROPSHIP, - ACCESS_MARINE_RESEARCH, - ACCESS_CIVILIAN_COMMAND, - ACCESS_CIVILIAN_PUBLIC, ) languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) diff --git a/code/modules/gear_presets/synths.dm b/code/modules/gear_presets/synths.dm index eaab23630ed2..32bcd61d6708 100644 --- a/code/modules/gear_presets/synths.dm +++ b/code/modules/gear_presets/synths.dm @@ -9,7 +9,7 @@ /datum/equipment_preset/synth/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/synth/load_race(mob/living/carbon/human/new_human) if(new_human.client?.prefs?.synthetic_type) @@ -141,7 +141,7 @@ /datum/equipment_preset/synth/survivor/New() . = ..() - access = get_all_civilian_access() + get_region_accesses(2) + get_region_accesses(4) + ACCESS_MARINE_RESEARCH + ACCESS_WY_CORPORATE //Access to civillians stuff + medbay stuff + engineering stuff + research + access = get_access(ACCESS_LIST_COLONIAL_ALL) + get_region_accesses(2) + get_region_accesses(4) + ACCESS_MARINE_RESEARCH //Access to civillians stuff + medbay stuff + engineering stuff + research /datum/equipment_preset/synth/survivor/load_gear(mob/living/carbon/human/new_human) for(var/equipment in equipment_to_spawn) @@ -560,7 +560,7 @@ /datum/equipment_preset/synth/working_joe/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/synth/working_joe/load_race(mob/living/carbon/human/new_human) new_human.set_species(SYNTH_WORKING_JOE) @@ -721,7 +721,7 @@ /datum/equipment_preset/synth/infiltrator/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/synth/infiltrator/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = pick(MALE,FEMALE) diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index a43404c59450..63d1fd48e665 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -7,7 +7,7 @@ /datum/equipment_preset/upp/New() . = ..() - access = get_antagonist_access() + access = get_access(ACCESS_LIST_UPP_ALL) //ACCESS_COME_BACK_TO_ME /datum/equipment_preset/upp/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = pick(60;MALE,40;FEMALE) @@ -2105,7 +2105,7 @@ /datum/equipment_preset/upp/commando/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/upp/commando/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index 6165a7eaaa56..1c84e7cad4ba 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -785,7 +785,7 @@ /datum/equipment_preset/uscm/marsoc/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/uscm/marsoc/load_gear(mob/living/carbon/human/new_human) //back diff --git a/code/modules/gear_presets/uscm_dress.dm b/code/modules/gear_presets/uscm_dress.dm index 600b8dcce1b2..393cc5b41a66 100644 --- a/code/modules/gear_presets/uscm_dress.dm +++ b/code/modules/gear_presets/uscm_dress.dm @@ -111,7 +111,7 @@ /datum/equipment_preset/uscm_event/dress/officer/capt/New() . = ..() - access = get_main_marine_access() + access = get_access(ACCESS_LIST_MARINE_MAIN) /datum/equipment_preset/uscm_event/dress/officer/co name = "Dress Blues - (O-4) Major" @@ -121,7 +121,7 @@ /datum/equipment_preset/uscm_event/dress/officer/co/New() . = ..() - access = get_all_marine_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /datum/equipment_preset/uscm_event/dress/officer/co/ltcol name = "Dress Blues - (O-5) Lieutenant Colonel" @@ -145,7 +145,7 @@ /datum/equipment_preset/uscm_event/dress/officer/general/New() . = ..() - access = get_all_marine_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /datum/equipment_preset/uscm_event/dress/officer/general/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/dress/blues/general(new_human), WEAR_BODY) diff --git a/code/modules/gear_presets/uscm_event.dm b/code/modules/gear_presets/uscm_event.dm index 1af69f567077..77f7665ce5b7 100644 --- a/code/modules/gear_presets/uscm_event.dm +++ b/code/modules/gear_presets/uscm_event.dm @@ -39,7 +39,7 @@ /datum/equipment_preset/uscm_event/colonel/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/uscm_event/colonel/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/highcom(new_human), WEAR_L_EAR) @@ -74,7 +74,7 @@ /datum/equipment_preset/uscm_event/general/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/uscm_event/general/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels @@ -185,28 +185,11 @@ name = "USCM Provost" idtype = /obj/item/card/id/provost - access = list( - ACCESS_MARINE_BRIG, - ACCESS_MARINE_COMMAND, - ACCESS_MARINE_DROPSHIP, - ACCESS_MARINE_DATABASE, - ACCESS_MARINE_PREP, - ACCESS_MARINE_MEDBAY, - ACCESS_MARINE_MORGUE, - ACCESS_MARINE_ALPHA, - ACCESS_MARINE_BRAVO, - ACCESS_MARINE_CHARLIE, - ACCESS_MARINE_DELTA, - ACCESS_MARINE_ENGINEERING, - ACCESS_MARINE_MAINT, - ACCESS_MARINE_OT, - ACCESS_WY_CORPORATE, - ) skills = /datum/skills/provost /datum/equipment_preset/uscm_event/provost/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /datum/equipment_preset/uscm_event/provost/enforcer name = "Provost Enforcer (ME5)" @@ -464,28 +447,11 @@ name = "UAAC-TIS" idtype = /obj/item/card/id/provost - access = list( - ACCESS_MARINE_BRIG, - ACCESS_MARINE_COMMAND, - ACCESS_MARINE_DROPSHIP, - ACCESS_MARINE_DATABASE, - ACCESS_MARINE_PREP, - ACCESS_MARINE_MEDBAY, - ACCESS_MARINE_MORGUE, - ACCESS_MARINE_ALPHA, - ACCESS_MARINE_BRAVO, - ACCESS_MARINE_CHARLIE, - ACCESS_MARINE_DELTA, - ACCESS_MARINE_ENGINEERING, - ACCESS_MARINE_MAINT, - ACCESS_MARINE_OT, - ACCESS_WY_CORPORATE, - ) skills = /datum/skills/provost /datum/equipment_preset/uscm_event/uaac/tis/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /datum/equipment_preset/uscm_event/uaac/tis/io name = "UAAC-TIS Intelligence Officer (NO2)" diff --git a/code/modules/gear_presets/uscm_police.dm b/code/modules/gear_presets/uscm_police.dm index 29bc32cffa7a..0ead4f713c23 100644 --- a/code/modules/gear_presets/uscm_police.dm +++ b/code/modules/gear_presets/uscm_police.dm @@ -205,7 +205,7 @@ /datum/equipment_preset/uscm_ship/uscm_police/riot_mp/New() . = ..() - access = get_main_marine_access() + access = get_access(ACCESS_LIST_MARINE_MAIN) /datum/equipment_preset/uscm_ship/uscm_police/riot_mp/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index 457ef71e9a46..578114222c01 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -30,7 +30,7 @@ idtype = /obj/item/card/id/silver/cl access = list( - ACCESS_WY_CORPORATE, + ACCESS_WY_GENERAL, ACCESS_ILLEGAL_PIRATE, ACCESS_MARINE_COMMAND, ACCESS_MARINE_RESEARCH, @@ -41,7 +41,7 @@ ACCESS_CIVILIAN_LOGISTICS, ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_MEDBAY, - ACCESS_WY_CORPORATE_DS, + ACCESS_WY_FLIGHT, ACCESS_CIVILIAN_COMMAND, ) assignment = JOB_CORPORATE_LIAISON @@ -70,6 +70,10 @@ dress_gloves = list(/obj/item/clothing/gloves/marine/dress) dress_shoes = list(/obj/item/clothing/shoes/laceup) +/datum/equipment_preset/uscm_ship/liaison/New() + . = ..() + access = get_access(ACCESS_LIST_MARINE_LIAISON) + /datum/equipment_preset/uscm_ship/liaison/load_gear(mob/living/carbon/human/new_human) var/back_item = /obj/item/storage/backpack/satchel/lockable/liaison //There is no suitable backpack for a CL really... @@ -420,7 +424,7 @@ /datum/equipment_preset/uscm_ship/commander/New() . = ..() - access = get_all_marine_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /datum/equipment_preset/uscm_ship/commander/load_race(mob/living/carbon/human/new_human, client/mob_client) ..() @@ -517,7 +521,7 @@ /datum/equipment_preset/uscm_ship/xo/New() . = ..() - access = get_main_marine_access() + access = get_access(ACCESS_LIST_MARINE_MAIN) /datum/equipment_preset/uscm_ship/xo/load_gear(mob/living/carbon/human/new_human) var/back_item = /obj/item/storage/backpack/satchel @@ -588,7 +592,7 @@ /datum/equipment_preset/uscm_ship/sea/New() . = ..() - access = get_main_marine_access() + access = get_access(ACCESS_LIST_MARINE_MAIN) /datum/equipment_preset/uscm_ship/sea/load_gear(mob/living/carbon/human/new_human) var/back_item = /obj/item/storage/backpack/satchel @@ -797,7 +801,7 @@ /datum/equipment_preset/uscm_ship/officer/New() . = ..() - access = get_all_marine_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /datum/equipment_preset/uscm_ship/officer/load_gear(mob/living/carbon/human/new_human) //TODO: add backpacks and satchels diff --git a/code/modules/gear_presets/whiteout.dm b/code/modules/gear_presets/whiteout.dm index 78128c32a44a..dde564f93375 100644 --- a/code/modules/gear_presets/whiteout.dm +++ b/code/modules/gear_presets/whiteout.dm @@ -13,7 +13,7 @@ /datum/equipment_preset/pmc/w_y_whiteout/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_GLOBAL) /datum/equipment_preset/pmc/w_y_whiteout/load_race(mob/living/carbon/human/new_human) new_human.set_species(SYNTH_COMBAT) diff --git a/code/modules/gear_presets/wo.dm b/code/modules/gear_presets/wo.dm index 1033a5f14db3..521d2690d367 100644 --- a/code/modules/gear_presets/wo.dm +++ b/code/modules/gear_presets/wo.dm @@ -41,7 +41,7 @@ /datum/equipment_preset/wo/commander/New() . = ..() - access = get_all_marine_access() + access = get_access(ACCESS_LIST_MARINE_ALL) /datum/equipment_preset/wo/commander/load_gear(mob/living/carbon/human/new_human) var/sidearm = "Mateba" @@ -109,7 +109,7 @@ /datum/equipment_preset/wo/xo/New() . = ..() - access = get_main_marine_access() + access = get_access(ACCESS_LIST_MARINE_MAIN) /datum/equipment_preset/wo/xo/load_gear(mob/living/carbon/human/new_human) var/back_item = /obj/item/storage/backpack/satchel @@ -579,10 +579,6 @@ name = "WO Combat Reporter" //CL flags = EQUIPMENT_PRESET_START_OF_ROUND_WO - access = list( - ACCESS_WY_CORPORATE, ACCESS_ILLEGAL_PIRATE, ACCESS_MARINE_COMMAND, ACCESS_MARINE_DROPSHIP, - ACCESS_MARINE_RESEARCH, ACCESS_MARINE_MEDBAY, ACCESS_CIVILIAN_PUBLIC, - ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_ENGINEERING, ACCESS_CIVILIAN_LOGISTICS) assignment = JOB_WO_CORPORATE_LIAISON rank = JOB_WO_CORPORATE_LIAISON paygrade = "WYC2" @@ -593,6 +589,10 @@ minimap_icon = "surv" minimap_background = MINIMAP_ICON_BACKGROUND_CIVILIAN +/datum/equipment_preset/wo/reporter/New() + . = ..() + access = get_access(ACCESS_LIST_MARINE_LIAISON) + list(ACCESS_PRESS) + /datum/equipment_preset/wo/reporter/load_gear(mob/living/carbon/human/new_human) var/back_item = /obj/item/storage/backpack/satchel //There is no suitable backpack for a CL really... diff --git a/code/modules/gear_presets/wy.dm b/code/modules/gear_presets/wy.dm index c773ea9b9b4e..d5b5194401bd 100644 --- a/code/modules/gear_presets/wy.dm +++ b/code/modules/gear_presets/wy.dm @@ -6,22 +6,13 @@ rank = FACTION_WY idtype = /obj/item/card/id/silver faction_group = FACTION_LIST_WY - access = list( - ACCESS_WY_CORPORATE, - ACCESS_ILLEGAL_PIRATE, - ACCESS_MARINE_COMMAND, - ACCESS_MARINE_DROPSHIP, - ACCESS_MARINE_RESEARCH, - ACCESS_WY_CORPORATE_DS, - ACCESS_MARINE_MEDBAY, - ) skills = /datum/skills/civilian languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) var/headset_type = /obj/item/device/radio/headset/distress/WY /datum/equipment_preset/wy/New() . = ..() - access += get_all_civilian_access() + get_all_weyland_access() + access += get_access(ACCESS_LIST_WY_BASE) /datum/equipment_preset/wy/load_id(mob/living/carbon/human/new_human) . = ..() @@ -86,7 +77,7 @@ /datum/equipment_preset/wy/manager/New() . = ..() - access = get_global_access() + access = get_access(ACCESS_LIST_WY_SENIOR) /datum/equipment_preset/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) @@ -116,6 +107,10 @@ rank = JOB_CHIEF_EXECUTIVE paygrade = "WYC9" +/datum/equipment_preset/wy/manager/chief_executive/New() + . = ..() + access = get_access(ACCESS_LIST_WY_ALL) + /datum/equipment_preset/wy/manager/director name = "Corporate - J - Director" flags = EQUIPMENT_PRESET_EXTRA @@ -125,6 +120,10 @@ skills = /datum/skills/civilian/manager/director headset_type = /obj/item/device/radio/headset/distress/pmc/command/director +/datum/equipment_preset/wy/manager/director/New() + . = ..() + access = get_access(ACCESS_LIST_WY_ALL) + /datum/equipment_preset/wy/manager/director/load_gear(mob/living/carbon/human/new_human) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/director(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/director(new_human), WEAR_JACKET) diff --git a/code/modules/gear_presets/wy_goons.dm b/code/modules/gear_presets/wy_goons.dm index 753693ef31f9..5160f0bf319a 100644 --- a/code/modules/gear_presets/wy_goons.dm +++ b/code/modules/gear_presets/wy_goons.dm @@ -9,7 +9,7 @@ /datum/equipment_preset/goon/New() . = ..() - access = get_all_main_access() + access = get_access(ACCESS_LIST_WY_GOON) /datum/equipment_preset/goon/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = pick(MALE, FEMALE) @@ -97,6 +97,10 @@ paygrade = "WEY-GOON-L" skills = /datum/skills/MP +/datum/equipment_preset/goon/lead/New() + . = ..() + access = get_access(ACCESS_LIST_WY_GOON) + list(ACCESS_WY_LEADERSHIP) + /datum/equipment_preset/goon/lead/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/lead, WEAR_BODY) diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index ea33700eb433..92b4422aeebe 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -1178,7 +1178,8 @@ "adR" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Pilot's Office"; - req_one_access_txt = "3;22;19" + req_one_access_txt = "3;22;19"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 8 @@ -1365,7 +1366,8 @@ "aeD" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ req_one_access = null; - req_one_access_txt = "2;7" + req_one_access_txt = "2;7"; + access_modified = 1 }, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -1842,7 +1844,8 @@ dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -1912,7 +1915,8 @@ /obj/structure/machinery/door/airlock/almayer/maint{ req_access = null; req_one_access = null; - req_one_access_txt = "3;22;19" + req_one_access_txt = "3;22;19"; + access_modified = 1 }, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; @@ -2137,7 +2141,8 @@ /obj/structure/machinery/door/airlock/almayer/command/reinforced{ name = "\improper Commanding Officer's Quarters"; req_access = null; - req_access_txt = "31" + req_access_txt = "31"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -2162,7 +2167,8 @@ dir = 1; req_access = null; req_one_access = null; - req_one_access_txt = "3;22;19" + req_one_access_txt = "3;22;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -2493,7 +2499,8 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ req_one_access = null; - req_one_access_txt = "7;19" + req_one_access_txt = "7;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -3740,7 +3747,7 @@ /turf/open/floor/almayer, /area/almayer/hallways/repair_bay) "amq" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 8 }, /turf/open/floor/almayer{ @@ -3748,7 +3755,7 @@ }, /area/almayer/command/lifeboat) "ams" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -4886,10 +4893,6 @@ }, /area/almayer/engineering/engineering_workshop/hangar) "apR" = ( -/obj/structure/pipes/vents/pump{ - name = "Secure Air Vent"; - welded = 1 - }, /obj/effect/decal/warning_stripes{ icon_state = "N"; pixel_y = 1 @@ -4897,6 +4900,10 @@ /obj/structure/machinery/alarm/almayer{ dir = 1 }, +/obj/structure/pipes/vents/pump/no_boom{ + welded = 1; + name = "Secure Reinforced Air Vent" + }, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -5173,7 +5180,7 @@ }, /area/almayer/living/pilotbunks) "aqC" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 5 }, /turf/open/floor/plating/plating_catwalk, @@ -5251,7 +5258,6 @@ name = "\improper Containment Cell 1"; unacidable = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 @@ -5264,12 +5270,13 @@ id = "Containment Breach"; name = "\improper Secure Airlock" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell) "aqS" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -5853,7 +5860,8 @@ /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ name = "\improper AI Reception"; req_access = null; - req_one_access_txt = "91;92" + req_one_access_txt = "91;92"; + access_modified = 1 }, /turf/open/floor/almayer/no_build{ icon_state = "ai_floors" @@ -6230,9 +6238,9 @@ /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ dir = 1; name = "\improper Spare Bomb Suit"; - req_access = null; req_one_access = null; - req_one_access_txt = "35" + req_one_access_txt = "35"; + access_modified = 1 }, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) @@ -6735,7 +6743,8 @@ /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; name = "Telecommunications"; - req_access_txt = "6" + req_access_txt = "6"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -6954,9 +6963,9 @@ "avk" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ dir = 1; - req_access = null; req_one_access = null; - req_one_access_txt = "35" + req_one_access_txt = "35"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -7413,7 +7422,8 @@ dir = 1; name = "\improper Engineering Storage"; req_one_access = null; - req_one_access_txt = "2;7" + req_one_access_txt = "2;7"; + access_modified = 1 }, /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -7499,7 +7509,7 @@ }, /area/almayer/medical/hydroponics) "awR" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -7828,7 +7838,7 @@ }, /area/almayer/engineering/upper_engineering) "ayg" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 5 }, /turf/open/floor/almayer{ @@ -8685,7 +8695,8 @@ dir = 2; name = "Morgue"; req_access_txt = "25"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -8762,7 +8773,7 @@ /obj/structure/bed/chair/office/light{ dir = 8 }, -/obj/structure/pipes/vents/pump{ +/obj/structure/pipes/vents/pump/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -8786,7 +8797,7 @@ dir = 4; icon_state = "pipe-c" }, -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -8797,7 +8808,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -8829,7 +8840,8 @@ "aBf" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ name = "Telecommunications"; - req_access_txt = "6" + req_access_txt = "6"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 8 @@ -8837,7 +8849,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -9067,7 +9079,8 @@ "aBP" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ dir = 1; - req_one_access = list(36) + req_one_access = list(36); + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -9291,7 +9304,7 @@ id = "containmentlockdown_S"; name = "Containment Lockdown"; pixel_y = 28; - req_one_access_txt = "19;28" + req_one_access_txt = "28" }, /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -10083,7 +10096,8 @@ }, /obj/structure/machinery/door/airlock/almayer/maint{ dir = 2; - req_one_access = list(2,34,30) + req_one_access = list(2,34,30); + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10395,7 +10409,8 @@ name = "\improper Engineering Storage"; no_panel = 1; req_one_access = null; - req_one_access_txt = "2;7" + req_one_access_txt = "2;7"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10414,7 +10429,8 @@ name = "\improper Engineering Storage"; no_panel = 1; req_one_access = null; - req_one_access_txt = "2;7" + req_one_access_txt = "2;7"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10672,7 +10688,8 @@ /obj/structure/machinery/door/airlock/almayer/command/reinforced{ name = "\improper XO's Quarters"; req_access = null; - req_access_txt = "1" + req_access_txt = "1"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -10699,7 +10716,8 @@ /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 2; name = "Telecommunications"; - req_access_txt = "6" + req_access_txt = "6"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -11607,7 +11625,7 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) "aMR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -11615,7 +11633,7 @@ }, /area/almayer/command/lifeboat) "aMS" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, @@ -12055,10 +12073,10 @@ }, /area/almayer/squads/alpha) "aPk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -12535,7 +12553,8 @@ dir = 2; name = "Morgue Processing"; req_access_txt = "25"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -15889,9 +15908,9 @@ /obj/structure/machinery/door/airlock/almayer/medical/glass{ dir = 2; name = "\improper Chemistry Laboratory"; - req_access = null; req_access_txt = "20"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -16174,9 +16193,9 @@ /obj/structure/machinery/door/airlock/almayer/medical/glass{ dir = 2; name = "\improper Nurse Office"; - req_access = null; req_access_txt = "20"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -16380,7 +16399,8 @@ dir = 2; name = "Firing Range"; req_access = null; - req_one_access_txt = "2;4;7;9;21" + req_one_access_txt = "2;4;7;9;21"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -17107,7 +17127,8 @@ dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -19597,7 +19618,8 @@ dir = 2; name = "\improper Security Checkpoint"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -19905,7 +19927,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/almayer{ dir = 1; name = "\improper Auxiliary Combat Support Secondary Preparations"; - req_one_access = "19;27;22" + req_one_access = "19;27;22"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -20489,7 +20512,7 @@ }, /area/almayer/living/bridgebunks) "bFD" = ( -/obj/structure/pipes/vents/pump{ +/obj/structure/pipes/vents/pump/no_boom{ dir = 1 }, /turf/open/floor/almayer{ @@ -20819,7 +20842,8 @@ dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -21090,7 +21114,8 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/generic{ name = "Storage"; - req_one_access = "2;21" + req_one_access = "2;21"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -21288,7 +21313,8 @@ /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; name = "\improper Auxiliary Support Officers Quarters"; - req_one_access_txt = "37" + req_one_access_txt = "37"; + access_modified = 1 }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -21476,7 +21502,8 @@ dir = 1; name = "\improper Particle Cannon Systems Room"; req_access = null; - req_one_access_txt = "7;19" + req_one_access_txt = "7;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -24967,7 +24994,8 @@ /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" + req_one_access_txt = "19;22"; + access_modified = 1 }, /obj/structure/disposalpipe/segment, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -25243,7 +25271,8 @@ dir = 2; name = "Firing Range"; req_access = null; - req_one_access_txt = "2;4;7;9;21" + req_one_access_txt = "2;4;7;9;21"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -27075,7 +27104,7 @@ }, /area/almayer/hallways/port_hallway) "ckn" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer, /area/almayer/command/lifeboat) "ckr" = ( @@ -27668,7 +27697,8 @@ /obj/structure/machinery/door/airlock/almayer/security/reinforced{ name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -27679,7 +27709,8 @@ /obj/structure/machinery/door/airlock/almayer/security/reinforced{ name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -27964,7 +27995,7 @@ }, /area/almayer/hull/upper_hull/u_a_s) "coJ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 10 }, /turf/open/floor/almayer{ @@ -28832,7 +28863,7 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) "cFZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -28999,7 +29030,6 @@ pixel_x = 16; pixel_y = 16 }, -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 @@ -29018,6 +29048,7 @@ pixel_y = -6; req_one_access_txt = "19;28" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -29230,12 +29261,12 @@ }, /area/almayer/engineering/upper_engineering/starboard) "cQo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, /obj/effect/decal/warning_stripes{ icon_state = "W" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 5 + }, /turf/open/floor/almayer{ dir = 8; icon_state = "sterile_green_side" @@ -31280,7 +31311,8 @@ dir = 2; name = "\improper Security Checkpoint"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -32873,7 +32905,7 @@ }, /area/almayer/engineering/port_atmos) "eqD" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 9 }, /turf/open/floor/almayer/research/containment/floor2{ @@ -34033,8 +34065,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ dir = 2; id_tag = "tc04"; - name = "\improper Treatment Center"; - req_access = null + name = "\improper Treatment Center" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -34897,7 +34928,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/almayer/glass{ dir = 2; name = "\improper Requisitions Break Room"; - req_one_access = "2;21" + req_one_access = "19;21"; + access_modified = 1 }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -35000,7 +35032,7 @@ }, /area/almayer/hull/upper_hull/u_a_s) "foI" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 8 }, /turf/open/floor/almayer, @@ -35030,7 +35062,7 @@ name = "Containment Lockdown"; pixel_x = 29; pixel_y = 3; - req_one_access_txt = "19;28" + req_one_access_txt = "28" }, /obj/structure/window/reinforced{ dir = 8; @@ -35207,7 +35239,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ name = "\improper Cryogenics Bay"; req_access = null; - req_one_access_txt = "1;3" + req_one_access_txt = "1;3"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -35713,7 +35746,8 @@ "fEo" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "Kitchen"; - req_one_access_txt = "30;19" + req_one_access_txt = "30;19"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -35949,7 +35983,8 @@ "fIX" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/almayer{ name = "\improper Requisitions Auxiliary Storage Room"; - req_one_access = "19;21" + req_one_access = "19;21"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -36769,7 +36804,8 @@ /obj/structure/machinery/door/airlock/almayer/command{ name = "\improper Senior Enlisted Advisor's Office"; req_access = null; - req_access_txt = "19;29" + req_access_txt = "19;29"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -37310,7 +37346,8 @@ /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ dir = 1; req_one_access = null; - req_one_access_txt = "7;19" + req_one_access_txt = "7;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -38053,7 +38090,7 @@ }, /area/almayer/squads/delta) "gEz" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 6 }, /turf/open/floor/plating/plating_catwalk, @@ -38413,7 +38450,8 @@ "gMA" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 8; - req_one_access = list(2,34,30) + req_one_access = list(2,34,30); + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -39679,7 +39717,6 @@ /turf/open/floor/almayer, /area/almayer/living/chapel) "hqh" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; pixel_x = 1; @@ -39689,6 +39726,7 @@ icon_state = "NW-out"; pixel_y = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer/research/containment/entrance, /area/almayer/medical/containment/cell) "hqs" = ( @@ -40309,7 +40347,8 @@ /obj/structure/machinery/door/airlock/almayer/medical{ name = "Autopsy"; req_access_txt = "25"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -40432,7 +40471,8 @@ }, /obj/structure/machinery/door/airlock/almayer/maint{ req_access_txt = "200"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -40845,7 +40885,8 @@ dir = 2; name = "Morgue"; req_access_txt = "25"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -41487,7 +41528,8 @@ /obj/structure/machinery/door/airlock/almayer/maint{ dir = 2; req_one_access = null; - req_one_access_txt = "19;34;30" + req_one_access_txt = "19;34;30"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -41837,7 +41879,8 @@ "iqp" = ( /obj/structure/machinery/door/airlock/almayer/maint{ req_one_access = null; - req_one_access_txt = "37" + req_one_access_txt = "37"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -42160,9 +42203,6 @@ }, /area/almayer/engineering/laundry) "iwJ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; pixel_y = -1 @@ -42171,6 +42211,9 @@ icon_state = "NW-out"; pixel_y = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, /turf/open/floor/almayer/research/containment/entrance{ dir = 8 }, @@ -42338,10 +42381,10 @@ /turf/open/floor/almayer, /area/almayer/hallways/hangar) "iAz" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "SW-out" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ dir = 10; icon_state = "sterile_green_side" @@ -42872,10 +42915,10 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/armory) "iOp" = ( -/obj/structure/pipes/vents/pump, /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" }, +/obj/structure/pipes/vents/pump/no_boom, /turf/open/floor/almayer, /area/almayer/command/lifeboat) "iOD" = ( @@ -42974,7 +43017,8 @@ "iQL" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 2; - req_one_access = list(2,34,30) + req_one_access = list(2,34,30); + access_modified = 1 }, /obj/structure/prop/invuln/lattice_prop{ dir = 1; @@ -43334,7 +43378,7 @@ /turf/open/floor/almayer, /area/almayer/command/lifeboat) "iZr" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -43374,7 +43418,7 @@ }, /area/almayer/hallways/port_hallway) "iZL" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 9 }, /turf/open/floor/plating/plating_catwalk, @@ -43878,7 +43922,8 @@ "jip" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Main Kitchen"; - req_one_access_txt = "30;19" + req_one_access_txt = "30;19"; + access_modified = 1 }, /turf/open/floor/prison{ icon_state = "kitchen" @@ -44041,18 +44086,17 @@ }, /area/almayer/shipboard/brig/perma) "jlA" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ dir = 5; icon_state = "sterile_green_side" }, /area/almayer/medical/containment) "jlG" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; pixel_x = 1; @@ -44062,6 +44106,7 @@ icon_state = "SW-out"; pixel_y = -1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer/research/containment/entrance, /area/almayer/medical/containment/cell) "jlN" = ( @@ -45018,9 +45063,6 @@ id = "Containment Cell 3"; name = "\improper Containment Cell 3" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, @@ -45033,6 +45075,9 @@ id = "Containment Breach"; name = "\improper Secure Airlock" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -45445,8 +45490,7 @@ "jXf" = ( /obj/structure/machinery/door/airlock/almayer/medical{ id_tag = "or03"; - name = "Lobby"; - req_access = null + name = "Lobby" }, /turf/open/floor/almayer{ icon_state = "dark_sterile" @@ -45709,11 +45753,11 @@ }, /area/almayer/command/airoom) "kbJ" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ dir = 6; icon_state = "sterile_green_side" @@ -46826,7 +46870,6 @@ }, /area/almayer/hallways/hangar) "kCE" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; pixel_x = 1; @@ -46836,6 +46879,7 @@ icon_state = "NW-out"; pixel_y = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -46874,9 +46918,6 @@ }, /area/almayer/medical/lower_medical_medbay) "kDk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 6 - }, /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; pixel_x = 1; @@ -46887,6 +46928,9 @@ pixel_x = 1; pixel_y = 1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 6 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -47023,7 +47067,7 @@ }, /area/almayer/hallways/aft_hallway) "kGQ" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer/research/containment/corner_var1{ @@ -47617,7 +47661,8 @@ "kUh" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" + req_one_access_txt = "19;22"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -47955,7 +48000,7 @@ }, /area/almayer/squads/charlie) "lbE" = ( -/obj/structure/pipes/vents/pump, +/obj/structure/pipes/vents/pump/no_boom, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -48417,6 +48462,9 @@ "lmz" = ( /turf/closed/wall/almayer/white/hull, /area/space) +"lmK" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/command/securestorage) "lmW" = ( /obj/structure/pipes/vents/pump, /obj/structure/mirror{ @@ -48932,7 +48980,8 @@ /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; req_one_access = null; - req_one_access_txt = "2;7" + req_one_access_txt = "2;7"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -49313,7 +49362,7 @@ /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_p) "lDO" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 10 }, /turf/open/floor/almayer{ @@ -50754,7 +50803,6 @@ }, /area/almayer/living/briefing) "mnW" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/surface/table/almayer, /obj/item/device/reagent_scanner{ pixel_x = -8; @@ -50774,6 +50822,7 @@ pixel_x = 7; pixel_y = 7 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -51323,7 +51372,8 @@ /obj/structure/machinery/door/airlock/almayer/security/reinforced{ name = "\improper Astronavigational Deck"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -52111,7 +52161,8 @@ }, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ req_one_access = null; - req_one_access_txt = "19;30" + req_one_access_txt = "19;30"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -52341,7 +52392,7 @@ /turf/open/floor/carpet, /area/almayer/command/cichallway) "mWW" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 10 }, /turf/open/floor/almayer/research/containment/floor2{ @@ -52598,7 +52649,8 @@ "nec" = ( /obj/structure/machinery/door/airlock/almayer/maint{ req_access_txt = "200"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -52793,7 +52845,8 @@ dir = 2; name = "\improper Chief Engineer's Office"; req_one_access = null; - req_one_access_txt = "1;6" + req_one_access_txt = "1;6"; + access_modified = 1 }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -52933,7 +52986,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -53118,7 +53171,6 @@ /turf/open/floor/plating, /area/almayer/engineering/starboard_atmos) "npt" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; pixel_x = 1; @@ -53128,6 +53180,7 @@ icon_state = "SW-out"; pixel_y = -1 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -53251,6 +53304,9 @@ icon_state = "green" }, /area/almayer/squads/req) +"ntj" = ( +/turf/closed/wall/almayer/reinforced, +/area/almayer/command/computerlab) "ntm" = ( /obj/structure/sign/safety/maint{ pixel_x = -17; @@ -53399,7 +53455,7 @@ /turf/open/floor/almayer, /area/almayer/squads/req) "nwi" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer/research/containment/corner{ @@ -54298,7 +54354,6 @@ }, /area/almayer/lifeboat_pumps/south1) "nPf" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/computer/cameras/almayer/containment{ dir = 8; pixel_x = -4; @@ -54316,6 +54371,7 @@ pixel_y = -4; req_one_access_txt = "19;28" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -54362,7 +54418,7 @@ name = "\improper Lifeboat Control Bubble"; req_access = null }, -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -54977,7 +55033,7 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) "ohR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 9 }, /turf/open/floor/almayer{ @@ -55347,7 +55403,7 @@ }, /area/almayer/squads/req) "opy" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 6 }, /turf/open/floor/almayer{ @@ -55765,7 +55821,8 @@ /obj/structure/machinery/door/airlock/almayer/maint{ req_access = null; req_one_access = null; - req_one_access_txt = "19;29" + req_one_access_txt = "19;29"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -55963,7 +56020,7 @@ }, /area/almayer/hull/upper_hull/u_f_s) "oCO" = ( -/obj/structure/pipes/vents/pump{ +/obj/structure/pipes/vents/pump/no_boom{ dir = 8 }, /turf/open/floor/almayer, @@ -56774,7 +56831,7 @@ }, /area/almayer/squads/alpha) "oTP" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, /turf/open/floor/almayer, /area/almayer/command/lifeboat) "oUG" = ( @@ -56839,7 +56896,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; name = "\improper Kitchen Hydroponics"; - req_one_access_txt = "30;19" + req_one_access_txt = "30;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -57266,7 +57324,7 @@ /turf/open/floor/almayer, /area/almayer/command/computerlab) "pjh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -57360,7 +57418,8 @@ dir = 2; name = "Brig"; req_access = null; - req_one_access_txt = "1;3" + req_one_access_txt = "1;3"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -57987,7 +58046,7 @@ }, /area/almayer/hull/upper_hull/u_a_s) "pCb" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer, @@ -58088,7 +58147,7 @@ }, /area/almayer/squads/charlie) "pDL" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 10 }, /turf/open/floor/plating/plating_catwalk, @@ -58405,7 +58464,8 @@ dir = 1; req_access = null; req_one_access = null; - req_one_access_txt = "3;22;19" + req_one_access_txt = "3;22;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -59445,10 +59505,9 @@ /area/almayer/hull/lower_hull/l_m_p) "qgK" = ( /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 2; +/obj/structure/machinery/door/airlock/almayer/generic/press{ name = "\improper Combat Correspondent Room"; - req_access = list(203) + dir = 1 }, /turf/open/floor/almayer, /area/almayer/command/combat_correspondent) @@ -60051,18 +60110,14 @@ }, /area/almayer/hallways/port_hallway) "quT" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - dir = 2; - id = "tc02"; - id_tag = "tc02"; - name = "\improper Treatment Center"; - req_access = null; - req_one_access = null; - req_one_access_txt = "2;8;19" - }, /obj/structure/machinery/door/firedoor/border_only/almayer{ layer = 1.9 }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 2; + id_tag = "tc04"; + name = "\improper Treatment Center" + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -60417,7 +60472,7 @@ }, /area/almayer/hull/lower_hull/l_f_s) "qDz" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "red" }, @@ -60789,7 +60844,6 @@ }, /area/almayer/hallways/port_hallway) "qLi" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; pixel_x = 1; @@ -60800,6 +60854,7 @@ pixel_x = 1; pixel_y = 1 }, +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -62506,7 +62561,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ name = "\improper Brig"; req_access = null; - req_one_access_txt = "1;3" + req_one_access_txt = "1;3"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -62927,15 +62983,6 @@ }, /area/almayer/squads/alpha_bravo_shared) "rHo" = ( -/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ - dir = 2; - id = "tc01"; - id_tag = "tc01"; - name = "\improper Treatment Center"; - req_access = null; - req_one_access = null; - req_one_access_txt = "2;8;19" - }, /obj/structure/machinery/door/firedoor/border_only/almayer{ layer = 1.9 }, @@ -62945,6 +62992,11 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ + dir = 2; + id_tag = "tc04"; + name = "\improper Treatment Center" + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -63439,7 +63491,7 @@ }, /area/almayer/shipboard/brig/chief_mp_office) "rTB" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/plating/plating_catwalk, @@ -64760,7 +64812,8 @@ id_tag = "CO-Office"; name = "\improper Commanding Officer's Office"; req_access = null; - req_access_txt = "31" + req_access_txt = "31"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -65221,7 +65274,7 @@ /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) "sLt" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 1 }, /turf/open/floor/almayer, @@ -65637,7 +65690,7 @@ }, /area/almayer/medical/containment/cell) "sXd" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -65907,9 +65960,6 @@ id = "Containment Cell 2"; name = "\improper Containment Cell 2" }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, @@ -65922,6 +65972,9 @@ id = "Containment Breach"; name = "\improper Secure Airlock" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -66264,7 +66317,8 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ req_one_access = null; - req_one_access_txt = "7;19" + req_one_access_txt = "7;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -67173,7 +67227,7 @@ }, /area/almayer/hull/upper_hull/u_f_s) "tCk" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -67505,7 +67559,8 @@ /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; name = "Storage"; - req_one_access = "2;21" + req_one_access = "2;21"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -67737,7 +67792,9 @@ "tPj" = ( /obj/structure/machinery/door/airlock/almayer/marine/requisitions{ name = "\improper Requisition's Office"; - req_one_access_txt = "1;26" + req_one_access_txt = "1;26"; + req_one_access = null; + access_modified = 1 }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -67992,7 +68049,8 @@ /obj/structure/machinery/door/airlock/almayer/medical/glass{ name = "\improper CMO's Office"; req_one_access = null; - req_one_access_txt = "1;5" + req_one_access_txt = "1;5"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -68038,7 +68096,8 @@ /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/door/window/eastright{ dir = 8; - req_access_txt = "19" + req_access_txt = "19"; + access_modified = 1 }, /obj/effect/landmark/map_item, /obj/structure/machinery/door/window/eastleft{ @@ -68616,7 +68675,8 @@ /obj/structure/machinery/door/airlock/almayer/security{ name = "\improper Security Checkpoint"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -68961,7 +69021,7 @@ }, /area/almayer/medical/medical_science) "usB" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 8 }, /turf/open/floor/plating/plating_catwalk, @@ -70206,7 +70266,7 @@ }, /area/almayer/hull/upper_hull/u_a_s) "uSk" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 1 }, /turf/open/floor/almayer{ @@ -70493,7 +70553,6 @@ id = "medcryobeds"; id_tag = "medcryobeds"; name = "Medical Hypersleep Access"; - req_access = null; req_one_access = null }, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -71516,7 +71575,8 @@ name = "\improper Power Control Room"; req_access = null; req_one_access = null; - req_one_access_txt = "3;6" + req_one_access_txt = "3;6"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "orangefull" @@ -72051,7 +72111,8 @@ dir = 2; name = "\improper Field Surgery Equipment"; req_access_txt = "20"; - req_one_access = null + req_one_access = null; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -72555,7 +72616,7 @@ /turf/open/floor/almayer, /area/almayer/command/computerlab) "vQu" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 8 }, /turf/open/floor/almayer{ @@ -73017,7 +73078,6 @@ }, /area/almayer/medical/lower_medical_medbay) "vYz" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/surface/table/almayer, /obj/item/reagent_container/glass/beaker{ pixel_x = 8 @@ -73039,6 +73099,7 @@ pixel_x = -1; pixel_y = 9 }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -73195,7 +73256,7 @@ }, /area/almayer/medical/operating_room_four) "wbR" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/lifeboat) "wbX" = ( @@ -73609,14 +73670,19 @@ }, /area/almayer/living/briefing) "wkc" = ( -/obj/structure/machinery/door/airlock/almayer/engineering{ - name = "\improper Engineering Storage"; - req_one_access_txt = "2;7;11" +/obj/structure/surface/table/reinforced/prison, +/obj/structure/machinery/door/window/eastright{ + dir = 8; + req_access_txt = "8"; + access_modified = 1 + }, +/obj/structure/machinery/door/window/eastleft{ + req_access_txt = "8" }, /turf/open/floor/almayer{ - icon_state = "test_floor4" + icon_state = "sterile_green" }, -/area/almayer/hallways/hangar) +/area/almayer/medical/lockerroom) "wky" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -73791,8 +73857,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor{ dir = 2; id_tag = "tc03"; - name = "\improper Treatment Center"; - req_access = null + name = "\improper Treatment Center" }, /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -74007,7 +74072,7 @@ }, /area/almayer/hallways/hangar) "wse" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ dir = 4 }, /turf/open/floor/almayer{ @@ -74133,7 +74198,8 @@ dir = 2; name = "\improper Security Checkpoint"; req_access = null; - req_one_access_txt = "3;19" + req_one_access_txt = "3;19"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -74685,7 +74751,8 @@ dir = 1; name = "\improper CMO's Bedroom"; req_access = null; - req_one_access_txt = "1;5" + req_one_access_txt = "1;5"; + access_modified = 1 }, /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -74795,9 +74862,9 @@ /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south2) "wLy" = ( -/obj/structure/pipes/vents/pump{ - name = "Secure Air Vent"; - welded = 1 +/obj/structure/pipes/vents/pump/no_boom{ + welded = 1; + name = "Secure Reinforced Air Vent" }, /turf/open/floor/almayer/research/containment/floor2{ dir = 1 @@ -74847,7 +74914,7 @@ }, /area/almayer/living/grunt_rnr) "wLN" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom{ dir = 8 }, /turf/open/floor/almayer{ @@ -74921,7 +74988,8 @@ "wNU" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 2; - req_one_access = list(2,34,30) + req_one_access = list(2,34,30); + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -75780,12 +75848,12 @@ }, /area/almayer/medical/operating_room_one) "xgg" = ( -/obj/structure/pipes/vents/pump{ - dir = 8 - }, /obj/structure/machinery/power/apc/almayer/hardened{ dir = 4 }, +/obj/structure/pipes/vents/pump/no_boom{ + dir = 8 + }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) "xgh" = ( @@ -76238,7 +76306,8 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/secdoor/glass/reinforced{ name = "\improper Brig"; req_access = null; - req_one_access_txt = "1;3" + req_one_access_txt = "1;3"; + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -76389,7 +76458,8 @@ /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; req_one_access = null; - req_one_access_txt = "30;19" + req_one_access_txt = "30;19"; + access_modified = 1 }, /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -76448,7 +76518,6 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "W" }, @@ -76460,6 +76529,7 @@ id = "Containment Breach"; name = "\improper Secure Airlock" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -77093,7 +77163,7 @@ }, /area/almayer/living/briefing) "xGU" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ dir = 1; icon_state = "red" @@ -77865,7 +77935,9 @@ /area/almayer/squads/alpha_bravo_shared) "xWo" = ( /obj/structure/machinery/door/airlock/almayer/maint{ - req_one_access_txt = "19;21" + req_one_access_txt = "19;21"; + access_modified = 1; + req_one_access = null }, /turf/open/floor/almayer{ icon_state = "plate" @@ -77883,7 +77955,8 @@ "xWF" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 2; - req_one_access = list(2,34,30) + req_one_access = list(2,34,30); + access_modified = 1 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -77927,13 +78000,13 @@ }, /area/almayer/medical/medical_science) "xXu" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, /obj/structure/machinery/camera/autoname/almayer{ dir = 1; name = "ship-grade camera" }, +/obj/structure/pipes/vents/pump/no_boom{ + dir = 1 + }, /turf/open/floor/almayer, /area/almayer/command/lifeboat) "xYf" = ( @@ -77983,6 +78056,15 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"xYZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering) "xZz" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/faxmachine/uscm/command/capt, @@ -101276,7 +101358,7 @@ bHB tIS bcm bcm -wkc +wXT cdA bcm bcm @@ -104717,7 +104799,7 @@ qjN hpN gfW omo -uFo +wkc gfW uFo omo @@ -108476,7 +108558,7 @@ vOy vOy wMO wky -ajl +sqf hon ajt mce @@ -108679,7 +108761,7 @@ vOy ayX kXw pxo -ajl +sqf kHT pjM aim @@ -108882,7 +108964,7 @@ vOy niL kXw pxo -ajl +sqf atL bkQ atL @@ -109694,7 +109776,7 @@ vOy vOy mFq vqW -ajl +sqf ybf aii avj @@ -117798,16 +117880,16 @@ adO aEp xTt aEp -ioU -ioU -ioU -ioU -ioU -aHq -aHq -aHq -aHq -aHq +lmK +lmK +lmK +lmK +lmK +ntj +ntj +ntj +ntj +ntj aHq cnH kzk @@ -121865,7 +121947,7 @@ arq arq arq aze -aBo +xYZ aDe arq arq diff --git a/maps/predship/huntership.dmm b/maps/predship/huntership.dmm index d7dcb49427a0..f8b3028a68ff 100644 --- a/maps/predship/huntership.dmm +++ b/maps/predship/huntership.dmm @@ -793,7 +793,7 @@ name = "Cell Lockdown 1"; pixel_x = -25; pixel_y = 9; - req_one_access_txt = "250;251;252" + req_one_access_txt = "390;391;392" }, /turf/open/shuttle/predship, /area/yautja) @@ -803,7 +803,7 @@ name = "Cell Lockdown 4"; pixel_x = -7; pixel_y = 9; - req_one_access_txt = "250;251;252" + req_one_access_txt = "390;391;392" }, /turf/closed/wall/huntership, /area/yautja) @@ -858,7 +858,7 @@ name = "Cell Lockdown 2"; pixel_x = -25; pixel_y = 9; - req_one_access_txt = "250;251;252" + req_one_access_txt = "390;391;392" }, /turf/open/shuttle/predship, /area/yautja) @@ -911,7 +911,7 @@ name = "Cell Lockdown 3"; pixel_x = -25; pixel_y = 9; - req_one_access_txt = "250;251;252" + req_one_access_txt = "390;391;392" }, /turf/open/shuttle/predship, /area/yautja) @@ -921,7 +921,7 @@ name = "Cell Lockdown 6"; pixel_x = -7; pixel_y = 9; - req_one_access_txt = "250;251;252" + req_one_access_txt = "390;391;392" }, /turf/closed/wall/huntership, /area/yautja) @@ -1587,7 +1587,7 @@ name = "Cell Lockdown 5"; pixel_x = -7; pixel_y = 9; - req_one_access_txt = "250;251;252" + req_one_access_txt = "390;391;392" }, /turf/closed/wall/huntership, /area/yautja) @@ -1788,9 +1788,9 @@ /area/yautja) "gr" = ( /obj/structure/closet/crate/secure{ + req_one_access_txt = "392"; color = "#6b675e"; - name = "Secure Yautja crate"; - req_one_access_txt = "252" + name = "Secure Yautja crate" }, /obj/item/explosive/grenade/spawnergrenade/hellhound, /obj/item/explosive/grenade/spawnergrenade/hellhound, @@ -1807,7 +1807,8 @@ name = "Armory Shutters"; needs_power = 0; pixel_x = 24; - req_one_access_txt = "252" + req_one_access_txt = "392"; + needs_power = 0 }, /turf/open/floor/corsat{ dir = 1; @@ -2423,9 +2424,9 @@ /area/yautja) "Bg" = ( /obj/structure/closet/crate/secure{ + req_one_access_txt = "392"; color = "#6b675e"; - name = "Secure Yautja crate"; - req_one_access_txt = "252" + name = "Secure Yautja crate" }, /obj/item/weapon/yautja/combistick, /obj/item/weapon/yautja/combistick{ diff --git a/maps/shuttles/dropship_alamo.dmm b/maps/shuttles/dropship_alamo.dmm index 9e7c1b047805..8ccfac333080 100644 --- a/maps/shuttles/dropship_alamo.dmm +++ b/maps/shuttles/dropship_alamo.dmm @@ -469,11 +469,7 @@ }, /area/shuttle/drop1/sulaco) "KC" = ( -/obj/structure/machinery/door/airlock/hatch/cockpit{ - req_access = null; - req_access_txt = "22"; - req_one_access = null - }, +/obj/structure/machinery/door/airlock/hatch/cockpit, /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/shuttle/dropship{ icon_state = "rasputin15" diff --git a/maps/shuttles/dropship_normandy.dmm b/maps/shuttles/dropship_normandy.dmm index 6a4191679104..e5aaaa568590 100644 --- a/maps/shuttles/dropship_normandy.dmm +++ b/maps/shuttles/dropship_normandy.dmm @@ -693,11 +693,7 @@ }, /area/shuttle/drop2/sulaco) "VW" = ( -/obj/structure/machinery/door/airlock/hatch/cockpit/two{ - req_access = null; - req_access_txt = "22"; - req_one_access = null - }, +/obj/structure/machinery/door/airlock/hatch/cockpit/two, /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/shuttle/dropship{ icon_state = "rasputin15" From a252f0c032d5c691ada439f53d3fed550f372723 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 22 Aug 2023 14:09:30 +0100 Subject: [PATCH 05/55] Automatic changelog for PR #4035 [ci skip] --- html/changelogs/AutoChangeLog-pr-4035.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4035.yml diff --git a/html/changelogs/AutoChangeLog-pr-4035.yml b/html/changelogs/AutoChangeLog-pr-4035.yml new file mode 100644 index 000000000000..90ffb5a71740 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4035.yml @@ -0,0 +1,13 @@ +author: "realforest2001" +delete-after: True +changes: + - code_imp: "Overhauled how ID accesses are assigned via proc, compiling all the many different procs we used into one." + - rscadd: "Added faction specific accesses to all major factions." + - rscdel: "Removed almost all marine accesses from non marine presets. No more free CIC access to CLF." + - code_imp: "Removed duplicate code in the VAI file." + - rscadd: "Adds a mapping var to indicate a door has non-standard access tags. This is to make it significantly easier for any future access changes to know if they need to look somewhere." + - maptweak: "Applied this var to every door I could find on the Almayer that has non-standard access. Colonies and other stuff to come in a future update." + - rscadd: "Added various new accesses to colonial doors, added WY_SECURITY and WY_RESEARCH to marine research doors." + - maptweak: "Added reinforced piping to lifeboats area. Didn't make much sense for a cruicial part of the evacuation procedures to be prone to spontaneous explosions that can singlehandedly end a marine evacuation without hostiles ever seeing it." + - maptweak: "Added reinforced piping to the research closed loop (it's a closed loop). Also removed CIC access from containment shutters as CIC access can't open the doors." + - maptweak: "Changed a couple walls around research from standard to reinforced, to fit with the containment breach shutters." \ No newline at end of file From 43133595a575efe639f5d1ca2a6eb8a0e63cd657 Mon Sep 17 00:00:00 2001 From: riot <103988604+CapCamIII@users.noreply.github.com> Date: Tue, 22 Aug 2023 08:10:28 -0500 Subject: [PATCH 06/55] Fixes UPP Soldier preset (#4226) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # About the pull request UPP soldier preset was getting overridden by the base UPP survivor preset via having the same preset name. 😢 Fixes. # Explain why it's good for the game People will stop pinging me thinking my UPP gun PR is the thing causing the issue. # Changelog :cl: fix: UPP soldier preset works again /:cl: --- code/modules/gear_presets/survivors.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/gear_presets/survivors.dm b/code/modules/gear_presets/survivors.dm index 243cb9440824..78fdc20c8b9f 100644 --- a/code/modules/gear_presets/survivors.dm +++ b/code/modules/gear_presets/survivors.dm @@ -1577,7 +1577,7 @@ ..() /datum/equipment_preset/survivor/upp - name = "UPP Soldier" + name = "Survivor - UPP" paygrade = "UE1" origin_override = ORIGIN_UPP rank = JOB_SURVIVOR From b348ed3fb41833356dc5dc1e411dd65e31aa0efb Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 22 Aug 2023 14:26:51 +0100 Subject: [PATCH 07/55] Automatic changelog for PR #4226 [ci skip] --- html/changelogs/AutoChangeLog-pr-4226.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4226.yml diff --git a/html/changelogs/AutoChangeLog-pr-4226.yml b/html/changelogs/AutoChangeLog-pr-4226.yml new file mode 100644 index 000000000000..781b47852cf1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4226.yml @@ -0,0 +1,4 @@ +author: "CapCamIII" +delete-after: True +changes: + - bugfix: "UPP soldier preset works again" \ No newline at end of file From 552ac0606a91d2ab16970d0b9d4316b4153b07c8 Mon Sep 17 00:00:00 2001 From: harryob Date: Tue, 22 Aug 2023 14:11:08 +0100 Subject: [PATCH 08/55] faster lobby art init during world start (#4205) the lobby art subsystem may as well start a little faster so people don't see through the illusion during atom init :cl: add: you always see lobby art while the world is setting up /:cl: --- code/__DEFINES/subsystems.dm | 2 +- code/game/turfs/walls/wall_types.dm | 2 ++ config/example/custom_items.txt | 2 +- config/example/forumdbconfig.txt | 36 ++++++++++++++--------------- 4 files changed, 22 insertions(+), 20 deletions(-) diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 3a25d865fb60..8a65a4b961ff 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -113,6 +113,7 @@ #define SS_INIT_INPUT 85 #define SS_INIT_FAIL_TO_TOPIC 84 #define SS_INIT_TOPIC 83 +#define SS_INIT_LOBBYART 82 #define SS_INIT_RUST 30 #define SS_INIT_INFLUXDRIVER 28 #define SS_INIT_SUPPLY_SHUTTLE 25 @@ -162,7 +163,6 @@ #define SS_INIT_PLAYTIME -29 #define SS_INIT_PREDSHIPS -30 #define SS_INIT_OBJECTIVES -31 -#define SS_INIT_LOBBYART -33 #define SS_INIT_MINIMAP -34 #define SS_INIT_STATPANELS -98 #define SS_INIT_CHAT -100 //Should be last to ensure chat remains smooth during init. diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index 04c5a0735824..5338ae26c000 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -239,6 +239,8 @@ icon_state = "fakewindows" opacity = FALSE +INITIALIZE_IMMEDIATE(/turf/closed/wall/indestructible/splashscreen) + /turf/closed/wall/indestructible/splashscreen name = "Lobby Art" desc = "Assorted artworks." diff --git a/config/example/custom_items.txt b/config/example/custom_items.txt index 64a4bc648d7f..f4bb1a7028b7 100644 --- a/config/example/custom_items.txt +++ b/config/example/custom_items.txt @@ -1 +1 @@ -ckey: name: /path/to/obj +ckey: name: /path/to/obj diff --git a/config/example/forumdbconfig.txt b/config/example/forumdbconfig.txt index 61a2a2d6ecdc..0335ef90693d 100644 --- a/config/example/forumdbconfig.txt +++ b/config/example/forumdbconfig.txt @@ -1,19 +1,19 @@ -# This configuration file is for the forum database, if you need to set up -# population, death, etc. tracking see 'dbconfig.txt' -# The login credentials for this will likely differ from those in dbconfig.txt! - -# Server the MySQL database can be found at -# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. -ADDRESS localhost - -# MySQL server port (default is 3306) -PORT 3306 - -# Database the forum data may be found in -DATABASE tgstation13 - -# Username/Login used to access the database -LOGIN mylogin - -# Password used to access the database +# This configuration file is for the forum database, if you need to set up +# population, death, etc. tracking see 'dbconfig.txt' +# The login credentials for this will likely differ from those in dbconfig.txt! + +# Server the MySQL database can be found at +# Examples: localhost, 200.135.5.43, www.mysqldb.com, etc. +ADDRESS localhost + +# MySQL server port (default is 3306) +PORT 3306 + +# Database the forum data may be found in +DATABASE tgstation13 + +# Username/Login used to access the database +LOGIN mylogin + +# Password used to access the database PASSWORD mypassword \ No newline at end of file From 6126b50045cbf15649b0ebdcf1ceb546315e6b36 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 22 Aug 2023 16:01:44 +0100 Subject: [PATCH 09/55] Automatic changelog for PR #4205 [ci skip] --- html/changelogs/AutoChangeLog-pr-4205.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4205.yml diff --git a/html/changelogs/AutoChangeLog-pr-4205.yml b/html/changelogs/AutoChangeLog-pr-4205.yml new file mode 100644 index 000000000000..5615e43f39d2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4205.yml @@ -0,0 +1,4 @@ +author: "harryob" +delete-after: True +changes: + - rscadd: "you always see lobby art while the world is setting up" \ No newline at end of file From aa60301e58a5573df68130d925defcbebdd508ca Mon Sep 17 00:00:00 2001 From: Julian56 <117036822+Huffie56@users.noreply.github.com> Date: Tue, 22 Aug 2023 17:29:04 +0200 Subject: [PATCH 10/55] Fix you will no longer be able to feed without any limit with the fork. (#4174) # About the pull request fixes: https://github.com/cmss13-devs/cmss13/issues/3378 # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: you will no longer be able to feed without any limit with the fork. /:cl: --------- Co-authored-by: Julien --- code/__DEFINES/chemistry.dm | 1 + .../items/reagent_containers/food/snacks.dm | 16 ++++++++-------- code/game/objects/items/tools/kitchen_tools.dm | 4 ++++ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/chemistry.dm b/code/__DEFINES/chemistry.dm index 9a29754381f3..078ccbdc2d94 100644 --- a/code/__DEFINES/chemistry.dm +++ b/code/__DEFINES/chemistry.dm @@ -49,6 +49,7 @@ // Nutrition levels #define NUTRITION_MAX 550 +#define NUTRITION_HIGH 540 #define NUTRITION_NORMAL 400 #define NUTRITION_LOW 250 #define NUTRITION_VERYLOW 50 diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm index c0e11dac8eb3..06a4d785e677 100644 --- a/code/game/objects/items/reagent_containers/food/snacks.dm +++ b/code/game/objects/items/reagent_containers/food/snacks.dm @@ -60,7 +60,7 @@ if(istype(M, /mob/living/carbon)) var/mob/living/carbon/C = M var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) - if(fullness > 540 && world.time < C.overeat_cooldown) + if(fullness > NUTRITION_HIGH && world.time < C.overeat_cooldown) to_chat(user, SPAN_WARNING("[user == M ? "You" : "They"] don't feel like eating more right now.")) return if(issynth(C)) @@ -70,22 +70,22 @@ to_chat(user, SPAN_DANGER("[user == M ? "You are" : "[M] is"] unable to eat!")) return - if(fullness > 540) + if(fullness > NUTRITION_HIGH) C.overeat_cooldown = world.time + OVEREAT_TIME if(M == user)//If you're eating it yourself - if (fullness <= 50) + if (fullness <= NUTRITION_VERYLOW) to_chat(M, SPAN_WARNING("You hungrily chew out a piece of [src] and gobble it!")) - if (fullness > 50 && fullness <= 150) + if (fullness > NUTRITION_VERYLOW && fullness <= NUTRITION_LOW) to_chat(M, SPAN_NOTICE(" You hungrily begin to eat [src].")) - if (fullness > 150 && fullness <= 350) + if (fullness > NUTRITION_LOW && fullness <= NUTRITION_NORMAL) to_chat(M, SPAN_NOTICE(" You take a bite of [src].")) - if (fullness > 350 && fullness <= 540) + if (fullness > NUTRITION_NORMAL && fullness <= NUTRITION_HIGH) to_chat(M, SPAN_NOTICE(" You unwillingly chew a bit of [src].")) - if (fullness > 540) + if (fullness > NUTRITION_HIGH) to_chat(M, SPAN_WARNING("You reluctantly force more of [src] to go down your throat.")) else - if (fullness <= 540) + if (fullness <= NUTRITION_HIGH) user.affected_message(M, SPAN_HELPFUL("You start feeding [user == M ? "yourself" : "[M]"] [src]."), SPAN_HELPFUL("[user] starts feeding you [src]."), diff --git a/code/game/objects/items/tools/kitchen_tools.dm b/code/game/objects/items/tools/kitchen_tools.dm index 98974f25be29..bb763ada9911 100644 --- a/code/game/objects/items/tools/kitchen_tools.dm +++ b/code/game/objects/items/tools/kitchen_tools.dm @@ -45,6 +45,10 @@ return ..() if (reagents.total_volume > 0) + var/fullness = M.nutrition + (M.reagents.get_reagent_amount("nutriment") * 25) + if(fullness > NUTRITION_HIGH) + to_chat(user, SPAN_WARNING("[user == M ? "You" : "They"] don't feel like eating more right now.")) + return ..() reagents.set_source_mob(user) reagents.trans_to_ingest(M, reagents.total_volume) if(M == user) From 161421daff1d0d33aca723c66bc18074c7a4c5d5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 22 Aug 2023 17:24:39 +0100 Subject: [PATCH 11/55] Automatic changelog for PR #4174 [ci skip] --- html/changelogs/AutoChangeLog-pr-4174.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4174.yml diff --git a/html/changelogs/AutoChangeLog-pr-4174.yml b/html/changelogs/AutoChangeLog-pr-4174.yml new file mode 100644 index 000000000000..f7c1d3071519 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4174.yml @@ -0,0 +1,4 @@ +author: "Huffie56" +delete-after: True +changes: + - bugfix: "you will no longer be able to feed without any limit with the fork." \ No newline at end of file From 05fe9421a62fc38e397112152ac9e9149b9cead9 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Tue, 22 Aug 2023 10:32:52 -0700 Subject: [PATCH 12/55] Fix cade attack speed exploit (#4204) # About the pull request This PR fixes an exploit where dragging could be used to bypass an attack cooldown. # Explain why it's good for the game Fixes #4184 # Testing Photographs and Procedure
Screenshots & Videos https://youtu.be/nIfXqQ6IBw0
# Changelog :cl: Drathek fix: Fixed a cade attack exploit /:cl: --- code/modules/mob/living/carbon/xenomorph/Xenomorph.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index dd53868caf36..cc0c12bd1cc8 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -755,6 +755,9 @@ /mob/living/carbon/xenomorph/start_pulling(atom/movable/AM, lunge, no_msg) + if(next_move >= world.time) + return FALSE + if(SEND_SIGNAL(AM, COMSIG_MOVABLE_XENO_START_PULLING, src) & COMPONENT_ALLOW_PULL) return do_pull(AM, lunge, no_msg) From a8525bdfb9cc14eba9469358b32ff057314fa747 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 22 Aug 2023 18:33:13 +0100 Subject: [PATCH 13/55] Automatic changelog for PR #4204 [ci skip] --- html/changelogs/AutoChangeLog-pr-4204.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4204.yml diff --git a/html/changelogs/AutoChangeLog-pr-4204.yml b/html/changelogs/AutoChangeLog-pr-4204.yml new file mode 100644 index 000000000000..ff13f229cd0a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4204.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Fixed a cade attack exploit" \ No newline at end of file From c4563d521ed7329816ef5fa840f38d3873fc3f64 Mon Sep 17 00:00:00 2001 From: Julian56 <117036822+Huffie56@users.noreply.github.com> Date: Wed, 23 Aug 2023 00:28:39 +0200 Subject: [PATCH 14/55] fix Whiskey Outpost Chem master will now be connected to the smartfridge. (#4215) # About the pull request fixes: https://github.com/cmss13-devs/cmss13/issues/4207 # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Whiskey Outpost Chem master will now be connected to the smartfridge. /:cl: Co-authored-by: Julien --- .../Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm index a39d7d7fffba..6a0e8b169fea 100644 --- a/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm +++ b/maps/map_files/Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm @@ -868,6 +868,9 @@ "dl" = ( /turf/closed/wall/r_wall/unmeltable, /area/whiskey_outpost/inside/hospital) +"dn" = ( +/turf/open/space/basic, +/area/whiskey_outpost/inside/caves) "dr" = ( /obj/structure/window/reinforced{ dir = 4; @@ -1062,7 +1065,7 @@ /turf/open/gm/dirt, /area/whiskey_outpost/inside/caves/tunnel) "dV" = ( -/obj/structure/machinery/chem_master, +/obj/structure/machinery/chem_dispenser, /turf/open/floor{ dir = 9; icon_state = "whitegreen" @@ -1203,9 +1206,8 @@ /turf/open/gm/dirt, /area/whiskey_outpost/inside/caves/tunnel) "ez" = ( -/obj/structure/machinery/chem_dispenser, -/obj/structure/machinery/light/small{ - dir = 8 +/obj/structure/machinery/chem_master{ + tether_range = 4 }, /turf/open/floor{ dir = 1; @@ -1959,7 +1961,9 @@ /turf/open/gm/dirt, /area/whiskey_outpost/outside/lane/four_north) "he" = ( -/obj/structure/machinery/chem_dispenser, +/obj/structure/machinery/chem_master{ + tether_range = 4 + }, /turf/open/floor{ dir = 6; icon_state = "whitegreen" @@ -2426,7 +2430,10 @@ }, /area/whiskey_outpost/outside/north/northeast) "ix" = ( -/obj/structure/machinery/chem_master, +/obj/structure/machinery/chem_dispenser, +/obj/structure/machinery/light/small{ + dir = 8 + }, /turf/open/floor{ dir = 10; icon_state = "whitegreen" @@ -22662,7 +22669,7 @@ mT mT mT mT -mT +dn mT mT dl @@ -23061,12 +23068,12 @@ mT mT mT mT +dn mT mT mT mT -mT -mT +dn mT mT qz From df691b53b6c94d293cd5346db93f2c0a75c447d8 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 22 Aug 2023 23:36:56 +0100 Subject: [PATCH 15/55] Automatic changelog for PR #4215 [ci skip] --- html/changelogs/AutoChangeLog-pr-4215.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4215.yml diff --git a/html/changelogs/AutoChangeLog-pr-4215.yml b/html/changelogs/AutoChangeLog-pr-4215.yml new file mode 100644 index 000000000000..d538a7a7be31 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4215.yml @@ -0,0 +1,4 @@ +author: "Huffie56" +delete-after: True +changes: + - bugfix: "Whiskey Outpost Chem master will now be connected to the smartfridge." \ No newline at end of file From aca42a67e9d91bf03d59996274460b3d0bac696f Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 23 Aug 2023 01:04:50 +0000 Subject: [PATCH 16/55] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4035.yml | 13 --------- html/changelogs/AutoChangeLog-pr-4174.yml | 4 --- html/changelogs/AutoChangeLog-pr-4204.yml | 4 --- html/changelogs/AutoChangeLog-pr-4205.yml | 4 --- html/changelogs/AutoChangeLog-pr-4215.yml | 4 --- html/changelogs/AutoChangeLog-pr-4226.yml | 4 --- html/changelogs/archive/2023-08.yml | 33 +++++++++++++++++++++++ 7 files changed, 33 insertions(+), 33 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4035.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4174.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4204.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4205.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4215.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4226.yml diff --git a/html/changelogs/AutoChangeLog-pr-4035.yml b/html/changelogs/AutoChangeLog-pr-4035.yml deleted file mode 100644 index 90ffb5a71740..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4035.yml +++ /dev/null @@ -1,13 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - code_imp: "Overhauled how ID accesses are assigned via proc, compiling all the many different procs we used into one." - - rscadd: "Added faction specific accesses to all major factions." - - rscdel: "Removed almost all marine accesses from non marine presets. No more free CIC access to CLF." - - code_imp: "Removed duplicate code in the VAI file." - - rscadd: "Adds a mapping var to indicate a door has non-standard access tags. This is to make it significantly easier for any future access changes to know if they need to look somewhere." - - maptweak: "Applied this var to every door I could find on the Almayer that has non-standard access. Colonies and other stuff to come in a future update." - - rscadd: "Added various new accesses to colonial doors, added WY_SECURITY and WY_RESEARCH to marine research doors." - - maptweak: "Added reinforced piping to lifeboats area. Didn't make much sense for a cruicial part of the evacuation procedures to be prone to spontaneous explosions that can singlehandedly end a marine evacuation without hostiles ever seeing it." - - maptweak: "Added reinforced piping to the research closed loop (it's a closed loop). Also removed CIC access from containment shutters as CIC access can't open the doors." - - maptweak: "Changed a couple walls around research from standard to reinforced, to fit with the containment breach shutters." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4174.yml b/html/changelogs/AutoChangeLog-pr-4174.yml deleted file mode 100644 index f7c1d3071519..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4174.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Huffie56" -delete-after: True -changes: - - bugfix: "you will no longer be able to feed without any limit with the fork." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4204.yml b/html/changelogs/AutoChangeLog-pr-4204.yml deleted file mode 100644 index ff13f229cd0a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4204.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed a cade attack exploit" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4205.yml b/html/changelogs/AutoChangeLog-pr-4205.yml deleted file mode 100644 index 5615e43f39d2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4205.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "harryob" -delete-after: True -changes: - - rscadd: "you always see lobby art while the world is setting up" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4215.yml b/html/changelogs/AutoChangeLog-pr-4215.yml deleted file mode 100644 index d538a7a7be31..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4215.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Huffie56" -delete-after: True -changes: - - bugfix: "Whiskey Outpost Chem master will now be connected to the smartfridge." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4226.yml b/html/changelogs/AutoChangeLog-pr-4226.yml deleted file mode 100644 index 781b47852cf1..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4226.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CapCamIII" -delete-after: True -changes: - - bugfix: "UPP soldier preset works again" \ No newline at end of file diff --git a/html/changelogs/archive/2023-08.yml b/html/changelogs/archive/2023-08.yml index ee712fb75694..03bfd03efef5 100644 --- a/html/changelogs/archive/2023-08.yml +++ b/html/changelogs/archive/2023-08.yml @@ -287,3 +287,36 @@ CapCamIII: - bugfix: fixes the offset on m4ra custom barrel, it should appropriately be sat right on the gun sprite +2023-08-23: + CapCamIII: + - bugfix: UPP soldier preset works again + Drathek: + - bugfix: Fixed a cade attack exploit + Huffie56: + - bugfix: you will no longer be able to feed without any limit with the fork. + - bugfix: Whiskey Outpost Chem master will now be connected to the smartfridge. + harryob: + - rscadd: you always see lobby art while the world is setting up + realforest2001: + - code_imp: Overhauled how ID accesses are assigned via proc, compiling all the + many different procs we used into one. + - rscadd: Added faction specific accesses to all major factions. + - rscdel: Removed almost all marine accesses from non marine presets. No more free + CIC access to CLF. + - code_imp: Removed duplicate code in the VAI file. + - rscadd: Adds a mapping var to indicate a door has non-standard access tags. This + is to make it significantly easier for any future access changes to know if + they need to look somewhere. + - maptweak: Applied this var to every door I could find on the Almayer that has + non-standard access. Colonies and other stuff to come in a future update. + - rscadd: Added various new accesses to colonial doors, added WY_SECURITY and WY_RESEARCH + to marine research doors. + - maptweak: Added reinforced piping to lifeboats area. Didn't make much sense for + a cruicial part of the evacuation procedures to be prone to spontaneous explosions + that can singlehandedly end a marine evacuation without hostiles ever seeing + it. + - maptweak: Added reinforced piping to the research closed loop (it's a closed loop). + Also removed CIC access from containment shutters as CIC access can't open the + doors. + - maptweak: Changed a couple walls around research from standard to reinforced, + to fit with the containment breach shutters. From 295ef51ac6cf072216fb6db860ab9b356a6824b1 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Wed, 23 Aug 2023 11:31:16 -0700 Subject: [PATCH 17/55] Brings automatic weaponry to the marine and surv arsenal (#4003) # About the pull request Gives full auto to the following guns: m41a (and mk1) m39 HPR (when bipodded) m46c in IFF off type71 mar40 nsg every civvie SMG except the nailgun laser uzi All newly automatic guns fire 20% slower in automatic mode, to balance for the fact that it is much easier to re-aim than burst. This creates a dynamic between the three firemodes: Semi: - Best accuracy - Lowest DPS Burst: - Okay accuracy - Highest DPS Auto: - Okay (it depends) accuracy, but you are able to adjust for a moving target unlike burst. - Slightly lower DPS # Explain why it's good for the game Guns not having autofire feels... pretty rough. This PR will bring CM to a more modern time, while reducing the number of players diagnosed with carpal tunnel yearly. # Testing Photographs and Procedure I went through and tested pretty much every base gun, but I cannot guarantee that they all handle well. Lemme know if something's off. # Changelog :cl: balance: The M41A, M41Amk1, m39, m46c (iff off), mar-30/40/60, type 71, laser uzi, and every SMG now has automatic fire. To compensate for the ability to re-aim (unlike burst), the guns fire 20% slower while automatic. This does not apply to already-existing automatic weaponry. balance: The HPR can now fire in full auto when bipodded. fix: Adding/removing attachments now keeps the current firemode, if possible. fix: The dualtube and spec sniper now can switch tubes/toggle laser again fix: Fixed a long-standing exploit with bipods and scopes. fix: Fixed guns jamming when shooting UI elements. fix: Fixed a bunch of guns unintentionally having burst. balance: You can transfer ammo between HPR ammo boxes by hitting one with another. /:cl: --------- Co-authored-by: John Doe Co-authored-by: Benedict --- code/__DEFINES/conflict.dm | 4 ++- .../dcs/signals/atom/signals_item.dm | 6 ++++ code/_globalvars/bitfields.dm | 1 + code/datums/components/autofire/autofire.dm | 9 ++++-- code/datums/supply_packs/ammo.dm | 10 ------- code/datums/supply_packs/black_market.dm | 7 ++--- code/modules/clothing/shoes/miscellaneous.dm | 4 +-- code/modules/projectiles/ammunition.dm | 11 ++++--- code/modules/projectiles/gun.dm | 23 +++++++++----- code/modules/projectiles/gun_attachables.dm | 30 +++++++++++++++++-- code/modules/projectiles/gun_helpers.dm | 9 ++++++ code/modules/projectiles/guns/energy.dm | 2 ++ .../modules/projectiles/guns/flamer/flamer.dm | 2 +- code/modules/projectiles/guns/rifles.dm | 12 ++++++-- code/modules/projectiles/guns/shotguns.dm | 13 +++++--- code/modules/projectiles/guns/smgs.dm | 8 +++-- code/modules/projectiles/guns/souto.dm | 2 ++ code/modules/projectiles/guns/specialist.dm | 14 +++++---- code/modules/projectiles/magazines/rifles.dm | 2 +- code/modules/projectiles/projectile.dm | 11 +++++-- 20 files changed, 130 insertions(+), 50 deletions(-) diff --git a/code/__DEFINES/conflict.dm b/code/__DEFINES/conflict.dm index 7a1b322a19ee..30b2627bb1b0 100644 --- a/code/__DEFINES/conflict.dm +++ b/code/__DEFINES/conflict.dm @@ -68,7 +68,7 @@ #define GUN_ANTIQUE (1<<13) /// Whether the gun has been fired by its current user (reset upon `dropped()`) #define GUN_RECOIL_BUILDUP (1<<14) -/// support weapon, bipod will grant IFF +/// support weapon, bipod will grant autofire #define GUN_SUPPORT_PLATFORM (1<<15) /// No gun description, only base desc #define GUN_NO_DESCRIPTION (1<<16) @@ -99,6 +99,8 @@ #define AMMUNITION_HANDFUL_BOX (1<<2) #define AMMUNITION_HIDE_AMMO (1<<3) #define AMMUNITION_CANNOT_REMOVE_BULLETS (1<<4) +/// If this magazine can transfer to other magazines of the same type by slapping one with the other +#define AMMUNITION_SLAP_TRANSFER (1<<5) //Slowdown from various armors. /// How much shoes slow you down by default. Negative values speed you up diff --git a/code/__DEFINES/dcs/signals/atom/signals_item.dm b/code/__DEFINES/dcs/signals/atom/signals_item.dm index 138e88d21746..b7bbca9f64a3 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_item.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_item.dm @@ -54,3 +54,9 @@ #define COMSIG_GUN_AUTOFIREDELAY_MODIFIED "gun_autofiredelay_modified" #define COMSIG_GUN_BURST_SHOTS_TO_FIRE_MODIFIED "gun_burst_shots_to_fire_modified" #define COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED "gun_burst_shot_delay_modified" + +/// from /obj/item/weapon/gun/proc/recalculate_attachment_bonuses() : () +#define COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES "gun_recalculate_attachment_bonuses" + +/// from /obj/item/weapon/gun/proc/load_into_chamber() : () +#define COMSIG_GUN_INTERRUPT_FIRE "gun_interrupt_fire" diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 4936609d892e..d71125c318f6 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -128,6 +128,7 @@ DEFINE_BITFIELD(flags_magazine, list( "AMMUNITION_HANDFUL_BOX" = AMMUNITION_HANDFUL_BOX, "AMMUNITION_HIDE_AMMO" = AMMUNITION_HIDE_AMMO, "AMMUNITION_CANNOT_REMOVE_BULLETS" = AMMUNITION_CANNOT_REMOVE_BULLETS, + "AMMUNITION_SLAP_TRANSFER" = AMMUNITION_SLAP_TRANSFER, )) DEFINE_BITFIELD(flags_atom, list( diff --git a/code/datums/components/autofire/autofire.dm b/code/datums/components/autofire/autofire.dm index 31ca255f1b88..2b9401e8d346 100644 --- a/code/datums/components/autofire/autofire.dm +++ b/code/datums/components/autofire/autofire.dm @@ -15,6 +15,8 @@ var/have_to_reset_at_burst_end = FALSE ///If we are in a burst var/bursting = FALSE + /// The multiplier for how much slower the parent should fire in automatic mode. 1 is normal, 1.2 is 20% slower, 2 is 100% slower, etc. + var/automatic_delay_mult = 1 ///Callback to set bursting mode on the parent var/datum/callback/callback_bursting ///Callback to ask the parent to reset its firing vars @@ -26,7 +28,7 @@ ///Callback to set parent's fa_firing var/datum/callback/callback_set_firing -/datum/component/automatedfire/autofire/Initialize(auto_fire_shot_delay = 0.3 SECONDS, burstfire_shot_delay, burst_shots_to_fire = 3, fire_mode = GUN_FIREMODE_SEMIAUTO, datum/callback/callback_bursting, datum/callback/callback_reset_fire, datum/callback/callback_fire, datum/callback/callback_display_ammo, datum/callback/callback_set_firing) +/datum/component/automatedfire/autofire/Initialize(auto_fire_shot_delay = 0.3 SECONDS, burstfire_shot_delay, burst_shots_to_fire = 3, fire_mode = GUN_FIREMODE_SEMIAUTO, automatic_delay_mult = 1, datum/callback/callback_bursting, datum/callback/callback_reset_fire, datum/callback/callback_fire, datum/callback/callback_display_ammo, datum/callback/callback_set_firing) . = ..() RegisterSignal(parent, COMSIG_GUN_FIRE_MODE_TOGGLE, PROC_REF(modify_fire_mode)) @@ -35,11 +37,13 @@ RegisterSignal(parent, COMSIG_GUN_BURST_SHOT_DELAY_MODIFIED, PROC_REF(modify_burstfire_shot_delay)) RegisterSignal(parent, COMSIG_GUN_FIRE, PROC_REF(initiate_shot)) RegisterSignal(parent, COMSIG_GUN_STOP_FIRE, PROC_REF(stop_firing)) + RegisterSignal(parent, COMSIG_GUN_INTERRUPT_FIRE, PROC_REF(hard_reset)) src.auto_fire_shot_delay = auto_fire_shot_delay src.burstfire_shot_delay = burstfire_shot_delay src.burst_shots_to_fire = burst_shots_to_fire src.fire_mode = fire_mode + src.automatic_delay_mult = automatic_delay_mult src.callback_bursting = callback_bursting src.callback_reset_fire = callback_reset_fire src.callback_fire = callback_fire @@ -96,6 +100,7 @@ ///Hard reset the autofire, happens when the shooter fall/is thrown, at the end of a burst or when it runs out of ammunition /datum/component/automatedfire/autofire/proc/hard_reset() + SIGNAL_HANDLER callback_reset_fire.Invoke() //resets the gun shots_fired = 0 have_to_reset_at_burst_end = FALSE @@ -131,7 +136,7 @@ next_fire = world.time + burstfire_shot_delay if(GUN_FIREMODE_AUTOMATIC) callback_set_firing.Invoke(TRUE) - next_fire = world.time + auto_fire_shot_delay + next_fire = world.time + (auto_fire_shot_delay * automatic_delay_mult) if(GUN_FIREMODE_SEMIAUTO) return schedule_shot() diff --git a/code/datums/supply_packs/ammo.dm b/code/datums/supply_packs/ammo.dm index e598a11be5e0..164511c25cc0 100644 --- a/code/datums/supply_packs/ammo.dm +++ b/code/datums/supply_packs/ammo.dm @@ -122,16 +122,6 @@ containername = "\improper M39 AP magazines crate" group = "Ammo" -/datum/supply_packs/ammo_smg_mag_box_ext - name = "Magazine box (M39, 10x extended mags)" - contains = list( - /obj/item/ammo_box/magazine/m39/ext, - ) - cost = 30 - containertype = /obj/structure/closet/crate/ammo - containername = "\improper M39 extended magazines crate" - group = "Ammo" - //------------------------For M4RA---------------- /datum/supply_packs/ammo_m4ra_mag_box diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm index 65b15997d1b4..3f4453d03f32 100644 --- a/code/datums/supply_packs/black_market.dm +++ b/code/datums/supply_packs/black_market.dm @@ -184,10 +184,9 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related. new /obj/item/ammo_magazine/rifle/mar40/extended(src) new /obj/item/ammo_magazine/rifle/mar40(src) else - new /obj/item/weapon/gun/rifle/m41aMK1/tactical(src) - new /obj/item/ammo_magazine/rifle/m41aMK1/ap(src) - new /obj/item/ammo_magazine/rifle/m41aMK1(src) - new /obj/item/ammo_magazine/rifle/m41aMK1(src) + new /obj/item/weapon/gun/rifle/mar40/lmg(src) + new /obj/item/ammo_magazine/rifle/mar40/lmg(src) + new /obj/item/ammo_magazine/rifle/mar40/lmg(src) /* Misc. Individual Guns */ diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 9d53ac1103c0..e3b07a76a2ff 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -159,8 +159,8 @@ max_heat_protection_temperature = SHOE_MAX_HEAT_PROT /obj/item/clothing/shoes/souto - name = "\improper Souto Man's boots. Harder than the kick of Souto Red." - desc = "Souto Man boots" + name = "Souto Man boots" + desc = "\improper Souto Man's boots. Harder than the kick of Souto Red" icon_state = "souto_man" item_state = "souto_man" flags_inventory = CANTSTRIP|NOSLIPPING diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm index 1947f87c574a..d747525f3feb 100644 --- a/code/modules/projectiles/ammunition.dm +++ b/code/modules/projectiles/ammunition.dm @@ -116,14 +116,17 @@ They're all essentially identical when it comes to getting the job done. /obj/item/ammo_magazine/attackby(obj/item/I, mob/living/user, bypass_hold_check = 0) if(istype(I, /obj/item/ammo_magazine)) var/obj/item/ammo_magazine/MG = I - if(MG.flags_magazine & AMMUNITION_HANDFUL) //got a handful of bullets + if((MG.flags_magazine & AMMUNITION_HANDFUL) || (MG.flags_magazine & AMMUNITION_SLAP_TRANSFER)) //got a handful of bullets if(flags_magazine & AMMUNITION_REFILLABLE) //and a refillable magazine var/obj/item/ammo_magazine/handful/transfer_from = I if(src == user.get_inactive_hand() || bypass_hold_check) //It has to be held. if(default_ammo == transfer_from.default_ammo) - transfer_ammo(transfer_from,user,transfer_from.current_rounds) // This takes care of the rest. - else to_chat(user, "Those aren't the same rounds. Better not mix them up.") - else to_chat(user, "Try holding [src] before you attempt to restock it.") + if(transfer_ammo(transfer_from,user,transfer_from.current_rounds)) // This takes care of the rest. + to_chat(user, SPAN_NOTICE("You transfer rounds to [src] from [transfer_from].")) + else + to_chat(user, SPAN_NOTICE("Those aren't the same rounds. Better not mix them up.")) + else + to_chat(user, SPAN_NOTICE("Try holding [src] before you attempt to restock it.")) //Generic proc to transfer ammo between ammo mags. Can work for anything, mags, handfuls, etc. /obj/item/ammo_magazine/proc/transfer_ammo(obj/item/ammo_magazine/source, mob/user, transfer_amount = 1) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 832f243a9602..257edd9a7720 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -127,7 +127,7 @@ ///How many full-auto shots to get to max scatter? var/fa_scatter_peak = 4 ///How bad does the scatter get on full auto? - var/fa_max_scatter = 8.5 + var/fa_max_scatter = 6.5 ///Click parameters to use when firing full-auto var/fa_params = null @@ -228,6 +228,8 @@ VAR_PROTECTED/start_semiauto = TRUE /// If this gun should spawn with automatic fire. Protected due to it never needing to be edited. VAR_PROTECTED/start_automatic = FALSE + /// The multiplier for how much slower this should fire in automatic mode. 1 is normal, 1.2 is 20% slower, 2 is 100% slower, etc. Protected due to it never needing to be edited. + VAR_PROTECTED/autofire_slow_mult = 1 /** @@ -274,7 +276,7 @@ AddElement(/datum/element/drop_retrieval/gun, auto_retrieval_slot) update_icon() //for things like magazine overlays gun_firemode = gun_firemode_list[1] || GUN_FIREMODE_SEMIAUTO - AddComponent(/datum/component/automatedfire/autofire, fire_delay, burst_delay, burst_amount, gun_firemode, CALLBACK(src, PROC_REF(set_bursting)), CALLBACK(src, PROC_REF(reset_fire)), CALLBACK(src, PROC_REF(fire_wrapper)), CALLBACK(src, PROC_REF(display_ammo)), CALLBACK(src, PROC_REF(set_auto_firing))) //This should go after handle_starting_attachment() and setup_firemodes() to get the proper values set. + AddComponent(/datum/component/automatedfire/autofire, fire_delay, burst_delay, burst_amount, gun_firemode, autofire_slow_mult, CALLBACK(src, PROC_REF(set_bursting)), CALLBACK(src, PROC_REF(reset_fire)), CALLBACK(src, PROC_REF(fire_wrapper)), CALLBACK(src, PROC_REF(display_ammo)), CALLBACK(src, PROC_REF(set_auto_firing))) //This should go after handle_starting_attachment() and setup_firemodes() to get the proper values set. /obj/item/weapon/gun/proc/set_gun_attachment_offsets() attachable_offset = null @@ -425,6 +427,10 @@ else if(M.r_hand == src) M.update_inv_r_hand() + setup_firemodes() + + SEND_SIGNAL(src, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) + /obj/item/weapon/gun/proc/handle_random_attachments() var/attachmentchoice @@ -939,6 +945,10 @@ and you're good to go. //Let's check on the active attachable. It loads ammo on the go, so it never chambers anything if(active_attachable) + if(shots_fired >= 1) // This is what you'll want to remove if you want automatic underbarrel guns in the future + SEND_SIGNAL(src, COMSIG_GUN_INTERRUPT_FIRE) + return + if(active_attachable.current_rounds > 0) //If it's still got ammo and stuff. active_attachable.current_rounds-- var/obj/item/projectile/bullet = create_bullet(active_attachable.ammo, initial(name)) @@ -1073,10 +1083,10 @@ and you're good to go. This is where the grenade launcher and flame thrower function as attachments. This is also a general check to see if the attachment can fire in the first place. */ - var/check_for_attachment_fire = 0 + var/check_for_attachment_fire = FALSE if(active_attachable?.flags_attach_features & ATTACH_WEAPON) //Attachment activated and is a weapon. - check_for_attachment_fire = 1 + check_for_attachment_fire = TRUE if(!(active_attachable.flags_attach_features & ATTACH_PROJECTILE)) //If it's unique projectile, this is where we fire it. if((active_attachable.current_rounds <= 0) && !(active_attachable.flags_attach_features & ATTACH_IGNORE_EMPTY)) click_empty(user) //If it's empty, let them know. @@ -1202,8 +1212,7 @@ and you're good to go. shots_fired++ - else // This happens in very rare circumstances when you're moving a lot while burst firing, so I'm going to toss it up to guns jamming. - clear_jam(projectile_to_fire,user) + else return TRUE //>>POST PROCESSING AND CLEANUP BEGIN HERE.<< @@ -1892,7 +1901,7 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed if(!target) target = src.target if(!user) - user = src.gun_user + user = gun_user return Fire(target, user, params, reflex, dual_wield) /// Setter proc for fa_firing diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 7d2dbf5288be..eb0e53986f9d 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -852,6 +852,28 @@ Defined in conflicts.dm of the #defines folder. delay_scoped_nerf = FIRE_DELAY_TIER_11 //to compensate initial debuff. We want "high_fire_delay" damage_falloff_scoped_buff = -0.4 //has to be negative +/obj/item/attachable/scope/Attach(obj/item/weapon/gun/gun) + . = ..() + RegisterSignal(gun, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES, PROC_REF(handle_attachment_recalc)) + +/obj/item/attachable/scope/Detach(mob/user, obj/item/weapon/gun/detaching_gub) + . = ..() + UnregisterSignal(detaching_gub, COMSIG_GUN_RECALCULATE_ATTACHMENT_BONUSES) + + +/// Due to the bipod's interesting way of handling stat modifications, this is necessary to prevent exploits. +/obj/item/attachable/scope/proc/handle_attachment_recalc(obj/item/weapon/gun/source) + SIGNAL_HANDLER + + if(!source.zoom) + return + + if(using_scope) + source.accuracy_mult += accuracy_scoped_buff + source.modify_fire_delay(delay_scoped_nerf) + source.damage_falloff_mult += damage_falloff_scoped_buff + + /obj/item/attachable/scope/proc/apply_scoped_buff(obj/item/weapon/gun/G, mob/living/carbon/user) if(G.zoom) G.accuracy_mult += accuracy_scoped_buff @@ -1976,6 +1998,8 @@ Defined in conflicts.dm of the #defines folder. G.damage_mult = 1 icon_state += "-on" + SEND_SIGNAL(G, COMSIG_GUN_INTERRUPT_FIRE) + for(var/X in G.actions) var/datum/action/A = X A.update_button_icon() @@ -2646,13 +2670,14 @@ Defined in conflicts.dm of the #defines folder. burst_scatter_mod = 0 delay_mod = FIRE_DELAY_TIER_12 G.recalculate_attachment_bonuses() + G.stop_fire() var/mob/living/user if(isliving(G.loc)) user = G.loc UnregisterSignal(user, COMSIG_MOB_MOVE_OR_LOOK) if(G.flags_gun_features & GUN_SUPPORT_PLATFORM) - G.remove_bullet_trait("iff") + G.remove_firemode(GUN_FIREMODE_AUTOMATIC) if(!QDELETED(G)) playsound(user,'sound/items/m56dauto_rotate.ogg', 55, 1) @@ -2683,12 +2708,13 @@ Defined in conflicts.dm of the #defines folder. else delay_mod = -FIRE_DELAY_TIER_12 G.recalculate_attachment_bonuses() + G.stop_fire() initial_mob_dir = user.dir RegisterSignal(user, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(handle_mob_move_or_look)) if(G.flags_gun_features & GUN_SUPPORT_PLATFORM) - G.add_bullet_trait(BULLET_TRAIT_ENTRY_ID("iff", /datum/element/bullet_trait_iff)) + G.add_firemode(GUN_FIREMODE_AUTOMATIC) else to_chat(user, SPAN_NOTICE("You retract [src].")) diff --git a/code/modules/projectiles/gun_helpers.dm b/code/modules/projectiles/gun_helpers.dm index a60773c88be7..e86801c9d8c1 100644 --- a/code/modules/projectiles/gun_helpers.dm +++ b/code/modules/projectiles/gun_helpers.dm @@ -700,6 +700,9 @@ DEFINES in setup.dm, referenced here. CRASH("add_firemode called with a resulting gun_firemode_list length of [length(gun_firemode_list)].") /obj/item/weapon/gun/proc/remove_firemode(removed_firemode, mob/user) + if(!(removed_firemode in gun_firemode_list)) + return + if(!length(gun_firemode_list) || (length(gun_firemode_list) == 1)) CRASH("remove_firemode called with gun_firemode_list length [length(gun_firemode_list)].") @@ -710,7 +713,9 @@ DEFINES in setup.dm, referenced here. do_toggle_firemode(user, gun_firemode) /obj/item/weapon/gun/proc/setup_firemodes() + var/old_firemode = gun_firemode gun_firemode_list.len = 0 + if(start_semiauto) gun_firemode_list |= GUN_FIREMODE_SEMIAUTO @@ -722,6 +727,10 @@ DEFINES in setup.dm, referenced here. if(!length(gun_firemode_list)) CRASH("[src] called setup_firemodes() with an empty gun_firemode_list") + + else if(old_firemode in gun_firemode_list) + gun_firemode = old_firemode + else gun_firemode = gun_firemode_list[1] diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 61ea0442a427..5733b01195ff 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -181,6 +181,7 @@ fire_sound = 'sound/weapons/Laser4.ogg' has_charge_meter = FALSE charge_icon = "+laz_uzi_empty" + start_automatic = TRUE /obj/item/weapon/gun/energy/laz_uzi/set_gun_config_values() ..() @@ -194,6 +195,7 @@ scatter_unwielded = SCATTER_AMOUNT_TIER_6 damage_mult = BASE_BULLET_DAMAGE_MULT recoil_unwielded = RECOIL_AMOUNT_TIER_5 + fa_scatter_peak = SCATTER_AMOUNT_TIER_8 //############################ Taser ################## // Lots of bits for it so splitting off an area diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index a108b3a9948f..ee08fee0f845 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -370,7 +370,7 @@ /obj/item/weapon/gun/flamer/M240T/auto/set_gun_config_values() . = ..() - set_fire_delay(FIRE_DELAY_TIER_3) + set_fire_delay(FIRE_DELAY_TIER_7) GLOBAL_LIST_EMPTY(flamer_particles) /particles/flamer_fire diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 18ffb082217c..38649ff73ca1 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -75,6 +75,7 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER starting_attachment_types = list(/obj/item/attachable/attached_gun/grenade, /obj/item/attachable/stock/rifle/collapsible) map_specific_decoration = TRUE + start_automatic = TRUE /obj/item/weapon/gun/rifle/m41a/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 12, "rail_y" = 23, "under_x" = 24, "under_y" = 13, "stock_x" = 24, "stock_y" = 13) @@ -88,7 +89,6 @@ accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + 2*HIT_ACCURACY_MULT_TIER_1 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_7 scatter = SCATTER_AMOUNT_TIER_8 - //fa_scatter_peak = FULL_AUTO_SCATTER_PEAK_TIER_8 //Zonenote burst_scatter_mult = SCATTER_AMOUNT_TIER_10 scatter_unwielded = SCATTER_AMOUNT_TIER_2 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 @@ -150,6 +150,7 @@ /obj/item/attachable/attached_gun/flamer/advanced, ) start_semiauto = FALSE + start_automatic = TRUE /obj/item/weapon/gun/rifle/nsg23/Initialize(mapload, spawn_empty) . = ..() @@ -171,6 +172,7 @@ damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_8 recoil_unwielded = RECOIL_AMOUNT_TIER_2 damage_falloff_mult = 0 + fa_max_scatter = SCATTER_AMOUNT_TIER_5 /obj/item/weapon/gun/rifle/nsg23/handle_starting_attachment() ..() @@ -383,6 +385,7 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER starting_attachment_types = list(/obj/item/attachable/attached_gun/grenade/mk1, /obj/item/attachable/stock/rifle/collapsible) + start_automatic = TRUE /obj/item/weapon/gun/rifle/m41aMK1/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 12, "rail_y" = 23, "under_x" = 23, "under_y" = 13, "stock_x" = 24, "stock_y" = 14) @@ -528,6 +531,7 @@ scatter_unwielded = SCATTER_AMOUNT_TIER_2 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_3 recoil_unwielded = RECOIL_AMOUNT_TIER_2 + fa_max_scatter = SCATTER_AMOUNT_TIER_7 /obj/item/weapon/gun/rifle/m46c/able_to_fire(mob/user) . = ..() @@ -633,9 +637,11 @@ if(iff_enabled) modify_fire_delay(FIRE_DELAY_TIER_12) remove_firemode(GUN_FIREMODE_BURSTFIRE) + remove_firemode(GUN_FIREMODE_AUTOMATIC) else add_firemode(GUN_FIREMODE_BURSTFIRE) + add_firemode(GUN_FIREMODE_AUTOMATIC) /obj/item/weapon/gun/rifle/m46c/proc/name_after_co(mob/living/carbon/human/H) @@ -719,6 +725,7 @@ ) flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK + start_automatic = TRUE @@ -1232,7 +1239,7 @@ /obj/item/attachable/magnetic_harness, ) - flags_gun_features = GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_WIELDED_FIRING_ONLY + flags_gun_features = GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER|GUN_WIELDED_FIRING_ONLY|GUN_SUPPORT_PLATFORM gun_category = GUN_CATEGORY_HEAVY /obj/item/weapon/gun/rifle/lmg/set_gun_attachment_offsets() @@ -1297,6 +1304,7 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER flags_equip_slot = SLOT_BACK + start_automatic = TRUE /obj/item/weapon/gun/rifle/type71/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 18,"rail_x" = 18, "rail_y" = 23, "under_x" = 20, "under_y" = 13, "stock_x" = 24, "stock_y" = 13) diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm index a154062c9d10..3c366df40b57 100644 --- a/code/modules/projectiles/guns/shotguns.dm +++ b/code/modules/projectiles/guns/shotguns.dm @@ -1186,7 +1186,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube name = "generic dual-tube pump shotgun" - desc = "A twenty-round pump action shotgun with dual internal tube magazines. You can switch the active internal magazine by toggling burst fire mode." + desc = "A twenty-round pump action shotgun with dual internal tube magazines. You can switch the active internal magazine by toggling the shotgun tube." current_mag = /obj/item/ammo_magazine/internal/shotgun var/obj/item/ammo_magazine/internal/shotgun/primary_tube var/obj/item/ammo_magazine/internal/shotgun/secondary_tube @@ -1220,7 +1220,12 @@ can cause issues with ammo types getting mixed up during the burst. playsound(src, 'sound/machines/switch.ogg', 15, TRUE) return TRUE -/obj/item/weapon/gun/shotgun/pump/dual_tube/set_bursting() +/obj/item/weapon/gun/shotgun/pump/dual_tube/verb/toggle_tube() + set category = "Weapons" + set name = "Toggle Shotgun Tube" + set desc = "Toggles which shotgun tube your gun loads from." + set src = usr.contents + var/obj/item/weapon/gun/shotgun/pump/dual_tube/shotgun = get_active_firearm(usr) if(shotgun == src) swap_tube(usr) @@ -1229,7 +1234,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb name = "\improper HG 37-12 pump shotgun" - desc = "A eight-round pump action shotgun with four-round capacity dual internal tube magazines allowing for quick reloading and highly accurate fire. Used exclusively by Colonial Marshals. You can switch the active internal magazine by toggling burst fire mode." + desc = "A eight-round pump action shotgun with four-round capacity dual internal tube magazines allowing for quick reloading and highly accurate fire. Used exclusively by Colonial Marshals. You can switch the active internal magazine by toggling the shotgun tube." icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' icon_state = "hg3712" item_state = "hg3712" @@ -1269,7 +1274,7 @@ can cause issues with ammo types getting mixed up during the burst. /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb/m3717 name = "\improper M37-17 pump shotgun" - desc = "A military version of the iconic HG 37-12, this design can fit one extra shell in each of its dual-tube internal magazines, and fires shells with increased velocity, resulting in more damage. Issued to select USCM vessels out on the rim. You can switch the active internal magazine by toggling burst fire mode." + desc = "A military version of the iconic HG 37-12, this design can fit one extra shell in each of its dual-tube internal magazines, and fires shells with increased velocity, resulting in more damage. Issued to select USCM vessels out on the rim. You can switch the active internal magazine by toggling the shotgun tube." icon = 'icons/obj/items/weapons/guns/guns_by_faction/uscm.dmi' icon_state = "m3717" item_state = "m3717" diff --git a/code/modules/projectiles/guns/smgs.dm b/code/modules/projectiles/guns/smgs.dm index 70b0acb3f2c8..b9c2b9c3514d 100644 --- a/code/modules/projectiles/guns/smgs.dm +++ b/code/modules/projectiles/guns/smgs.dm @@ -20,6 +20,7 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK gun_category = GUN_CATEGORY_SMG + start_automatic = TRUE /obj/item/weapon/gun/smg/Initialize(mapload, spawn_empty) . = ..() @@ -32,6 +33,7 @@ /obj/item/weapon/gun/smg/set_gun_config_values() ..() movement_onehanded_acc_penalty_mult = 4 + fa_max_scatter = SCATTER_AMOUNT_TIER_5 //------------------------------------------------------- //M39 SMG @@ -85,6 +87,7 @@ scatter_unwielded = SCATTER_AMOUNT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT recoil_unwielded = RECOIL_AMOUNT_TIER_5 + fa_max_scatter = SCATTER_AMOUNT_TIER_10 + 0.5 /obj/item/weapon/gun/smg/m39/training @@ -270,6 +273,8 @@ scatter_unwielded = SCATTER_AMOUNT_TIER_4 damage_mult = BASE_BULLET_DAMAGE_MULT recoil_unwielded = RECOIL_AMOUNT_TIER_5 + fa_max_scatter = SCATTER_AMOUNT_TIER_9 + fa_scatter_peak = 1 // Seems a bit funny, but it works pretty well in the end /obj/item/weapon/gun/smg/ppsh/with_drum_mag current_mag = /obj/item/ammo_magazine/smg/ppsh/extended @@ -361,7 +366,6 @@ ) wield_delay = WIELD_DELAY_NONE aim_slowdown = SLOWDOWN_ADS_NONE - start_automatic = TRUE /obj/item/weapon/gun/smg/mac15/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 20,"rail_x" = 16, "rail_y" = 22, "under_x" = 22, "under_y" = 16, "stock_x" = 22, "stock_y" = 16) @@ -410,7 +414,6 @@ ) wield_delay = WIELD_DELAY_MIN aim_slowdown = SLOWDOWN_ADS_QUICK - start_automatic = TRUE var/jammed = FALSE /obj/item/weapon/gun/smg/uzi/set_gun_attachment_offsets() @@ -567,6 +570,7 @@ flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK gun_category = GUN_CATEGORY_SMG civilian_usable_override = TRUE + start_automatic = FALSE var/nailing_speed = 2 SECONDS //Time to apply a sheet for patching. Also haha name. Try to keep sync with soundbyte duration var/repair_sound = 'sound/weapons/nailgun_repair_long.ogg' diff --git a/code/modules/projectiles/guns/souto.dm b/code/modules/projectiles/guns/souto.dm index 8d7a1b2550a4..6f45f57e1d61 100644 --- a/code/modules/projectiles/guns/souto.dm +++ b/code/modules/projectiles/guns/souto.dm @@ -14,6 +14,8 @@ var/obj/item/storage/backpack/souto/soutopack current_mag = null auto_retrieval_slot = WEAR_IN_BACK + start_automatic = TRUE + autofire_slow_mult = 0.8 //Fires FASTER when in Full Auto, that is the power of Souta /obj/item/weapon/gun/souto/set_gun_config_values() . = ..() diff --git a/code/modules/projectiles/guns/specialist.dm b/code/modules/projectiles/guns/specialist.dm index 7152106869a9..a73335971ffa 100644 --- a/code/modules/projectiles/guns/specialist.dm +++ b/code/modules/projectiles/guns/specialist.dm @@ -267,11 +267,15 @@ if(toggling_action) toggling_action.update_button_icon() -/obj/item/weapon/gun/rifle/sniper/set_bursting(mob/user) - if(has_aimed_shot) - toggle_laser(user) - else - ..() +/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 diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm index ca008c2d1376..57bcd7f0a563 100644 --- a/code/modules/projectiles/magazines/rifles.dm +++ b/code/modules/projectiles/magazines/rifles.dm @@ -263,7 +263,7 @@ icon_state = "m41ae2" max_rounds = 300 gun_type = /obj/item/weapon/gun/rifle/lmg - flags_magazine = AMMUNITION_CANNOT_REMOVE_BULLETS|AMMUNITION_REFILLABLE + flags_magazine = AMMUNITION_CANNOT_REMOVE_BULLETS|AMMUNITION_REFILLABLE|AMMUNITION_SLAP_TRANSFER ammo_band_icon = "+m41ae2_band" ammo_band_icon_empty = "+m41ae2_band_e" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index e4251f5f6b31..eccba14a442a 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -110,7 +110,7 @@ /obj/item/projectile/Crossed(atom/movable/AM) /* Fun fact: Crossed is called for any contents involving operations. * This notably means, inserting a magazing in a gun Crossed() it with the bullets in the gun. */ - if(!loc.z) + if(!loc?.z) return // Not on the map. Don't scan a turf. Don't shoot the poor guy reloading his gun. if(AM && !(AM in permutated)) if(scan_a_turf(get_turf(AM))) @@ -1143,11 +1143,16 @@ // Need to do this in order to prevent the ping from being deleted addtimer(CALLBACK(I, TYPE_PROC_REF(/image, flick_overlay), src, 3), 1) +/// People getting shot by a large amount of bullets in a very short period of time can lag them out, with chat messages being one cause, so a 1s cooldown per hit message is introduced to assuage that +/mob/var/shot_cooldown = 0 + /mob/proc/bullet_message(obj/item/projectile/P) if(!P) return - visible_message(SPAN_DANGER("[src] is hit by the [P.name] in the [parse_zone(P.def_zone)]!"), \ - SPAN_HIGHDANGER("You are hit by the [P.name] in the [parse_zone(P.def_zone)]!"), null, 4, CHAT_TYPE_TAKING_HIT) + if(COOLDOWN_FINISHED(src, shot_cooldown)) + visible_message(SPAN_DANGER("[src] is hit by the [P.name] in the [parse_zone(P.def_zone)]!"), \ + SPAN_HIGHDANGER("You are hit by the [P.name] in the [parse_zone(P.def_zone)]!"), null, 4, CHAT_TYPE_TAKING_HIT) + COOLDOWN_START(src, shot_cooldown, 1 SECONDS) last_damage_data = P.weapon_cause_data if(P.firer && ismob(P.firer)) From 0827f83a79aaec464a8a268318d3fe6e65d801e5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 23 Aug 2023 19:42:42 +0100 Subject: [PATCH 18/55] Automatic changelog for PR #4003 [ci skip] --- html/changelogs/AutoChangeLog-pr-4003.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4003.yml diff --git a/html/changelogs/AutoChangeLog-pr-4003.yml b/html/changelogs/AutoChangeLog-pr-4003.yml new file mode 100644 index 000000000000..3adbfb8f0eb0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4003.yml @@ -0,0 +1,11 @@ +author: "Zonespace27" +delete-after: True +changes: + - balance: "The M41A, M41Amk1, m39, m46c (iff off), mar-30/40/60, type 71, laser uzi, and every SMG now has automatic fire. To compensate for the ability to re-aim (unlike burst), the guns fire 20% slower while automatic. This does not apply to already-existing automatic weaponry." + - balance: "The HPR can now fire in full auto when bipodded." + - bugfix: "Adding/removing attachments now keeps the current firemode, if possible." + - bugfix: "The dualtube and spec sniper now can switch tubes/toggle laser again" + - bugfix: "Fixed a long-standing exploit with bipods and scopes." + - bugfix: "Fixed guns jamming when shooting UI elements." + - bugfix: "Fixed a bunch of guns unintentionally having burst." + - balance: "You can transfer ammo between HPR ammo boxes by hitting one with another." \ No newline at end of file From d260ac0b009df69eee7dac551599dd0e933e973b Mon Sep 17 00:00:00 2001 From: morrowwolf Date: Wed, 23 Aug 2023 15:51:23 -0400 Subject: [PATCH 19/55] Possible fix for binoc perma zoom (#4176) # About the pull request I have no consistent reproducibility for this but this may fix it? Seems to occur when an explosion blows up the binocs in the hand of the person while zoomed. # Explain why it's good for the game Bug bad # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Morrow fix: Possible fix for binoc perma zoom /:cl: --- code/game/objects/items.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index dd5e99545d11..a98a9c25d1aa 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -829,6 +829,7 @@ cases. Override_icon_state should be a list.*/ UnregisterSignal(src, list( COMSIG_ITEM_DROPPED, COMSIG_ITEM_UNWIELD, + COMSIG_PARENT_QDELETING, )) UnregisterSignal(user, COMSIG_MOB_MOVE_OR_LOOK) //General reset in case anything goes wrong, the view will always reset to default unless zooming in. @@ -861,6 +862,7 @@ cases. Override_icon_state should be a list.*/ RegisterSignal(src, list( COMSIG_ITEM_DROPPED, COMSIG_ITEM_UNWIELD, + COMSIG_PARENT_QDELETING, ), PROC_REF(unzoom_dropped_callback)) RegisterSignal(user, COMSIG_MOB_MOVE_OR_LOOK, PROC_REF(zoom_handle_mob_move_or_look)) From f10806d4b8393ed4d5f303e2a227629175aa8cb9 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 23 Aug 2023 20:59:22 +0100 Subject: [PATCH 20/55] Automatic changelog for PR #4176 [ci skip] --- html/changelogs/AutoChangeLog-pr-4176.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4176.yml diff --git a/html/changelogs/AutoChangeLog-pr-4176.yml b/html/changelogs/AutoChangeLog-pr-4176.yml new file mode 100644 index 000000000000..80308102ce82 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4176.yml @@ -0,0 +1,4 @@ +author: "Morrow" +delete-after: True +changes: + - bugfix: "Possible fix for binoc perma zoom" \ No newline at end of file From c8acbd402c99a737364f14839942f2707747238d Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Wed, 23 Aug 2023 20:51:47 +0100 Subject: [PATCH 21/55] ASO/QM Database access (#4230) # About the pull request Takes database access from the QM and gives it to the ASO. (Ability to modify IDs) # Explain why it's good for the game Oversight that ASO can't modify IDs. Removing from QM as due to place in command inheritance they shouldn't keep it as those above don't have it. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Gave the ASO ability to modify IDs. del: Removed this from the QM. /:cl: --- code/modules/gear_presets/uscm_ship.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index 578114222c01..f3129acb23d2 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -320,7 +320,6 @@ ACCESS_MARINE_CARGO, ACCESS_MARINE_RO, ACCESS_MARINE_COMMAND, - ACCESS_MARINE_DATABASE, ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, @@ -637,6 +636,7 @@ . = ..() access = list( ACCESS_MARINE_SENIOR, + ACCESS_MARINE_DATABASE, ACCESS_MARINE_ASO, ACCESS_MARINE_COMMAND, ACCESS_MARINE_BRIG, From 54e37b4cd2bcde8bc66a091bcb1059cb21c2c11b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 23 Aug 2023 21:13:50 +0100 Subject: [PATCH 22/55] Automatic changelog for PR #4230 [ci skip] --- html/changelogs/AutoChangeLog-pr-4230.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4230.yml diff --git a/html/changelogs/AutoChangeLog-pr-4230.yml b/html/changelogs/AutoChangeLog-pr-4230.yml new file mode 100644 index 000000000000..19a217900892 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4230.yml @@ -0,0 +1,5 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Gave the ASO ability to modify IDs." + - rscdel: "Removed this from the QM." \ No newline at end of file From 2b6f5fefbaa429b751e29461881bbaa02c350e9b Mon Sep 17 00:00:00 2001 From: morrowwolf Date: Wed, 23 Aug 2023 16:46:46 -0400 Subject: [PATCH 23/55] M4RA damage buff (#4233) # About the pull request Yup. It's a damage buff. Damage multiplier up 10% # Explain why it's good for the game The firerate slowdown has hit the M4RA particularly hard. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Morrow balance: M4RA damage buffed by 10% /:cl: --- code/modules/projectiles/guns/rifles.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 38649ff73ca1..70c1709e9e67 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -1542,7 +1542,7 @@ set_burst_amount(0) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_4 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_8 recoil_unwielded = RECOIL_AMOUNT_TIER_4 damage_falloff_mult = 0 scatter = SCATTER_AMOUNT_TIER_8 From 14815f9c261b6a376166033fa3a2790d1d4499aa Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 23 Aug 2023 21:55:33 +0100 Subject: [PATCH 24/55] Automatic changelog for PR #4233 [ci skip] --- html/changelogs/AutoChangeLog-pr-4233.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4233.yml diff --git a/html/changelogs/AutoChangeLog-pr-4233.yml b/html/changelogs/AutoChangeLog-pr-4233.yml new file mode 100644 index 000000000000..1429fe2cbdc4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4233.yml @@ -0,0 +1,4 @@ +author: "Morrow" +delete-after: True +changes: + - balance: "M4RA damage buffed by 10%" \ No newline at end of file From c8cb363b381ac6eed98b1409165b2f6ce842ac82 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 24 Aug 2023 01:04:41 +0000 Subject: [PATCH 25/55] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4003.yml | 11 ----------- html/changelogs/AutoChangeLog-pr-4176.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4230.yml | 5 ----- html/changelogs/AutoChangeLog-pr-4233.yml | 4 ---- html/changelogs/archive/2023-08.yml | 19 +++++++++++++++++++ 5 files changed, 19 insertions(+), 24 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4003.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4176.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4230.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4233.yml diff --git a/html/changelogs/AutoChangeLog-pr-4003.yml b/html/changelogs/AutoChangeLog-pr-4003.yml deleted file mode 100644 index 3adbfb8f0eb0..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4003.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: "Zonespace27" -delete-after: True -changes: - - balance: "The M41A, M41Amk1, m39, m46c (iff off), mar-30/40/60, type 71, laser uzi, and every SMG now has automatic fire. To compensate for the ability to re-aim (unlike burst), the guns fire 20% slower while automatic. This does not apply to already-existing automatic weaponry." - - balance: "The HPR can now fire in full auto when bipodded." - - bugfix: "Adding/removing attachments now keeps the current firemode, if possible." - - bugfix: "The dualtube and spec sniper now can switch tubes/toggle laser again" - - bugfix: "Fixed a long-standing exploit with bipods and scopes." - - bugfix: "Fixed guns jamming when shooting UI elements." - - bugfix: "Fixed a bunch of guns unintentionally having burst." - - balance: "You can transfer ammo between HPR ammo boxes by hitting one with another." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4176.yml b/html/changelogs/AutoChangeLog-pr-4176.yml deleted file mode 100644 index 80308102ce82..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4176.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Possible fix for binoc perma zoom" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4230.yml b/html/changelogs/AutoChangeLog-pr-4230.yml deleted file mode 100644 index 19a217900892..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4230.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Gave the ASO ability to modify IDs." - - rscdel: "Removed this from the QM." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4233.yml b/html/changelogs/AutoChangeLog-pr-4233.yml deleted file mode 100644 index 1429fe2cbdc4..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4233.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - balance: "M4RA damage buffed by 10%" \ No newline at end of file diff --git a/html/changelogs/archive/2023-08.yml b/html/changelogs/archive/2023-08.yml index 03bfd03efef5..92158fdf3668 100644 --- a/html/changelogs/archive/2023-08.yml +++ b/html/changelogs/archive/2023-08.yml @@ -320,3 +320,22 @@ doors. - maptweak: Changed a couple walls around research from standard to reinforced, to fit with the containment breach shutters. +2023-08-24: + Morrow: + - bugfix: Possible fix for binoc perma zoom + - balance: M4RA damage buffed by 10% + Zonespace27: + - balance: The M41A, M41Amk1, m39, m46c (iff off), mar-30/40/60, type 71, laser + uzi, and every SMG now has automatic fire. To compensate for the ability to + re-aim (unlike burst), the guns fire 20% slower while automatic. This does not + apply to already-existing automatic weaponry. + - balance: The HPR can now fire in full auto when bipodded. + - bugfix: Adding/removing attachments now keeps the current firemode, if possible. + - bugfix: The dualtube and spec sniper now can switch tubes/toggle laser again + - bugfix: Fixed a long-standing exploit with bipods and scopes. + - bugfix: Fixed guns jamming when shooting UI elements. + - bugfix: Fixed a bunch of guns unintentionally having burst. + - balance: You can transfer ammo between HPR ammo boxes by hitting one with another. + realforest2001: + - rscadd: Gave the ASO ability to modify IDs. + - rscdel: Removed this from the QM. From fe1cd9a5faab8e82e284c2d896e3b37a71001a55 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Thu, 24 Aug 2023 10:12:02 +0100 Subject: [PATCH 26/55] Research Biohazard Lockdown (#4067) # About the pull request Adds a unique lockdown system for research biohazards. # Explain why it's good for the game Adds some nice flavour to research. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Added a new lockdown system to research. add: Added an admin button to interact with above. /:cl: --------- Co-authored-by: harryob --- code/__DEFINES/dcs/signals/signals_global.dm | 4 + code/game/machinery/biohazard_lockdown.dm | 109 ++++++++ code/modules/admin/admin_verbs.dm | 3 +- code/modules/admin/verbs/adminpanelgq.dm | 36 +-- colonialmarines.dme | 1 + .../structures/doors/blastdoors_shutters.dmi | Bin 6216 -> 7754 bytes maps/map_files/USS_Almayer/USS_Almayer.dmm | 242 ++++++------------ sound/effects/biohazard.ogg | Bin 0 -> 86483 bytes 8 files changed, 216 insertions(+), 179 deletions(-) create mode 100644 code/game/machinery/biohazard_lockdown.dm create mode 100644 sound/effects/biohazard.ogg diff --git a/code/__DEFINES/dcs/signals/signals_global.dm b/code/__DEFINES/dcs/signals/signals_global.dm index a288ac2c8be7..e33a75aee132 100644 --- a/code/__DEFINES/dcs/signals/signals_global.dm +++ b/code/__DEFINES/dcs/signals/signals_global.dm @@ -59,3 +59,7 @@ /// From #define COMSIG_GLOB_YAUTJA_ARMORY_OPENED "yautja_armory_opened" + +/// From /proc/biohazard_lockdown() +#define COMSIG_GLOB_RESEARCH_LOCKDOWN "research_lockdown_closed" +#define COMSIG_GLOB_RESEARCH_LIFT "research_lockdown_opened" diff --git a/code/game/machinery/biohazard_lockdown.dm b/code/game/machinery/biohazard_lockdown.dm new file mode 100644 index 000000000000..fd6205baa1d9 --- /dev/null +++ b/code/game/machinery/biohazard_lockdown.dm @@ -0,0 +1,109 @@ +#define LOCKDOWN_READY 0 +#define LOCKDOWN_ACTIVE 1 +GLOBAL_VAR_INIT(lockdown_state, LOCKDOWN_READY) + +/obj/structure/machinery/biohazard_lockdown + name = "Emergency Containment Breach" + icon_state = "big_red_button_tablev" + unslashable = TRUE + unacidable = TRUE + COOLDOWN_DECLARE(containment_lockdown) + +/obj/structure/machinery/biohazard_lockdown/ex_act(severity) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attack_remote(mob/user as mob) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attack_alien(mob/user as mob) + return FALSE + +/obj/structure/machinery/biohazard_lockdown/attackby(obj/item/attacking_item, mob/user) + return attack_hand(user) + +/obj/structure/machinery/biohazard_lockdown/attack_hand(mob/living/user) + if(isxeno(user)) + return FALSE + if(!allowed(user)) + to_chat(user, SPAN_DANGER("Access Denied")) + flick(initial(icon_state) + "-denied", src) + return FALSE + + if(!COOLDOWN_FINISHED(src, containment_lockdown)) + to_chat(user, SPAN_BOLDWARNING("Biohazard Lockdown procedures are on cooldown! They will be ready in [COOLDOWN_SECONDSLEFT(src, containment_lockdown)] seconds!")) + return FALSE + + add_fingerprint(user) + biohazard_lockdown(user) + COOLDOWN_START(src, containment_lockdown, 5 MINUTES) + +/obj/structure/machinery/door/poddoor/almayer/biohazard + name = "Biohazard Containment Airlock" + density = FALSE + +/obj/structure/machinery/door/poddoor/almayer/biohazard/Initialize() + . = ..() + RegisterSignal(SSdcs, COMSIG_GLOB_RESEARCH_LOCKDOWN, PROC_REF(close)) + RegisterSignal(SSdcs, COMSIG_GLOB_RESEARCH_LIFT, PROC_REF(open)) + +/obj/structure/machinery/door/poddoor/almayer/biohazard/white + icon_state = "w_almayer_pdoor1" + base_icon_state = "w_almayer_pdoor" + +/client/proc/admin_biohazard_alert() + set name = "Containment Breach Alert" + set category = "Admin.Ship" + + if(!admin_holder ||!check_rights(R_EVENT)) + return FALSE + + var/prompt = tgui_alert(src, "Are you sure you want to trigger a containment breach alert? This will force red alert, and lockdown research.", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt != "Yes") + return FALSE + + prompt = tgui_alert(src, "Do you want to use a custom announcement?", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt == "Yes") + var/whattoannounce = tgui_input_text(src, "Please enter announcement text.", "what?") + biohazard_lockdown(usr, whattoannounce, TRUE) + else + biohazard_lockdown(usr, admin = TRUE) + return TRUE + +/proc/biohazard_lockdown(mob/user, message, admin = FALSE) + if(IsAdminAdvancedProcCall()) + return PROC_BLOCKED + + var/log = "[key_name(user)] triggered research bio lockdown!" + var/ares_log = "[user.name] triggered Medical Research Biohazard Containment Lockdown." + if(!message) + message = "ATTENTION! \n\nBIOHAZARD CONTAINMENT BREACH. \n\nRESEARCH DEPARTMENT UNDER LOCKDOWN." + else + log = "[key_name(user)] triggered research bio lockdown! (Using a custom announcement)." + if(admin) + log += " (Admin Triggered)." + ares_log = "[MAIN_AI_SYSTEM] triggered Medical Research Biohazard Containment Lockdown." + + switch(GLOB.lockdown_state) + if(LOCKDOWN_READY) + GLOB.lockdown_state = LOCKDOWN_ACTIVE + set_security_level(SEC_LEVEL_RED, TRUE, FALSE) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LOCKDOWN) + if(LOCKDOWN_ACTIVE) + GLOB.lockdown_state = LOCKDOWN_READY + message = "ATTENTION! \n\nBIOHAZARD CONTAINMENT LOCKDOWN LIFTED." + log = "[key_name(user)] lifted research bio lockdown!" + ares_log = "[user.name] lifted Medical Research Biohazard Containment Lockdown." + if(admin) + log += " (Admin Triggered)." + ares_log = "[MAIN_AI_SYSTEM] lifted Medical Research Biohazard Containment Lockdown." + + set_security_level(SEC_LEVEL_BLUE, TRUE, FALSE) + SEND_GLOBAL_SIGNAL(COMSIG_GLOB_RESEARCH_LIFT) + + shipwide_ai_announcement(message, MAIN_AI_SYSTEM, 'sound/effects/biohazard.ogg') + message_admins(log) + var/datum/ares_link/link = GLOB.ares_link + link.log_ares_security("Containment Lockdown", ares_log) + +#undef LOCKDOWN_READY +#undef LOCKDOWN_ACTIVE diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 368e2766ccfc..5e527e6a5442 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -133,7 +133,8 @@ var/list/admin_verbs_minor_event = list( /client/proc/toggle_shipside_sd, /client/proc/shakeshipverb, /client/proc/adminpanelweapons, - /client/proc/adminpanelgq, + /client/proc/admin_general_quarters, + /client/proc/admin_biohazard_alert, /client/proc/toggle_hardcore_perma ) diff --git a/code/modules/admin/verbs/adminpanelgq.dm b/code/modules/admin/verbs/adminpanelgq.dm index 13b6e329aa69..8ef1ed869661 100644 --- a/code/modules/admin/verbs/adminpanelgq.dm +++ b/code/modules/admin/verbs/adminpanelgq.dm @@ -1,22 +1,24 @@ -/client/proc/adminpanelgq() +/client/proc/admin_general_quarters() set name = "Call General Quarters" set category = "Admin.Ship" if(security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) tgui_alert(src, "Security is already red or above, General Quarters cannot be called.", "Acknowledge!", list("ok."), 10 SECONDS) - else - var/whattoannounce = "ATTENTION! GENERAL QUARTERS. ALL HANDS, MAN YOUR BATTLESTATIONS." - var/prompt = tgui_alert(src, "Do you want to leave the announcement as the default one?", "Choose.", list("Yes", "No"), 20 SECONDS) - if(prompt == "No") - whattoannounce = tgui_input_text(src, "Please enter announcement text.", "what?") - prompt = tgui_alert(src, "Are you sure you want to send General Quarters? This will force red alert.", "Choose.", list("Yes", "No"), 20 SECONDS) - if(prompt == "Yes") - set_security_level(2, no_sound=1, announce=0) - shipwide_ai_announcement(whattoannounce, MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg') - message_admins("[key_name_admin(src)] Sent General Quarters with a custom announcement!") - else - prompt = tgui_alert(src, "Are you sure you want to send General Quarters? This will force red alert.", "Choose.", list("Yes", "No"), 20 SECONDS) - if(prompt == "Yes") - set_security_level(2, no_sound=1, announce=0) - shipwide_ai_announcement(whattoannounce, MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg') - message_admins("[key_name_admin(src)] Sent General Quarters!") + return FALSE + + var/prompt = tgui_alert(src, "Are you sure you want to send General Quarters? This will force red alert.", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt != "Yes") + return FALSE + + var/whattoannounce = "ATTENTION! GENERAL QUARTERS. ALL HANDS, MAN YOUR BATTLESTATIONS." + var/log = "[key_name_admin(src)] Sent General Quarters!" + + prompt = tgui_alert(src, "Do you want to use a custom announcement?", "Choose.", list("Yes", "No"), 20 SECONDS) + if(prompt == "Yes") + whattoannounce = tgui_input_text(src, "Please enter announcement text.", "what?") + log = "[key_name_admin(src)] Sent General Quarters! (Using a custom announcement)" + + set_security_level(SEC_LEVEL_RED, TRUE, FALSE) + shipwide_ai_announcement(whattoannounce, MAIN_AI_SYSTEM, 'sound/effects/GQfullcall.ogg') + message_admins(log) + return TRUE diff --git a/colonialmarines.dme b/colonialmarines.dme index 42e7880bd313..43a250b7b091 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -741,6 +741,7 @@ #include "code\game\machinery\autolathe_datums.dm" #include "code\game\machinery\Beacon.dm" #include "code\game\machinery\bio-dome_floodlights.dm" +#include "code\game\machinery\biohazard_lockdown.dm" #include "code\game\machinery\bioprinter.dm" #include "code\game\machinery\buttons.dm" #include "code\game\machinery\cell_charger.dm" diff --git a/icons/obj/structures/doors/blastdoors_shutters.dmi b/icons/obj/structures/doors/blastdoors_shutters.dmi index 0c91c00f0f79422f45dbef1f653c8a3e162a2dd6..c5ec97be49b8ffebd7a4ac69e0cda89664ebf6bd 100644 GIT binary patch literal 7754 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 literal 6216 zcmaJ_dpy(s_a`ft#KI!iDNQsn z&Ye&-H3J=}#`;Io#Pq;{gO+-FyNuwwb<`kwP;GVSj?~oD#>PgXg+{><=(%&}?%%(! zwPlkYSo(T;d~f$h_UI4Vqr&pL*RG}~nQ;)Kt_?zm(n{Qxd*NK!lXBxZV^5hfwA?T(`z3LRhayYzSB_vcFK z}7Y*egtz$A%RBEO+oj zw{C9fpRC>pQIpGn&cR;s&$g(`jedBZySM|XfHj);$~4YHmKRqVdhglbMc0l!}}{Dte*$Nn&6 zifDWlJutY08PQtk!(&=DqV5K5FfRawmB|ih$~vtsRat!7;$U$ z4yx{wo#t{pqw8(EC5T=_plTTLgeWCyu_7*zCKK zQVce`2x(t*%NV~7>S;L&a`9&31fBs!ApOp(ls$9=nE>1C%ydi*(k)NiJbX<24x`zQ zgyich>7}07+KWZ|VG5N|w)V#e9ymW``7Z(tWZwpYPvFoKZulo?rE?~VJ7DCG$*(KrDie8Rnx0Ho zS`Nt*g2uN5I4s@<$qzhsE{HHyw1w4z?-(JI4HXW8$yt@WJsbAMqFwB4TS%2#-nG^4 z#@~`KR7!Uud*kNIC^2hS=c(*XZ*e#kr2QKShyi+^!K6L{Kcqm$mP>aT2;3(Eb8RXU zgBM=kaHP&Igt`{};i%{F&4lT-_kWnR7UvX*M}8KV%JzO^9%NwfVM7}a$f~V+7eS5@ z=mMFfU{S}=pVwJN^G2^C%XK(9T9R}5oqw_=GCwDdxAWbkQ;!fm#~{KD3j*>N{59hv z1h^LA)ghfh~q+VB7M---h_9_KHsF)Hb_X-6(&FGJ~jZii`TF zyJnI=wrr_S&_5IHFPg|pz4qp={<6Vj z(>l=JhVpEbG02Z>Y7EkBr__r>K$pp;LH|Net4IRGYPigQh&5A`)Dre7M)PI@1*XvM zX9JO5JdX!^;mpL>XowOq2&4I~z>?;}>}jy3u@}yopmAXA9Q7>3AyAu28UvX^GG&#- z5_H5%H7AVbE*Toa)jhFc8y%s(WP{Np`x0SfrTg-9#OmgUFa-xg6olgffX6U0Xb8;) z0DQK!P4*)O*Z;7VeMa#M$OGcQ4SY;WJ6uRZ45W?M>R_`1QQLtuVQ12tu2|Cep*VBU zcpb9{3_@$pv}RT0-sW4<9$#4?!`>-kvozES3mBDh8Zz@#+hiL1brN{QBV&slM$^BO z><_G36fr8DWQ&_fl}nV0Daas9VP4uL*^tai+oXJl&Ym=mpAN;vYyWDl^!>u_Uh4Q9 zR?S|(cfb3}e$7pLOsZszR@E^Bi0EQV3~pIfFc*hr8uL^%8PevQR-Cp z8sXl&PI00r`(uRfLbSr1(gZ;aZqM!%dn`3=L~1H(AZ1w_!V??5S%|L#tG8z!X-ALNv5D*9e7dr}x)j4Ul@W2 zPi7^}hvIs;iuQH?b@MNgr}cUCS$sXIk}I|wL7FWJbn-^d72yAP>}`e5)6 z1?oK+RzYt_6v|rW1)Cg1P^vlD+OT62l3UgnV79E$%(-0Q<+-Sq+GW+y+SM$dqP9hN z0jktrRBpaS<+8Y2UPcK<9`1L>lx!6xV>CYzT44&`!F9Dy1Xi_`2&a^>O62DcEKo#uKG9Ux16E2`~29zH`(qSw)!gCneD~E=F z3uLoEPYlTLctL~*PU}JiJ91+dX(q0iiU_u6CeRU;TAlaUhdy0!$lI8y3gNU=ew2a1 zSSb#luTdzc^!A|4>bY{3v>fQmO1XBM^^$)gCc}2_Uft#hQ$n*kWfOPcQbc|QQn>Ff4SWW5zWLMs1tRMr!ftwtj*s^#Tw0#!tBlS6sy z?iQD1@RdQAfmZ*kBx6uH-JaO0X6M=g1D(#G2>PB*xPdXa)}S($|AoL@aI&~NWm;Om z0TX)(ZbFL^GkIl|WZy4BAt!yYNFc-#ghK8JVI^faX)GF|n(Uizi4s?Togs*()?PEj z^sjL|%`3-btX~Y5LOoih15^llAV~S5Z1r=`SJ< zMiS5dhvq8-#}qQ|ZWUtQ)TU63@7`_qwh&YD*sY3k+q9b5Qz%uRkfE=;##&n zI=*$(6^xy3J$wzY(6*B$u?W|(SNxYm_cNb;n24uh&pO%93m@rJH9P^`mtKLd&Hb(OA>qIVrD^4(k_jUvMol=VJ( zhhFL78!uYYSfD+5)Gr$}(CG{!cLD2$|h z#|!@~taNma;kmXs(UT$dI)M8T>tyGFHZOj;Y~r`y{<4V(JlCmvtOabQK-3N;YO`b$ zVW6Aoly)OxYz8G4TtBZH>@D*YI(f
    8kgzCt;zh&nI-6nd>=R#=-PpQs=FYhS|h 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