diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 7a79b28b09..4dfa55a792 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -24,9 +24,8 @@
/tools/docker/ @Fira
/Dockerfile @Fira
-# MorrowWolf
+# Zonespace
-/maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm @morrowwolf
-/code/modules/gear_presets/survivors.dm @morrowwolf
+/code/modules/gear_presets/survivors.dm @zonespace27
# MULTIPLE OWNERS
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index b40ae85c3f..ef500b6af9 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -221,6 +221,9 @@
/// Can lockout blackmarket from ASRS console circuits.
#define TRAIT_TOOL_TRADEBAND "t_tool_tradeband"
+/// Can hack ASRS consoles to access the black market
+#define TRAIT_TOOL_BLACKMARKET_HACKER "t_tool_blackmarket_hacker"
+
// CLOTHING TRAITS
#define TRAIT_CLOTHING_HOOD "t_clothing_hood"
diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm
index d514bdedfc..37a858d766 100644
--- a/code/_onclick/hud/human.dm
+++ b/code/_onclick/hud/human.dm
@@ -116,6 +116,10 @@
return
var/mob/living/carbon/human/H = mymob
var/mob/screenmob = viewer || H
+
+ if(!screenmob?.client)
+ return
+
if(!gear.len)
inventory_shown = FALSE
return //species without inv slots don't show items.
@@ -181,6 +185,9 @@
var/mob/living/carbon/human/H = mymob
var/mob/screenmob = viewer || H
+ if(!screenmob?.client)
+ return
+
if(H.hud_used)
if(H.hud_used.hud_shown)
if(H.s_store)
diff --git a/code/datums/supply_packs/black_market.dm b/code/datums/supply_packs/black_market.dm
index 5f8fae8243..1b8464820b 100644
--- a/code/datums/supply_packs/black_market.dm
+++ b/code/datums/supply_packs/black_market.dm
@@ -127,70 +127,42 @@ Non-USCM items, from CLF, UPP, colonies, etc. Mostly combat-related.
spawn_guns() //the crate gives 2 guns
/obj/structure/largecrate/black_market/confiscated_weaponry/proc/spawn_guns()
- switch(rand(1,6))
+ switch(rand(1, 5))
if(1) //pmc
- if(prob(50))
- new /obj/item/weapon/gun/rifle/nsg23/no_lock(src)
- new /obj/item/ammo_magazine/rifle/nsg23(src)
- new /obj/item/ammo_magazine/rifle/nsg23(src)
- new /obj/item/ammo_magazine/rifle/nsg23/ap(src)
- new /obj/item/ammo_magazine/rifle/nsg23/extended(src)
- else
- new /obj/item/weapon/gun/smg/fp9000(src)
- new /obj/item/ammo_magazine/smg/fp9000(src)
- new /obj/item/ammo_magazine/smg/fp9000(src)
- new /obj/item/ammo_magazine/smg/fp9000(src)
- new /obj/item/ammo_magazine/smg/fp9000(src)
+ new /obj/item/weapon/gun/smg/fp9000(src)
+ new /obj/item/ammo_magazine/smg/fp9000(src)
+ new /obj/item/ammo_magazine/smg/fp9000(src)
+ new /obj/item/ammo_magazine/smg/fp9000(src)
+ new /obj/item/ammo_magazine/smg/fp9000(src)
if(2) //pizza
new /obj/item/weapon/gun/pistol/holdout(src)
new /obj/item/ammo_magazine/pistol/holdout(src)
if(3) //clf
- switch(rand(1, 3))
+ switch(rand(1, 2))
if(1)
- new /obj/item/weapon/twohanded/lungemine/damaged(src)
- if(2)
new /obj/item/weapon/gun/smg/uzi(src)
new /obj/item/ammo_magazine/smg/uzi/extended(src)
new /obj/item/ammo_magazine/smg/uzi(src)
new /obj/item/ammo_magazine/smg/uzi(src)
- if(3)
+ if(2)
new /obj/item/weapon/gun/smg/mac15(src)
new /obj/item/ammo_magazine/smg/mac15/extended(src)
new /obj/item/ammo_magazine/smg/mac15(src)
new /obj/item/ammo_magazine/smg/mac15(src)
if(4) //upp
- if(prob(50))
- new /obj/item/weapon/gun/rifle/type71(src)
- new /obj/item/ammo_magazine/rifle/type71/ap(src)
- new /obj/item/ammo_magazine/rifle/type71(src)
- new /obj/item/ammo_magazine/rifle/type71(src)
- else
- new /obj/item/weapon/gun/shotgun/type23/riot_control(src)
- new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src)
- new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src)
- new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src)
- new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src)
- new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src)
- new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) //NO buckshot!
+ new /obj/item/weapon/gun/shotgun/type23/riot_control(src)
+ new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src)
+ new /obj/item/ammo_magazine/handful/shotgun/heavy/beanbag(src)
+ new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src)
+ new /obj/item/ammo_magazine/handful/shotgun/heavy/flechette(src)
+ new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src)
+ new /obj/item/ammo_magazine/handful/shotgun/heavy/slug(src) //NO buckshot!
if(5) //freelancer
- if(prob(80))
- new /obj/item/weapon/gun/rifle/mar40(src)
- new /obj/item/ammo_magazine/rifle/mar40/extended(src)
- new /obj/item/ammo_magazine/rifle/mar40(src)
- new /obj/item/ammo_magazine/rifle/mar40(src)
- else
- new /obj/item/weapon/gun/rifle/mar40/lmg(src)
- new /obj/item/ammo_magazine/rifle/mar40/lmg(src)
- if(6) //VAIPO
- if(prob(50))
- new /obj/item/weapon/gun/rifle/mar40/tactical(src)
- new /obj/item/ammo_magazine/rifle/mar40/extended(src)
- new /obj/item/ammo_magazine/rifle/mar40/extended(src)
- new /obj/item/ammo_magazine/rifle/mar40(src)
- else
- 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)
+ new /obj/item/weapon/gun/rifle/mar40(src)
+ new /obj/item/ammo_magazine/rifle/mar40/extended(src)
+ new /obj/item/ammo_magazine/rifle/mar40(src)
+ new /obj/item/ammo_magazine/rifle/mar40(src)
+
/* Misc. Individual Guns */
@@ -561,10 +533,6 @@ Primarily made up of things that would be best utilized, well, shipside. Recreat
/obj/item/reagent_container/food/snacks/egg/random,
/obj/item/reagent_container/food/snacks/egg/random, //not a dupe
/obj/item/reagent_container/food/snacks/xemeatpie,
- /obj/item/reagent_container/food/snacks/monkeycube,
- /obj/item/reagent_container/food/snacks/monkeycube/farwacube,
- /obj/item/reagent_container/food/snacks/monkeycube/stokcube,
- /obj/item/reagent_container/food/snacks/monkeycube/yirencube,
/obj/item/reagent_container/food/snacks/upp,
/obj/item/reagent_container/food/snacks/mre_pack/xmas1,
/obj/item/reagent_container/food/snacks/mre_pack/xmas2,
@@ -722,13 +690,6 @@ USCM spare items, miscellaneous gear that's too niche and distant (or restricted
dollar_cost = 50
containertype = /obj/structure/largecrate/black_market
-/datum/supply_packs/contraband/surplus/surplus_m4ra_extended
- name = "surplus magazine box (Ext M4RA x 12)"
- contains = list(/obj/item/ammo_box/magazine/m4ra/ext)
- dollar_cost = 45
- crate_heat = 3
- containertype = /obj/structure/largecrate/black_market
-
/* - Misc. USCM weaponry - */
/datum/supply_packs/contraband/surplus/mk45_automag
@@ -1108,7 +1069,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro
new /obj/item/ammo_magazine/smg/mac15/extended(loc)
new /obj/item/ammo_magazine/smg/mac15/extended(loc)
loot_message = SPAN_NOTICE("It's some CLF SMG armaments.")
- if(21 to 25)
+ if(21 to 29)
// Discovered Yautja ruins.. (None of these will trigger any alarms. They are far too old, degraded, and useless for any Yautja to care.)
new /obj/item/clothing/mask/yautja_flavor(loc)
new /obj/item/clothing/suit/armor/yautja_flavor(loc)
@@ -1116,13 +1077,7 @@ Things that don't fit anywhere else. If they're meant for shipside use, they pro
new /obj/item/weapon/twohanded/yautja/glaive/damaged(loc)
new /obj/item/stack/yautja_rope(loc)
loot_message = SPAN_NOTICE("It's some strange ancient gear...?")
- if(26 to 30)
- // Damaged lunge mines, don't let the marines near these. Not even *close* to effective against even a runner.
- new /obj/item/weapon/twohanded/lungemine/damaged(loc)
- new /obj/item/weapon/twohanded/lungemine/damaged(loc)
- new /obj/item/weapon/twohanded/lungemine/damaged(loc)
- loot_message = SPAN_NOTICE("It's a bunch of lunge mines..?")
- if(31 to 35)
+ if(30 to 35)
// CLF nades!
loot_message = SPAN_NOTICE("It's a package of assorted CLF grenades!")
var/list/nades_to_pick = list(
diff --git a/code/game/gamemodes/cm_self_destruct.dm b/code/game/gamemodes/cm_self_destruct.dm
index b86de24eed..07c9c43a47 100644
--- a/code/game/gamemodes/cm_self_destruct.dm
+++ b/code/game/gamemodes/cm_self_destruct.dm
@@ -259,12 +259,12 @@ var/global/datum/authority/branch/evacuation/EvacuationAuthority //This is initi
var/list/alive_mobs = list() //Everyone who will be destroyed on the zlevel(s).
var/list/dead_mobs = list() //Everyone who only needs to see the cinematic.
for(var/mob/current_mob as anything in GLOB.mob_list) //This only does something cool for the people about to die, but should prove pretty interesting.
- if(!current_mob || !current_mob.loc)
+ var/turf/current_turf = get_turf(current_mob)
+ if(!current_mob || !current_mob.loc || !current_turf)
continue //In case something changes when we sleep().
if(current_mob.stat == DEAD)
dead_mobs |= current_mob
continue
- var/turf/current_turf = get_turf(current_mob)
if(current_turf.z in z_levels)
alive_mobs |= current_mob
shake_camera(current_mob, 110, 4)
@@ -286,6 +286,8 @@ var/global/datum/authority/branch/evacuation/EvacuationAuthority //This is initi
for(var/mob/current_mob in alive_mobs)
if(current_mob && current_mob.loc) //Who knows, maybe they escaped, or don't exist anymore.
var/turf/current_mob_turf = get_turf(current_mob)
+ if(!current_mob_turf)
+ continue
if(current_mob_turf.z in z_levels)
if(istype(current_mob.loc, /obj/structure/closet/secure_closet/freezer/fridge))
continue
diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm
index 81d498ba02..65f6fe1842 100644
--- a/code/game/machinery/bioprinter.dm
+++ b/code/game/machinery/bioprinter.dm
@@ -113,6 +113,10 @@
switch(action)
if("print")
+ if(working)
+ //If we're already printing something then we're too busy to multi task.
+ to_chat(usr, SPAN_NOTICE("[src] is busy at the moment."))
+ return FALSE
var/recipe = params["recipe_id"]
var/valid_recipe = FALSE
for(var/datum/bioprinter_recipe/product_recipes in products)
@@ -124,6 +128,10 @@
message_admins("[key_name(usr)] attempted to print an invalid recipe on \the [src].")
return FALSE
var/datum/bioprinter_recipe/recipe_datum = new recipe
+ if(stored_metal < recipe_datum.metal)
+ to_chat(usr, SPAN_NOTICE("[src] does not have enough stored metal."))
+ QDEL_NULL(recipe_datum)
+ return FALSE
stored_metal -= recipe_datum.metal
to_chat(usr, SPAN_NOTICE("\The [src] is now printing the selected organ. Please hold."))
working = TRUE
@@ -146,6 +154,8 @@
/obj/structure/machinery/bioprinter/proc/print_limb(limb_path)
if(inoperable())
+ //In case we lose power or anything between the print and the callback we don't want to permenantly break the printer
+ working = FALSE
return
new limb_path(get_turf(src))
working = FALSE
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index eb9aed4f71..86bb5f79a0 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -192,7 +192,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li
//Lifted from Unity stasis.dm and refactored. ~Zuhayr
/obj/structure/machinery/cryopod/process()
- if(occupant && !(WEAKREF(occupant) in GLOB.freed_mob_list)) //ignore freed mobs
+ if(occupant && !(occupant in GLOB.freed_mob_list)) //ignore freed mobs
//if occupant ghosted, time till despawn is severely shorter
if(!occupant.key && time_till_despawn == 10 MINUTES)
time_till_despawn -= 8 MINUTES
diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm
index ff26ce802b..7bbc86681e 100644
--- a/code/game/machinery/fax_machine.dm
+++ b/code/game/machinery/fax_machine.dm
@@ -324,22 +324,22 @@ var/list/alldepartments = list()
switch(target_department)
if(DEPARTMENT_HC)
- GLOB.USCMFaxes.Add("\[view message at [world.timeofday]\] REPLY")
+ GLOB.USCMFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
if(DEPARTMENT_PROVOST)
- GLOB.ProvostFaxes.Add("\[view message at [world.timeofday]\] REPLY")
+ GLOB.ProvostFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
if(DEPARTMENT_CMB)
- GLOB.CMBFaxes.Add("\[view message at [world.timeofday]\] REPLY")
+ GLOB.CMBFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
if(DEPARTMENT_WY)
- GLOB.WYFaxes.Add("\[view message at [world.timeofday]\] REPLY")
+ GLOB.WYFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
if(DEPARTMENT_PRESS)
- GLOB.PressFaxes.Add("\[view message at [world.timeofday]\] REPLY")
+ GLOB.PressFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
else
- GLOB.GeneralFaxes.Add("\[view message at [world.timeofday]\] REPLY")
+ GLOB.GeneralFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY")
msg_admin += "(RPLY): "
msg_admin += SPAN_STAFF_IC("Receiving fax via secure connection ... view message")
diff --git a/code/game/objects/effects/spawners/random.dm b/code/game/objects/effects/spawners/random.dm
index 450981377a..a70fb5588f 100644
--- a/code/game/objects/effects/spawners/random.dm
+++ b/code/game/objects/effects/spawners/random.dm
@@ -57,10 +57,13 @@
icon_state = "atmos"
/obj/effect/spawner/random/technology_scanner/item_to_spawn()
- return pick(prob(5);/obj/item/device/t_scanner,\
- prob(2);/obj/item/device/radio,\
- prob(5);/obj/item/device/analyzer)
-
+ return pick_weight(list(
+ "none" = 10,
+ /obj/item/device/t_scanner = 10,
+ /obj/item/device/radio = 8,
+ /obj/item/device/analyzer = 10,
+ /obj/item/device/black_market_hacking_device = 2,
+ ))
/obj/effect/spawner/random/powercell
name = "Random Powercell"
diff --git a/code/game/objects/items/circuitboards/computer.dm b/code/game/objects/items/circuitboards/computer.dm
index db19b79ac0..7276e8a7f0 100644
--- a/code/game/objects/items/circuitboards/computer.dm
+++ b/code/game/objects/items/circuitboards/computer.dm
@@ -177,7 +177,11 @@
/obj/item/circuitboard/computer/supplycomp/attackby(obj/item/tool, mob/user)
if(HAS_TRAIT(tool, TRAIT_TOOL_MULTITOOL))
- to_chat(user, SPAN_WARNING("You start messing around with the electronics of \the [src]..."))
+ to_chat(user, SPAN_WARNING("You try to pulse the circuit board, but nothing happens. Maybe you need something more specialized?"))
+ return
+
+ else if(HAS_TRAIT(tool, TRAIT_TOOL_BLACKMARKET_HACKER))
+ to_chat(user, SPAN_WARNING("You start messing around with the electronics of [src]..."))
if(do_after(user, 8 SECONDS, INTERRUPT_ALL, BUSY_ICON_FRIENDLY))
if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI))
to_chat(user, SPAN_WARNING("You have no idea what you're doing."))
@@ -191,8 +195,7 @@
to_chat(user, SPAN_WARNING("You weaken the broadcasting function with \the [tool], and the red light stops blinking, turning off. It's probably good now."))
contraband_enabled = FALSE
- if(HAS_TRAIT(tool, TRAIT_TOOL_TRADEBAND))
-
+ else if(HAS_TRAIT(tool, TRAIT_TOOL_TRADEBAND))
if(!skillcheck(user, SKILL_POLICE, SKILL_POLICE_SKILLED))
to_chat(user, SPAN_NOTICE("You do not know how to use [tool]"))
return
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 38ff8859ef..512ca8baad 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -457,6 +457,16 @@ FORENSIC SCANNER
playsound(user, 'sound/machines/twobeep.ogg', 15, TRUE)
to_chat(user, SPAN_NOTICE("You scan [hit_atom] and notice a reading on [src]'s pad, it says: ITEM HAS [market_value] VALUE "))
+/obj/item/device/black_market_hacking_device
+ name = "modified security access tuner"
+ desc = "A security access tuner with wires and electrical pins sticking out at odd angles. A handwritten label on the bottom says something about the ASRS system."
+ icon_state = "bm_hacker"
+ item_state = "analyzer"
+ w_class = SIZE_SMALL
+ flags_atom = FPRINT
+ flags_equip_slot = SLOT_WAIST
+ inherent_traits = list(TRAIT_TOOL_BLACKMARKET_HACKER)
+
/obj/item/device/cmb_black_market_tradeband
name = "\improper CMB Tradeband Compliance Device"
desc = "A device used to reset any tampering done to trading devices' signal range. Occasionally used to fix any signal chips damaged in an accident, but often for malpractice in trading. Use this with caution, as it will also reset any evidence of potential illicit trade. Created to fulfill a joint-organization requirement for CMB-ICC teams on the frontier, where tampered machinery was difficult to move and refurbish. Smugglers beware."
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 01567084d5..a4247c90a5 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -168,7 +168,7 @@
mytape.timestamp += mytape.used_capacity
var/language_known = (M.universal_speak || (speaking && (speaking.name in known_languages)))
var/mob_name = language_known ? M.GetVoice() : "Unknown"
- var/message = language_known ? msg : speaking.scramble(msg)
+ var/message = (!speaking || language_known) ? msg : speaking.scramble(msg)
mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss")]\] [mob_name] [verb], \"[italics ? "" : null][message][italics ? "" : null]\""
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index ac778c0569..d85e615bc1 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -202,13 +202,21 @@ Also change the icon to reflect the amount of sheets, if possible.*/
if(check_one_per_turf(R,usr))
return
- var/atom/O = new R.result_type(usr.loc, usr)
- usr.visible_message(SPAN_NOTICE("[usr] assembles \a [O]."),
- SPAN_NOTICE("You assemble \a [O]."))
- O.setDir(usr.dir)
+ var/atom/new_item
+ if(ispath(R.result_type, /turf))
+ var/turf/current_turf = get_turf(usr)
+ if(!current_turf)
+ return
+ new_item = current_turf.ChangeTurf(R.result_type)
+ else
+ new_item = new R.result_type(usr.loc, usr)
+
+ usr.visible_message(SPAN_NOTICE("[usr] assembles \a [new_item]."),
+ SPAN_NOTICE("You assemble \a [new_item]."))
+ new_item.setDir(usr.dir)
if(R.max_res_amount > 1)
- var/obj/item/stack/new_item = O
- new_item.amount = R.res_amount * multiplier
+ var/obj/item/stack/new_stack = new_item
+ new_stack.amount = R.res_amount * multiplier
amount -= R.req_amount * multiplier
update_icon()
@@ -218,25 +226,25 @@ Also change the icon to reflect the amount of sheets, if possible.*/
usr.drop_inv_item_on_ground(oldsrc)
qdel(oldsrc)
- if(istype(O,/obj/item/stack)) //floor stacking convenience
- var/obj/item/stack/S = O
- for(var/obj/item/stack/F in usr.loc)
- if(S.stack_id == F.stack_id && S != F)
- var/diff = F.max_amount - F.amount
- if (S.amount < diff)
- F.amount += S.amount
- qdel(S)
+ if(istype(new_item,/obj/item/stack)) //floor stacking convenience
+ var/obj/item/stack/stack_item = new_item
+ for(var/obj/item/stack/found_item in usr.loc)
+ if(stack_item.stack_id == found_item.stack_id && stack_item != found_item)
+ var/diff = found_item.max_amount - found_item.amount
+ if (stack_item.amount < diff)
+ found_item.amount += stack_item.amount
+ qdel(stack_item)
else
- S.amount -= diff
- F.amount += diff
+ stack_item.amount -= diff
+ found_item.amount += diff
break
- O?.add_fingerprint(usr)
+ new_item?.add_fingerprint(usr)
//BubbleWrap - so newly formed boxes are empty
- if(isstorage(O))
- for (var/obj/item/I in O)
- qdel(I)
+ if(isstorage(new_item))
+ for (var/obj/item/found_item in new_item)
+ qdel(found_item)
//BubbleWrap END
if(src && usr.interactee == src) //do not reopen closed window
INVOKE_ASYNC(src, PROC_REF(interact), usr)
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 509690a8dc..2514e2e5f1 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -98,6 +98,11 @@
/obj/item/storage/firstaid/regular/empty/fill_preset_inventory()
return
+/obj/item/storage/firstaid/regular/response
+ desc = "It's an emergency medical kit containing basic medication and equipment. No training required to use. This one is simpler and requires no training to store."
+ required_skill_for_nest_opening = SKILL_MEDICAL
+ required_skill_level_for_nest_opening = SKILL_MEDICAL_DEFAULT
+
/obj/item/storage/firstaid/robust
icon_state = "firstaid"
diff --git a/code/modules/admin/player_panel/actions/antag.dm b/code/modules/admin/player_panel/actions/antag.dm
index b3b62243c8..b1c2da6be1 100644
--- a/code/modules/admin/player_panel/actions/antag.dm
+++ b/code/modules/admin/player_panel/actions/antag.dm
@@ -56,9 +56,8 @@
if(params["leader"])
preset = GLOB.gear_path_presets_list[/datum/equipment_preset/other/xeno_cultist/leader]
-
- preset.load_race(H, params["hivenumber"])
- preset.load_status(H)
+ preset.load_race(H)
+ preset.load_status(H, params["hivenumber"])
var/title = params["leader"]? "xeno cultist leader" : "cultist"
diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm
index 5b563c840d..ce0cc931a5 100644
--- a/code/modules/admin/tabs/event_tab.dm
+++ b/code/modules/admin/tabs/event_tab.dm
@@ -322,7 +322,7 @@
if(!admin_holder)
return
- var/list/options = list("Weyland-Yutani", "High Command", "Provost", "Press", "Other", "Cancel")
+ var/list/options = list("Weyland-Yutani", "High Command", "Provost", "Press", "CMB", "Other", "Cancel")
var/answer = tgui_input_list(src, "Which kind of faxes would you like to see?", "Faxes", options)
switch(answer)
if("Weyland-Yutani")
diff --git a/code/modules/admin/tabs/server_tab.dm b/code/modules/admin/tabs/server_tab.dm
index 6e5ded2320..84c9426dfa 100644
--- a/code/modules/admin/tabs/server_tab.dm
+++ b/code/modules/admin/tabs/server_tab.dm
@@ -6,10 +6,6 @@
if (!usr.client.admin_holder || !(usr.client.admin_holder.rights & R_MOD))
return
- if(!check_rights(R_DEBUG, FALSE) && SSticker.current_state != GAME_STATE_FINISHED)
- to_chat(usr, "You can't restart the world until the round has ended!")
- return
-
var/confirm = alert("Restart the game world?", "Restart", "Yes", "Cancel")
if(confirm == "Cancel")
return
diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm
index 31f99870fe..64647b8f87 100644
--- a/code/modules/admin/topic/topic.dm
+++ b/code/modules/admin/topic/topic.dm
@@ -836,14 +836,14 @@
if(href_list["makecultist"])
var/datum/equipment_preset/preset = GLOB.gear_path_presets_list[/datum/equipment_preset/other/xeno_cultist]
- preset.load_race(H, hive.hivenumber)
- preset.load_status(H)
+ preset.load_race(H)
+ preset.load_status(H, hive.hivenumber)
message_admins("[key_name_admin(usr)] has made [key_name_admin(H)] into a cultist for [hive.name].")
else if(href_list["makecultistleader"])
var/datum/equipment_preset/preset = GLOB.gear_path_presets_list[/datum/equipment_preset/other/xeno_cultist/leader]
- preset.load_race(H, hive.hivenumber)
- preset.load_status(H)
+ preset.load_race(H)
+ preset.load_status(H, hive.hivenumber)
message_admins("[key_name_admin(usr)] has made [key_name_admin(H)] into a cultist leader for [hive.name].")
H.faction = hive.internal_faction
@@ -1310,11 +1310,10 @@
if(send_choice != "Send")
return
GLOB.fax_contents += fax_message // save a copy
-
- GLOB.USCMFaxes.Add("\[view reply at [world.timeofday]\]")
-
var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
+ GLOB.USCMFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]")
+
var/msg_ghost = SPAN_NOTICE("PRESS REPLY: ")
msg_ghost += "Transmitting '[customname]' via secure connection ... "
msg_ghost += "view message"
@@ -1393,10 +1392,10 @@
return
GLOB.fax_contents += fax_message // save a copy
- GLOB.USCMFaxes.Add("\[view reply at [world.timeofday]\]")
-
var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
+ GLOB.USCMFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]")
+
var/msg_ghost = SPAN_NOTICE("USCM FAX REPLY: ")
msg_ghost += "Transmitting '[customname]' via secure connection ... "
msg_ghost += "view message"
@@ -1472,12 +1471,12 @@
return
GLOB.fax_contents += fax_message // save a copy
- GLOB.WYFaxes.Add("\[view reply at [world.timeofday]\]") //Add replies so that mods know what the hell is goin on with the RP
-
var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
if(!customname)
return
+ GLOB.WYFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") //Add replies so that mods know what the hell is goin on with the RP
+
var/msg_ghost = SPAN_NOTICE("WEYLAND-YUTANI FAX REPLY: ")
msg_ghost += "Transmitting '[customname]' via secure connection ... "
msg_ghost += "view message"
@@ -1554,12 +1553,12 @@
return
GLOB.fax_contents += fax_message // save a copy
- GLOB.CMBFaxes.Add("\[view reply at [world.timeofday]\]") //Add replies so that mods know what the hell is goin on with the RP
-
var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null
if(!customname)
return
+ GLOB.CMBFaxes.Add("\[view '[customname]' from [key_name(usr)] at [time2text(world.timeofday, "hh:mm:ss")]\]") //Add replies so that mods know what the hell is goin on with the RP
+
var/msg_ghost = SPAN_NOTICE("COLONIAL MARSHAL BUREAU FAX REPLY: ")
msg_ghost += "Transmitting '[customname]' via secure connection ... "
msg_ghost += "view message"
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 758fd2327e..5f10b8d24d 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -753,6 +753,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
//
/client/proc/giveadminhelpverb()
+ if(!src)
+ return
add_verb(src, /client/verb/adminhelp)
deltimer(adminhelptimerid)
adminhelptimerid = 0
diff --git a/code/modules/admin/verbs/freeforghosts.dm b/code/modules/admin/verbs/freeforghosts.dm
index 24c261ee18..4bf5549f30 100644
--- a/code/modules/admin/verbs/freeforghosts.dm
+++ b/code/modules/admin/verbs/freeforghosts.dm
@@ -20,7 +20,7 @@
if(mind || client)
ghostize(FALSE)
- GLOB.freed_mob_list |= WEAKREF(src)
+ GLOB.freed_mob_list |= src
if(!notify)
return
diff --git a/code/modules/admin/verbs/mob_verbs.dm b/code/modules/admin/verbs/mob_verbs.dm
index 4809d9b2e6..351d281e18 100644
--- a/code/modules/admin/verbs/mob_verbs.dm
+++ b/code/modules/admin/verbs/mob_verbs.dm
@@ -164,7 +164,7 @@
if(!H.get_type_in_ears(/obj/item/device/radio/headset))
to_chat(usr, "The person you are trying to contact is not wearing a headset")
return
- to_chat(H, SPAN_DANGER("Message received through headset. [message_option] Transmission \"[msg]\""))
+ to_chat(H, SPAN_ANNOUNCEMENT_HEADER_BLUE("Message received through headset. [message_option] Transmission \"[msg]\""))
var/message = WRAP_STAFF_LOG(usr, SPAN_STAFF_IC("subtle messaged [key_name(M)] as [message_option], saying \"[msg]\" in [get_area(M)] ([M.x],[M.y],[M.z])."))
message_admins(message, M.x, M.y, M.z)
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index bce5757a90..8e26342862 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -330,13 +330,8 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list(
prefs.last_ip = address //these are gonna be used for banning
prefs.last_id = computer_id //these are gonna be used for banning
fps = prefs.fps
- xeno_prefix = prefs.xeno_prefix
- xeno_postfix = prefs.xeno_postfix
- xeno_name_ban = prefs.xeno_name_ban
- if(!xeno_prefix || xeno_name_ban)
- xeno_prefix = "XX"
- if(!xeno_postfix || xeno_name_ban)
- xeno_postfix = ""
+
+ load_xeno_name()
human_name_ban = prefs.human_name_ban
@@ -791,3 +786,12 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list(
if(admin_holder)
admin_holder.particle_test = new /datum/particle_editor(in_atom)
admin_holder.particle_test.tgui_interact(mob)
+
+/client/proc/load_xeno_name()
+ xeno_prefix = prefs.xeno_prefix
+ xeno_postfix = prefs.xeno_postfix
+ xeno_name_ban = prefs.xeno_name_ban
+ if(!xeno_prefix || xeno_name_ban)
+ xeno_prefix = "XX"
+ if(!xeno_postfix || xeno_name_ban)
+ xeno_postfix = ""
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 554ba28e41..1da30d6e47 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -1409,6 +1409,7 @@ var/const/MAX_SAVE_SLOTS = 10
if(length(new_xeno_prefix)==0)
xeno_prefix = "XX"
+ owner.load_xeno_name()
else
var/all_ok = TRUE
for(var/i=1, i<=length(new_xeno_prefix), i++)
@@ -1420,6 +1421,7 @@ var/const/MAX_SAVE_SLOTS = 10
all_ok = FALSE //everything else - won't
if(all_ok)
xeno_prefix = new_xeno_prefix
+ owner.load_xeno_name()
else
to_chat(user, "Invalid Xeno Prefix. Your Prefix can contain either single letter or two letters.")
@@ -1444,6 +1446,7 @@ var/const/MAX_SAVE_SLOTS = 10
return
else if(length(new_xeno_postfix)==0)
xeno_postfix = ""
+ owner.load_xeno_name()
else
var/all_ok = TRUE
var/first_char = TRUE
@@ -1469,6 +1472,7 @@ var/const/MAX_SAVE_SLOTS = 10
first_char = FALSE
if(all_ok)
xeno_postfix = new_xeno_postfix
+ owner.load_xeno_name()
else
to_chat(user, "Invalid Xeno Postfix. Your Postfix can contain single letter and an optional digit after it.")
@@ -1697,6 +1701,8 @@ var/const/MAX_SAVE_SLOTS = 10
if("origin")
var/choice = tgui_input_list(user, "Please choose your character's origin.", "Origin Selection", GLOB.player_origins)
var/datum/origin/picked_choice = GLOB.origins[choice]
+ if(!picked_choice)
+ return
if(tgui_alert(user, "You've selected [picked_choice.name]. [picked_choice.desc]", "Selected Origin", list("Confirm", "Cancel")) == "Cancel")
return
if(choice)
diff --git a/code/modules/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm
index 96ded23c8a..bee8e009ab 100644
--- a/code/modules/cm_aliens/structures/special/pylon_core.dm
+++ b/code/modules/cm_aliens/structures/special/pylon_core.dm
@@ -284,7 +284,7 @@
linked_hive.stored_larva++
linked_hive.hijack_burrowed_left--
if(GLOB.xeno_queue_candidate_count < 1 + count_spawned)
- notify_ghosts(header = "Claim Xeno", message = "The Hive has gained another burrowed larva! Click to take it.", source = src, action = NOTIFY_JOIN_XENO, enter_link = "join_xeno")
+ notify_ghosts(header = "Claim Xeno", message = "The Hive has gained another burrowed larva! Click to take it.", source = src, action = NOTIFY_JOIN_XENO, enter_link = "join_xeno=1")
if(surge_cooldown > 30 SECONDS) //mostly for sanity purposes
surge_cooldown = surge_cooldown - surge_incremental_reduction //ramps up over time
if(linked_hive.hijack_burrowed_left < 1)
diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm
index 272882779d..c10d148a21 100644
--- a/code/modules/cm_preds/yaut_bracers.dm
+++ b/code/modules/cm_preds/yaut_bracers.dm
@@ -116,6 +116,9 @@
var/mob/living/carbon/human/human_owner = owner
var/turf/wearer_turf = get_turf(owner)
SSminimaps.remove_marker(owner)
+ if(!wearer_turf)
+ return
+
if(!isyautja(owner))
if(owner.stat >= DEAD)
if(human_owner.undefibbable)
diff --git a/code/modules/economy/cash.dm b/code/modules/economy/cash.dm
index bba80f8576..ad09eaf3fa 100644
--- a/code/modules/economy/cash.dm
+++ b/code/modules/economy/cash.dm
@@ -87,7 +87,7 @@
/obj/item/spacecash/bundle/attack_self(mob/user)
..()
var/oldloc = loc
- var/amount = tgui_input_number(user, "How many dollars do you want to take? (0 to [src.worth])", "Take Money", 20, src.worth, 0)
+ var/amount = tgui_input_number(user, "How many dollars do you want to take? (0 to [src.worth])", "Take Money", 0, src.worth, 0)
amount = round(Clamp(amount, 0, src.worth))
if(amount == 0)
return
diff --git a/code/modules/gear_presets/clf.dm b/code/modules/gear_presets/clf.dm
index 39a7b648b9..9afc89ab65 100644
--- a/code/modules/gear_presets/clf.dm
+++ b/code/modules/gear_presets/clf.dm
@@ -181,7 +181,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/incendiary/molotov, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/construction/low_grade_full, WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert, WEAR_R_STORE)
@@ -377,7 +377,7 @@
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
@@ -462,7 +462,7 @@
//standard backpack stuff
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack(new_human), WEAR_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/flashlight(new_human), WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar(new_human), WEAR_IN_BACK)
//specialist backpack stuff
new_human.equip_to_slot_or_del(new /obj/item/prop/folded_anti_tank_sadar(new_human), WEAR_IN_BACK)
@@ -591,7 +591,7 @@
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/m1911(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/pistol/m1911(new_human), WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/flashlight(new_human), WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE)
@@ -843,7 +843,7 @@
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
diff --git a/code/modules/gear_presets/contractor.dm b/code/modules/gear_presets/contractor.dm
index 9a4497e071..0436772a05 100644
--- a/code/modules/gear_presets/contractor.dm
+++ b/code/modules/gear_presets/contractor.dm
@@ -87,7 +87,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/smoke, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/MRE,WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_BACK)
@@ -192,7 +192,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_R_STORE)
//backpack and stuff in it
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack, WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/smoke, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/MRE,WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_BACK)
@@ -244,7 +244,7 @@
new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/large_stack, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/defenses/handheld/sentry/mini, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/attachments(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
@@ -339,7 +339,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/smoke, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/m717/hacked/contractor, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_BACK)
@@ -468,7 +468,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/smoke, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/MRE,WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_BACK)
@@ -574,7 +574,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_R_STORE)
//backpack and stuff in it
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack, WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/smoke, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/MRE,WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_BACK)
@@ -627,7 +627,7 @@
new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/large_stack, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/defenses/handheld/sentry/mini, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/attachments(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
@@ -724,7 +724,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/m15, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/smoke, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/m717/hacked/contractor, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_BACK)
diff --git a/code/modules/gear_presets/corpses.dm b/code/modules/gear_presets/corpses.dm
index f0ad6f85a8..b66f3b236e 100644
--- a/code/modules/gear_presets/corpses.dm
+++ b/code/modules/gear_presets/corpses.dm
@@ -891,7 +891,7 @@
new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/dutch(new_human), WEAR_BODY)
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/veteran/dutch(new_human), WEAR_JACKET)
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/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran(new_human), WEAR_HANDS)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/full(new_human), WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_L_STORE)
diff --git a/code/modules/gear_presets/dutch.dm b/code/modules/gear_presets/dutch.dm
index a88d282b1e..c83e8384f5 100644
--- a/code/modules/gear_presets/dutch.dm
+++ b/code/modules/gear_presets/dutch.dm
@@ -47,7 +47,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/empgrenade/dutch(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/empgrenade/dutch(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/empgrenade/dutch(new_human), WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked/dutch(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/storage/holster(new_human), WEAR_ACCESSORY)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/pistol/m1911(new_human), WEAR_IN_ACCESSORY)
diff --git a/code/modules/gear_presets/other.dm b/code/modules/gear_presets/other.dm
index 837af5ac66..b60e3f0314 100644
--- a/code/modules/gear_presets/other.dm
+++ b/code/modules/gear_presets/other.dm
@@ -112,7 +112,7 @@
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/stick, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/ied_incendiary, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/ied_incendiary, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/smokebomb, WEAR_IN_BACK)
@@ -122,11 +122,11 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/upp, WEAR_R_STORE)
spawn_merc_weapon(new_human)
//backpack stuff
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/stick, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/stick, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
//*****************************************************************************************************/
@@ -295,7 +295,7 @@
//backpack and stuff in it
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack, WEAR_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/smoke, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/hefa, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/attachments(new_human), WEAR_IN_BACK)
@@ -332,7 +332,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/autoinjector/full, WEAR_R_STORE)
//backpack and stuff in it
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/lightpack, WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/m15, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/phosphorus, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/minigun(new_human), WEAR_IN_BACK)
@@ -391,7 +391,7 @@
new_human.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/large_stack, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/defenses/handheld/sentry/mini, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/defenses/handheld/sentry/mini, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/attachments(new_human), WEAR_IN_BACK)
//gun
spawn_merc_elite_weapon(new_human, 9, 100, 0) //only shotguns
@@ -475,7 +475,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/smoke, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/packet/phosphorus/upp, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector/hacked/elite_merc, WEAR_IN_BACK)
//gun
spawn_merc_elite_weapon(new_human, 7, 25, 1) //lower shotgun chance, but not zero
diff --git a/code/modules/gear_presets/pmc.dm b/code/modules/gear_presets/pmc.dm
index 586e3c8afa..222aea6e0a 100644
--- a/code/modules/gear_presets/pmc.dm
+++ b/code/modules/gear_presets/pmc.dm
@@ -439,7 +439,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null),
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
@@ -617,7 +617,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null),
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
@@ -1116,7 +1116,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null),
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/m39/ap, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/m39/ap, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/m39/ap, WEAR_IN_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/sniper/elite, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/elite, WEAR_IN_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/sniper/elite, WEAR_IN_JACKET)
@@ -1589,7 +1589,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null),
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
@@ -1986,7 +1986,7 @@ list("POUCHES (CHOOSE 2)", 0, null, null, null),
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
diff --git a/code/modules/gear_presets/royal_marines.dm b/code/modules/gear_presets/royal_marines.dm
index 373c41df49..c990f19fdb 100644
--- a/code/modules/gear_presets/royal_marines.dm
+++ b/code/modules/gear_presets/royal_marines.dm
@@ -89,7 +89,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/rmc/rmc_f90_ammo, WEAR_WAIST)
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/rmc/light, WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, 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/storage/firstaid/surgical, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact, WEAR_IN_BACK)
@@ -143,7 +143,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine/rmc/rmc_f90_ammo/marksman, WEAR_WAIST)
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/rmc/light, WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, 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/storage/firstaid/surgical, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact, WEAR_IN_BACK)
@@ -187,7 +187,7 @@
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/rmc_f90/shotgun, WEAR_J_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/general_belt/rmc, WEAR_WAIST)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BELT)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, WEAR_IN_BELT)
new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv, WEAR_IN_BELT)
new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/surgical, WEAR_IN_BELT)
new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact, WEAR_IN_BELT)
@@ -229,7 +229,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/l905/full, WEAR_WAIST)
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/rmc/light, WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, 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/storage/firstaid/surgical, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact, WEAR_IN_BACK)
@@ -277,7 +277,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/l905/full, WEAR_WAIST)
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/rmc/light, WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, 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/storage/firstaid/surgical, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact, WEAR_IN_BACK)
@@ -326,7 +326,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/l905/full, WEAR_WAIST)
new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/rmc/light, WEAR_BACK)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular, WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response, 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/storage/firstaid/surgical, WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/compact, WEAR_IN_BACK)
diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm
index 1322cd79c4..2d5876fe9a 100644
--- a/code/modules/gear_presets/upp.dm
+++ b/code/modules/gear_presets/upp.dm
@@ -331,7 +331,7 @@
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
@@ -2743,7 +2743,7 @@
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
@@ -3139,7 +3139,7 @@
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
@@ -3568,7 +3568,7 @@
list("FIRSTAID KITS", 0, null, null, null),
list("Advanced Firstaid Kit", 12, /obj/item/storage/firstaid/adv, null, VENDOR_ITEM_RECOMMENDED),
- list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular, null, VENDOR_ITEM_REGULAR),
+ list("Firstaid Kit", 5, /obj/item/storage/firstaid/regular/response, null, VENDOR_ITEM_REGULAR),
list("Fire Firstaid Kit", 6, /obj/item/storage/firstaid/fire, null, VENDOR_ITEM_REGULAR),
list("Toxin Firstaid Kit", 6, /obj/item/storage/firstaid/toxin, null, VENDOR_ITEM_REGULAR),
list("Oxygen Firstaid Kit", 6, /obj/item/storage/firstaid/o2, null, VENDOR_ITEM_REGULAR),
diff --git a/code/modules/gear_presets/uscm_event.dm b/code/modules/gear_presets/uscm_event.dm
index 80520eb05e..8bd2468c78 100644
--- a/code/modules/gear_presets/uscm_event.dm
+++ b/code/modules/gear_presets/uscm_event.dm
@@ -221,7 +221,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/shotgun/large/slug(new_human), WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/weapon/shield/riot(new_human), WEAR_L_HAND)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/flashbangs(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/taser(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human), WEAR_IN_BACK)
@@ -264,7 +264,7 @@
new_human.equip_to_slot_or_del(new /obj/item/weapon/shield/riot(new_human), WEAR_L_HAND)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/nade_box/tear_gas(new_human), WEAR_R_HAND)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/box/flashbangs(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/taser(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/custom/teargas(new_human), WEAR_IN_BACK)
diff --git a/code/modules/gear_presets/wo.dm b/code/modules/gear_presets/wo.dm
index c330bbc765..3b4671a651 100644
--- a/code/modules/gear_presets/wo.dm
+++ b/code/modules/gear_presets/wo.dm
@@ -281,7 +281,7 @@
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/bayonet(new_human), WEAR_R_STORE)
new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/medium(new_human), WEAR_L_STORE)
new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/combat(new_human), WEAR_J_STORE)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
//*****************************************************************************************************/
@@ -766,7 +766,7 @@
new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/medic(new_human), WEAR_HEAD)
new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/medium(new_human), WEAR_JACKET)
new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(new_human), WEAR_FACE)
- new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular(new_human), WEAR_IN_BACK)
+ new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/regular/response(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator(new_human), WEAR_IN_BACK)
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/full(new_human), WEAR_WAIST)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 130a8a923e..4d06d1e071 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -1012,13 +1012,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return
var/list/mobs_by_role = list() // the list the mobs are assigned to first, for sorting purposes
- for(var/datum/weakref/ref as anything in GLOB.freed_mob_list)
- var/mob/living/resolved_mob = ref.resolve()
- var/role_name = resolved_mob.get_role_name()
+ for(var/mob/freed_mob as anything in GLOB.freed_mob_list)
+ var/role_name = freed_mob.get_role_name()
if(!role_name)
role_name = "No Role"
LAZYINITLIST(mobs_by_role[role_name])
- mobs_by_role[role_name] += resolved_mob
+ mobs_by_role[role_name] += freed_mob
var/list/freed_mob_choices = list() // the list we'll be choosing from
for(var/role in mobs_by_role)
@@ -1034,18 +1033,15 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
handle_joining_as_freed_mob(L)
/mob/dead/proc/handle_joining_as_freed_mob(mob/living/freed_mob)
- if(!freed_mob || !(WEAKREF(freed_mob) in GLOB.freed_mob_list))
- return
-
- if(!istype(freed_mob))
+ if(!istype(freed_mob) || !(freed_mob in GLOB.freed_mob_list))
return
if(QDELETED(freed_mob) || freed_mob.client)
- GLOB.freed_mob_list -= WEAKREF(freed_mob)
+ GLOB.freed_mob_list -= freed_mob
to_chat(src, SPAN_WARNING("Something went wrong."))
return
- GLOB.freed_mob_list -= WEAKREF(freed_mob)
+ GLOB.freed_mob_list -= freed_mob
mind.transfer_to(freed_mob, TRUE)
/mob/dead/verb/join_as_hellhound()
diff --git a/code/modules/mob/living/carbon/human/exercise.dm b/code/modules/mob/living/carbon/human/exercise.dm
index 7a83fd2886..3a2976da91 100644
--- a/code/modules/mob/living/carbon/human/exercise.dm
+++ b/code/modules/mob/living/carbon/human/exercise.dm
@@ -102,7 +102,7 @@ Verbs related to getting fucking jacked, bro
//humans have 100 stamina
//default loss per pushup = 5 stamina
var/stamina_loss = 5
- if(issynth(src))
+ if(!skills || issynth(src))
return 0
switch(skills.get_skill_level(SKILL_ENDURANCE))
if(SKILL_ENDURANCE_NONE)
diff --git a/code/modules/mob/living/carbon/human/human_abilities.dm b/code/modules/mob/living/carbon/human/human_abilities.dm
index 502dd77a06..fda4cea20a 100644
--- a/code/modules/mob/living/carbon/human/human_abilities.dm
+++ b/code/modules/mob/living/carbon/human/human_abilities.dm
@@ -414,8 +414,8 @@ CULT
return
var/datum/equipment_preset/preset = GLOB.gear_path_presets_list[/datum/equipment_preset/other/xeno_cultist]
- preset.load_race(chosen, H.hivenumber)
- preset.load_status(chosen)
+ preset.load_race(chosen)
+ preset.load_status(chosen, H.hivenumber)
to_chat(chosen, SPAN_ROLE_HEADER("You are now a Xeno Cultist!"))
to_chat(chosen, SPAN_ROLE_BODY("Worship the Xenomorphs and listen to the Cult Leader for orders. The Cult Leader is typically the person who transformed you. Do not kill anyone unless you are wearing your black robes, you may defend yourself."))
diff --git a/code/modules/mob/living/carbon/xenomorph/Abilities.dm b/code/modules/mob/living/carbon/xenomorph/Abilities.dm
index eb5a629760..0a6e0ff2ca 100644
--- a/code/modules/mob/living/carbon/xenomorph/Abilities.dm
+++ b/code/modules/mob/living/carbon/xenomorph/Abilities.dm
@@ -207,9 +207,9 @@
if(msg)
log_say("PsychicWhisper: [key_name(X)]->[M.key] : [msg]")
if(!istype(M, /mob/living/carbon/xenomorph))
- to_chat(M, SPAN_XENO("You hear a strange, alien voice in your head. \"[msg]\""))
+ to_chat(M, SPAN_XENOQUEEN("You hear a strange, alien voice in your head. \"[msg]\""))
else
- to_chat(M, SPAN_XENO("You hear the voice of [X] resonate in your head. \"[msg]\""))
+ to_chat(M, SPAN_XENOQUEEN("You hear the voice of [X] resonate in your head. \"[msg]\""))
to_chat(X, SPAN_XENONOTICE("You said: \"[msg]\" to [M]"))
return ..()
@@ -234,9 +234,9 @@
continue
target_list += possible_target
if(!istype(possible_target, /mob/living/carbon/xenomorph))
- to_chat(possible_target, SPAN_XENO("You hear a strange, alien voice in your head. \"[msg]\""))
+ to_chat(possible_target, SPAN_XENOQUEEN("You hear a strange, alien voice in your head. \"[msg]\""))
else
- to_chat(possible_target, SPAN_XENO("You hear the voice of [X] resonate in your head. \"[msg]\""))
+ to_chat(possible_target, SPAN_XENOQUEEN("You hear the voice of [X] resonate in your head. \"[msg]\""))
if(!length(target_list))
return
var/targetstring = english_list(target_list)
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 5da499dabc..dda2487c24 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -34,8 +34,8 @@
return
var/tempnumber = rand(1, 999)
- var/postfix_text = (client.prefs && client.prefs.xeno_postfix) ? ("-"+client.prefs.xeno_postfix) : ""
- var/prefix_text = (client.prefs && client.prefs.xeno_prefix) ? client.prefs.xeno_prefix : "XX"
+ var/postfix_text = (client.xeno_postfix) ? ("-"+client.xeno_postfix) : ""
+ var/prefix_text = (client.xeno_prefix) ? client.xeno_prefix : "XX"
var/xeno_text = "[prefix_text]-[tempnumber][postfix_text]"
var/round_start = !SSticker || !SSticker.mode || SSticker.current_state <= GAME_STATE_PREGAME
diff --git a/code/modules/mob/new_player/sprite_accessories/hair.dm b/code/modules/mob/new_player/sprite_accessories/hair.dm
index 0a112cadb1..3f624b8d3b 100644
--- a/code/modules/mob/new_player/sprite_accessories/hair.dm
+++ b/code/modules/mob/new_player/sprite_accessories/hair.dm
@@ -734,3 +734,7 @@
/datum/sprite_accessory/hair/croft
name = "Croft"
icon_state = "hair_croft"
+
+/datum/sprite_accessory/hair/aviator
+ name = "Aviator"
+ icon_state = "hair_aviator"
diff --git a/code/modules/reagents/chemistry_machinery/autodispenser.dm b/code/modules/reagents/chemistry_machinery/autodispenser.dm
index 3486e97524..a06042aac7 100644
--- a/code/modules/reagents/chemistry_machinery/autodispenser.dm
+++ b/code/modules/reagents/chemistry_machinery/autodispenser.dm
@@ -154,8 +154,7 @@
data["multiplier"] = multiplier
data["cycle_limit"] = cycle_limit
data["automode"] = automode
- data["linked_storage"] = linked_storage
- data["networked_storage"] = linked_storage.is_in_network()
+ data["networked_storage"] = linked_storage?.is_in_network()
data["smartlink"] = smartlink
data["outputmode"] = outputmode
data["buffervolume"] = reagents.total_volume
diff --git a/html/changelogs/AutoChangeLog-pr-4687.yml b/html/changelogs/AutoChangeLog-pr-4687.yml
new file mode 100644
index 0000000000..77fb738581
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-4687.yml
@@ -0,0 +1,4 @@
+author: "VileBeggar"
+delete-after: True
+changes:
+ - qol: "The Queen's psychic messages now use a bigger font and are harder to miss."
\ No newline at end of file
diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml
index aba66c07af..5cd6bcd00c 100644
--- a/html/changelogs/archive/2023-10.yml
+++ b/html/changelogs/archive/2023-10.yml
@@ -169,3 +169,49 @@
- bugfix: Colony Supervisor can now have access to his own colony(LOL).
mullenpaul:
- rscadd: adds weapon spawners for USCM, CLF, PMC and UPP
+2023-10-15:
+ Birdtalon:
+ - bugfix: Limb printer can no longer double print or print without metal.
+ Drathek:
+ - ui: Fixed a duplicate Options button
+ Lalipar:
+ - qol: Readable time for when a fax was sent in fax panel
+ - qol: Adds ckey/character name for faxes in fax panel
+ - qol: Adds fax subject to fax panel
+ - bugfix: Added CMB faxes to Fax Panel
+ fira:
+ - bugfix: Fix nuke explosion getting canceled in some very rare cases.
+ - bugfix: Xeno Name preference does not require a reconnection to apply anymore.
+ It still won't change your current Xenomorph's name however.
+ - bugfix: Fixed Tape Recorder failing to record when no language information is
+ present.
+ harryob:
+ - admin: administrators without R_DEBUG can now restart the server without starting
+ the round
+2023-10-16:
+ CapCamIII:
+ - balance: ERTs now have a variant of the standard medkit that has no storage lock.
+ - bugfix: Lots of ERTs now correctly have a medkit spawning in their gear
+ Drathek:
+ - bugfix: Fixed the hive surge join as xeno observer alert text link not actually
+ doing anything.
+ Twomoon:
+ - rscadd: Added new haircut
+ Waseemq1235:
+ - admin: Makes subtle messages more noticeable.
+ Zonespace, Wei (sprites):
+ - balance: Removed NSG, Type71, tactical Mar-40, and Mar-50 from the black market
+ - balance: Removed Ext. M4ra mags from the black market
+ - balance: Removed monkeycubes from the black market
+ - balance: Removed lunge mines from the black market
+ - balance: You now need a modified security access tuner to access the black market,
+ which can be found ship- and ground-side where scanners and radios can spawn.
+ fira:
+ - bugfix: The Turing Machine should now keep working as intended if its linked Smartfridge
+ is blown up.
+ - bugfix: Fixed xeno cultists always being created into normal hive, irrespective
+ of the selected hive.
+ - bugfix: Fixed 'Join as Freed Mob' verb crashing if freed mobs had previously been
+ deleted.
+ - bugfix: Fixed issues with turfs, notably lighting, arising when building it from
+ a sheets stack.
diff --git a/html/statbrowser.js b/html/statbrowser.js
index 78eb7d4e57..83709e9e92 100644
--- a/html/statbrowser.js
+++ b/html/statbrowser.js
@@ -1036,6 +1036,9 @@ Byond.subscribeTo("remove_mc", remove_mc);
Byond.subscribeTo("add_verb_list", add_verb_list);
function createOptionsButton() {
+ if (document.getElementById("options")) {
+ return;
+ }
var button = document.createElement("BUTTON");
button.onclick = function () {
openOptionsMenu();
diff --git a/icons/mob/humans/human_hair.dmi b/icons/mob/humans/human_hair.dmi
index bfe0e072f1..ca4a20bcaf 100644
Binary files a/icons/mob/humans/human_hair.dmi and b/icons/mob/humans/human_hair.dmi differ
diff --git a/icons/obj/items/devices.dmi b/icons/obj/items/devices.dmi
index 8bf7634a7d..9e0891f361 100644
Binary files a/icons/obj/items/devices.dmi and b/icons/obj/items/devices.dmi differ
diff --git a/tgui/packages/tgui/interfaces/Autodispenser.js b/tgui/packages/tgui/interfaces/Autodispenser.js
index 0c8ce91512..5d029b72b8 100644
--- a/tgui/packages/tgui/interfaces/Autodispenser.js
+++ b/tgui/packages/tgui/interfaces/Autodispenser.js
@@ -11,7 +11,6 @@ export const Autodispenser = (_props, context) => {
multiplier,
cycle_limit,
automode,
- linked_storage,
networked_storage,
smartlink,
outputmode,