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/__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/__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/__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/__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/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 22c3827022ff..6187a67825a4 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.5.2" +#define TGS_DMAPI_VERSION "6.5.3" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -154,7 +154,7 @@ #define TGS_TOPIC var/tgs_topic_return = TgsTopic(args[1]); if(tgs_topic_return) return tgs_topic_return /** - * Call this as late as possible in [world/proc/Reboot]. + * Call this as late as possible in [world/proc/Reboot] (BEFORE ..()). */ /world/proc/TgsReboot() return 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/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/datums/agents/tools/tranq_gun.dm b/code/datums/agents/tools/tranq_gun.dm index e95f853cef82..91f6f8c294b7 100644 --- a/code/datums/agents/tools/tranq_gun.dm +++ b/code/datums/agents/tools/tranq_gun.dm @@ -1,7 +1,7 @@ /obj/item/weapon/gun/pistol/tranquilizer name = "Tranquilizer gun" desc = "Contains horse tranquilizer darts. Useful at knocking people out." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/guns_by_faction/event.dmi' icon_state = "pk9r" item_state = "pk9r" current_mag = /obj/item/ammo_magazine/pistol/tranq @@ -28,7 +28,7 @@ name = "\improper Tranquilizer magazine (Horse Tranquilizer)" default_ammo = /datum/ammo/bullet/pistol/tranq caliber = ".22" - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/event.dmi' icon_state = "pk-9_tranq" max_rounds = 5 gun_type = /obj/item/weapon/gun/pistol/tranquilizer 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/emergency_calls/royal_marines.dm b/code/datums/emergency_calls/royal_marines.dm index 99b6ea66429f..77d7505a1d42 100644 --- a/code/datums/emergency_calls/royal_marines.dm +++ b/code/datums/emergency_calls/royal_marines.dm @@ -10,7 +10,7 @@ /datum/emergency_call/royal_marines/New() ..() - arrival_message = "[MAIN_SHIP_NAME], this is [pick_weight(list("HMS Patna"= 50, "HMS Thunderchild" = 50,))]; we are responding to your distress call and boarding in accordance with the Military Aid Act of 2177, Authentication code Lima-18153. " + arrival_message = "[MAIN_SHIP_NAME], this is [pick_weight(list("HMS Patna"= 50, "HMS Thunderchild" = 50))]; we are responding to your distress call and boarding in accordance with the Military Aid Act of 2177, Authentication code Lima-18153. " objectives = "Ensure the survival of the [MAIN_SHIP_NAME], eliminate any hostiles, and assist the crew in any way possible." diff --git a/code/datums/emergency_calls/upp.dm b/code/datums/emergency_calls/upp.dm index 94d4bf2a0ab6..04bcfecf9128 100644 --- a/code/datums/emergency_calls/upp.dm +++ b/code/datums/emergency_calls/upp.dm @@ -77,14 +77,14 @@ var/equipment_path = /datum/equipment_preset/upp/specialist if(heavy_pick) if(HAS_FLAG(H.client.prefs.toggles_ert, PLAY_HEAVY) && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER)) - equipment_path = pick(/datum/equipment_preset/upp/specialist, /datum/equipment_preset/upp/minigunner) + equipment_path = pick(/datum/equipment_preset/upp/specialist, /datum/equipment_preset/upp/machinegunner) else if(HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && !HAS_FLAG(H.client.prefs.toggles_ert, PLAY_HEAVY)) - equipment_path = /datum/equipment_preset/upp/minigunner + equipment_path = /datum/equipment_preset/upp/machinegunner arm_equipment(H, equipment_path, TRUE, TRUE) else if(smartgunners < max_smartgunners && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, JOB_SQUAD_SMARTGUN, time_required_for_job)) smartgunners++ to_chat(H, SPAN_ROLE_HEADER("You are a sergeant of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) - arm_equipment(H, /datum/equipment_preset/upp/minigunner, TRUE, TRUE) + arm_equipment(H, /datum/equipment_preset/upp/machinegunner, TRUE, TRUE) else to_chat(H, SPAN_ROLE_HEADER("You are a soldier of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) arm_equipment(H, /datum/equipment_preset/upp/soldier, TRUE, TRUE) diff --git a/code/datums/factions/clf.dm b/code/datums/factions/clf.dm index 38e0d576f805..ce53b505b352 100644 --- a/code/datums/factions/clf.dm +++ b/code/datums/factions/clf.dm @@ -31,12 +31,12 @@ list("PRIMARY FIREARMS", 0, null, null, null), list("ABR-40 Hunting Rifle", 30, /obj/item/weapon/gun/rifle/l42a/abr40, null, VENDOR_ITEM_REGULAR), list("Basira-Armstrong Bolt-Action", 15, /obj/item/weapon/gun/boltaction, null, VENDOR_ITEM_REGULAR), - list("CZ-81 Machine Pistol", 20, /obj/item/ammo_magazine/pistol/skorpion, null, VENDOR_ITEM_REGULAR), list("Double Barrel Shotgun", 30, /obj/item/weapon/gun/shotgun/double, null, VENDOR_ITEM_REGULAR), list("HG 37-12 Pump Shotgun", 30, /obj/item/weapon/gun/shotgun/double/sawn, null, VENDOR_ITEM_REGULAR), list("M16 Rifle", 30, /obj/item/weapon/gun/rifle/m16, null, VENDOR_ITEM_REGULAR), list("MAR-30 Battle Carbine", 30, /obj/item/weapon/gun/rifle/mar40/carbine, null, VENDOR_ITEM_REGULAR), list("MAR-40 Battle Rifle", 30, /obj/item/weapon/gun/rifle/mar40, null, VENDOR_ITEM_REGULAR), + list("Type-64 Submachinegun", 20, /obj/item/weapon/gun/smg/bizon, null, VENDOR_ITEM_REGULAR), list("MAC-15 Submachinegun", 20, /obj/item/weapon/gun/smg/mac15, null, VENDOR_ITEM_REGULAR), list("MP27 Submachinegun", 20, /obj/item/weapon/gun/smg/mp27, null, VENDOR_ITEM_REGULAR), list("MP5 Submachinegun", 20, /obj/item/weapon/gun/smg/mp5, null, VENDOR_ITEM_REGULAR), @@ -48,12 +48,12 @@ list("Box Of Buckshot Shells", 10, /obj/item/ammo_magazine/shotgun/buckshot, null, VENDOR_ITEM_REGULAR), list("Box Of Flechette Shells", 10, /obj/item/ammo_magazine/shotgun/flechette, null, VENDOR_ITEM_REGULAR), list("Box Of Shotgun Slugs", 10, /obj/item/ammo_magazine/shotgun, null, VENDOR_ITEM_REGULAR), - list("CZ-81 Magazine (.32ACP)", 5, /obj/item/ammo_magazine/pistol/skorpion, null, VENDOR_ITEM_REGULAR), list("M16 AP Magazine (5.56x45mm)", 15, /obj/item/ammo_magazine/rifle/m16/ap, null, VENDOR_ITEM_REGULAR), list("M16 Magazine (5.56x45mm)", 5, /obj/item/ammo_magazine/rifle/m16, null, VENDOR_ITEM_REGULAR), list("MAC-15 Magazine (9mm)", 5, /obj/item/ammo_magazine/smg/mac15, null, VENDOR_ITEM_REGULAR), list("MAR Magazine (7.62x39mm)", 5, /obj/item/ammo_magazine/rifle/mar40, null, VENDOR_ITEM_REGULAR), list("MAR Extended Magazine (7.62x39mm)", 15, /obj/item/ammo_magazine/rifle/mar40/extended, null, VENDOR_ITEM_REGULAR), + list("Type-64 Helical Magazine (.7.62x19mm)", 5, /obj/item/ammo_magazine/smg/bizon, null, VENDOR_ITEM_REGULAR), list("MP27 Magazine (4.6x30mm)", 5, /obj/item/ammo_magazine/smg/mp27, null, VENDOR_ITEM_REGULAR), list("MP5 Magazine (9mm)", 5, /obj/item/ammo_magazine/smg/mp5, null, VENDOR_ITEM_REGULAR), @@ -99,13 +99,13 @@ list("PRIMARY FIREARMS", -1, null, null), list("ABR-40 Hunting Rifle", 30, /obj/item/weapon/gun/rifle/l42a/abr40, null, VENDOR_ITEM_REGULAR), list("Basira-Armstrong Bolt-Action", 15, /obj/item/weapon/gun/boltaction, null, VENDOR_ITEM_REGULAR), - list("CZ-81 Machine Pistol", 20, /obj/item/ammo_magazine/pistol/skorpion, VENDOR_ITEM_REGULAR), list("Double Barrel Shotgun", 20, /obj/item/weapon/gun/shotgun/double, VENDOR_ITEM_REGULAR), list("HG 37-12 Pump Shotgun", 20, /obj/item/weapon/gun/shotgun/double/sawn, VENDOR_ITEM_REGULAR), list("M16 Rifle", 20, /obj/item/weapon/gun/rifle/m16, VENDOR_ITEM_REGULAR), list("MAC-15 Submachinegun", 20, /obj/item/weapon/gun/smg/mac15, VENDOR_ITEM_REGULAR), list("MAR-30 Battle Carbine", 20, /obj/item/weapon/gun/rifle/mar40/carbine, VENDOR_ITEM_REGULAR), list("MAR-40 Battle Rifle", 20, /obj/item/weapon/gun/rifle/mar40, VENDOR_ITEM_REGULAR), + list("Type 64 Submachinegun", 20, /obj/item/weapon/gun/smg/bizon, VENDOR_ITEM_REGULAR), list("MP27 Submachinegun", 20, /obj/item/weapon/gun/smg/mp27, VENDOR_ITEM_REGULAR), list("MP5 Submachinegun", 20, /obj/item/weapon/gun/smg/mp5, VENDOR_ITEM_REGULAR), list("Sawn-Off Shotgun", 20, /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb, VENDOR_ITEM_REGULAR), @@ -116,12 +116,12 @@ list("Box Of Buckshot Shells", 15, /obj/item/ammo_magazine/shotgun/buckshot, VENDOR_ITEM_REGULAR), list("Box Of Flechette Shells", 15, /obj/item/ammo_magazine/shotgun/flechette, VENDOR_ITEM_REGULAR), list("Box Of Shotgun Slugs", 15, /obj/item/ammo_magazine/shotgun, VENDOR_ITEM_REGULAR), - list("CZ-81 Magazine (.32ACP)", 60, /obj/item/ammo_magazine/pistol/skorpion, VENDOR_ITEM_REGULAR), list("M16 AP Magazine (5.56x45mm)", 10, /obj/item/ammo_magazine/rifle/m16/ap, VENDOR_ITEM_REGULAR), list("M16 Magazine (5.56x45mm)", 60, /obj/item/ammo_magazine/rifle/m16, VENDOR_ITEM_REGULAR), list("MAC-15 Magazine (9mm)", 60, /obj/item/ammo_magazine/smg/mac15, VENDOR_ITEM_REGULAR), list("MAR Magazine (7.62x39mm)", 60, /obj/item/ammo_magazine/rifle/mar40, VENDOR_ITEM_REGULAR), list("MAR Extended Magazine (7.62x39mm)", 10, /obj/item/ammo_magazine/rifle/mar40/extended, VENDOR_ITEM_REGULAR), + list("Type 64 Helical Magazine (7.62x19mm)", 60, /obj/item/ammo_magazine/smg/bizon, VENDOR_ITEM_REGULAR), list("MP27 Magazine (4.6x30mm)", 60, /obj/item/ammo_magazine/smg/mp27, VENDOR_ITEM_REGULAR), list("MP5 Magazine (9mm)", 60, /obj/item/ammo_magazine/smg/mp5, VENDOR_ITEM_REGULAR), diff --git a/code/datums/factions/upp.dm b/code/datums/factions/upp.dm index a5a89cfd0a80..9f28e5967831 100644 --- a/code/datums/factions/upp.dm +++ b/code/datums/factions/upp.dm @@ -47,24 +47,24 @@ /datum/faction/upp/get_antag_guns_snowflake_equipment() return list( list("PRIMARY FIREARMS", 0, null, null, null), - list("CZ-81 Machine Pistol", 20, /obj/item/weapon/gun/pistol/skorpion/upp, null, VENDOR_ITEM_REGULAR), + list("Type 64 Submachinegun", 20, /obj/item/weapon/gun/smg/bizon/upp, null, VENDOR_ITEM_REGULAR), list("Type 71 Pulse Rifle", 30, /obj/item/weapon/gun/rifle/type71, null, VENDOR_ITEM_REGULAR), list("Type 71 Pulse Rifle Carbine", 30, /obj/item/weapon/gun/rifle/type71/carbine, null, VENDOR_ITEM_REGULAR), list("PRIMARY AMMUNITION", 0, null, null, null), - list("CZ-81 Magazine (.32ACP)", 5, /obj/item/ammo_magazine/pistol/skorpion, null, VENDOR_ITEM_REGULAR), + list("Type 64 Helical Magazine (7.62x19mm)", 5, /obj/item/ammo_magazine/smg/bizon, null, VENDOR_ITEM_REGULAR), list("Type 71 AP Magazine (5.45x39mm)", 15, /obj/item/ammo_magazine/rifle/type71/ap, null, VENDOR_ITEM_REGULAR), list("Type 71 Magazine (5.45x39mm)", 5, /obj/item/ammo_magazine/rifle/type71, null, VENDOR_ITEM_REGULAR), list("SIDEARMS", 0, null, null, null), - list("Highpower Automag", 15, /obj/item/weapon/gun/pistol/highpower, null, VENDOR_ITEM_REGULAR), - list("Korovin PK-9 Pistol", 15, /obj/item/weapon/gun/pistol/c99/upp, null, VENDOR_ITEM_REGULAR), - list("N-Y 7.62mm Revolver", 15, /obj/item/weapon/gun/revolver/nagant, null, VENDOR_ITEM_REGULAR), + list("Type 73 Pistol", 25, /obj/item/weapon/gun/pistol/t73, null, VENDOR_ITEM_REGULAR), + list("NP92 Pistol", 15, /obj/item/weapon/gun/pistol/np92, null, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Revolver", 15, /obj/item/weapon/gun/revolver/upp, null, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", 0, null, null, null), - list("Highpower Magazine (9mm)", 5, /obj/item/ammo_magazine/pistol/highpower, null, VENDOR_ITEM_REGULAR), - list("N-Y Speed Loader (7.62x38mmR)", 5, /obj/item/ammo_magazine/revolver/upp, null, VENDOR_ITEM_REGULAR), - list("PK-9 Magazine (.22 Hollowpoint)", 5, /obj/item/ammo_magazine/pistol/c99, null, VENDOR_ITEM_REGULAR), + list("Type 73 Magazine (7.62x25mm Tokarev)", 5, /obj/item/ammo_magazine/pistol/t73, null, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Speed Loader (7.62x38mmR)", 5, /obj/item/ammo_magazine/revolver/upp, null, VENDOR_ITEM_REGULAR), + list("NP92 Magazine (9x18mm Makarov)", 40, /obj/item/ammo_magazine/pistol/np92, null, VENDOR_ITEM_REGULAR), list("ATTACHMENTS", 0, null, null, null), list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), @@ -86,24 +86,24 @@ /datum/faction/upp/get_antag_guns_sorted_equipment() return list( list("PRIMARY FIREARMS", -1, null, null), - list("CZ-81 Machine Pistol", 20, /obj/item/weapon/gun/pistol/skorpion/upp, VENDOR_ITEM_REGULAR), + list("Type 64 Submachinegun", 20, /obj/item/weapon/gun/smg/bizon/upp, VENDOR_ITEM_REGULAR), list("Type 71 Pulse Rifle", 20, /obj/item/weapon/gun/rifle/type71, VENDOR_ITEM_REGULAR), list("Type 71 Pulse Rifle Carbine", 20, /obj/item/weapon/gun/rifle/type71/carbine, VENDOR_ITEM_REGULAR), list("PRIMARY AMMUNITION", -1, null, null), - list("CZ-81 Magazine (.32ACP)", 60, /obj/item/ammo_magazine/pistol/skorpion, VENDOR_ITEM_REGULAR), + list("Type 64 Helical Magazine (7.62x19mm)", 60, /obj/item/ammo_magazine/smg/bizon, VENDOR_ITEM_REGULAR), list("Type 71 AP Magazine (5.45x39mm)", 60, /obj/item/ammo_magazine/rifle/type71/ap, VENDOR_ITEM_REGULAR), list("Type 71 Magazine (5.45x39mm)", 60, /obj/item/ammo_magazine/rifle/type71, VENDOR_ITEM_REGULAR), list("SIDEARMS", -1, null, null), - list("Highpower Automag", 20, /obj/item/weapon/gun/pistol/highpower, VENDOR_ITEM_REGULAR), - list("Korovin PK-9 Pistol", 20, /obj/item/weapon/gun/pistol/c99/upp, VENDOR_ITEM_REGULAR), - list("N-Y 7.62mm Revolver", 20, /obj/item/weapon/gun/revolver/nagant, VENDOR_ITEM_REGULAR), + list("Type 73 Pistol", 20, /obj/item/weapon/gun/pistol/t73, VENDOR_ITEM_REGULAR), + list("NP02 Pistol", 20, /obj/item/weapon/gun/pistol/np92, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Revolver", 20, /obj/item/weapon/gun/revolver/upp, VENDOR_ITEM_REGULAR), list("SIDEARM AMMUNITION", -1, null, null), - list("Highpower Magazine (9mm)", 40, /obj/item/ammo_magazine/pistol/highpower, VENDOR_ITEM_REGULAR), - list("N-Y Speed Loader (7.62x38mmR)", 40, /obj/item/ammo_magazine/revolver/upp, VENDOR_ITEM_REGULAR), - list("PK-9 Magazine (.22 Hollowpoint)", 40, /obj/item/ammo_magazine/pistol/c99, VENDOR_ITEM_REGULAR), + list("Type 73 Magazine (7.62x25mm Tokarev)", 40, /obj/item/ammo_magazine/pistol/t73, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Speed Loader (7.62x38mmR)", 40, /obj/item/ammo_magazine/revolver/upp, VENDOR_ITEM_REGULAR), + list("NP92 Magazine (9x18mm Makarov)", 40, /obj/item/ammo_magazine/pistol/np92, VENDOR_ITEM_REGULAR), list("UTILITIES", -1, null, null), list("M94 Marking Flare Pack", 20, /obj/item/storage/box/m94, VENDOR_ITEM_RECOMMENDED), diff --git a/code/datums/skills.dm b/code/datums/skills.dm index 2cc66c7afc12..7659abddd141 100644 --- a/code/datums/skills.dm +++ b/code/datums/skills.dm @@ -1290,6 +1290,7 @@ UNITED PROGRESSIVE PEOPLES SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, SKILL_VEHICLE = SKILL_VEHICLE_SMALL, SKILL_JTAC = SKILL_JTAC_EXPERT, + SKILL_EXECUTION = SKILL_EXECUTION_TRAINED, ) /datum/skills/upp/conscript name = "UPP Conscript" 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..1737a66e85a9 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 */ @@ -333,15 +332,15 @@ Additionally, weapons that are way too good to put in the basically-flavor black dollar_cost = 5 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/seized/ppsh - name = "PPSh-17b submachinegun crate (x5 magazines included)" +/datum/supply_packs/contraband/seized/pps43 + name = "Type-19 submachinegun crate (x5 magazines included)" contains = list( - /obj/item/weapon/gun/smg/ppsh, - /obj/item/ammo_magazine/smg/ppsh/extended, - /obj/item/ammo_magazine/smg/ppsh/extended, - /obj/item/ammo_magazine/smg/ppsh, - /obj/item/ammo_magazine/smg/ppsh, - /obj/item/ammo_magazine/smg/ppsh, + /obj/item/weapon/gun/smg/pps43, + /obj/item/ammo_magazine/smg/pps43/extended, + /obj/item/ammo_magazine/smg/pps43/extended, + /obj/item/ammo_magazine/smg/pps43, + /obj/item/ammo_magazine/smg/pps43, + /obj/item/ammo_magazine/smg/pps43, ) dollar_cost = 15 containertype = /obj/structure/largecrate/black_market @@ -374,18 +373,18 @@ Additionally, weapons that are way too good to put in the basically-flavor black dollar_cost = 45 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/seized/c99 - name = "Korovin PK-9 pistol crate (x6 magazines included)" +/datum/supply_packs/contraband/seized/t73 + name = "Type 73 pistol crate (x6 magazines included)" contains = list( - /obj/item/weapon/gun/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, + /obj/item/weapon/gun/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, ) - dollar_cost = 5 + dollar_cost = 15 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/seized/kt42 @@ -416,14 +415,14 @@ Additionally, weapons that are way too good to put in the basically-flavor black dollar_cost = 5 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/seized/skorpion - name = "CZ-81 machine pistol (x4 magazines included)" +/datum/supply_packs/contraband/seized/bizon + name = "Type 64 Submachinegun (x4 magazines included)" contains = list( - /obj/item/weapon/gun/pistol/skorpion, - /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/ammo_magazine/pistol/skorpion, + /obj/item/weapon/gun/smg/bizon, + /obj/item/ammo_magazine/smg/bizon, + /obj/item/ammo_magazine/smg/bizon, + /obj/item/ammo_magazine/smg/bizon, + /obj/item/ammo_magazine/smg/bizon, ) dollar_cost = 15 containertype = /obj/structure/largecrate/black_market @@ -457,10 +456,10 @@ Additionally, weapons that are way too good to put in the basically-flavor black dollar_cost = 15 containertype = /obj/structure/largecrate/black_market -/datum/supply_packs/contraband/seized/nagant - name = "N-Y 7.62mm revolver (x6 magazines included)" +/datum/supply_packs/contraband/seized/upprevolver + name = "ZHNK-72 revolver (x6 magazines included)" contains = list( - /obj/item/weapon/gun/revolver/nagant, + /obj/item/weapon/gun/revolver/upp, /obj/item/ammo_magazine/revolver/upp, /obj/item/ammo_magazine/revolver/upp, /obj/item/ammo_magazine/revolver/upp, @@ -468,7 +467,7 @@ Additionally, weapons that are way too good to put in the basically-flavor black /obj/item/ammo_magazine/revolver/upp, /obj/item/ammo_magazine/revolver/upp, ) - dollar_cost = 10 + dollar_cost = 15 containertype = /obj/structure/largecrate/black_market /datum/supply_packs/contraband/seized/r4t @@ -1068,11 +1067,11 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro new picked_type(loc) loot_message = SPAN_NOTICE("It's some strange elite gear...?") if(11 to 15) - //Skorpion - new /obj/item/weapon/gun/pistol/skorpion(loc) - new /obj/item/ammo_magazine/pistol/skorpion(loc) - new /obj/item/ammo_magazine/pistol/skorpion(loc) - new /obj/item/ammo_magazine/pistol/skorpion(loc) + //Type 64 + new /obj/item/weapon/gun/smg/bizon(loc) + new /obj/item/ammo_magazine/smg/bizon(loc) + new /obj/item/ammo_magazine/smg/bizon(loc) + new /obj/item/ammo_magazine/smg/bizon(loc) // Somehow they found a Webley. new /obj/item/weapon/gun/revolver/m44/custom/webley(loc) new /obj/item/ammo_magazine/revolver/webley(loc) @@ -1080,11 +1079,11 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro new /obj/item/ammo_magazine/revolver/webley(loc) loot_message = SPAN_NOTICE("It's some CLF pistol armaments!") if(16 to 20) - // PPSH - new /obj/item/weapon/gun/smg/ppsh/with_drum_mag(loc) - new /obj/item/ammo_magazine/smg/ppsh/extended(loc) - new /obj/item/ammo_magazine/smg/ppsh/extended(loc) - new /obj/item/ammo_magazine/smg/ppsh/extended(loc) + // Type 19 + new /obj/item/weapon/gun/smg/pps43/extended_mag(loc) + new /obj/item/ammo_magazine/smg/pps43/extended(loc) + new /obj/item/ammo_magazine/smg/pps43/extended(loc) + new /obj/item/ammo_magazine/smg/pps43/extended(loc) // MAC-15 new /obj/item/weapon/gun/smg/mac15/extended(loc) new /obj/item/ammo_magazine/smg/mac15/extended(loc) 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/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/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/machinery/vending/vendor_types/antag/antag_gear.dm b/code/game/machinery/vending/vendor_types/antag/antag_gear.dm index c2b27dc91ef1..84cd4a8bcec0 100644 --- a/code/game/machinery/vending/vendor_types/antag/antag_gear.dm +++ b/code/game/machinery/vending/vendor_types/antag/antag_gear.dm @@ -49,9 +49,9 @@ /obj/effect/essentials_set/upp_heavy spawned_gear_list = list( - /obj/item/weapon/gun/minigun/upp, - /obj/item/ammo_magazine/minigun, - /obj/item/ammo_magazine/minigun, + /obj/item/weapon/gun/pkp, + /obj/item/ammo_magazine/pkp, + /obj/item/ammo_magazine/pkp, ) /obj/effect/essentials_set/leader/upp diff --git a/code/game/objects/effects/spawners/random.dm b/code/game/objects/effects/spawners/random.dm index 4d5bf88b9e6c..77390d533c9e 100644 --- a/code/game/objects/effects/spawners/random.dm +++ b/code/game/objects/effects/spawners/random.dm @@ -400,7 +400,6 @@ /obj/item/weapon/gun/revolver/small = /obj/item/ammo_magazine/revolver/small, /obj/item/weapon/gun/pistol/heavy = /obj/item/ammo_magazine/pistol/heavy, /obj/item/weapon/gun/pistol/skorpion = /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/weapon/gun/pistol/skorpion/upp = /obj/item/ammo_magazine/pistol/skorpion, ) /obj/effect/spawner/random/gun/pistol/lowchance @@ -494,7 +493,7 @@ /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, - /obj/item/weapon/gun/smg/ppsh = /obj/item/ammo_magazine/smg/ppsh, + /obj/item/weapon/gun/smg/pps43 = /obj/item/ammo_magazine/smg/pps43, /obj/item/weapon/gun/smg/mac15 = /obj/item/ammo_magazine/smg/mac15, /obj/item/weapon/gun/smg/mac15 = /obj/item/ammo_magazine/smg/mac15, /obj/item/weapon/gun/smg/uzi = /obj/item/ammo_magazine/smg/uzi, 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)) 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/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/shards.dm b/code/game/objects/items/shards.dm index f46f5b5a5fc0..412a14268037 100644 --- a/code/game/objects/items/shards.dm +++ b/code/game/objects/items/shards.dm @@ -232,13 +232,13 @@ organ.take_damage(damage_on_move * count, 0, 0, no_limb_loss = TRUE) embedded_mob.pain.apply_pain(damage_on_move * count) -/obj/item/shard/shrapnel/nagant +/obj/item/shard/shrapnel/upp name = "small shrapnel" desc = "Some shrapnel that used to be embedded underneath someone's skin." icon_state = "small" damage_on_move = 2 -/obj/item/shard/shrapnel/nagant/bits +/obj/item/shard/shrapnel/upp/bits name = "tiny shrapnel" desc = "A tiny piece of shrapnel that used to be embedded underneath someone's skin." icon_state = "tiny" diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 6a2a52596805..ae1697e78227 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -16,6 +16,26 @@ ///TRUE Means that it closes a flap over its contents, and therefore update_icon should lift that flap when opened. If it doesn't have _half and _full iconstates, this doesn't matter either way. var/flap = TRUE +/obj/item/storage/belt/gun/flaregun/dump_into(obj/item/storage/origin_storage, mob/user) + + if(length(holstered_guns) < 1 && length(contents) >= (storage_slots-1)) + + to_chat(user, SPAN_WARNING("[src] is full.")) + return FALSE + return ..() + +/obj/item/storage/belt/gun/flaregun/handle_item_insertion(obj/item/new_item, prevent_warning = FALSE, mob/user) + + if(istype(new_item, /obj/item/device/flashlight/flare) && length(holstered_guns) < 1 && length(contents) >= (storage_slots-1)) + return FALSE + return ..() + +/obj/item/storage/belt/gun/flaregun/has_room(obj/item/new_item, W_class_override = null) + + if(istype(new_item, /obj/item/device/flashlight/flare) && length(holstered_guns) < 1 && length(contents) >= (storage_slots-1)) + return FALSE //No slot open because gun in holster. + return ..() + /obj/item/storage/belt/equipped(mob/user, slot) switch(slot) if(WEAR_WAIST, WEAR_J_STORE, WEAR_BACK) @@ -371,6 +391,7 @@ new /obj/item/weapon/baton(src) new /obj/item/handcuffs(src) new /obj/item/reagent_container/spray/pepper(src) + new /obj/item/ammo_magazine/revolver/upp/shrapnel(src) /obj/item/storage/belt/security/MP/CMB name = "\improper CMB duty belt" @@ -765,7 +786,7 @@ for(var/i = 1 to storage_slots) new /obj/item/weapon/throwing_knife(src) -/obj/item/storage/belt/knifepouch/_item_insertion(obj/item/W, prevent_warning = 0) +/obj/item/storage/belt/knifepouch/_item_insertion(obj/item/new_item, prevent_warning = FALSE) ..() playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) @@ -912,6 +933,7 @@ for(var/slot in holster_slots) if(AM == holster_slots[slot]["gun"]) holster_slots[slot]["gun"] = null + update_gun_icon(slot) return @@ -987,7 +1009,7 @@ to_chat(usr, SPAN_WARNING("[src] can't hold any more ammo.")) return FALSE -/obj/item/storage/belt/gun/_item_insertion(obj/item/W, prevent_warning = 0) +/obj/item/storage/belt/gun/_item_insertion(obj/item/W, prevent_warning = FALSE) if(isgun(W)) holstered_guns += W for(var/slot in holster_slots) @@ -1383,37 +1405,50 @@ /obj/item/storage/belt/gun/type47 name = "\improper Type 47 pistol holster rig" - desc = "This UPP-designed sidearm rig can very snugly and securely fit either a Nagant-Yamasaki revolver or a Korovin PK-9, and both their magazines or speedloaders. However, it lacks versatility in stored weaponry." + desc = "This UPP-designed sidearm rig can very snugly and securely fit a Type-73, NP92, or a ZHNK-72, and their magazines or speedloaders. However, it lacks versatility in stored weaponry." icon_state = "korovin_holster" item_state = "upp_belt" storage_slots = 7 can_hold = list( - /obj/item/weapon/gun/pistol/c99, - /obj/item/ammo_magazine/pistol/c99, - /obj/item/ammo_magazine/pistol/c99/tranq, - /obj/item/weapon/gun/revolver/nagant, + /obj/item/weapon/gun/pistol/t73, + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73_impact, + /obj/item/weapon/gun/pistol/np92, + /obj/item/ammo_magazine/pistol/np92, + /obj/item/ammo_magazine/pistol/np92/tranq, + /obj/item/weapon/gun/revolver/upp, /obj/item/ammo_magazine/revolver/upp, /obj/item/ammo_magazine/revolver/upp/shrapnel, ) holster_slots = list("1" = list("icon_x" = -1)) -/obj/item/storage/belt/gun/type47/PK9/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/pistol/c99/upp()) +/obj/item/storage/belt/gun/type47/np92/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/np92()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/np92(src) + +/obj/item/storage/belt/gun/type47/np92/suppressed/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/np92/suppressed()) + for(var/i = 1 to storage_slots - 1) + new /obj/item/ammo_magazine/pistol/np92/suppressed(src) + +/obj/item/storage/belt/gun/type47/t73/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/t73()) for(var/i = 1 to storage_slots - 1) - new /obj/item/ammo_magazine/pistol/c99(src) + new /obj/item/ammo_magazine/pistol/t73(src) -/obj/item/storage/belt/gun/type47/PK9/tranq/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/pistol/c99/upp/tranq()) +/obj/item/storage/belt/gun/type47/t73/leader/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/pistol/t73/leader()) for(var/i = 1 to storage_slots - 1) - new /obj/item/ammo_magazine/pistol/c99/tranq(src) + new /obj/item/ammo_magazine/pistol/t73_impact(src) -/obj/item/storage/belt/gun/type47/NY/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/revolver/nagant()) +/obj/item/storage/belt/gun/type47/revolver/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/upp()) for(var/total_storage_slots in 1 to storage_slots - 1) new /obj/item/ammo_magazine/revolver/upp(src) -/obj/item/storage/belt/gun/type47/NY/shrapnel/fill_preset_inventory() - handle_item_insertion(new /obj/item/weapon/gun/revolver/nagant/shrapnel()) +/obj/item/storage/belt/gun/type47/revolver/shrapnel/fill_preset_inventory() + handle_item_insertion(new /obj/item/weapon/gun/revolver/upp/shrapnel()) for(var/total_storage_slots in 1 to storage_slots - 1) new /obj/item/ammo_magazine/revolver/upp/shrapnel(src) 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/storage/misc.dm b/code/game/objects/items/storage/misc.dm index eb6f100f6e8b..424a4f5be0e8 100644 --- a/code/game/objects/items/storage/misc.dm +++ b/code/game/objects/items/storage/misc.dm @@ -124,6 +124,20 @@ new /obj/item/weapon/gun/pistol/clfpistol(src) new /obj/item/ammo_magazine/pistol/clfpistol(src) +/obj/item/storage/box/upp //war trophy luger + name = "Type 73 storing case" + desc = "A small case containing the once-standard sidearm of the UPP, the Type 73, and two additional magazines. The contained sidearm is probably looted off a dead officer or from a captured stockpile, either way this thing is worth a pretty penny." + icon = 'icons/obj/items/storage.dmi' + icon_state = "matebacase" + w_class = SIZE_MEDIUM + max_w_class = SIZE_MEDIUM + storage_slots = 3 + +/obj/item/storage/box/upp/fill_preset_inventory() + new /obj/item/weapon/gun/pistol/t73(src) + new /obj/item/ammo_magazine/pistol/t73(src) + new /obj/item/ammo_magazine/pistol/t73(src) + /obj/item/storage/box/co2_knife name = "M8 cartridge bayonet packaging" desc = "Contains one M8 Cartridge Bayonet and two sister CO2 cartridges. Thanks for being a dedicated Boots magazine subscriber!" diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index 36f946efdfdc..5a6b7d2b9b05 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -31,7 +31,6 @@ var/storage_flags = STORAGE_FLAGS_DEFAULT var/has_gamemode_skin = FALSE ///Whether to use map-variant skins. - /obj/item/storage/MouseDrop(obj/over_object as obj) if(CAN_PICKUP(usr, src)) if(over_object == usr) // this must come before the screen objects only block @@ -378,12 +377,12 @@ var/list/global/item_storage_box_cache = list() return ///Returns TRUE if there is room for the given item. W_class_override allows checking for just a generic W_class, meant for checking shotgun handfuls without having to spawn and delete one just to check. -/obj/item/storage/proc/has_room(obj/item/W as obj, W_class_override = null) +/obj/item/storage/proc/has_room(obj/item/new_item, W_class_override = null) if(storage_slots != null && contents.len < storage_slots) return TRUE //At least one open slot. //calculate storage space only for containers that don't have slots if (storage_slots == null) - var/sum_storage_cost = W_class_override ? W_class_override : W.get_storage_cost() //Takes the override if there is one, the given item otherwise. + var/sum_storage_cost = W_class_override ? W_class_override : new_item.get_storage_cost() //Takes the override if there is one, the given item otherwise. for(var/obj/item/I in contents) sum_storage_cost += I.get_storage_cost() //Adds up the combined storage costs which will be in the storage item if the item is added to it. @@ -455,23 +454,23 @@ That's done by can_be_inserted(). Its checks are whether the item exists, is an The stop_warning parameter will stop the insertion message from being displayed. It is intended for cases where you are inserting multiple items at once, such as when picking up all the items on a tile with one click. user can be null, it refers to the potential mob doing the insertion.**/ -/obj/item/storage/proc/handle_item_insertion(obj/item/W, prevent_warning = 0, mob/user) - if(!istype(W)) +/obj/item/storage/proc/handle_item_insertion(obj/item/new_item, prevent_warning = FALSE, mob/user) + if(!istype(new_item)) return FALSE - if(user && W.loc == user) - if(!user.drop_inv_item_to_loc(W, src)) + if(user && new_item.loc == user) + if(!user.drop_inv_item_to_loc(new_item, src)) return FALSE else - W.forceMove(src) + new_item.forceMove(src) - _item_insertion(W, prevent_warning, user) + _item_insertion(new_item, prevent_warning, user) return TRUE /**Inserts the item. Separate proc because handle_item_insertion isn't guaranteed to insert and it therefore isn't safe to override it before calling parent. Updates icon when done. Can be called directly but only if the item was spawned inside src - handle_item_insertion is safer. W is always an item. stop_warning prevents messaging. user may be null.**/ -/obj/item/storage/proc/_item_insertion(obj/item/W, prevent_warning = 0, mob/user) +/obj/item/storage/proc/_item_insertion(obj/item/W, prevent_warning = FALSE, mob/user) W.on_enter_storage(src) if(user) if (user.client && user.s_active != src) @@ -721,25 +720,26 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ to_chat(user, SPAN_WARNING("[ammo_dumping] is empty.")) return TRUE -/obj/item/storage/proc/dump_into(obj/item/storage/M, mob/user) +/obj/item/storage/proc/dump_into(obj/item/storage/origin_storage, mob/user) + if(user.action_busy) return - if(!M.contents.len) - to_chat(user, SPAN_WARNING("[M] is empty.")) + if(!origin_storage.contents.len) + to_chat(user, SPAN_WARNING("[origin_storage] is empty.")) return - if(!has_room(M.contents[1])) //Does it have room for the first item to be inserted? + if(!has_room(origin_storage.contents[1])) //Does it have room for the first item to be inserted? to_chat(user, SPAN_WARNING("[src] is full.")) return - to_chat(user, SPAN_NOTICE("You start refilling [src] with [M].")) + to_chat(user, SPAN_NOTICE("You start refilling [src] with [origin_storage].")) if(!do_after(user, 1.5 SECONDS, INTERRUPT_ALL, BUSY_ICON_GENERIC)) return - for(var/obj/item/I in M) - if(!has_room(I)) + for(var/obj/item/new_item in origin_storage) + if(!has_room(new_item)) break - M.remove_from_storage(I) - handle_item_insertion(I, TRUE, user) //quiet insertion + origin_storage.remove_from_storage(new_item) + handle_item_insertion(new_item, TRUE, user) //quiet insertion playsound(user.loc, "rustle", 15, TRUE, 6) return TRUE 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) 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/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 11b440e0e2ec..9557013268bf 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -105,7 +105,7 @@ new /obj/item/clothing/head/ushanka(src) new /obj/item/clothing/mask/rebreather/scarf(src) new /obj/item/clothing/under/rank/veteran/soviet_uniform_01(src) - new /obj/item/storage/belt/gun/type47/NY(src) + new /obj/item/storage/belt/gun/type47/t73(src) diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 2393b5df8265..becd128830b6 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -335,13 +335,13 @@ num_guns = 3 num_mags = 3 name = "\improper Hyperdyne firearm crate" - stuff = list( /obj/item/weapon/gun/revolver/nagant = /obj/item/ammo_magazine/revolver/upp, - /obj/item/weapon/gun/pistol/c99 = /obj/item/ammo_magazine/pistol/c99, + stuff = list( /obj/item/weapon/gun/revolver/upp = /obj/item/ammo_magazine/revolver/upp, + /obj/item/weapon/gun/pistol/np92 = /obj/item/ammo_magazine/pistol/np92, /obj/item/weapon/gun/pistol/kt42 = /obj/item/ammo_magazine/pistol/kt42, /obj/item/weapon/gun/rifle/mar40 = /obj/item/ammo_magazine/rifle/mar40, /obj/item/weapon/gun/rifle/mar40/carbine = /obj/item/ammo_magazine/rifle/mar40/extended, /obj/item/weapon/gun/rifle/sniper/svd = /obj/item/ammo_magazine/sniper/svd, - /obj/item/weapon/gun/smg/ppsh = /obj/item/ammo_magazine/smg/ppsh + /obj/item/weapon/gun/smg/pps43 = /obj/item/ammo_magazine/smg/pps43 ) /obj/structure/largecrate/guns/merc @@ -357,11 +357,11 @@ /obj/item/weapon/gun/shotgun/merc = /obj/item/ammo_magazine/handful/shotgun/buckshot, /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb = /obj/item/ammo_magazine/handful/shotgun/buckshot, /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, - /obj/item/weapon/gun/pistol/skorpion = /obj/item/ammo_magazine/pistol/skorpion, + /obj/item/weapon/gun/smg/bizon = /obj/item/ammo_magazine/smg/bizon, /obj/item/weapon/gun/smg/mac15 = /obj/item/ammo_magazine/smg/mac15, /obj/item/weapon/gun/smg/uzi = /obj/item/ammo_magazine/smg/uzi, /obj/item/weapon/gun/rifle/mar40/carbine = /obj/item/ammo_magazine/rifle/mar40, - /obj/item/weapon/gun/smg/ppsh = /obj/item/ammo_magazine/smg/ppsh, + /obj/item/weapon/gun/smg/pps43 = /obj/item/ammo_magazine/smg/pps43, /obj/item/weapon/gun/rifle/l42a = /obj/item/ammo_magazine/rifle/l42a, /obj/item/weapon/gun/rifle/l42a/abr40 = /obj/item/ammo_magazine/rifle/l42a/abr40, /obj/item/weapon/gun/smg/mp5 = /obj/item/ammo_magazine/smg/mp5, @@ -525,9 +525,9 @@ new /obj/item/weapon/gun/rifle/mar40(src) new /obj/item/ammo_magazine/rifle/mar40(src) new /obj/item/ammo_magazine/rifle/mar40(src) - new /obj/item/weapon/gun/pistol/skorpion(src) - new /obj/item/ammo_magazine/pistol/skorpion(src) - new /obj/item/ammo_magazine/pistol/skorpion(src) + new /obj/item/weapon/gun/smg/bizon(src) + new /obj/item/ammo_magazine/smg/bizon(src) + new /obj/item/ammo_magazine/smg/bizon(src) new /obj/item/weapon/gun/shotgun/combat(src) new /obj/item/ammo_magazine/shotgun(src) new /obj/item/ammo_magazine/shotgun/buckshot(src) @@ -571,8 +571,8 @@ new /obj/item/ammo_magazine/rifle(src) new /obj/item/ammo_magazine/rifle/mar40(src) new /obj/item/ammo_magazine/rifle/mar40(src) - new /obj/item/ammo_magazine/pistol/skorpion(src) - new /obj/item/ammo_magazine/pistol/skorpion(src) + new /obj/item/ammo_magazine/smg/bizon(src) + new /obj/item/ammo_magazine/smg/bizon(src) new /obj/item/ammo_magazine/shotgun(src) new /obj/item/ammo_magazine/shotgun/buckshot(src) 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/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/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/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/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index e712e267fb2d..106da02a00b6 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -515,6 +515,12 @@ var/global/list/gear_datums_by_name = list() display_name = "D18 Holdout Pistol" path = /obj/item/storage/box/clf +/datum/gear/weapon/upppistol //ww2 war trophy luger + display_name = "Type 73 Pistol" + path = /obj/item/storage/box/upp + slot = WEAR_IN_BACK + cost = 4 + /datum/gear/weapon/m4a3_custom display_name = "M4A3 Custom Pistol" path = /obj/item/weapon/gun/pistol/m4a3/custom diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 455a6bc71aaf..3d0f458f98da 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -926,6 +926,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( armor_rad = CLOTHING_ARMOR_MEDIUMLOW armor_internaldamage = CLOTHING_ARMOR_HIGH min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT + clothing_traits = list(TRAIT_EAR_PROTECTION) //the sprites clearly fully cover the ears and most of the head /obj/item/clothing/head/helmet/marine/veteran/UPP/engi name = "\improper UM4-V helmet" 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/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 4dc1b85ea199..81d5971879c9 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -69,6 +69,7 @@ /obj/item/attachable/bayonet, /obj/item/storage/backpack/general_belt, /obj/item/storage/large_holster/machete, + /obj/item/storage/belt/gun/type47, /obj/item/storage/belt/gun/m4a3, /obj/item/storage/belt/gun/m44, /obj/item/storage/belt/gun/smartpistol, @@ -1268,9 +1269,10 @@ storage_slots = 1 uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP, /obj/item/clothing/under/marine/veteran/UPP/medic, /obj/item/clothing/under/marine/veteran/UPP/engi) -/obj/item/clothing/suit/storage/marine/faction/support - name = "\improper UM5B personal armor" - desc = "Standard body armor of the UPP military, the UM5B (Union Medium MK5 Beta) is a light body armor, slightly weaker than the M3 pattern body armor in service with the USCM, specialized towards ballistics protection. This set of personal armor lacks the iconic neck piece and some of the armor in favor of user mobility." +/obj/item/clothing/suit/storage/marine/faction/UPP/support + name = "\improper UL6 personal armor" + desc = "Standard body armor of the UPP military, the UL6 (Union Light MK6) is a light body armor, slightly weaker than the M3 pattern body armor in service with the USCM, specialized towards ballistics protection. This set of personal armor lacks the iconic neck piece and some of the armor in favor of user mobility." + storage_slots = 3 icon_state = "upp_armor_support" slowdown = SLOWDOWN_ARMOR_LIGHT armor_melee = CLOTHING_ARMOR_HIGH @@ -1278,7 +1280,6 @@ armor_bio = CLOTHING_ARMOR_MEDIUMLOW armor_rad = CLOTHING_ARMOR_MEDIUMLOW armor_internaldamage = CLOTHING_ARMOR_HIGH - uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP/officer) /obj/item/clothing/suit/storage/marine/faction/UPP/commando name = "\improper UM5CU personal armor" @@ -1291,6 +1292,7 @@ name = "\improper UH7 heavy plated armor" desc = "An extremely heavy-duty set of body armor in service with the UPP military, the UH7 (Union Heavy MK7) is known for having powerful ballistic protection, alongside a noticeable neck guard, fortified in order to allow the wearer to endure the stresses of the bulky helmet." icon_state = "upp_armor_heavy" + storage_slots = 3 slowdown = SLOWDOWN_ARMOR_HEAVY flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN flags_armor_protection = BODY_FLAG_ALL_BUT_HEAD @@ -1306,19 +1308,20 @@ /obj/item/clothing/suit/storage/marine/faction/UPP/heavy/Initialize() . = ..() pockets.bypass_w_limit = list( - /obj/item/ammo_magazine/minigun + /obj/item/ammo_magazine/minigun, + /obj/item/ammo_magazine/pkp, ) /obj/item/clothing/suit/storage/marine/faction/UPP/officer - name = "\improper UL6 officers jacket" - desc = "A lightweight jacket, issued to officers of the UPP's military. Still studded to the brim with kevlar shards, though the synthread construction reduces its effectiveness." + name = "\improper UL4 officer jacket" + desc = "A lightweight jacket, issued to officers of the UPP's military. Slightly protective from incoming damage, best off with proper armor however." icon_state = "upp_coat_officer" - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + slowdown = SLOWDOWN_ARMOR_NONE flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS - armor_melee = CLOTHING_ARMOR_LOW - armor_bullet = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUMLOW + armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat + armor_bullet = CLOTHING_ARMOR_LOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_LOW armor_bio = CLOTHING_ARMOR_LOW armor_rad = CLOTHING_ARMOR_LOW armor_internaldamage = CLOTHING_ARMOR_LOW @@ -1326,31 +1329,31 @@ uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP/officer) /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan - name = "\improper UL6 Kapitan's jacket" - desc = "A lightweight jacket, issued to the Kapitans of the UPP's military. Made of high-quality materials, even going as far as having the ranks and insignia of the Kapitan and their Company emblazoned on the shoulders and front of the jacket." + name = "\improper UL4 senior officer jacket" + desc = "A lightweight jacket, issued to senior officers of the UPP's military. Made of high-quality materials, even going as far as having the ranks and insignia of the Kapitan and their Company emblazoned on the shoulders and front of the jacket. Slightly protective from incoming damage, best off with proper armor however." icon_state = "upp_coat_kapitan" - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT - flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS - armor_melee = CLOTHING_ARMOR_LOW - armor_bullet = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUMLOW + slowdown = SLOWDOWN_ARMOR_NONE + armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat + armor_bullet = CLOTHING_ARMOR_LOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_LOW armor_bio = CLOTHING_ARMOR_LOW armor_rad = CLOTHING_ARMOR_LOW armor_internaldamage = CLOTHING_ARMOR_LOW + flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS storage_slots = 4 uniform_restricted = list(/obj/item/clothing/under/marine/veteran/UPP/officer) /obj/item/clothing/suit/storage/marine/faction/UPP/mp - name = "\improper UL6 camouflaged jacket" + name = "\improper UL4 camouflaged jacket" desc = "A lightweight jacket, issued to troops when they're not expected to engage in combat. Still studded to the brim with kevlar shards, though the synthread construction reduces its effectiveness." icon_state = "upp_coat_mp" - slowdown = SLOWDOWN_ARMOR_VERY_LIGHT + slowdown = SLOWDOWN_ARMOR_NONE flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_ARMS - armor_melee = CLOTHING_ARMOR_LOW - armor_bullet = CLOTHING_ARMOR_MEDIUMLOW - armor_energy = CLOTHING_ARMOR_MEDIUMLOW - armor_bomb = CLOTHING_ARMOR_MEDIUMLOW + armor_melee = CLOTHING_ARMOR_LOW //wear actual armor if you go into combat + armor_bullet = CLOTHING_ARMOR_LOW + armor_energy = CLOTHING_ARMOR_LOW + armor_bomb = CLOTHING_ARMOR_LOW armor_bio = CLOTHING_ARMOR_LOW armor_rad = CLOTHING_ARMOR_LOW armor_internaldamage = CLOTHING_ARMOR_LOW @@ -1360,8 +1363,8 @@ restricted_accessory_slots = list(ACCESSORY_SLOT_ARMBAND) /obj/item/clothing/suit/storage/marine/faction/UPP/jacket/ivan - name = "\improper UH6 Camo Jacket" - desc = "An experimental heavily armored variant of the UL6 given to only the most elite units... usually." + name = "\improper UH4 Camo Jacket" + desc = "An experimental heavily armored variant of the UL4 given to only the most elite units... usually." slowdown = SLOWDOWN_ARMOR_MEDIUM flags_armor_protection = BODY_FLAG_CHEST|BODY_FLAG_GROIN|BODY_FLAG_LEGS|BODY_FLAG_ARMS|BODY_FLAG_HANDS|BODY_FLAG_FEET armor_melee = CLOTHING_ARMOR_HIGH 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/_select_equipment.dm b/code/modules/gear_presets/_select_equipment.dm index 94a628553252..89b0fe072c9b 100644 --- a/code/modules/gear_presets/_select_equipment.dm +++ b/code/modules/gear_presets/_select_equipment.dm @@ -388,8 +388,7 @@ /obj/item/weapon/gun/pistol/b92fs = /obj/item/ammo_magazine/pistol/b92fs, /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, /obj/item/weapon/gun/smg/mp5 = /obj/item/ammo_magazine/smg/mp5, - /obj/item/weapon/gun/pistol/skorpion = /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/weapon/gun/pistol/skorpion/upp = /obj/item/ammo_magazine/pistol/skorpion, + /obj/item/weapon/gun/smg/bizon = /obj/item/ammo_magazine/smg/bizon, /obj/item/weapon/gun/smg/mac15 = /obj/item/ammo_magazine/smg/mac15, /obj/item/weapon/gun/smg/uzi = /obj/item/ammo_magazine/smg/uzi ) @@ -473,11 +472,10 @@ var/list/rebel_shotguns = list( ) var/list/rebel_smgs = list( - /obj/item/weapon/gun/smg/ppsh = /obj/item/ammo_magazine/smg/ppsh, + /obj/item/weapon/gun/smg/pps43 = /obj/item/ammo_magazine/smg/pps43, /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, /obj/item/weapon/gun/smg/mp5 = /obj/item/ammo_magazine/smg/mp5, - /obj/item/weapon/gun/pistol/skorpion = /obj/item/ammo_magazine/pistol/skorpion, - /obj/item/weapon/gun/pistol/skorpion/upp = /obj/item/ammo_magazine/pistol/skorpion, + /obj/item/weapon/gun/smg/bizon = /obj/item/ammo_magazine/smg/bizon, /obj/item/weapon/gun/smg/mac15 = /obj/item/ammo_magazine/smg/mac15, /obj/item/weapon/gun/smg/uzi = /obj/item/ammo_magazine/smg/uzi, /obj/item/weapon/gun/smg/fp9000 = /obj/item/ammo_magazine/smg/fp9000 @@ -551,7 +549,6 @@ var/list/rebel_rifles = list( /obj/item/weapon/gun/pistol/holdout = /obj/item/ammo_magazine/pistol/holdout, /obj/item/weapon/gun/pistol/highpower = /obj/item/ammo_magazine/pistol/highpower, /obj/item/weapon/gun/smg/mp27 = /obj/item/ammo_magazine/smg/mp27, - /obj/item/weapon/gun/pistol/skorpion = /obj/item/ammo_magazine/pistol/skorpion, /obj/item/weapon/gun/smg/mac15 = /obj/item/ammo_magazine/smg/mac15, /obj/item/weapon/gun/smg/mac15 = /obj/item/ammo_magazine/smg/mac15/extended) @@ -565,6 +562,7 @@ var/list/rebel_rifles = list( /obj/item/weapon/gun/rifle/mar40/lmg = /obj/item/ammo_magazine/rifle/mar40/lmg, /obj/item/weapon/gun/rifle/m41aMK1 = /obj/item/ammo_magazine/rifle/m41aMK1, /obj/item/weapon/gun/smg/fp9000 = /obj/item/ammo_magazine/smg/fp9000, + /obj/item/weapon/gun/smg/bizon = /obj/item/ammo_magazine/smg/bizon, /obj/item/weapon/gun/rifle/m16 = /obj/item/ammo_magazine/rifle/m16) var/gunpath = sidearm? pick(merc_sidearms) : pick(merc_firearms) @@ -954,21 +952,26 @@ var/list/rebel_rifles = list( ) /datum/equipment_preset/proc/add_upp_weapon(mob/living/carbon/human/new_human) - var/random_gun = rand(1,3) + var/random_gun = rand(1,5) switch(random_gun) - if(1) + if(1,2) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71(new_human), WEAR_L_HAND) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) - if(2) + if(3) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/carbine(new_human), WEAR_L_HAND) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) - if(3) + if(4) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23(new_human), WEAR_L_HAND) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/buckshot(new_human), WEAR_IN_BACK) + if(4) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/bizon(new_human), WEAR_L_HAND) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/bizon(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/bizon(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/bizon(new_human), WEAR_IN_BACK) /datum/equipment_preset/proc/spawn_random_upp_headgear(mob/living/carbon/human/new_human) var/random_hat = rand(1,10) @@ -983,7 +986,7 @@ var/list/rebel_rifles = list( new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/ushanka(new_human), WEAR_HEAD) /datum/equipment_preset/proc/spawn_random_upp_armor(mob/living/carbon/human/new_human) - var/random_gear = rand(1, 4) + var/random_gear = rand(1, 5) switch(random_gear) if (1, 2, 3) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP (new_human), WEAR_BODY) @@ -994,11 +997,17 @@ var/list/rebel_rifles = list( new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP (new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_JACKET) + if (4) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP (new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/support(new_human), WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_JACKET) /datum/equipment_preset/proc/spawn_random_upp_belt(mob/living/carbon/human/new_human) - var/random_gun = rand(1, 3) + var/random_gun = rand(1, 4) switch(random_gun) - if (1, 2) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/NY(new_human), WEAR_WAIST) + if (1 to 2) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92(new_human), WEAR_WAIST) if (3) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73(new_human), WEAR_WAIST) + if (4) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/upp(new_human), WEAR_WAIST) 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..37bc52936c40 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) @@ -1566,7 +1577,7 @@ ..() /datum/equipment_preset/survivor/upp - name = "UPP Soldier" + name = "Survivor - UPP" paygrade = "UE1" origin_override = ORIGIN_UPP rank = JOB_SURVIVOR @@ -1696,7 +1707,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71(new_human), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/PK9(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73(new_human), WEAR_WAIST) ..() @@ -1714,7 +1725,7 @@ new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret(new_human), WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/five_slot(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/PK9(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver(new_human), WEAR_WAIST) add_upp_weapon(new_human) ..() diff --git a/code/modules/gear_presets/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..4248a5e0a1be 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) @@ -126,9 +126,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/box/m94, WEAR_IN_BACK) //3.25 new_human.equip_to_slot_or_del(new /obj/item/storage/box/m94, WEAR_IN_BACK) //4.25 //waist - var/gunbelt = prob(50) ? /obj/item/storage/belt/gun/type47/NY : /obj/item/storage/belt/gun/type47/PK9 - new_human.equip_to_slot_or_del(new gunbelt, WEAR_WAIST) - pick_ammotype(new_human) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) /datum/equipment_preset/upp/soldier/proc/pick_ammotype(mob/living/carbon/human/new_human) var/percentage = rand(1, 100) @@ -266,18 +264,18 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) //body new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/medic, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP, WEAR_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/skorpion/upp/medic, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/support, WEAR_JACKET) //medic should move fast + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/bizon/upp, WEAR_J_STORE) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //póckets - var/obj/item/storage/pouch/magazine/pistol/large/ppouch = new() + var/obj/item/storage/pouch/magazine/large/ppouch = new() new_human.equip_to_slot_or_del(ppouch, WEAR_R_STORE) for(var/i = 1 to ppouch.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/skorpion, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/bizon, WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical, WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/surgical_line, WEAR_IN_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_L_STORE) @@ -292,7 +290,7 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Medic Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("UM5 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/medic, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), @@ -557,9 +555,6 @@ new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) //1 new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //1.33 new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //1.66 - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) //2 - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) //2.33 - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) //2.66 //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) //head @@ -589,7 +584,8 @@ new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/type23/dragon, WEAR_J_STORE) new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/heavy/dragonsbreath, WEAR_IN_JACKET) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/NY, WEAR_WAIST) + var/uppvetsidearm = prob(50) ? /obj/item/storage/belt/gun/type47/t73 : /obj/item/storage/belt/gun/type47/np92 + new_human.equip_to_slot_or_del(new uppvetsidearm, WEAR_WAIST) /datum/equipment_preset/upp/specialist/get_antag_clothing_equipment() return list( @@ -607,7 +603,7 @@ list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/m4a3, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47, MARINE_CAN_BUY_BELT, 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), @@ -641,9 +637,9 @@ list("Essential Heavy Set", 0, /obj/effect/essentials_set/upp_heavy, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), list("SPECIAL AMMUNITION", 0, null, null, null), - list("Rotating Ammo Drum (7.62x51mm)", 15, /obj/item/ammo_magazine/minigun , null, VENDOR_ITEM_RECOMMENDED), + list("QYJ-72 Box Magazine(7.62x54mmR)", 15, /obj/item/ammo_magazine/pkp , null, VENDOR_ITEM_RECOMMENDED), - list("ATTACHMENTS (NONE FIT GSh-7.62)", 0, null, null, null), + list("ATTACHMENTS (NONE FIT QYJ-72)", 0, null, null, null), list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), @@ -670,8 +666,8 @@ //*****************************************************************************************************/ -/datum/equipment_preset/upp/minigunner - name = "UPP Minigunner" +/datum/equipment_preset/upp/machinegunner + name = "UPP Machinegunner" flags = EQUIPMENT_PRESET_EXTRA skills = /datum/skills/upp/specialist @@ -680,15 +676,12 @@ role_comm_title = "Spc" paygrade = "UE5" -/datum/equipment_preset/upp/minigunner/load_gear(mob/living/carbon/human/new_human) +/datum/equipment_preset/upp/machinegunner/load_gear(mob/living/carbon/human/new_human) //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) //1 new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //1.33 new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) //1.66 - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) //2 - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) //2.33 - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) //2.66 //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) //head @@ -711,12 +704,15 @@ implant.on_implanted(new_human) //body - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/minigun/upp, WEAR_J_STORE) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/minigun, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pkp, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pkp, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pkp, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pkp, WEAR_IN_JACKET) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/NY/shrapnel, WEAR_WAIST) + var/uppvetsidearm = prob(50) ? /obj/item/storage/belt/gun/type47/t73 : /obj/item/storage/belt/gun/type47/np92 + new_human.equip_to_slot_or_del(new uppvetsidearm, WEAR_WAIST) // 50/50 np92 or t73 -/datum/equipment_preset/upp/minigunner/get_antag_clothing_equipment() +/datum/equipment_preset/upp/machinegunner/get_antag_clothing_equipment() return list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), @@ -760,15 +756,15 @@ list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR) ) -/datum/equipment_preset/upp/minigunner/get_antag_gear_equipment() +/datum/equipment_preset/upp/machinegunner/get_antag_gear_equipment() return list( list("HEAVY SET (MANDATORY)", 0, null, null, null), list("Essential Heavy Set", 0, /obj/effect/essentials_set/upp_heavy, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), list("SPECIAL AMMUNITION", 0, null, null, null), - list("Rotating Ammo Drum (7.62x51mm)", 15, /obj/item/ammo_magazine/minigun , null, VENDOR_ITEM_RECOMMENDED), + list("QYJ-72 Box Magazine (7.62x54mmR)", 15, /obj/item/ammo_magazine/pkp , null, VENDOR_ITEM_RECOMMENDED), - list("ATTACHMENTS (NONE FIT GSh-7.62)", 0, null, null, null), + list("ATTACHMENTS (NONE FIT QYJ-72)", 0, null, null, null), list("Angled Grip", 10, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 10, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), list("Laser Sight", 10, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), @@ -806,6 +802,7 @@ paygrade = "UE6" /datum/equipment_preset/upp/leader/load_gear(mob/living/carbon/human/new_human) + var/UPPleadsidearm = rand(1,4) //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/jima, WEAR_BACK) //face @@ -824,7 +821,14 @@ new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/NY/shrapnel, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) + switch(UPPleadsidearm) + if(1 to 2) // 50% + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) + if(3) //25% + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) + if(4) //25% + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) @@ -962,23 +966,17 @@ //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) //head new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) //uniform - var/obj/item/clothing/under/marine/veteran/UPP/mp/M = new() - var/obj/item/clothing/accessory/storage/webbing/W = new() - M.attach_accessory(new_human, W) - new_human.equip_to_slot_or_del(M, WEAR_BODY) - for(var/i in 1 to W.hold.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/mp, WEAR_BODY) //jacket new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/mp, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver, WEAR_J_STORE) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/security/MP/UPP/full, WEAR_WAIST) //limbs @@ -995,7 +993,7 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/mp, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("UL6 camouflaged jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/mp, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("UL4 camouflaged jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/mp, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), @@ -1003,7 +1001,11 @@ list("HELMET (CHOOSE 1)", 0, null, null, null), list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("UM7 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 camouflaged jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/mp, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), @@ -1118,7 +1120,6 @@ new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) @@ -1130,14 +1131,15 @@ M.attach_accessory(new_human, W) new_human.equip_to_slot_or_del(M, WEAR_BODY) for(var/i in 1 to W.hold.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/heap, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + //jacket new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/officer, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/NY, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) @@ -1163,15 +1165,15 @@ list("HELMET (CHOOSE 1)", 0, null, null, null), list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("UM7 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), list("ARMOR (CHOOSE 1)", 0, null, null, null), - list("UL6 officers jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), - list("UM5B Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), + list("UL4 officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 47 Pistol Holster Rig NY", 0, /obj/item/storage/belt/gun/type47/NY, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Type 73 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1278,7 +1280,6 @@ new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) @@ -1290,14 +1291,15 @@ M.attach_accessory(new_human, W) new_human.equip_to_slot_or_del(M, WEAR_BODY) for(var/i in 1 to W.hold.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/heap, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + //jacket new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/officer, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/NY/shrapnel, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) @@ -1316,7 +1318,6 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("UL6 officers jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), @@ -1324,11 +1325,15 @@ list("HELMET (CHOOSE 1)", 0, null, null, null), list("Armored Beret", 0, /obj/item/clothing/head/uppcap/beret, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("UM7 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 47 Pistol Holster Rig NY", 0, /obj/item/storage/belt/gun/type47/NY/shrapnel, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Type 73 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1428,6 +1433,7 @@ rank = JOB_UPP_MAY_OFFICER role_comm_title = "May." paygrade = "UO3" + skills = /datum/skills/upp/commander /datum/equipment_preset/upp/officer/major/load_gear(mob/living/carbon/human/new_human) //back @@ -1435,7 +1441,6 @@ new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) @@ -1447,14 +1452,15 @@ M.attach_accessory(new_human, W) new_human.equip_to_slot_or_del(M, WEAR_BODY) for(var/i in 1 to W.hold.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/heap, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + //jacket new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/mateba/general/impact, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) @@ -1473,19 +1479,22 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("UL6 officers jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("HELMET (CHOOSE 1)", 0, null, null, null), - list("Armored Peaked Cap", 0, /obj/item/clothing/head/uppcap/peaked, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("UM7 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Peaked Cap", 0, /obj/item/clothing/head/uppcap/peaked, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 senior officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 47 Pistol Holster Rig NY", 0, /obj/item/storage/belt/gun/type47/NY/shrapnel, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Type 74 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73/leader, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1593,7 +1602,6 @@ new_human.equip_to_slot_or_del(new /obj/item/tool/extinguisher, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/health/ceramic_plate, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/megaphone, WEAR_IN_BACK) //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/command, WEAR_L_EAR) @@ -1605,14 +1613,15 @@ M.attach_accessory(new_human, W) new_human.equip_to_slot_or_del(M, WEAR_BODY) for(var/i in 1 to W.hold.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/heap, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_ACCESSORY) + //jacket - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/officer, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/stack/medical/bruise_pack, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/type71/flamer/leader, WEAR_J_STORE) //waist - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/mateba/general/impact, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/t73/leader, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) @@ -1631,19 +1640,22 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/officer, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), - list("UL6 officers jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/officer, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack/upp, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("HELMET (CHOOSE 1)", 0, null, null, null), - list("Armored Peaked Cap", 0, /obj/item/clothing/head/uppcap/peaked, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), - list("UM7 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP/heavy, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), + list("Peaked Cap", 0, /obj/item/clothing/head/uppcap/peaked, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_REGULAR), + list("UM4 Helmet", 0, /obj/item/clothing/head/helmet/marine/veteran/UPP, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_RECOMMENDED), + + list("ARMOR (CHOOSE 1)", 0, null, null, null), + list("UL4 senior officer jacket", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/kapitan, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_REGULAR), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 47 Pistol Holster Rig NY", 0, /obj/item/storage/belt/gun/type47/NY/shrapnel, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Type 74 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/t73/leader, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -1742,10 +1754,10 @@ /datum/equipment_preset/upp/sapper/survivor/load_gear(mob/living/carbon/human/new_human) //back new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/upp, WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/revolver/nagant, WEAR_IN_BACK) //1 - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/upp, WEAR_IN_BACK) //1.3 - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/upp, WEAR_IN_BACK) //1.6 - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/revolver/upp, WEAR_IN_BACK) //2 + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/np92, WEAR_IN_BACK) //1 + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) //1.3 + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) //1.6 + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) //2 new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked, WEAR_IN_BACK) //3 new_human.equip_to_slot_or_del(new /obj/item/defenses/handheld/sentry/mini, WEAR_IN_BACK) //4 //face @@ -1845,19 +1857,19 @@ var/obj/item/clothing/accessory/storage/black_vest/tool_webbing/W = new() UPP.attach_accessory(new_human, W) new_human.equip_to_slot_or_del(UPP, WEAR_BODY) - new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/jacket, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/support, WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/glass/bottle/tricordrazine, WEAR_IN_JACKET) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/skorpion/upp/medic, WEAR_J_STORE) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/bizon/upp, WEAR_J_STORE) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //póckets - var/obj/item/storage/pouch/magazine/pistol/large/ppouch = new() + var/obj/item/storage/pouch/magazine/large/ppouch = new() new_human.equip_to_slot_or_del(ppouch, WEAR_R_STORE) for(var/i = 1 to ppouch.storage_slots) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/skorpion, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/bizon, WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical, WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/surgical_line, WEAR_IN_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_L_STORE) @@ -2105,15 +2117,17 @@ /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 new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/kdo, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/commando, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/PK9/tranq, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92/suppressed, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) @@ -2131,7 +2145,7 @@ new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK) - spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71/heap, new_human, 0, 8) + spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 8) /datum/equipment_preset/upp/commando/get_antag_clothing_equipment() return list( @@ -2152,7 +2166,7 @@ list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/PK9/tranq, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("NPZ92 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/np92/suppressed, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -2233,6 +2247,8 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/kdo/medic, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/medic, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/commando, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) @@ -2260,7 +2276,7 @@ new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET) - spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71/heap, new_human, 0, 5) + spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 5) /datum/equipment_preset/upp/commando/medic/get_antag_clothing_equipment() return list( @@ -2401,6 +2417,8 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/kdo/command, WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/commando, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp, WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) @@ -2408,7 +2426,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/PK9/tranq, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92/suppressed, WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) @@ -2422,7 +2440,7 @@ new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/box/handcuffs, WEAR_IN_BACK) - spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71/heap, new_human, 0, 7) + spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 7) /datum/equipment_preset/upp/commando/leader/get_antag_clothing_equipment() return list( @@ -2443,7 +2461,7 @@ list("BELT (CHOOSE 1)", 0, null, null, null), list("Type 41 Ammo Load Rig", 0, /obj/item/storage/belt/marine/upp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("Type 41 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/PK9/tranq, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("NPZ92 Pistol Holster Rig", 0, /obj/item/storage/belt/gun/type47/np92/suppressed, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("Auto-Injector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), @@ -2554,7 +2572,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/cct(new_human), WEAR_L_EAR) new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/welding(new_human), WEAR_EYES) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/yellow(new_human), WEAR_HANDS) - new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/PK9(new_human), WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/revolver(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP(new_human), WEAR_JACKET) new_human.equip_to_slot_or_del(new /obj/item/tool/weldpack(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_L_STORE) @@ -2576,7 +2594,9 @@ list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), - list("Korovin PK-9 Pistol", 0, /obj/item/weapon/gun/pistol/c99/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("Type 73 Pistol", 0, /obj/item/weapon/gun/pistol/t73, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_RECOMMENDED), + list("NP92 Pistol", 0, /obj/item/weapon/gun/pistol/np92, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), + list("ZHNK-72 Revolver", 0, /obj/item/weapon/gun/revolver/upp, MARINE_CAN_BUY_ATTACHMENT, VENDOR_ITEM_REGULAR), list("BELT (CHOOSE 1)", 0, null, null, null), list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), @@ -2667,9 +2687,9 @@ new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/roller/surgical, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/np92, WEAR_IN_BACK) //targeting unarmed medical personal is not a war crime in aliens(primarily because, off memory, warcrimes aren't really a thing, although this definately is bad manners), and the playerbase is HRP in this concern!(if you don't get the joke, the players regularly execute unarmed doctors in hvh events. :D) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92, WEAR_IN_BACK) //face new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP, WEAR_L_EAR) if(new_human.disabilities & NEARSIGHTED) @@ -2685,12 +2705,15 @@ new_human.equip_to_slot_or_del(UPP, WEAR_BODY) //waist new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/autoinjector/oxycodone, WEAR_IN_BELT) //limbs new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) //póckets - new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium, WEAR_R_STORE) - new_human.equip_to_slot_or_del(new /obj/item/reagent_container/hypospray/autoinjector/oxycodone, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical, WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_IN_L_STORE) @@ -2705,6 +2728,7 @@ list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/upp, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Medic Fatigues", 0, /obj/item/clothing/under/marine/veteran/UPP/medic, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_MANDATORY), + list("UL6 Personal Armor", 0, /obj/item/clothing/suit/storage/marine/faction/UPP/support, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Gloves", 0, /obj/item/clothing/gloves/marine/veteran, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/UPP, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Ration", 0, /obj/item/reagent_container/food/snacks/upp, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), 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..8109a458ac41 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 @@ -167,9 +167,9 @@ //Otherwise, if you spawn the spy next to other people //they will see messages for them putting guns and explosives into their backpack... new_human.equip_to_slot_or_del(new /obj/item/handcuffs(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/c99/upp/tranq(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/c99/tranq(new_human.back), WEAR_IN_BACK) - new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/c99/tranq(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/np92/suppressed/tranq(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92/tranq(new_human.back), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/np92/tranq(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/box/handcuffs(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/device/chameleon(new_human.back), WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) @@ -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..f3129acb23d2 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... @@ -316,7 +320,6 @@ ACCESS_MARINE_CARGO, ACCESS_MARINE_RO, ACCESS_MARINE_COMMAND, - ACCESS_MARINE_DATABASE, ACCESS_MARINE_ALPHA, ACCESS_MARINE_BRAVO, ACCESS_MARINE_CHARLIE, @@ -420,7 +423,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 +520,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 +591,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 @@ -633,6 +636,7 @@ . = ..() access = list( ACCESS_MARINE_SENIOR, + ACCESS_MARINE_DATABASE, ACCESS_MARINE_ASO, ACCESS_MARINE_COMMAND, ACCESS_MARINE_BRIG, @@ -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/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) diff --git a/code/modules/projectiles/ammo_datums.dm b/code/modules/projectiles/ammo_datums.dm index 12b8603bac21..2f6d4cb7b1b3 100644 --- a/code/modules/projectiles/ammo_datums.dm +++ b/code/modules/projectiles/ammo_datums.dm @@ -410,6 +410,13 @@ penetration = ARMOR_PENETRATION_TIER_10 damage = 45 +/datum/ammo/bullet/pistol/heavy/super/highimpact/upp + name = "high-impact pistol bullet" + sound_override = 'sound/weapons/gun_DE50.ogg' + penetration = ARMOR_PENETRATION_TIER_6 + debilitate = list(0,1.5,0,0,0,1,0,0) + flags_ammo_behavior = AMMO_BALLISTIC + /datum/ammo/bullet/pistol/heavy/super/highimpact/New() ..() RegisterSignal(src, COMSIG_AMMO_POINT_BLANK, PROC_REF(handle_battlefield_execution)) @@ -617,42 +624,43 @@ BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_penetrating) )) -/datum/ammo/bullet/revolver/nagant - name = "nagant revolver bullet" - headshot_state = HEADSHOT_OVERLAY_LIGHT //Smaller bullet. - damage = 40 +/datum/ammo/bullet/revolver/upp + name = "heavy revolver bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + penetration = ARMOR_PENETRATION_TIER_4 + damage = 70 -/datum/ammo/bullet/revolver/nagant/shrapnel +/datum/ammo/bullet/revolver/upp/shrapnel name = "shrapnel shot" headshot_state = HEADSHOT_OVERLAY_HEAVY //Gol-dang shotgun blow your fething head off. debilitate = list(0,0,0,0,0,0,0,0) icon_state = "shrapnelshot" handful_state = "shrapnel" - bonus_projectiles_type = /datum/ammo/bullet/revolver/nagant/shrapnel_bits + bonus_projectiles_type = /datum/ammo/bullet/revolver/upp/shrapnel_bits max_range = 6 - damage = 25 // + TIER_4 * 3 + damage = 40 // + TIER_4 * 3 damage_falloff = DAMAGE_FALLOFF_TIER_7 - penetration = ARMOR_PENETRATION_TIER_6 + penetration = ARMOR_PENETRATION_TIER_8 bonus_projectiles_amount = EXTRA_PROJECTILES_TIER_3 shrapnel_chance = 100 - shrapnel_type = /obj/item/shard/shrapnel/nagant - //roughly 35 or so damage + shrapnel_type = /obj/item/shard/shrapnel/upp + //roughly 90 or so damage with the additional shrapnel, around 130 in total with primary round -/datum/ammo/bullet/revolver/nagant/shrapnel/on_hit_mob(mob/M, obj/item/projectile/P) +/datum/ammo/bullet/revolver/upp/shrapnel/on_hit_mob(mob/M, obj/item/projectile/P) pushback(M, P, 1) -/datum/ammo/bullet/revolver/nagant/shrapnel_bits +/datum/ammo/bullet/revolver/upp/shrapnel_bits name = "small shrapnel" icon_state = "shrapnelshot_bit" max_range = 6 - damage = 20 - penetration = ARMOR_PENETRATION_TIER_1 + damage = 30 + penetration = ARMOR_PENETRATION_TIER_4 scatter = SCATTER_AMOUNT_TIER_1 bonus_projectiles_amount = 0 - shrapnel_type = /obj/item/shard/shrapnel/nagant/bits + shrapnel_type = /obj/item/shard/shrapnel/upp/bits /datum/ammo/bullet/revolver/small name = "small revolver bullet" @@ -862,6 +870,15 @@ damage_falloff = DAMAGE_FALLOFF_TIER_7 scatter = SCATTER_AMOUNT_TIER_5 +/datum/ammo/bullet/smg/pps43 + name = "simple submachinegun bullet" + damage = 35 + accurate_range = 7 + effective_range_max = 10 + penetration = ARMOR_PENETRATION_TIER_4 + damage_falloff = DAMAGE_FALLOFF_TIER_6 + scatter = SCATTER_AMOUNT_TIER_6 + /* //====== Rifle Ammo @@ -1057,21 +1074,21 @@ /datum/ammo/bullet/rifle/type71 name = "heavy rifle bullet" - damage = 35 - penetration = ARMOR_PENETRATION_TIER_2 + damage = 55 + penetration = ARMOR_PENETRATION_TIER_3 /datum/ammo/bullet/rifle/type71/ap name = "heavy armor-piercing rifle bullet" - damage = 20 + damage = 40 penetration = ARMOR_PENETRATION_TIER_10 /datum/ammo/bullet/rifle/type71/heap name = "heavy high-explosive armor-piercing rifle bullet" headshot_state = HEADSHOT_OVERLAY_HEAVY - damage = 50 - penetration = ARMOR_PENETRATION_TIER_8 + damage = 65 + penetration = ARMOR_PENETRATION_TIER_10 /* //====== @@ -1599,6 +1616,11 @@ . = ..() pushback(M, P, 3) +/datum/ammo/bullet/sniper/upp + name = "armor-piercing sniper bullet" + damage = 80 + penetration = ARMOR_PENETRATION_TIER_10 + /datum/ammo/bullet/sniper/anti_materiel name = "anti-materiel sniper bullet" @@ -1885,6 +1907,18 @@ penetration= ARMOR_PENETRATION_TIER_6 shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 +/datum/ammo/bullet/pkp + name = "machinegun bullet" + headshot_state = HEADSHOT_OVERLAY_MEDIUM + + accuracy = HIT_ACCURACY_TIER_1 + accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 + accuracy_var_high = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 14 + damage = 35 + penetration= ARMOR_PENETRATION_TIER_6 + shrapnel_chance = SHRAPNEL_CHANCE_TIER_2 + /* //====== Rocket Ammo @@ -2099,6 +2133,42 @@ /datum/ammo/rocket/wp/do_at_max_range(obj/item/projectile/P) drop_flame(get_turf(P), P.weapon_cause_data) +/datum/ammo/rocket/wp/upp + name = "extreme-intensity incendiary rocket" + flags_ammo_behavior = AMMO_ROCKET|AMMO_EXPLOSIVE|AMMO_STRIKES_SURFACE + damage_type = BURN + + accuracy_var_low = PROJECTILE_VARIANCE_TIER_6 + accurate_range = 8 + damage = 150 + max_range = 10 + +/datum/ammo/rocket/wp/upp/set_bullet_traits() + . = ..() + LAZYADD(traits_to_give, list( + BULLET_TRAIT_ENTRY(/datum/element/bullet_trait_incendiary) + )) + +/datum/ammo/rocket/wp/upp/drop_flame(turf/T, datum/cause_data/cause_data) + playsound(T, 'sound/weapons/gun_flamethrower3.ogg', 75, 1, 7) + if(!istype(T)) return + smoke.set_up(1, T) + smoke.start() + var/datum/reagent/napalm/upp/R = new() + new /obj/flamer_fire(T, cause_data, R, 3) + +/datum/ammo/rocket/wp/upp/on_hit_mob(mob/M, obj/item/projectile/P) + drop_flame(get_turf(M), P.weapon_cause_data) + +/datum/ammo/rocket/wp/upp/on_hit_obj(obj/O, obj/item/projectile/P) + drop_flame(get_turf(O), P.weapon_cause_data) + +/datum/ammo/rocket/wp/upp/on_hit_turf(turf/T, obj/item/projectile/P) + drop_flame(T, P.weapon_cause_data) + +/datum/ammo/rocket/wp/upp/do_at_max_range(obj/item/projectile/P) + drop_flame(get_turf(P), P.weapon_cause_data) + /datum/ammo/rocket/wp/quad name = "thermobaric rocket" flags_ammo_behavior = AMMO_ROCKET|AMMO_STRIKES_SURFACE 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 34c19c8bf4ed..994352558627 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -896,6 +896,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 @@ -996,6 +1018,9 @@ Defined in conflicts.dm of the #defines folder. //other variable zoom scopes +/obj/item/attachable/scope/variable_zoom/integrated + name = "variable zoom scope" + /obj/item/attachable/scope/variable_zoom/slavic icon_state = "slavicscope" attach_icon = "slavicscope" @@ -1701,6 +1726,81 @@ Defined in conflicts.dm of the #defines folder. if(MAP_PRISON_STATION, MAP_PRISON_STATION_V3, MAP_LV522_CHANCES_CLAIM) attach_icon = new_attach_icon ? new_attach_icon : "c_" + attach_icon +/obj/item/attachable/upp_rpg_breech + name = "HJRA-12 Breech" + desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' + icon_state = "hjra_breech" + attach_icon = "hjra_breech" + slot = "stock" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 + size_mod = 0 + +/obj/item/attachable/pkpbarrel + name = "QYJ-72 Barrel" + desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' + icon_state = "uppmg_barrel" + attach_icon = "uppmg_barrel" + slot = "muzzle" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 + size_mod = 0 + +/obj/item/attachable/stock/pkpstock + name = "QYJ-72 Stock" + desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' + icon_state = "uppmg_stock" + attach_icon = "uppmg_stock" + slot = "stock" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 20 //the thought of a upp spec beating people to death with a pk makes me laugh + size_mod = 0 + +/obj/item/attachable/type88_barrel + name = "Type-88 Barrel" + desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' + icon_state = "type88_barrel" + attach_icon = "type88_barrel" + slot = "special" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 + size_mod = 0 + +/obj/item/attachable/type73suppressor + name = "Type 73 Integrated Suppressor" + desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/barrel.dmi' + icon_state = "type73_suppressor" + attach_icon = "type73_suppressor" + slot = "muzzle" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 0 + size_mod = 0 + +/obj/item/attachable/stock/type71 + name = "Type 71 Stock" + desc = "This isn't supposed to be seperated from the gun, how'd this happen?" + icon = 'icons/obj/items/weapons/guns/attachments/stock.dmi' + icon_state = "type71_stock" + attach_icon = "type71_stock" + slot = "stock" + wield_delay_mod = WIELD_DELAY_NONE + flags_attach_features = NO_FLAGS + melee_mod = 15 + size_mod = 0 + +/obj/item/attachable/stock/type71/New() + ..() + /obj/item/attachable/stock/smg name = "submachinegun stock" desc = "A rare ARMAT stock distributed in small numbers to USCM forces. Compatible with the M39, this stock reduces recoil and improves accuracy, but at a reduction to handling and agility. Seemingly a bit more effective in a brawl" @@ -2022,6 +2122,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() @@ -2692,13 +2794,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) @@ -2729,12 +2832,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/misc.dm b/code/modules/projectiles/guns/misc.dm index 373587ff881a..5503ab03a1da 100644 --- a/code/modules/projectiles/guns/misc.dm +++ b/code/modules/projectiles/guns/misc.dm @@ -4,7 +4,7 @@ /obj/item/weapon/gun/minigun name = "\improper Ol' Painless" desc = "An enormous multi-barreled rotating gatling gun. This thing will no doubt pack a punch." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/guns_by_faction/event.dmi' icon_state = "painless" item_state = "painless" @@ -159,6 +159,125 @@ return FALSE +/obj/item/weapon/gun/pkp + name = "\improper QYJ-72 General Purpose Machine Gun" + desc = "The QYJ-72 is the standard GPMG of the Union of Progressive Peoples, chambered in 7.62x54mmR, it fires a hard-hitting cartridge with a high rate of fire. With an extremely large box at 250 rounds, the QJY-72 is designed with suppressing fire and accuracy by volume of fire at its forefront. \nAlt-click it to open the feed cover and allow for reloading." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "qjy72" + item_state = "qjy72" + + fire_sound = 'sound/weapons/gun_mg.ogg' + cocked_sound = 'sound/weapons/gun_m60_cocked.ogg' + current_mag = /obj/item/ammo_magazine/pkp + w_class = SIZE_LARGE + force = 30 //the image of a upp machinegunner beating someone to death with a gpmg makes me laugh + start_semiauto = FALSE + start_automatic = TRUE + flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_CAN_POINTBLANK|GUN_AUTO_EJECTOR|GUN_SPECIALIST|GUN_AMMO_COUNTER + gun_category = GUN_CATEGORY_HEAVY + attachable_allowed = list( + /obj/item/attachable/pkpbarrel, + /obj/item/attachable/stock/pkpstock, + ) + var/cover_open = FALSE //if the gun's feed-cover is open or not. + + +/obj/item/weapon/gun/pkp/handle_starting_attachment() + ..() + var/obj/item/attachable/attachie = new /obj/item/attachable/pkpbarrel(src) + attachie.flags_attach_features &= ~ATTACH_REMOVABLE + attachie.Attach(src) + update_attachable(attachie.slot) + + var/obj/item/attachable/pkpstock = new /obj/item/attachable/stock/pkpstock(src) + pkpstock.flags_attach_features &= ~ATTACH_REMOVABLE + pkpstock.Attach(src) + update_attachable(pkpstock.slot) + + //invisible mag harness + var/obj/item/attachable/magnetic_harness/Integrated = new(src) + Integrated.hidden = TRUE + Integrated.flags_attach_features &= ~ATTACH_REMOVABLE + Integrated.Attach(src) + update_attachable(Integrated.slot) + +/obj/item/weapon/gun/pkp/Initialize(mapload, spawn_empty) + . = ..() + if(current_mag && current_mag.current_rounds > 0) + load_into_chamber() + +/obj/item/weapon/gun/pkp/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 34, "muzzle_y" = 18,"rail_x" = 5, "rail_y" = 5, "under_x" = 39, "under_y" = 7, "stock_x" = 10, "stock_y" = 13) + + +/obj/item/weapon/gun/pkp/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_10 + burst_amount = BURST_AMOUNT_TIER_6 + burst_delay = FIRE_DELAY_TIER_9 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + fa_max_scatter = SCATTER_AMOUNT_TIER_8 + scatter = SCATTER_AMOUNT_TIER_10 + burst_scatter_mult = SCATTER_AMOUNT_TIER_8 + scatter_unwielded = SCATTER_AMOUNT_TIER_10 + damage_mult = BASE_BULLET_DAMAGE_MULT + recoil = RECOIL_AMOUNT_TIER_5 + empty_sound = 'sound/weapons/gun_empty.ogg' + +/obj/item/weapon/gun/pkp/clicked(mob/user, list/mods) + if(!mods["alt"] || !CAN_PICKUP(user, src)) + return ..() + else + if(!locate(src) in list(user.get_active_hand(), user.get_inactive_hand())) + return TRUE + if(user.get_active_hand() && user.get_inactive_hand()) + to_chat(user, SPAN_WARNING("You can't do that with your hands full!")) + return TRUE + if(!cover_open) + playsound(src.loc, 'sound/handling/smartgun_open.ogg', 50, TRUE, 3) + to_chat(user, SPAN_NOTICE("You open [src]'s feed cover, allowing the belt to be removed.")) + cover_open = TRUE + else + playsound(src.loc, 'sound/handling/smartgun_close.ogg', 50, TRUE, 3) + to_chat(user, SPAN_NOTICE("You close [src]'s feed cover.")) + cover_open = FALSE + update_icon() + return TRUE + +/obj/item/weapon/gun/pkp/replace_magazine(mob/user, obj/item/ammo_magazine/magazine) + if(!cover_open) + to_chat(user, SPAN_WARNING("[src]'s feed cover is closed! You can't put a new belt in! (alt-click to open it)")) + return + return ..() + +/obj/item/weapon/gun/pkp/unload(mob/user, reload_override, drop_override, loc_override) + if(!cover_open) + to_chat(user, SPAN_WARNING("[src]'s feed cover is closed! You can't take out the belt! (alt-click to open it)")) + return + return ..() + +/obj/item/weapon/gun/pkp/update_icon() + . = ..() + if(cover_open) + overlays += "+[base_gun_icon]_cover_open" + else + overlays += "+[base_gun_icon]_cover_closed" + +/obj/item/weapon/gun/pkp/able_to_fire(mob/living/user) + . = ..() + if(.) + if(cover_open) + to_chat(user, SPAN_WARNING("You can't fire [src] with the feed cover open! (alt-click to close)")) + return FALSE + if(!skillcheck(user, SKILL_FIREARMS, SKILL_FIREARMS_TRAINED)) + to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) + return 0 + if(!skillcheck(user, SKILL_SPEC_WEAPONS, SKILL_SPEC_ALL) && user.skills.get_skill_level(SKILL_SPEC_WEAPONS) != SKILL_SPEC_UPP) + to_chat(user, SPAN_WARNING("You don't seem to know how to use [src]...")) + return 0 + + /obj/effect/syringe_gun_dummy name = "" desc = "" diff --git a/code/modules/projectiles/guns/pistols.dm b/code/modules/projectiles/guns/pistols.dm index e2985df6a12a..c17ca5bca739 100644 --- a/code/modules/projectiles/guns/pistols.dm +++ b/code/modules/projectiles/guns/pistols.dm @@ -258,66 +258,132 @@ icon_state = "g_deagle" item_state = "g_deagle" base_gun_icon = "g_deagle" + //------------------------------------------------------- -//MAUSER MERC PISTOL //Inspired by the Makarov, specifically the "PB" version, an integrally silenced Makarov. -//Rebalanced: Now acts like an UPP M4A3. +//NP92 pistol +//Its a makarov + +/obj/item/weapon/gun/pistol/np92 + name = "\improper NP92 pistol" + desc = "The standard issue sidearm of the UPP. The NP92 is a small but powerful sidearm, well-liked by most it is issued to, although some prefer the weapon it was meant to replace, the Type 73. Takes 12 round magazines." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "np92" + item_state = "np92" + fire_sound = "88m4" + current_mag = /obj/item/ammo_magazine/pistol/np92 + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + ) + +/obj/item/weapon/gun/pistol/np92/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 27, "muzzle_y" = 20,"rail_x" = 13, "rail_y" = 22, "under_x" = 21, "under_y" = 18, "stock_x" = 21, "stock_y" = 18) + +/obj/item/weapon/gun/pistol/np92/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_12) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + scatter = SCATTER_AMOUNT_TIER_6 + burst_scatter_mult = SCATTER_AMOUNT_TIER_6 + scatter_unwielded = SCATTER_AMOUNT_TIER_6 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_3 -/obj/item/weapon/gun/pistol/c99 - name = "\improper Korovin PK-9 pistol" - desc = "The Korovin PK-9 is a cheap, robust and reliable sidearm, its design is strongly inspired by the classic ancient Makarov pistol. Commonly used by many groups, mostly those worried about cost." +/obj/item/weapon/gun/pistol/np92/suppressed + name = "\improper NPZ92 pistol" + desc = "The NPZ92 is a version of the NP92 that includes an integrated suppressor, issued sparingly to Kommando units." icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "pk9" - item_state = "pk9" + icon_state = "npz92" + item_state = "npz92" inherent_traits = list(TRAIT_GUN_SILENCED) - fire_sound = 'sound/weapons/gun_c99.ogg' - current_mag = /obj/item/ammo_magazine/pistol/c99 - flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED + fire_sound = "gun_silenced" + current_mag = /obj/item/ammo_magazine/pistol/np92/suppressed + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + attachable_allowed = list( + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + ) + +/obj/item/weapon/gun/pistol/np92/suppressed/tranq + current_mag = /obj/item/ammo_magazine/pistol/np92/tranq + +//------------------------------------------------------- +//Type 73 pistol +//Its a TT + +/obj/item/weapon/gun/pistol/t73 + name = "\improper Type 73 pistol" + desc = "The Type 73 is the once-standard issue sidearm of the UPP. Replaced by the NP92 in UPP use, it remains popular with veteran UPP troops due to familiarity and extra power. Due to an extremely large amount being produced, they tend to end up in the hands of forces attempting to arm themselves on a budget. Users include the Union of Progressive Peoples, Colonial Liberation Front, and just about any mercenary or pirate group out there." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "tt" + item_state = "tt" + fire_sound = 'sound/weapons/gun_tt.ogg' + current_mag = /obj/item/ammo_magazine/pistol/t73 + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER attachable_allowed = list( /obj/item/attachable/reddot, /obj/item/attachable/reflex, /obj/item/attachable/flashlight, /obj/item/attachable/lasersight, - /obj/item/attachable/burstfire_assembly, + /obj/item/attachable/suppressor, ) -/obj/item/weapon/gun/pistol/c99/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 22, "under_x" = 21, "under_y" = 18, "stock_x" = 21, "stock_y" = 18) +/obj/item/weapon/gun/pistol/t73/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 20,"rail_x" = 13, "rail_y" = 22, "under_x" = 22, "under_y" = 15, "stock_x" = 21, "stock_y" = 18) -/obj/item/weapon/gun/pistol/c99/set_gun_config_values() +/obj/item/weapon/gun/pistol/t73/set_gun_config_values() ..() - set_fire_delay(FIRE_DELAY_TIER_12) - accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 - accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 + set_fire_delay(FIRE_DELAY_TIER_11) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 scatter = SCATTER_AMOUNT_TIER_6 burst_scatter_mult = SCATTER_AMOUNT_TIER_6 scatter_unwielded = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_6 -/obj/item/weapon/gun/pistol/c99/upp - desc = "The Korovin PK-9 is a cheap, robust and reliable sidearm, its design is strongly inspired by the classic ancient Makarov pistol. This version has been refitted for military usage by the UPP." - icon_state = "pk9u" - item_state = "pk9u" -/obj/item/weapon/gun/pistol/c99/upp/tranq - desc = "The Korovin PK-9 is a cheap, robust and reliable sidearm, its design strongly inspired by the classic ancient Makarov pistol. This version contains a customized exterior, an integrated laser and reflex sight, and is noticeably easy to handle." - icon_state = "pk9r" - item_state = "pk9r" - current_mag = /obj/item/ammo_magazine/pistol/c99/tranq - aim_slowdown = 0 - wield_delay = WIELD_DELAY_MIN +/obj/item/weapon/gun/pistol/t73/leader + name = "\improper Type 74 pistol" + desc = "The Type 74 is the designation for a specially modified Type 73 with an integrated laser sight system, multiple lightning cuts to reduce weight in order to allow a higher pressure round to be used with the same recoil sping, and a more comfortable grip. Due to the adoption of the NP92, the Type 74 was produced in limited numbers, because of this it is typically only issued on request to high-ranking officers." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "ttb" + item_state = "ttb" + current_mag = /obj/item/ammo_magazine/pistol/t73_impact + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_ONE_HAND_WIELDED|GUN_AMMO_COUNTER + accepted_ammo = list( + /obj/item/ammo_magazine/pistol/t73, + /obj/item/ammo_magazine/pistol/t73_impact, + ) + attachable_allowed = list( + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight, + /obj/item/attachable/suppressor, + /obj/item/attachable/heavy_barrel, + ) -/obj/item/weapon/gun/pistol/c99/upp/tranq/handle_starting_attachment() +/obj/item/weapon/gun/pistol/t73/leader/handle_starting_attachment() ..() - var/obj/item/attachable/lasersight/LS = new(src) - LS.flags_attach_features &= ~ATTACH_REMOVABLE - LS.Attach(src) - update_attachable(LS.slot) + var/obj/item/attachable/lasersight/TT = new(src) + TT.flags_attach_features &= ~ATTACH_REMOVABLE + TT.hidden = TRUE + TT.Attach(src) + update_attachable(TT.slot) - var/obj/item/attachable/reflex/RX = new(src) - RX.flags_attach_features &= ~ATTACH_REMOVABLE - RX.Attach(src) - update_attachable(RX.slot) +/obj/item/weapon/gun/pistol/t73/leader/set_gun_config_values() + ..() + set_fire_delay(FIRE_DELAY_TIER_11) + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_6 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_6 + scatter = SCATTER_AMOUNT_TIER_7 + burst_scatter_mult = SCATTER_AMOUNT_TIER_6 + scatter_unwielded = SCATTER_AMOUNT_TIER_7 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_6 //------------------------------------------------------- //KT-42 //Inspired by the .44 Auto Mag pistol @@ -770,7 +836,7 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe /obj/item/weapon/gun/pistol/skorpion name = "\improper CZ-81 machine pistol" desc = "A robust, 20th century firearm that's a combination of pistol and submachinegun. Fires .32ACP caliber rounds from a 20-round magazine." - icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/guns_by_faction/colony.dmi' icon_state = "skorpion" item_state = "skorpion" @@ -798,36 +864,8 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe ..() set_fire_delay(FIRE_DELAY_TIER_11) fa_scatter_peak = 15 //shots - fa_max_scatter = SCATTER_AMOUNT_TIER_4 - - accuracy_mult = BASE_ACCURACY_MULT - scatter = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT - -/obj/item/weapon/gun/pistol/skorpion/upp - desc = "A robust, 20th century firearm modernized for the 23rd century. Fires .32ACP caliber rounds from a 20-round magazine." - icon_state = "skorpion_u" - item_state = "skorpion_u" - -/obj/item/weapon/gun/pistol/skorpion/upp/medic - random_spawn_chance = 100 - random_rail_chance = 70 - random_spawn_rail = list( - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, - ) - random_muzzle_chance = 50 - random_spawn_muzzle = list( - /obj/item/attachable/suppressor, - ) - random_under_chance = 60 - random_spawn_under = list( - /obj/item/attachable/lasersight, - ) - -/obj/item/weapon/gun/pistol/skorpion/set_gun_config_values() - ..() fa_max_scatter = SCATTER_AMOUNT_TIER_5 + accuracy_mult = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_7 damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_2 diff --git a/code/modules/projectiles/guns/revolvers.dm b/code/modules/projectiles/guns/revolvers.dm index 7a8782f34d7d..7f89e652ef4e 100644 --- a/code/modules/projectiles/guns/revolvers.dm +++ b/code/modules/projectiles/guns/revolvers.dm @@ -440,14 +440,20 @@ //------------------------------------------------------- //RUSSIAN REVOLVER //Based on the 7.62mm Russian revolvers. -/obj/item/weapon/gun/revolver/nagant - name = "\improper N-Y 7.62mm revolver" - desc = "The Nagant-Yamasaki 7.62 is an effective killing machine designed by a consortion of shady Not-Americans. It is frequently found in the hands of criminals or mercenaries." +/obj/item/weapon/gun/revolver/upp + name = "\improper ZHNK-72 revolver" + desc = "The ZHNK-72 is a UPP designed revolver. The ZHNK-72 is used by the UPP armed forces in a policing role as well as limited numbers in the hands of SNCOs." icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "ny762" - item_state = "ny762" + icon_state = "zhnk72" + item_state = "zhnk72" - fire_sound = 'sound/weapons/gun_pistol_medium.ogg' + fire_sound = "gun_pkd" //sounds stolen from bladerunner revolvers bc they arent used and sound awesome + fire_rattle = 'sound/weapons/gun_pkd_fire01_rattle.ogg' + reload_sound = 'sound/weapons/handling/pkd_speed_load.ogg' + cocked_sound = 'sound/weapons/handling/pkd_cock.wav' + unload_sound = 'sound/weapons/handling/pkd_open_chamber.ogg' + chamber_close_sound = 'sound/weapons/handling/pkd_close_chamber.ogg' + hand_reload_sound = 'sound/weapons/gun_revolver_load3.ogg' current_mag = /obj/item/ammo_magazine/internal/revolver/upp force = 8 attachable_allowed = list( @@ -460,23 +466,22 @@ /obj/item/attachable/bayonet/upp, /obj/item/attachable/heavy_barrel, /obj/item/attachable/extended_barrel, - /obj/item/attachable/compensator, /obj/item/attachable/lasersight, // Underbarrel ) -/obj/item/weapon/gun/revolver/nagant/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 21,"rail_x" = 14, "rail_y" = 23, "under_x" = 24, "under_y" = 19, "stock_x" = 24, "stock_y" = 19) +/obj/item/weapon/gun/revolver/upp/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 28, "muzzle_y" = 21,"rail_x" = 14, "rail_y" = 23, "under_x" = 19, "under_y" = 17, "stock_x" = 24, "stock_y" = 19) -/obj/item/weapon/gun/revolver/nagant/set_gun_config_values() +/obj/item/weapon/gun/revolver/upp/set_gun_config_values() ..() set_fire_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT scatter = SCATTER_AMOUNT_TIER_6 - damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_1 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_4 recoil = 0 recoil_unwielded = 0 -/obj/item/weapon/gun/revolver/nagant/shrapnel +/obj/item/weapon/gun/revolver/upp/shrapnel current_mag = /obj/item/ammo_magazine/internal/revolver/upp/shrapnel random_spawn_chance = 100 random_under_chance = 100 diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 40161e3a5cc0..4723ad882368 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() @@ -1270,6 +1277,8 @@ item_state = "type71" fire_sound = 'sound/weapons/gun_type71.ogg' + reload_sound = 'sound/weapons/handling/m41_reload.ogg' + unload_sound = 'sound/weapons/handling/m41_unload.ogg' current_mag = /obj/item/ammo_magazine/rifle/type71 wield_delay = WIELD_DELAY_FAST attachable_allowed = list( @@ -1285,10 +1294,8 @@ /obj/item/attachable/extended_barrel, /obj/item/attachable/heavy_barrel, /obj/item/attachable/verticalgrip, // Underbarrel - /obj/item/attachable/angledgrip, /obj/item/attachable/flashlight/grip, /obj/item/attachable/lasersight, - /obj/item/attachable/bipod, /obj/item/attachable/burstfire_assembly, /obj/item/attachable/attached_gun/flamer, /obj/item/attachable/attached_gun/flamer/advanced, @@ -1297,13 +1304,14 @@ 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) + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 17,"rail_x" = 10, "rail_y" = 23, "under_x" = 20, "under_y" = 13, "stock_x" = 11, "stock_y" = 13) /obj/item/weapon/gun/rifle/type71/set_gun_config_values() ..() - set_fire_delay(FIRE_DELAY_TIER_11) + set_fire_delay(FIRE_DELAY_TIER_8) set_burst_amount(BURST_AMOUNT_TIER_4) set_burst_delay(FIRE_DELAY_TIER_9) accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_4 @@ -1311,9 +1319,16 @@ scatter = SCATTER_AMOUNT_TIER_6 burst_scatter_mult = SCATTER_AMOUNT_TIER_10 scatter_unwielded = SCATTER_AMOUNT_TIER_4 - damage_mult = BASE_BULLET_DAMAGE_MULT + damage_mult = BASE_BULLET_DAMAGE_MULT //10~ more damage than m41, as well as higher ap from bullet, slightly higher DPS, 133>137.5 recoil_unwielded = RECOIL_AMOUNT_TIER_3 +/obj/item/weapon/gun/rifle/type71/handle_starting_attachment() + ..() + var/obj/item/attachable/stock/type71/STOCK = new(src) + STOCK.flags_attach_features &= ~ATTACH_REMOVABLE + STOCK.Attach(src) + update_attachable(STOCK.slot) + /obj/item/weapon/gun/rifle/type71/rifleman //add GL random_spawn_chance = 100 @@ -1328,9 +1343,7 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/lasersight, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, ) /obj/item/weapon/gun/rifle/type71/dual @@ -1348,7 +1361,6 @@ random_spawn_under = list( /obj/item/attachable/lasersight, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, ) /obj/item/weapon/gun/rifle/type71/sapper @@ -1367,7 +1379,6 @@ ) random_under_chance = 90 random_spawn_under = list( - /obj/item/attachable/lasersight, /obj/item/attachable/attached_gun/extinguisher, ) @@ -1375,10 +1386,17 @@ name = "\improper Type 71-F pulse rifle" desc = " This appears to be a less common variant of the Type 71 with an integrated flamethrower that seems especially powerful." attachable_allowed = list( - /obj/item/attachable/suppressor, + /obj/item/attachable/flashlight, // Rail + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/scope, + /obj/item/attachable/scope/mini, /obj/item/attachable/reddot, /obj/item/attachable/reflex, + /obj/item/attachable/suppressor, // Muzzle + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, /obj/item/attachable/extended_barrel, + /obj/item/attachable/heavy_barrel, ) /obj/item/weapon/gun/rifle/type71/flamer/handle_starting_attachment() @@ -1410,16 +1428,35 @@ aim_slowdown = SLOWDOWN_ADS_QUICK //Carbine is more lightweight wield_delay = WIELD_DELAY_VERY_FAST bonus_overlay_x = 2 + force = 20 //integrated melee mod from stock, which doesn't fit on the gun but is still clearly there on the sprite + attachable_allowed = list( + /obj/item/attachable/flashlight, // Rail + /obj/item/attachable/magnetic_harness, + /obj/item/attachable/scope, + /obj/item/attachable/scope/mini, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/suppressor, // Muzzle + /obj/item/attachable/bayonet, + /obj/item/attachable/bayonet/upp, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/heavy_barrel, + /obj/item/attachable/verticalgrip, // Underbarrel + /obj/item/attachable/burstfire_assembly, + ) random_spawn_muzzle = list() //no default bayonet /obj/item/weapon/gun/rifle/type71/carbine/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 18,"rail_x" = 19, "rail_y" = 22, "under_x" = 21, "under_y" = 14, "stock_x" = 24, "stock_y" = 13) + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 17,"rail_x" = 14, "rail_y" = 23, "under_x" = 25, "under_y" = 14, "stock_x" = 24, "stock_y" = 13) + +/obj/item/weapon/gun/rifle/type71/carbine/handle_starting_attachment() + return //integrated attachment code makes me want to blow my brains out /obj/item/weapon/gun/rifle/type71/carbine/set_gun_config_values() ..() - set_fire_delay(FIRE_DELAY_TIER_11) - damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_2 + set_fire_delay(FIRE_DELAY_TIER_11)//same fire rate as m41 + damage_mult = BASE_BULLET_DAMAGE_MULT - BULLET_DAMAGE_MULT_TIER_4//same damage as m41 reg bullets probably scatter_unwielded = SCATTER_AMOUNT_TIER_5 recoil_unwielded = RECOIL_AMOUNT_TIER_4 @@ -1436,9 +1473,7 @@ ) random_under_chance = 40 random_spawn_under = list( - /obj/item/attachable/lasersight, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, ) /obj/item/weapon/gun/rifle/type71/carbine/commando @@ -1446,12 +1481,13 @@ desc = "A much rarer variant of the Type 71, this version contains an integrated suppressor, integrated scope, and extensive fine-tuning. Many parts have been replaced, filed down, and improved upon. As a result, this variant is rarely seen outside of commando units." icon_state = "type73" item_state = "type73" + + fire_sound = "gun_silenced" wield_delay = 0 //Ends up being .5 seconds due to scope - current_mag = /obj/item/ammo_magazine/rifle/type71/heap + inherent_traits = list(TRAIT_GUN_SILENCED) + current_mag = /obj/item/ammo_magazine/rifle/type71/ap attachable_allowed = list( - /obj/item/attachable/lasersight, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, ) random_spawn_chance = 0 random_spawn_rail = list() @@ -1459,24 +1495,23 @@ bonus_overlay_x = 1 bonus_overlay_y = 0 -/obj/item/weapon/gun/rifle/type71/carbine/commando/handle_starting_attachment()//Making the gun have an invisible silencer since it's supposed to have one. +/obj/item/weapon/gun/rifle/type71/carbine/commando/handle_starting_attachment() ..() //suppressor - var/obj/item/attachable/suppressor/S = new(src) - S.hidden = TRUE - S.flags_attach_features &= ~ATTACH_REMOVABLE - S.Attach(src) - update_attachable(S.slot) + var/obj/item/attachable/type73suppressor/suppressor = new(src) + suppressor.flags_attach_features &= ~ATTACH_REMOVABLE + suppressor.Attach(src) + update_attachable(suppressor.slot) //scope - var/obj/item/attachable/scope/mini/F = new(src) - F.hidden = TRUE - F.flags_attach_features &= ~ATTACH_REMOVABLE - F.Attach(src) - update_attachable(F.slot) + var/obj/item/attachable/scope/mini/scope = new(src) + scope.hidden = TRUE + scope.flags_attach_features &= ~ATTACH_REMOVABLE + scope.Attach(src) + update_attachable(scope.slot) /obj/item/weapon/gun/rifle/type71/carbine/commando/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 30, "muzzle_y" = 19,"rail_x" = 10, "rail_y" = 22, "under_x" = 21, "under_y" = 18, "stock_x" = 21, "stock_y" = 18) + attachable_offset = list("muzzle_x" = 35, "muzzle_y" = 17,"rail_x" = 10, "rail_y" = 22, "under_x" = 23, "under_y" = 14, "stock_x" = 21, "stock_y" = 18) /obj/item/weapon/gun/rifle/type71/carbine/commando/set_gun_config_values() @@ -1534,7 +1569,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 diff --git a/code/modules/projectiles/guns/shotguns.dm b/code/modules/projectiles/guns/shotguns.dm index a154062c9d10..1cf35623408c 100644 --- a/code/modules/projectiles/guns/shotguns.dm +++ b/code/modules/projectiles/guns/shotguns.dm @@ -391,7 +391,7 @@ can cause issues with ammo types getting mixed up during the burst. starting_attachment_types = list(/obj/item/attachable/stock/type23) /obj/item/weapon/gun/shotgun/type23/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 31, "muzzle_y" = 19,"rail_x" = 13, "rail_y" = 21, "under_x" = 24, "under_y" = 15, "stock_x" = 1, "stock_y" = 16) + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19,"rail_x" = 13, "rail_y" = 21, "under_x" = 24, "under_y" = 15, "stock_x" = -1, "stock_y" = 17) /obj/item/weapon/gun/shotgun/type23/set_gun_config_values() ..() @@ -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/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index a404db6db9d3..22f10cafb35b 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -747,16 +747,8 @@ icon = 'icons/obj/items/weapons/guns/guns_by_faction/twe_guns.dmi' icon_state = "magsg" item_state = "magsg" + starting_attachment_types = list(/obj/item/attachable/l56a2_smartgun) /obj/item/weapon/gun/smartgun/rmc/Initialize(mapload, ...) . = ..() MD.iff_signal = FACTION_TWE - - -/obj/item/weapon/gun/smartgun/rmc/handle_starting_attachment() - ..() - var/obj/item/attachable/l56a2_smartgun/l56a2_barrel = new(src) - l56a2_barrel.flags_attach_features &= ~ATTACH_REMOVABLE - l56a2_barrel.hidden = FALSE - l56a2_barrel.Attach(src) - update_attachable(l56a2_barrel.slot) diff --git a/code/modules/projectiles/guns/smgs.dm b/code/modules/projectiles/guns/smgs.dm index 70b0acb3f2c8..89e6594c64e7 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 @@ -333,6 +338,89 @@ #undef PPSH_UNJAM_CHANCE +//------------------------------------------------------- +//Type-19, + +/obj/item/weapon/gun/smg/pps43 + name = "\improper Type-19 Submachinegun" //placeholder + desc = "An outdated, but reliable and powerful, submachinegun originating in the Union of Progressive Peoples, it is still in limited service in the UPP but is most often used by paramilitary groups or corporate security forces. It is usually used with a 35 round stick magazine, or a 71 round drum." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "insasu" + item_state = "insasu" + + fire_sound = 'sound/weapons/smg_heavy.ogg' + current_mag = /obj/item/ammo_magazine/smg/pps43 + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + attachable_allowed = list( + /obj/item/attachable/suppressor, + /obj/item/attachable/reddot, + /obj/item/attachable/reflex, + /obj/item/attachable/flashlight/grip, + /obj/item/attachable/verticalgrip, + /obj/item/attachable/lasersight, + /obj/item/attachable/flashlight, + /obj/item/attachable/extended_barrel, + /obj/item/attachable/magnetic_harness, + ) + +/obj/item/weapon/gun/smg/pps43/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 20,"rail_x" = 20, "rail_y" = 24, "under_x" = 25, "under_y" = 17, "stock_x" = 26, "stock_y" = 15) + +/obj/item/weapon/gun/smg/pps43/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_SMG + burst_delay = FIRE_DELAY_TIER_SMG + burst_amount = BURST_AMOUNT_TIER_3 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 + accuracy_mult_unwielded = BASE_ACCURACY_MULT - HIT_ACCURACY_MULT_TIER_5 + scatter = SCATTER_AMOUNT_TIER_6 + burst_scatter_mult = SCATTER_AMOUNT_TIER_4 + scatter_unwielded = SCATTER_AMOUNT_TIER_4 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_4 + recoil_unwielded = RECOIL_AMOUNT_TIER_5 + +/obj/item/weapon/gun/smg/pps43/extended_mag + current_mag = /obj/item/ammo_magazine/smg/pps43/extended +//------------------------------------------------------- +//Type 64 + +/obj/item/weapon/gun/smg/bizon + name = "\improper Type 64 Submachinegun" + desc = "The standard submachinegun of the UPP, sporting an unusual 64 round helical magazine, it has a high fire-rate, but is unusually accurate. This one has a faux-wood grip, denoting it as civilian use or as an export model." + desc_lore = "The Type 64 finds its way into the hands of more than just UPP soldiers, it has an active life with rebel groups, corporate security forces, mercenaries, less well-armed militaries, and just about everything or everyone in between." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "type64" + item_state = "type64" + + fire_sound = 'sound/weapons/smg_heavy.ogg' + current_mag = /obj/item/ammo_magazine/smg/bizon + flags_gun_features = GUN_AUTO_EJECTOR|GUN_CAN_POINTBLANK|GUN_AMMO_COUNTER + wield_delay = WIELD_DELAY_MIN + aim_slowdown = SLOWDOWN_ADS_QUICK_MINUS + +/obj/item/weapon/gun/smg/bizon/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 20,"rail_x" = 18, "rail_y" = 23, "under_x" = 26, "under_y" = 15, "stock_x" = 26, "stock_y" = 15) + +/obj/item/weapon/gun/smg/bizon/set_gun_config_values() + ..() + fire_delay = FIRE_DELAY_TIER_SMG + burst_delay = FIRE_DELAY_TIER_SMG + burst_amount = BURST_AMOUNT_TIER_4 + accuracy_mult = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_5 + accuracy_mult_unwielded = BASE_ACCURACY_MULT + HIT_ACCURACY_MULT_TIER_3 + scatter = SCATTER_AMOUNT_TIER_9 + burst_scatter_mult = SCATTER_AMOUNT_TIER_8 + scatter_unwielded = SCATTER_AMOUNT_TIER_4 + damage_mult = BASE_BULLET_DAMAGE_MULT + BULLET_DAMAGE_MULT_TIER_3 + recoil_unwielded = RECOIL_AMOUNT_TIER_5 + +/obj/item/weapon/gun/smg/bizon/upp + name = "\improper Type 64 Submachinegun" + desc = "The standard submachinegun of the UPP, sporting an unusual 64 round helical magazine, it has a high fire-rate, but is unusually accurate. This one has a black polymer grip, denoting it as in-use by the UPP military." + desc_lore = "The Type 64 finds its way into the hands of more than just UPP soldiers, it has an active life with rebel groups, corporate security forces, mercenaries, less well-armed militaries, and just about everything or everyone in between." + icon_state = "type64_u" + item_state = "type64" + //------------------------------------------------------- //GENERIC UZI //Based on the uzi submachinegun, of course. @@ -361,7 +449,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 +497,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 +653,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 184c0ed38266..400f6c928144 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 @@ -446,73 +450,56 @@ step(PMC_sniper,turn(PMC_sniper.dir,180)) PMC_sniper.apply_effect(5, WEAKEN) -//SVD //Based on the actual Dragunov DMR rifle. +//Type 88 //Based on the actual Dragunov DMR rifle. /obj/item/weapon/gun/rifle/sniper/svd - name = "\improper SVD Dragunov-033 designated marksman rifle" - desc = "A wannabe replica of an SVD, constructed from a MAR-40 by someone probably illiterate that thought the original SVD was built from an AK pattern. Fires 7.62x54mmR rounds." + name = "\improper Type 88 designated marksman rifle" + desc = "The standard issue DMR of the UPP, the Type 88 is sought after by competitive shooters and terrorists alike for its high degree of accuracy. Typically loaded with armor-piercing 7.62x54mmR rounds in a 12 round magazine." icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' - icon_state = "svd003" - item_state = "svd003" //NEEDS A ONE HANDED STATE + icon_state = "type88" + item_state = "type88" - fire_sound = 'sound/weapons/gun_kt42.ogg' + fire_sound = 'sound/weapons/gun_mg.ogg' current_mag = /obj/item/ammo_magazine/sniper/svd attachable_allowed = list( //Muzzle, /obj/item/attachable/bayonet, /obj/item/attachable/bayonet/upp_replica, /obj/item/attachable/bayonet/upp, - /obj/item/attachable/extended_barrel, - /obj/item/attachable/heavy_barrel, - //Barrel, - /obj/item/attachable/slavicbarrel, - //Rail, - /obj/item/attachable/reddot, - /obj/item/attachable/reflex, - /obj/item/attachable/flashlight, - /obj/item/attachable/magnetic_harness, - /obj/item/attachable/scope, - /obj/item/attachable/scope/variable_zoom, - /obj/item/attachable/scope/variable_zoom/slavic, - /obj/item/attachable/scope/mini, - /obj/item/attachable/scope/slavic, //Under, /obj/item/attachable/verticalgrip, - /obj/item/attachable/angledgrip, - /obj/item/attachable/lasersight, /obj/item/attachable/bipod, - //Stock, - /obj/item/attachable/stock/slavic, + //Integrated, + /obj/item/attachable/type88_barrel, ) has_aimed_shot = FALSE - flags_gun_features = GUN_AUTO_EJECTOR|GUN_WIELDED_FIRING_ONLY - starting_attachment_types = list(/obj/item/attachable/scope/variable_zoom/slavic) + flags_gun_features = GUN_AUTO_EJECTOR|GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_CAN_POINTBLANK + starting_attachment_types = list() sniper_beam_type = null skill_locked = FALSE /obj/item/weapon/gun/rifle/sniper/svd/handle_starting_attachment() ..() - var/obj/item/attachable/attachie = new /obj/item/attachable/slavicbarrel(src) + var/obj/item/attachable/attachie = new /obj/item/attachable/type88_barrel(src) attachie.flags_attach_features &= ~ATTACH_REMOVABLE attachie.Attach(src) update_attachable(attachie.slot) - attachie = new /obj/item/attachable/stock/slavic(src) - attachie.flags_attach_features &= ~ATTACH_REMOVABLE - attachie.Attach(src) - update_attachable(attachie.slot) + var/obj/item/attachable/scope/variable_zoom/integrated/type88sight = new(src) + type88sight.flags_attach_features &= ~ATTACH_REMOVABLE + type88sight.hidden = TRUE + type88sight.Attach(src) + update_attachable(type88sight.slot) /obj/item/weapon/gun/rifle/sniper/svd/set_gun_attachment_offsets() - attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 17,"rail_x" = 13, "rail_y" = 19, "under_x" = 24, "under_y" = 13, "stock_x" = 24, "stock_y" = 13) + attachable_offset = list("muzzle_x" = 32, "muzzle_y" = 17,"rail_x" = 13, "rail_y" = 19, "under_x" = 26, "under_y" = 14, "stock_x" = 24, "stock_y" = 13, "special_x" = 39, "special_y" = 18) /obj/item/weapon/gun/rifle/sniper/svd/set_gun_config_values() ..() set_fire_delay(FIRE_DELAY_TIER_6) - set_burst_amount(BURST_AMOUNT_TIER_2) - set_burst_delay(FIRE_DELAY_TIER_11) - accuracy_mult = BASE_ACCURACY_MULT + set_burst_amount(BURST_AMOUNT_TIER_1) + accuracy_mult = BASE_ACCURACY_MULT * 3 scatter = SCATTER_AMOUNT_TIER_8 - burst_scatter_mult = SCATTER_AMOUNT_TIER_6 damage_mult = BASE_BULLET_DAMAGE_MULT recoil = RECOIL_AMOUNT_TIER_5 damage_falloff_mult = 0 @@ -580,7 +567,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() ..() @@ -1332,6 +1319,56 @@ qdel(src) user.put_in_active_hand(F) +//------------------------------------------------------- +//UPP Rocket Launcher + +/obj/item/weapon/gun/launcher/rocket/upp + name = "\improper HJRA-12 Handheld Anti-Tank Grenade Launcher" + desc = "The HJRA-12 Handheld Anti-Tank Grenade Launcher is the standard Anti-Armor weapon of the UPP. It is designed to be easy to use and to take out or disable armored vehicles." + icon = 'icons/obj/items/weapons/guns/guns_by_faction/upp.dmi' + icon_state = "hjra12" + item_state = "hjra12" + skill_locked = FALSE + current_mag = /obj/item/ammo_magazine/rocket/upp/at + + attachable_allowed = list(/obj/item/attachable/upp_rpg_breech) + + flags_gun_features = GUN_WIELDED_FIRING_ONLY + + flags_item = TWOHANDED + +/obj/item/weapon/gun/launcher/rocket/upp/set_gun_attachment_offsets() + attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 6, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = -6, "stock_y" = 16, "special_x" = 37, "special_y" = 16) + +/obj/item/weapon/gun/launcher/rocket/upp/handle_starting_attachment() + ..() + var/obj/item/attachable/upp_rpg_breech/S = new(src) + S.flags_attach_features &= ~ATTACH_REMOVABLE + S.Attach(src) + update_attachables() + + var/obj/item/attachable/magnetic_harness/Integrated = new(src) + Integrated.hidden = TRUE + Integrated.flags_attach_features &= ~ATTACH_REMOVABLE + Integrated.Attach(src) + update_attachable(Integrated.slot) + +/obj/item/weapon/gun/launcher/rocket/upp/apply_bullet_effects(obj/item/projectile/projectile_to_fire, mob/user, i = 1, reflex = 0) + . = ..() + if(!HAS_TRAIT(user, TRAIT_EAR_PROTECTION) && ishuman(user)) + return + + var/backblast_loc = get_turf(get_step(user.loc, turn(user.dir, 180))) + smoke.set_up(1, 0, backblast_loc, turn(user.dir, 180)) + smoke.start() + playsound(src, 'sound/weapons/gun_rocketlauncher.ogg', 100, TRUE, 10) + for(var/mob/living/carbon/C in backblast_loc) + if(!C.lying && !HAS_TRAIT(C, TRAIT_EAR_PROTECTION)) //Have to be standing up to get the fun stuff + C.apply_damage(15, BRUTE) //The shockwave hurts, quite a bit. It can knock unarmored targets unconscious in real life + C.apply_effect(4, STUN) //For good measure + C.apply_effect(6, STUTTER) + C.emote("pain") + //------------------------------------------------------- //Flare gun. Close enough to a specialist gun? diff --git a/code/modules/projectiles/magazines/misc.dm b/code/modules/projectiles/magazines/misc.dm index d224498ebceb..87568c953211 100644 --- a/code/modules/projectiles/magazines/misc.dm +++ b/code/modules/projectiles/magazines/misc.dm @@ -6,7 +6,7 @@ name = "rotating ammo drum (7.62x51mm)" desc = "A huge ammo drum for a huge gun." caliber = "7.62x51mm" - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/event.dmi' icon_state = "painless" //PLACEHOLDER matter = list("metal" = 10000) @@ -31,6 +31,19 @@ reload_delay = 8 gun_type = /obj/item/weapon/gun/m60 +/obj/item/ammo_magazine/pkp + name = "QYJ-72 ammo box (7.62x54mmR)" + desc = "A 250 round box for the UPP's standard GPMG, the QYJ-72. Chambered in 7.62x54mmR." + caliber = "7.62x54mmR" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "qjy72" + + matter = list("metal" = 10000) + default_ammo = /datum/ammo/bullet/pkp + max_rounds = 250 + reload_delay = 12 + gun_type = /obj/item/weapon/gun/pkp + //rocket launchers /obj/item/ammo_magazine/rifle/grenadespawner diff --git a/code/modules/projectiles/magazines/pistols.dm b/code/modules/projectiles/magazines/pistols.dm index dae86cc813cc..11e6fe9dbfeb 100644 --- a/code/modules/projectiles/magazines/pistols.dm +++ b/code/modules/projectiles/magazines/pistols.dm @@ -192,21 +192,53 @@ ammo_band_color = AMMO_BAND_COLOR_AP //------------------------------------------------------- -//MAUSER MERC PISTOL //Inspired by the Makarov. +//Type 31 pistol. //A makarov -/obj/item/ammo_magazine/pistol/c99 - name = "\improper PK-9 magazine (.380)" +/obj/item/ammo_magazine/pistol/np92 + name = "\improper NP92 magazine (9x18mm Makarov)" default_ammo = /datum/ammo/bullet/pistol - caliber = ".380" + caliber = "9x18mm Makarov" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' - icon_state = "pk-9" - max_rounds = 8 - gun_type = /obj/item/weapon/gun/pistol/c99 + icon_state = "np92mag" + max_rounds = 12 + gun_type = /obj/item/weapon/gun/pistol/np92 + +/obj/item/ammo_magazine/pistol/np92/suppressed + name = "\improper NPZ92 magazine (9x18mm Makarov)" + default_ammo = /datum/ammo/bullet/pistol + caliber = "9x18mm Makarov" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "npz92mag" + max_rounds = 12 -/obj/item/ammo_magazine/pistol/c99/tranq - name = "\improper PK-9 tranquilizer magazine (.380)" +/obj/item/ammo_magazine/pistol/np92/tranq + name = "\improper NPZ92 tranq magazine (9x18mm Makarov)" default_ammo = /datum/ammo/bullet/pistol/tranq - icon_state = "pk-9_tranq" + caliber = "9x18mm Makarov" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "npz92tranqmag" + max_rounds = 12 + +//------------------------------------------------------- +//Type 73 pistol. //A TT + +/obj/item/ammo_magazine/pistol/t73 + name = "\improper Type 73 magazine (7.62x25mm Tokarev)" + default_ammo = /datum/ammo/bullet/pistol/heavy + caliber = "7.62x25mm Tokarev" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "ttmag" + max_rounds = 9 + gun_type = /obj/item/weapon/gun/pistol/t73 + +/obj/item/ammo_magazine/pistol/t73_impact + name = "\improper High Impact Type 74 magazine (7.62x25mm Tokarev)" + default_ammo = /datum/ammo/bullet/pistol/heavy/super/highimpact/upp + caliber = "7.62x25mm Tokarev" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "ttmag_impact" + max_rounds = 9 + gun_type = /obj/item/weapon/gun/pistol/t73/leader //------------------------------------------------------- //KT-42 //Inspired by the .44 Auto Mag pistol @@ -316,7 +348,7 @@ It is a modified Beretta 93R, and can fire three-round burst or single fire. Whe name = "\improper CZ-81 20-round magazine (.32ACP)" desc = "A .32ACP caliber magazine for the CZ-81." caliber = ".32ACP" - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi' icon_state = "skorpion" //PLACEHOLDER gun_type = /obj/item/weapon/gun/pistol/skorpion max_rounds = 20 diff --git a/code/modules/projectiles/magazines/revolvers.dm b/code/modules/projectiles/magazines/revolvers.dm index c9803fdf5671..07fc75a50fad 100644 --- a/code/modules/projectiles/magazines/revolvers.dm +++ b/code/modules/projectiles/magazines/revolvers.dm @@ -55,18 +55,18 @@ caliber = ".44 sabot" /obj/item/ammo_magazine/revolver/upp - name = "\improper N-Y speed loader (7.62x38mmR)" - default_ammo = /datum/ammo/bullet/revolver/nagant + name = "\improper ZHNK-72 speed loader (7.62x38mmR)" + default_ammo = /datum/ammo/bullet/revolver/upp caliber = "7.62x38mmR" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' - icon_state = "ny762" - gun_type = /obj/item/weapon/gun/revolver/nagant + icon_state = "zhnk72loader" + gun_type = /obj/item/weapon/gun/revolver/upp /obj/item/ammo_magazine/revolver/upp/shrapnel - name = "\improper N-Y shrapnel-shot speed loader (7.62x38mmR)" + name = "\improper ZHNK-72 shrapnel-shot speed loader (7.62x38mmR)" desc = "This speedloader contains seven 'shrapnel-shot' bullets, cheap recycled casings picked up off the ground and refilled with gunpowder and random scrap metal. Acts similarly to flechette." - default_ammo = /datum/ammo/bullet/revolver/nagant/shrapnel - icon_state = "ny762_shrapnel" + default_ammo = /datum/ammo/bullet/revolver/upp/shrapnel + icon_state = "zhnk72loader_shrapnel" /obj/item/ammo_magazine/revolver/small name = "\improper S&W speed loader (.38)" @@ -167,13 +167,13 @@ //RUSSIAN REVOLVER //Based on the 7.62mm Russian revolvers. /obj/item/ammo_magazine/internal/revolver/upp - default_ammo = /datum/ammo/bullet/revolver/nagant + default_ammo = /datum/ammo/bullet/revolver/upp caliber = "7.62x38mmR" max_rounds = 7 - gun_type = /obj/item/weapon/gun/revolver/nagant + gun_type = /obj/item/weapon/gun/revolver/upp /obj/item/ammo_magazine/internal/revolver/upp/shrapnel - default_ammo = /datum/ammo/bullet/revolver/nagant/shrapnel + default_ammo = /datum/ammo/bullet/revolver/upp/shrapnel //------------------------------------------------------- diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm index 57fc68c999a1..85c0c9ea4979 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" @@ -290,7 +290,9 @@ desc = "A 5.45x39mm high-capacity casket magazine for the Type 71 rifle." caliber = "5.45x39mm" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' - icon_state = "type_71" + icon_state = "type71" + ammo_band_icon = "+type71_band" + ammo_band_icon_empty = "+type71_band_e" default_ammo = /datum/ammo/bullet/rifle/type71 max_rounds = 60 gun_type = /obj/item/weapon/gun/rifle/type71 @@ -298,16 +300,14 @@ /obj/item/ammo_magazine/rifle/type71/ap name = "\improper Type 71 AP magazine (5.45x39mm)" desc = "A 5.45x39mm high-capacity casket magazine containing armor piercing rounds for the Type 71 rifle." - icon_state = "type_71_ap" default_ammo = /datum/ammo/bullet/rifle/type71/ap - bonus_overlay = "type71_ap" + ammo_band_color = AMMO_BAND_COLOR_AP /obj/item/ammo_magazine/rifle/type71/heap name = "\improper Type 71 HEAP magazine (5.45x39mm)" desc = "A 5.45x39mm high-capacity casket magazine containing the standard high explosive armor piercing rounds for the Type 71 rifle." - icon_state = "type_71_heap" default_ammo = /datum/ammo/bullet/rifle/type71/heap - bonus_overlay = "type71_heap" + ammo_band_color = AMMO_BAND_COLOR_HEAP //------------------------------------------------------- //L42A Battle Rifle diff --git a/code/modules/projectiles/magazines/smgs.dm b/code/modules/projectiles/magazines/smgs.dm index 333d47e19931..b89aee06f6be 100644 --- a/code/modules/projectiles/magazines/smgs.dm +++ b/code/modules/projectiles/magazines/smgs.dm @@ -150,6 +150,44 @@ #undef PPSH_STICK_MAGAZINE_JAM_CHANCE #undef PPSH_DRUM_MAGAZINE_JAM_CHANCE +//------------------------------------------------------- +//Type-19, based on the PPS-43 + +/obj/item/ammo_magazine/smg/pps43 + name = "\improper Type-19 stick magazine (7.62x25mm)" + desc = "A stick magazine for the Type-19 submachinegun." + caliber = "7.62x25mm" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "insasu_stickmag" + bonus_overlay = "insasu_stickmag_overlay" + max_rounds = 35 + gun_type = /obj/item/weapon/gun/smg/pps43 + default_ammo = /datum/ammo/bullet/smg/pps43 + var/bonus_mag_aim_slowdown = 0 + var/bonus_mag_wield_delay = 0 + + +/obj/item/ammo_magazine/smg/pps43/extended + name = "\improper Type-19 drum magazine (7.62x25mm)" + desc = "A drum magazine for the Type-19 submachinegun." + icon_state = "insasu_drum" + bonus_overlay = "insasu_drum_overlay" + max_rounds = 71 + w_class = SIZE_MEDIUM + bonus_mag_aim_slowdown = SLOWDOWN_ADS_QUICK_MINUS + bonus_mag_wield_delay = WIELD_DELAY_VERY_FAST +//------------------------------------------------------- +//Type 64 SMG, based on the PP Bizon. + +/obj/item/ammo_magazine/smg/bizon + name = "\improper Type 64 Helical Magazine (7.62x19mm)" + desc = "A 64 round magazine for the Type 64 submachinegun, the standard SMG of the UPP armed forces." + caliber = "7.62x19mm" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon_state = "type64mag" + max_rounds = 64 + gun_type = /obj/item/weapon/gun/smg/bizon + //------------------------------------------------------- //GENERIC UZI //Based on the uzi submachinegun, of course. diff --git a/code/modules/projectiles/magazines/specialist.dm b/code/modules/projectiles/magazines/specialist.dm index a0c646e8ba89..821273247f66 100644 --- a/code/modules/projectiles/magazines/specialist.dm +++ b/code/modules/projectiles/magazines/specialist.dm @@ -48,16 +48,16 @@ max_rounds = 6 -//SVD //Based on the actual Dragunov designated marksman rifle. +//Type 88 //Based on the actual Dragunov designated marksman rifle. /obj/item/ammo_magazine/sniper/svd - name = "\improper SVD magazine (7.62x54mmR)" - desc = "A large caliber magazine for the SVD designated marksman rifle." + name = "\improper Type-88 Magazine (7.62x54mmR)" + desc = "A large caliber magazine for the Type-88 designated marksman rifle." caliber = "7.62x54mmR" icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' - icon_state = "svd" - default_ammo = /datum/ammo/bullet/sniper/crude - max_rounds = 10 + icon_state = "type88mag" + default_ammo = /datum/ammo/bullet/sniper/upp + max_rounds = 12 gun_type = /obj/item/weapon/gun/rifle/sniper/svd //M4RA magazines @@ -337,3 +337,47 @@ default_ammo = /datum/ammo/rocket/ap/anti_tank gun_type = /obj/item/weapon/gun/launcher/rocket/anti_tank reload_delay = 100 + + +//------------------------------------------------------- +//UPP Rockets + +/obj/item/ammo_magazine/rocket/upp + name = "\improper HJRA-12 High-Explosive Rocket" + desc = "A rocket for the UPP standard-issue HJRA-12 Handheld Anti-Tank Grenade Launcher. This one is a standard High-Explosive rocket for anti-personal or light-vehicle use." + caliber = "88mm" + icon_state = "hjra_explosive" + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + + max_rounds = 1 + default_ammo = /datum/ammo/rocket + gun_type = /obj/item/weapon/gun/launcher/rocket/upp + reload_delay = 85 + +/obj/item/ammo_magazine/rocket/upp/update_icon() + if(current_rounds <= 0) + qdel(src) + else + icon_state = initial(icon_state) + +/obj/item/ammo_magazine/rocket/upp/at + name = "\improper HJRA-12 Anti-Tank Rocket" + desc = "A rocket for the UPP standard-issue HJRA-12 Handheld Anti-Tank Grenade Launcher. This one is a standard Anti-Tank rocket designed to disable or destroy hostile vehicles." + caliber = "88mm" + icon_state = "hjra_tank" + + max_rounds = 1 + default_ammo = /datum/ammo/rocket/ap/anti_tank + gun_type = /obj/item/weapon/gun/launcher/rocket/upp + reload_delay = 85 + +/obj/item/ammo_magazine/rocket/upp/incen + name = "\improper HJRA-12 Extreme-Intensity Incendiary Rocket" + desc = "A rocket for the UPP standard-issue HJRA-12 Handheld Anti-Tank Grenade Launcher. This one is an extreme-intensity incendiary rocket, using an experimental chemical designated R-189 by the UPP, it is designed to melt through fortified positions and bunkers but is most commonly used in an anti-personnal role due to over-issuing and the tempatures after use in its intended role leaving the tempature of the air incompatible with human life." + caliber = "88mm" + icon_state = "hjra_incen" + + max_rounds = 1 + default_ammo = /datum/ammo/rocket/wp/upp + gun_type = /obj/item/weapon/gun/launcher/rocket/upp + reload_delay = 85 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)) diff --git a/code/modules/reagents/chemistry_reagents/other.dm b/code/modules/reagents/chemistry_reagents/other.dm index a7f0a1143428..45e66c182e6a 100644 --- a/code/modules/reagents/chemistry_reagents/other.dm +++ b/code/modules/reagents/chemistry_reagents/other.dm @@ -788,6 +788,20 @@ PROPERTY_FIRE_PENETRATING = 1 ) +/datum/reagent/napalm/upp + name = "R189" + id = "R189" + description = "A UPP chemical, it burns at an extremely high tempature and is designed to melt directly through fortified positions or bunkers." + color = "#ffe49c" + burncolor = "#ffe49c" + burn_sprite = "dynamic" + properties = list( + PROPERTY_INTENSITY = BURN_LEVEL_TIER_9, + PROPERTY_DURATION = BURN_TIME_TIER_3, + PROPERTY_RADIUS = 6, + PROPERTY_FIRE_PENETRATING = 1, + ) + /datum/reagent/chlorinetrifluoride name = "Chlorine Trifluoride" id = "chlorine trifluoride" diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index 5ad84e17f159..16f96ce3017c 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -147,6 +147,10 @@ return if(dropship_control_lost && skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT)) + var/remaining_time = timeleft(door_control_cooldown) / 10 + if(remaining_time > 60) + to_chat(user, SPAN_WARNING("The shuttle is not responding, try again in [remaining_time] seconds.")) + return to_chat(user, SPAN_NOTICE("You start to remove the Queens override.")) if(!do_after(user, 3 MINUTES, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) to_chat(user, SPAN_WARNING("You fail to remove the Queens override")) diff --git a/code/modules/vehicles/hardpoints/hardpoint_ammo/minigun_ammo.dm b/code/modules/vehicles/hardpoints/hardpoint_ammo/minigun_ammo.dm index 23219f551a47..78222cdb3a40 100644 --- a/code/modules/vehicles/hardpoints/hardpoint_ammo/minigun_ammo.dm +++ b/code/modules/vehicles/hardpoints/hardpoint_ammo/minigun_ammo.dm @@ -1,6 +1,6 @@ /obj/item/ammo_magazine/hardpoint/ltaaap_minigun name = "LTAA-AP Minigun Magazine" - icon = 'icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi' + icon = 'icons/obj/items/weapons/guns/ammo_by_faction/event.dmi' desc = "A primary armament minigun magazine." caliber = "7.62x51mm" //Correlates to miniguns icon_state = "painless" diff --git a/colonialmarines.dme b/colonialmarines.dme index a3045760a2f7..b05f26009c1c 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -743,6 +743,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/html/changelogs/AutoChangeLog-pr-3865.yml b/html/changelogs/AutoChangeLog-pr-3865.yml new file mode 100644 index 000000000000..b9f40a81c133 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3865.yml @@ -0,0 +1,35 @@ +author: "CapCamIII" +delete-after: True +changes: + - rscadd: "Adds 6(8 if you're pedantic) new guns for the UPP, details for each in following lines." + - rscadd: "Type 19, Replacement for PPsh on colonies and black market." + - rscadd: "Type 64, replacement for scorpion, full sized SMG, 2 versions, 1 for upp, 1 for not upp" + - rscadd: "HJRA-12, RPG for UPP." + - rscadd: "Type 73, pistol for higher ranked UPP troops, UPP COs get a Type 74 which has high-impact rounds, replaces PK9 in non-UPP use." + - rscadd: "NP92, pistol, replaces PK9 in UPP use(mostly), integrally suppressed version called NPZ92 for UPP Commandos." + - rscadd: "QYJ-72, UPP GPMG, replaces minigun with UPP Minigunners" + - rscadd: "Technically resprites but due to changes closer to replaces N-Y revolver with ZHNK-72" + - rscadd: "Adds a character custom loadout Type 73, 2 mags spare." + - rscadd: "UPP helmets now work as ear protection, intended use with HJRA-12 RPG" + - rscadd: "UPP officers now have regular UM4 helmets instead of UH7 helmets in their vendors as UH7 looked ugly with their combat gear" + - rscdel: "Removes the PK9 entirely" + - rscdel: "Removes tranqs from UPP Commando loadout" + - rscdel: "Removes HEAP ammo from UPP officers and commandos, replaced with normal and AP mags when applicable" + - balance: "UPP jackets no longer have massive armor, in exchange they no longer slow and in clothing vendors a light version of UPP armor is vendable" + - balance: "UPP MPs are now armed with a ZHNK-72 belt on their jacket, with an additional shrapnelshot loader in their belt." + - balance: "Rebalances Type 71 damage/firerate/AP to be a sidegrade of M41A, about equal DPS, higher damage per shot and AP, lower fire rate, carbine is round-about the exact same as M41A however." + - balance: "Fixes UPP support armor, given to medics on their person and officers in their vendor, lighter version of UPP armor, exchanges protection for speed." + - balance: "Seperates SVD bullet damage from crude rifle bullet and buffs it as a hard-hitting AP bullet." + - balance: "Rebalances UPP revolver(now ZHNK-72), much harder hitting and has higher AP, but rarer, shrapnelshot extremely rare and good." + - balance: "Due to ammo changes, SVD no longer has burst." + - balance: "Removes ceramic plates from UPP loadouts" + - bugfix: "UPP Major now has the correct UPP Commander skillset" + - bugfix: "UPP Commander skillset can BE" + - bugfix: "Fixes typepath for UPP support/light armor, actually works now." + - spellcheck: "Renames SVD to Type 88" + - spellcheck: "Renames UPP Minigunner to UPP Machinegunner" + - spellcheck: "Renames UPP jackets to UL4 all around" + - soundadd: "Adds firing sounds for Type 73 and SVD/UPP MG" + - imageadd: "Resprites the SVD, Type 71, and Type 23, all sprites by wei/esselnek" + - imageadd: "Adds sprites for all above guns, all sprites by wei/esselnek" + - maptweak: "Changes instances of skorpion to non-upp type 64, also changes instances of ppsh to type 19" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4192.yml b/html/changelogs/AutoChangeLog-pr-4192.yml deleted file mode 100644 index cf75c5562e04..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4192.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed mapped in maps for solaris ridge not opening correctly." - - refactor: "Refactored current_map to use a global list instead to remove the need for duplicate definitions." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4196.yml b/html/changelogs/AutoChangeLog-pr-4196.yml deleted file mode 100644 index 70f42836a8de..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4196.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - ui: "Fix Hotkeys TGUI lag and the inability to map Ctrl + R. Also now offers a little bit more time to map combinations of keys." \ No newline at end of file diff --git a/html/changelogs/archive/2023-08.yml b/html/changelogs/archive/2023-08.yml index 097cc288fa17..1452b4bdaba0 100644 --- a/html/changelogs/archive/2023-08.yml +++ b/html/changelogs/archive/2023-08.yml @@ -272,3 +272,75 @@ - maptweak: Replaces some cave walls on LV624 with junglewalls (nothing will change gameplay wise) - maptweak: Adds bin to Research Chem/Req room and moves item blocking pillbox +2023-08-19: + Drathek: + - bugfix: Fixed mapped in maps for solaris ridge not opening correctly. + - refactor: Refactored current_map to use a global list instead to remove the need + for duplicate definitions. + - ui: Fix Hotkeys TGUI lag and the inability to map Ctrl + R. Also now offers a + little bit more time to map combinations of keys. +2023-08-20: + 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 +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. +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. + - 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. +2023-08-25: + Huffie56: + - bugfix: add a check before people start the long process of unlock the DS so that + people don't waste time. + realforest2001: + - rscadd: Added a new lockdown system to research. + - rscadd: Added an admin button to interact with above. diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi index c85d90ca7e7c..2fc572c9610f 100644 Binary files a/icons/mob/humans/onmob/back.dmi and b/icons/mob/humans/onmob/back.dmi differ diff --git a/icons/mob/humans/onmob/items_lefthand_1.dmi b/icons/mob/humans/onmob/items_lefthand_1.dmi index c26894b60343..09511e0fbe97 100644 Binary files a/icons/mob/humans/onmob/items_lefthand_1.dmi and b/icons/mob/humans/onmob/items_lefthand_1.dmi differ diff --git a/icons/mob/humans/onmob/items_righthand_1.dmi b/icons/mob/humans/onmob/items_righthand_1.dmi index 2e3d4d2e4171..b054325fd3b4 100644 Binary files a/icons/mob/humans/onmob/items_righthand_1.dmi and b/icons/mob/humans/onmob/items_righthand_1.dmi differ diff --git a/icons/mob/humans/onmob/suit_slot.dmi b/icons/mob/humans/onmob/suit_slot.dmi index df588b9b59ca..9f0e15209fe6 100644 Binary files a/icons/mob/humans/onmob/suit_slot.dmi and b/icons/mob/humans/onmob/suit_slot.dmi differ diff --git a/icons/obj/items/clothing/belts.dmi b/icons/obj/items/clothing/belts.dmi index 36f81ce0af87..612b4785d24f 100644 Binary files a/icons/obj/items/clothing/belts.dmi and b/icons/obj/items/clothing/belts.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi index 6d0e08c40623..2adece3b1ab1 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/colony.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/event.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/event.dmi index 7328f00f8b3d..868ae1a1211a 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/event.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/event.dmi differ diff --git a/icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi b/icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi index a6b212b5f0dc..6f160bbbe7cb 100644 Binary files a/icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi and b/icons/obj/items/weapons/guns/ammo_by_faction/upp.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments.dmi b/icons/obj/items/weapons/guns/attachments.dmi index 4a879f0d91c0..332217fe1cf0 100644 Binary files a/icons/obj/items/weapons/guns/attachments.dmi and b/icons/obj/items/weapons/guns/attachments.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/barrel.dmi b/icons/obj/items/weapons/guns/attachments/barrel.dmi index cc0c9501a46b..49f0e64e9bf8 100644 Binary files a/icons/obj/items/weapons/guns/attachments/barrel.dmi and b/icons/obj/items/weapons/guns/attachments/barrel.dmi differ diff --git a/icons/obj/items/weapons/guns/attachments/stock.dmi b/icons/obj/items/weapons/guns/attachments/stock.dmi index 8eb95d15770f..330102213689 100644 Binary files a/icons/obj/items/weapons/guns/attachments/stock.dmi and b/icons/obj/items/weapons/guns/attachments/stock.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi b/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi index 1e659671c999..caa62ef55605 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/colony.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/event.dmi b/icons/obj/items/weapons/guns/guns_by_faction/event.dmi index 3494faec7f7e..4c517b712bb2 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/event.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/event.dmi differ diff --git a/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi b/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi index 68919a4b9db4..669efcfc59c4 100644 Binary files a/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi and b/icons/obj/items/weapons/guns/guns_by_faction/upp.dmi differ diff --git a/icons/obj/items/weapons/guns/legacy/old_cmguns.dmi b/icons/obj/items/weapons/guns/legacy/old_cmguns.dmi index 24cade43454f..0c416b3605e4 100644 Binary files a/icons/obj/items/weapons/guns/legacy/old_cmguns.dmi and b/icons/obj/items/weapons/guns/legacy/old_cmguns.dmi differ diff --git a/icons/obj/structures/doors/blastdoors_shutters.dmi b/icons/obj/structures/doors/blastdoors_shutters.dmi index 0c91c00f0f79..c5ec97be49b8 100644 Binary files a/icons/obj/structures/doors/blastdoors_shutters.dmi and b/icons/obj/structures/doors/blastdoors_shutters.dmi differ diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index 32259fa72f45..d1b53b3d2bdc 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -32114,19 +32114,19 @@ }, /area/bigredv2/caves/mining) "mmz" = ( -/obj/item/ammo_magazine/pistol/skorpion{ +/obj/item/ammo_magazine/smg/bizon{ pixel_x = 5; pixel_y = -5 }, -/obj/item/weapon/gun/pistol/skorpion{ +/obj/item/weapon/gun/smg/bizon{ pixel_x = 1; pixel_y = 11 }, -/obj/item/ammo_magazine/pistol/skorpion{ +/obj/item/ammo_magazine/smg/bizon{ pixel_x = 11; pixel_y = -3 }, -/obj/item/ammo_magazine/pistol/skorpion, +/obj/item/ammo_magazine/smg/bizon, /obj/structure/machinery/light/small{ dir = 8 }, diff --git a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm index d221090da880..023b4094286e 100644 --- a/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm +++ b/maps/map_files/Ice_Colony_v3/Shivas_Snowball.dmm @@ -24178,9 +24178,9 @@ /area/shiva/exterior/junkyard) "tJX" = ( /obj/structure/closet/secure_closet/engineering_personal, -/obj/item/weapon/gun/smg/ppsh, -/obj/item/ammo_magazine/smg/ppsh, -/obj/item/ammo_magazine/smg/ppsh, +/obj/item/weapon/gun/smg/pps43, +/obj/item/ammo_magazine/smg/pps43, +/obj/item/ammo_magazine/smg/pps43, /turf/open/floor/shiva{ dir = 1 }, @@ -27086,9 +27086,9 @@ "wOf" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/structure/machinery/light/double, -/obj/item/weapon/gun/smg/ppsh, -/obj/item/ammo_magazine/smg/ppsh, -/obj/item/ammo_magazine/smg/ppsh, +/obj/item/weapon/gun/smg/pps43, +/obj/item/ammo_magazine/smg/pps43, +/obj/item/ammo_magazine/smg/pps43, /turf/open/floor/shiva{ dir = 1 }, diff --git a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm index c43a02dddf12..8ee54d9cc1df 100644 --- a/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm +++ b/maps/map_files/Sorokyne_Strata/Sorokyne_Strata.dmm @@ -1474,7 +1474,7 @@ }, /area/strata/ug/interior/jungle/deep/structures/res) "aem" = ( -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/effect/decal/cleanable/blood/gibs/core, /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/interior/outpost/gen/bball/nest) @@ -1552,7 +1552,7 @@ /area/strata/ug/interior/jungle/deep/minehead) "aeA" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /turf/open/floor/strata{ icon_state = "red1" }, @@ -4302,7 +4302,7 @@ /area/strata/ag/exterior/paths/cabin_area) "amy" = ( /obj/effect/decal/strata_decals/catwalk/prison, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /turf/open/floor/greengrid, /area/strata/ag/exterior/research_decks) "amz" = ( @@ -7015,7 +7015,7 @@ }, /area/strata/ag/interior/outpost/canteen/lower_cafeteria) "auS" = ( -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/structure/pipes/standard/manifold/hidden/cyan{ dir = 1 }, @@ -9161,7 +9161,7 @@ "aBr" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/pouch/flare/full, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/strata{ icon_state = "orange_tile" @@ -14758,7 +14758,7 @@ /turf/open/floor/strata, /area/strata/ag/exterior/research_decks) "aTo" = ( -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /turf/open/floor/strata, /area/strata/ag/exterior/research_decks) "aTp" = ( @@ -20782,7 +20782,7 @@ /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/exterior/paths/southresearch) "bpt" = ( -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/effect/decal/cleanable/blood/gibs/core, /turf/open/auto_turf/snow/brown_base/layer0, /area/strata/ag/exterior/paths/southresearch) @@ -22040,7 +22040,7 @@ "buh" = ( /obj/structure/surface/rack, /obj/item/tool/shovel/etool/folded, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/item/attachable/bayonet/upp, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/prison{ @@ -26680,7 +26680,7 @@ }, /area/strata/ag/interior/outpost/canteen) "caT" = ( -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/effect/decal/cleanable/blood/gibs/core, /turf/open/auto_turf/ice/layer1, /area/strata/ag/interior/outpost/gen/bball/nest) @@ -27006,7 +27006,7 @@ /area/strata/ag/interior/outpost/security) "cdf" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /turf/open/floor/strata{ icon_state = "red1" }, @@ -28839,7 +28839,7 @@ /turf/closed/wall/strata_ice/jungle, /area/strata/ug/interior/jungle/deep/east_dorms) "cph" = ( -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/blood/gibs/core, /turf/open/auto_turf/ice/layer1, @@ -30696,7 +30696,7 @@ /area/strata/ag/exterior/marsh/center) "enQ" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /turf/open/floor/strata{ icon_state = "red1" }, @@ -33594,7 +33594,7 @@ "jhu" = ( /obj/structure/surface/rack, /obj/item/tool/shovel/etool/folded, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/item/attachable/bayonet/upp, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, /turf/open/floor/strata{ @@ -33761,7 +33761,7 @@ /area/strata/ag/interior/mountain) "jwS" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/item/handcuffs, /turf/open/floor/strata{ icon_state = "red1" @@ -39250,7 +39250,7 @@ }, /area/strata/ag/interior/dorms) "sWr" = ( -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /obj/effect/decal/cleanable/blood/gibs/core, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/jungle/deep/east_engi) @@ -40868,7 +40868,7 @@ }, /area/strata/ug/interior/jungle/deep/structures/engi) "vsG" = ( -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /turf/open/auto_turf/strata_grass/layer1, /area/strata/ug/interior/jungle/deep/east_engi) "vsL" = ( @@ -41076,7 +41076,7 @@ /obj/structure/mirror{ pixel_x = -29 }, -/obj/item/weapon/gun/pistol/c99, +/obj/item/weapon/gun/pistol/t73, /turf/open/floor/strata{ dir = 8; icon_state = "white_cyan2" diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index ea33700eb433..186aa61b7835 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" @@ -3493,10 +3500,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple, /area/almayer/medical/containment/cell) @@ -3740,7 +3745,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 +3753,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{ @@ -4489,10 +4494,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 1 @@ -4886,10 +4889,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 +4896,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" }, @@ -4939,10 +4942,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 8 @@ -5173,7 +5174,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 +5252,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 @@ -5260,16 +5260,14 @@ icon_state = "E"; pixel_x = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/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" }, @@ -5737,10 +5735,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/upper_medical) "aso" = ( @@ -5853,7 +5848,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 +6226,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 +6731,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 +6951,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 +7410,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 +7497,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 +7826,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{ @@ -8140,13 +8138,15 @@ }, /area/almayer/medical/medical_science) "ayZ" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/light{ dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -8685,7 +8685,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 +8763,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 +8787,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 +8798,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{ @@ -8817,10 +8818,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 4 @@ -8829,7 +8828,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 +8837,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 +9067,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 +9292,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 +10084,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 +10397,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 +10417,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" @@ -10561,10 +10565,8 @@ id = "researchlockdownext_windoor"; name = "\improper Research Windoor Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/plating, /area/almayer/medical/medical_science) @@ -10672,7 +10674,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 +10702,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 +11611,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 +11619,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 +12059,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" }, @@ -12394,10 +12398,8 @@ id = "researchlockdownext_windoor"; name = "\improper Research Windoor Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -12535,7 +12537,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 +15892,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 +16177,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 +16383,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 +17111,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 +19602,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 +19911,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 +20496,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 +20826,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 +21098,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 +21297,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 +21486,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 +24978,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 +25255,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 +27088,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 +27681,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 +27693,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 +27979,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 +28847,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 +29014,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 +29032,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 +29245,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 +31295,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 @@ -32027,10 +32043,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 4 @@ -32873,7 +32887,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{ @@ -33406,7 +33420,6 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_umbilical) "eBO" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/bed, /turf/open/floor/almayer{ icon_state = "mono" @@ -34033,8 +34046,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 +34909,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 +35013,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 +35043,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 +35220,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 +35727,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 +35964,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 +36785,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 +37327,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 +38071,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 +38431,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 +39698,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 +39707,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" = ( @@ -39723,14 +39742,15 @@ /obj/structure/machinery/door/airlock/almayer/research/glass/reinforced{ name = "\improper Research Reception Laboratory" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 8; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -40309,7 +40329,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 +40453,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" @@ -40641,10 +40663,7 @@ id = "researchlockdownext_door"; name = "\improper Research Doorway Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -40845,7 +40864,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{ @@ -40972,8 +40992,8 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) "hVf" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 }, /turf/open/floor/almayer{ dir = 6; @@ -41487,7 +41507,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 +41858,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 +42182,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 +42190,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 +42360,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 +42894,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 +42996,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 +43357,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 +43397,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 +43901,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 +44065,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 +44085,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" = ( @@ -44597,10 +44621,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 8 @@ -45018,9 +45040,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" }, @@ -45028,10 +45047,11 @@ icon_state = "N"; pixel_y = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -45445,8 +45465,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 +45728,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" @@ -45894,10 +45913,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) "khd" = ( @@ -46826,7 +46842,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 +46851,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 +46890,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 +46900,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 +47039,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 +47633,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 +47972,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 +48434,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{ @@ -48498,12 +48518,12 @@ }, /area/almayer/squads/charlie) "lou" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 5 + }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -48932,7 +48952,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 +49334,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{ @@ -49638,10 +49659,7 @@ id = "researchlockdownext"; name = "\improper Research Window Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) "lJG" = ( @@ -49867,10 +49885,7 @@ id = "researchlockdownext_door"; name = "\improper Research Doorway Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -50699,11 +50714,8 @@ id = "researchlockdownext_se_2"; name = "\improper Research Window Shutter" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/plating, /area/almayer/medical/medical_science) "mnf" = ( @@ -50754,7 +50766,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 +50785,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 +51335,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 +52124,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" @@ -52282,12 +52296,12 @@ }, /area/almayer/shipboard/brig/general_equipment) "mWs" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -52341,7 +52355,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{ @@ -52496,9 +52510,6 @@ }, /area/almayer/engineering/upper_engineering/port) "naR" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/machinery/iv_drip, /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -52598,7 +52609,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 +52805,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 +52946,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 +53131,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 +53140,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 +53264,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 +53415,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{ @@ -53497,10 +53513,6 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/brig/main_office) -"nxF" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/closed/wall/almayer/white/reinforced, -/area/almayer/medical/medical_science) "nxK" = ( /obj/structure/sign/safety/high_voltage{ pixel_y = -32 @@ -54298,7 +54310,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 +54327,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 +54374,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 +54989,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 +55359,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 +55777,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 +55976,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, @@ -56239,10 +56252,8 @@ dir = 8; name = "\improper Containment Airlock" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -56774,7 +56785,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 +56850,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 +57278,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 +57372,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 +58000,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 +58101,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 +58418,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" @@ -58430,10 +58444,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple{ dir = 1 @@ -58697,9 +58709,6 @@ }, /area/almayer/living/offices) "pRn" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, /obj/structure/bed, /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -59445,10 +59454,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 +60059,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" }, @@ -60153,10 +60157,8 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/closed/wall/almayer/research/containment/wall/purple, /area/almayer/medical/containment/cell) @@ -60417,7 +60419,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" }, @@ -60462,10 +60464,7 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/medidoor/research{ name = "\improper Research Hydroponics Workshop" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -60789,7 +60788,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 +60798,7 @@ pixel_x = 1; pixel_y = 1 }, +/obj/structure/pipes/standard/manifold/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -61973,10 +61972,12 @@ }, /area/almayer/medical/lower_medical_medbay) "rmc" = ( -/obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, /turf/open/floor/almayer{ dir = 4; icon_state = "sterile_green_side" @@ -62506,7 +62507,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 +62929,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 +62938,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 +63437,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 +64758,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 +65220,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 +65636,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 +65906,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" }, @@ -65917,10 +65913,11 @@ icon_state = "N"; pixel_y = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -66264,7 +66261,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 +67171,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 +67503,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 +67736,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 +67993,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 +68040,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 +68619,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" @@ -68950,18 +68954,18 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/engine_core) "usy" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 9 + }, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, /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 +70210,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 +70497,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 +71519,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 +72055,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 @@ -72333,10 +72338,7 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -72443,10 +72445,7 @@ /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -72555,7 +72554,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 +73016,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 @@ -73029,16 +73027,15 @@ /obj/item/tool/pen{ pixel_y = -2 }, -/obj/structure/machinery/door_control/brbutton/alt{ - id = "Containment Breach"; - name = "Emergency Containment Breach"; - pixel_x = 8; - pixel_y = 10 - }, /obj/item/reagent_container/dropper{ pixel_x = -1; pixel_y = 9 }, +/obj/structure/machinery/biohazard_lockdown{ + pixel_x = 8; + pixel_y = 10 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -73195,7 +73192,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" = ( @@ -73250,21 +73247,19 @@ /turf/open/floor/almayer, /area/almayer/living/auxiliary_officer_office) "wdo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, /obj/structure/machinery/door/airlock/almayer/research/reinforced{ dir = 8; name = "\improper Containment Airlock" }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/effect/decal/warning_stripes{ icon_state = "S" }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -73304,14 +73299,11 @@ }, /area/almayer/engineering/upper_engineering/starboard) "wei" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/effect/decal/warning_stripes{ icon_state = "E"; pixel_x = 1 }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -73609,22 +73601,25 @@ }, /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 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -73791,8 +73786,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 +74001,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 +74127,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 +74680,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{ @@ -74749,12 +74745,10 @@ icon_state = "W"; pixel_x = -1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, /turf/open/floor/plating, /area/almayer/medical/containment) "wLi" = ( @@ -74795,9 +74789,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 +74841,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{ @@ -74872,10 +74866,8 @@ }, /area/almayer/squads/alpha) "wMO" = ( -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 }, /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -74921,7 +74913,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 +75773,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 +76231,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 +76383,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 +76443,6 @@ name = "\improper Containment Cell 5"; unacidable = 1 }, -/obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ icon_state = "W" }, @@ -76456,10 +76450,8 @@ icon_state = "E"; pixel_x = 1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -77093,7 +77085,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 +77857,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 +77877,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 +77922,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 +77978,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, @@ -78509,15 +78513,13 @@ icon_state = "W"; pixel_x = -1 }, -/obj/structure/machinery/door/poddoor/almayer/open{ - dir = 4; - id = "Containment Breach"; - name = "\improper Secure Airlock" - }, /obj/structure/machinery/door/airlock/almayer/research/reinforced{ dir = 8; name = "\improper Containment Airlock" }, +/obj/structure/machinery/door/poddoor/almayer/biohazard/white{ + dir = 4 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -101276,7 +101278,7 @@ bHB tIS bcm bcm -wkc +wXT cdA bcm bcm @@ -104717,7 +104719,7 @@ qjN hpN gfW omo -uFo +wkc gfW uFo omo @@ -108476,7 +108478,7 @@ vOy vOy wMO wky -ajl +sqf hon ajt mce @@ -108679,7 +108681,7 @@ vOy ayX kXw pxo -ajl +sqf kHT pjM aim @@ -108882,7 +108884,7 @@ vOy niL kXw pxo -ajl +sqf atL bkQ atL @@ -109694,7 +109696,7 @@ vOy vOy mFq vqW -ajl +sqf ybf aii avj @@ -110501,7 +110503,7 @@ jUM lou eBO pRn -nxF +vOy ayZ aCD hFC @@ -117798,16 +117800,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 +121867,7 @@ arq arq arq aze -aBo +xYZ aDe arq arq 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 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" diff --git a/sound/effects/biohazard.ogg b/sound/effects/biohazard.ogg new file mode 100644 index 000000000000..b6528f9311ca Binary files /dev/null and b/sound/effects/biohazard.ogg differ diff --git a/sound/weapons/gun_mg.ogg b/sound/weapons/gun_mg.ogg new file mode 100644 index 000000000000..9741526d31b0 Binary files /dev/null and b/sound/weapons/gun_mg.ogg differ diff --git a/sound/weapons/gun_tt.ogg b/sound/weapons/gun_tt.ogg new file mode 100644 index 000000000000..e55663329860 Binary files /dev/null and b/sound/weapons/gun_tt.ogg differ