From b50097864c8b41f856e9ced5e2d6fc840d9c39a9 Mon Sep 17 00:00:00 2001 From: morrowwolf Date: Thu, 20 Jul 2023 10:26:55 -0400 Subject: [PATCH 01/15] Knife webbing fixes and consistency (#3899) # About the pull request This PR: Adds sounds for inserting and removing knifes to the knife webbing Adds draw delay for knives to the knife webbing Allows using quickdraw with the knife webbing Standardizes knife draw delay in a define Knife webbing is now spawned full Allows knife webbing to be alt-clicked to draw from it Reviewer notes: The gun helper stuff looks weird to me. I don't think we ever have to iterate through internal directly from a mob's accessories var but there may be some snowflake stuff going on. Happy to move things around but leaving just in case. (Also looks out of scope :D) # Explain why it's good for the game Consistency and usability good. I genuinely have no clue how I ended up in this rabbit hole. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Morrow add: Added sounds for inserting and removing knifes to the knife webbing add: Added draw delay for knives to the knife webbing add: Allowed using quickdraw with the knife webbing add: Allowed knife webbing to be alt-clicked to draw from it add: Knife webbing is now spawned full code: Standardized knife draw delay in a define /:cl: --- code/__DEFINES/combat.dm | 2 ++ code/game/objects/items/storage/belt.dm | 8 +++--- code/game/objects/items/storage/pouch.dm | 8 +++--- code/modules/clothing/under/ties.dm | 32 ++++++++++++++++++++++++ code/modules/projectiles/gun_helpers.dm | 6 +++++ 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 71c659054952..60c4116df330 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -18,3 +18,5 @@ //the define for visible message range in combat #define COMBAT_MESSAGE_RANGE 3 #define DEFAULT_MESSAGE_RANGE 7 + +#define BAYONET_DRAW_DELAY (1 SECONDS) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 015d8a5eca60..6e8b00fc48e8 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -742,8 +742,8 @@ ) cant_hold = list() flap = FALSE - var/draw_cooldown = 0 - var/draw_cooldown_interval = 1 SECONDS + + COOLDOWN_DECLARE(draw_cooldown) /obj/item/storage/belt/knifepouch/fill_preset_inventory() for(var/i = 1 to storage_slots) @@ -758,9 +758,9 @@ playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) /obj/item/storage/belt/knifepouch/attack_hand(mob/user, mods) - if(draw_cooldown < world.time) + if(COOLDOWN_FINISHED(src, draw_cooldown)) ..() - draw_cooldown = world.time + draw_cooldown_interval + COOLDOWN_START(src, draw_cooldown, BAYONET_DRAW_DELAY) playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) else to_chat(user, SPAN_WARNING("You need to wait before drawing another knife!")) diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm index 02e4b3866271..7a49f48cdc92 100644 --- a/code/game/objects/items/storage/pouch.dm +++ b/code/game/objects/items/storage/pouch.dm @@ -128,10 +128,10 @@ icon_state = "bayonet" storage_slots = 5 storage_flags = STORAGE_FLAGS_POUCH|STORAGE_USING_DRAWING_METHOD|STORAGE_ALLOW_QUICKDRAW - var/draw_cooldown = 0 - var/draw_cooldown_interval = 1 SECONDS var/default_knife_type = /obj/item/weapon/throwing_knife + COOLDOWN_DECLARE(draw_cooldown) + /obj/item/storage/pouch/bayonet/Initialize() . = ..() for(var/total_storage_slots in 1 to storage_slots) @@ -149,9 +149,9 @@ playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) /obj/item/storage/pouch/bayonet/attack_hand(mob/user, mods) - if(draw_cooldown < world.time) + if(COOLDOWN_FINISHED(src, draw_cooldown)) ..() - draw_cooldown = world.time + draw_cooldown_interval + COOLDOWN_START(src, draw_cooldown, BAYONET_DRAW_DELAY) playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) else to_chat(user, SPAN_WARNING("You need to wait before drawing another knife!")) diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 84e053388826..d0e3b77d70c5 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -593,6 +593,12 @@ icon_state = "vest_knives" hold = /obj/item/storage/internal/accessory/knifeharness +/obj/item/clothing/accessory/storage/knifeharness/attack_hand(mob/user, mods) + if(!mods || !mods["alt"] || !length(hold.contents)) + return ..() + + hold.contents[length(contents)].attack_hand(user, mods) + /obj/item/storage/internal/accessory/knifeharness storage_slots = 5 max_storage_space = 5 @@ -603,6 +609,32 @@ /obj/item/attachable/bayonet, /obj/item/weapon/throwing_knife, ) + storage_flags = STORAGE_ALLOW_QUICKDRAW|STORAGE_FLAGS_POUCH + + COOLDOWN_DECLARE(draw_cooldown) + +/obj/item/storage/internal/accessory/knifeharness/fill_preset_inventory() + for(var/i = 1 to storage_slots) + new /obj/item/weapon/throwing_knife(src) + +/obj/item/storage/internal/accessory/knifeharness/attack_hand(mob/user, mods) + . = ..() + + if(!COOLDOWN_FINISHED(src, draw_cooldown)) + to_chat(user, SPAN_WARNING("You need to wait before drawing another knife!")) + return FALSE + + if(length(contents)) + contents[length(contents)].attack_hand(user, mods) + COOLDOWN_START(src, draw_cooldown, BAYONET_DRAW_DELAY) + +/obj/item/storage/internal/accessory/knifeharness/_item_insertion(obj/item/inserted_item, prevent_warning = 0) + ..() + playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) + +/obj/item/storage/internal/accessory/knifeharness/_item_removal(obj/item/removed_item, atom/new_location) + ..() + playsound(src, 'sound/weapons/gun_shotgun_shell_insert.ogg', 15, TRUE) /obj/item/clothing/accessory/storage/knifeharness/duelling name = "decorated harness" diff --git a/code/modules/projectiles/gun_helpers.dm b/code/modules/projectiles/gun_helpers.dm index d8ea29cd92f8..62f7378191a5 100644 --- a/code/modules/projectiles/gun_helpers.dm +++ b/code/modules/projectiles/gun_helpers.dm @@ -554,6 +554,12 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w var/obj/item/storage/internal/accessory/holster/holster = cycled_holster.hold if(holster.current_gun) return holster.current_gun + + for(var/obj/item/clothing/accessory/storage/cycled_accessory in w_uniform.accessories) + var/obj/item/storage/internal/accessory/accessory_storage = cycled_accessory.hold + if(accessory_storage.storage_flags & STORAGE_ALLOW_QUICKDRAW) + return accessory_storage + return FALSE if(istype(slot) && (slot.storage_flags & STORAGE_ALLOW_QUICKDRAW)) From 2aa2bf64161178ab0956b61ac4f0409ef24ab7cd Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 20 Jul 2023 15:39:53 +0100 Subject: [PATCH 02/15] Automatic changelog for PR #3899 [ci skip] --- html/changelogs/AutoChangeLog-pr-3899.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3899.yml diff --git a/html/changelogs/AutoChangeLog-pr-3899.yml b/html/changelogs/AutoChangeLog-pr-3899.yml new file mode 100644 index 000000000000..215aaa3eb4f3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3899.yml @@ -0,0 +1,9 @@ +author: "Morrow" +delete-after: True +changes: + - rscadd: "Added sounds for inserting and removing knifes to the knife webbing" + - rscadd: "Added draw delay for knives to the knife webbing" + - rscadd: "Allowed using quickdraw with the knife webbing" + - rscadd: "Allowed knife webbing to be alt-clicked to draw from it" + - rscadd: "Knife webbing is now spawned full" + - code_imp: "Standardized knife draw delay in a define" \ No newline at end of file From 8906366b3d8bb939303df6a6e6f4a45439cd30a6 Mon Sep 17 00:00:00 2001 From: morrowwolf Date: Thu, 20 Jul 2023 10:31:13 -0400 Subject: [PATCH 03/15] Colonial Marshal ERT now uses their own faction (#3893) # About the pull request Colonial Marshal ERT now uses their own faction Anchorpoint marines now use the proper define for USCM # Explain why it's good for the game I can't find these bastards on the follow menu and they shouldn't instantly have USCM IFF. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Morrow fix: Colonial Marshal ERT now uses their own faction fix: Anchorpoint marines now use the proper define for USCM /:cl: --- code/__DEFINES/mode.dm | 3 ++- code/modules/gear_presets/cmb.dm | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index ab58df78abcc..aa22c70d4213 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -222,6 +222,7 @@ var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, #define FACTION_CLF "CLF" #define FACTION_PMC "PMC" #define FACTION_CONTRACTOR "VAI" +#define FACTION_MARSHAL "Colonial Marshal" #define FACTION_WY_DEATHSQUAD "WY Death Squad" #define FACTION_MERCENARY "Mercenary" #define FACTION_FREELANCER "Freelancer" @@ -238,7 +239,7 @@ var/global/list/whitelist_hierarchy = list(WHITELIST_NORMAL, WHITELIST_COUNCIL, #define FACTION_LIST_MARINE list(FACTION_MARINE) #define FACTION_LIST_HUMANOID list(FACTION_MARINE, FACTION_PMC, FACTION_WY, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_SURVIVOR, FACTION_NEUTRAL, FACTION_COLONIST, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_YAUTJA, FACTION_ZOMBIE) -#define FACTION_LIST_ERT list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO) +#define FACTION_LIST_ERT list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_CLF, FACTION_CONTRACTOR, FACTION_UPP, FACTION_FREELANCER, FACTION_MERCENARY, FACTION_DUTCH, FACTION_HEFA, FACTION_GLADIATOR, FACTION_PIRATE, FACTION_PIZZA, FACTION_SOUTO, FACTION_MARSHAL) #define FACTION_LIST_WY list(FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) #define FACTION_LIST_MARINE_WY list(FACTION_MARINE, FACTION_PMC, FACTION_WY_DEATHSQUAD, FACTION_WY) #define FACTION_LIST_MARINE_UPP list(FACTION_MARINE, FACTION_UPP) diff --git a/code/modules/gear_presets/cmb.dm b/code/modules/gear_presets/cmb.dm index 79df8d567770..55602ec956f3 100644 --- a/code/modules/gear_presets/cmb.dm +++ b/code/modules/gear_presets/cmb.dm @@ -1,6 +1,7 @@ /datum/equipment_preset/cmb name = "Colonial Marshal" - faction = FACTION_USCM + faction = FACTION_MARSHAL + faction_group = list(FACTION_MARSHAL, FACTION_MARINE) rank = JOB_CMB idtype = /obj/item/card/id/deputy languages = list(LANGUAGE_ENGLISH, LANGUAGE_JAPANESE) @@ -410,7 +411,8 @@ paygrade = "ME2" role_comm_title = "A-RFN" skills = /datum/skills/pfc/crafty - faction = FACTION_USCM + faction = FACTION_MARSHAL + faction_group = list(FACTION_MARSHAL, FACTION_MARINE) /datum/equipment_preset/uscm/cmb/load_status(mob/living/carbon/human/new_human) . = ..() From 6da782b2a92d5c8a0bb5edcb05660f925ec64b01 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 20 Jul 2023 15:59:19 +0100 Subject: [PATCH 04/15] Automatic changelog for PR #3893 [ci skip] --- html/changelogs/AutoChangeLog-pr-3893.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3893.yml diff --git a/html/changelogs/AutoChangeLog-pr-3893.yml b/html/changelogs/AutoChangeLog-pr-3893.yml new file mode 100644 index 000000000000..75983d786455 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3893.yml @@ -0,0 +1,5 @@ +author: "Morrow" +delete-after: True +changes: + - bugfix: "Colonial Marshal ERT now uses their own faction" + - bugfix: "Anchorpoint marines now use the proper define for USCM" \ No newline at end of file From 2594650b350cecd4575ca7c1ae657f79eec4fadb Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 21 Jul 2023 01:24:14 +0000 Subject: [PATCH 05/15] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3850.yml | 6 ---- html/changelogs/AutoChangeLog-pr-3893.yml | 5 --- html/changelogs/AutoChangeLog-pr-3899.yml | 9 ----- html/changelogs/AutoChangeLog-pr-3911.yml | 4 --- html/changelogs/AutoChangeLog-pr-3927.yml | 4 --- html/changelogs/AutoChangeLog-pr-3932.yml | 4 --- html/changelogs/AutoChangeLog-pr-3934.yml | 6 ---- html/changelogs/AutoChangeLog-pr-3935.yml | 5 --- html/changelogs/AutoChangeLog-pr-3938.yml | 4 --- html/changelogs/AutoChangeLog-pr-3940.yml | 5 --- html/changelogs/AutoChangeLog-pr-3941.yml | 4 --- html/changelogs/AutoChangeLog-pr-3946.yml | 4 --- html/changelogs/archive/2023-07.yml | 40 +++++++++++++++++++++++ 13 files changed, 40 insertions(+), 60 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3850.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3893.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3899.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3911.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3927.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3932.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3934.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3935.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3938.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3940.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3941.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3946.yml diff --git a/html/changelogs/AutoChangeLog-pr-3850.yml b/html/changelogs/AutoChangeLog-pr-3850.yml deleted file mode 100644 index dc31ab865e69..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3850.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Added donator kit boxes that hold a donator's special gear. They can be destroyed with a right-click while on the ground, and are locked to the donator." - - code_imp: "Tidied up typepaths for many donator items to make it clearer what or who they are for." - - code_imp: "Removed the requirement for donators to match their character name to our config file." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3893.yml b/html/changelogs/AutoChangeLog-pr-3893.yml deleted file mode 100644 index 75983d786455..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3893.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - bugfix: "Colonial Marshal ERT now uses their own faction" - - bugfix: "Anchorpoint marines now use the proper define for USCM" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3899.yml b/html/changelogs/AutoChangeLog-pr-3899.yml deleted file mode 100644 index 215aaa3eb4f3..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3899.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - rscadd: "Added sounds for inserting and removing knifes to the knife webbing" - - rscadd: "Added draw delay for knives to the knife webbing" - - rscadd: "Allowed using quickdraw with the knife webbing" - - rscadd: "Allowed knife webbing to be alt-clicked to draw from it" - - rscadd: "Knife webbing is now spawned full" - - code_imp: "Standardized knife draw delay in a define" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3911.yml b/html/changelogs/AutoChangeLog-pr-3911.yml deleted file mode 100644 index 10b29d57f05f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3911.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Awantje" -delete-after: True -changes: - - code_imp: "Medicomp surgery tools no longer care about what zone you target." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3927.yml b/html/changelogs/AutoChangeLog-pr-3927.yml deleted file mode 100644 index 0fd5837fb3fc..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3927.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "QuickLode" -delete-after: True -changes: - - bugfix: "limits the Survivor CMB Synthetic comms" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3932.yml b/html/changelogs/AutoChangeLog-pr-3932.yml deleted file mode 100644 index df7c88fa0e2a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3932.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "harryob" -delete-after: True -changes: - - admin: "you can no longer touch bad vars" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3934.yml b/html/changelogs/AutoChangeLog-pr-3934.yml deleted file mode 100644 index dffcae96ead9..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3934.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - balance: "Removes large pouches as buyable from all squad roles other than SL" - - balance: "Removes medkit, medical (the base ones, not first aid), and syringe pouches from squad prep room vendors" - - balance: "Replaces the EZ-injector first aid pouch with the alternate tricord/bandage/splint/ointment version in the squad prep room vendors" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3935.yml b/html/changelogs/AutoChangeLog-pr-3935.yml deleted file mode 100644 index 14b051b42c00..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3935.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - balance: "Modifies INTERRUPT_NO_NEEDHAND flag to require you hold the item at least in one hand." - - balance: "Changes splint back to using INTERRUPT_NO_NEEDHAND" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3938.yml b/html/changelogs/AutoChangeLog-pr-3938.yml deleted file mode 100644 index 30042f4a6a2f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3938.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - bugfix: "Fixes PMC survivor synth spawning with marine comms, again." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3940.yml b/html/changelogs/AutoChangeLog-pr-3940.yml deleted file mode 100644 index 6561d2a12c0b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3940.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Ben10083" -delete-after: True -changes: - - rscadd: "Facehuggers now bypass time of death checks when being considered for larva." - - code_imp: "new variable for observers to handle bypass of time of death checks" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3941.yml b/html/changelogs/AutoChangeLog-pr-3941.yml deleted file mode 100644 index a9dd3647263f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3941.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - bugfix: "Reduces yautja armor bullet resistance by 5, and puts that 5 extra onto the heavy armor." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3946.yml b/html/changelogs/AutoChangeLog-pr-3946.yml deleted file mode 100644 index c0076176b75e..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3946.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - code_imp: "Removed extra CI testing for override maps" \ No newline at end of file diff --git a/html/changelogs/archive/2023-07.yml b/html/changelogs/archive/2023-07.yml index 0edee30b9f8e..3394ade555a2 100644 --- a/html/changelogs/archive/2023-07.yml +++ b/html/changelogs/archive/2023-07.yml @@ -327,3 +327,43 @@ silencer_pl: - qol: Default paper and desc_lore viewing windows are now larger to match the expected content in them better. +2023-07-21: + Awantje: + - code_imp: Medicomp surgery tools no longer care about what zone you target. + Ben10083: + - rscadd: Facehuggers now bypass time of death checks when being considered for + larva. + - code_imp: new variable for observers to handle bypass of time of death checks + Drathek: + - code_imp: Removed extra CI testing for override maps + Morrow: + - bugfix: Colonial Marshal ERT now uses their own faction + - bugfix: Anchorpoint marines now use the proper define for USCM + - rscadd: Added sounds for inserting and removing knifes to the knife webbing + - rscadd: Added draw delay for knives to the knife webbing + - rscadd: Allowed using quickdraw with the knife webbing + - rscadd: Allowed knife webbing to be alt-clicked to draw from it + - rscadd: Knife webbing is now spawned full + - code_imp: Standardized knife draw delay in a define + - balance: Modifies INTERRUPT_NO_NEEDHAND flag to require you hold the item at least + in one hand. + - balance: Changes splint back to using INTERRUPT_NO_NEEDHAND + - balance: Removes large pouches as buyable from all squad roles other than SL + - balance: Removes medkit, medical (the base ones, not first aid), and syringe pouches + from squad prep room vendors + - balance: Replaces the EZ-injector first aid pouch with the alternate tricord/bandage/splint/ointment + version in the squad prep room vendors + QuickLode: + - bugfix: limits the Survivor CMB Synthetic comms + harryob: + - admin: you can no longer touch bad vars + realforest2001: + - bugfix: Fixes PMC survivor synth spawning with marine comms, again. + - bugfix: Reduces yautja armor bullet resistance by 5, and puts that 5 extra onto + the heavy armor. + - rscadd: Added donator kit boxes that hold a donator's special gear. They can be + destroyed with a right-click while on the ground, and are locked to the donator. + - code_imp: Tidied up typepaths for many donator items to make it clearer what or + who they are for. + - code_imp: Removed the requirement for donators to match their character name to + our config file. From 60c520ccc5d63d4424a7674e52d95107eea7a47b Mon Sep 17 00:00:00 2001 From: Waseemq1235 <42235601+Waseemq1235@users.noreply.github.com> Date: Fri, 21 Jul 2023 11:48:20 +0300 Subject: [PATCH 06/15] Adds var to tents to make them deployable on the Almayer/Tdome (#3953) # About the pull request unrestricted_deployment now allows tents to be deployed on the almayer or tdome. # Explain why it's good for the game Event stuff probably # Testing Photographs and Procedure Tested locally. # Changelog :cl: code: Adds unrestricted_deployment var to tents. Bypasses groundside checks. /:cl: --------- Co-authored-by: harryob --- code/modules/tents/folded_tents.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/modules/tents/folded_tents.dm b/code/modules/tents/folded_tents.dm index d1f922703500..d6f1dbca9fd9 100644 --- a/code/modules/tents/folded_tents.dm +++ b/code/modules/tents/folded_tents.dm @@ -12,6 +12,8 @@ var/off_y = 0 /// Map Template to use for the tent var/template + /// If this tent can be deployed anywhere + var/unrestricted_deployment = FALSE /// Check an area is clear for deployment of the tent /obj/item/folded_tent/proc/check_area(turf/ref_turf, mob/message_receiver, display_error = FALSE) @@ -20,7 +22,7 @@ var/list/turf_block = get_deployment_area(ref_turf) for(var/turf/turf as anything in turf_block) var/area/area = get_area(turf) - if(!area.can_build_special) + if(!area.can_build_special && !unrestricted_deployment) if(message_receiver) to_chat(message_receiver, SPAN_WARNING("You cannot deploy tents on restricted areas.")) if(display_error) @@ -73,7 +75,7 @@ if(!istype(deploy_turf) || (deploy_turf.x + dim_x > world.maxx) || (deploy_turf.y + dim_y > world.maxy)) // Map border basically return - if(!is_ground_level(deploy_turf.z)) + if(!is_ground_level(deploy_turf.z) && !unrestricted_deployment) to_chat(user, SPAN_WARNING("USCM Operational Tents are intended for operations, not ship or space recreation.")) return From f07579dd8428dbb53acb92ee8b5929bd4fae31d5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 21 Jul 2023 09:56:10 +0100 Subject: [PATCH 07/15] Automatic changelog for PR #3953 [ci skip] --- html/changelogs/AutoChangeLog-pr-3953.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3953.yml diff --git a/html/changelogs/AutoChangeLog-pr-3953.yml b/html/changelogs/AutoChangeLog-pr-3953.yml new file mode 100644 index 000000000000..b5e21de9662f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3953.yml @@ -0,0 +1,4 @@ +author: "Waseemq1235" +delete-after: True +changes: + - code_imp: "Adds unrestricted_deployment var to tents. Bypasses groundside checks." \ No newline at end of file From 10d30387b26e824e6ca7ea6f2175724d33c60062 Mon Sep 17 00:00:00 2001 From: morrowwolf Date: Fri, 21 Jul 2023 04:48:31 -0400 Subject: [PATCH 08/15] Decreases blood bag IV insertion time (#3950) # About the pull request This PR makes it take 1 second instead of 3 seconds (times the surgery skill multiplier) for blood bag insertion time. # Explain why it's good for the game This is taking too long which is severely disincentivizing usage of a mechanic we want to encourage. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Morrow balance: Decreased blood bag IV insertion time from 3 to 1 second /:cl: --- code/game/objects/items/reagent_containers/blood_pack.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/reagent_containers/blood_pack.dm b/code/game/objects/items/reagent_containers/blood_pack.dm index 8e29a26c2ecd..ce259b78f87e 100644 --- a/code/game/objects/items/reagent_containers/blood_pack.dm +++ b/code/game/objects/items/reagent_containers/blood_pack.dm @@ -65,7 +65,7 @@ if(user.action_busy) return - if(!do_after(user, 3 SECONDS * user.get_skill_duration_multiplier(SKILL_SURGERY), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, attacked_mob, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) + if(!do_after(user, (1 SECONDS) * user.get_skill_duration_multiplier(SKILL_SURGERY), INTERRUPT_ALL, BUSY_ICON_FRIENDLY, attacked_mob, INTERRUPT_MOVED, BUSY_ICON_MEDICAL)) to_chat(user, SPAN_WARNING("You were interrupted before you could finish!")) return From 8c07b7e2deb2354f932f64ba1ced31391103e883 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:09:56 +0100 Subject: [PATCH 09/15] Automatic changelog for PR #3950 [ci skip] --- html/changelogs/AutoChangeLog-pr-3950.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3950.yml diff --git a/html/changelogs/AutoChangeLog-pr-3950.yml b/html/changelogs/AutoChangeLog-pr-3950.yml new file mode 100644 index 000000000000..97d84b1cfd91 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3950.yml @@ -0,0 +1,4 @@ +author: "Morrow" +delete-after: True +changes: + - balance: "Decreased blood bag IV insertion time from 3 to 1 second" \ No newline at end of file From 2e27d03803e3f2a97550488f8ea0b5b6f0a7e2fb Mon Sep 17 00:00:00 2001 From: ClairionCM <115504494+ClairionCM@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:49:30 +0200 Subject: [PATCH 10/15] Minor Chem ERT objective description change. (#3948) # About the pull request Changes the Chem ERT objectives to mention that they shouldnt be deploying groundside without explicit permission, since they can't deploy without staff authorizing it as an event anyways. # Explain why it's good for the game Reduces confusion around deploying as Chem ERT # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Chem ERT objectives now mention that they cant deploy without explicit permission. /:cl: --- code/datums/emergency_calls/goons.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/datums/emergency_calls/goons.dm b/code/datums/emergency_calls/goons.dm index 8bb2ee515c69..8a0b00968807 100644 --- a/code/datums/emergency_calls/goons.dm +++ b/code/datums/emergency_calls/goons.dm @@ -47,12 +47,12 @@ /datum/emergency_call/goon/chem_retrieval/New() ..() dispatch_message = "[MAIN_SHIP_NAME], this is USCSS Royce. Our squad is boarding to retrieve all samples of a chemical recently scanned from your research department. You should already have received a significant sum of money for your department's discovery. In return we ask that you cooperate and provide everything related to the chemical to our retrieval team." - objectives = "Secure all documents, samples, and chemicals containing the property DNA_Disintegrating from [MAIN_SHIP_NAME] research department." + objectives = "Secure all documents, samples, and chemicals containing the property DNA_Disintegrating from [MAIN_SHIP_NAME] research department and return them to Response Team Station." /datum/emergency_call/goon/chem_retrieval/proc/check_objective_info() if(objective_info) - objectives = "Secure all documents, samples and chemicals related to [objective_info] from [MAIN_SHIP_NAME] research department." - objectives += "Assume at least 30 units are located within the department. If they can not make more that should be all. Cooperate with the onboard CL to ensure all who know the complete recipe are kept silenced with a contract of confidentiality. All humans who have ingested the chemical must be brought back dead or alive. Viral scan is required for any humans who is suspected of ingestion. The professor may call for PMC back up if things get out of hand." + objectives = "Secure all documents, samples and chemicals related to [objective_info] from [MAIN_SHIP_NAME] research department and return them to Response Team Station." + objectives += "Assume at least 30 units are located within the department. If they can not make more that should be all. Cooperate with the onboard CL to ensure all who know the complete recipe are kept silenced with a contract of confidentiality. All humans who have ingested the chemical must be brought back dead or alive. Viral scan is required for any humans who is suspected of ingestion. You must not deploy to the colony without explicit permission from PMC Dispatch. The professor may call for PMC back up if things get out of hand." checked_objective = TRUE /datum/emergency_call/goon/chem_retrieval/create_member(datum/mind/M, turf/override_spawn_loc) From 34df407d7b556cb73476e66bab90cc61bff57f1d Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:23:11 +0100 Subject: [PATCH 11/15] Automatic changelog for PR #3948 [ci skip] --- html/changelogs/AutoChangeLog-pr-3948.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3948.yml diff --git a/html/changelogs/AutoChangeLog-pr-3948.yml b/html/changelogs/AutoChangeLog-pr-3948.yml new file mode 100644 index 000000000000..46e551b66804 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3948.yml @@ -0,0 +1,4 @@ +author: "ClairionCM" +delete-after: True +changes: + - rscadd: "Chem ERT objectives now mention that they cant deploy without explicit permission." \ No newline at end of file From fee91f7d886d062800757d95bb6cf24e88f3ad98 Mon Sep 17 00:00:00 2001 From: Ben <91219575+Ben10083@users.noreply.github.com> Date: Fri, 21 Jul 2023 04:49:44 -0400 Subject: [PATCH 12/15] Ghosts now notified when larva are about to chestburst out of un-nested (#3947) # About the pull request This PR tells ghosts when someone is about to be chestbursted (only if not nested) # Explain why it's good for the game It is good to have interesting events like chestbursts be told to ghosts before it happens, letting them observe the event in advance # Testing Photographs and Procedure ![image](https://github.com/cmss13-devs/cmss13/assets/91219575/ca2b486f-f9ed-41cb-a249-fd4ddd8e4d91) # Changelog :cl: qol: Ghosts now informed when a non-nested host is about to chestburst /:cl: --- code/modules/mob/living/carbon/xenomorph/Embryo.dm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index e6fc734e4e5a..b1c6bddd0ac8 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -218,6 +218,18 @@ to_chat(new_xeno, "Talk in Hivemind using ; (e.g. ';My life for the queen!')") playsound_client(new_xeno.client, 'sound/effects/xeno_newlarva.ogg', 25, 1) + // Inform observers to grab some popcorn if it isnt nested + if(!HAS_TRAIT(affected_mob, TRAIT_NESTED)) + var/area/burst_area = get_area(src) + if(burst_area) + for(var/mob/dead/observer/observer as anything in GLOB.observer_list) + to_chat(observer, SPAN_DEADSAY("A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob] at \the [burst_area]! [OBSERVER_JMP(observer, affected_mob)]")) + to_chat(src, SPAN_DEADSAY("A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob] at \the [burst_area]!")) + else + for(var/mob/dead/observer/observer as anything in GLOB.observer_list) + to_chat(observer, SPAN_DEADSAY("A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob]! [OBSERVER_JMP(observer, affected_mob)]")) + to_chat(src, SPAN_DEADSAY("A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob]!")) + stage = 6 /mob/living/carbon/xenomorph/larva/proc/cause_unbearable_pain(mob/living/carbon/victim) From 5e93fc83565c538cdc0b9e2433ed68c4ee982894 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:36:15 +0100 Subject: [PATCH 13/15] Automatic changelog for PR #3947 [ci skip] --- html/changelogs/AutoChangeLog-pr-3947.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3947.yml diff --git a/html/changelogs/AutoChangeLog-pr-3947.yml b/html/changelogs/AutoChangeLog-pr-3947.yml new file mode 100644 index 000000000000..dd47b51bb07b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3947.yml @@ -0,0 +1,4 @@ +author: "Ben10083" +delete-after: True +changes: + - qol: "Ghosts now informed when a non-nested host is about to chestburst" \ No newline at end of file From fa16ee3b0dac69ea27269e1af77bd878a7dd6bea Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Fri, 21 Jul 2023 01:51:06 -0700 Subject: [PATCH 14/15] Fix the first prompt to ghost when nested (#3943) # About the pull request This PR fixes an oversight where the initial prompt to ghost when nested performed ghosting a different way than the ghost verb. Not only does it now use a TGUI prompt, but the larva queue time will be assigned to the time they ghosted so they aren't immediately a candidate (the get_xeno_candidates proc is checking reviveability, but they have no TOD yet so it skipped that check for nested). An alternative implementation to this would be to have that proc account for nested, but I was more inclined to do this this way to update the prompt to tgui. # Explain why it's good for the game More TGUI usage for user prompts, and nested marines should not get prioritized in the larva queue. # Testing Photographs and Procedure
Screenshots & Videos https://youtu.be/FZTtlhTQPbE
# Changelog :cl: Drathek fix: Fixed the prompt when nested to ghost: Now uses a TGUI prompt and sets larva queue time. /:cl: --- .../stool_bed_chair_nest/xeno_nest.dm | 69 +++++++++---------- code/modules/mob/dead/observer/observer.dm | 6 +- 2 files changed, 35 insertions(+), 40 deletions(-) diff --git a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm index 37d46cbe6d5d..c8f5a7f82c0f 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm @@ -192,12 +192,12 @@ recently_nested = TRUE addtimer(VARSET_CALLBACK(src, recently_nested, FALSE), 5 SECONDS) -/obj/structure/bed/nest/buckle_mob(mob/M as mob, mob/user as mob) +/obj/structure/bed/nest/buckle_mob(mob/mob, mob/user) . = FALSE - if(!isliving(M) || islarva(user) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.stat || user.lying || M.buckled || !iscarbon(user)) + if(!isliving(mob) || islarva(user) || (get_dist(src, user) > 1) || user.is_mob_restrained() || user.stat || user.lying || mob.buckled || !iscarbon(user)) return - if(isxeno(M)) + if(isxeno(mob)) to_chat(user, SPAN_WARNING("You can't buckle your sisters.")) return @@ -205,69 +205,64 @@ to_chat(user, SPAN_WARNING("There's already someone in [src].")) return - if(M.mob_size > MOB_SIZE_HUMAN) - to_chat(user, SPAN_WARNING("\The [M] is too big to fit in [src].")) + if(mob.mob_size > MOB_SIZE_HUMAN) + to_chat(user, SPAN_WARNING("\The [mob] is too big to fit in [src].")) return - if(!isxeno(user) || issynth(M)) + if(!isxeno(user) || issynth(mob)) to_chat(user, SPAN_WARNING("Gross! You're not touching that stuff.")) return - if(isyautja(M) && !force_nest) - to_chat(user, SPAN_WARNING("\The [M] seems to be wearing some kind of resin-resistant armor!")) + if(isyautja(mob) && !force_nest) + to_chat(user, SPAN_WARNING("\The [mob] seems to be wearing some kind of resin-resistant armor!")) return - if(M == user) + if(mob == user) return - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.lying) //Don't ask me why is has to be - to_chat(user, SPAN_WARNING("[M] is resisting, ground them.")) + var/mob/living/carbon/human/human = null + if(ishuman(mob)) + human = mob + if(!human.lying) //Don't ask me why is has to be + to_chat(user, SPAN_WARNING("[mob] is resisting, ground them.")) return var/securing_time = 15 // Don't increase the nesting time for monkeys and other species - if(ishuman_strict(M)) + if(ishuman_strict(mob)) securing_time = 75 - user.visible_message(SPAN_WARNING("[user] pins [M] into [src], preparing the securing resin."), - SPAN_WARNING("[user] pins [M] into [src], preparing the securing resin.")) - var/M_loc = M.loc + user.visible_message(SPAN_WARNING("[user] pins [mob] into [src], preparing the securing resin."), + SPAN_WARNING("[user] pins [mob] into [src], preparing the securing resin.")) + var/M_loc = mob.loc if(!do_after(user, securing_time, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) return - if(M.loc != M_loc) + if(mob.loc != M_loc) return if(buckled_mob) //Just in case to_chat(user, SPAN_WARNING("There's already someone in [src].")) return - if(ishuman(M)) //Improperly stunned Marines won't be nested - var/mob/living/carbon/human/H = M - if(!H.lying) //Don't ask me why is has to be - to_chat(user, SPAN_WARNING("[M] is resisting, ground them.")) + if(human) //Improperly stunned Marines won't be nested + if(!human.lying) //Don't ask me why is has to be + to_chat(user, SPAN_WARNING("[mob] is resisting, ground them.")) return - do_buckle(M, user) - ADD_TRAIT(M, TRAIT_NESTED, TRAIT_SOURCE_BUCKLE) + do_buckle(mob, user) + ADD_TRAIT(mob, TRAIT_NESTED, TRAIT_SOURCE_BUCKLE) - if(!ishuman(M)) + if(!human) return TRUE //Disabling motion detectors and other stuff they might be carrying - var/mob/living/carbon/human/H = M - H.start_nesting_cooldown() - H.disable_special_flags() - H.disable_lights() - H.disable_special_items() - - if(H.mind) - var/choice = alert(M, "You have no possibility of escaping unless freed by your fellow marines, do you wish to Ghost? If you are freed while ghosted, you will be given the choice to return to your body.", ,"Ghost", "Remain") - if(choice == "Ghost") - // Ask to ghostize() so they can reenter, to leave mind and such intact - ghost_of_buckled_mob = M.ghostize(can_reenter_corpse = TRUE) - ghost_of_buckled_mob?.can_reenter_corpse = FALSE // Just don't for now + human.start_nesting_cooldown() + human.disable_special_flags() + human.disable_lights() + human.disable_special_items() + + if(human.client) + human.do_ghost() return TRUE diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index ac67471ce30f..3a35eecd8557 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -396,7 +396,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp ghostize(TRUE) else var/list/options = list("Ghost", "Stay in body") - if(check_rights(R_MOD)) + if(check_other_rights(client, R_MOD, FALSE)) options = list("Aghost") + options var/text_prompt = "Are you -sure- you want to ghost?\n(You are alive. If you ghost, you won't be able to return to your body. You can't change your mind so choose wisely!)" var/is_nested = (buckled && istype(buckled, /obj/structure/bed/nest)) ? TRUE : FALSE @@ -412,8 +412,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp AdjustSleeping(2) // Sleep so you will be properly recognized as ghosted var/turf/location = get_turf(src) if(location) //to avoid runtime when a mob ends up in nullspace - msg_admin_niche("[key_name_admin(usr)] has ghosted. [ADMIN_JMP(location)]") - log_game("[key_name_admin(usr)] has ghosted.") + msg_admin_niche("[key_name_admin(client)] has ghosted. [ADMIN_JMP(location)]") + log_game("[key_name_admin(client)] has ghosted.") var/mob/dead/observer/ghost = ghostize((is_nested && nest && !QDELETED(nest))) //FALSE parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3 if(ghost && !is_admin_level(z)) ghost.timeofdeath = world.time From 06ff6e3b58e6c10e0fd6e7ff98ea600b5ed6a571 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 21 Jul 2023 10:49:12 +0100 Subject: [PATCH 15/15] Automatic changelog for PR #3943 [ci skip] --- html/changelogs/AutoChangeLog-pr-3943.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3943.yml diff --git a/html/changelogs/AutoChangeLog-pr-3943.yml b/html/changelogs/AutoChangeLog-pr-3943.yml new file mode 100644 index 000000000000..76575973ee42 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3943.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Fixed the prompt when nested to ghost: Now uses a TGUI prompt and sets larva queue time." \ No newline at end of file