From 62e3eec3e7d9eab9c377179bed1d848f1f482d93 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Sat, 14 Oct 2023 10:40:25 -0700 Subject: [PATCH 01/43] Fix double options button (#4658) # About the pull request This PR simply prevents adding another Options button on your stat panel if there already is one. Occurs if you open multiple clients, or I guess now enter from lobby. # Explain why it's good for the game We only need one options button, it just looks funny. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Drathek ui: Fixed a duplicate Options button /:cl: --- html/statbrowser.js | 3 +++ 1 file changed, 3 insertions(+) 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(); From d269f7c30183093221bb3a28326bb88739d21bc5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 14 Oct 2023 18:48:45 +0100 Subject: [PATCH 02/43] Automatic changelog for PR #4658 [ci skip] --- html/changelogs/AutoChangeLog-pr-4658.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4658.yml diff --git a/html/changelogs/AutoChangeLog-pr-4658.yml b/html/changelogs/AutoChangeLog-pr-4658.yml new file mode 100644 index 0000000000..572143c1d1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4658.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - ui: "Fixed a duplicate Options button" \ No newline at end of file From b4c26fb2d7bc139a6252820ea5d205a67c33cda2 Mon Sep 17 00:00:00 2001 From: Lalipar <22782815+Lalipar@users.noreply.github.com> Date: Sun, 15 Oct 2023 04:42:07 +1100 Subject: [PATCH 03/43] Better functionality for fax panel (#4656) # About the pull request Better functionality for fax panel # Explain why it's good for the game Easier to keep track of faxes and fax replies # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: 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 fix: Added CMB faxes to Fax Panel /:cl: --- code/game/machinery/fax_machine.dm | 12 ++++++------ code/modules/admin/tabs/event_tab.dm | 2 +- code/modules/admin/topic/topic.dm | 17 ++++++++--------- 3 files changed, 15 insertions(+), 16 deletions(-) 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/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index a5975bb022..6ba3291099 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/topic/topic.dm b/code/modules/admin/topic/topic.dm index 31f99870fe..191b292ab9 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -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" From cb8caaecf81488f329b2b5c805fc01c4ede0503f Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 14 Oct 2023 19:03:18 +0100 Subject: [PATCH 04/43] Automatic changelog for PR #4656 [ci skip] --- html/changelogs/AutoChangeLog-pr-4656.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4656.yml diff --git a/html/changelogs/AutoChangeLog-pr-4656.yml b/html/changelogs/AutoChangeLog-pr-4656.yml new file mode 100644 index 0000000000..cae7537b55 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4656.yml @@ -0,0 +1,7 @@ +author: "Lalipar" +delete-after: True +changes: + - 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" \ No newline at end of file From e358e62c8df0c52bed23f59b5348122b9e0f0fd6 Mon Sep 17 00:00:00 2001 From: fira Date: Sat, 14 Oct 2023 18:43:51 +0100 Subject: [PATCH 05/43] Fixes nuke explosion runtiming if a living mob was in a nullspaced container (#4659) # About the pull request As per title. I have no idea what causes this condition to begin with, live inspection didn't yield any results. # Explain why it's good for the game This might sound like an improbable case, and it is, but it actually happened last week. This caused the nuke explosion to stop and left everyone confused for the next 45 minutes the round lasted to end normally. # Testing Photographs and Procedure Untested. # Changelog :cl: fix: Fix nuke explosion getting canceled in some very rare cases. /:cl: --- code/game/gamemodes/cm_self_destruct.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 From c083797921cd5cc74f3eb5fdec6b1253f0516466 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 14 Oct 2023 19:18:25 +0100 Subject: [PATCH 06/43] Automatic changelog for PR #4659 [ci skip] --- html/changelogs/AutoChangeLog-pr-4659.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4659.yml diff --git a/html/changelogs/AutoChangeLog-pr-4659.yml b/html/changelogs/AutoChangeLog-pr-4659.yml new file mode 100644 index 0000000000..87750986cc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4659.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fix nuke explosion getting canceled in some very rare cases." \ No newline at end of file From d2e43812453e534b800bc044e15e086173b9cd27 Mon Sep 17 00:00:00 2001 From: fira Date: Sat, 14 Oct 2023 18:45:24 +0100 Subject: [PATCH 07/43] Fixes Xeno Name preference requring a reconnect to apply (#4660) # About the pull request See #4436 for an indepth description of the issue - basically Xeno name is cached on client and updating preferences won't update it without a reconnect (and the lobby screen even baits you thinking it does by displaying pref not client's) # Explain why it's good for the game Less confusion Fixes #4436 # Testing Photographs and Procedure Basic testing performed in the form of: Changing Xeno Name Launching game, observing Spawning a Xeno and possessing it And observing which xeno name is present. # Changelog :cl: fix: Xeno Name preference does not require a reconnection to apply anymore. It still won't change your current Xenomorph's name however. /:cl: --- code/modules/client/client_procs.dm | 18 +++++++++++------- code/modules/client/preferences.dm | 4 ++++ code/modules/mob/new_player/new_player.dm | 4 ++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 3cfb08b8da..82540d6cbf 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 @@ -790,3 +785,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..8ca177ddf6 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.") 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 From 4c382f8024644dfff51ca98baa818678b65275e0 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 14 Oct 2023 19:32:08 +0100 Subject: [PATCH 08/43] Automatic changelog for PR #4660 [ci skip] --- html/changelogs/AutoChangeLog-pr-4660.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4660.yml diff --git a/html/changelogs/AutoChangeLog-pr-4660.yml b/html/changelogs/AutoChangeLog-pr-4660.yml new file mode 100644 index 0000000000..71377e2d73 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4660.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Xeno Name preference does not require a reconnection to apply anymore. It still won't change your current Xenomorph's name however." \ No newline at end of file From d06f53777af06143d6caefde98e41cb98f0e42df Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sat, 14 Oct 2023 10:46:08 -0700 Subject: [PATCH 09/43] Adjusts CODEOWNERS (#4634) # About the pull request Removes Morrow from codeowners, moves the survivor file codeowner to me # Explain why it's good for the game Morrow has retired. --- .github/CODEOWNERS | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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 From a198920436553987bd87560762519455563ca581 Mon Sep 17 00:00:00 2001 From: fira Date: Sat, 14 Oct 2023 18:46:54 +0100 Subject: [PATCH 10/43] Fixes Tape Recorder failing to record when no language is given (#4663) # About the pull request The very same proc has a check on the language existing two line further up, because it's a potential use cases -- but fails to check it again and runtimes further below. # Explain why it's good for the game Bugfix # Testing Photographs and Procedure Untested # Changelog :cl: fix: Fixed Tape Recorder failing to record when no language information is present. /:cl: --- code/game/objects/items/devices/taperecorder.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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]\"" From 8b326c1dddafeb65653b74e6d0268f0362f76475 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 14 Oct 2023 19:54:39 +0100 Subject: [PATCH 11/43] Automatic changelog for PR #4663 [ci skip] --- html/changelogs/AutoChangeLog-pr-4663.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4663.yml diff --git a/html/changelogs/AutoChangeLog-pr-4663.yml b/html/changelogs/AutoChangeLog-pr-4663.yml new file mode 100644 index 0000000000..0f441fcdcc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4663.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed Tape Recorder failing to record when no language information is present." \ No newline at end of file From 61cb689b153ce530ba55f0a964a7f939d82a6309 Mon Sep 17 00:00:00 2001 From: harryob Date: Sat, 14 Oct 2023 18:47:22 +0100 Subject: [PATCH 12/43] mods can restart the server without starting the round (#4665) with the weird issues we've been accumulating lately which require a lobby restart this check is just annoying our mods and tadmins :cl: admin: administrators without R_DEBUG can now restart the server without starting the round /:cl: --- code/modules/admin/tabs/server_tab.dm | 4 ---- 1 file changed, 4 deletions(-) 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 From c002a9439466c2b490f4891ddbd186b28c919eb2 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 14 Oct 2023 20:15:33 +0100 Subject: [PATCH 13/43] Automatic changelog for PR #4665 [ci skip] --- html/changelogs/AutoChangeLog-pr-4665.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4665.yml diff --git a/html/changelogs/AutoChangeLog-pr-4665.yml b/html/changelogs/AutoChangeLog-pr-4665.yml new file mode 100644 index 0000000000..894b91f62c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4665.yml @@ -0,0 +1,4 @@ +author: "harryob" +delete-after: True +changes: + - admin: "administrators without R_DEBUG can now restart the server without starting the round" \ No newline at end of file From 242a782dce2974516caa56bf638a03f04a4261fc Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Sat, 14 Oct 2023 18:48:06 +0100 Subject: [PATCH 14/43] Adds safety check to bioprinter for resources and already printing (#4669) # About the pull request Fixes #4338 Also adds check to see if we actually have enough metal, all safety checks were done inside the tgui, better to have them here. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Limb printer can no longer double print or print without metal. /:cl: --- code/game/machinery/bioprinter.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 From cf037cc34df2eb6812de4ced3a46158f46652b2e Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 14 Oct 2023 20:30:16 +0100 Subject: [PATCH 15/43] Automatic changelog for PR #4669 [ci skip] --- html/changelogs/AutoChangeLog-pr-4669.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4669.yml diff --git a/html/changelogs/AutoChangeLog-pr-4669.yml b/html/changelogs/AutoChangeLog-pr-4669.yml new file mode 100644 index 0000000000..008ed56b3b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4669.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Limb printer can no longer double print or print without metal." \ No newline at end of file From 8100348430793121b90a8be369233d063d2f30ef Mon Sep 17 00:00:00 2001 From: fira Date: Sat, 14 Oct 2023 18:48:31 +0100 Subject: [PATCH 16/43] Fixes Disconnected Observers runtiming HUD (#4667) # About the pull request A simple runtime job... Login() to an observed mob with a disconnected observer will crash the inventory HUD proc because it has no client. # Explain why it's good for the game Less runtimes # Testing Photographs and Procedure Tested with dual client and breakpoints # Changelog Internal change only --- code/_onclick/hud/human.dm | 7 +++++++ 1 file changed, 7 insertions(+) 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) From 5f9c4d97f8742565bbf227e269563bf7f3ec3ea9 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 15 Oct 2023 01:12:49 +0000 Subject: [PATCH 17/43] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4656.yml | 7 ------- html/changelogs/AutoChangeLog-pr-4658.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4659.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4660.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4663.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4665.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4669.yml | 4 ---- html/changelogs/archive/2023-10.yml | 19 +++++++++++++++++++ 8 files changed, 19 insertions(+), 31 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4656.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4658.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4659.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4660.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4663.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4665.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4669.yml diff --git a/html/changelogs/AutoChangeLog-pr-4656.yml b/html/changelogs/AutoChangeLog-pr-4656.yml deleted file mode 100644 index cae7537b55..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4656.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Lalipar" -delete-after: True -changes: - - 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" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4658.yml b/html/changelogs/AutoChangeLog-pr-4658.yml deleted file mode 100644 index 572143c1d1..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4658.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - ui: "Fixed a duplicate Options button" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4659.yml b/html/changelogs/AutoChangeLog-pr-4659.yml deleted file mode 100644 index 87750986cc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4659.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fix nuke explosion getting canceled in some very rare cases." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4660.yml b/html/changelogs/AutoChangeLog-pr-4660.yml deleted file mode 100644 index 71377e2d73..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4660.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Xeno Name preference does not require a reconnection to apply anymore. It still won't change your current Xenomorph's name however." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4663.yml b/html/changelogs/AutoChangeLog-pr-4663.yml deleted file mode 100644 index 0f441fcdcc..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4663.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed Tape Recorder failing to record when no language information is present." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4665.yml b/html/changelogs/AutoChangeLog-pr-4665.yml deleted file mode 100644 index 894b91f62c..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4665.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "harryob" -delete-after: True -changes: - - admin: "administrators without R_DEBUG can now restart the server without starting the round" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4669.yml b/html/changelogs/AutoChangeLog-pr-4669.yml deleted file mode 100644 index 008ed56b3b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4669.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Limb printer can no longer double print or print without metal." \ No newline at end of file diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml index aba66c07af..05fc1ddd7e 100644 --- a/html/changelogs/archive/2023-10.yml +++ b/html/changelogs/archive/2023-10.yml @@ -169,3 +169,22 @@ - 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 From d2d38b27acbc7afaedb6d7068d4039eb120abbcc Mon Sep 17 00:00:00 2001 From: riot <103988604+CapCamIII@users.noreply.github.com> Date: Sun, 15 Oct 2023 10:03:28 -0500 Subject: [PATCH 18/43] Gives ERTs a variant of the regular medkit that isn't locked to skills in packs. (#4670) # About the pull request A bunch of ERTs are designed with having their meds in medkits, which was obviously not noticed or cared about when making !4443 so I made a variant of the regular kit that has no lock, only ERT roles(and 2 HG roles on WO) have it so its not a real balance concern. # Explain why it's good for the game Storage nesting is not an issue with normal preset loadouts like ERTs(or at all :D) as they are designed around and only have access to specific loadouts. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: balance: ERTs now have a variant of the standard medkit that has no storage lock. fix: Lots of ERTs now correctly have a medkit spawning in their gear /:cl: --- code/game/objects/items/storage/firstaid.dm | 5 +++++ code/modules/gear_presets/clf.dm | 10 +++++----- code/modules/gear_presets/contractor.dm | 16 ++++++++-------- code/modules/gear_presets/corpses.dm | 2 +- code/modules/gear_presets/dutch.dm | 2 +- code/modules/gear_presets/other.dm | 14 +++++++------- code/modules/gear_presets/pmc.dm | 10 +++++----- code/modules/gear_presets/royal_marines.dm | 12 ++++++------ code/modules/gear_presets/upp.dm | 8 ++++---- code/modules/gear_presets/uscm_event.dm | 4 ++-- code/modules/gear_presets/wo.dm | 4 ++-- 11 files changed, 46 insertions(+), 41 deletions(-) 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/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 1e8baa9182..1277316562 100644 --- a/code/modules/gear_presets/pmc.dm +++ b/code/modules/gear_presets/pmc.dm @@ -441,7 +441,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), @@ -619,7 +619,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), @@ -1119,7 +1119,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) @@ -1593,7 +1593,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), @@ -1992,7 +1992,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) From 92ac9a6c10cc29e79e9ad0800bdc320765d50340 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 15 Oct 2023 16:12:53 +0100 Subject: [PATCH 19/43] Automatic changelog for PR #4670 [ci skip] --- html/changelogs/AutoChangeLog-pr-4670.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4670.yml diff --git a/html/changelogs/AutoChangeLog-pr-4670.yml b/html/changelogs/AutoChangeLog-pr-4670.yml new file mode 100644 index 0000000000..2acabfacff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4670.yml @@ -0,0 +1,5 @@ +author: "CapCamIII" +delete-after: True +changes: + - 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" \ No newline at end of file From d5608cf89287a43d8b9c37455e0d24488e6b6868 Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 17:57:18 +0200 Subject: [PATCH 20/43] Fixes stacks/sheets building turfs not calling ChangeTurf (#4661) # About the pull request This is not only generally bad, it also breaks lighting and area gizmos. Fixes #4417 # Explain why it's good for the game Consistency, Integrity, etc # Testing Photographs and Procedure Testing protocol: building "temple floor" from runed sandstone sheets near a wall light on the almayer. Without the patch the turf goes full black. # Changelog :cl: fix: Fixed issues with turfs, notably lighting, arising when building it from a sheets stack. /:cl: --- code/game/objects/items/stacks/stack.dm | 48 ++++++++++++++----------- 1 file changed, 28 insertions(+), 20 deletions(-) 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) From 89d9d6987d1729099905f78f3c676bc4dc33c152 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 15 Oct 2023 17:05:20 +0100 Subject: [PATCH 21/43] Automatic changelog for PR #4661 [ci skip] --- html/changelogs/AutoChangeLog-pr-4661.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4661.yml diff --git a/html/changelogs/AutoChangeLog-pr-4661.yml b/html/changelogs/AutoChangeLog-pr-4661.yml new file mode 100644 index 0000000000..9f0d81051a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4661.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed issues with turfs, notably lighting, arising when building it from a sheets stack." \ No newline at end of file From 955ce71aa7a600ac44a7ee7f2b9e41a017927731 Mon Sep 17 00:00:00 2001 From: Twomoon <45800756+Twomoon-Github@users.noreply.github.com> Date: Sun, 15 Oct 2023 18:44:39 +0200 Subject: [PATCH 22/43] adds a new haircut (#4643) # About the pull request Adds a new haircut to the game called "Aviator" # Explain why it's good for the game Adds a new marine short hair haircut ![aviator](https://github.com/cmss13-devs/cmss13/assets/45800756/f84df43a-ee3d-4260-b822-58d5d9531013) # Changelog :cl:Twomoon add: Added new haircut /:cl: --- .../mob/new_player/sprite_accessories/hair.dm | 4 ++++ icons/mob/humans/human_hair.dmi | Bin 55672 -> 49242 bytes 2 files changed, 4 insertions(+) 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/icons/mob/humans/human_hair.dmi b/icons/mob/humans/human_hair.dmi index bfe0e072f19d57e4a36f7f030b1fa9be5f58bf0a..ca4a20bcafbdfa02a53cfac18801df9dc668f62b 100644 GIT binary patch literal 49242 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 z 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 VJcpL@r=rKcXl8Y;#Pr6){{!?c|62e6 literal 55672 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

Qjvn8`L7jax|f#(Zi_I?vu{ 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 Date: Sun, 15 Oct 2023 17:52:43 +0100 Subject: [PATCH 23/43] Automatic changelog for PR #4643 [ci skip] --- html/changelogs/AutoChangeLog-pr-4643.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4643.yml diff --git a/html/changelogs/AutoChangeLog-pr-4643.yml b/html/changelogs/AutoChangeLog-pr-4643.yml new file mode 100644 index 0000000000..0ee2aa40b9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4643.yml @@ -0,0 +1,4 @@ +author: "Twomoon" +delete-after: True +changes: + - rscadd: "Added new haircut" \ No newline at end of file From 0065e57028f37054102a814e770f91cc234b2a8c Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 18:44:56 +0200 Subject: [PATCH 24/43] Fixes Turing Machine UI breaking down if its Smartfridge is exploded (#4662) # About the pull request Just occured on live game - turns out Research can and will explode themselves (who guessed), and the Turing UI runtimes due to a little oopsie if there is no associated storage. I didn't test if this actually broke the UI but a runtime mid ui_data makes it a safe bet # Explain why it's good for the game Freedom to explode things with controlled breakage. # Testing Photographs and Procedure Deleted the Smartfridge, pressed Turing buttons. # Changelog :cl: fix: The Turing Machine should now keep working as intended if its linked Smartfridge is blown up. /:cl: --- code/modules/reagents/chemistry_machinery/autodispenser.dm | 3 +-- tgui/packages/tgui/interfaces/Autodispenser.js | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) 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/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, From 312598c1e7e18c85f4442d9bc881a2ab41e6d412 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 15 Oct 2023 18:13:50 +0100 Subject: [PATCH 25/43] Automatic changelog for PR #4662 [ci skip] --- html/changelogs/AutoChangeLog-pr-4662.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4662.yml diff --git a/html/changelogs/AutoChangeLog-pr-4662.yml b/html/changelogs/AutoChangeLog-pr-4662.yml new file mode 100644 index 0000000000..2143bfb05a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4662.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "The Turing Machine should now keep working as intended if its linked Smartfridge is blown up." \ No newline at end of file From 93cdb54da66526b93499f09b24895ca45884c57c Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Sun, 15 Oct 2023 09:45:11 -0700 Subject: [PATCH 26/43] Fix join as xeno observer alert text url (#4681) # About the pull request This PR simply sets an argument for the join as xeno href that the hive surge observer action provides in chat so the href topic will actually respond to it if clicked. # Explain why it's good for the game Links to things should actually work. # Testing Photographs and Procedure

Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Drathek fix: Fixed the hive surge join as xeno observer alert text link not actually doing anything. /:cl: --- code/modules/cm_aliens/structures/special/pylon_core.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) From cc7d60d3bed974bfc02053cec71b9f7caabb8cc5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 15 Oct 2023 18:34:56 +0100 Subject: [PATCH 27/43] Automatic changelog for PR #4681 [ci skip] --- html/changelogs/AutoChangeLog-pr-4681.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4681.yml diff --git a/html/changelogs/AutoChangeLog-pr-4681.yml b/html/changelogs/AutoChangeLog-pr-4681.yml new file mode 100644 index 0000000000..e654215595 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4681.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Fixed the hive surge join as xeno observer alert text link not actually doing anything." \ No newline at end of file From 6ba14e64d02816a257f188715c3876d768e3475a Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 18:45:24 +0200 Subject: [PATCH 28/43] Fixes a minor recurring runtime in origin selection (#4679) # About the pull request Harry forgot to account for indecisive people No user changes, just gets rid of a recurring runtime in live game logs --- code/modules/client/preferences.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8ca177ddf6..1da30d6e47 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1701,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) From 74c5d65722df22630592c9d43b66e58b0863bb6e Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 18:45:36 +0200 Subject: [PATCH 29/43] Fixes minor runtime with null skills pushups (#4680) # About the pull request Doing push up with null skills runtimes at every iteration since pushups don't account for it I wouldn't normally bother but I came across an unreadable log spammed by zombie pushups, because our zombie players LOVE doing pushups No functional changes, no changelog, etc --- code/modules/mob/living/carbon/human/exercise.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) From c0833a63058bad0535d10736983a6ce5b975c0af Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 18:45:51 +0200 Subject: [PATCH 30/43] Fixes Xeno Cultists always belonging to the Normal hive (#4684) # About the pull request Turns out making a xeno cultist of a given hive completely ignores the hive and makes it as default hive, because it was passed to the wrong proc entirely. Funny huh? # Explain why it's good for the game Avoids mishaps during the few events using cultists, as seen recently. # Testing Photographs and Procedure Tested before/after the setting of `hivenumber` on the human, as well as possibility of receiving hivemind messages. # Changelog :cl: fix: Fixed xeno cultists always being created into normal hive, irrespective of the selected hive. /:cl: --- code/modules/admin/player_panel/actions/antag.dm | 5 ++--- code/modules/admin/topic/topic.dm | 8 ++++---- code/modules/mob/living/carbon/human/human_abilities.dm | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) 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/topic/topic.dm b/code/modules/admin/topic/topic.dm index 191b292ab9..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 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.")) From 7a8a2811eaccae0253724baa0c1879f4a41dd394 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 15 Oct 2023 19:15:57 +0100 Subject: [PATCH 31/43] Automatic changelog for PR #4684 [ci skip] --- html/changelogs/AutoChangeLog-pr-4684.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4684.yml diff --git a/html/changelogs/AutoChangeLog-pr-4684.yml b/html/changelogs/AutoChangeLog-pr-4684.yml new file mode 100644 index 0000000000..0aa80df958 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4684.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed xeno cultists always being created into normal hive, irrespective of the selected hive." \ No newline at end of file From 06fb75f5129dfe5654c7d3cf2cda5da4dd9641e3 Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 18:46:15 +0200 Subject: [PATCH 32/43] Fixed default value in cash splitting being out of bounds for tgui_input_number (#4672) `[2023-10-13 22:54:01.748] runtime error: Default value is greater than max value. (How many dollars do you want to take? (0 to 2), Take Money)` obviously a default of 20 can be out of bounds for a maximum of an arbitary positive value don't mock the poor... --- code/modules/economy/cash.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 11b5f538a08e8edb49903f4ab41d63c92cc6d844 Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 18:46:58 +0200 Subject: [PATCH 33/43] Fixes dummy preview for yautja bracers causing runtimes (#4673) # About the pull request Fixes a simple runtime when the bracers are viewed off a character setup dummy, and therefore, nullspaced --- code/modules/cm_preds/yaut_bracers.dm | 3 +++ 1 file changed, 3 insertions(+) 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) From 99850e9e50dba04b97518924fc88d5e8d22a037e Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 19:54:38 +0200 Subject: [PATCH 34/43] Fixes crash in Join as Freed Mob if some had been deleted (#4678) # About the pull request Improper usage of weakrefs in ghost freed code resulted in them not being cleared on deletion + the Join as Freed Mob verb to crash if such an entry was still present. Because /mob/Destroy already clears the hard reference, there is no actual reason to use weak references at all, so i just removed all of them. # Explain why it's good for the game Feature must work! # Testing Photographs and Procedure Customary testing that Freed Mobs joining still works after fix. # Changelog :cl: fix: Fixed 'Join as Freed Mob' verb crashing if freed mobs had previously been deleted. /:cl: --- code/game/machinery/cryopod.dm | 2 +- code/modules/admin/verbs/freeforghosts.dm | 2 +- code/modules/mob/dead/observer/observer.dm | 16 ++++++---------- 3 files changed, 8 insertions(+), 12 deletions(-) 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/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/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() From ef6154b37be62fb5a6cd9f4810dd0a20e499324b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 15 Oct 2023 19:52:07 +0100 Subject: [PATCH 35/43] Automatic changelog for PR #4678 [ci skip] --- html/changelogs/AutoChangeLog-pr-4678.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4678.yml diff --git a/html/changelogs/AutoChangeLog-pr-4678.yml b/html/changelogs/AutoChangeLog-pr-4678.yml new file mode 100644 index 0000000000..40c1d2ddad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4678.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed 'Join as Freed Mob' verb crashing if freed mobs had previously been deleted." \ No newline at end of file From 1d405a22c73896731a7dc499ca2c84fa4cdcd222 Mon Sep 17 00:00:00 2001 From: fira Date: Sun, 15 Oct 2023 20:31:43 +0200 Subject: [PATCH 36/43] Fixes disconnected ahelpers runtime (#4668) # About the pull request If client disconnected, due to hard del, instances get replaced by null. This still goes through the timer CALLBACK somehow (?), causing invocation of the proc with src nulled out. # Explain why it's good for the game Every time this happens are two different runtimes, one for add_verb and one for deltimer. # Testing Photographs and Procedure Untested # Changelog Internal change --- code/modules/admin/verbs/adminhelp.dm | 2 ++ 1 file changed, 2 insertions(+) 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 From 4b05e1d4de4426e4d5db3a011d03dc755746bb75 Mon Sep 17 00:00:00 2001 From: Waseemq1235 <42235601+Waseemq1235@users.noreply.github.com> Date: Sun, 15 Oct 2023 20:58:09 +0200 Subject: [PATCH 37/43] Makes subtle messages more noticeable (Attempt no. 2) (#4644) I forgor to change something in #4384, so it didn't actually do anything. Now it does do something. My sanity is on a thin line. # Explain why it's good for the game People gotta notice those subtle messages man. Same reasoning as #4384. # Testing Photographs and Procedure I wish we could have the old PR format back
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: admin: Makes subtle messages more noticeable. /:cl: --- code/modules/admin/verbs/mob_verbs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) From dc49f4df435d1b78e6503ba25c7947b2d65084a6 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 15 Oct 2023 20:15:23 +0100 Subject: [PATCH 38/43] Automatic changelog for PR #4644 [ci skip] --- html/changelogs/AutoChangeLog-pr-4644.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4644.yml diff --git a/html/changelogs/AutoChangeLog-pr-4644.yml b/html/changelogs/AutoChangeLog-pr-4644.yml new file mode 100644 index 0000000000..87b5f8b826 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4644.yml @@ -0,0 +1,4 @@ +author: "Waseemq1235" +delete-after: True +changes: + - admin: "Makes subtle messages more noticeable." \ No newline at end of file From e7e86c3fa0257d080cfde44d5f85d8a233c07211 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sun, 15 Oct 2023 12:12:05 -0700 Subject: [PATCH 39/43] Nerfs the black market (#4674) # About the pull request - Removed several guns from the black market - Removed extended m4ra mags from black market - Removed monkeycubes from the "food" crate - The black market now requires a specialized tool (sprite by Wei) to hack. Can be found in the scanner object spawner 2.5% of the time. 9 spawners exist on the Almayer, meaning one will normally spawn every 2-3 rounds. - Removed lunge mines from black market # Explain why it's good for the game The black market is not in a good place currently. - It is completely trivial to access the black market, owing to the ease of hacking and the CL's ability to print money. This removes any chance of it being a special thing, instead turning it into an affair that occurs almost every round. - The CMB don't actually fix anything, they just encourage CTs to fuck around with the black market - Many of the things in the black market are just better than marine gear. Removing the really good weapons is the start, I will have to see if anything more is necessary. - Monkey cubes allow for effectively infinite greenoes. The black market shouldn't be significantly impacting a round, and this is directly counter to that. - Lunge mines are dumb as fuck, instantly gib humans (yes even the broken ones do that) and encourage LRP behavior. # Testing Photographs and Procedure
Screenshots & Videos ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/a5f28f12-f660-4d0d-944d-ecfba40879fc)
# Changelog :cl: 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. /:cl: --- code/__DEFINES/traits.dm | 3 + code/datums/supply_packs/black_market.dm | 89 +++++------------- code/game/objects/effects/spawners/random.dm | 11 ++- .../objects/items/circuitboards/computer.dm | 9 +- code/game/objects/items/devices/scanners.dm | 10 ++ icons/obj/items/devices.dmi | Bin 46032 -> 47010 bytes 6 files changed, 48 insertions(+), 74 deletions(-) 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/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/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/icons/obj/items/devices.dmi b/icons/obj/items/devices.dmi index 8bf7634a7df44ad715301b3e9605eb266069fcee..9e0891f361702c51fe083b5b99ca5e9d4affd4f8 100644 GIT binary patch delta 2617 zcmYjSdpy(o8~;v3xt~grxVLP%~Mp%RguavNQ2F14uKim^hGOXe1` zG|6SIle;a2x!*Qvv&&iM{9eD;`TX&DJ+II6Jn!f8ykF0yhbcx}7JH-)>V2zGEv}|H zjw_Aq9nYL7Zd-Tmn+#j$57x|$c7q=aLB__WPuh<3pC+w|o8^lAc9x`{A0vhNo}t-o zBKMVX9=8kGqWyrP`)1~iwSf*B-ln7zeypQ9IV0bQD=(MTqe@kM7U0_V=xCUhvPO0Q zYT!X?waW<7rn(?-K2*JvU-i+!^i)xZC9+P2=IY6JCBilVI0BrWqLuGE5&s}R71JX%VP5+#hkG*4;eYRD{2-% zxnD<`gjLELOYe`Ztx^>v(!_d1{!R;e+2$(e=~DS-4Z^FHCshtWAP^wVA&b#aYqDUb z8j?0Y)Pl}0frShdx+JHfq%LOWDr>s4z)Q+`Cjx5s{E=Cc7kOkA2QP<( ziC?aoB>f7|H#CGh*9ol}wWOaqYG|m>_!d<^e%-a-X+J~BnGEJ0LQBj%8#2EN{lZFBFeQ|r%RprejSLVOqd4+ zl^izqd<#4DJu4etSy_qMbG@T|x7tY<3>Ke{_nW@3%B6kJboNlcBFJ(T_#=_Mp~l&X zql>6tj?)An?ww{;RaMcjzeU13_{EDCO8|FJ)L!18a)W(jawg|sP)|i?R}FU^n)*P^ z9J$lzxm}@ejpU)>#1sX$!Z;%%qa*10i?Rpi91@d~K;nrhn1>JLXwpD*BW2<&`#wH7 z>chw&!P-zsfz`nV^ zDDbTOm!sB;QkjGy4ifpcMGTi#BGTXH|2X>NPgj;dh1c8#g(Pakq&hU~oT26|d`Z8- zo^hyZAlkypUO9ryd4HO*5^&#Cq*W7JUt?&WpPVbiYcabCpC>3-5U`Ixzqgin*!h1} z7n`LI8uouV`D4q{P#dkFWPf|qRhC3=?;?B?Mh`@gy@d$jje&kcT}=37*g+(u!WJoU z*7D+mtU4`8D=Wmd%{}S!(x>rq&-%6*Fh-)@i=dBb9FqlB?!E#0QsN6SGMnVk`ZJ67 zGRekkZh&HnGqFy|wW*Z(aVhLwBd$)5ipTSc+V5V8X)&fm8x=5xPKOGFlE8{R<9FLD z%7)i&Z9jKTUKTHW+Zq20JIgMElaOtXRJUxF=$ZD{zwu)^82(Pkomoj#{uDLO+9)jC z0vP&T76VY9TUNM>n7}9Rx%#1@p&^_#znf9);Gc!daPFoE^L+m{eZ*T4Q&c4f(9v)E zDBV96kv29z6>;?9!LPgp+AgDH&cGBQDEg0HrG{tE#dQ&4J%S(D5h+07X942ax&i|X zw%BNv*={h97wNn8Ld_Ix&o1wOxVLh`es~B*96&QLbT5JNT#GIuX6-hSL3AYlf^p9B1H1% zx@f8wN>J)i*3WCGBDG#HDIQmLI;uk3e z4A2kOvYG%p|%|aw>T$CI-3@{vT6$ae{5HyS;AS1nX1;AHNEaJF4S-OU|n=e1&$~Qpckm+N67+f#jV__U5KQqjtIg1CemFUZ@cM%mj@J`W{!|+y!O`HX+>EGPq{n%x z^Px78$*xlN>#wcl1a7yvC#}~sN@`gtWG z-t8asYGAfX)3x+|^||71^Z#zfTH;nwAeI$$VU|t(>t1ZNf~Tl#ui<01kI9TJZy+#I z^>(LUZb$F@Kx67vYP6-R!@xl5X6nQ&D>t`!NXdlD$TX1(>5{;`vLf0CNc$q;7RgtN22TU7_W`0~V`Yad IweY_4H-m>SHvj+t delta 1632 zcmV-m2A}z&?*h>00+1vD#jz!}1Q*EMh<>iV|N2&a`}t$?KO(>_4eLfBue1IHKA-{) zinBhYeh7b`&?fIVj^m$R^a$9#W8;W)q=E)zZciEu|I2!w?V44(Su0w5Ix`d45lxJnt8j zKIs$v{F2M_<@ftOzXy;ceemA9HM2TS&SK}!3;%!V%b|ZCb!b8~am z86ip9wr$(GqR7+|n5|SQDH@HcSS%VTgo^iPbYps|?)e>i_ml4e1rPv0Qe~Frn@@V{ zo|7tfxvsoF8p&iTcYS(wlY{daUv}~Hs$1JlErHpM&(Ubq=nPObe{n^U6z%M&IVRs7 z3Lt*~K()7LqgkCyCKFjPI3{Ni^ytweZU5|Z?da~-?81VI*RRz)9Cht7nRB+t3-
`<%d*O`SWNMFr4cum%c)Q(D4R92okE!NGnq`JUjBh& zUZ>ah;K75+CWzOsskr*L-rnA7kux(hBk6y|(pOhkm*)>cwTqwg=g%8&@OSQZTw1Ig zo1B4ZmwXB!04*hzO6jNch3f11;+#^c6!|{qTb5O`sj0~gPVJ>H=iWZfB{Anrkt98R z`qb0n$HYTVH{zW2u=`&8nt=&&J_QhfmM}g(UcPwoqGGX_Bvof1=8JQhn3zy1l`4M^ z3=AldNO*GbA^-LAozMI8VjOGP#ZA3ko$W%$%YvuX*fSu}&W@U6^4*~T0?-mJU%8}M zET;KlrI9t4d$GUAd~r^(SWK6%Tv8&DAm7LQKPJrY>>j4#=5@47502mY6hHu4!bjVC z6pzQ1PNySMWky2My4POk=kxjFl8%234h|lWqIU;F9(yi5>k=4Id-{WQenlV(f zz0UXh`v**81_(gQ$Y!$<%c?Zl+A|@hZUaxJ(-F(E%BxE~k-ok@NtI$`e0<#V0>GJ{ zNF*Z8!pB6ump!(U9Nr`2c?av;$W=L7yHv zQGVycZpGst*L_becT@i^E$D{}KR12*bn=^@&rZ+)fG}$4Sz!D2?5cY%m%G{UV8{WtA+;1YN`X0G&J)*V!{UNz&OfIh{NeZ`z=On7?!P7T@yk%{(#w z`2he3vW5#F=SAOnF*e0n^z7Wd#n=3kr{cOd^TgMD)1MyzfFOT!-2=35&n}HgT3VKt zmMa(i@4nB~ocEG5-_Eti;a9%jpWkFY008a4bpdqy&Rq=*{iyEl?sexD78Z2-&fTUA zjQrNj2LPZQxGsQ-_h)otdaCaE9eek0YCz<-c0K?A?V#Zvpwi-sN{cJ&j!hxo-+TZ7 zf~=u^fF#K}cu0SeG&?<2b8HIv{^kP!5M&J(K+fHUON*7`Xs5X+k(2LlJ^%ng)|43_ zyYIxW84&W#=K}x`WSgD=igtF?9GgPEzxe*^mIJ Date: Sun, 15 Oct 2023 20:34:37 +0100 Subject: [PATCH 40/43] Automatic changelog for PR #4674 [ci skip] --- html/changelogs/AutoChangeLog-pr-4674.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4674.yml diff --git a/html/changelogs/AutoChangeLog-pr-4674.yml b/html/changelogs/AutoChangeLog-pr-4674.yml new file mode 100644 index 0000000000..50eab8e3be --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4674.yml @@ -0,0 +1,8 @@ +author: "Zonespace, Wei (sprites)" +delete-after: True +changes: + - 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." \ No newline at end of file From 7e4a1dba7e9a87653c4fc0147272319e74036082 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 16 Oct 2023 01:09:22 +0000 Subject: [PATCH 41/43] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4643.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4644.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4661.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4662.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4670.yml | 5 ----- html/changelogs/AutoChangeLog-pr-4674.yml | 8 ------- html/changelogs/AutoChangeLog-pr-4678.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4681.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4684.yml | 4 ---- html/changelogs/archive/2023-10.yml | 27 +++++++++++++++++++++++ 10 files changed, 27 insertions(+), 41 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4643.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4644.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4661.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4662.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4670.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4674.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4678.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4681.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4684.yml diff --git a/html/changelogs/AutoChangeLog-pr-4643.yml b/html/changelogs/AutoChangeLog-pr-4643.yml deleted file mode 100644 index 0ee2aa40b9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4643.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Twomoon" -delete-after: True -changes: - - rscadd: "Added new haircut" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4644.yml b/html/changelogs/AutoChangeLog-pr-4644.yml deleted file mode 100644 index 87b5f8b826..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4644.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Waseemq1235" -delete-after: True -changes: - - admin: "Makes subtle messages more noticeable." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4661.yml b/html/changelogs/AutoChangeLog-pr-4661.yml deleted file mode 100644 index 9f0d81051a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4661.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed issues with turfs, notably lighting, arising when building it from a sheets stack." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4662.yml b/html/changelogs/AutoChangeLog-pr-4662.yml deleted file mode 100644 index 2143bfb05a..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4662.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "The Turing Machine should now keep working as intended if its linked Smartfridge is blown up." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4670.yml b/html/changelogs/AutoChangeLog-pr-4670.yml deleted file mode 100644 index 2acabfacff..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4670.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "CapCamIII" -delete-after: True -changes: - - 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" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4674.yml b/html/changelogs/AutoChangeLog-pr-4674.yml deleted file mode 100644 index 50eab8e3be..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4674.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "Zonespace, Wei (sprites)" -delete-after: True -changes: - - 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." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4678.yml b/html/changelogs/AutoChangeLog-pr-4678.yml deleted file mode 100644 index 40c1d2ddad..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4678.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed 'Join as Freed Mob' verb crashing if freed mobs had previously been deleted." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4681.yml b/html/changelogs/AutoChangeLog-pr-4681.yml deleted file mode 100644 index e654215595..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4681.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed the hive surge join as xeno observer alert text link not actually doing anything." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4684.yml b/html/changelogs/AutoChangeLog-pr-4684.yml deleted file mode 100644 index 0aa80df958..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4684.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed xeno cultists always being created into normal hive, irrespective of the selected hive." \ No newline at end of file diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml index 05fc1ddd7e..5cd6bcd00c 100644 --- a/html/changelogs/archive/2023-10.yml +++ b/html/changelogs/archive/2023-10.yml @@ -188,3 +188,30 @@ 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. From 4911b13744f6a9ef187a1478138bbb453aabd761 Mon Sep 17 00:00:00 2001 From: Vile Beggar Date: Mon, 16 Oct 2023 06:29:47 +0200 Subject: [PATCH 42/43] Makes the Queen's psychic messages bigger (#4687) # About the pull request makes the queen's psychic messages (whisper and radiance) bigger. # Explain why it's good for the game unless you are specifically looking out for these messages, there is a really big likelihood that you're going to miss them in the heat of the moment. hopefully this should reduce such cases # Testing Photographs and Procedure
Screenshots & Videos ![xenosmall](https://github.com/cmss13-devs/cmss13/assets/17518895/87cf78f4-af32-431f-aed9-869600844bf0) ![xenobig](https://github.com/cmss13-devs/cmss13/assets/17518895/614ef7e1-e795-4ed5-884f-7fd9543837d1)
# Changelog :cl: qol: The Queen's psychic messages now use a bigger font and are harder to miss. /:cl: --- code/modules/mob/living/carbon/xenomorph/Abilities.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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) From d04fbdbc66258ab723e4fcc5130a83367a5d59aa Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 16 Oct 2023 05:38:02 +0100 Subject: [PATCH 43/43] Automatic changelog for PR #4687 [ci skip] --- html/changelogs/AutoChangeLog-pr-4687.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4687.yml 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