From 4b3fd02c8204798e1c3ad077dbcfbf3e63b9829e Mon Sep 17 00:00:00 2001 From: cuberound Date: Tue, 9 Jun 2026 17:40:02 +0200 Subject: [PATCH 01/70] silly fun things --- .../hostile/retaliate/giant_aligator.dm | 24 +++++++++++++++++++ .../hostile/retaliate/giant_lizard.dm | 4 +++- code/modules/mob/mob.dm | 4 ++-- colonialmarines.dme | 1 + 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm new file mode 100644 index 000000000000..8132ad5bbb1e --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm @@ -0,0 +1,24 @@ +#define ALIGATOR_SPEED_DRAGING 1.2 +#define LIZARD_SPEED_NORMAL 2.8 + + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator + name = "Aligator" + stun_duration = 2 + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/pounced_mob(mob/living/pounced_mob) + . = ..() + throwing = 0 + start_pulling(pounced_mob, TRUE, simple_mob = TRUE) + MoveTo(target_mob_ref?.resolve(), 5, TRUE, 2 SECONDS, TRUE) //drag our target away + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/start_pulling(atom/movable/clone/AM, lunge, no_msg, simple_mob) + . = ..() + if(.) + speed = ALIGATOR_SPEED_DRAGING +/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/stop_pulling() + . = ..() + speed = LIZARD_SPEED_NORMAL + +#undef ALIGATOR_SPEED_DRAGING +#undef LIZARD_SPEED_NORMAL diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 02205b913e01..90431d121093 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -89,6 +89,8 @@ var/list/acceptable_foods = list(/obj/item/reagent_container/food/snacks/mre_food, /obj/item/reagent_container/food/snacks/resin_fruit) ///Is the mob currently eating the food_target? var/is_eating = FALSE + ///How long do we stun the pounced target for + var/stun_duration = 0.5 ///Cooldown dictating how long the mob will wait between eating food. COOLDOWN_DECLARE(food_cooldown) @@ -933,7 +935,7 @@ return playsound(loc, "giant_lizard_hiss", 25) - pounced_mob.KnockDown(0.5) + pounced_mob.KnockDown(stun_duration) step_to(src, pounced_mob) if(!client && !(pounced_mob.faction in faction_group)) ravagingattack(pounced_mob) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 779969ddf073..20913ef43741 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -471,11 +471,11 @@ /mob/proc/start_pulling(atom/movable/AM, lunge, no_msg) return -/mob/living/start_pulling(atom/movable/clone/AM, lunge, no_msg) +/mob/living/start_pulling(atom/movable/clone/AM, lunge, no_msg, simple_mob = FALSE) if(istype(AM, /atom/movable/clone)) AM = AM.mstr //If AM is a clone, refer to the real target - if ( QDELETED(AM) || !usr || src==AM || !isturf(loc) || !isturf(AM.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! + if ( QDELETED(AM) || (!usr && !simple_mob) || src==AM || !isturf(loc) || !isturf(AM.loc) ) //if there's no person pulling OR the person is pulling themself OR the object being pulled is inside something: abort! return if (AM.anchored || AM.throwing) diff --git a/colonialmarines.dme b/colonialmarines.dme index 96bab81215a8..de3014efb975 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -2331,6 +2331,7 @@ #include "code\modules\mob\living\simple_animal\hostile\tree.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\giant_aligator.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\giant_lizard.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" #include "code\modules\mob\new_player\body.dm" From fd67f26cbeec5839001ff874398cf2e2b2495311 Mon Sep 17 00:00:00 2001 From: cuberound Date: Fri, 12 Jun 2026 13:23:32 +0200 Subject: [PATCH 02/70] swims in waters does not burn --- .../living/simple_animal/hostile/retaliate/giant_aligator.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm index 8132ad5bbb1e..6d805367f8a4 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm @@ -6,6 +6,11 @@ name = "Aligator" stun_duration = 2 +/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/try_to_extinguish() + if(istype(get_turf(src), /turf/open/gm/river) || (/obj/effect/blocker/water in loc) || istype(get_turf(src), /turf/open/beach/coastline) || istype(get_turf(src), /turf/open/gm/coast)) + ExtinguishMob() + . = ..() + /mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/pounced_mob(mob/living/pounced_mob) . = ..() throwing = 0 From 577d11cb834188ef84a9520ce1428632b26dcb25 Mon Sep 17 00:00:00 2001 From: MistChristmas Date: Thu, 18 Jun 2026 10:50:06 +0100 Subject: [PATCH 03/70] Fix: Overwatch overlays not being removed (#12462) # About the pull request Resolves: https://github.com/cmss13-devs/cmss13/issues/12461 Attach the signal to the client so it actually receives the signal maybe. # Explain why it's good for the game Bugs bad # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Overwatch overlays no longer get stuck /:cl: --------- Co-authored-by: fira --- code/modules/cm_marines/overwatch.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 40a92c1087e8..f78155165bfc 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -1513,16 +1513,17 @@ GLOBAL_LIST_EMPTY_TYPED(active_overwatch_consoles, /obj/structure/machinery/comp plane_controller.add_filter("overwatch_overlay5", 7, layering_filter(x = 480, y = 0, color=overlay_color, icon = overlay_icon, blend_mode = BLEND_INSET_OVERLAY)) plane_controller.add_filter("overwatch_overlay6", 8, layering_filter(x = 480, y = 480, color=overlay_color, icon = overlay_icon, blend_mode = BLEND_INSET_OVERLAY)) - RegisterSignal(watcher, COMSIG_CLIENT_RESET_VIEW, PROC_REF(clear_overwatch_overlay), watcher) + RegisterSignal(watcher.client, COMSIG_CLIENT_RESET_VIEW, PROC_REF(clear_overwatch_overlay), TRUE) /obj/structure/machinery/computer/overwatch/proc/stop_watching_camera(mob/watcher, atom/target) watcher.reset_view(null) // This will call the below proc via the above registered signal //Why so complicated? Many things may reset our view (resisting being the most common one) -/obj/structure/machinery/computer/overwatch/proc/clear_overwatch_overlay(mob/watcher) +/obj/structure/machinery/computer/overwatch/proc/clear_overwatch_overlay(client/watcher) + SIGNAL_HANDLER UnregisterSignal(watcher, COMSIG_CLIENT_RESET_VIEW) - set_onscreen_text(watcher, null) - var/atom/movable/plane_master_controller/non_master/plane_controller = watcher.hud_used.plane_master_controllers[PLANE_MASTERS_NON_MASTER] + set_onscreen_text(watcher.mob, null) + var/atom/movable/plane_master_controller/non_master/plane_controller = watcher.mob.hud_used.plane_master_controllers[PLANE_MASTERS_NON_MASTER] if(!plane_controller) return From 1c841ba2c60df07fdd0e7e3be4650a04a046678b Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 09:59:05 +0000 Subject: [PATCH 04/70] Automatic changelog for PR #12462 [ci skip] --- html/changelogs/AutoChangeLog-pr-12462.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12462.yml diff --git a/html/changelogs/AutoChangeLog-pr-12462.yml b/html/changelogs/AutoChangeLog-pr-12462.yml new file mode 100644 index 000000000000..6b00b349c07e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12462.yml @@ -0,0 +1,4 @@ +author: "MistChristmas" +delete-after: True +changes: + - bugfix: "Overwatch overlays no longer get stuck" \ No newline at end of file From 5bd69c2045d27db8db33510483d4a65d55f544ba Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 04:49:05 +0000 Subject: [PATCH 05/70] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-12462.yml | 4 ---- html/changelogs/archive/2026-06.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-12462.yml diff --git a/html/changelogs/AutoChangeLog-pr-12462.yml b/html/changelogs/AutoChangeLog-pr-12462.yml deleted file mode 100644 index 6b00b349c07e..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12462.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MistChristmas" -delete-after: True -changes: - - bugfix: "Overwatch overlays no longer get stuck" \ No newline at end of file diff --git a/html/changelogs/archive/2026-06.yml b/html/changelogs/archive/2026-06.yml index e35fa410bac6..ff591c1a6c31 100644 --- a/html/changelogs/archive/2026-06.yml +++ b/html/changelogs/archive/2026-06.yml @@ -240,3 +240,6 @@ kiVts: - rscadd: Research can announce information about their chemicals to everyone with a medical hud. This requires CMO to publish their work first, though. +2026-06-19: + MistChristmas: + - bugfix: Overwatch overlays no longer get stuck From 10175deed914a0ed4e13edcbbc878861230b20db Mon Sep 17 00:00:00 2001 From: Antlers <78444114+antlersss@users.noreply.github.com> Date: Fri, 19 Jun 2026 21:08:55 -0400 Subject: [PATCH 06/70] Fix: Hyperdyne corporate survivors no longer get aired out by LZ turrets (#12467) # About the pull request Fixes #12330 by adding a new faction list for hyperdyne survivors that includes FACTION_SURVIVOR. # 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: Antlers fix: Hyperdyne corporate survivors no longer get aired out by LZ turrets /:cl: --- code/__DEFINES/mode.dm | 1 + .../survivors/sorokyne_strata/preset_sorokyne_strata.dm | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/mode.dm b/code/__DEFINES/mode.dm index e800ceb60d0e..63db389b917b 100644 --- a/code/__DEFINES/mode.dm +++ b/code/__DEFINES/mode.dm @@ -305,6 +305,7 @@ DEFINE_BITFIELD(whitelist_status, list( #define FACTION_LIST_SURVIVOR_IASF list(FACTION_SURVIVOR, FACTION_IASF, FACTION_TWE) #define FACTION_LIST_SURVIVOR_PAP list(FACTION_SURVIVOR, FACTION_PAP, FACTION_UPP) #define FACTION_LIST_SURVIVOR_UPP list(FACTION_SURVIVOR, FACTION_UPP) +#define FACTION_LIST_SURVIVOR_HYPERDYNE list(FACTION_SURVIVOR, FACTION_UPP, FACTION_HYPERDYNE) #define FACTION_LIST_MARINE_WY list(FACTION_MARINE, FACTION_PMC, FACTION_WY) #define FACTION_LIST_MARINE_UPP list(FACTION_MARINE, FACTION_UPP) #define FACTION_LIST_MARINE_TWE list(FACTION_MARINE, FACTION_TWE) diff --git a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm index 6d1838075825..b89b41090576 100644 --- a/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm +++ b/code/modules/gear_presets/survivors/sorokyne_strata/preset_sorokyne_strata.dm @@ -811,7 +811,7 @@ job_title = JOB_HC_SEC_SYNTH assignment = JOB_HC_SEC_SYNTH role_comm_title = "HC Sec Syn" - faction_group = list(FACTION_HYPERDYNE, FACTION_LIST_SURVIVOR_UPP) + faction_group = FACTION_LIST_SURVIVOR_HYPERDYNE idtype = /obj/item/card/id/silver/cl/hyperdyne survivor_variant = CORPORATE_SURVIVOR minimap_background = "background_hc_management" From 7b89fbfa5712684f6f657aa81733bed0051092f4 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Sat, 20 Jun 2026 01:16:00 +0000 Subject: [PATCH 07/70] Automatic changelog for PR #12467 [ci skip] --- html/changelogs/AutoChangeLog-pr-12467.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12467.yml diff --git a/html/changelogs/AutoChangeLog-pr-12467.yml b/html/changelogs/AutoChangeLog-pr-12467.yml new file mode 100644 index 000000000000..247df1da68d1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12467.yml @@ -0,0 +1,4 @@ +author: "Antlers" +delete-after: True +changes: + - bugfix: "Hyperdyne corporate survivors no longer get aired out by LZ turrets" \ No newline at end of file From 01c8e07e75f33b7553dd7605fc5bc64869ed11db Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Sat, 20 Jun 2026 04:04:14 +0000 Subject: [PATCH 08/70] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-12467.yml | 4 ---- html/changelogs/archive/2026-06.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-12467.yml diff --git a/html/changelogs/AutoChangeLog-pr-12467.yml b/html/changelogs/AutoChangeLog-pr-12467.yml deleted file mode 100644 index 247df1da68d1..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12467.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Antlers" -delete-after: True -changes: - - bugfix: "Hyperdyne corporate survivors no longer get aired out by LZ turrets" \ No newline at end of file diff --git a/html/changelogs/archive/2026-06.yml b/html/changelogs/archive/2026-06.yml index ff591c1a6c31..eba1ae22092f 100644 --- a/html/changelogs/archive/2026-06.yml +++ b/html/changelogs/archive/2026-06.yml @@ -243,3 +243,6 @@ 2026-06-19: MistChristmas: - bugfix: Overwatch overlays no longer get stuck +2026-06-20: + Antlers: + - bugfix: Hyperdyne corporate survivors no longer get aired out by LZ turrets From d021cae9a61f6e53111fbdcaca6e54aed5d45566 Mon Sep 17 00:00:00 2001 From: cuberound <122645057+cuberound@users.noreply.github.com> Date: Sun, 21 Jun 2026 16:14:48 +0200 Subject: [PATCH 09/70] xenos can see remaining durability of resin structures (#12274) # About the pull request roadmap, xenos should be able to tell how damaged their structures are # Explain why it's good for the game xenos should be able to tell how damaged their structures are # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: qol: xenos can see reamining durability of special structures on examine /:cl: --------- Co-authored-by: Detective-Google <48196179+Detective-Google@users.noreply.github.com> --- .../cm_aliens/structures/special_structure.dm | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/code/modules/cm_aliens/structures/special_structure.dm b/code/modules/cm_aliens/structures/special_structure.dm index 00ec478a2614..ee4e075956a7 100644 --- a/code/modules/cm_aliens/structures/special_structure.dm +++ b/code/modules/cm_aliens/structures/special_structure.dm @@ -23,6 +23,23 @@ /// Tells the structure if they are being deleted because of hijack var/hijack_delete = FALSE +/obj/effect/alien/resin/special/get_examine_text(mob/user) + . = ..() + if(isxeno(user) || isobserver(user)) + var/health_portion = health/maxhealth + switch(health_portion) + if(0 to 0.25) + . += SPAN_WARNING("[src] is about to fall apart!") + return + if(0.25 to 0.5) + . += SPAN_WARNING("[src] looks severely damaged!") + return + if(0.5 to 0.75) + . += ("[src] is slightly damaged.") + return + else + . += ("[src] is healthy.") + /obj/effect/alien/resin/special/Initialize(mapload, hive_ref) . = ..() maxhealth = health From 167d599bb889293ffcd3a887d4fb72844f183951 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Sun, 21 Jun 2026 14:24:25 +0000 Subject: [PATCH 10/70] Automatic changelog for PR #12274 [ci skip] --- html/changelogs/AutoChangeLog-pr-12274.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12274.yml diff --git a/html/changelogs/AutoChangeLog-pr-12274.yml b/html/changelogs/AutoChangeLog-pr-12274.yml new file mode 100644 index 000000000000..275f0e8abf01 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12274.yml @@ -0,0 +1,4 @@ +author: "cuberound" +delete-after: True +changes: + - qol: "xenos can see reamining durability of special structures on examine" \ No newline at end of file From 9e5098192fee965f825e3b4d2328011cf5717680 Mon Sep 17 00:00:00 2001 From: cuberound <122645057+cuberound@users.noreply.github.com> Date: Sun, 21 Jun 2026 17:49:26 +0200 Subject: [PATCH 11/70] notbananacannotpry (#12448) # About the pull request remvoes few unused lines and standardises on check can pry is not used and prying is not so simple and each thing that can be pryed has its own check # Explain why it's good for the game meh prob is not but cleaner file # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: isbanana is no longer /:cl: --- code/__DEFINES/typecheck/items.dm | 6 ------ code/game/machinery/air_alarm.dm | 2 +- code/game/machinery/colony_floodlights.dm | 2 +- code/game/machinery/constructable_frame.dm | 2 +- code/game/objects/items/frames/camera.dm | 2 +- 5 files changed, 4 insertions(+), 10 deletions(-) diff --git a/code/__DEFINES/typecheck/items.dm b/code/__DEFINES/typecheck/items.dm index 5c4d099b8112..4438cd918aa0 100644 --- a/code/__DEFINES/typecheck/items.dm +++ b/code/__DEFINES/typecheck/items.dm @@ -1,9 +1,7 @@ #define iswelder(O) (istype(O, /obj/item/tool/weldingtool)) -#define iscoil(O) (istype(O, /obj/item/stack/cable_coil)) #define iswire(O) (istype(O, /obj/item/stack/cable_coil)) #define isweapon(O) (O && is_type_in_list(O, GLOB.weapons)) #define isgun(O) (istype(O, /obj/item/weapon/gun)) -#define isbanana(O) (istype(O, /obj/item/reagent_container/food/snacks/grown/banana)) #define istool(O) (O && is_type_in_list(O, GLOB.common_tools)) #define ispowerclamp(O) (istype(O, /obj/item/powerloader_clamp)) #define isstorage(O) (istype(O, /obj/item/storage)) @@ -27,7 +25,3 @@ GLOBAL_LIST_INIT(common_tools, list( /obj/item/device/multitool, /obj/item/tool/crowbar )) - -/obj/item/proc/can_pry() - if(pry_capable > IS_PRY_CAPABLE_SIMPLE || HAS_TRAIT(src, TRAIT_TOOL_CROWBAR)) - return TRUE diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 9189936be0ff..3b917baf393c 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -984,7 +984,7 @@ table tr:first-child th:first-child { border: none;} return if(1) - if(iscoil(W)) + if(iswire(W)) var/obj/item/stack/cable_coil/C = W if(C.use(5)) to_chat(user, SPAN_NOTICE("You wire \the [src].")) diff --git a/code/game/machinery/colony_floodlights.dm b/code/game/machinery/colony_floodlights.dm index c899b643453d..f6f02fefc737 100644 --- a/code/game/machinery/colony_floodlights.dm +++ b/code/game/machinery/colony_floodlights.dm @@ -283,7 +283,7 @@ GLOBAL_LIST_INIT(all_breaker_switches, list()) to_chat(user, SPAN_WARNING("You need more welding fuel to complete this task.")) return TRUE - else if(iscoil(I)) + else if(iswire(I)) var/obj/item/stack/cable_coil/coil = I if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_TRAINED)) to_chat(user, SPAN_WARNING("You have no clue how to repair [src].")) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index f6ae18e6a339..6b6f9558c339 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -53,7 +53,7 @@ return switch(state) if(CONSTRUCTION_STATE_BEGIN) - if(iscoil(P)) + if(iswire(P)) if(!skillcheck(user, SKILL_CONSTRUCTION, required_skill)) to_chat(user, SPAN_WARNING("You are not trained to build machines...")) return diff --git a/code/game/objects/items/frames/camera.dm b/code/game/objects/items/frames/camera.dm index c951e8dfeb5b..67f5765aa2d9 100644 --- a/code/game/objects/items/frames/camera.dm +++ b/code/game/objects/items/frames/camera.dm @@ -58,7 +58,7 @@ if(2) // State 2 - if(iscoil(W)) + if(iswire(W)) var/obj/item/stack/cable_coil/C = W if(C.use(2)) to_chat(user, SPAN_NOTICE("You add wires to the assembly.")) From a23eb58e8d77c91ff5d35ab83fb98cb21bb7c3a3 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Sun, 21 Jun 2026 15:56:30 +0000 Subject: [PATCH 12/70] Automatic changelog for PR #12448 [ci skip] --- html/changelogs/AutoChangeLog-pr-12448.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12448.yml diff --git a/html/changelogs/AutoChangeLog-pr-12448.yml b/html/changelogs/AutoChangeLog-pr-12448.yml new file mode 100644 index 000000000000..90b8abbc5c74 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12448.yml @@ -0,0 +1,4 @@ +author: "cuberound" +delete-after: True +changes: + - code_imp: "isbanana is no longer" \ No newline at end of file From b4baaa23f0a72ba756540863b864c4c9d3bfe932 Mon Sep 17 00:00:00 2001 From: Sutures <101909198+noelle-lavenza@users.noreply.github.com> Date: Sun, 21 Jun 2026 12:25:23 -0400 Subject: [PATCH 13/70] Optimize flamer fire spread (#11992) # About the pull request The fire spread proc now requires a reagent to be passed in, which avoids creating a new reagent for every recursive call. `fire_spread_recur()` now uses `CHECK_TICK` instead of `spawn(0)`, so instead of delaying each wave by a single tick, it'll proceed as fast as possible without overloading the server. `fire_spread_recur()` now only checks the directions it'll try to spread to, rather than all directions. `fire_spread_recur()` and `fire_spread()` now use `set waitfor = FALSE` to avoid blocking callers. This is preferable to an explicit `spawn(0)` because it will only spawn if the server is overloaded, which avoids giving the scheduler a bunch of spawned procs to handle. Split out of #11946. # Explain why it's good for the game Improves performance a good bit, there's no pause/delay when an incendiary OB hits. # Testing Photographs and Procedure I do have screenshots and videos, I just am too lazy to upload them right now.
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: MoondancerPony refactor: made fire spread (from OB, flamers, etc) much faster /:cl: --- code/modules/cm_marines/dropship_ammo.dm | 22 +++--- code/modules/cm_marines/orbital_cannon.dm | 3 +- .../modules/projectiles/guns/flamer/flamer.dm | 72 ++++++++----------- 3 files changed, 45 insertions(+), 52 deletions(-) diff --git a/code/modules/cm_marines/dropship_ammo.dm b/code/modules/cm_marines/dropship_ammo.dm index c4048302bdb5..2a46e12a2b44 100644 --- a/code/modules/cm_marines/dropship_ammo.dm +++ b/code/modules/cm_marines/dropship_ammo.dm @@ -261,12 +261,12 @@ /obj/structure/ship_ammo/laser_battery/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) set waitfor = 0 - var/list/turf_list = RANGE_TURFS(3, impact) //This is its area of effect + var/list/turf_list = shuffle(RANGE_TURFS(3, impact)) //This is its area of effect playsound(impact, 'sound/effects/pred_vision.ogg', 20, 1) - for(var/i=1 to 16) //This is how many tiles within that area of effect will be randomly ignited - var/turf/U = pick(turf_list) - turf_list -= U - fire_spread_recur(U, create_cause_data(fired_from.name, source_mob), 1, null, 5, 75, "#EE6515")//Very, very intense, but goes out very quick + var/datum/reagent/fire_reagent = create_fire_reagent(5, 75, "#EE6515") + for(var/i in 1 to 16) //This is how many tiles within that area of effect will be randomly ignited + var/turf/target_turf = turf_list[i] + fire_spread(target_turf, create_cause_data(fired_from.name, source_mob), 1, fire_reagent)//Very, very intense, but goes out very quick if(!ammo_count && !QDELETED(src)) qdel(src) //deleted after last laser beam is fired and impact the ground. @@ -316,8 +316,9 @@ /obj/structure/ship_ammo/rocket/banshee/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) + var/datum/reagent/fire_reagent = create_fire_reagent(15, 50, "#00b8ff") addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cell_explosion), impact, 175, 20, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name), source_mob)), 0.5 SECONDS) //Small explosive power with a small fall off for a big explosion range - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 4, 15, 50, "#00b8ff"), 0.5 SECONDS) //Very intense but the fire doesn't last very long + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 4, fire_reagent), 0.5 SECONDS) //Very intense but the fire doesn't last very long QDEL_IN(src, 0.5 SECONDS) /obj/structure/ship_ammo/rocket/keeper @@ -357,8 +358,9 @@ /obj/structure/ship_ammo/rocket/napalm/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) + var/datum/reagent/fire_reagent = create_fire_reagent(60, 30, "#EE6515") addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cell_explosion), impact, 200, 25, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, create_cause_data(initial(name), source_mob)), 0.5 SECONDS) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 6, 60, 30, "#EE6515"), 0.5 SECONDS) //Color changed into napalm's color to better convey how intense the fire actually is. + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 6, fire_reagent), 0.5 SECONDS) //Color changed into napalm's color to better convey how intense the fire actually is. QDEL_IN(src, 0.5 SECONDS) /obj/structure/ship_ammo/rocket/thermobaric @@ -371,7 +373,8 @@ /obj/structure/ship_ammo/rocket/thermobaric/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) impact.ceiling_debris_check(3) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 4, 25, 50, "#c96500"), 0.5 SECONDS) //Very intense but the fire doesn't last very long + var/datum/reagent/fire_reagent = create_fire_reagent(25, 50, "#c96500") + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(fire_spread), impact, create_cause_data(initial(name), source_mob), 4, fire_reagent), 0.5 SECONDS) //Very intense but the fire doesn't last very long for(var/mob/living/carbon/victim in orange(5, impact)) victim.throw_atom(impact, 3, 15, src, TRUE) // Implosion throws affected towards center of vacuum QDEL_IN(src, 0.5 SECONDS) @@ -425,7 +428,8 @@ /obj/structure/ship_ammo/minirocket/incendiary/detonate_on(turf/impact, obj/structure/dropship_equipment/weapon/fired_from) ..() spawn(5) - fire_spread(impact, create_cause_data(initial(name), source_mob), 3, 25, 20, "#EE6515") + var/datum/reagent/fire_reagent = create_fire_reagent(25, 20, "#EE6515") + fire_spread(impact, create_cause_data(initial(name), source_mob), 3, fire_reagent) /obj/structure/ship_ammo/sentry name = "\improper A/C-49-P Air Deployable Sentry" diff --git a/code/modules/cm_marines/orbital_cannon.dm b/code/modules/cm_marines/orbital_cannon.dm index c9de051fc7a6..0bd03ff08f60 100644 --- a/code/modules/cm_marines/orbital_cannon.dm +++ b/code/modules/cm_marines/orbital_cannon.dm @@ -532,7 +532,8 @@ GLOBAL_LIST_EMPTY(orbital_cannon_cancellation) handle_ob_shake(target) sleep(clear_delay) - fire_spread(target, cause_data, distance, fire_level, burn_level, fire_color, fire_type, TURF_PROTECTION_OB) + var/datum/reagent/fire_reagent = create_fire_reagent(fire_level, burn_level, fire_color, fire_type) + fire_spread(target, cause_data, distance, fire_reagent, TURF_PROTECTION_OB) qdel(src) /obj/structure/ob_ammo/warhead/cluster diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index b4928ff6c07f..38496cfe9212 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -899,38 +899,30 @@ GLOBAL_LIST_EMPTY(flamer_particles) else weather_smothering_strength = 0 -/proc/fire_spread_recur(turf/target, datum/cause_data/cause_data, remaining_distance, direction, fire_lvl, burn_lvl, f_color, burn_sprite = "dynamic", aerial_flame_level) - var/direction_angle = dir2angle(direction) +/proc/create_fire_reagent(fire_lvl, burn_lvl, f_color, burn_sprite = "dynamic") + var/datum/reagent/fire_reag = new() + fire_reag.intensityfire = burn_lvl + fire_reag.durationfire = fire_lvl + fire_reag.burn_sprite = burn_sprite + fire_reag.burncolor = f_color + return fire_reag + +/proc/fire_spread_recur(turf/target, datum/cause_data/cause_data, remaining_distance, direction, datum/reagent/fire_reagent, aerial_flame_level) + set waitfor = FALSE var/obj/flamer_fire/foundflame = locate() in target if(!foundflame) - var/datum/reagent/fire_reag = new() - fire_reag.intensityfire = burn_lvl - fire_reag.durationfire = fire_lvl - fire_reag.burn_sprite = burn_sprite - fire_reag.burncolor = f_color - new/obj/flamer_fire(target, cause_data, fire_reag) + new/obj/flamer_fire(target, cause_data, fire_reagent) if(target.density) return - for(var/spread_direction in GLOB.alldirs) - + for(var/spread_angle in list(-45, 0, 45)) + var/spread_direction = turn(direction, spread_angle) var/spread_power = remaining_distance - - var/spread_direction_angle = dir2angle(spread_direction) - - var/angle = 180 - abs( abs( direction_angle - spread_direction_angle ) - 180 ) // the angle difference between the spread direction and initial direction - - switch(angle) //this reduces power when the explosion is going around corners - if (45) - spread_power *= 0.75 - if (90 to 180) //turns out angles greater than 90 degrees almost never happen. This bit also prevents trying to spread backwards - continue - - switch(spread_direction) - if(NORTH,SOUTH,EAST,WEST) - spread_power-- - else - spread_power -= 1.414 //diagonal spreading + if(abs(spread_angle) == 45) // diagonal + spread_power -= sqrt(2) + spread_power *= 0.75 //this reduces power when the explosion is going around corners + else // cardinal + spread_power -= 1 if (spread_power < 1) continue @@ -942,37 +934,33 @@ GLOBAL_LIST_EMPTY(flamer_particles) if(aerial_flame_level) if(picked_turf.get_pylon_protection_level() >= aerial_flame_level) - break - var/area/picked_area = get_area(picked_turf) + continue + var/area/picked_area = picked_turf.loc // get_area() is slower here when we know we have a turf if(CEILING_IS_PROTECTED(picked_area?.ceiling, get_ceiling_protection_level(aerial_flame_level))) - break - - spawn(0) - fire_spread_recur(picked_turf, cause_data, spread_power, spread_direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) + continue -/proc/fire_spread(turf/target, datum/cause_data/cause_data, range, fire_lvl, burn_lvl, f_color, burn_sprite = "dynamic", aerial_flame_level = TURF_PROTECTION_NONE) - var/datum/reagent/fire_reag = new() - fire_reag.intensityfire = burn_lvl - fire_reag.durationfire = fire_lvl - fire_reag.burn_sprite = burn_sprite - fire_reag.burncolor = f_color + CHECK_TICK // before the recursive call + fire_spread_recur(picked_turf, cause_data, spread_power, spread_direction, fire_reagent, aerial_flame_level) - new/obj/flamer_fire(target, cause_data, fire_reag) - for(var/direction in GLOB.alldirs) +/proc/fire_spread(turf/target, datum/cause_data/cause_data, range, fire_reagent, aerial_flame_level = TURF_PROTECTION_NONE) + set waitfor = FALSE + new/obj/flamer_fire(target, cause_data, fire_reagent) + for(var/turf/picked_turf in orange(1, target)) + var/direction = get_dir(target, picked_turf) var/spread_power = range switch(direction) if(NORTH,SOUTH,EAST,WEST) spread_power-- else spread_power -= 1.414 //diagonal spreading - var/turf/picked_turf = get_step(target, direction) if(aerial_flame_level) if(picked_turf.get_pylon_protection_level() >= aerial_flame_level) continue var/area/picked_area = get_area(picked_turf) if(CEILING_IS_PROTECTED(picked_area?.ceiling, get_ceiling_protection_level(aerial_flame_level))) continue - fire_spread_recur(picked_turf, cause_data, spread_power, direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) + fire_spread_recur(picked_turf, cause_data, spread_power, direction, fire_reagent, aerial_flame_level) + CHECK_TICK // don't overrun spreading in just one direction // So it doens't do the spinny animation /obj/flamer_fire/onZImpact(turf/impact_turf, height) From 3dc7108364e04c4d4a895606d54e517660f6557c Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Sun, 21 Jun 2026 16:32:13 +0000 Subject: [PATCH 14/70] Automatic changelog for PR #11992 [ci skip] --- html/changelogs/AutoChangeLog-pr-11992.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11992.yml diff --git a/html/changelogs/AutoChangeLog-pr-11992.yml b/html/changelogs/AutoChangeLog-pr-11992.yml new file mode 100644 index 000000000000..8790bca9e114 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11992.yml @@ -0,0 +1,4 @@ +author: "MoondancerPony" +delete-after: True +changes: + - refactor: "made fire spread (from OB, flamers, etc) much faster" \ No newline at end of file From 39c44a5921181af3019ca97c40b3b9df3e38d1b6 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Mon, 22 Jun 2026 04:53:39 +0300 Subject: [PATCH 15/70] Stops almayer crash breaking unbreakable APCs. (#12455) # About the pull request If it can't be broken without direct intervention it should not break. Main purpose for this is the AI Core APC which cannot be repaired. # 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: add: Almayer crash no longer breaks hardened APCs. /:cl: Co-authored-by: forest2001 --- code/controllers/subsystem/hijack.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/hijack.dm b/code/controllers/subsystem/hijack.dm index 9c9a4447b1c6..b9daf9c2e9ca 100644 --- a/code/controllers/subsystem/hijack.dm +++ b/code/controllers/subsystem/hijack.dm @@ -797,7 +797,7 @@ SUBSYSTEM_DEF(hijack) var/cause_data = create_cause_data("ship explosion") for(var/obj/structure/machinery/power/apc/apc as anything in apcs) var/turf/apc_turf = get_turf(apc) - if(apc_turf && prob(chance)) + if(apc_turf && apc.crash_break_probability && prob(chance)) cell_explosion(apc_turf, 30, 5, explosion_cause_data=cause_data, enviro=TRUE) CHECK_TICK From 1a8adc618d3c528d3d686e9dca50e2cf017f12a4 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 02:04:39 +0000 Subject: [PATCH 16/70] Automatic changelog for PR #12455 [ci skip] --- html/changelogs/AutoChangeLog-pr-12455.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12455.yml diff --git a/html/changelogs/AutoChangeLog-pr-12455.yml b/html/changelogs/AutoChangeLog-pr-12455.yml new file mode 100644 index 000000000000..df9abaf913d1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12455.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Almayer crash no longer breaks hardened APCs." \ No newline at end of file From f37dedee1561807ae2a7cb2a60c3c8e8ec3564c8 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Mon, 22 Jun 2026 04:53:44 +0300 Subject: [PATCH 17/70] Queen and hive backend (#12442) # About the pull request Changes some queen locked procs to xeno generic. Also adjusts some backend bits for the hive to allow them to be changed easier. Part of the project to break the pathogen PR down to smaller chunks for review purposes. # Explain why it's good for the game Stability for the future. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Changed some queen procs to xenomorph base. add: Changed Queen naming convention (thought I did this ages ago) code: Changed the tier_slot_multiplier var name to divisor because it was stupidly named. /:cl: --------- Co-authored-by: forest2001 --- .../mob/living/carbon/xenomorph/Embryo.dm | 9 +- .../mob/living/carbon/xenomorph/Evolution.dm | 10 +- .../mob/living/carbon/xenomorph/XenoProcs.dm | 6 +- .../xenomorph/abilities/general_abilities.dm | 286 +++++++++++++++++ .../living/carbon/xenomorph/castes/Queen.dm | 292 +----------------- .../living/carbon/xenomorph/hive_status.dm | 38 ++- .../mob/living/carbon/xenomorph/life.dm | 2 +- 7 files changed, 341 insertions(+), 302 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index f29b97fc8fd9..51be269699d2 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -300,8 +300,10 @@ notify_ghosts(header = "Burst Imminent", message = "A [new_xeno.hive.prefix]Larva is about to chestburst out of [affected_mob][area_text]!", source = affected_mob) stage = 7 // Begin the autoburst countdown +/mob/living/carbon/xenomorph/proc/cause_unbearable_pain(mob/living/carbon/victim) + return -/mob/living/carbon/xenomorph/larva/proc/cause_unbearable_pain(mob/living/carbon/victim) +/mob/living/carbon/xenomorph/larva/cause_unbearable_pain(mob/living/carbon/victim) if(loc != victim) return victim.emote("scream") @@ -311,7 +313,10 @@ to_chat(victim, message) addtimer(CALLBACK(src, PROC_REF(cause_unbearable_pain), victim), rand(1, 3) SECONDS, TIMER_UNIQUE|TIMER_NO_HASH_WAIT) -/mob/living/carbon/xenomorph/larva/proc/chest_burst(mob/living/carbon/victim) +/mob/living/carbon/xenomorph/proc/chest_burst(mob/living/carbon/victim) + return + +/mob/living/carbon/xenomorph/larva/chest_burst(mob/living/carbon/victim) set waitfor = 0 if(victim.chestburst || loc != victim) return diff --git a/code/modules/mob/living/carbon/xenomorph/Evolution.dm b/code/modules/mob/living/carbon/xenomorph/Evolution.dm index 2b3aa1ea2ebe..bd33ced38533 100644 --- a/code/modules/mob/living/carbon/xenomorph/Evolution.dm +++ b/code/modules/mob/living/carbon/xenomorph/Evolution.dm @@ -66,6 +66,12 @@ GLOBAL_LIST_EMPTY(deevolved_ckeys) to_chat(src, SPAN_WARNING("The Hive cannot support this caste yet! ([floor((caste_datum.minimum_evolve_time - ROUND_TIME) / 10)] seconds remaining)")) return + if(hive.restricted_castes && (castepick in hive.restricted_castes)) + var/max_num = hive.restricted_castes[castepick] + if(hive.get_caste_count(castepick) >= max_num) + to_chat(src, SPAN_WARNING("The Hive has reached capacity for this caste!")) + return + if(!evolve_checks()) return @@ -518,10 +524,10 @@ GLOBAL_LIST_EMPTY(deevolved_ckeys) if(xeno.counts_for_slots) totalXenos++ - if(tier == 1 && (((used_tier_2_slots + used_tier_3_slots) / totalXenos) * hive.tier_slot_multiplier) >= 0.5 && castepick != XENO_CASTE_QUEEN) + if(tier == 1 && (((used_tier_2_slots + used_tier_3_slots) / totalXenos) * hive.tier_slot_divisor) >= 0.5 && castepick != XENO_CASTE_QUEEN) to_chat(src, SPAN_WARNING("The hive cannot support another Tier 2, wait for either more aliens to be born or someone to die.")) return FALSE - else if(tier == 2 && ((used_tier_3_slots / totalXenos) * hive.tier_slot_multiplier) >= 0.20 && castepick != XENO_CASTE_QUEEN) + else if(tier == 2 && ((used_tier_3_slots / totalXenos) * hive.tier_slot_divisor) >= 0.20 && castepick != XENO_CASTE_QUEEN) to_chat(src, SPAN_WARNING("The hive cannot support another Tier 3, wait for either more aliens to be born or someone to die.")) return FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm index 7896d44e0e7d..a8d19062ff71 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm @@ -782,6 +782,10 @@ to_chat(src, SPAN_XENOBOLDNOTICE("There are no weeds here! Nesting hosts requires hive weeds.")) return + if(supplier_weeds.hivenumber != hivenumber) + to_chat(src, SPAN_XENOBOLDNOTICE("The weeds here do not belong to us!")) + return + if(supplier_weeds.weed_strength < WEED_LEVEL_HIVE) to_chat(src, SPAN_XENOBOLDNOTICE("The weeds here are not strong enough for nesting hosts.")) return @@ -807,7 +811,7 @@ to_chat(src, SPAN_XENONOTICE("There is already a host nested here!")) return - var/obj/structure/bed/nest/applicable_nest = new(get_turf(host_to_nest)) + var/obj/structure/bed/nest/applicable_nest = new(get_turf(host_to_nest), hivenumber) applicable_nest.dir = dir_to_nest if(!applicable_nest.buckle_mob(host_to_nest, src)) qdel(applicable_nest) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm index 9c22bf65e5c8..04fa1f7fe9b9 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm @@ -570,3 +570,289 @@ seethroughComp.toggle_active() apply_cooldown() + + + +/mob/living/carbon/xenomorph/proc/set_orders() + set category = "Alien.Hivemind-Control" + set name = "Set Hive Orders (50)" + set desc = "Give some specific orders to the hive. They can see this on the status pane." + + if(!check_state()) + return + if(last_special > world.time) + return + if(!check_plasma(50)) + return + use_plasma(50) + + var/txt = strip_html(input("Set the hive's orders to what? Leave blank to clear it.", "Hive Orders","")) + if(txt) + xeno_message("The Queen's will overwhelms your instincts...", 3, hivenumber) + xeno_message("\""+txt+"\"", 3, hivenumber) + xeno_maptext(txt, "Hive Orders Updated", hivenumber) + hive.hive_orders = txt + log_hiveorder("[key_name(usr)] has set the Hive Order to: [txt]") + else + hive.hive_orders = "" + + last_special = world.time + 15 SECONDS + +/mob/living/carbon/xenomorph/proc/hive_message() + set category = "Alien.Hivemind" + set name = "Word of the Queen (50)" + set desc = "Send a message to all aliens in the hive that is big and visible." + if(client.prefs.muted & MUTE_IC) + to_chat(src, SPAN_DANGER("You cannot send Announcements (muted).")) + return + if(health <= 0) + to_chat(src, SPAN_WARNING("You can't do that while unconscious.")) + return FALSE + if(!check_plasma(50)) + return FALSE + + // Get a reference to the ability to utilize cooldowns + var/datum/action/xeno_action/onclick/queen_word/word_ability + for(var/datum/action/xeno_action/action in actions) + if(istype(action, /datum/action/xeno_action/onclick/queen_word)) + word_ability = action + if(!word_ability.action_cooldown_check()) + return FALSE + break + + var/input = stripped_multiline_input(src, "This message will be broadcast throughout the hive.", "Word of the Queen", "") + if(!input) + return FALSE + + use_plasma(50) + if(word_ability) + word_ability.apply_cooldown() + + xeno_announcement(input, hivenumber, "The words of the [name] reverberate in our head...") + + message_admins("[key_name_admin(src)] has created a Word of the Queen report:") + log_admin("[key_name_admin(src)] Word of the Queen: [input]") + return TRUE + +/mob/living/carbon/xenomorph/proc/claw_toggle() + set name = "Permit/Disallow Harming" + set desc = "Allows you to permit the hive to harm/slash." + set category = "Alien.Hivemind-Control" + + if(stat) + to_chat(src, SPAN_WARNING("You can't do that now.")) + return + + if(!hive) + to_chat(src, SPAN_WARNING("You can't do that now.")) + CRASH("[src] attempted to toggle slashing without a linked hive") + + if(hive.hive_flags_locked) + to_chat(src, SPAN_WARNING("You can't do that now.")) + return + + if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_TOGGLE_SLASH)) + to_chat(src, SPAN_WARNING("You must wait a bit before you can toggle this again.")) + return + + var/current_setting = null + if(CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_SLASH_ALLOW_ALL)) + current_setting = "Allowed" + else if(!(hive.hive_flags & XENO_SLASH_INFECTED) && (hive.hive_flags & XENO_SLASH_NORMAL)) + current_setting = "Restricted - Infected Hosts" + else if(!(hive.hive_flags & XENO_SLASH_ALLOW_ALL)) + current_setting = "Forbidden" + + var/choice = tgui_input_list(src, "Choose which level of harming hosts to permit to your hive.", "Harming", list("Forbidden", "Restricted - Infected Hosts", "Allowed"), theme="hive_status", default=current_setting) + if(!choice) + return + + if(choice == "Allowed") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already allow harming.")) + return + to_chat(src, SPAN_XENONOTICE("You allow harming.")) + xeno_message(SPAN_XENOANNOUNCE("The Queen has permitted the harming of hosts! Go hog wild!"), hivenumber=hivenumber) + hive.hive_flags |= XENO_SLASH_ALLOW_ALL + else if(choice == "Restricted - Infected Hosts") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already forbid harming of infected hosts.")) + return + to_chat(src, SPAN_XENONOTICE("You forbid harming of infected hosts.")) + xeno_message(SPAN_XENOANNOUNCE("The Queen has restricted the harming of hosts. You can no longer slash infected hosts."), hivenumber=hivenumber) + hive.hive_flags &= ~XENO_SLASH_INFECTED + hive.hive_flags |= XENO_SLASH_NORMAL + else if(choice == "Forbidden") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already forbid harming entirely.")) + return + to_chat(src, SPAN_XENONOTICE("You forbid harming entirely.")) + xeno_message(SPAN_XENOANNOUNCE("The Queen has forbidden the harming of hosts. You can no longer slash your enemies."), hivenumber=hivenumber) + hive.hive_flags &= ~XENO_SLASH_ALLOW_ALL + + TIMER_COOLDOWN_START(src, COOLDOWN_TOGGLE_SLASH, 30 SECONDS) + +/mob/living/carbon/xenomorph/proc/construction_toggle() + set name = "Permit/Disallow Construction Placement" + set desc = "Allows you to permit the hive to place construction nodes freely." + set category = "Alien.Hivemind-Control" + + if(stat) + to_chat(src, SPAN_WARNING("You can't do that now.")) + return + + if(!hive) + to_chat(src, SPAN_WARNING("You can't do that now.")) + CRASH("[src] attempted to toggle construction without a linked hive") + + if(hive.hive_flags_locked) + to_chat(src, SPAN_WARNING("You can't do that now.")) + return + + if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_TOGGLE_CONSTRUCTION)) + to_chat(src, SPAN_WARNING("You must wait a bit before you can toggle this again.")) + return + + var/current_setting = null + if(CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_CONSTRUCTION_ALLOW_ALL)) + current_setting = "Anyone" + else if(!(hive.hive_flags & XENO_CONSTRUCTION_NORMAL) && CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_CONSTRUCTION_QUEEN|XENO_CONSTRUCTION_LEADERS)) + current_setting = "Leaders" + else if(!(hive.hive_flags & (XENO_CONSTRUCTION_LEADERS|XENO_CONSTRUCTION_NORMAL)) && (hive.hive_flags & XENO_CONSTRUCTION_QUEEN)) + current_setting = "Queen" + + var/choice = tgui_input_list(src, "Choose which level of construction placement freedom to permit to your hive.", "Construction", list("Queen", "Leaders", "Anyone"), theme="hive_status", default=current_setting) + if(!choice) + return + + if(choice == "Anyone") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already allow construction placement to all builder castes.")) + return + to_chat(src, SPAN_XENONOTICE("You allow construction placement to all builder castes.")) + xeno_message("The Queen has permitted the placement of construction nodes to all builder castes!", hivenumber=hivenumber) + hive.hive_flags |= XENO_CONSTRUCTION_ALLOW_ALL + else if(choice == "Leaders") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already restrict construction placement to leaders only.")) + return + to_chat(src, SPAN_XENONOTICE("You restrict construction placement to leaders only.")) + xeno_message("The Queen has restricted the placement of construction nodes to leading builder castes only.", hivenumber=hivenumber) + hive.hive_flags &= ~XENO_CONSTRUCTION_NORMAL + hive.hive_flags |= XENO_CONSTRUCTION_QUEEN|XENO_CONSTRUCTION_LEADERS + else if(choice == "Queen") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already forbid construction placement entirely.")) + return + to_chat(src, SPAN_XENONOTICE("You forbid construction placement entirely.")) + xeno_message("The Queen has forbidden the placement of construction nodes to all but herself.", hivenumber=hivenumber) + hive.hive_flags &= ~(XENO_CONSTRUCTION_LEADERS|XENO_CONSTRUCTION_NORMAL) + hive.hive_flags |= XENO_CONSTRUCTION_QUEEN + + TIMER_COOLDOWN_START(src, COOLDOWN_TOGGLE_CONSTRUCTION, 30 SECONDS) + +/mob/living/carbon/xenomorph/proc/destruction_toggle() + set name = "Permit/Disallow Special Structure Destruction" + set desc = "Allows you to permit the hive to destroy special structures freely." + set category = "Alien.Hivemind-Control" + + if(stat) + to_chat(src, SPAN_WARNING("You can't do that now.")) + return + + if(!hive) + to_chat(src, SPAN_WARNING("You can't do that now.")) + CRASH("[src] attempted to toggle deconstruction without a linked hive") + + if(hive.hive_flags_locked) + to_chat(src, SPAN_WARNING("You can't do that now.")) + return + + if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_TOGGLE_DECONSTRUCTION)) + to_chat(src, SPAN_WARNING("You must wait a bit before you can toggle this again.")) + return + + var/current_setting = null + if(CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_DECONSTRUCTION_ALLOW_ALL)) + current_setting = "Anyone" + else if(!(hive.hive_flags & XENO_DECONSTRUCTION_NORMAL) && CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_DECONSTRUCTION_QUEEN|XENO_DECONSTRUCTION_LEADERS)) + current_setting = "Leaders" + else if(!(hive.hive_flags & (XENO_DECONSTRUCTION_LEADERS|XENO_DECONSTRUCTION_NORMAL)) && (hive.hive_flags & XENO_DECONSTRUCTION_QUEEN)) + current_setting = "Queen" + + var/choice = tgui_input_list(src, "Choose which level of destruction freedom to permit to your hive.", "Deconstruction", list("Queen", "Leaders", "Anyone"), theme="hive_status", default=current_setting) + if(!choice) + return + + if(choice == "Anyone") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already allow special structure destruction to all builder castes and leaders.")) + return + to_chat(src, SPAN_XENONOTICE("You allow special structure destruction to all builder castes and leaders.")) + xeno_message("The Queen has permitted the destruction of special structures to all builder castes and leaders!", hivenumber=hivenumber) + hive.hive_flags |= XENO_DECONSTRUCTION_ALLOW_ALL + else if(choice == "Leaders") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already restrict special structure destruction to leaders only.")) + return + to_chat(src, SPAN_XENONOTICE("You restrict special structure destruction to leaders only.")) + xeno_message("The Queen has restricted the destruction of special structures to leaders only.", hivenumber=hivenumber) + hive.hive_flags &= ~XENO_DECONSTRUCTION_NORMAL + hive.hive_flags |= XENO_DECONSTRUCTION_QUEEN|XENO_DECONSTRUCTION_LEADERS + else if(choice == "Queen") + if(current_setting == choice) + to_chat(src, SPAN_XENOWARNING("You already forbid special structure destruction entirely.")) + return + to_chat(src, SPAN_XENONOTICE("You forbid special structure destruction entirely.")) + xeno_message("The Queen has forbidden the destruction of special structures to all but herself.", hivenumber=hivenumber) + hive.hive_flags &= ~(XENO_DECONSTRUCTION_LEADERS|XENO_DECONSTRUCTION_NORMAL) + hive.hive_flags |= XENO_DECONSTRUCTION_QUEEN + + TIMER_COOLDOWN_START(src, COOLDOWN_TOGGLE_DECONSTRUCTION, 30 SECONDS) + +/mob/living/carbon/xenomorph/proc/unnesting_toggle() + set name = "Permit/Disallow Unnesting" + set desc = "Allows you to restrict unnesting to drones." + set category = "Alien.Hivemind-Control" + + if(stat) + to_chat(src, SPAN_WARNING("You can't do that now.")) + + if(!hive) + to_chat(src, SPAN_WARNING("You can't do that now.")) + CRASH("[src] attempted to toggle unnesting without a linked hive") + + if(hive.hive_flags_locked) + to_chat(src, SPAN_WARNING("You can't do that now.")) + return + + if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_TOGGLE_UNNESTING)) + to_chat(src, SPAN_WARNING("You must wait a bit before you can toggle this again.")) + return + + var/current_setting = null + if(!(hive.hive_flags & XENO_UNNESTING_RESTRICTED)) + current_setting = "Anyone" + else if(hive.hive_flags & XENO_UNNESTING_RESTRICTED) + current_setting = "Drone castes" + + var/choice = tgui_input_list(src, "Choose which level of unnesting freedom to permit to your hive.", "Unnesting", list("Drone castes", "Anyone"), theme="hive_status", default=current_setting) + if(!choice) + return + + if(choice == "Anyone") + if(!(hive.hive_flags & XENO_UNNESTING_RESTRICTED)) + to_chat(src, SPAN_XENOWARNING("You have already allowed everyone to unnest hosts.")) + return + to_chat(src, SPAN_XENONOTICE("You have allowed everyone to unnest hosts.")) + xeno_message("The Queen has allowed everyone to unnest hosts.", hivenumber=hivenumber) + hive.hive_flags &= ~XENO_UNNESTING_RESTRICTED + else + if(hive.hive_flags & XENO_UNNESTING_RESTRICTED) + to_chat(src, SPAN_XENOWARNING("You have already forbidden anyone to unnest hosts, except for the drone caste.")) + return + to_chat(src, SPAN_XENONOTICE("You have forbidden anyone to unnest hosts, except for the drone caste.")) + xeno_message("The Queen has forbidden anyone to unnest hosts, except for the drone caste.", hivenumber=hivenumber) + hive.hive_flags |= XENO_UNNESTING_RESTRICTED + + TIMER_COOLDOWN_START(src, COOLDOWN_TOGGLE_UNNESTING, 30 SECONDS) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm index af3bf4cd6ca8..d0d141e3125a 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Queen.dm @@ -335,8 +335,8 @@ /mob/living/carbon/xenomorph/proc/construction_toggle, /mob/living/carbon/xenomorph/proc/destruction_toggle, /mob/living/carbon/xenomorph/proc/unnesting_toggle, - /mob/living/carbon/xenomorph/queen/proc/set_orders, - /mob/living/carbon/xenomorph/queen/proc/hive_message, + /mob/living/carbon/xenomorph/proc/set_orders, + /mob/living/carbon/xenomorph/proc/hive_message, /mob/living/carbon/xenomorph/proc/rename_tunnel, /mob/living/carbon/xenomorph/proc/set_hugger_reserve_for_morpher, ) @@ -493,13 +493,13 @@ if(XENO_NORMAL) name = "[name_prefix]Queen" //Regular if(XENO_MATURE) - name = "[name_prefix]Elder Queen" //Mature + name = "[name_prefix]Empress" //Mature if(XENO_ELDER) name = "[name_prefix]Elder Empress" //Elite if(XENO_ANCIENT) name = "[name_prefix]Ancient Empress" //Ancient if(XENO_PRIME) - name = "[name_prefix]Prime Empress" //Primordial + name = "[name_prefix]Prime Empress" //Prime else age = XENO_NORMAL if(client) @@ -674,290 +674,6 @@ if(queen_age_temp_timer_id != TIMER_ID_NULL) . += "Temporary Maturity: [time2text(timeleft(queen_age_temp_timer_id), "mm:ss")] remaining" -/mob/living/carbon/xenomorph/queen/proc/set_orders() - set category = "Alien.Hivemind-Control" - set name = "Set Hive Orders (50)" - set desc = "Give some specific orders to the hive. They can see this on the status pane." - - if(!check_state()) - return - if(last_special > world.time) - return - if(!check_plasma(50)) - return - use_plasma(50) - - var/txt = strip_html(input("Set the hive's orders to what? Leave blank to clear it.", "Hive Orders","")) - if(txt) - xeno_message("The Queen's will overwhelms your instincts...", 3, hivenumber) - xeno_message("\""+txt+"\"", 3, hivenumber) - xeno_maptext(txt, "Hive Orders Updated", hivenumber) - hive.hive_orders = txt - log_hiveorder("[key_name(usr)] has set the Hive Order to: [txt]") - else - hive.hive_orders = "" - - last_special = world.time + 15 SECONDS - -/mob/living/carbon/xenomorph/queen/proc/hive_message() - set category = "Alien.Hivemind" - set name = "Word of the Queen (50)" - set desc = "Send a message to all aliens in the hive that is big and visible." - if(client.prefs.muted & MUTE_IC) - to_chat(src, SPAN_DANGER("You cannot send Announcements (muted).")) - return - if(health <= 0) - to_chat(src, SPAN_WARNING("You can't do that while unconscious.")) - return FALSE - if(!check_plasma(50)) - return FALSE - - // Get a reference to the ability to utilize cooldowns - var/datum/action/xeno_action/onclick/queen_word/word_ability - for(var/datum/action/xeno_action/action in actions) - if(istype(action, /datum/action/xeno_action/onclick/queen_word)) - word_ability = action - if(!word_ability.action_cooldown_check()) - return FALSE - break - - var/input = stripped_multiline_input(src, "This message will be broadcast throughout the hive.", "Word of the Queen", "") - if(!input) - return FALSE - - use_plasma(50) - if(word_ability) - word_ability.apply_cooldown() - - xeno_announcement(input, hivenumber, "The words of the [name] reverberate in our head...") - - message_admins("[key_name_admin(src)] has created a Word of the Queen report:") - log_admin("[key_name_admin(src)] Word of the Queen: [input]") - return TRUE - -/mob/living/carbon/xenomorph/proc/claw_toggle() - set name = "Permit/Disallow Harming" - set desc = "Allows you to permit the hive to harm/slash." - set category = "Alien.Hivemind-Control" - - if(stat) - to_chat(src, SPAN_WARNING("You can't do that now.")) - return - - if(!hive) - to_chat(src, SPAN_WARNING("You can't do that now.")) - CRASH("[src] attempted to toggle slashing without a linked hive") - - if(hive.hive_flags_locked) - to_chat(src, SPAN_WARNING("You can't do that now.")) - return - - if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_TOGGLE_SLASH)) - to_chat(src, SPAN_WARNING("You must wait a bit before you can toggle this again.")) - return - - var/current_setting = null - if(CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_SLASH_ALLOW_ALL)) - current_setting = "Allowed" - else if(!(hive.hive_flags & XENO_SLASH_INFECTED) && (hive.hive_flags & XENO_SLASH_NORMAL)) - current_setting = "Restricted - Infected Hosts" - else if(!(hive.hive_flags & XENO_SLASH_ALLOW_ALL)) - current_setting = "Forbidden" - - var/choice = tgui_input_list(src, "Choose which level of harming hosts to permit to your hive.", "Harming", list("Forbidden", "Restricted - Infected Hosts", "Allowed"), theme="hive_status", default=current_setting) - if(!choice) - return - - if(choice == "Allowed") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already allow harming.")) - return - to_chat(src, SPAN_XENONOTICE("You allow harming.")) - xeno_message(SPAN_XENOANNOUNCE("The Queen has permitted the harming of hosts! Go hog wild!"), hivenumber=hivenumber) - hive.hive_flags |= XENO_SLASH_ALLOW_ALL - else if(choice == "Restricted - Infected Hosts") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already forbid harming of infected hosts.")) - return - to_chat(src, SPAN_XENONOTICE("You forbid harming of infected hosts.")) - xeno_message(SPAN_XENOANNOUNCE("The Queen has restricted the harming of hosts. You can no longer slash infected hosts."), hivenumber=hivenumber) - hive.hive_flags &= ~XENO_SLASH_INFECTED - hive.hive_flags |= XENO_SLASH_NORMAL - else if(choice == "Forbidden") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already forbid harming entirely.")) - return - to_chat(src, SPAN_XENONOTICE("You forbid harming entirely.")) - xeno_message(SPAN_XENOANNOUNCE("The Queen has forbidden the harming of hosts. You can no longer slash your enemies."), hivenumber=hivenumber) - hive.hive_flags &= ~XENO_SLASH_ALLOW_ALL - - TIMER_COOLDOWN_START(src, COOLDOWN_TOGGLE_SLASH, 30 SECONDS) - -/mob/living/carbon/xenomorph/proc/construction_toggle() - set name = "Permit/Disallow Construction Placement" - set desc = "Allows you to permit the hive to place construction nodes freely." - set category = "Alien.Hivemind-Control" - - if(stat) - to_chat(src, SPAN_WARNING("You can't do that now.")) - return - - if(!hive) - to_chat(src, SPAN_WARNING("You can't do that now.")) - CRASH("[src] attempted to toggle construction without a linked hive") - - if(hive.hive_flags_locked) - to_chat(src, SPAN_WARNING("You can't do that now.")) - return - - if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_TOGGLE_CONSTRUCTION)) - to_chat(src, SPAN_WARNING("You must wait a bit before you can toggle this again.")) - return - - var/current_setting = null - if(CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_CONSTRUCTION_ALLOW_ALL)) - current_setting = "Anyone" - else if(!(hive.hive_flags & XENO_CONSTRUCTION_NORMAL) && CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_CONSTRUCTION_QUEEN|XENO_CONSTRUCTION_LEADERS)) - current_setting = "Leaders" - else if(!(hive.hive_flags & (XENO_CONSTRUCTION_LEADERS|XENO_CONSTRUCTION_NORMAL)) && (hive.hive_flags & XENO_CONSTRUCTION_QUEEN)) - current_setting = "Queen" - - var/choice = tgui_input_list(src, "Choose which level of construction placement freedom to permit to your hive.", "Construction", list("Queen", "Leaders", "Anyone"), theme="hive_status", default=current_setting) - if(!choice) - return - - if(choice == "Anyone") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already allow construction placement to all builder castes.")) - return - to_chat(src, SPAN_XENONOTICE("You allow construction placement to all builder castes.")) - xeno_message("The Queen has permitted the placement of construction nodes to all builder castes!", hivenumber=hivenumber) - hive.hive_flags |= XENO_CONSTRUCTION_ALLOW_ALL - else if(choice == "Leaders") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already restrict construction placement to leaders only.")) - return - to_chat(src, SPAN_XENONOTICE("You restrict construction placement to leaders only.")) - xeno_message("The Queen has restricted the placement of construction nodes to leading builder castes only.", hivenumber=hivenumber) - hive.hive_flags &= ~XENO_CONSTRUCTION_NORMAL - hive.hive_flags |= XENO_CONSTRUCTION_QUEEN|XENO_CONSTRUCTION_LEADERS - else if(choice == "Queen") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already forbid construction placement entirely.")) - return - to_chat(src, SPAN_XENONOTICE("You forbid construction placement entirely.")) - xeno_message("The Queen has forbidden the placement of construction nodes to all but herself.", hivenumber=hivenumber) - hive.hive_flags &= ~(XENO_CONSTRUCTION_LEADERS|XENO_CONSTRUCTION_NORMAL) - hive.hive_flags |= XENO_CONSTRUCTION_QUEEN - - TIMER_COOLDOWN_START(src, COOLDOWN_TOGGLE_CONSTRUCTION, 30 SECONDS) - -/mob/living/carbon/xenomorph/proc/destruction_toggle() - set name = "Permit/Disallow Special Structure Destruction" - set desc = "Allows you to permit the hive to destroy special structures freely." - set category = "Alien.Hivemind-Control" - - if(stat) - to_chat(src, SPAN_WARNING("You can't do that now.")) - return - - if(!hive) - to_chat(src, SPAN_WARNING("You can't do that now.")) - CRASH("[src] attempted to toggle deconstruction without a linked hive") - - if(hive.hive_flags_locked) - to_chat(src, SPAN_WARNING("You can't do that now.")) - return - - if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_TOGGLE_DECONSTRUCTION)) - to_chat(src, SPAN_WARNING("You must wait a bit before you can toggle this again.")) - return - - var/current_setting = null - if(CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_DECONSTRUCTION_ALLOW_ALL)) - current_setting = "Anyone" - else if(!(hive.hive_flags & XENO_DECONSTRUCTION_NORMAL) && CHECK_MULTIPLE_BITFIELDS(hive.hive_flags, XENO_DECONSTRUCTION_QUEEN|XENO_DECONSTRUCTION_LEADERS)) - current_setting = "Leaders" - else if(!(hive.hive_flags & (XENO_DECONSTRUCTION_LEADERS|XENO_DECONSTRUCTION_NORMAL)) && (hive.hive_flags & XENO_DECONSTRUCTION_QUEEN)) - current_setting = "Queen" - - var/choice = tgui_input_list(src, "Choose which level of destruction freedom to permit to your hive.", "Deconstruction", list("Queen", "Leaders", "Anyone"), theme="hive_status", default=current_setting) - if(!choice) - return - - if(choice == "Anyone") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already allow special structure destruction to all builder castes and leaders.")) - return - to_chat(src, SPAN_XENONOTICE("You allow special structure destruction to all builder castes and leaders.")) - xeno_message("The Queen has permitted the destruction of special structures to all builder castes and leaders!", hivenumber=hivenumber) - hive.hive_flags |= XENO_DECONSTRUCTION_ALLOW_ALL - else if(choice == "Leaders") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already restrict special structure destruction to leaders only.")) - return - to_chat(src, SPAN_XENONOTICE("You restrict special structure destruction to leaders only.")) - xeno_message("The Queen has restricted the destruction of special structures to leaders only.", hivenumber=hivenumber) - hive.hive_flags &= ~XENO_DECONSTRUCTION_NORMAL - hive.hive_flags |= XENO_DECONSTRUCTION_QUEEN|XENO_DECONSTRUCTION_LEADERS - else if(choice == "Queen") - if(current_setting == choice) - to_chat(src, SPAN_XENOWARNING("You already forbid special structure destruction entirely.")) - return - to_chat(src, SPAN_XENONOTICE("You forbid special structure destruction entirely.")) - xeno_message("The Queen has forbidden the destruction of special structures to all but herself.", hivenumber=hivenumber) - hive.hive_flags &= ~(XENO_DECONSTRUCTION_LEADERS|XENO_DECONSTRUCTION_NORMAL) - hive.hive_flags |= XENO_DECONSTRUCTION_QUEEN - - TIMER_COOLDOWN_START(src, COOLDOWN_TOGGLE_DECONSTRUCTION, 30 SECONDS) - -/mob/living/carbon/xenomorph/proc/unnesting_toggle() - set name = "Permit/Disallow Unnesting" - set desc = "Allows you to restrict unnesting to drones." - set category = "Alien.Hivemind-Control" - - if(stat) - to_chat(src, SPAN_WARNING("You can't do that now.")) - - if(!hive) - to_chat(src, SPAN_WARNING("You can't do that now.")) - CRASH("[src] attempted to toggle unnesting without a linked hive") - - if(hive.hive_flags_locked) - to_chat(src, SPAN_WARNING("You can't do that now.")) - return - - if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_TOGGLE_UNNESTING)) - to_chat(src, SPAN_WARNING("You must wait a bit before you can toggle this again.")) - return - - var/current_setting = null - if(!(hive.hive_flags & XENO_UNNESTING_RESTRICTED)) - current_setting = "Anyone" - else if(hive.hive_flags & XENO_UNNESTING_RESTRICTED) - current_setting = "Drone castes" - - var/choice = tgui_input_list(src, "Choose which level of unnesting freedom to permit to your hive.", "Unnesting", list("Drone castes", "Anyone"), theme="hive_status", default=current_setting) - if(!choice) - return - - if(choice == "Anyone") - if(!(hive.hive_flags & XENO_UNNESTING_RESTRICTED)) - to_chat(src, SPAN_XENOWARNING("You have already allowed everyone to unnest hosts.")) - return - to_chat(src, SPAN_XENONOTICE("You have allowed everyone to unnest hosts.")) - xeno_message("The Queen has allowed everyone to unnest hosts.", hivenumber=hivenumber) - hive.hive_flags &= ~XENO_UNNESTING_RESTRICTED - else - if(hive.hive_flags & XENO_UNNESTING_RESTRICTED) - to_chat(src, SPAN_XENOWARNING("You have already forbidden anyone to unnest hosts, except for the drone caste.")) - return - to_chat(src, SPAN_XENONOTICE("You have forbidden anyone to unnest hosts, except for the drone caste.")) - xeno_message("The Queen has forbidden anyone to unnest hosts, except for the drone caste.", hivenumber=hivenumber) - hive.hive_flags |= XENO_UNNESTING_RESTRICTED - - TIMER_COOLDOWN_START(src, COOLDOWN_TOGGLE_UNNESTING, 30 SECONDS) - /mob/living/carbon/xenomorph/queen/handle_screech_act(mob/self, mob/living/carbon/xenomorph/queen/queen) return COMPONENT_SCREECH_ACT_CANCEL diff --git a/code/modules/mob/living/carbon/xenomorph/hive_status.dm b/code/modules/mob/living/carbon/xenomorph/hive_status.dm index ec58bd42843f..0b0e295c43c5 100644 --- a/code/modules/mob/living/carbon/xenomorph/hive_status.dm +++ b/code/modules/mob/living/carbon/xenomorph/hive_status.dm @@ -21,9 +21,9 @@ var/color = null var/ui_color = null // Color for hive status collapsible buttons and xeno count list var/prefix = "" - var/queen_leader_limit = 2 - var/list/open_xeno_leader_positions = list(1, 2) // Ordered list of xeno leader positions (indexes in xeno_leader_list) that are not occupied - var/list/xeno_leader_list[2] // Ordered list (i.e. index n holds the nth xeno leader) + var/queen_leader_limit = 4 + var/list/open_xeno_leader_positions = list(1, 2, 3, 4) // Ordered list of xeno leader positions (indexes in xeno_leader_list) that are not occupied + var/list/xeno_leader_list[4] // Ordered list (i.e. index n holds the nth xeno leader) var/stored_larva = 0 ///used by /datum/hive_status/proc/increase_larva_after_burst() to support non-integer increases to larva @@ -49,7 +49,8 @@ var/allowed_nest_distance = 15 //How far away do we allow nests from an ovied Queen. Default 15 tiles. var/obj/effect/alien/resin/special/pylon/core/hive_location = null //Set to ref every time a core is built, for defining the hive location - var/tier_slot_multiplier = 1 + /// Slots are divided by this value to reach final value. + var/tier_slot_divisor = 1 var/larva_gestation_multiplier = 1 var/bonus_larva_spawn_chance = 1 var/hijack_burrowed_surge = FALSE //at hijack, start spawning lots of burrowed @@ -87,7 +88,7 @@ XENO_STRUCTURE_PYLON = 2, ) - var/global/list/hive_structure_types = list( + var/list/hive_structure_types = list( XENO_STRUCTURE_CORE = /datum/construction_template/xenomorph/core, XENO_STRUCTURE_CLUSTER = /datum/construction_template/xenomorph/cluster, XENO_STRUCTURE_EGGMORPH = /datum/construction_template/xenomorph/eggmorph, @@ -100,6 +101,8 @@ /// Lazylist of possible caste defines the hive disallows evolution to var/list/blacklisted_castes = null + /// List of caste defines associated with a maximum capacity number. + var/list/restricted_castes = null var/datum/hive_status_ui/hive_ui var/datum/mark_menu_ui/mark_ui @@ -377,7 +380,7 @@ /datum/hive_status/proc/recalculate_hive() //No leaders for a Hive without a Queen! - queen_leader_limit = living_xeno_queen ? 4 : 0 + queen_leader_limit = living_xeno_queen ? initial(queen_leader_limit) : 0 if (length(xeno_leader_list) > queen_leader_limit) var/diff = 0 @@ -517,6 +520,23 @@ return xeno_counts +/// Returns number of xenos in the given hive that are the searched caste. +/datum/hive_status/proc/get_caste_count(caste_to_check) + if(!caste_to_check) + return + var/caste_count = 0 + for(var/mob/living/carbon/xenomorph/xeno as anything in totalXenos) + //don't show xenos in the thunderdome when admins test stuff. + if(should_block_game_interaction(xeno)) + var/area/cur_area = get_area(xeno) + if(!(cur_area.flags_atom & AREA_ALLOW_XENO_JOIN)) + continue + + if(xeno.caste && xeno.counts_for_slots && (xeno.caste.caste_type == caste_to_check)) + caste_count++ + + return caste_count + /// Returns the full minimap icon as base64 string. /datum/hive_status/proc/get_xeno_icons() // Must match hardcoded xeno counts order. @@ -743,10 +763,10 @@ effective_total++ // Tier 3 slots are always 20% of the total xenos in the hive - slots[TIER_3][OPEN_SLOTS] = max(0, ceil(0.20*effective_total/tier_slot_multiplier) - used_tier_3_slots) + slots[TIER_3][OPEN_SLOTS] = max(0, ceil(0.20*effective_total/tier_slot_divisor) - used_tier_3_slots) // Tier 2 slots are between 30% and 50% of the hive, depending // on how many T3s there are. - slots[TIER_2][OPEN_SLOTS] = max(0, ceil(0.5*effective_total/tier_slot_multiplier) - used_tier_2_slots - used_tier_3_slots) + slots[TIER_2][OPEN_SLOTS] = max(0, ceil(0.5*effective_total/tier_slot_divisor) - used_tier_2_slots - used_tier_3_slots) return slots @@ -815,6 +835,8 @@ /datum/hive_status/proc/abandon_on_hijack() var/area/hijacked_dropship = get_area(living_xeno_queen) + if(!hijacked_dropship) + return FALSE var/shipside_humans_weighted_count = 0 var/xenos_count = 0 for(var/name_ref in hive_structures) diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index 706dbdf36e8e..c23a39ece7e2 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -599,6 +599,6 @@ Make sure their actual health updates immediately.*/ return TRUE //weeds, yes! if(need_weeds) return FALSE //needs weeds, doesn't have any - if(hive && hive.living_xeno_queen && !is_mainship_level(hive.living_xeno_queen.loc.z) && is_mainship_level(loc.z)) + if((hive && !hive.allow_no_queen_actions) && hive.living_xeno_queen && (!is_mainship_level(hive.living_xeno_queen.loc.z) && is_mainship_level(loc.z))) return FALSE //We are on the ship, but the Queen isn't return TRUE //we have off-weed healing, and either we're on Almayer with the Queen, or we're on non-Almayer, or the Queen is dead, good enough! From da486921c00fff9088b35f538b22cb4169eb47b5 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 02:19:19 +0000 Subject: [PATCH 18/70] Automatic changelog for PR #12442 [ci skip] --- html/changelogs/AutoChangeLog-pr-12442.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12442.yml diff --git a/html/changelogs/AutoChangeLog-pr-12442.yml b/html/changelogs/AutoChangeLog-pr-12442.yml new file mode 100644 index 000000000000..cf4b1de2bb08 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12442.yml @@ -0,0 +1,6 @@ +author: "realforest2001" +delete-after: True +changes: + - code_imp: "Changed some queen procs to xenomorph base." + - rscadd: "Changed Queen naming convention (thought I did this ages ago)" + - code_imp: "Changed the tier_slot_multiplier var name to divisor because it was stupidly named." \ No newline at end of file From 42ec92eeaa22af073472059cc4ada12ac3606b42 Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Mon, 22 Jun 2026 04:53:48 +0300 Subject: [PATCH 19/70] Abomination prey items and cleaning of nulls. (#12441) # About the pull request Adds abomination pelt and skull for Yautja skinning. Also adds code to delete instances of skull and pelt that have no icon state, so any xeno that isn't setup to have one won't spawn blank items. Part of the project to break the pathogen PR down to smaller chunks for review purposes. # Explain why it's good for the game Consistency. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Added Abomination pelt and skull items. code: Added code to delete instances of skull and pelt that have no icon. /:cl: --------- Co-authored-by: forest2001 Co-authored-by: fira --- code/modules/cm_preds/yaut_items.dm | 30 ++++++++++++++++++ .../carbon/xenomorph/castes/Predalien.dm | 3 ++ icons/obj/items/hunter/prey_items.dmi | Bin 20428 -> 21507 bytes 3 files changed, 33 insertions(+) diff --git a/code/modules/cm_preds/yaut_items.dm b/code/modules/cm_preds/yaut_items.dm index 2d25953291cf..820d6105d6b7 100644 --- a/code/modules/cm_preds/yaut_items.dm +++ b/code/modules/cm_preds/yaut_items.dm @@ -1598,6 +1598,11 @@ GLOBAL_VAR_INIT(youngblood_timer_yautja, 0) icon = 'icons/obj/items/hunter/prey_items.dmi' unacidable = TRUE +/obj/item/skull/Initialize(mapload, ...) + . = ..() + if(!icon_state) + return INITIALIZE_HINT_QDEL + /obj/item/skull/queen name = "Queen skull" desc = "Skull of a prime hive ruler, mother to many." @@ -1699,6 +1704,16 @@ GLOBAL_VAR_INIT(youngblood_timer_yautja, 0) desc = "Skull of a highly acidic xenomorph, a venomous ranged attacker." icon_state = "spitter_skull" +/obj/item/skull/abomination + name = "Abomination skull" + desc = "Skull of a mysterious hybrid xenomorph, a horror on the field." + icon_state = "predalien_skull" + +/obj/item/skull/abomination/get_examine_text(mob/user) + . = ..() + if(isyautja(user)) + . += SPAN_RED("Not even this relic can be tolerated. Destroy it.") + // PELTS /obj/item/pelt @@ -1706,6 +1721,11 @@ GLOBAL_VAR_INIT(youngblood_timer_yautja, 0) icon = 'icons/obj/items/hunter/prey_items.dmi' unacidable = TRUE +/obj/item/pelt/Initialize(mapload, ...) + . = ..() + if(!icon_state) + return INITIALIZE_HINT_QDEL + /obj/item/pelt/queen name = "Queen pelt" desc = "The pelt of a prime hive ruler, mother to many." @@ -1811,6 +1831,16 @@ GLOBAL_VAR_INIT(youngblood_timer_yautja, 0) desc = "The hide of a juvenile Xenomorph, a grim trophy from a fledgling that never reached its full potential." icon_state = "larva_pelt" +/obj/item/pelt/abomination + name = "Abomination pelt" + desc = "The pelt of a mysterious hybrid xenomorph, a horror on the field." + icon_state = "predalien_pelt" + +/obj/item/pelt/abomination/get_examine_text(mob/user) + . = ..() + if(isyautja(user)) + . += SPAN_RED("Not even this relic can be tolerated. Destroy it.") + /// TOOLS /obj/item/tool/crowbar/yautja diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Predalien.dm b/code/modules/mob/living/carbon/xenomorph/castes/Predalien.dm index 1a1a63a4bb3e..8a3ad059710f 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Predalien.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Predalien.dm @@ -67,6 +67,9 @@ /datum/action/xeno_action/onclick/toggle_gut_targeting, ) + skull = /obj/item/skull/abomination + pelt = /obj/item/pelt/abomination + weed_food_icon = 'icons/mob/xenos/weeds_64x64.dmi' weed_food_states = list("Predalien_1","Predalien_2","Predalien_3") weed_food_states_flipped = list("Predalien_1","Predalien_2","Predalien_3") diff --git a/icons/obj/items/hunter/prey_items.dmi b/icons/obj/items/hunter/prey_items.dmi index 654120767a8f0fda7950d871caba1ea52df4854d..da22076cd39dd9abbccb4c091235ed1bb9c81058 100644 GIT binary patch literal 21507 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 Date: Mon, 22 Jun 2026 04:04:48 +0200 Subject: [PATCH 20/70] [TM v.1.3] Warrior "Bulwark" Strain. (Feedback link in description) (#10541) # **If you want to discuss, give suggestions or feedback:** click link: https://discord.com/channels/150315577943130112/1405554749838721085/1405554749838721085 **Discord Contributors:** _(did not code, but should credit them)_ - **TheBadPerson - Jack Sidower/EKSS** for suggesting names for abilities. - **Dave** man, you really tryied to give a lot of cool ideas, but they did not fit this strain, but would be cool for crusher or crusher strains. - **igloo | WA-L7** helping with default stats for bulwark and suggestions. - **Rosa Teagarden (And KIN)** for suggesting reflective ability. - **Rena** for commenting on defender quirks, that inspired me to make abilities to work on each other. - **thwomp** for suggesting to give it similar tail sweep (defender ability) - **TheBadPerson - Jack Sidower/EKSS** thanks for support, but not everything need to be LoL ripoff, i already made it look like one (but suggestions and motivation was welcome) **And all other people on discord channel giving feedback, without it this strain would struggle to become as it is** # About the pull request Adds new warrior strain "Bulwark" This strain aims to be evolution between defender and crusher, mostly focusing on defensive direction and siege-like properties. **Document:** https://hackmd.io/@YLxQa9NUQ-e6H5YHujbzoA/SypFAIZ2Ze - [x] Requires #12143 - [x] Requires #12147
Changes Tracker:
Changes: [v0.1] - Changed Plate Slam plasma draining to set amount of plasma - Plate Slam now can knock down enemies depending on their body position, if standing you knockdown and pin target for 7 seconds, if target was already prone you pin it down for 10 seconds.
Changes: [v0.2] - Now Shielder can attack and haul with encased plates active. - Replaced "placeholder" sprites for shielder abilities with new sprites. - Fixed Reflective shield consuming plasma when not encased in plates. - Fixed "Floored" effect, now it only apply on targets that are under shield slam ability. - Swapped reflective shield and plates slam priority position. (mist request) - Plate Slam now have windup of 3s instead of 5s
Changes: [v0.3] - Renamed "Shielder" strain to "Bulwark" (name won the community vote) - Bulwark now gain additional status info, it will now show reduced melee damage, it also shows usage timer for reflective shield. - Removed Reduced attack damage from strain, but applyied it to encased plates ability, when encased you deal -8 slash damage. - Encased plates slowness reduced from 1 to 0.5 - Encased plates toggle time decreased from 3s to 2s. - Reflective shield is now channeled ability (similar to lurker invisibility), 1 second used is 2seconds cooldown, can be stopped early by using same ability twice or disengaging encased plates. - Plate Slam windup time decreased from 3s to 2s. - Plate Slam can now be deactivated early by using reflective plates. (you can still do that by deactivating encased plates) - Plate Slam "floored" visual now apply and dissapear correctly when using ability. - Fixed Tail sweep cooldown, now when missing tail sweep you get applied intended 30% of cooldown. - Fixed Plasmaless strains having Plasma (ravager strains) - Updated strain description to match new changes.
Changes: [v0.35] - Removed Plate Slam ability, caused too many runtime issues, people didn't like ability either. - Added safety check for people trying to evolve when having reflective shield active.
Changes: [v0.4] - Fixed Reflective Shield ability not reflecting bullets correctly. - Changed Reflective Shield Reflection chances, Front is 80%, sides is 65% and back is 30%. (from 80% front, 64% sides and 28% back) - Default tackles are changed, minimum tackle is back to 2 and maximum is 5. (from 4 min and 5 max) - Encased Plates now increase minimum tackle from 2 to 4, max tackle is unchanged. - Cleaned files from more plate slam code remains. - Added guide inside PR description.
Changes: [v0.5] - New 5th ability called Siegeborn, when activating it you gain heal_over_time after taking specific amount of damage, when used during reflective shield mode it will instead improve reflection angle from 90 to 30 degree cone. (ability icon changes when conditions are met) - Encasing Plates toggle cooldown decreased from 2s to 1s. - Slashing during Encased plates now have extra damage visual. - Disengaging Encased plates during Reflective Shield now stops ability instead of forcing you to deactivate it first. - Tail Sweep ability now trips people around you (like dancer tail trip) instead of throwing them away to courage closer combat style. - Reflective shield plasma cost reduced from 100 to 80 plasma. - Reflective Shield now cannot reflect sniper bullets instead of Tier 10 penetration bullets. - Bulwark health got increased from 500 to 600, defender have 500hp and crusher have 700hp, 600hp should be best middle ground between the two. - x2 Cooldown on Plate Bash during encased plates got removed.
Changes: [v0.55] - Removed 5th ability, amount abilities will be same amount as base warrior offers for less complexity (requested by maintainer) - Improved Reflective Shield reflection angle from 90 degrees to 50 degrees, increased accuracy of bullets from 40 to 80 (doubled) - Cleaned and improved some code.
Changes: [v0.6] (experimental) - Bulwark gains +10 armor, meaning it have 30 base armor. - Passive directional armor now have +10 front and +10 side armor. - When Encased plates are active, you lose -10 side armor and gain +10 front armor, 50 front armor is slightly above crusher and 30 side and back is defender armor.
Changes: [v0.65] (mist request) - Separated Reflective code from bulwark to be its own proc, this proc can now be assigned to anything desired. - New Reflective proc is used for Reflective Walls (fixes their reflection without changing previous values)
Changes: [v0.7] (mist & google requests) - Reduced Duration of reflective shield from 10s to 6s. - Reflection chances are changed, now you reflect 100% projectiles ONLY from front (no sides and back reflection) - Reflective walls and bulwark ability cannot reflect LZ turrets anymore. - Bulwark gain trait that no longer gives directional lock slowdown (TRAIT_NO_DIR_LOCK_SLOWDOWN). - Increased Encased plates slowdown from 0.5 to 1. - Tail sweep now can be used with encased plates and reflective active in exchange of deactivating stances.
Changes: [v0.75] - Changed Bulwark Sprite color palette to look more like warrior (Zenith suggested colors) - Tail Sweep now reflect grenades 1 tile further away. - Fixed Reflective Shield reflecting when laying down or unconscious (aka explosions) - Fixed Reflective shield timer, now cooldowns are applied correctly. - Reflective Shield cannot reflect LZ turrets anymore. - Now Reflective cooldown is 1s used for 3s cooldown. - Fixed reflective shield reflecting on sides. - Added new visual for reflective shield.
Changes: [v0.8] - Turrents no longer get reflected by Reflective shield. - Boiler Gas blobs no longer get reflected by Reflective shield. - Encased plates slowdown increased from 1.0 to 1.4 - Updated strain description to cover changes.
Changes: [v0.85] - Decreased slowdown on encased plates from 1.4 to 1.35 - Reflective shield now have 1s used as 2 second cooldown but minimum cooldown time is +6 seconds, meaning 8s minimum cooldown and 18s max cooldown.
Changes: [v0.9] - Strain decription now is slightly more grammar- corrected. - Using Reflective Shield now locks your direction to the last one you were looking (use with care). - You cannot use any intents or attack targets when reflective shield is active. (abilities excluded) - Activating Reflective Shield now drops pulled people to prevent locking direction from breaking.
Changes: [v0.95] - You can now rotate on Reflective Shield by using alt + (button direction) with 0.3 second delay.
Changes: [v1.0] - Reflective Shield cannot reflect flamer sentry projectiles. (not intended)
Changes: [v1.1] (community feedback channel requests) - Reflective shield now uses sprite instead of filter to show front reflection on sprite instead on whole surface. - Disengaging Reflective Shield in any means no longer disables directional lock. (player need to manually disable it my attacking or alt + same dir button)
Changes: [v1.2] (fix patch) - Reflective Shield cannot reflect shotgun sentries anymore.
Changes: [v1.3] (experimental) - Bulwark takes now 50% more weapon melee damage.
# Explain why it's good for the game As long as i played, warrior is a part of a defensive evolution tree defender -> crusher, as defensive evolution line, for some reason its way more offensive, with makes it a high skill caste that not everyone can play without getting killed after a bad lunge. > If i could give meaning to normal warrior, warrior is like a berserker, that fight with its sword close range, in this case bulwark is like knight with sword and shield. This PR aims to add new strain that is way more beginner friendly, require less skill to survive but still require some to utilize its full potential, meaning the more you undestand it, the more you benefit from it. # Testing Photographs and Procedure She is still eepin. image but she told me, if you want videos they are on discord link above. # "Bulwark" Guide:
>Click to see guide: This is guide to Bulwark strain that explain how it works so people grasp it better. Bulwark strain contain the following: - 4 Passives - Encased plates - Plate bash - Tail sweep - Reflective Shield Basic rules first before we break down abilities: - NEVER show your back to enemy, if get behind you, your armor is weak there, this is like asking to get killed. - You should almost ALWAYS use directional lock, what is directional lock? this is option where you can "lock" your character to look in specific direction, how to activate it? simple, hold Alt and press any direction you would walk to, lets say you go south, you hold Alt and press S, now you are locked to south unless you do same action or click somewhere on screen to break direction lock. - You CAN attack targets when you have encased plates up, just remember you deal slightly less damage to target. - Directional Armor works ONLY on projectiles, by base you have always 30 armor. - No diectional slowdown, you can slide around with no penality.
>Click Here to see Image that explains how directional armor and reflection works. image
Let me break down the passives: - 50% less damage from cades, as it suggests, when you slash cade it deal 10 environmental damage, this passive reduces that damage to 5. - 75% chance to strike target behind cades, this passive allows your slashes and tailstab to go through wired cades that normally have specific chance to let slashes/tailstab through, this passive increases that chance. - Directional armor +10 front, +10 to sides, by base this strain have 30 armor with is not a lot but this passive makes so when attacked from front or sides you have higher armor (40 front and 40 side armor), remember you should NEVER let your back get attacked by enemy. Encased Plates: This ability will increase your front armor by +10 and reduce side armor by -10, in this state you can slash targets, but your damage is reduced by 8 and your walking speed is slightly reduced, but as positive you can open holes in walls you can make (yes your slashes can make hole in walls) Plate Bash: This ability changes depending if stance (encased plates) are active or not, when not active plate bash will launch you to enemy 3 tiles away and bash them 1 tile away, when encased plates are active, you lose ability to launch yourself to enemy but you will launch them instead 3 tiles away, this ability always deal 20 damage. Tail Sweep: You will trip enemies around you and briefly stun them in adjecent tiles, when grenade is in adjecent tile it will instead launch that grenade back 4 tiles away in opposing direction of player and have shortened cooldown, if grenade and enemy are hit by ability, you will receive normal cooldown, this ability always deal 15 damage. Reflective Shield: Signature move of this evolution, reflective shield behaves similar like reflective walls, but its mostly depending on direction bullets are fired from and reflect them back at direction of attacker for half the damage bullet would do, it will reflect 100% bullets from front, angle at with bullets are reflected back is -25 to 25 (50 degree cone) This ability can be disabled early by pressing same ability twice. You are unable to use intents and you will drop pulled targets (abilities are excluded from this rule) Reflective Shield CANNOT reflects sniper bullets, rockets and anti-reflective ammo (like SHARP darts), xeno projectiles and turrets.
# Changelog :cl: Venuska1117 add: Add new Warrior Strain "Bulwark". add: Bulwark have 600 health, tackles of 2 min - 5max, gains 200 plasma, +10 explosive and +10 normal armor for decreased speed and takes 50% more melee damage. add: Bulwark have 4 passive abilities, 50% less damage from wired cades (5 damage instead of 10), 75% for slashes or tailstab to go through wired cades and hit target behind them, +10 front armor and +10 side armor and no direct lock slowdown. add: Encased Plates, this ability when activated it will reduce your movement speed by 1.35, increases minimum tackles needed to tackle someone down by +2 and decreased slash damage by 8, in exchange you gain +10 front armor and lose -10 side armor (stacks with passive), immunity to knockdowns and ability to open holes in walls. add: Plate Bash, this ability will launch you toward targets if its in range of 2 tiles (3 tiles), it will hit them 1 tile away and shake their screen, if encased plates are active, this ability changes to only work on adjecent targets but in exchange you send them 3 tiles away, knockdown and stun target. add: Tail Sweep, this ability will hit all adjecent tiles (including corners) around you and trip enemies down and briefly stun them, if grenade is present instead of target, you will send grenade 4 tiles away and your cooldown will be decreased to 1/3rd of full cooldown, if both target and grenade are hit, normal cooldown value will be applied. add: Reflective Shield, this ability will lock your looking direction when casted to reflect bullets towards target in 50 degree cone (-25 to 25 angle), reflected bullets will only deal half of their original damage, your reflection chance is 100% from front ONLY but you lose ability to attack or help (you can still use abilities) and drop pulled targets, this ability can be disabled early like how lurker invisibility works 1s used is 2s cooldown but you gain +6s to cooldown, minimum 6s cooldown and 18s max, this ability CANNOT reflects sniper bullets, rockets and anti-reflective ammo (like SHARP darts), xeno projectiles and turrets. balance: Fix Reflective walls, now they reflect bullets properly (uses new bulwark reflective proc). /:cl: --------- Co-authored-by: Venuska1117 --- code/__DEFINES/conflict.dm | 2 + code/__DEFINES/traits.dm | 9 + code/__DEFINES/xeno.dm | 6 + code/_onclick/adjacent.dm | 4 +- code/_onclick/item_attack.dm | 4 + code/datums/ammo/bullet/shotgun.dm | 7 + code/datums/ammo/bullet/special_ammo.dm | 2 +- code/datums/ammo/misc.dm | 2 +- code/game/atoms_movable.dm | 3 + .../objects/structures/barricade/barricade.dm | 8 +- code/game/turfs/walls/wall_types.dm | 30 +- .../mob/living/carbon/xenomorph/Evolution.dm | 2 +- .../living/carbon/xenomorph/XenoAttacks.dm | 2 +- .../mob/living/carbon/xenomorph/Xenomorph.dm | 32 +- .../xenomorph/abilities/general_powers.dm | 4 + .../abilities/warrior/warrior_abilities.dm | 53 +++ .../abilities/warrior/warrior_macros.dm | 28 ++ .../living/carbon/xenomorph/attack_alien.dm | 10 +- .../living/carbon/xenomorph/castes/Warrior.dm | 11 +- .../strains/castes/ravager/berserker.dm | 2 +- .../strains/castes/ravager/hedgehog.dm | 2 +- .../strains/castes/warrior/bulwark.dm | 393 ++++++++++++++++++ code/modules/mob/mob.dm | 2 + code/modules/mob/mob_movement.dm | 3 +- .../modules/projectiles/magazines/sentries.dm | 2 +- code/modules/projectiles/projectile.dm | 136 ++++-- colonialmarines.dme | 1 + icons/mob/hud/actions_xeno.dmi | Bin 62945 -> 66263 bytes icons/mob/hud/hud.dmi | Bin 20398 -> 21678 bytes icons/mob/xenos/castes/tier_2/warrior.dmi | Bin 30580 -> 41128 bytes sound/effects/grenade_hit.ogg | Bin 0 -> 21216 bytes sound/effects/tail_swing.ogg | Bin 0 -> 22264 bytes 32 files changed, 685 insertions(+), 75 deletions(-) create mode 100644 code/modules/mob/living/carbon/xenomorph/strains/castes/warrior/bulwark.dm create mode 100644 sound/effects/grenade_hit.ogg create mode 100644 sound/effects/tail_swing.ogg diff --git a/code/__DEFINES/conflict.dm b/code/__DEFINES/conflict.dm index 0e915bf200bf..cf6d0a2cf8a2 100644 --- a/code/__DEFINES/conflict.dm +++ b/code/__DEFINES/conflict.dm @@ -50,6 +50,8 @@ #define PROJECTILE_SHRAPNEL (1<<0) /// Apply additional effects upon hitting clicked target #define PROJECTILE_BULLSEYE (1<<1) +/// Reflected projectiles +#define PROJECTILE_REFLECTED (1<<2) //Gun defines for gun related thing. More in the projectile folder. diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 40c38d270b89..7c55f81361ff 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -169,6 +169,8 @@ #define TRAIT_VALKYRIE_ARMORED "trait_valkyrie_armored" /// Prevents mob from riding mobs when buckled onto something #define TRAIT_CANT_RIDE "cant_ride" +/// Makes mob immune to dir lock slowdown. +#define TRAIT_NO_DIR_LOCK_SLOWDOWN "no_dir_lock_slowdown" // SPECIES TRAITS /// Knowledge of Yautja technology @@ -265,6 +267,11 @@ #define TRAIT_ABILITY_BURROWED "t_ability_burrowed" /// Xenos with this trait can toggle long sight while resting. #define TRAIT_ABILITY_SIGHT_IGNORE_REST "t_ability_sight_ignore_rest" +/// Used by shielder to check stance. +#define TRAIT_ABILITY_ENCLOSED_PLATES "t_ability_enclosed_plates" +/// Used by shielder for reflective plates. +#define TRAIT_ABILITY_REFLECTIVE_PLATES "t_ability_reflective_plates" + //-- item traits -- // TOOL TRAITS @@ -344,6 +351,8 @@ GLOBAL_LIST_INIT(mob_traits, list( TRAIT_DEXTROUS, TRAIT_REAGENT_SCANNER, TRAIT_ABILITY_BURROWED, + TRAIT_ABILITY_ENCLOSED_PLATES, + TRAIT_ABILITY_REFLECTIVE_PLATES, TRAIT_VULTURE_USER, TRAIT_IN_TUTORIAL, TRAIT_SPEC_KIT, diff --git a/code/__DEFINES/xeno.dm b/code/__DEFINES/xeno.dm index b6377a47337b..9af7e845818b 100644 --- a/code/__DEFINES/xeno.dm +++ b/code/__DEFINES/xeno.dm @@ -421,6 +421,9 @@ // Lurker strain flags #define LURKER_VAMPIRE "Vampire" +// Warrior strain flags +#define WARRIOR_BULWARK "Bulwark" + // Ravager strain flags #define RAVAGER_HEDGEHOG "Hedgehog" #define RAVAGER_BERSERKER "Berserker" @@ -449,6 +452,7 @@ // Damage - this is applied as a flat nerf/buff to the xeno's average damage #define XENO_DAMAGE_MOD_VERY_SMALL 5 +#define XENO_DAMAGE_MOD_BULWARK 8 #define XENO_DAMAGE_MOD_SMALL 10 #define XENO_DAMAGE_MOD_MED 15 #define XENO_DAMAGE_MOD_LARGE 20 @@ -747,6 +751,8 @@ // dancer defines #define DANCER_DODGE_TIME 7 SECONDS +// bulwark defines +#define BULWARK_REFLECTIVE_TIME 6 SECONDS // drone fruits diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm index e853760b103a..41ccad15fe3d 100644 --- a/code/_onclick/adjacent.dm +++ b/code/_onclick/adjacent.dm @@ -273,7 +273,7 @@ Quick adjacency (to turf): var/list/cur_dense_blockers = list() for(var/atom/blocker in blockers["fd1"]) if(blocker.flags_barrier & HANDLE_BARRIER_CHANCE) - if(blocker.handle_barrier_chance()) + if(blocker.handle_barrier_chance(attacker)) return blocker else guaranteed_hit = 1 @@ -282,7 +282,7 @@ Quick adjacency (to turf): for(var/atom/blocker in blockers["fd2"]) if(blocker.flags_barrier & HANDLE_BARRIER_CHANCE) - if(blocker.handle_barrier_chance()) + if(blocker.handle_barrier_chance(attacker)) return blocker else guaranteed_hit++ diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 1c180ba16b25..13b08bf3672f 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -105,6 +105,10 @@ if(isxeno(M)) var/mob/living/carbon/xenomorph/X = M power = armor_damage_reduction(GLOB.xeno_melee, power, X.armor_deflection + X.armor_deflection_buff - X.armor_deflection_debuff, 20, 0, 0, X.armor_integrity) + + if(X.melee_vulnerability_mult != 0) + power *= X.melee_vulnerability_mult + var/armor_punch = armor_break_calculation(GLOB.xeno_melee, power, X.armor_deflection + X.armor_deflection_buff - X.armor_deflection_debuff, 20, 0, 0, X.armor_integrity) X.apply_armorbreak(armor_punch) if(hitsound) diff --git a/code/datums/ammo/bullet/shotgun.dm b/code/datums/ammo/bullet/shotgun.dm index b06d42ce42b9..345152076e28 100644 --- a/code/datums/ammo/bullet/shotgun.dm +++ b/code/datums/ammo/bullet/shotgun.dm @@ -209,6 +209,10 @@ /datum/ammo/bullet/shotgun/buckshot/on_hit_mob(mob/M,obj/projectile/P) knockback(M,P) +/datum/ammo/bullet/shotgun/buckshot/turret + flags_ammo_behavior = AMMO_NO_DEFLECT //New Exclusive ammo for shotgun turrets. + bonus_projectiles_type = /datum/ammo/bullet/shotgun/spread/turret + //buckshot variant only used by the masterkey shotgun attachment. /datum/ammo/bullet/shotgun/buckshot/masterkey bonus_projectiles_type = /datum/ammo/bullet/shotgun/spread/masterkey @@ -238,6 +242,9 @@ /datum/ammo/bullet/shotgun/spread/masterkey damage = 20 +/datum/ammo/bullet/shotgun/spread/turret + flags_ammo_behavior = AMMO_NO_DEFLECT //New Exclusive buckshot pellets for shotgun turrets. + /* 8 GAUGE SHOTGUN AMMO */ diff --git a/code/datums/ammo/bullet/special_ammo.dm b/code/datums/ammo/bullet/special_ammo.dm index 19abf007c2e7..7f5d4d9dd1d8 100644 --- a/code/datums/ammo/bullet/special_ammo.dm +++ b/code/datums/ammo/bullet/special_ammo.dm @@ -151,7 +151,7 @@ /datum/ammo/bullet/turret name = "autocannon bullet" icon_state = "redbullet" //Red bullets to indicate friendly fire restriction - flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_COVER + flags_ammo_behavior = AMMO_BALLISTIC|AMMO_IGNORE_COVER|AMMO_NO_DEFLECT accurate_range = 22 accuracy_var_low = PROJECTILE_VARIANCE_TIER_8 diff --git a/code/datums/ammo/misc.dm b/code/datums/ammo/misc.dm index 516faadeb21b..8f7659dd9871 100644 --- a/code/datums/ammo/misc.dm +++ b/code/datums/ammo/misc.dm @@ -66,7 +66,7 @@ landingsmoke = null /datum/ammo/flamethrower/sentry_flamer - flags_ammo_behavior = AMMO_IGNORE_ARMOR|AMMO_IGNORE_COVER|AMMO_FLAME + flags_ammo_behavior = AMMO_IGNORE_ARMOR|AMMO_IGNORE_COVER|AMMO_FLAME|AMMO_NO_DEFLECT flamer_reagent_id = "napalmx" accuracy = HIT_ACCURACY_TIER_8 diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 2310024e96fc..68ea2b137818 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -376,6 +376,9 @@ * Called from [/atom/movable/proc/keyLoop], this exists to be overwritten by living mobs with a check to see if we're actually alive enough to change directions */ /atom/movable/proc/keybind_face_direction(direction) + if(HAS_TRAIT(src, TRAIT_ABILITY_REFLECTIVE_PLATES)) + if(!do_after(src, 3 DECISECONDS, INTERRUPT_INCAPACITATED, BUSY_ICON_GENERIC)) + setDir(direction) setDir(direction) /atom/movable/proc/onTransitZ(old_z,new_z) diff --git a/code/game/objects/structures/barricade/barricade.dm b/code/game/objects/structures/barricade/barricade.dm index 20285725c564..38c0916ea634 100644 --- a/code/game/objects/structures/barricade/barricade.dm +++ b/code/game/objects/structures/barricade/barricade.dm @@ -221,9 +221,15 @@ return ..() -/obj/structure/barricade/handle_barrier_chance() +/obj/structure/barricade/handle_barrier_chance(mob/living/attacker) if(!anchored) return FALSE + + if(isxeno(attacker)) + var/mob/living/carbon/xenomorph/xeno = attacker + if(xeno.strain && istype(xeno.strain, /datum/xeno_strain/bulwark)) + return prob(25) //Bulwark can attack through wired cade with 75% chance. + return prob(max(30,(100.0*health)/maxhealth)) /obj/structure/barricade/attack_animal(mob/user as mob) diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index 0b3a6b272860..ee1240f917dd 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -1477,8 +1477,11 @@ var/explosive_multiplier = 0.3 var/reflection_multiplier = 0.5 -/turf/closed/wall/resin/reflective/bullet_act(obj/projectile/P) - if(src in P.permutated) +/turf/closed/wall/resin/reflective/bullet_act(obj/projectile/proj_bullet) + if(proj_bullet.projectile_flags & PROJECTILE_REFLECTED) + return + + if(proj_bullet.ammo.flags_ammo_behavior & AMMO_NO_DEFLECT) return //Ineffective if someone is sitting on the wall @@ -1486,26 +1489,15 @@ return ..() if(!prob(chance_to_reflect)) - if(P.ammo.damage_type == BRUTE) - P.damage *= brute_multiplier + if(proj_bullet.ammo.damage_type == BRUTE) + proj_bullet.damage *= brute_multiplier return ..() - if(P.runtime_iff_group || P.ammo.flags_ammo_behavior & AMMO_NO_DEFLECT) - // Bullet gets absorbed if it has IFF or can't be reflected. - return - var/obj/projectile/new_proj = new(src, construction_data ? construction_data : create_cause_data(initial(name))) - new_proj.generate_bullet(P.ammo) - new_proj.damage = P.damage * reflection_multiplier // don't make it too punishing - new_proj.accuracy = HIT_ACCURACY_TIER_7 // 35% chance to hit something - - // Move back to who fired you. - RegisterSignal(new_proj, COMSIG_BULLET_PRE_HANDLE_TURF, PROC_REF(bullet_ignore_turf)) - new_proj.permutated |= src + var/atom/target = proj_bullet.firer + if(!target) + return ..() - var/angle = Get_Angle(src, P.firer) + rand(30, -30) - var/atom/target = get_angle_target_turf(src, angle, get_dist(src, P.firer)) - new_proj.projectile_flags |= PROJECTILE_SHRAPNEL - new_proj.fire_at(target, P.firer, src, reflect_range, speed = P.ammo.shell_speed) + proj_bullet.reflect_projectile_at_firer(src, proj_bullet, proj_bullet.firer, target, damage_multiplier = reflection_multiplier, accuracy_override = HIT_ACCURACY_TIER_7, range_override = reflect_range, angle_variance = 30) return TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/Evolution.dm b/code/modules/mob/living/carbon/xenomorph/Evolution.dm index bd33ced38533..83d058a76002 100644 --- a/code/modules/mob/living/carbon/xenomorph/Evolution.dm +++ b/code/modules/mob/living/carbon/xenomorph/Evolution.dm @@ -285,7 +285,7 @@ GLOBAL_LIST_EMPTY(deevolved_ckeys) to_chat(src, SPAN_WARNING("We must be at full health to evolve.")) return FALSE - if(agility || fortify || crest_defense || stealth) + if(agility || fortify || crest_defense || stealth || HAS_TRAIT(src, TRAIT_ABILITY_ENCLOSED_PLATES) || HAS_TRAIT(src, TRAIT_ABILITY_REFLECTIVE_PLATES)) to_chat(src, SPAN_WARNING("We cannot evolve while in this stance.")) return FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm b/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm index cf25fadeef89..816ba1fb8c7f 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm @@ -109,7 +109,7 @@ //Hot hot Aliens on Aliens action. //Actually just used for eating people. /mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/xeno) - if (xeno.fortify || HAS_TRAIT(xeno, TRAIT_ABILITY_BURROWED)) + if(xeno.fortify || HAS_TRAIT(xeno, TRAIT_ABILITY_BURROWED) || HAS_TRAIT(xeno, TRAIT_ABILITY_REFLECTIVE_PLATES)) return XENO_NO_DELAY_ACTION if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 0f330a9bee1d..f04a028b62cf 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -136,6 +136,8 @@ var/armor_integrity_last_damage_time = 0 var/armor_integrity_immunity_time = 0 + var/melee_vulnerability_mult = 0 + var/pull_multiplier = 1 var/aura_strength = 0 // Pheromone strength var/weed_level = WEED_LEVEL_STANDARD @@ -211,6 +213,8 @@ var/plasmapool_modifier = 1 var/plasmagain_modifier = 0 var/tackle_chance_modifier = 0 + var/tackle_min_modifier = 0 + var/tackle_max_modifier = 0 var/regeneration_multiplier = 1 var/speed_modifier = 0 var/phero_modifier = 0 @@ -221,6 +225,9 @@ var/attack_speed_modifier = 0 var/armor_integrity_modifier = 0 + ///Used to add plasma to strain if caste have 0 plasma_max + var/add_plasma = 0 + var/list/modifier_sources COOLDOWN_DECLARE(next_strain_reset) @@ -248,6 +255,7 @@ /// Caste-based spit windup var/spit_windup = FALSE /// Caste-based spit windup duration (if applicable) + var/spit_delay = 0 var/tileoffset = 0 // How much your view will be offset in the direction that you zoom? var/viewsize = 0 //What size your view will be changed to when you zoom? var/banished = FALSE // Banished xenos can be attacked by all other xenos @@ -318,13 +326,16 @@ var/obj/effect/alien/resin/fruit/selected_fruit = null var/list/built_structures = list() - // Designer stuff + /// Designer related var/obj/effect/alien/resin/design/selected_design = null var/list/available_design = list() var/list/current_design = list() var/max_design_nodes = 0 var/selected_design_mark + var/front_armor + var/side_armor + var/icon_xeno var/icon_xenonid var/xenonid_pixel_x @@ -607,6 +618,9 @@ if(fire_immunity & FIRE_IMMUNITY_XENO_FRENZY) . |= COMPONENT_XENO_FRENZY +/mob/living/carbon/xenomorph/proc/get_reflection_chance(obj/projectile/bullet) + return + //Off-load this proc so it can be called freely //Since Xenos change names like they change shoes, we need somewhere to hammer in all those legos //We set their name first, then update their real_name AND their mind name @@ -939,8 +953,8 @@ recalculate_tackle() /mob/living/carbon/xenomorph/proc/recalculate_tackle() - tackle_min = caste.tackle_min - tackle_max = caste.tackle_max + tackle_min = caste.tackle_min + tackle_min_modifier + tackle_max = caste.tackle_max + tackle_max_modifier tackle_chance = caste.tackle_chance + tackle_chance_modifier tacklestrength_min = caste.tacklestrength_min tacklestrength_max = caste.tacklestrength_max @@ -961,19 +975,23 @@ health = maxHealth /mob/living/carbon/xenomorph/proc/recalculate_plasma() - if(!plasma_max) + var/new_plasma_max = (plasmapool_modifier * caste.plasma_max) + add_plasma + if(!plasma_max && new_plasma_max <= 0) return - var/new_plasma_max = plasmapool_modifier * caste.plasma_max plasma_gain = plasmagain_modifier + caste.plasma_gain if(hive) new_plasma_max += hive.hive_stat_modifier_flat["plasmapool"] new_plasma_max *= hive.hive_stat_modifier_multiplier["plasmapool"] plasma_gain += hive.hive_stat_modifier_flat["plasmagain"] plasma_gain *= hive.hive_stat_modifier_multiplier["plasmagain"] - if (new_plasma_max == plasma_max) + if(new_plasma_max == plasma_max) return - var/plasma_ratio = plasma_stored / plasma_max + + var/plasma_ratio = 0 + if(plasma_max > 0) + plasma_ratio = plasma_stored / plasma_max + plasma_max = new_plasma_max plasma_stored = floor(plasma_max * plasma_ratio + 0.5) //Restore our plasma ratio, so if we're full, we continue to be full, etc. Rounding up (hence the +0.5) if(plasma_stored > plasma_max) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm index b570e4f068db..8bbbdd50c027 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm @@ -110,6 +110,10 @@ to_chat(src, SPAN_WARNING("We cannot rest while our crest is down!")) return + if(HAS_TRAIT(src, TRAIT_ABILITY_ENCLOSED_PLATES)) + to_chat(src, SPAN_WARNING("We cannot rest when we are encased in plates!")) + return + return ..() /mob/living/carbon/xenomorph/set_lying_down() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm index 2e175bbc2482..458cb3d3489a 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_abilities.dm @@ -40,3 +40,56 @@ var/base_punch_damage_synth = 30 var/base_punch_damage_pred = 25 var/damage_variance = 5 + +///Bulwark Strain + +/datum/action/xeno_action/onclick/toggle_plates + name = "Toggle Encasing Plates" + action_icon_state = "encased_plates" + macro_path = /datum/action/xeno_action/verb/verb_toggle_plates + action_type = XENO_ACTION_ACTIVATE + xeno_cooldown = 1 SECONDS + ability_primacy = XENO_PRIMARY_ACTION_1 + + var/speed_debuff = 1.35 + +/datum/action/xeno_action/activable/plate_bash + name = "Plate Bash" + action_icon_state = "plate_bash" + macro_path = /datum/action/xeno_action/verb/verb_plate_bash + action_type = XENO_ACTION_CLICK + ability_primacy = XENO_PRIMARY_ACTION_2 + xeno_cooldown = 4 SECONDS + + var/base_damage = 20 + +/datum/action/xeno_action/onclick/tail_swing + name = "Tail Swing" + action_icon_state = "tail_swing" + macro_path = /datum/action/xeno_action/verb/verb_tail_swing + action_type = XENO_ACTION_ACTIVATE + ability_primacy = XENO_PRIMARY_ACTION_3 + plasma_cost = 20 + xeno_cooldown = 10 SECONDS + + var/swing_range = 1 + +/datum/action/xeno_action/onclick/reflective_shield + name = "Reflective Shield" + action_icon_state = "reflective_shield" + macro_path = /datum/action/xeno_action/verb/verb_reflective_shield + action_type = XENO_ACTION_CLICK + ability_primacy = XENO_PRIMARY_ACTION_4 + + /// used to calculate reflective plates refunding. + var/duration = BULWARK_REFLECTIVE_TIME + /// reflective plates addtimer ID (for deletion) + var/reflective_shield_timer_id = TIMER_ID_NULL + /// Used to countdown BULWARK_REFLECTIVE_TIME. + var/reflective_start_time = -1 + /// How much refund we want to get back? 1 is 1s used to 1s cooldown, 2 is 1s used 2s cooldown. + var/reflective_refund_multiplier = 2 + /// Used in calculation, finalized number will be displayed as cooldown. + var/reflective_recharge_time = null + /// Cooldown after activation to prevent accidental double click. + var/reflective_safe_click_cooldown = 0 diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_macros.dm b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_macros.dm index 63d97bb69aa2..f6bd989d7c46 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_macros.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/warrior/warrior_macros.dm @@ -19,3 +19,31 @@ set hidden = TRUE var/action_name = "Punch" handle_xeno_macro(src, action_name) + +/datum/action/xeno_action/verb/verb_toggle_plates() + set category = "Alien" + set name = "Toggle Encasing Plates" + set hidden = TRUE + var/action_name = "Toggle Plates Defense" + handle_xeno_macro(src, action_name) + +/datum/action/xeno_action/verb/verb_plate_bash() + set category = "Alien" + set name = "Plate Bash" + set hidden = TRUE + var/action_name = "Plate Bash" + handle_xeno_macro(src, action_name) + +/datum/action/xeno_action/verb/verb_tail_swing() + set category = "Alien" + set name = "Tail Swing" + set hidden = TRUE + var/action_name = "Tail Swing" + handle_xeno_macro(src, action_name) + +/datum/action/xeno_action/verb/verb_reflective_shield() + set category = "Alien" + set name = "Reflective Shield" + set hidden = TRUE + var/action_name = "Reflective Plates" + handle_xeno_macro(src, action_name) diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm index 9af59c6201dc..41e43e8cc72f 100644 --- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm +++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm @@ -9,7 +9,7 @@ // this proc could use refactoring at some point /mob/living/carbon/human/attack_alien(mob/living/carbon/xenomorph/attacking_xeno, dam_bonus, unblockable = FALSE) - if(attacking_xeno.fortify || HAS_TRAIT(attacking_xeno, TRAIT_ABILITY_BURROWED)) + if(attacking_xeno.fortify || HAS_TRAIT(attacking_xeno, TRAIT_ABILITY_BURROWED) || HAS_TRAIT(attacking_xeno, TRAIT_ABILITY_REFLECTIVE_PLATES)) return XENO_NO_DELAY_ACTION if(HAS_TRAIT(src, TRAIT_HAULED)) @@ -403,7 +403,10 @@ if(is_wired) xeno.visible_message(SPAN_DANGER("The barbed wire slices into [xeno]!"), SPAN_DANGER("The barbed wire slices into us!"), null, 5, CHAT_TYPE_XENO_COMBAT) - xeno.apply_damage(10, enviro=TRUE) + if(istype(xeno.strain, /datum/xeno_strain/bulwark)) + xeno.apply_damage(5, enviro=TRUE) + else + xeno.apply_damage(10, enviro=TRUE) return XENO_ATTACK_ACTION /obj/structure/barricade/handle_tail_stab(mob/living/carbon/xenomorph/xeno, blunt_stab) @@ -1141,8 +1144,7 @@ to_chat(xeno, SPAN_WARNING("It's already damaged.")) return XENO_NO_DELAY_ACTION xeno.animation_attack_on(src) - xeno.visible_message(SPAN_DANGER("[xeno] slashes away at [src]!"), - SPAN_DANGER("We slash and claw at the bright light!"), max_distance = 5, message_flags = CHAT_TYPE_XENO_COMBAT) + xeno.visible_message("[xeno] slashes away at [src]!","We slash and claw at the bright light!", max_distance = 5, message_flags = CHAT_TYPE_XENO_COMBAT) health = max(health - rand(xeno.melee_damage_lower, xeno.melee_damage_upper), 0) if(!health) set_damaged() diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm b/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm index 50a2a8e1d05e..0a79fbf32e9a 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Warrior.dm @@ -15,6 +15,8 @@ behavior_delegate_type = /datum/behavior_delegate/warrior_base + available_strains = list(/datum/xeno_strain/bulwark) + evolves_to = list(XENO_CASTE_PRAETORIAN, XENO_CASTE_CRUSHER) deevolves_to = list(XENO_CASTE_DEFENDER) caste_desc = "A powerful front line combatant." @@ -78,12 +80,19 @@ var/emote_cooldown = 0 var/lunging = FALSE // whether or not the warrior is currently lunging (holding) a target +/mob/living/carbon/xenomorph/warrior/handle_special_state() + return HAS_TRAIT(src, TRAIT_ABILITY_ENCLOSED_PLATES) + +/mob/living/carbon/xenomorph/warrior/handle_special_wound_states(severity) + if(HAS_TRAIT(src, TRAIT_ABILITY_ENCLOSED_PLATES)) + return "Warrior_plates_[severity]" + /mob/living/carbon/xenomorph/warrior/throw_item(atom/target) toggle_throw_mode(THROW_MODE_OFF) /mob/living/carbon/xenomorph/warrior/stop_pulling() var/datum/behavior_delegate/warrior_base/warrior_delegate = behavior_delegate - if(isliving(pulling) && warrior_delegate.lunging) + if(isliving(pulling) && istype(warrior_delegate) && warrior_delegate.lunging) warrior_delegate.lunging = FALSE // To avoid extreme cases of stopping a lunge then quickly pulling and stopping to pull someone else var/mob/living/lunged = pulling lunged.set_effect(0, STUN) diff --git a/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/berserker.dm b/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/berserker.dm index 80e265d2fedd..d33475028b00 100644 --- a/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/berserker.dm +++ b/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/berserker.dm @@ -18,7 +18,7 @@ behavior_delegate_type = /datum/behavior_delegate/ravager_berserker /datum/xeno_strain/berserker/apply_strain(mob/living/carbon/xenomorph/ravager/ravager) - ravager.plasma_max = 0 + ravager.plasmapool_modifier = XENO_NO_PLASMA ravager.health_modifier -= XENO_HEALTH_MOD_MED ravager.armor_modifier += XENO_ARMOR_MOD_VERY_SMALL ravager.speed_modifier += XENO_SPEED_FASTMOD_TIER_3 diff --git a/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/hedgehog.dm b/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/hedgehog.dm index 1497e50ef22d..8632830e2172 100644 --- a/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/hedgehog.dm +++ b/code/modules/mob/living/carbon/xenomorph/strains/castes/ravager/hedgehog.dm @@ -18,7 +18,7 @@ behavior_delegate_type = /datum/behavior_delegate/ravager_hedgehog /datum/xeno_strain/hedgehog/apply_strain(mob/living/carbon/xenomorph/ravager/ravager) - ravager.plasma_max = 0 + ravager.plasmapool_modifier = XENO_NO_PLASMA ravager.small_explosives_stun = TRUE ravager.explosivearmor_modifier += XENO_EXPOSIVEARMOR_MOD_SMALL ravager.damage_modifier -= XENO_DAMAGE_MOD_SMALL diff --git a/code/modules/mob/living/carbon/xenomorph/strains/castes/warrior/bulwark.dm b/code/modules/mob/living/carbon/xenomorph/strains/castes/warrior/bulwark.dm new file mode 100644 index 000000000000..6bbecc671e41 --- /dev/null +++ b/code/modules/mob/living/carbon/xenomorph/strains/castes/warrior/bulwark.dm @@ -0,0 +1,393 @@ +/datum/xeno_strain/bulwark + name = WARRIOR_BULWARK + description = "You give up all of your normal abilities, as well as some damage, speed, tackle reliability, and you take 50% more melee damage, in exchange for plasma, slightly stronger explosive resistance, and directional defenses. You take 50% less damage from wired cades, have a 75% chance to strike enemies behind wired cades, and gain bonus directional armor with no directional-lock slowdown. Encasing Plates lets you enter a defensive stance that slows your movement and reduces tackle efficiency, but increases directional armor, makes you immune to knockbacks, and allows you to tear openings in walls. Plate Bash dashes up to 3 tiles and strikes a target; while encased, it instead launches the target up to 3 tiles away and knocks them down. Tail Swing trips enemies around you; if used on a grenade instead, it reflects it up to 3 tiles away with a reduced cooldown. Reflective Shield allows you to reflect bullets coming from the front back toward enemies for up to 6 seconds with a 100% reflection chance. While active, it locks your facing direction to the direction it was activated in. You can stop this ability at any time, but its minimum cooldown is 6 seconds, and each additional 1 second of use adds 2 seconds to the cooldown." + flavor_description = "Where there's a sword, there's a shield." + icon_state_prefix = "Bulwark" + + actions_to_remove = list( + /datum/action/xeno_action/activable/warrior_punch, + /datum/action/xeno_action/activable/lunge, + /datum/action/xeno_action/activable/fling, + ) + actions_to_add = list( + /datum/action/xeno_action/onclick/toggle_plates, //1st + /datum/action/xeno_action/activable/plate_bash, //2nd + /datum/action/xeno_action/onclick/tail_swing, //3rd + /datum/action/xeno_action/onclick/reflective_shield, //4th + ) + + behavior_delegate_type = /datum/behavior_delegate/warrior_bulwark + +/datum/xeno_strain/bulwark/apply_strain(mob/living/carbon/xenomorph/warrior/warrior) + warrior.explosivearmor_modifier += XENO_EXPLOSIVE_ARMOR_TIER_1 + warrior.health_modifier += XENO_HEALTH_MOD_VERY_LARGE + warrior.armor_modifier += XENO_ARMOR_MOD_SMALL + warrior.add_plasma += XENO_PLASMA_TIER_2 + warrior.speed += XENO_SPEED_TIER_1 + warrior.tackle_max_modifier += 1 + warrior.melee_vulnerability_mult += 1.5 + + warrior.recalculate_everything() + +// +// bulwark config +// + +#define BULWARK_DIR_ARMOR 10 +#define BULWARK_GRENADE_SWEEP_THROW 3 +#define BULWARK_REFLECTION_CHANCE_FRONT 100 +#define BULWARK_REFLECTED_BULLET_DAMAGE 0.5 +#define BULWARK_REFLECTED_BULLET_ACCURACY 80 + +// +// Passive benefits +// + +/datum/behavior_delegate/warrior_bulwark + name = "Bulwark Warrior Behavior Delegate" + + var/frontal_armor = BULWARK_DIR_ARMOR + var/sided_armor = BULWARK_DIR_ARMOR + +/datum/behavior_delegate/warrior_bulwark/append_to_stat() + . = list() + . += "Front Armor: +[frontal_armor]" + . += "Side Armor: +[sided_armor]" + if(HAS_TRAIT(bound_xeno, TRAIT_ABILITY_ENCLOSED_PLATES)) + . += "Encased Plates: -[XENO_DAMAGE_MOD_BULWARK] Claws Damage." + var/datum/action/xeno_action/onclick/reflective_shield/ability_used = get_action(bound_xeno, /datum/action/xeno_action/onclick/reflective_shield) + if(ability_used.reflective_start_time != -1) + var/time_left = null + time_left = (BULWARK_REFLECTIVE_TIME - (world.time - ability_used.reflective_start_time)) / 10 + . += "Reflective Plates Remaining Time: [time_left] second\s." + return + +/datum/behavior_delegate/warrior_bulwark/add_to_xeno() + RegisterSignal(bound_xeno, COMSIG_XENO_PRE_CALCULATE_ARMOURED_DAMAGE_PROJECTILE, PROC_REF(apply_directional_armor)) + ADD_TRAIT(bound_xeno, TRAIT_NO_DIR_LOCK_SLOWDOWN, TRAIT_SOURCE_ABILITY("no_dir_lock_slowdown")) + +/datum/behavior_delegate/warrior_bulwark/proc/apply_directional_armor(mob/living/carbon/xenomorph/xeno_player, list/damagedata) + SIGNAL_HANDLER + var/projectile_direction = damagedata["direction"] + if(xeno_player.dir & REVERSE_DIR(projectile_direction)) + damagedata["armor"] += frontal_armor + else + for(var/side_direction in get_perpen_dir(xeno_player.dir)) + if(projectile_direction == side_direction) + damagedata["armor"] += sided_armor + return + +/datum/behavior_delegate/warrior_bulwark/on_update_icons() + if(bound_xeno.stat == DEAD) + return + + if(!HAS_TRAIT(bound_xeno, TRAIT_ABILITY_REFLECTIVE_PLATES)) + if(HAS_TRAIT(bound_xeno, TRAIT_ABILITY_ENCLOSED_PLATES) && bound_xeno.health > 0) + bound_xeno.icon_state = "[bound_xeno.get_strain_icon()] Warrior Shield" + return TRUE + + if(HAS_TRAIT(bound_xeno, TRAIT_ABILITY_REFLECTIVE_PLATES) && bound_xeno.health > 0) + bound_xeno.icon_state = "[bound_xeno.get_strain_icon()] Warrior Shield Reflective" + return TRUE + +/datum/behavior_delegate/warrior_bulwark/melee_attack_additional_effects_target(mob/living/carbon/carbon_target) + if(HAS_TRAIT(bound_xeno, TRAIT_ABILITY_ENCLOSED_PLATES)) + bound_xeno.flick_attack_overlay(carbon_target, "punch") // We shmwack them with plates! + +// +// 1st ability +// + +/datum/action/xeno_action/onclick/toggle_plates/use_ability() + var/mob/living/carbon/xenomorph/xeno_player = owner + if(!istype(xeno_player)) + return + + XENO_ACTION_CHECK(xeno_player) + + var/datum/action/xeno_action/onclick/reflective_shield/ability_used = get_action(xeno_player, /datum/action/xeno_action/onclick/reflective_shield) + if(HAS_TRAIT(xeno_player, TRAIT_ABILITY_ENCLOSED_PLATES)) + if(HAS_TRAIT(xeno_player, TRAIT_ABILITY_REFLECTIVE_PLATES)) + to_chat(xeno_player, SPAN_WARNING("We break our reflective stance!")) + ability_used.reflective_safe_click_cooldown = -1 + ability_used.remove_reflective_shield() + disengage_plates() + else + engage_plates() + + return ..() + +/datum/action/xeno_action/onclick/toggle_plates/proc/engage_plates() + var/mob/living/carbon/xenomorph/xeno_player = owner + if(!istype(xeno_player)) + return + + var/datum/behavior_delegate/warrior_bulwark/behavior = xeno_player.behavior_delegate + if(!istype(behavior)) + return + + ADD_TRAIT(xeno_player, TRAIT_ABILITY_ENCLOSED_PLATES, TRAIT_SOURCE_ABILITY("enclosed_plates")) + to_chat(xeno_player, SPAN_XENOWARNING("We raise our plates and form a shield.")) + xeno_player.ability_speed_modifier += speed_debuff + xeno_player.mob_size = MOB_SIZE_BIG //knockback immune + button.icon_state = "template_active" + behavior.frontal_armor += BULWARK_DIR_ARMOR + behavior.sided_armor -= BULWARK_DIR_ARMOR + xeno_player.damage_modifier -= XENO_DAMAGE_MOD_BULWARK + xeno_player.tackle_min_modifier += 2 + + xeno_player.recalculate_tackle() + xeno_player.update_icons() + apply_cooldown() + +/datum/action/xeno_action/onclick/toggle_plates/proc/disengage_plates() + var/mob/living/carbon/xenomorph/xeno_player = owner + if(!istype(xeno_player)) + return + + var/datum/behavior_delegate/warrior_bulwark/behavior = xeno_player.behavior_delegate + if(!istype(behavior)) + return + + REMOVE_TRAIT(xeno_player, TRAIT_ABILITY_ENCLOSED_PLATES, TRAIT_SOURCE_ABILITY("enclosed_plates")) + to_chat(xeno_player, SPAN_XENOWARNING("We lower our plates.")) + xeno_player.ability_speed_modifier -= speed_debuff + xeno_player.mob_size = MOB_SIZE_XENO //no longer knockback immune + button.icon_state = "template_xeno" + behavior.frontal_armor -= BULWARK_DIR_ARMOR + behavior.sided_armor += BULWARK_DIR_ARMOR + xeno_player.damage_modifier += XENO_DAMAGE_MOD_BULWARK + xeno_player.tackle_min_modifier -= 2 + + xeno_player.recalculate_tackle() + xeno_player.update_icons() + apply_cooldown() + +// +// 2nd ability +// + +/datum/action/xeno_action/activable/plate_bash/use_ability(atom/target_atom) + var/mob/living/carbon/xenomorph/xeno_player = owner + + if(!iscarbon(target_atom)) + return + + if(!isxeno_human(target_atom) || xeno_player.can_not_harm(target_atom)) + return + + XENO_ACTION_CHECK_USE_PLASMA(xeno_player) + + var/mob/living/carbon/carbon_target = target_atom + if(carbon_target.stat == DEAD) + return + + var/distance = get_dist(xeno_player, carbon_target) + var/max_distance = 2 + if(distance > max_distance) + return + + if(!HAS_TRAIT(xeno_player, TRAIT_ABILITY_ENCLOSED_PLATES)) + xeno_player.throw_atom(get_step_towards(carbon_target, xeno_player), 2, SPEED_SLOW, xeno_player, tracking=TRUE) + if(!xeno_player.Adjacent(carbon_target)) + on_cooldown_end() + return + + carbon_target.last_damage_data = create_cause_data(xeno_player.caste_type, xeno_player) + var/facing = get_dir(xeno_player, carbon_target) + + if(HAS_TRAIT(xeno_player, TRAIT_ABILITY_ENCLOSED_PLATES)) + xeno_player.throw_carbon(carbon_target, facing, 3, SPEED_VERY_FAST, shake_camera = TRUE, immobilize = TRUE) + carbon_target.KnockDown(1) + else + xeno_player.throw_carbon(carbon_target, facing, 1, SPEED_SLOW, shake_camera = TRUE, immobilize = FALSE) + + apply_custom_cooldown() + + if(carbon_target.stat != DEAD && (!(carbon_target.status_flags & XENO_HOST) || !HAS_TRAIT(carbon_target, TRAIT_NESTED))) + carbon_target.apply_armoured_damage(get_xeno_damage_slash(carbon_target, base_damage), ARMOR_MELEE, BRUTE, "chest", 5) + + xeno_player.visible_message(SPAN_XENOWARNING("[xeno_player] dashes at [carbon_target] with its armored plates!"), + SPAN_XENOWARNING("We dash at [carbon_target] with our armored plates!")) + + xeno_player.face_atom(carbon_target) + xeno_player.animation_attack_on(carbon_target) + xeno_player.flick_attack_overlay(carbon_target, "punch") + playsound(carbon_target,'sound/weapons/alien_claw_block.ogg', 50, 1) + + return ..() + +// +// 3rd ability +// + +/datum/action/xeno_action/onclick/tail_swing/use_ability() + var/mob/living/carbon/xenomorph/xeno_player = owner + + var/datum/action/xeno_action/onclick/reflective_shield/ability_used = get_action(xeno_player, /datum/action/xeno_action/onclick/reflective_shield) + var/datum/action/xeno_action/onclick/toggle_plates/plates_used = get_action(xeno_player, /datum/action/xeno_action/onclick/toggle_plates) + + if(HAS_TRAIT(xeno_player, TRAIT_ABILITY_ENCLOSED_PLATES)) + if(HAS_TRAIT(xeno_player, TRAIT_ABILITY_REFLECTIVE_PLATES)) + to_chat(xeno_player, SPAN_WARNING("We break our reflective stance!")) + ability_used.reflective_safe_click_cooldown = -1 + ability_used.remove_reflective_shield() + to_chat(xeno_player, SPAN_WARNING("We break our defensive stance!")) + plates_used.disengage_plates() + + xeno_player.visible_message(SPAN_XENOWARNING("[xeno_player] swings its tail in a wide circle!"), + SPAN_XENOWARNING("We swing our tail in a wide circle!")) + + XENO_ACTION_CHECK_USE_PLASMA(xeno_player) + + xeno_player.spin_circle() + playsound(xeno_player,'sound/effects/tail_swing.ogg', 25, 1) + + var/hit_enemy = FALSE + for(var/mob/living/carbon/carbon_target in orange(swing_range, get_turf(xeno_player))) + if(!isxeno_human(carbon_target) || xeno_player.can_not_harm(carbon_target)) + continue + if(carbon_target.stat == DEAD) + continue + if(HAS_TRAIT(carbon_target, TRAIT_NESTED)) + continue + + hit_enemy = TRUE + xeno_player.flick_attack_overlay(carbon_target, "punch") + carbon_target.last_damage_data = create_cause_data(xeno_player.caste_type, xeno_player) + carbon_target.apply_armoured_damage(get_xeno_damage_slash(xeno_player, 15), ARMOR_MELEE, BRUTE) + shake_camera(carbon_target, 2, 1) + + if(carbon_target.mob_size < MOB_SIZE_BIG) + carbon_target.apply_effect(get_xeno_stun_duration(carbon_target, 1), WEAKEN) + + to_chat(carbon_target, SPAN_XENOWARNING("You are tripped by [xeno_player]'s tail swing!")) + playsound(carbon_target,'sound/weapons/alien_claw_block.ogg', 50, 1) + + var/hit_grenade = FALSE + for(var/obj/item/explosive/grenade/grenade in orange(swing_range, get_turf(xeno_player))) + hit_grenade = TRUE + var/direction = get_dir(xeno_player, grenade) + var/turf/target_destination = get_ranged_target_turf(grenade, direction, BULWARK_GRENADE_SWEEP_THROW) + if(target_destination) + grenade.throw_atom(target_destination, BULWARK_GRENADE_SWEEP_THROW, SPEED_FAST, grenade) + playsound(xeno_player,'sound/effects/grenade_hit.ogg', 50, 1) + + if(!hit_enemy && hit_grenade) + xeno_cooldown *= 0.3 + + if(!hit_enemy && !hit_grenade) + xeno_cooldown *= 0.3 + + apply_custom_cooldown() + + return ..() + +// +// 4th ability +// + +/datum/action/xeno_action/onclick/reflective_shield/use_ability() + var/mob/living/carbon/xenomorph/warrior/xeno_player = owner + + XENO_ACTION_CHECK(xeno_player) + + if(HAS_TRAIT(xeno_player, TRAIT_ABILITY_REFLECTIVE_PLATES)) + remove_reflective_shield() + return + + if(!HAS_TRAIT(xeno_player, TRAIT_ABILITY_ENCLOSED_PLATES)) + xeno_player.balloon_alert(xeno_player, "we need to tense up our plates!", text_color = "#7d32bb", delay = 1 SECONDS) + return + + if(!check_and_use_plasma_owner(80)) + return + + xeno_player.stop_pulling() + ADD_TRAIT(xeno_player, TRAIT_ABILITY_REFLECTIVE_PLATES, TRAIT_SOURCE_ABILITY("reflective_plates")) + xeno_player.flags_atom |= DIRLOCK + xeno_player.update_icons() + xeno_player.create_shield(BULWARK_REFLECTIVE_TIME, "shield2") + button.icon_state = "template_active" + reflective_start_time = world.time + reflective_safe_click_cooldown = world.time + 1 SECONDS + + to_chat(xeno_player, SPAN_XENOWARNING("We adjust our plates and prepare for incoming frontal attacks!")) + xeno_player.visible_message(SPAN_XENOWARNING("[xeno_player] locks its stance, focusing on incoming frontal attacks!")) + + if(reflective_shield_timer_id != TIMER_ID_NULL) + deltimer(reflective_shield_timer_id) + + reflective_shield_timer_id = addtimer(CALLBACK(src, PROC_REF(remove_reflective_shield)), BULWARK_REFLECTIVE_TIME, TIMER_STOPPABLE) + + apply_cooldown() + return ..() + +/datum/action/xeno_action/onclick/reflective_shield/proc/remove_reflective_shield() + var/mob/living/carbon/xenomorph/warrior/xeno_player = owner + + var/datum/action/xeno_action/onclick/reflective_shield/ability_used = get_action(xeno_player, /datum/action/xeno_action/onclick/reflective_shield) + if(!istype(ability_used)) + return + + if(!HAS_TRAIT(xeno_player, TRAIT_ABILITY_REFLECTIVE_PLATES)) + return + + if(world.time < ability_used.reflective_safe_click_cooldown) + to_chat(xeno_player, SPAN_XENOWARNING("We need a moment before breaking our reflective stance!")) + return + + REMOVE_TRAIT(xeno_player, TRAIT_ABILITY_REFLECTIVE_PLATES, TRAIT_SOURCE_ABILITY("reflective_plates")) + xeno_player.update_icons() + xeno_player.remove_suit_layer() + button.icon_state = "template_xeno" + to_chat(xeno_player, SPAN_XENOWARNING("We adjust our plates and stance back to normal.")) + + if(ability_used.reflective_shield_timer_id != TIMER_ID_NULL) + deltimer(ability_used.reflective_shield_timer_id) + ability_used.reflective_shield_timer_id = TIMER_ID_NULL + + if(ability_used.reflective_start_time > 0) + var/used_ratio = round((world.time - ability_used.reflective_start_time) / ability_used.duration, 0.1) + ability_used.reflective_recharge_time = (BULWARK_REFLECTIVE_TIME * used_ratio * ability_used.reflective_refund_multiplier) + 6 SECONDS + + ability_used.reflective_start_time = -1 + apply_cooldown_override(ability_used.reflective_recharge_time) + +/mob/living/carbon/xenomorph/warrior/get_reflection_chance(obj/projectile/bullet) + var/datum/behavior_delegate/warrior_bulwark/behavior = src.behavior_delegate + if(!istype(behavior)) + return + + if(!HAS_TRAIT(src, TRAIT_ABILITY_REFLECTIVE_PLATES)) + return + + if(body_position == LYING_DOWN || stat == UNCONSCIOUS) + return //we don't want to reflect bullets when we are laying down/unconscious. + + if(bullet.ammo.flags_ammo_behavior & (AMMO_SNIPER|AMMO_ROCKET|AMMO_XENO|AMMO_NO_DEFLECT|AMMO_SKIPS_ALIENS)) + return //we don't want to reflect sniper bullets, rockets, anti-reflection bullets, xeno bullets and friendly bullets. + + var/projectile_dir = 0 + + if(!bullet.firer) + return + + projectile_dir = bullet.dir + + if(src.dir & REVERSE_DIR(projectile_dir)) + return BULWARK_REFLECTION_CHANCE_FRONT + + for(var/side_dir in get_perpen_dir(src.dir)) + if(projectile_dir == side_dir) + return 0 + + return + +// +// Custom Proc(s) +// + +/datum/action/xeno_action/proc/apply_custom_cooldown() + apply_cooldown() + xeno_cooldown = initial(xeno_cooldown) //We revert cooldown back to original value (after it got applied) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 779969ddf073..324a1f61bd27 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -725,6 +725,8 @@ note dizziness decrements automatically in the mob's Life() proc. if(!canface()) return 0 if(dir != ndir) + if(HAS_TRAIT(src, TRAIT_ABILITY_REFLECTIVE_PLATES)) + return flags_atom &= ~DIRLOCK setDir(ndir) if(buckled && !buckled.anchored) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index f180e11be404..c8c3d6c08d4c 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -186,7 +186,8 @@ CLIENT_VERB(drop_item) move_delay += mob.next_move_slowdown mob.next_move_slowdown = 0 if((mob.flags_atom & DIRLOCK) && mob.dir != direct) - move_delay += MOVE_REDUCTION_DIRECTION_LOCKED // by Geeves + if(!HAS_TRAIT(mob, TRAIT_NO_DIR_LOCK_SLOWDOWN)) + move_delay += MOVE_REDUCTION_DIRECTION_LOCKED // by Geeves mob.cur_speed = clamp(10/(move_delay + 0.5), MIN_SPEED, MAX_SPEED) next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL // We pre-set this now for the crawling case. If crawling do_after fails, next_movement would be set after the attempt end instead of now. diff --git a/code/modules/projectiles/magazines/sentries.dm b/code/modules/projectiles/magazines/sentries.dm index 7287b71e16f0..199516286a7d 100644 --- a/code/modules/projectiles/magazines/sentries.dm +++ b/code/modules/projectiles/magazines/sentries.dm @@ -34,7 +34,7 @@ desc = "An ammo drum of 50 12g buckshot drums for the UA 12-G Shotgun Sentry. Just feed it into the sentry gun's ammo port when its ammo is depleted." caliber = "12g" max_rounds = 50 - default_ammo = /datum/ammo/bullet/shotgun/buckshot + default_ammo = /datum/ammo/bullet/shotgun/buckshot/turret /obj/item/ammo_magazine/sentry/wy name = "H20 ammo drum (10x42mm Caseless)" diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 98852846bba6..f9fc7ec260e4 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -360,7 +360,7 @@ var/turf/current_turf = get_turf(src) var/turf/next_turf = popleft(path) - // Terminal projectiles (about to hit) are handled first for retarget logic + // Terminal projectiles (about to hit) are handled firer for retarget logic if((speed * world.tick_lag) >= get_dist(current_turf, target_turf)) SEND_SIGNAL(src, COMSIG_BULLET_TERMINAL) @@ -420,6 +420,8 @@ return FALSE if(turf.density) // Handle wall hit + if(turf in permutated) + return FALSE var/ammo_flags = ammo.flags_ammo_behavior | projectile_override_flags if(SEND_SIGNAL(src, COMSIG_BULLET_PRE_HANDLE_TURF, turf) & COMPONENT_BULLET_PASS_THROUGH) @@ -506,19 +508,33 @@ if(SEND_SIGNAL(src, COMSIG_BULLET_POST_HANDLE_OBJ, obj, .) & COMPONENT_BULLET_PASS_THROUGH) return FALSE -/obj/projectile/proc/handle_mob(mob/living/living) +/obj/projectile/proc/handle_mob(mob/living/target_living) // If we've already handled this atom, don't do it again - if(SEND_SIGNAL(src, COMSIG_BULLET_PRE_HANDLE_MOB, living, .) & COMPONENT_BULLET_PASS_THROUGH) + if(SEND_SIGNAL(src, COMSIG_BULLET_PRE_HANDLE_MOB, target_living, .) & COMPONENT_BULLET_PASS_THROUGH) return FALSE - if((MODE_HAS_MODIFIER(/datum/gamemode_modifier/disable_attacking_corpses) && living.stat == DEAD) || (living in permutated)) + if((MODE_HAS_MODIFIER(/datum/gamemode_modifier/disable_attacking_corpses) && target_living.stat == DEAD) || (target_living in permutated)) return FALSE - permutated |= living - if((ammo.flags_ammo_behavior & AMMO_XENO) && (isfacehugger(living) || living.stat == DEAD)) //xeno ammo is NEVER meant to hit or damage dead people. If you want to add a xeno ammo that DOES then make a new flag that makes it ignore this check. + + if(isxeno(target_living)) + var/mob/living/carbon/xenomorph/xeno = target_living + var/directional_chance = xeno.get_reflection_chance(src) + if(directional_chance > 0 && prob(directional_chance)) + src.reflect_projectile_at_firer( + reflector = xeno, + new_firer = xeno, + damage_multiplier = BULWARK_REFLECTED_BULLET_DAMAGE, + accuracy_override = BULWARK_REFLECTED_BULLET_ACCURACY, + angle_variance = 25 + ) + return TRUE + + permutated |= target_living + if((ammo.flags_ammo_behavior & AMMO_XENO) && (isfacehugger(target_living) || target_living.stat == DEAD)) //xeno ammo is NEVER meant to hit or damage dead people. If you want to add a xeno ammo that DOES then make a new flag that makes it ignore this check. return FALSE - var/hit_chance = living.get_projectile_hit_chance(src) + var/hit_chance = target_living.get_projectile_hit_chance(src) if(hit_chance) // Calculated from combination of both ammo accuracy and gun accuracy @@ -526,86 +542,86 @@ var/direct_hit = FALSE // Wasn't the clicked target - if(original != living) + if(original != target_living) def_zone = rand_zone() // Xenos get a RNG limb miss chance regardless of being clicked target or not, see below - else if(isxeno(living) && hit_roll > hit_chance - 20) + else if(isxeno(target_living) && hit_roll > hit_chance - 20) def_zone = rand_zone() // Other targets do the same roll with penalty - a near hit will hit but redirected to another limb - else if(!isxeno(living) && hit_roll > hit_chance - 20 - GLOB.base_miss_chance[def_zone]) + else if(!isxeno(target_living) && hit_roll > hit_chance - 20 - GLOB.base_miss_chance[def_zone]) def_zone = rand_zone() else direct_hit = TRUE if(firer) - SEND_SIGNAL(firer, COMSIG_BULLET_DIRECT_HIT, living) + SEND_SIGNAL(firer, COMSIG_BULLET_DIRECT_HIT, target_living) // At present, Xenos have no inherent effects or localized damage stemming from limb targeting // Therefore we exempt the shooter from direct hit accuracy penalties as well, // simply to avoid them from resetting target to chest every time they want to shoot a xeno - if(!direct_hit || !isxeno(living)) // For normal people or direct hits we apply the limb accuracy penalty + if(!direct_hit || !isxeno(target_living)) // For normal people or direct hits we apply the limb accuracy penalty hit_chance -= GLOB.base_miss_chance[def_zone] // else for direct hits on xenos, we skip it, pretending it's a chest shot with zero penalty #if DEBUG_HIT_CHANCE - to_world(SPAN_DEBUG("([living]) Hit chance: [hit_chance] | Roll: [hit_roll]")) + to_world(SPAN_DEBUG("([target_living]) Hit chance: [hit_chance] | Roll: [hit_roll]")) #endif - if(hit_chance > hit_roll && !(living.status_flags & RECENTSPAWN)) + if(hit_chance > hit_roll && !(target_living.status_flags & RECENTSPAWN)) #if DEBUG_HIT_CHANCE - to_world(SPAN_DEBUG("([living]) Hit.")) + to_world(SPAN_DEBUG("([target_living]) Hit.")) #endif var/ammo_flags = ammo.flags_ammo_behavior | projectile_override_flags // If the ammo should hit the surface of the target and there is a mob blocking // The current turf is the "surface" of the target if(ammo_flags & AMMO_STRIKES_SURFACE) - var/turf/turf = get_turf(living) + var/turf/turf = get_turf(target_living) // We "hit" the current turf but strike the actual blockage ammo.on_hit_turf(get_turf(src),src) turf.bullet_act(src) - else if(living && living.loc && (living.bullet_act(src) != -1)) - ammo.on_hit_mob(living,src, firer) + else if(target_living && target_living.loc && (target_living.bullet_act(src) != -1)) + ammo.on_hit_mob(target_living,src, firer) // If we are a xeno shooting something - if(istype(ammo, /datum/ammo/xeno) && isxeno(firer) && living.stat != DEAD && ammo.apply_delegate) + if(istype(ammo, /datum/ammo/xeno) && isxeno(firer) && target_living.stat != DEAD && ammo.apply_delegate) var/mob/living/carbon/xenomorph/xeno = firer if(xeno.behavior_delegate) var/datum/behavior_delegate/MD = xeno.behavior_delegate - MD.ranged_attack_additional_effects_target(living) - MD.ranged_attack_additional_effects_self(living) + MD.ranged_attack_additional_effects_target(target_living) + MD.ranged_attack_additional_effects_self(target_living) // If the thing we're hitting is a Xeno - if(istype(living, /mob/living/carbon/xenomorph)) - var/mob/living/carbon/xenomorph/xeno = living + if(istype(target_living, /mob/living/carbon/xenomorph)) + var/mob/living/carbon/xenomorph/xeno = target_living if(xeno.behavior_delegate) xeno.behavior_delegate.on_hitby_projectile(ammo) . = TRUE - else if(living.body_position != LYING_DOWN) - animatation_displace_reset(living) + else if(target_living.body_position != LYING_DOWN) + animatation_displace_reset(target_living) if(ammo.sound_miss) - playsound_client(living.client, ammo.sound_miss, get_turf(living), 75, TRUE) - living.visible_message(SPAN_AVOIDHARM("[src] misses [living]!"), + playsound_client(target_living.client, ammo.sound_miss, get_turf(target_living), 75, TRUE) + target_living.visible_message(SPAN_AVOIDHARM("[src] misses [target_living]!"), SPAN_AVOIDHARM("[src] narrowly misses you!"), null, 4, CHAT_TYPE_TAKING_HIT) - var/log_message = "[src] narrowly missed [key_name(living)]" + var/log_message = "[src] narrowly missed [key_name(target_living)]" var/mob/living/carbon/shotby = firer if(istype(shotby)) - living.attack_log += "\[[time_stamp()]\] [src], fired by [key_name(firer)], narrowly missed [key_name(living)]" - shotby.attack_log += "\[[time_stamp()]\] [src], fired by [key_name(shotby)], narrowly missed [key_name(living)]" - log_message = "[src], fired by [key_name(firer)], narrowly missed [key_name(living)]" + target_living.attack_log += "\[[time_stamp()]\] [src], fired by [key_name(firer)], narrowly missed [key_name(target_living)]" + shotby.attack_log += "\[[time_stamp()]\] [src], fired by [key_name(shotby)], narrowly missed [key_name(target_living)]" + log_message = "[src], fired by [key_name(firer)], narrowly missed [key_name(target_living)]" log_attack(log_message) #if DEBUG_HIT_CHANCE - to_world(SPAN_DEBUG("([living]) Missed.")) + to_world(SPAN_DEBUG("([target_living]) Missed.")) #endif - if(SEND_SIGNAL(src, COMSIG_BULLET_POST_HANDLE_MOB, living, .) & COMPONENT_BULLET_PASS_THROUGH) + if(SEND_SIGNAL(src, COMSIG_BULLET_POST_HANDLE_MOB, target_living, .) & COMPONENT_BULLET_PASS_THROUGH) return FALSE /obj/projectile/proc/check_canhit(turf/current_turf, turf/next_turf, list/ignore_list) @@ -1365,6 +1381,60 @@ . = ..() source_pill = null +/** + * explained: + * * reflector - what shoots projectiles back. + * * new_firer - who shoots projectiles back. + * * damage_multiplier - how much bullet damage get reflected, default is 0.5 (50%). + * * accuracy_override - used to override shoot bullet accuracy. + * * angle_variance - how big reflection cone should be, default is 25, final cone will be 50 degrees (-25 and 25) + * * range_override - how far reflected bullet will travel, overridies original projectile value with new one. + * * projectile_flag_override - should only be used if you want to change bullet to other type than shrapnel. + * * ignore_safety - if set to TRUE, allows "target" to reflect reflected bullets. + */ +/obj/projectile/proc/reflect_projectile_at_firer(atom/reflector, atom/new_firer, damage_multiplier = 0.5, accuracy_override, angle_variance = 25, range_override, projectile_flag_override = NONE, ignore_safety = FALSE) + if(!ammo) + return + + if(!firer) + return + + if(!ignore_safety) + if(projectile_flags & PROJECTILE_REFLECTED) // So we cannot reflect reflected, could create infinite* loop. + return + + var/turf/source_turf = get_turf(reflector) + if(!source_turf) + return + + var/obj/projectile/new_proj = new(source_turf,create_cause_data("[reflector]")) + new_proj.generate_bullet(ammo) + new_proj.damage = damage * damage_multiplier + + if(!isnull(accuracy_override)) + new_proj.accuracy = accuracy_override + else + new_proj.accuracy = accuracy + + if(projectile_flag_override) + new_proj.projectile_flags |= projectile_flag_override + else + new_proj.projectile_flags |= PROJECTILE_SHRAPNEL //we make it shrapnel unless overrided. + + new_proj.projectile_flags |= PROJECTILE_REFLECTED + new_proj.permutated |= src + new_proj.permutated |= reflector + + var/angle = Get_Angle(source_turf, firer) + angle += rand(-angle_variance, angle_variance) + var/atom/target = get_angle_target_turf(source_turf,angle,get_dist_sqrd(source_turf, firer)) + + if(!range_override) + range_override = max(ammo.max_range, 1) + + new_proj.fire_at(target,new_firer ? new_firer : firer,reflector,range_override,speed = ammo.shell_speed) + return new_proj + #undef DEBUG_HIT_CHANCE #undef DEBUG_HUMAN_DEFENSE #undef DEBUG_XENO_DEFENSE diff --git a/colonialmarines.dme b/colonialmarines.dme index ef428f6aba0c..3f892dfd5550 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -2302,6 +2302,7 @@ #include "code\modules\mob\living\carbon\xenomorph\strains\castes\ravager\berserker.dm" #include "code\modules\mob\living\carbon\xenomorph\strains\castes\ravager\hedgehog.dm" #include "code\modules\mob\living\carbon\xenomorph\strains\castes\runner\acider.dm" +#include "code\modules\mob\living\carbon\xenomorph\strains\castes\warrior\bulwark.dm" #include "code\modules\mob\living\silicon\death.dm" #include "code\modules\mob\living\silicon\login.dm" #include "code\modules\mob\living\silicon\say.dm" diff --git a/icons/mob/hud/actions_xeno.dmi b/icons/mob/hud/actions_xeno.dmi index 4409d45a1470b8cef346d4af3bccf4ad12aaf7a2..1bb981218850d4d9e2e15f5eda1e490beaeea24a 100644 GIT binary patch literal 66263 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 ts>u$r;h?!($@KSufZd$(0d;U2 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 diff --git a/icons/mob/hud/hud.dmi b/icons/mob/hud/hud.dmi index bde26859a1599740d656f0f5a89fcd47c5871eb5..6f909a4d05ec46dbbe75100210b537a61b94307b 100644 GIT binary patch literal 21678 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 G)c*ip;OkZZ literal 30580 zcma%iRa6~K(Cu)rgS$Hf3$DT4f&};A5}csHIk*Q2?hpvU-5ml1cL?qt+~L5v`R-cx zKK&2>!%X*DGc{FRdwO?GO?8yo2YC!sQd9r{Fy1T3XaE36;=cn74*-CM3^T&Nrb4#h%C;Dhj6Ya0n4Pf>Rh<>pkc zNI$*i5>FQk0YwS6+(HX29lr3FfbM@P;oLPoXaW-Zf2{xYwS2Vn+-0oXEL?3ryW2WD z0f1L_af+mUKQ;c)bkn&CBTJ!+#GG>vL7jwu)@ayfqTm_rlnME^!5E(%rTdAR za^5@mx^ZzR{n zutrvlGkQj$M`GYcg2@1cX?eeiaTfrnf%h_!T3*?IJEP2ZgzD%Ou({!W8rJCM%?q5nd--XYwJU{7wb36P(&YvF z@=YHZDqMFP@?@ssZ_t+MePr=}?~k#g!RdXdi`pQyV0#rS>_@|^D zMS%aocbOleLfNwqS6N&4lMn-~iaTEK;lGQ+Bfo<_kQvVMa{E2ZidX_%tkwY-2F7;@ zvao^Y?z{>;Kl8C!w=ZYUO`)X+5{aN*Spp0Fi}g%1}d)5CRA?hlk@2d{&COv8Dx7){EmKq zci_kjeSK<1a~kf~?FZtJTC-8=fZNwJ{NtM3VMHbkz3T^6QVulRQ&G#qmf$bw)N&X2 z9oG}XcBwACn+jP-;n;(39gJILUhP9A|Mc1JJox`7%$q!25t3NX2;|1$8uofnR8`^!={IBW;?YzCU?4#np59efOJIdcP45zz$;lR1;~k zR8t2VY$c_jF$1kOMON{yy?@@z3uC5+Kax(Ma(K6ZdK#}2PEB`^58XrlME#EciSD0% z`r&IS?TD0A?1~xzh|}!@SImRuHZbyq%q<#Dngg$gAWZg@J3!%8;`W`| z%cc2*sUv?nWPTb}Mw0k6ywO1 z)bcwi!NP`Z-i(htIC4tT#LF%!A;&hy#ZreW$g7==L(0GA7hjuY4HjR1!|HIZAli|9 zGNrj)6niPZH-RUiiM+yxBe$dxOthUz!yC8~fh}bhIMa}dk~aGwOs65e217YEs?Q{P zHYHzT2#yA#Z+^2zM(Ih*Nh`**Alpg;=Zj+Ec||6~K_k5l4G7)tZWP1M+)Z_Y|&fOp?~)Olp9`6lrm|8ah7a$_o7CeC5gjMyU~~sC3w5- z>KzQDco)Hih>kOL^`(m#`Q@8k{85_|Rb~-+>J~?z0SXz;RBCioGFIf8AiaYQYRiRP ztdOv^UPNNzAT<2`$nmP+Dcw`?dtAP+An*ss9+iyd-UJ4JH0z4}o0(_Uafmed z;ua?SVeF5vg7URY0q~j@NhtM;sZ4GXU_V8w?*wOoNP{_x2@jUm6i?6@Ell@CwH1vMy1Vl* z9BsP|X1}wT_KMubuE|Gtm7JpGM!ldXt77?@mR1`KPE(JgGOgtQEC8P>9!>$RBbV+v zs^j;Ye|0+#l1N@$RF$)$7Sn>7x`DRK>g5`4+Rda910}l9_q~?@p=f9HJi)w4VsUj~ zUnGlgLI;%jVUNmk3IXQ9h7t6p2gnqFbdU{5zXmrnV&=nf^gEd~$qafW1qyb(Ud zCUGnWdK`e95quxD(1NoSrM$4^>j;`t|tv}=p=MR|ZV5cR>vV+$KsPpMGr@iAh=%`md$M!|_2MP0WB1Vhw`*_@R z%Li2nE3+Kc$s^=^rM|GBsJzCLopSJOsonO>hx?;QtxCvq#Tvpn{!81<^OIhz3c7;8 zEOE)#-4^#+KYnoimVa*#vb5; zyK?+KOua@9HH~fE`33?1K{o=7LN@ISU1HWq!ZvLGO33lkzwCxP+8$DAk;H& zD-i2VjXkP<4Ow3S{knkDPLfUz&+x-uL#V(r*kat$Jb(X+`1F(R+AxC14KW z44FFNr8G5**Vk*6S+oQ-Rdp`o&&TL8`Jlydt*lZl-l?zfZy(MGH{{wZ4 zv7tGCvXDe3)Y#)UHNVJym-m?ei0;f{vx<1< zb}d9C;D*w&CP9482qSXWY=PBzMhyK`-3_+;9R|wBUW{~-bUprEa2m<_Sd!_zC%Y9H z{9s^c}rujca*m6bqY03z1ab8MD^9lN^jBz!aGnFk!6IrGf zKdUV%ryEO4AFfcR5V6yxzPTtf)FNIcH3}+Sic8Nf7L4Mp!=zgKgS3Uw{|l?1irw+V zGC1+kc~lFhWiD3>Hor3Co*co;13V?Y=r*SKU^h!LV51n2S*j*15}(PX@rLz-_n9*< zzD|^`hI;n)2vGMDC9)4%jI&mu(}MoamAJu2BDe_#@U{A#czZRT77B-wtF*};r+z<# zjF09u+;_Y;`kMcqPQdOzRD|DbTCu#X=n%F4V$hloIU&#a6x3)(ps zDCfv8f+tk`Vb0kRyda}|3g1f`u?a&d}2ISkN+hf|^Bg7>7HIjJP^H$kMBsOY=1 zUmp&t7X#1MerxdlVMJ7OqURqBTV_K@i2rBj-oDNJP=X*762-(`dU>R}P_zSoIA1m8 z@WC!XS+3O;T1d1dFO*nP1`VY$Sg)dxl#_tA;JolXPsY@PxnDk+@=EE!<%io+?5Vse z_{^+gw(oYyV4mJ7kjo;{FXz&i$w|!Pb~s;7eWIfpnw*2@_eL;kz&^!?bQ!~P@)^$a zyL^K==fC?rbn!)I68Zn_n&WbQe@loNeDxik$#r?#Su@rowhTRszx^7lO=V5QFxJ%O&`)&Qy@M%ZX}+@oQjB4<5v#hEYi4_g(}Sizm0AL>}itR!H+DJctj1=-aYGZ^vZU<34T+qUMROTIlNc{o*a5PTGbEZboIXIr7rFynun%l zef(hWwE0qcwqce6JZ-;hC>7j!I0Jj%2$T*3o|6sR5sbbeVN{EfY&cKz2A+1-zGV?e zk29>IdliE)N7w z5i?V>yX;r1Cx86jSEyE+#3jAuc7&R*lp?E?*8LLox%H!V^j^G<)bF#3V5bv!N%3%Y z9Q^lBc zVa_jduMU6wj)K2uAf>+WNf(2Oz0ix{X|`&aL!{ar8Kzq_+D9_-;T`@YpMDRoQyHPe z(T{l}iJCpt0G*UdYQCJ(K6Wh#j)XlZy5g>_6XK#huV$L1R1+vV5-^Jk{2PVs%&@z9 zC!&p|_($et?!~)>4Ds@}DYBK!Mi-hWaz$0tgq&R*$<5gxD#&VQBcDirwaz-9lmEog zSSvEKAi(8*wX&gcW~F_Gk46%1j>}~K!TheC?702svYq(J5Y9Y`X1~z#?`c4FONMl; zBN7<-F@0r>Sb5h*AyEO;xBZ=&cqFP1+`w25t7AI)(|yg^c6XzQDPSMXJ4%ni)f9A$ zP=X$(q})fe-aeAs7uq#JDv9y23d)W0A-i%Bo*EYj)u=5=;h!@`spGl0`0$o9DhU%( zg$9>Auic=!LzRVn+IBw$?%bE*spql` zF!MVBi6dUZC?kz+x6t+Xh=ZJ$do#;ZJERrZj5m#FN3Kyz75q^FaSWKS@+8z4F(2O8 zC#<(Saf0KS9gRm{FHZSo)h-fusShKR*pA9>=2azy+l=4b*{?k+}Os8(_R8jGa(XLe?}lfgG*| zEMc&|YCoMu3A+XbbPjt07p?e|6`Ub%Zn{KguS;)ha%Qs!aRJecg#^kU+2*QnJL&O| zJC-m_#VXz5?f204KV+s<29Y`DrJk2+(;MdL&i%*Bstsa1P=Z=D-|&uMQkb`)(i znOyDXdp$;?_f0>uDusPJXB!cB#nu;1jj=-o1jMLbi3TQ5oUtVn^BOHHMA>5D0T&#= zNi@Lox;q55)BE1OjW;Fd6%{eo2RSHEfM`p%wdlZ>5Pl~U}J*iamIjG zgLl~nbN_>Msj=@2&n#KTwkN+SY}Y<~FF{o5*8eH}>#G&Uz>_F>II{F@i00j;lv6)n&M?&hqBCt%DQhT^YW^TH6 zLUD!Dak|0Dz}Nie@EYsFcw5z&Oiw0v8{WFr{6Q_A(qN~pf0^Khf(|?&QG8*=Zr%D3 zFUMXIh<;b-up+xz11af`H)a4Zzjy?*r-?zTz6c(x8&B+XqGsb#WXz0EBB+hUV~TN~ zCF|0?TTzwi9p$s@wV^lJA^gg!@9HFFp}==fSq_Xa&$@3bDWB`^`I1ufO=vH)A0TPP zv|(e2$AFXeM66V!_t2p^dcLHzhqo%kYCfS*=iNXU-wpHHNs8;8OPDn#)Q6WUJZ-s~Hg6(8(YqpZgR zsyi=9LE!b?c|R^gl39)1DBG8U$>-AGZ?iLVrxwlng3{MHHJ{4^qTif8>g?9rJ90;T zyz%cjQR!Qs-UyvP;oeW%YaL})-r(bR-^AMhrEwrA^}lrnp);(k(txcuYnUej=guXS zA1`<^IDawAqgv(j=mQ>~0r!n-*c=|?HaYaIDmwJgH`(;+)ZjHHrPfY+QzJmOXLR&- z89t$Nb2bCoNc*$)N9*c|L?Xcc{J8dP`ArYdlzo1GOC=UCtXQ)<%IUCy7mKMo-Z^Ai zHM5@A@z^-tV;mv9@aM~01}v#}AP`x(H*Il2<0%OVX&#Jhm4ivdCLh2Hul=>6@hbBN zM4e7BU=}h)*W+%C3|yF0Cz}$7S<}P9pzje;VF~AcsxAsyX=!Ocw1Q?5M@L6R#C2Qp zH?RN&r=(uWMVbEB#e^cwJa5hBxT& zV{mPc9zjT2L`JS46vI(oGI25B9hgO{9O+e!4NQB;x0-q--zTRqT`(o8%PL1j>SjzM z)x+W0j?S1FA9nQal952+^@KD42I{6M?@25Et9JExJ$%aBG~wm`Wor+s8-`;yE=8B@ML8Ji!i(AipyKLu>|q;vfKg zxz%B|1UHwCoOZrwt!M+h-%&O1rnd zUYa0%gx$_koH}g#rBerTTZl7!LLJL;=J$?~v26%joVYKXjQcQkmgwF|r1`o6YW|L7 zbBMNjxno`G+WPN_V{Ug2Ac?Ni6>&>ns6gIZLrXG`J!l@*~1L{%9H+PDHCt*i8iTy&41L*5_{+%!`v-ao;6~VS9O+73^DEA zo%8jp?9U#1&(luvs;p+}VWVd?Mn?=rDELf5p z`DE>>z6s!wist}X*>L~Sh(sN`+VkXH9b@zPou{_EoC7Jwfa>x+>RzEC2rP@0N!a8f z{uM-Jswi|cHddrN4&#!1xg{3QEiVG1okTpSfn@TRn>yEXIWFvcrn*CkuS8b{mtppo z6UUZZYf98zULlX4WNkvfWgT|c+f?|d;t}$~&!ayf!0wO&6caXb^HTmTu|8Rw&L}8) zoHYcmZ&;=z7}yEnR)tyKwPag9h`hoBsYJp@mlh(67xLiWvGg2MA6m}YiYr4gyb&dr zB7+SVXP5&0?By|-A~_!XIq=Q+cM)XP=U3xm8DZUJ=31NdUDm|+)m@xFY^T#YiYpcg zH|5{C{JbV`Sj&gh#25G@3e5(pf5)#!sLBMJsH6aVpG{A8BRfyEYT%Lo;0HMYbQxR*;`oYlSolQn6EDlOam~c z4G^JEe>LpS`#b%+y4LCf3vM&_7T0Z`4N|3tWlm5SySGNMtTGA3!9s$_z-;YC`P>KB zl$MEgidXf0-tm>a^~W=wbxAf6bS@i`UUHw1Pnz%tavWmv-VWy{*fpC|miVmmdVIT- zrbj~d5)AZa#O8jy!{`1%c2@nvh}ReSi`fG?*c@EgniNO_e4B$zwLAdrAXw_vfuGE7 zJT2>$sx;Hm^hmXiSF$_@i0LkH7jy9r-=u~oI{z-OtYp7fikIi?jQKCcFECEY*C9Fm zUl8o~ezt1?4sUT%E@)}ta@sJv22oM8w0vU?l$Gr|3Pbt^X05UR8fSLWx;QmA&qFB+ zhd9d6kkpW{5wl|>GMcS7-~04kL{same%(!jOW?r9Bz zJ-4)&OkQesza5U+CvQ3F1kyB z>cz1@WJqfJ9&*5huHKf)`uCuf0vLDxDMg`_#&?F!<$g&3Vw{AeRZc$bE%j5S#O`8> zpNp^u64FM8$7WmY3~p=Hv)iE)AJ6$U$vHv$ zn)HCH#!vk5YDlBq`n#(_P7A~7*5{{yq$>^}KNjnOON@hnXUFA=t~)1LvaJ1M5*>Z; z%(XDUL`A+vwN(O0UC6INS~Ap{eFS6#vOGnut70CYthyZ+JQ?JIEHY_lvYULT<%=C* z0Uqd~xGcYi1moxtuS`DjCbx|bO(la}*##~AhP-==;x3+Lp*cU?Q9tdthr1Fjix3+9 zlolQ`M-Qd-6GWEyleHO9AOWBR9!W^X#x_IVN<6ft_r_PeHi|O8m9o(Sm-SK@&%8<# zSS~%b4*E}0fE)Q8ec~RAcjM0s?Hm9?PZOfUAN~Xqi+2yqSm3^B?!(%{8-^>BnJq3+ z+$=u$9y?Wk1CMJY^umE1DB5a#aNA@E{$IdGC#)A_Czz1R0^d6e{Ax)sfqTOPdOb6x z=@RKvVWx$;NAd(N`)9W=#x_WrZ3in-^99OW|5^)9!;R=#D@xuM$+4B|P3zS>@+IIR zrY)=#F4^0PeB@)YXqHF@;{`;Aoy)vZe9~HdBp2O-C5}V7iQ}k(`c8x~dhgNTw z-zbsQQldshgaR3Xo#J#;O=4^zJ;txWeiPTitz%L$Cb6BR-*fMa=ZZc5vq-iwyp$myP^+@zluwm>O!bY?DrOdBqtXZ z-b|Yk+-~danRPbjZ(wfx? z8AkiByujL90vvg~J6_B(#gIeEVSLYKW>g4~G+>Ad*m9l)%%}I)JOU zO7gK@$K0SwtDl)@X5}FJ1GyqpdpRz$JYrs;^A3aOmFZQXfRWBGAfrM*I1lAD4A6RY zczk+JTVim=t*Da&m|+g=jd5FVUM&%Qt!K-Nw$9w_xQadE4EwIGt9g5?GGLj(0=yxa znB8SH&_TVC^&PawTk`q_indXc*ipiuONjuDLl%-p!QJQcZ4-nZOjvP$cVwtI{9)$f zfkr7}0BtuZeWJSxvHHji8@Ep!_HJ@YM zjW^3rbbNn#CHPvA{=~n8`+DPfB0+mAo!Cu;SAMfSw5f`gUf-D6eewMg<8i14k9m)q z;gRE!sq7XisL4MTIMsjTqe5%LW3P10TI@u25byNF@R}SO^?IjH>yusLax&F}+(}vtER5%fCVkC9iBKzdT$I z%-0mm79LG>h#l5zu(xJP#cTU{)Y?s&S&DG?GT8lmBV`b<&Q9}lm+A++L^r0<470SY z^m_sm&6q1DqPp*)cK6+l@?)zZ1w$qxEQR*=v3L1ca*O2kQE-{ZNm^s{UFYhJ%O?ip zQK|haX`=}y9-Y=%KUKL{yfzQg@$ack)76#i(BW@w`W;b1#JIDnK?62 zvg>M8rSH&Sz?9@;S?cHSz3hGBN09cR&!VnoNir{{?n}yv-J8AHC2&>VuSIjE`U4H^ z`(PVA@8U_h7(|Mj$HOGd?TTgSe6gCt@WgP|*Cf+6Lg<(KY+oBbxK&;NoKWXN6qsm(zAFC1FkIU2+u@Xc=w!z(d$uw}O*I6YZ$R#vQ`kIynQUEd8OHY z`Ks_Artw??Ig5HwP9cLWLT%Iuli$yh6f$ZsGn|VlA%S_J#mFQQ!4U9Ie z#Zf{x>&>+yEcty~Mu_Ltr@E5aXyJ@mKglGkcLr0hEjV=DEc`Vl7e0&@RkZ?3je8q) zqZi+IhpRlIm+RU)d6x`!dXs;v@J`#- zS?+z}QBbNT8yjMHWq`MlUV0WbC+MYjMJy>5L#U5=uI89OXwVHE$^UFKZ}|9QhXL(y z=bKe2eX{TpKbeXJ2CSmmM|_pMUM9U(ZC)Dx;Og}xYvMTCvP?aR_l*&_ZqVXO5% z_9*cSoz6s6GsmYBQp(y_PT*fY(}hE+v2VX{Q>4V~|U;Ty@CNxv>z&ES|`p zu$J|dlU#a65$$|mw7bX;_4~*+Sl7s!FhDE+Q?LDrlb*z_YEu-DDj=pLjYQD~riVyd zz8B~H0Q%-d$ViHnnnk{7!}uCKTF2~YL@l`J$Es|V^ma{_e&NeKISRBAFcdDRP9*f`4nhY8XcM+2D zEq^>I2ER#zo*eGb9#%O#3jqb(1P;`MrFBm`{J6gR_#Me>9w*gZ4Gl1lmoq8*<0=}g4A_b2wpaLXxg3CSL9>BSo&7zj8g544Sm z9kNLYW5>jbB4v;A2kG9?%ei8(A&SyJ?IARu+=S}EiM!Lwv_pj=M`VuZm?N zo1_+aCx}*w6!^`<8l}PC;6b|oUTQNfyeaV=sTe=gEx8)QR~&_D$sk`PRPZ>3VP^;I zIMJTmrT3^iu?odz`n$>Rg}}RrfrK&HxTxR*yl#`hbVayK9`Hlr*1Jy`FDMKqb7dG3 zk-Z<$fM1{F$ql+nz`^goO7D^t4)B*!+kO*ACG-?VOfZe9wSf;$aLyt-E|H2Ye+pFL z&@OtnQ&Rfd`d2f2wc%CaB6I_}NNx-nXT_MM)6k7j*pg5ZvvE+hhPSkj2+Dr(| z5|eg}%dnSn1Rie!RDBWwVu%>%Qn8_#!H8is`sl*x)PY$K-@pGXgA=O`8v2a;>p~8K zjrTFea%%Z?NSAHKDX!u4;45y8kkiUV@wXyQXpg##y0FUB@-ox^D~mpm+iFj=F&D$UOyUP_acb1^f4$gI-TM*Aj}pzU_Ye#A=ViM5>Rdoc zrKvtr@2^jtl({mMqKOE1R-1ddCg>;|B+s@t40Svkp*sZ8P)8p13`0%C_3rrPeaiJdtv9N$fYH zx_}J5xxGU0FZ9d>kb|oDfUI_E*4K0(6YbTtTT-nQ@aF3Uh)c2$3giAac6hj4( z2Erf<&wqX^S0~?)8bID_%4_&UmnEAiREdhxh>3I$rTS|5I(ZQX5994Yh*6ITb)mC3 z)YR5i$xODEQ#X=qL%Cnts*edc!z5ux9Lwu7cU zRy^E4db%C&DH}fLBx1bl`%o(Fxc zL%IE@ST>O)9W=(4CD8P*?D(7nW6SiVh5mJrAnVALk7OK<(sE1krq*3A^48+WeB?k5 zBR&!jX!vF`WxhN{oS^ISgONvLE#AAk5KD9v$S;MMc=Ce;hT6iM!iBNI(VOa^Mlz%MT9|{h3RL3 z58srPPaouUgk$ZgZO|o*8$qskl|Yj9xA$AKAO+T>_ZADidlP^LxPVIRlcqKToMgai zr12WeepZX$mZQG8CS7R9ss4 zaZB3pHqQt`gquY2eekzvM8C3ZJ}NOW$ec2ly@ARtgJO}lA>Q`%jrCR~DaX>`rLybT zU$t9hJxk${Qf8}+6jiL`1xYL+u_w3}-8sE&xyheIYr*3+X`^V#=~kytZ^`Bs-**09 z?vh!!(q-!|H6dOGYp+f2810-jN&;+~c}1O2@@}3+Sv4AVF%(x+mxi^!NV=hSH>%nF zC;-jT(fp|0r3GKYf#Ua!=^{iRcvbOTe0+0h@wRdTUkrP$JbSFe zo{xk|29qWV=V7f%`d)nR*^@FCZwY*9SoV={B;vGZEqG}L;gB4uuevY%lQ09dFI1pL;O5P5knkA?YmG2w47aX=_ShOQX13wEckuZm)X-OZFDImXE*77ILJC zhD1`^d4f2YecU@gt4i(?q5Ul-RML1TCnBSN#1=p2nt*9s#ZUi>wVM(N()lSYwnrAp ztm)O}t%)x}u>NESWqfe_goiR630cQ~&Tq$Lbe{clR&M%88TqLx^=8+x?Dl2S5dHDM zoE=+&`?W6F>aS{J`vZ~a8zIV#X(cO<#{s`GU#Ky|Mc96#m2w%Wa+ncbH}gXX$u`wL zu-OoCwg-S*B|6lFe)RU}S3gk=bEW$?NIOb&Ezr36{2PJl@I2uaT_w6zjzD<}BN)dp z_gBFggV(e`jqoH=1quXl1mw%5#S86@?1`2;fiZ2M>w zA+Fx*EaTVn)tjapg##Nx@d~#*x6Or)E4sLhx7fw1TKHI8H4BqDE z@(feLz5m>)y$HwfX%ZSbjmUbn(PA)7C#7)1ty4o&gdiT*xgJq~^l%cK$1wuZ(sjTi z-Z~)2FzKSdfOJ#BBpC0m(soMPx!&>#Y@PkUAy={UKvAb5D#qN|KQBMP@Los{`R7dE638A>#F~NuA71Xk>K4wz)fe67-D6@@dDX^k* z*a}+B>{k3i@i1%$x|n2w4TLl1ytM5iBZMz^M|2nUB(NLL;5`r1GNfz5#l(`xzy$Nu zSse%@PjjhWX?GnfUUYUNCGiMMKUJ$W>Hw901J}Pj&@S*)q;0a%Mv}s{8P|#~B4zAXSF5=D}SoVl0EG`HS!m8;mF$gu0Gu*Oot>(BGyI0L5{7!ey zznYjD_vHqo>y1aAwrR4bD@gUIY-kLX@J-oh$6ff=gXk5T=@5PaaGXd%=I60;3vpY_3ha10jL^Q#UWq*I3)# zztE$v4Bx2BEJ0v1A0GzyP$XSM|MZHcc9TnNR_-6td_A@gje2nf0Ja8sbD7L$I~{85 zAIeB7^6MA5ua>@<2oHjn^N$RH3F)-yI@ug`jj$UxD=3Fvm8_YTpEMk^xD@Qq&w&8m zKvXoQ?(}Uq*Wz$YC=E2@u&w2TfH(h@4(@%mr@)%lzV9KXh3ed71XgRnp?%5ne#tl!3_VNqr4f7}#xu5edRBq3_Uxa1!u zg9Z4z)ZI12!_*1fv7U-7Pej3WzGy!wZ-!BjU7dGCj=bAc<4gNJrWomSTiWCBJl30t zx9#?f4g5L1ce=As68j9UcLlon?dP{rpMQyU=6(ES#wty-m3MYDKTT zFGQf=1#e;CMi#{|Nx#fe5JcMY@zDr1`-^_HS$xCdr8o$gDg>ZTeiW{(2@cAKDl&YK z=PH>;W_POQy(fNEF!YP4e3gq2NFnI?5}@0ruHrbGrHvwCk7JqZ39?}fe8UCkt`B7| zR5V6Ci@f#eCY;3T3seHsgxu|D_ym4((lXV|4bLv4Ci#Xe-f;!N;|qMm14$S6<;#&E5Jtm;))fH_ORk&R>>*W}b#=m++E zyyWSQPERJ^g#?tP6$Cd}aar_Pr1*>6qyD`!V!PGw&M69ZN6v`&2}=_u-ymy_!pHlB z^k+KVo@l-cCg@Q6@RZ;jc^sHi$wH7lm8mBRCPFP(SKX6m1=?+B<={{K=s)%}uX{lB z(Y8_R;PsQ3J0hzwe0*5tGsY zg;D=S#Thd4_|`T&8BUnVr~x*X>`zryPBfcY)wS_KC3F(6k-o3;;{QxB{P(axY6G?E z8%(%`4zY3Cp8Ab#abn78sU3ZK;_-TVz}!V5{cpHudnMyr!mo+wqV#_}fvu05`Jdox zF&lC_`Pw4cPPGsd7LH`bwcF1ui=2=tYd|^`LC9MhjL^ATQBZE4bsRO}aPRQhx=>|U zELS|>V{rIe*jLKg0}EW%?dU$UoSsK-dTY#CM)fo$OqzL zRMnNsYY0J&9fk-hEcZ6<2)SZ)fc3?T4< znA2*seOK?Tj4G3=zC8TevHUXii~a#4=l&Y zKKA>EI~8ja88s=0VI+WvJzBX0rnYf;%VU<;Z!*nzk|5e|R(m4KNp6KafQ&)SQ@fph zl>}n=fFzphjwuVVibe4%Yu_=Ud!QQK*&B_5#QFaGH!JnHJ_lgL?rcjuz`_1km1X-b^&_rla^-Cl#oa}cwOZ)RrgTOM#x;ks+z!)1h2Ta_KBPC| zmfF9Nc3$&>)JaJo!xcIn)hJ6UDjr|*zAzX&-3qmd+U6d$r!*IHrDlJz2mh7Jx5^+u z=J+&RNH^JdyKBQK7aUpKK!TDf11PmUrt{V>>m3>e@>kN%X7Cw>K2XhTVVVub`PqqEa|t_3A4 z*LP?sIEj;<>w7ypVJL6qrQC^_HT-RTr|&W7c3%LI17r}2G{0=@V*?l?b}P$YlEZ8s z^kothzFA>Dl6Wk7|Mu;#TRN~BpDcQ)GFclzt0(d*i#(U)I0rRag3DINkY}1IzWZix3i_An_>MP4uGB`I z%Jb%T)D!l<`mXWX)i&DAIIvfiO^cp6@iX>`5=io^wt{VD#H{U>Sq7K_+^ifX@!)Xm z0l3DK1m@n8!|jqJCHCGXUmHYaNRu|m)GtOxAWg+h0(~lk@qyEbbApx{aMymudtqjO z^ZitxAQA z)*gn3O&kb!KXZA06C}yG3%`5fJ%Pp|m!d@U?+=ejBc#FF@8A1oB0L<6KdaXCx9@^? zy>Qkh3ZOo`wO+HArfvcgQ~3x)!aek|RoqUa&2QI>u!^v%o2gWIFaMHw(06JA!ErCI zUA|-K*nGacA48z+2upG!_D`wUF9L!~E2;Q?4$?ePvE3V7dssq;RwzfY(s{tAL~srh z+|PK*T}+Ch672m<0C3E}P~v6zk1eP);QxP;2w5ujU5g2)e$An}>Can=K%cHb_n|MU~9V&Nq)g-m0ZjJ%lAeh|IW9wGu%*00?Z=~k@x{b3aQ0W z17HlEY}|}FL~jp=FpPg2!d^>dNZoR+Mt7?3o}w=~5Uw^KEN)E^R1gwiuP?s8i~Sx{ z65{<364ak@{J!sqQx84P)eB3n@K0x3UAlQ73`*npKWbX+w`2vwrD#s|+8Pm8N?J@5#ZNFUf)1&-c`=9{vjA^Wvryr3)%2&Wa}J0 z+I4o@=DJR=PvY?oVsQC%5(9BPMiLMH=mNgnlomh!P*L81MIO)~hlL@^eCR`_Ts*07 z4fJ-N#45NtZgT=H>(AF8Z9xRj28@^vS+d-Y*h}QgCZYi?lK|yN>)X96+DsXHYu9Na z!h|W3RC2vgx8gl}QFU^n3d1_~nqSnQQ2JJk8WlP#tGIOgrtxKda@T8f#+Ar!LoB; z+)r&&?q2Qy%>m`uAT8YfSGxz@40FFpQX=2|5g-5ktTqEPlHMmN)Jq>)il@RfXNJ{l zpLhnJy?u6~_wFts_Ft!ljRVarmABjf(gLicf3%t8y={^iuwlmt@(-GK945)9&s*J$ zz*26FQe)$-jOe}|>#t+QG$d|R;Rx)Q7BTBfP=)^jpFbd(oxPX)P z{l%|0t?2n5`_kvW-u$PwNn-b?hj`ey`XpQWKpA6NC(|H|K5P*!nY?=LKsXIb^Sz@C z1a!M5SqFywB_hn&JQtyL!&6Z*=~wS)U;1yn#*_rbK{3rF8xxF~j_mg8Z8N6-duFyu zaa%2!F%6_=9FA`2$^$sskgT}G{_Lj4hz2siWZ1jOI|I}{Ie4NdlwT~mw|w=|OwhuR zH8t8E)9dplZz(;fhM`_zKM8(|Xrmx@Wb)3dwTd>_Nmq>vB_f?0JPzL7$gGy>xH>aP#F2Zw!+>~v4a)&8YL zn=CW7u&1k)`|gSvklcMPU;`w-obK#c?QFpJd5Mkn;c|1RzUj8~2k}-bcCda+wK;V{ zZL4A&PZP(`9h@=ds~79n$-Q&9(8i@N7)by;vQe)?QDdh7D3M5C&3X(KS{!{>>aQ6UdrVV82a_-gEkWJ^tGK{P zEa1>htRql%JK_cL6oeIXfPk_@sLo15Xx_(bi|JExKf#lwH|r19`xg)g0l;1SI!s=u z`xp_4f&KWIu%V}zw0{wwkz#R-@#LH@KS7mYY2FB7)qnS9)^AlMGJi6IU0=?$Saw;m z44A%4!tD~p?pA1DN(fAAISDrU>OXVz;fS<+SVHgls9s!Lt5sjH@BFr|QOi4Hr5mW2 zmB}-_xEPkrkpHRr62p!eCQldIo&8~{N3+HHypAW2U=O|yLqBnPh+ju@WtTtE>$F(Z5_)H48$di0kyWl_Oe~&x%8JPU=q0`_2?Yw?IrKp z+kC9a60431T4gc19YW;mBaI0xzIs2NRw^rR?*{z*f}M;)A=4=_6~G1-fP@3MXdr;= z&o->2`Eu#_{@u84e)T#D<`7ZPIQSt%?DNx&qP0HB`^@urnJnwB6vpjGOmly8&lH#z zuSRT=%qiL$?9Zd#gjJ=s6jBSyFE-NLmXcmiuh1kakGm(?|D+%NU3Xkk;H;f4CBtAT zz>;K-6VvgOYp*N8TNMN{^)4g`jM{reXtWCbaCy~+@y#d@{UCC`z_#u|TdOW2<(aZI}JVQLs_<%rr`P69L_Gcid*Y72gpAJ9;j7kEdt5{(NrwU;6kUqu_HBKebvwzRBIClaE9#;_>btuKNBV07 zYLG3IO?c_myXKa9P4EuSfVB?3<&zmAAEHQ8ma%o?5r*V zCoLnAnm+s>v0O20QKYQ(ju&uM{swT7zz?{wmrO~->pQgS$ab2t*2}M6ps*I!<&lyL z%nY-=e|_@j_O_g0^8|^xrd~jlK5<#lZ4f(Xgt+rVe03-!MWKk!2hTGLV>Sq^3K2(pr zC~&XY`o(?=K)=q;qS;mBSreWG;Pq0ltuFZSVbZn=beY!)84BWyzJ+I_VMkaKirZIh#e7h2tFNsi+-V z>u=aG;jG!e%F;u>sncffp!Qlz`8k@ka%-EeaiC4^K|{Qia#ZJOicWFuS|h-%z^qbN zO^!*}I2L_?xdsxTb9>3&IY^H6!?qm%$eew#FvT#XBUMuss5l@MF!;lI5%mFEa048? zX?Fh5H$LHJ!zvQJyU=d8#VAiXBIkusRZGV*rm&x9dvU4`eE+@xrOx<`L*R4ZX64LBR zsD75J%1o_ldneiZ2tXlT`Uio;Tj|EAmI$hG2lFLV1ki@Q+Blo&q zFRh`0dku)b-7k>ZR_+X@TerQ(eD5S?Q3Y%lt9g+Tmsxd(IKwcUQGnnnr@&lK%1DV% ztSzNb+eAL+EM7tzdHaD?PmnA1U?f}Xp3*9&(g8G#RPO&g_&J!rc0PoLY2pvgb$Bz8 z-nD<-reiaYJco*C%qz{6f4pY()K_U#Vo3h@6yP~YD_0v=oKafmHmSn-)(n%G*9QF- za3Zx#R)-EFCz8z~;l}b(^72T@9()us@kL)t{P1mia((s+!gE_pZJd1Ff!C`-5Df-*3hJg8U zD|0aqD{8Di@{cyOpF zPz=`uG$0*(YsQByHneq%8j5--G1|#PuKbTC14O8qEc~QIf=n=Gp>K(Gb0&C$aA*bm z%&qFZ=~{xZWC|!w+ADdToQbK*1kQXGD}|~UkgCqZ&H#STgGO9x^$U+uZI$1nT2L>t z(z6d+e{N{3T?Y?YzmJ5&xg7Lj<1hBJk}Qo&>eMiSihAz^f`3r1{!~4u{5YSt%sA;B zW5z%1mg5_9w4!TpYlAooR?M9$6G!l3l{!I{bAy>H zhKrQa)mEDIEE1~@4FnYR4=A(p#!yBUuimNXQS9h3?c zgJK=#Y>7oHFcO0CCag)I9)SZ8s@S7Fh%RPwT(CHQ zomp#_xClD_;>gAEERBjZLDxM5qbJy8ZsmpQJ_d@4kN zGdUv%pin5GuM=l}0~u}Uc1N*tdrSz(U>yAR)a(E{`IO8I6MUs{J?!N~{aPX{Al2zl z`iskw8EHQHfxv1uMr^kD#+H>2ue^naHg0?Bl5El%nCe$W2dQSj-+sLjs#R=H%*3cN zdFZtFK>jws%y$qrhTv(SN4OK{7;vIz{LHU(FFAp&uOx$M}EDCOZ^n~EAe&N zo3Y|AiRz)n0ZO57F2bH{dupEZ&o8d4Nrv#r#b*D&pf>S<&*uR% z(WFM6_0hy-wmtN!A1lIuL~}NVzKsD--)+RP$cB7d*^B{_L{s%hHYrMFsvPU)e`3XI z5tNE?2Bp#f#KA!dy#Q@KkkNU3(i^4&TC9jT`ARQkxTcM zuHUMy@m09>6Ih{<^Xx@93eLnaa(4SrL%Bg)PoraVuQJIC$K4frv+KgK6I?5__^`g< z)3K40mg(_c9mI@6b_oi^;SDoxJu65Yo{a|C0uz8OZ+$!D0}g;q9^B&~im&t~ADD3f*?E@h3-n1C4AivQV{xPwnzF-T=(F2&8gVd3D@(TJUkWPJIoLL$E}TIP2&Z~A^AO3%KQx^`6 z2zGCb5N(3D2CE}#PlPndvDs9dULUA1+#2CK+Wqe1!F@GhO9N=Y0O{IiMMC>sfUBN6 z%SNswMtTE+Cb8;Sr)BghA0eG~cKR_6=zFemU3d6IA%#$nmW$a;>}R4M z1Qo+3heyf~TPF^>zvB)-N0wmy)#N`+=I59{zZok`a5-QV;y6fe2(An3eZ+OKu|2em zZ?@GJh{@U}Pa!d9re?!!;MsXerTqCa=;LXD6TZSqw_oc0+_J8sMXdWXQuFS79n7*i z$}t@(k1$@pfL`ZE+c9I#OMAnUC%7DvEWKVagg`PA+wP0wjFZ$J(%jcRG{(&`LAaoF zX}gtDDq}2_(IO0G(ZZk2{&k#_P9EjL*KQN7MLgH(C>j59xbS5arx7Vijgn*~dCJ2uNw z`oKcu-o6P1fb7zvT5KZOs3)A7^TJAF9W!DWL{X=R7`3zs8RCku%%l|};Lq<+bnAw3RBBvG+||qWH<pbki-|YlY(&V#*ZJCy>r?XAq)$E%3N{>> zCYwe@?|kKN%nS0H2K5vYhUVCVv2d(-pZG+2XWbMj_U;t%XxTHtVfNGe4nMECv3yKpXQBY+`YAJr) zdma66?+=1~#+>66Duklx{#m>>uMmS``%U(bNVbOvUtE5^2ZXNk!0z_wHRnErVZO)a zb}gA!NP+o#;sCxiJL@(j6q=9xbAft|Tr|j{iLxoB#DkEP@>dsjyB!Fn^W5_Dep2dDWIZXh0LL z$$iqGl5k3>Qa<{%y)C}xkvntOdKhQsNROR_UeoO^}CXk2yH=r^^cu#^;{j$V_d2 zYq$>N_T%1N`1_{8Ik;euD=B=*f~eh}bKpVT>Uq!9K}j`Z@|f{SrOt5C3*j`E9nF1F zR@@kVK`YDt&kKERdS7gK`y&>$g}Kd}6kzQsDzqI5AjX(H;+~fmSXX}!J|5mIhPvLy z16)di7hDDb`#11)baDe~5ROjNo;=6Zmg?3@`gE(}PMT;Va&AcVMakF7v@6z6f<2(g zTa#sH=B7&rpVl2Ri$~{bn1(M-pkhhDMI^N@waA;(wIcs1hNvMc9pofuB!BfMA=4E1 zQv5v!JHFRj>`HLZzV6A;;VBLTvs!yXM++wd+s+fFvGD?sc-2OS%tqf8ypj}g1|lfEXP6kR0y zN(UZR2qRCA`^vrZ%UfU+i{#G{lFGX3dHv;sC3-MwR5AI|XkeCl^_7*Rvv65b$V?E7 z74$Cw4nw~~-);L>VRklS===#ixQ~$x`C0BDS<MoDepcRMV4`|Y+8UA>n|HRGZE2D=335ygnBN|pnck5$P29o zn(9>p^_OX&KVRlIhe<4J&n_P~9>|eyQ(kw!Dlibd@z8&K!FB^;JETsyDkmFrLTsNR z1_0Wc3E!3CPWV$^MG&t${j*H~t$lev=0H;O$)bAul;mr|);j+dUr9>G1});ydHoI9 zZIa5NPn3*OHMj2imX;Rkv%7d{Z5hUE3j}X*L@|%ucnx}#b*Ol6bAEq8{En|O1~*M@-|yiKkeI~_w-5g1&RC(% zj;|Iw0gmC=h~e431WBM|B2(wAq53!7AD4^Y`EdK>v|HO~y#H7N&eJf-Ze$(7x7}9& z-1FlQ!o^y6`zwcs@(q%RZ_~1==6ZLd0+R9PJZF6ohjNHB*IKMyUMkRjXXG-&Xg8N^Le>nFn@*UVpyTk&`FM|iRH==3RChYUa}^^Qq>-Gs!-8Qy$-2js0-nE4DL7x~^gvxqYqdat=%9X9*?Q!PXL<)J8n#=dx7?zWxG*^h(jJHvxF zbWT|%rt`s*W1ZhpIEETI9P`efYFFVa(|G6XFPEroP=HLI*70qhVMSFJ??T9t=}Xa1 zyR3CLS`Q85#2hHLLwWAOUyu$Y&zGtH^MPrs zm?Zbss|WiUP#=UTj}i5SgKrUorg6)rl0N)zz>e{!Cm|0DT$7)~)pq}*@3MH*cPXm@ zjE>6Ky?<1?nd;a4l=j)mTJ9ncB;WbcG_^&rf$hab!UCrtYpk363C1&QJVJsD}>9eNtJa#&jC{^kJ83iwsTCzpW0v zf{LifD!3jvW_%4bGJPh97u-o~cK?-;{f1#ICX~izi23mh;ijj2wy7)zbl1_5ffNu( z@rc=Kd>KoU^r1HF%+beS+F+kP6l1vGHP_I$`q~$>y|*cA)#y?T!R|P!+hRaHG1=~} zG6_fl>Wa8(zGHvq+B6^KM-49YJ_frFnksib`IwcHh#ioS;UoBOnyf8#J9b%YIF;7w9=uq0kzS6KUz=xHaT(0Q`mXpzCm0G;~s({`F$a% zwAq@SnwFbhKfd%3b@&p55cmO>Lo?c}N+z+U7;G+)`K3VSeEGH76@~|b^#T5BvT9a> z(h*nX;U$&(=Q^aPS-;4DpUS z+q7KD)<11E&jyp)+XUqU=r^SC>8fZ@IP?p^zG~u2OYJ!oSm)*c{maU!5@%le4DZwE zf(M5QEPZ+U{>qvnc|EfCTvE_uQfpF?P}9I2y!qJOkAL=Kp*+Rx-E%hbNF}-!6pOC3 zzEeebZmf*V6%0}39gLg>crnvzaBT!V$_28A}AkD^O1qiIMU`OOh%?1w>*|FDX$A0LcAB6 zxBmIGU*3t;SCAYUY#8j3^)D>={u|gdJ@xD((+yltnD&98EItb6lE(bN>wG_FTG{XK ze;N%npdKwA3gQa>g|}t8-dEuHcJdWD3E{@OqvH=qK{$vZ7O;#fFYLH?=&##}FM^CUmG=?#>8)l$)l@WCf)@=tAB+xb0As4Qc8$I5*%e)Ig`dH&2aeJof0-W4wALB}23 z4Duq~RTZSOJx9qEoU3h03T-*LR$jyn#rv$<%|Hs(`thfho|NbUr0f(8JX;=cvMwqf z(!7@q9?y~X{biM$R?#;z^XoeDF@*&6*?)2bJm=XZCaDe2;z_8hsE=cOo)rW2K7u_J z1Hh54)zu*KExZ+oCT9uhgOExRUwY8HzgkRF&j57?-uV1lB%_q1z>g+H_9Zra(ui$P zM>oz;bmBPar`~MtN1v!!5~!>B&1vR+WW7_^Eb&7y@V3_f%R&c0GgVp>aQMxX%WvD z>9JgY$?DlUn|8t-%68Z^&g=_bdXZLbOIu23fzcsC7~?Iq|w zlCM??_BguS>U%x#Ei2LdH`S%?gF}j|F~QX}4?bpaACW#<@6NNS8f9Nr)AhhByETzZ zE_X5d^3e!9bM>Xe!JcaXGpLuE=Z`M!&4%$B&1YtV#o+$qKB58vLE*VfPlar2Y_vW* zffci!1)BN+wrVPCtSDpf)+(g@sTS!Ug)K1`{V_d$;*6i{{I_~?6-zdM z+AL%6TgT_PCZHa~VZx?nB2HN0&NO1&I2fmE(8@0^MjwxP>ZVQml6^>Ci&(Xq-*ghvJ1^u&yLk;|4o?30T; z!DqK|B_D?}&}onI8PzZxBUXU%DGo)Y>EYt0-TgXrlHKw`-eamq&)!Tw0$`?C{h(Xe zv!eroKju)N5iREzG%(fV_-~0|`u2_6zURS-FlsZ^L z=dz!)@KrWvLF67Ey2yx2^(N6wdMyzcu{-#z{ia)ECC_H|uT8-lUUB=dau~13(9X=0 zy~wh%rr}KxGwpeRjdcgPFnRU8pn1@$*Cxa1E0M1P`d?bUtC6CmHC)X!T`QzW-Znc^ z?C74pbpZ4|QEu}P{PDBlhuL4lPo_i^lH77iFVL^LOj$<8=J@$4FUg>Tte2 z{Sj%ruLgne#G9{+52ezgD%5HX)eihPH9r|;;E^}^+*Bxbdl}hWaY6 zAW-zgN>`|*7VfReiQM{sdwZRr{`0<4ly4rc(*j$QsACbErKeozQefY2@+5t>-nP#; zN4#fWoJVb@m}9n!%{X;2aos|Qx4eM1%C*L=PIkbz^+dI!66Br(jnR(1P?AxA_Pp7h z=z}XY>=S&M=@rLknJL@FbRYkYL&bZsE4Ewn2~~_)uRg8)M961>*UR_Zpb9yFc(B6XrN5xIudv zB5^Gh{cP_wFhu#Vw=bSr*Hccc?z&Trw71g%xH{s}Iw!Fl8BR*|wr84tim z8)a(zo>Wo7l<<^4@Uai4=g~7<(S<*+smP_mmtm7}@oQiJUk3d2L2KJ2HR+Qa`FY+DWwx8SOamV88Yd{A8ioG-JM=yW@$%N!7W4 zCVArA8!tvG8m+gNfrchZfBNa}^L>fDecngVN*|x;g><CE0w!-p8_FhOVSccGa?awNGh|l z8jskuVnFH~lerERbusta%b(^fx`W%}iy?N!#B6f8Ye#~C3(Lfk49Rh6K1u7}Y+igq zK4&XJcal9x^ZwRF&z95*2T#h*N}^f?VN6FsD3>&B69!f|XPLrF_hP;5R_`a0Z^%Ae zP~ztdi`d=jlclfj7O~}{{ankHP4(PxVO_;x$X^Th=CfnA^V?CPY7Fj^mU zalCzJxUom3xDoMGy8jfjG*r9aAs?N%*PH{YQ5KylTk>Xf#l^{UF+57j>!&SBcHK`s zIfL3biKpK^I>bjZ9uu9fyF|IBZWe#m@oTi#bsDQ%FGUB$Quu4OdL^vwo}64UWVFav z#hd>7)rKtvZ2LC{f^RpLg;)sZ*^Fpy(PVrI7S5c||EU+Y&KVkHg~syg*?jk`F#N(A z0tmm$o3FKzRNObCFipA6Q>+scj4us}GI zJ;N6&Yn5mPI%+siBN)Lw1fFPGzL222vP>m2yJou9di0mqtSH;uMK;{#C+^tKDs*hzQtpS~B*y?hSAVbJhF_L((yC%~S^> z>V6}A$uGEs@Mn?D7GeO4zN`-2fqw}xE_?j>!nV#Ywk+?hxh|MH!TwkQR@T<*r{{HQ zD1BTON%fPvc;yq)17yJGLlG2#+pF-u|F?|h|D&q;e<}`6b!Dhqhb#RVDIqJ4xI`0S z9iZR5afhcBqRV}sq2b4E0StcH6Uy-0z)}<%;Cul@T&UrmRkc}Hpdq2Ga~Eu)p%dN_ z1Jd!}VZ2lHJ`{bvMnYe_k9r<4=Nb?B`S73|mxO>y;-``|Pm%#x>LZlsgEDt1zR?U0 zgIVta9@a^qgOAC4R(mkoTgWJ3h{vP=t1);2?`~S_RjSGUeegC(2UaklUto3rW%ix;BzMjVyH297H0js9>fAiStJC{CG&|Q6zZnup zaOr*JjXd==Dk7NbZeDmh|w zoV3lU6jsZJmW_70pvjh=vkCHoCyNUTwEw8I4Y2^^9NAd#8#HlOM+ zB|H}KZK&nt;}Ry-g84G#0~S3gl6iLe5h-0y3Cl8@$~ju|J6+5#g#|I(kuPVG-L-oH z4xpBv|EE^#|EX2|Uu{zf=OmyOElamiKC|4}lk-TM6r8J95XOoy7S~JGdMqs05<@>` zfwM0JDQjNYNmUh(SMWb5lbk>lq_MMVuVVh*a}DL9(3rSWUM5^d3ZB(+!c_JY;48+!r6!in6ReLq z9;+k&)`4Lzu1%v2t?25$t z#-10bnoM+MlCF6-+i%4FQBw)VDea`kE0KvCKTTyH|NBb6>v9O8-?vU5)I9?31KYof zbq(v!au&N(ZrQ&Hd@~6~jKi@eE&IIKi+E^|)gyT4ErSzA^`YRJC(0=_NnTVQmks=> z-TeGJp&tI18*P`$Gw&m=TP9%nVy=~kXN=&ry7J9^iN_w~ocaZM)9C>3nUKE*%ae4u z_}Z`Kw!}9BMwj(Xx2Y!UKGq1$?>qgzyav2P9#1ZNTr-d8Dcf^7Mc^S6{ynJFNglWd zXx=J}-uZyEfBD0uM+_8pP7o%E9uVan0zcZ03;M-)S%a)6c+~!E;8*gt!K{zqAkoTo z`Av1Vg*uS=4@T^Av{6~#U|Qh}k9WR9)x-PNbpQUg>?E^UbxPg*9{ zv?rCWZwez~P{p2Wryo2-u5Zv6aT}bBs1Ne%1!K$q)-N_8khO;W_<&pV{kYC;E4iPt z-$6PX)$NsI?6HLZcPx-~t~6-F`D__-zJvFR?Gm_z2es_H6vk)1Mex%|9c1+oUS!NKMp#PFZ`mUnPK2bhr(A! zNJcF_w#ylO%3{M0N49c*6O^sP>@r>#;hBTbvX7y@C4jN8%Y}8cA?n^bg81(9<>Q<) z0VW7WoyQ-s#kZ`gSjVDh2_83^I%xxx^e=l)6pBBPfUC%@FTwDO@}qS$67m=T({Of? z7}x0QvRCbkk6sQmf@>*Q11?1{CfBk8g#DHc+8?Ga+gtISWv-jP!TP5CP)ZN?u7CqD zykl%Xzf$h+rpAN`JL1aA1k;5GY*z1wesOoBtnuvuj((VXJJ}f0cJii59szE9@LI;& z9MU^zSLBa6hl9Iu@9rUFt*Z`s&Kw6Pz7YJSM@xXFtTWf#8&>pkSSaXG%K$;&4l1J& z)gnA0($h{26Mjp*Xl6u{Zop$a_4As?x>tjdB8ecFQt(=?bz8%or%)A*23b=m?JLYR zW0v`S@N2H^b@bhWGV1F4HZP8{UjwVma45v`qrv-?4qD~P%Egv6a2&P@njWkO?vk5=bQMC|f1g1A zYN?@Rsy+;peUGHPGYOP!jc5aGpqGcq)&p74s&_`Q2eb^%zD%*ZVn1&0n72ff1xX&A zWCTk_!2T8^-~`HK@Yml?$QG%f`OGQhB;4%lg%d!u++VDl8~Y!!XY_SF=0O5=3~Z)h zBv_6bd?nz+1G7i9HcF-QW2z*_7@P!v}{SW-Kl}TiWN{Q(sVV~=)ia!D-x_am4 z>nVBdpie>e;H-0SbfWW=3jLqE`GF-eb`Ua9j?dk2vS4;~+yDx_+ytS)wWW{SuCD1l z?eNtu@OmGJrjszdjv&FcQ(O#EE(ZFL2XX1ors9pz+t2&t5d`ut$%*`3(f&d`sX- zv#Yq0!Hu(lzk=r-7nf$B!YKdNNgI;smw2ZU@0tarn9aptgga|XiLei^g~Z(22oR-S s6x>U?(_v|u`jMSuJSLw70J@^a92OTpWi_?KO_;*PJ}wjRZ`#jYOj_%0&I%m_dN z09ZBlP#S~t#3q70i~&r-neX(mKhL^D!e5dbL?YUU4%QOgDNNFl*(oWAllj0~JEBM` zR6C}jg_$(5ebGv2`M~>~^j6kC3GttKpuulZBxJNhDI(5?kKij#y8{mOcUouw2Tl`E zO`uV)rWvSa9vbD+{UoSQEio#lY-pry3wfmre!kOw56#j-EgB!1HHKQugj#+N zwPpzWC;oW2{QW%snK~K*zq;i|B4P~srLW-h;{1Y2e2S5d%c)@y||POxO(ph z68)iY9{}!n?91^{Z1X3QS>)=pDL56qI3+b zW8BIj?_snC;he`Zh)QQo!M{HR|AbTudKdA!}@$ibiR$ zo&h6Ikx$T{nWF(91ocOX|CRg^<-bx~m>9+XmiOhL=z!pPQr`JaX1A&nbq$FDrC3k` zl;YUB%^dF+(rT_nbyMa7Mac#ld_{jX3S=tUE?$9<@sE;(rQLbU_Z-xU|76@D*Dxi^ z=zqlFBW8W7i(niT6*3f)Gd425?&ogy)OWri)N;mmdHUhUGp|JED;RGN@K zI+<(}gXzr*)=?z>%iw=$ju%aD0&{-?mu3x@_L$(%Cvn}+;-l2c`r_J#w3ef^zTS1x$mbsMrM?z=j@c`ll&LWaf*7L7WF(LYAYg+H!{^ZG6Ua~@Ame^Zu9>({#$cY z?{I+;)EwnIT>qgtZ5ZZjpf=SAYJdJaN4Zgupgzj<|H%LVXp2W`{#i%#4TL5QBqj}n zjE&^}*BS%1PKs-fi-Uws0RTn-ST8J|@F%CTiIEH+Nz2Hj0j|uv1eIs_!vi-zXshmpufK#|V)3LYTE-%$hJz^Uj0% zIG{}f8KOSlMZnNDDvqU=!%{2%E&iXSAR=*nI2ivK21GP!1Q`|o2N#H?O-vap4(=rX z=i$G>r7r=|{SRDNac!)T_WwDi|2x9}rNIA|0-%UP$iW|-VjjBy6ek4%!q>2gX!S#J zoUPfR>^&we>J?KuS&9sz@qcLtxWRrBzsD*|QA`{!PLV@29PIpW3lTuy2ODxgV72px zt@eM(HTWTiTGYkFqaiL(+3^tP4smPzfB$hf0Kh?r031O57W?mSDo~>W0I5VfGtj>#s|t7CGnlc?oKcD<#;2Mo=V&IGCl(*}7j$ zJp37)H*ZwFGZfrjK(Z5@lU>qDLy%n0sZRqya{+CuQmGsF^Le8{`w9QnOK{+`l0J>L zp|R!DHPh6s$b8<6VtlhOh-moF76lr2P8t8M7T2Z$S7C59wxrM4j65F!kAFc5LXL}T zgOJk%`A!+drFd{B!Ttf9^tGgqIIqKly9@Lj$k=i^#UAGj_G^A22s8RyX3WLoKQzA( z7yv*6YBt5*jBw?=R3iugD{T+}-G-3qFR4LX&~7{gXqaj^fCx|)VyrbVMMzsJMUp&g zEk!kUI|BoLz9JGu{);IF3Tj1#2BI25MX3e^>?w&FrRYKf13m%($07y(Oc9}B<#6B= zXzkf1+YCx?aVctGHnY5`*ozoI^QM%>_T0uvPQ-wAvW`Z78d%3uWCy}!B^k(ob>yJI z;RAvcCL1VjXL*D6M>Yro0kD6m9p$DYLS^)a+_XU3$~n7octCQiCl=q&;Q{Sdm&C%q zH5szQ|4{#a&ObE1V+nHOoKP1B&UsXd$CH4iagb1<=k_ihzuQrNPXB3N>-lry?>4uA zboaGqY&_q-1xW!w_cj3VS6TapB;{APfg2t4e7_9AAoxI=i;%q#rKrXi8vp+ke+Ulj zgG2puLXnKI{wL=}@}H-c|9O7-|1&pZ?pjf20x-M_g<;J?V#Uh2vT5T8>6vP%00c3} zb%hAbHdk_@h6b%-j5P1XlvMMm3dINvqNs4f+zmrFEKQVGm~0-!SN|Sl5LgFJ#ry^- zdr`7^v`{@mrW-rRHCM3CR!pM~tOKXwDyY!})>U^ixW+2;W?G!Lx>iW=ZFp-|Pnz47 z*KrrbB%arm*G+LG8;JJM7=pQs5Rsnm47TN%E%PL*jvuUsLLjg!C<~l+v86rcpx_YO z$HWRvCVRgl0I+gW0QMq-0uQ4xopk{*JuB`HW17G-Bq(}4=Mr`tGiP-B*HSN&~Z`C!jgAja#rJ*tW zMQKT?iUVl|NE-o+PYgy?dc#PumjPU|g8%?VDN2o?!3G8*0V%9nJQN@yMY41%W3j^Q z1#P*vwWN5mB>_MoVh|M>(T&FBG4b*j!*JaMVGn@5kr}m?Mw~G0#z?m%ks?A76=cec zg%C?gt%mU|9fn-U$~83lfCcdY04uNpE?=_%2S4Tn3h)B} z)C_PD5l)*@GP3emMI{wA4J{o#aCw9L*$J@#1cCT_;5;uQ5Pv-$*o%Mq1Lq!(^KDU7 zz1Q#}gyHHntUOl9P+uFXU~XolYo@AXYGQcicXszI_bl$r|IFb`4_IgRoYh8#Rc|&9 z3)_gq#Di`NaFwkVTt~WoFW}WzuNC`|Wj*xU)YcMP+A^_#gykA}TvNGxovSxz(yQDm zf$EB+Z(tdT+zb#GEu*UqozWyJ7?mM7Mcn@?Fot%8avA`*Gu6Ht3eE&-wJ*VPqQuF3 zgt;V_d3I@C1w%VNpGa4&^-u+o=))B$fe$wMXsFeU+Rjh9OB7#F3MLqIuj$oS;fQ8( zoYaGL3JU~0Txu&)_{_eJA?U=XHRJE9!!WMxSLyGXR57Ev1(B5(>H zwMv1@LPQ@q=*E+96GYs5V0DWTe$Ml)S=}o7&iE)}fc-Oi-8v>F`*Oid*#4kyR z?m4E`Aqc+wK*7q3yJmg%kJzIM`E+hz_l!;K^A(>m0J}dG%JJq(T~yVmpn<0AXmZ&P zM7h9i9X7``BKROp$GFFLBC!7#g>F&fo+QPR)%xD&W)FFlQjXkqzB%mnqh?|fAgGNp z{Vy1E&OwbCXt=?$d#REtJqudV%0sjCm>srZ5h~x$_vMSzASy?d*ctQsxhi{4m?~W<`nC^mg!N$HRNNdiK-X7URAX^e?sn_( zD~86+z}&_w(d8!8(V=KyYLClAL@d%dDt9yx4>2~Xr86dj$61#~8&n3lcrgiym2q`( zcg)bDjJGRZ;st~7L^t;RP@II;sJiQ~vd6;Ug!%!l*Nq4^a;bpt@R+EI>8Mx+WxWy3 zSyGOhRi-G(Y7Sfc_3aPWlsUA=7h&eWsn3xHaG+AkS-<9U6a`3A@4`~QRu^a7hii6@ zKv8d6EJmVeE*X=@M%*x%@yZ=@30aTfMVWnDA>d5ikqE&9R$51I;ZN9i{Bn1b^P6xzCNNW!K>?jSKZvyOFLXL znHInjffC;`7r8nTt2liYtV^|tD+-7?CL!IEpzL_-Yt69vng0G*p;Hj*)wniYdb$ZT zQj3Hk8`G?G<>AN2M6pzp{?g1JCy&OM=JT6ht@Crh=B=3>A4UeDM@%!YN(7O+r6qJ^ zl1R5&r8)rElfE0_XRrIi!!avhdf}pfa_nGB_U7UvS2LS+7GSt*tHgoW#8=!@oT=I` zG}oohwT?eXz+QmlRL*Ra*CaOINr|#5=~Vc4fHJb&{5q+?loG8bmtv)jwhmJy??w4a zo8UcJ`go7*K2asN4B`%EoLgPszDjMBNxO*;lUugeBnx7yBosf0S5ca@AQQFbDZa7# zxh(>}4S&7vQetX4R6-{!`W0Gzcg<1Hn(d{W=vSsAy?td4S4XoXMkP`8IVu+D`#I#I z47qfC8m&>6%BW;@lrI5F(_6clLz7v3EXq#0Sc9wzUfyj`mVfO%%2r!nixSyh6Wbn?O?`Nu0DHX?nb9vJY6!;|BgUId z#p}L#CC6TKSO=AD^~#eKwJkVOSkpPaP6o>l7aq_vFzOV%ut!m1n92y1^((U~lVSS4O{@fXS1~1f?J0z?;83B;L3R?lSj{Z_ zDHJ*Njx-G5mvK{$M&R=e0UAk76mIByoZgknb_YIS#%Bxh_3+jB)3<8Xv>4c-1S4~G zlt~$jGL1r+vi=y}ghd}-FlR7Xg-fJUHm;*Jj)s%3CDigqb-bM;iGs=)cSZ>zQ3N!K z0|Gkr17x1fgo<~W;`bl4WfnB(xTnG~mrWJmQ+u<|<5Z^b*0B|Od8);}^!hNoIs0Ve zuX;)deck@LiVCG(-O8-6jBijxVSyhVO@#^#q&aM%4b~Ov^eJ&~@k0Ij*Gl%w5vXd~ zq8I&3t=5{%%a;Lc&o}7SKEdt83e7E6bl9!Z&DV+8~%afy?58p541PI%{V?OAeziYcZ-rA%MJK%?4# zM3jL!B!TnBWwR7=Y;BZp2?_LLq9|z*B`pC~NU$P3B+x#RYKM7Z&ZR6jKMswaEfO?{ zONA4WD@r3E%xO>n_lZ+Ig~qrf9p%0rG&0u+API?J=E{jsxT&}dt)A6}lz(~Vo3q7% zK@0Ojc06AsNoYLv;8;OzEdf8oC%sKUu%_GvANYbTe?o=Kr!?v_UC@!%7&?lP0T{p% zL#h}$OieVy<80K7O;o*TiZ^_$+DOPE+C~Cz#26Xy@vJcI&C$6|GuVgP2$~ORRKNFE zC8&DAB7Nn(XeM#rPx-6EH>CE?nlGG?k@DLh5m7p^7;vLzrAKnYQ7du<+I=Gwp6zah z0PY~tgrf`pYLPIIVE-39#!a|fGQPQ79gXv4DXaRSZB-!syvvE38v=wekV|J5&&>3cQc_BkHb#-mh-d&vdaA{mpcs47A!KE7Lry?tMyrG>V<~xp zhM%!Op4MW}(`NE!g&08YQFGB}g-^d`0UHt=0nk;G2m!=NaY$wzzxf*q2Q|1kVYmXu zP@mvh>QqJH>F{N?u4~H4R+f$aQ2LvMR%WRMh(ew?OYb`rE42-AP#{Orh#D|0`L=RM z#s2-;oL(#qih6V*%YYwZfAt1e|15MjXpcdqju4O)MAan#5v)zvG{<`Q>Sn%NNFy>n zQA(W>0$6!YeGqu=I^)>8;IGc|P}C)>m+Lx2mYVn(fs2-hgP&5;tc9U8kt3IH>nqd5wle^2!j`%k zC1QnHeVFwPpXVrq^ z+|bq1GD3X-0_YR#_i+Iz94Cx3kwhf^{l|y(9qByq1gmE{W3UEk%qn*7rt!YL*AI1A^@yxtnR%D zH@j?|UiC7&@?>Bv-J}F|~1kQ#7o$>!Q9bI?m!9T;6)Pq!OO=7V*J3&YfOToBlHVo1YIpO zaJDt%&3J!CueIV61)7VeFU>+-Fh2ZMtQ~xT2>^CminNOr92>eXWWS|n$2Impy>M^* z;-VW!P^1M%6%udulpxe`+2XI})pRc-P`Fr-f`AEm7Yy^1nmsA)l zLnv*PCQASpWe6=66*D^(5kwDpXp?>8gcNqO)@$GOxqF3=_F=yK+Pdvahl1?Io5jsv zPmg^MPO~H_BI9Nq*Lb^{?VgOKLPdNj{W@#HbveD7}W@(SCm2gwobNa2{r>Mjv3 zbY-H#ieRPdz2At(@FUOcc{TtNd6}dAT z$$%9GXpI3W!pjbJFAe@YOAX-i3Oh{vW|)G@Zr9zp%?RKoe0CQIQ_SsLLws(Icjc2c zpL)cwWoc`?eGfNrA8p4Sn*lCt5Fo2n-!=^sDJKE^w{`paigMVwY#2g+0K95#v59#Bmaw zjPSt)fVGq`Sytz@L?Lyn9ie^Z6)$7Bv{Lx6OIH{@G$P^)4@C?zFUSoe)7ZBeaS z0)`Gv91g|xjV#z)S(d&(kQgVQ`k;wK95;N%0Q}?4_~*{++?#QJ6F0#BVu;~P|IGEw z*_(dGnNgj6VimR4yT?@*9mG72QOSYQ$roTk12K@LYi zO6#gas&r?E+Pl8^v@oaQK9_8BGJX?&Q!|&~bw2*0#X$axw~_Gj9ze}h4-Qqu;XFr8 z7z8Y6uzBrelz<*NBE-l1?YYm=+IkdzL?!P|sTz7^lz2WZO+ zyuM+?$8gO}lMgyzTFTqFn`h`1+o~eUD4w$lQGQTO+RS7Z#`ybAI}8;nf%D?JGxQb; zu$qbVpzB;fTOb4w7w9;wV|WDEkm4i=8RBhWKd3*CV*NX+r~rA%FX8v1*CUo%NPmVK zRfL#*ni)BGuPq8cFzfuCH=%Z4?#pb~>)W{p41uBpGPopy7Vf3CLkmM#?$yP7bVL z*~GS5#wf_>R>Bur9|VF{(AF(vzT9rmrYl1Tr33-q55K)A>S%-JNQ-bTuk?)uoB#=} z(YO*#a*B#&>BR*~?))cPjo-aL6nINL$6v4g!i9!dO}5p$A6C1m9nsxANVdHD_-7wm zj_|TL-!UVX*t|q? z*=fML!W^y$>vDt)vF-n`Z z%!a2A*JcXgH8nSNSZbD_)|Z$%u8#=@1cQ+bSO7zEJ411@l-iamww+MbI$jh&U$HCZ zvwb$ub?-1M*GD(s%d7b2=POMge_itrb{4iX?s(of`}IJ#vo_)mt^dA{=j~^C>5aS) zkA-h`@Pk0wT+*7n*?_w|OPdw$+@-A{ENgprmyaDbd`QeNyKf$KOvFP(< zLMK?hyL*Vl1J^Dj0I1xE)L4sIJNEmOS2x1|K#VcU%A~mrn7l4%M1?W!D?ABa%Bs2; zh@h=5R)AD{NO+svKz8}L%s3^)T1OJErwfNat2|2^86s zwL8b?BFs&}mF#x;bTvy81lhEh?_R}oeXO~xLw~60>StS@s{$$+3s_}hjYL8}@>|1H zgbq5E0m}o@E!*iK<7Bg!);(~A%|DxnwCLN~{O<(p50JgVXkNrR`WhUm&%7qi%A3n< zdG+|-lD85vTh1=BG`uj70n!7^yqU^qZfk*v5L_SqLbFbo7()6J`O=A==*`cdXl|b4kJ%8I#UiTaTtn;x|(n$Ge#(^Yx8^(G{J0-*lWQNw`!% zD%VB`l}BfoLW~J;qXot^*6ILODbZ!l)k<3JNmMe5Ap0AGiC{PVybG3Wq@@%cVImQ* zIczl_#}|f?vuBRsyW72GL{@yu#_`SNR*Ta76V3Jnv!gM!sa>vNm6x~Q+;8AnxO(Nu zRMOjxxfk=t7Massjt{?M+uV$*Vj%CqOV&FsAFa*f9qCh%5pb*b%~HS}8A6r#K`jiX zUb`ao@Oa53_-bYy?RMF*l+fF^rYVp1d^9Iu>sIv2g zSPTLYl@VmxV53bb3PiG3K}ccBrdGC`cFYq|D05|{=PK|~_6UL?q-!k`3l6}|6pI+6 zXbs8QP&Z&CAmPmm&5fHiZQYRQHlHGDT4D!y3~$?^Lt#%wQjad?%z?zX|oc{X&x3v)&0rf9Cy=;IXA?DTso)|HH@8{Q5*nbm^s z5GzBLOOr)-0zwClo+kWyEv2zXA2a&-^>(wsgHEf=griNAs@yraX2^{R@<+m?Jn$ zBo$*5j6urh=YNZqRqU&RS7j+8ob@k>O6k_p`q>5Ozho zxxdOr>`C%I8HdsV=m_pWVfg#jm_TwN5zDVYj`5f4-rr>tVzt?Fh-$)qZ+?_vz&A;M zhjvsQ*sfOf#i?1%IXP5hlww2pK$9?xoZeTL-nMKFE>(our=d{-t5qLUm91Rm0$;LrHnN3cVt;r^82|tDn~} zc^*y_-gL?>U2JU$_GmEwV5I1`q~s0EOzhq*KJJ*UzuPMo^w@Szw>Z~+|6N@mV+F|^ zoA6FQLy>4sm;&L?D>oG`n%bj{=WDF0gx=qGg^h7&p4tZ<3T<$}+j<`Ds*N;MXOHlY z$CEv2M{Ey7K;^5>9!wg{G%Xx1Hn?;Vzm^bue%!-Q@@_TokU2?0u;u3j_sD(L-)bvC zzXWlVQKt$lQQ>L&MOe?e%0iZg*O=~ z=i*hr)HR1q_ddx1H`|I9pG9|T<9k%fw7f#yMKy6Xp|pSk1PJMS2O%vAs(yX3GtQ37 z4Xxs_$bCiMO%c+zW{c7_*>#BktoUt83+mBr0O#A^9QVmbelZgYjzsHM;9p)9E;EV| zibk6!_au;Y%&@1?@~#-vH~|+%r(B2vVG*%Tz_sq4-()l-SvHJqvp5vs69SAHcJUGG z1EgGpjI9Z`CwwjEOI&ATuLlxHgwV`j?Xw8dd~j}r-BcaqfCyPnYK5YM1i4qOwi(}- z%Wo9w6&S48J0}-~lyHgT2Ti}GKWDw!(^)E$uzcoev(H`t|81Z3@#A!u;(^C$ zAfD=0&#}!TSKjiR;H!f8!PnWi7|yEgPl7o8OE(vDX9LsHx&6SyGR{sUxqQs&8ys7q zQ+>dQCkb*DP~*zwZU=II<<>}Pi1)UM22a8S-+o{jmbiNRjkM?|+JdR_n{$_h$Q}JM zWncG1EoMqQrud4eDl}@Q#`5E=5hj|I>%U{?xlN?_%LRCmXgzj9jJAGxBndFm68hr1 zI4--&LCEyztq4c3HWqkl9zPB=stQOtGq~+3njjcWp|)sku4qFg6hT3?5M#f2h6Nou zGz=A{62Zv(OAn0|C7cz{d2JQ~c;NcfE}Er2U#yVDA_TX&ZlC?CBOAUHh&;)q4~de) z%-TE)?tkw&9Ho433F(duSo#zck1~ls2mADFg}@-tDzoaV8Krb50mqC4IrdqVCm)~2 z>Rgd+lYVN)xK;6}SGhn;lEOzf@u5Wy3i2$QOC+C@m)0{eGCe&V4&>5w(L~P>T_dRV zj*7ZV3P5mg>m|HRu_i4?DaN~3w=u<*-`)v`d9pTIY&{xg9MIjX7r%L)1?! znedImrTS+hp1a;E*AHP0i*Gq?=ei%nY!3HaDR{W$ohsS<+W)7_EdIAmsV4B-p1EPC zA#BWOSe>m0W8L$Jk7`S=Bqx(}sqN7_f;eCoQ9HU}29Pa}l#sATMs}xxa@QUixpV^G zja^i9y`R6#%UG1l?;B=H132pyIN%_JDn(QwSp5kaR70-@-ON_h`ld(>SETFgScd@> zTeU&!l6~HchCbpcg8|lTr1oIo( z_-S4MS9*aGvK__Ph%mWU;R0Ggc6t%0t@wb6wOdOCmax!^7dlDc_*AbMstM%^A)Qpi zlx##2;3zM=cDbN$6qZt~XleXSd4Wl=4Of?Tp+j(Bu)AYMg%AlKl$1AAN$h#v>(+a` zhgm#PEaQ^tr}P~=tiF{bw1%@`k+fJ=w1ws4U@g_MF$XqBGM#_i z2a%vD0)}(Y5ICZz&4_3&x~e)M@Y4}W6c(aT76MbgZBR)0SU4;% zMlbA6NDP*W;aZvsG$dw3&g(4)A*WgVcFLUhv&08wEH@F=A==P;TttAVlbI?byQq^5 zyC`-2s#~MRd*U3{cQFkE`{j44GA%FdDMZ8tO0mR&Znb-Ht=Gi|C56?3RpPl{+u!iq zS?p1wV9oXF6BVBJdBUDRAUnb^)38ykrU%;oWO{{-VIJk(n zTFJ(|0;rTYaXKbX>OXJ9KM}ozwBF~FkeRRP5!>(o6k4w9@O!fN;L-92CKZceR>8fc zlNVi?FEmGc_hjWS*&y7G zNs_4M~Oz)X<<@)KuJ%2~#MPhy`C=%M)y#fRVxq?IqW&i}pazC?a?T`}1i1 zGk;02n3O5zGqovp%phZAhkk4yVk~2S(%cjO^rZ7=dPRJTn=%su zxdTUj#XlAmKTOvC_?-3hUd^Sb22-UVJFn^=GKTzcs0w??9%&H`&?Y%met+iqamkMQ z<-2xbj>p||ox?9Z2S1-2e6}=L&$sqvkE{K9{oCHYVa<#6BHA!au6EmEdfs)KI6S3H zEuRhmnnb16lS+MkN)`90w3T%O3of$XxQ7V$|170_anRe?WbOqjgF)G+|tx zyGi7m$cVpo*~*Fy<-PA(9oBl`@d?Z61p@bs2`3>J&0n;YcZZy;Y4j=7`lMv!##oo^ zZwPNpH$*C5kVP|MZuP9uJ$|IWozl*x5g~0A(mPLSCHT_KBy|k!r%2S&B@DV)QG57z zUayaQ)?UoCyx7ky(Ss`JUw^;?a9lY)SxnxJ=Lz5ceH^LO*?fFDw7uWnbaG>G_r2|O zzS7t?9m${X6uJ(5_S~%V+gKT5HN&5(6|dODQr9p~#5OmD(iPCcaDg%!OvXfwAQtRtVwKly+V)k10 z^;H8XAqpsS&ODpnKYVcM-61>TrMaZ!57~*POBU4u5|2GUIY9?58R~=NV%re-q-cDI zOS<;-sIjOrE>yV#rc3_Q56+;9rnGexH)q#+AeA>82x?~^BkCw#x%$ZNtAh*E5{>7N zJ&6C^;n&^~(RK^XoAX-74|-)=7ft%D-rPO<&H2mAXo>C;cXT#=uT0jecWP2i!^Tm) z9nY9~*>_Gs|Ld9!uj1QhB)#UX#b_%-&DHFDije})GzbokKofC_3P6l*^W6GiIzgOg z>*Z*fEd~BJjK62FJe?2!d>|iO8VjhpSo!f(G`4jK0U}g+Mgpb?dna~cWQ`i&)e+@p z%Nuk@DTQ_}PtcSQCUgOXQzt@L-&>`&F2Y0TVx10Bi-Iu4gF)_F$Y-(Z^#m##C@{ma;k0o3BGwWCB()@g0O(nn0vuFKB8vE6*S z5Kv7IcIFN8Y!7ksAzD6+!E{Mh>aQl8<-hCt>-%iR?Fk2%fP z;eEWedw|G}`&^Dqo0BnYq-TdGR!@W*2tsJxDr#-w*s4)5LqSO9PFFduHV3hxBNs>T!B8LE6 z-^mS9i=OXODRlKJ%@DL5@i6u~9n&6GM%{dlZ%1_|5^4e}26f)Xi%Y-ISV{1GNVq_@ zhuxI{hR0I{Z<>meJU_)w3lkG}Ct_A69$b2MFW+NTRMvxw1I5rL`qX^6ezp?dZ8(tp zBni*=v1VExY*Dj`0lVV zM?yHvd~7ybIOf{jCŽ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 literal 0 HcmV?d00001 From 89de74ff092c1af8bec1e08ee207038085b2f822 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 02:35:38 +0000 Subject: [PATCH 21/70] Automatic changelog for PR #12441 [ci skip] --- html/changelogs/AutoChangeLog-pr-12441.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12441.yml diff --git a/html/changelogs/AutoChangeLog-pr-12441.yml b/html/changelogs/AutoChangeLog-pr-12441.yml new file mode 100644 index 000000000000..443c1ae68ed6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12441.yml @@ -0,0 +1,5 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Added Abomination pelt and skull items." + - code_imp: "Added code to delete instances of skull and pelt that have no icon." \ No newline at end of file From 9b66319f45262f82dfb7e68504b0fd76f94cf4d2 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 02:37:53 +0000 Subject: [PATCH 22/70] Automatic changelog for PR #10541 [ci skip] --- html/changelogs/AutoChangeLog-pr-10541.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10541.yml diff --git a/html/changelogs/AutoChangeLog-pr-10541.yml b/html/changelogs/AutoChangeLog-pr-10541.yml new file mode 100644 index 000000000000..572ccf8455fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10541.yml @@ -0,0 +1,11 @@ +author: "Venuska1117" +delete-after: True +changes: + - rscadd: "Add new Warrior Strain \"Bulwark\"." + - rscadd: "Bulwark have 600 health, tackles of 2 min - 5max, gains 200 plasma, +10 explosive and +10 normal armor for decreased speed and takes 50% more melee damage." + - rscadd: "Bulwark have 4 passive abilities, 50% less damage from wired cades (5 damage instead of 10), 75% for slashes or tailstab to go through wired cades and hit target behind them, +10 front armor and +10 side armor and no direct lock slowdown." + - rscadd: "Encased Plates, this ability when activated it will reduce your movement speed by 1.35, increases minimum tackles needed to tackle someone down by +2 and decreased slash damage by 8, in exchange you gain +10 front armor and lose -10 side armor (stacks with passive), immunity to knockdowns and ability to open holes in walls." + - rscadd: "Plate Bash, this ability will launch you toward targets if its in range of 2 tiles (3 tiles), it will hit them 1 tile away and shake their screen, if encased plates are active, this ability changes to only work on adjecent targets but in exchange you send them 3 tiles away, knockdown and stun target." + - rscadd: "Tail Sweep, this ability will hit all adjecent tiles (including corners) around you and trip enemies down and briefly stun them, if grenade is present instead of target, you will send grenade 4 tiles away and your cooldown will be decreased to 1/3rd of full cooldown, if both target and grenade are hit, normal cooldown value will be applied." + - rscadd: "Reflective Shield, this ability will lock your looking direction when casted to reflect bullets towards target in 50 degree cone (-25 to 25 angle), reflected bullets will only deal half of their original damage, your reflection chance is 100% from front ONLY but you lose ability to attack or help (you can still use abilities) and drop pulled targets, this ability can be disabled early like how lurker invisibility works 1s used is 2s cooldown but you gain +6s to cooldown, minimum 6s cooldown and 18s max, this ability CANNOT reflects sniper bullets, rockets and anti-reflective ammo (like SHARP darts), xeno projectiles and turrets." + - balance: "Fix Reflective walls, now they reflect bullets properly (uses new bulwark reflective proc)." \ No newline at end of file From dc469e2bbf4c1f433ac2b3e99e782f22ab1aa806 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Sun, 21 Jun 2026 21:06:26 -0500 Subject: [PATCH 23/70] Fix custom smoke spawning runtime (#12472) # About the pull request This PR does just a couple things (follow up to #11963 ): - Deletes a test smoke immediately - Makes the area check for new smoke to be null safe (because above spawns it with no loc) # Explain why it's good for the game Fixes image # Testing Photographs and Procedure
Screenshots & Videos image
# Changelog :cl: Drathek fix: Fixed a runtime with custom smoke spawning /:cl: --- code/game/objects/effects/effect_system/smoke.dm | 2 +- code/modules/projectiles/guns/flamer/flamer.dm | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index df33523d468a..25a1ce72d83a 100644 --- a/code/game/objects/effects/effect_system/smoke.dm +++ b/code/game/objects/effects/effect_system/smoke.dm @@ -47,7 +47,7 @@ src.time_to_live += rand(-1,1) var/area/my_area = get_area(src) - if(my_area.flags_area & AREA_HEAVILY_VENTILATED) + if(my_area?.flags_area & AREA_HEAVILY_VENTILATED) var/new_amount = rand(1,3) src.time_to_live = min(new_amount, src.time_to_live) diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index 38496cfe9212..8a1147ef368b 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -328,6 +328,7 @@ else var/obj/effect/particle_effect/smoke/chem/checker = new() var/atom/blocked = LinkBlocked(checker, source_turf, turf) + qdel(checker) if(blocked) break From 8828cd553d19b2912649060092d7208e18f28891 Mon Sep 17 00:00:00 2001 From: NHC <155458128+TheManWithNoHands@users.noreply.github.com> Date: Mon, 22 Jun 2026 04:06:33 +0200 Subject: [PATCH 24/70] Fix: Sunglasses dupe in loudout menu (#12478) # About the pull request Fixes https://github.com/cmss13-devs/cmss13/issues/12317 , and sorts the code a bit so new hippy glasses are in the glasses block. # Explain why it's good for the game Fixes are nice, and neatly sorted code is extra nice. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: NHC fix: Removed duped sunglasses from loudout menu /:cl: --- code/modules/client/preferences_gear.dm | 60 ++++++++++++------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/code/modules/client/preferences_gear.dm b/code/modules/client/preferences_gear.dm index a51820fc72c9..0594decac440 100644 --- a/code/modules/client/preferences_gear.dm +++ b/code/modules/client/preferences_gear.dm @@ -224,6 +224,36 @@ GLOBAL_LIST_EMPTY(roles_with_gear) display_name = "Sunglasses" path = /obj/item/clothing/glasses/sunglasses +// Hippie Shades + +/datum/gear/eyewear/sunglasses/hippie_shades + display_name = "Suntex-Sightware rounded shades, pink" + path = /obj/item/clothing/glasses/sunglasses/hippie + +/datum/gear/eyewear/sunglasses/hippie_shades/green + display_name = "Suntex-Sightware rounded shades, green" + path = /obj/item/clothing/glasses/sunglasses/hippie/green + +/datum/gear/eyewear/sunglasses/hippie_shades/sunrise + display_name = "Suntex-Sightware rounded shades, sunrise" + path = /obj/item/clothing/glasses/sunglasses/hippie/sunrise + +/datum/gear/eyewear/sunglasses/hippie_shades/sunset + display_name = "Suntex-Sightware rounded shades, sunset" + path = /obj/item/clothing/glasses/sunglasses/hippie/sunset + +/datum/gear/eyewear/sunglasses/hippie_shades/nightblue + display_name = "Suntex-Sightware rounded shades, nightblue" + path = /obj/item/clothing/glasses/sunglasses/hippie/nightblue + +/datum/gear/eyewear/sunglasses/hippie_shades/midnight + display_name = "Suntex-Sightware rounded shades, midnight" + path = /obj/item/clothing/glasses/sunglasses/hippie/midnight + +/datum/gear/eyewear/sunglasses/hippie_shades/bloodred + display_name = "Suntex-Sightware rounded shades, bloodred" + path = /obj/item/clothing/glasses/sunglasses/hippie/bloodred + /datum/gear/mask category = "Masks and scarves" slot = WEAR_FACE @@ -1362,36 +1392,6 @@ GLOBAL_LIST_EMPTY(roles_with_gear) display_name = "cowboy hat, light-brown" path = /obj/item/clothing/head/cowboy/light -// Hippie Shades - -/datum/gear/eyewear/sunglasses/hippie_shades/pink - display_name = "Suntex-Sightware rounded shades, pink" - path = /obj/item/clothing/glasses/sunglasses/hippie - -/datum/gear/eyewear/sunglasses/hippie_shades/green - display_name = "Suntex-Sightware rounded shades, green" - path = /obj/item/clothing/glasses/sunglasses/hippie/green - -/datum/gear/eyewear/sunglasses/hippie_shades/sunrise - display_name = "Suntex-Sightware rounded shades, sunrise" - path = /obj/item/clothing/glasses/sunglasses/hippie/sunrise - -/datum/gear/eyewear/sunglasses/hippie_shades/sunset - display_name = "Suntex-Sightware rounded shades, sunset" - path = /obj/item/clothing/glasses/sunglasses/hippie/sunset - -/datum/gear/eyewear/sunglasses/hippie_shades/nightblue - display_name = "Suntex-Sightware rounded shades, nightblue" - path = /obj/item/clothing/glasses/sunglasses/hippie/nightblue - -/datum/gear/eyewear/sunglasses/hippie_shades/midnight - display_name = "Suntex-Sightware rounded shades, midnight" - path = /obj/item/clothing/glasses/sunglasses/hippie/midnight - -/datum/gear/eyewear/sunglasses/hippie_shades/bloodred - display_name = "Suntex-Sightware rounded shades, bloodred" - path = /obj/item/clothing/glasses/sunglasses/hippie/bloodred - // Civilian shoes /datum/gear/civilian/shoes From dfd372f95ac28de8d8f595610ccdfda760015d62 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 03:05:17 +0000 Subject: [PATCH 25/70] Automatic changelog for PR #12472 [ci skip] --- html/changelogs/AutoChangeLog-pr-12472.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12472.yml diff --git a/html/changelogs/AutoChangeLog-pr-12472.yml b/html/changelogs/AutoChangeLog-pr-12472.yml new file mode 100644 index 000000000000..27e3e935b6e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12472.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Fixed a runtime with custom smoke spawning" \ No newline at end of file From dad0a25762a7a2dc05176a547158fe85c939147c Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 03:05:30 +0000 Subject: [PATCH 26/70] Automatic changelog for PR #12478 [ci skip] --- html/changelogs/AutoChangeLog-pr-12478.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12478.yml diff --git a/html/changelogs/AutoChangeLog-pr-12478.yml b/html/changelogs/AutoChangeLog-pr-12478.yml new file mode 100644 index 000000000000..b47f8db7cd87 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12478.yml @@ -0,0 +1,4 @@ +author: "NHC" +delete-after: True +changes: + - bugfix: "Removed duped sunglasses from loudout menu" \ No newline at end of file From 3af90e55443228081618d0d859fa57d70b09e6ec Mon Sep 17 00:00:00 2001 From: virtualgirlie <55900616+virtualgirlie@users.noreply.github.com> Date: Sun, 21 Jun 2026 22:06:51 -0400 Subject: [PATCH 27/70] Fixes a typo in the Tyrargo Rift announcements (#12471) # About the pull request Removes an apostrophe where it is unnecessary in the Tyrargo Rift announcements. # Explain why it's good for the game It makes the announcement look more realistic. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: spellcheck: changed "enemy boiler's" to "enemy boilers" /:cl: --- code/game/gamemodes/colonialmarines/colonialmarines.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index abe9b0e10913..d23cc82505a4 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -469,7 +469,7 @@ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(marine_announcement), "Almayer, this is the Tyrargo Museum civilian evacuation site. We are under assault by a XX-121 cluster, but we are holding our own.\n\nWe have heavy XX-121 waves inbound from the north-east and are under heavy suppression, our evacuation craft are pinned by long range boiler strikes and the western city exits are too dangerous to move towards with ground based evacuation vehicles, we’re requesting you secure the western approach so you can suppress the enemy forces to allow civilian evacuation, over.", "Tyrargo Civilian Evac, 1st Air Cav Headquarters", 'sound/AI/commandreport.ogg'), 15 MINUTES) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(xeno_announcement), "Be on guard my children. I have sensed that the petrid sewers of this so called city could be flooded by the hosts at a moments notice if the hosts restore power to the area. The button to release this putrid water is found in the metal structure the hosts call the sewer treatement plant.", "everything", QUEEN_MOTHER_ANNOUNCE), 15 MINUTES) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(marine_announcement), "Attention: Analysis of city layout plans have identified a possible tactical advantage. A release valve can be triggered within the City Sewer Treatment Plant, this valve will flood the lower sewer tunnels with water, expunging a significant amount of xenobiological growth.\n\nHowever, this valve must be powered by repairing a special APC located within the underground power-substation, located east of the underground sewer treatment plant.", "ARES 3.2 Strategic Notice", 'sound/AI/commandreport.ogg'), 20 MINUTES) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(marine_announcement), "Almayer. We’re seeing increased XX-121 activity at the Tyrargo evac site. Additional strains are inbound from the north.\n\nEnemy Boiler’s have moved close enough to suppress our air support, we’re re-orienting the Longstreet tanks to cover our flanks. Requesting immediate suppression of enemy forces near our location via the western city entrance, over. ", "Tyrargo Civilian Evac, 1st Air Cav Headquarters", 'sound/AI/commandreport.ogg'), 35 MINUTES) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(marine_announcement), "Almayer. We’re seeing increased XX-121 activity at the Tyrargo evac site. Additional strains are inbound from the north.\n\nEnemy Boilers have moved close enough to suppress our air support, we’re re-orienting the Longstreet tanks to cover our flanks. Requesting immediate suppression of enemy forces near our location via the western city entrance, over. ", "Tyrargo Civilian Evac, 1st Air Cav Headquarters", 'sound/AI/commandreport.ogg'), 35 MINUTES) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(marine_announcement), "All elements, more XX-121 clusters are encroaching from our east. We’re under heavy attack from all quarters and have lost half of our Longstreet tank support to Crushers.\n\nWe’ve exhausted our HEAP munitions and have had to switch to soft-point munitions. We can’t take this for much longer, requesting urgent support from Almayer forces, over.", "Tyrargo Civilian Evac, 1st Air Cav Headquarters", 'sound/AI/commandreport.ogg'), 60 MINUTES) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(marine_announcement), "This is Tyrargo. The xenos have begun to encroach from our southern flank. We only have a single tank left. We’re withdrawing to the middle corridor and have relocated the civilians to the inner perimeter.\n\nSituation is dire, we’re getting wasted. We need that support, over.", "Tyrargo Civilian Evac, 1st Air Cav Headquarters", 'sound/AI/commandreport.ogg'), 80 MINUTES) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(marine_announcement), "All elements! This is the Tyrargo evac site, our situation is critical. The bugs have us surrounded on all fronts, our armoured support is destroyed and we’re now being pinned by enemy Ravagers.\n\nWe need urgent fire support, we can’t take it much longer.", "Tyrargo Civilian Evac, 1st Air Cav Headquarters", 'sound/AI/commandreport.ogg'), 100 MINUTES) From d39cae548b9e5c21a11b44163f759d5f9d7f2370 Mon Sep 17 00:00:00 2001 From: harry Date: Mon, 22 Jun 2026 03:07:20 +0100 Subject: [PATCH 28/70] twitch links migrate to cmdb (#12458) title, fixes not being able to link/unlink :cl: server: twitch linking functionality is deprecated in game /:cl: --------- Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> --- code/controllers/subsystem/cmtv.dm | 48 ++++++++++++++----- code/datums/entities/twitch_link.dm | 73 ----------------------------- colonialmarines.dme | 1 - 3 files changed, 36 insertions(+), 86 deletions(-) delete mode 100644 code/datums/entities/twitch_link.dm diff --git a/code/controllers/subsystem/cmtv.dm b/code/controllers/subsystem/cmtv.dm index 03104a886720..73c644fb00e2 100644 --- a/code/controllers/subsystem/cmtv.dm +++ b/code/controllers/subsystem/cmtv.dm @@ -484,27 +484,44 @@ SUBSYSTEM_DEF(cmtv) camera_operator.view = "32x24" /datum/controller/subsystem/cmtv/proc/is_subscriber(client/potential_subscriber) - if(!CONFIG_GET(string/cmtv_api) || !CONFIG_GET(string/cmtv_api_key)) - return FALSE + var/static/lookup_cache = list() + + var/cmtv_subscriber_api = CONFIG_GET(string/cmtv_subscriber_api) + var/cmtv_subscriber_api_key = CONFIG_GET(string/cmtv_subscriber_api_key) - WAIT_DB_READY + if(!CONFIG_GET(string/cmtv_api) || !CONFIG_GET(string/cmtv_api_key) || !cmtv_subscriber_api || !cmtv_subscriber_api_key) + return FALSE UNTIL(initialized) if(!potential_subscriber) return FALSE - var/list/datum/view_record/twitch_link/links = DB_VIEW(/datum/view_record/twitch_link, DB_AND( - DB_COMP("ckey", DB_EQUALS, potential_subscriber.ckey), - DB_COMP("twitch_id", DB_ISNOT) - )) + var/twitch_id = lookup_cache[potential_subscriber.ckey] + if(!twitch_id) + var/datum/http_request/request = new + request.prepare(RUSTG_HTTP_METHOD_GET, "[cmtv_subscriber_api]?ckey=[potential_subscriber.ckey]", null, list("Authorization" = "Bearer [cmtv_subscriber_api_key]")) + request.begin_async() - if(!length(links)) - return FALSE + UNTIL(request.is_complete()) + + var/datum/http_response/response = request.into_response() + + var/decoded + try + decoded = json_decode(response.body) + catch + log_debug("cmtv_subscriber_api returned an invalid response.") + return FALSE + + twitch_id = decoded["twitch_id"] + if(!twitch_id) + return FALSE - for(var/datum/view_record/twitch_link/link as anything in links) - if(link.twitch_id in subscribers) - return TRUE + lookup_cache[potential_subscriber.ckey] = twitch_id + + if(twitch_id in subscribers) + return TRUE return FALSE @@ -657,6 +674,13 @@ SUBSYSTEM_DEF(cmtv) /datum/config_entry/string/cmtv_api_key protection = CONFIG_ENTRY_HIDDEN | CONFIG_ENTRY_LOCKED +/datum/config_entry/string/cmtv_subscriber_api + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/string/cmtv_subscriber_api_key + protection = CONFIG_ENTRY_HIDDEN | CONFIG_ENTRY_LOCKED + + /atom/movable/screen/cmtv plane = ESCAPE_MENU_PLANE clear_with_screen = FALSE diff --git a/code/datums/entities/twitch_link.dm b/code/datums/entities/twitch_link.dm deleted file mode 100644 index 5c1ccc4e30a3..000000000000 --- a/code/datums/entities/twitch_link.dm +++ /dev/null @@ -1,73 +0,0 @@ - -/datum/entity/twitch_link - var/ckey - var/access_code - var/twitch_id - -/datum/entity_meta/twitch_link - entity_type = /datum/entity/twitch_link - table_name = "twitch_link" - field_types = list( - "ckey" = DB_FIELDTYPE_STRING_LARGE, - "access_code" = DB_FIELDTYPE_STRING_MEDIUM, - "twitch_id" = DB_FIELDTYPE_STRING_LARGE, - ) - -/datum/view_record/twitch_link - var/ckey - var/access_code - var/twitch_id - var/id - -/datum/entity_view_meta/twitch_link - root_record_type = /datum/entity/twitch_link - destination_entity = /datum/view_record/twitch_link - - fields = list( - "ckey", - "access_code", - "twitch_id", - "id", - ) - -/datum/config_entry/string/twitch_link_url - protection = CONFIG_ENTRY_LOCKED - -CLIENT_VERB(link_twitch) - set name = "Twitch Link" - set category = "OOC" - - var/url = CONFIG_GET(string/twitch_link_url) - if(!url) - to_chat(src, SPAN_WARNING("Twitch linking is not enabled on this server.")) - return - - if(IsGuestKey(key, TRUE)) - to_chat(src, SPAN_WARNING("You must be connected as a BYOND key to connect to Twitch.")) - return - - if(length(DB_VIEW(/datum/view_record/twitch_link, - DB_AND( - DB_COMP("ckey", DB_EQUALS, ckey), - DB_COMP("twitch_id", DB_IS) - )) - )) - to_chat(src, SPAN_WARNING("You have already linked this CKEY to Twitch. Contact support to remove this.")) - return - - var/datum/view_record/twitch_link/existing_link = locate() in DB_VIEW( - DB_COMP("ckey", DB_EQUALS, ckey) - ) - - if(existing_link) - to_chat(src, SPAN_LARGE(SPAN_NOTICE("Please click
here to link your CKEY to Twitch."))) - return - - var/datum/entity/twitch_link/new_link = DB_ENTITY(/datum/entity/twitch_link) - new_link.access_code = generate_access_code() - new_link.ckey = ckey - - new_link.save() - new_link.detach() - - to_chat(src, SPAN_LARGE(SPAN_NOTICE("Please click here to link your CKEY to Twitch."))) diff --git a/colonialmarines.dme b/colonialmarines.dme index 3f892dfd5550..af6e0cf6ead6 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -618,7 +618,6 @@ #include "code\datums\entities\player_sticky_ban.dm" #include "code\datums\entities\player_times.dm" #include "code\datums\entities\ticket.dm" -#include "code\datums\entities\twitch_link.dm" #include "code\datums\entities\logs\player_times_log.dm" #include "code\datums\factions\clf.dm" #include "code\datums\factions\cmb.dm" From 13677cea5bbc230efdfaf9c924c494dd98429e1b Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 03:51:13 +0000 Subject: [PATCH 29/70] Automatic changelog for PR #12471 [ci skip] --- html/changelogs/AutoChangeLog-pr-12471.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12471.yml diff --git a/html/changelogs/AutoChangeLog-pr-12471.yml b/html/changelogs/AutoChangeLog-pr-12471.yml new file mode 100644 index 000000000000..9e978adcde40 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12471.yml @@ -0,0 +1,4 @@ +author: "virtualgirlie" +delete-after: True +changes: + - spellcheck: "changed \"enemy boiler's\" to \"enemy boilers\"" \ No newline at end of file From 79d17fef3913a2350e6b8b4244c74262c29ee429 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 03:57:21 +0000 Subject: [PATCH 30/70] Automatic changelog for PR #12458 [ci skip] --- html/changelogs/AutoChangeLog-pr-12458.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12458.yml diff --git a/html/changelogs/AutoChangeLog-pr-12458.yml b/html/changelogs/AutoChangeLog-pr-12458.yml new file mode 100644 index 000000000000..0e86266b88d8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12458.yml @@ -0,0 +1,4 @@ +author: "hry-gh" +delete-after: True +changes: + - server: "twitch linking functionality is deprecated in game" \ No newline at end of file From 369b3bb62a3f547339aa1169f43aa8665726d4e5 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 04:53:07 +0000 Subject: [PATCH 31/70] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-10541.yml | 11 ----- html/changelogs/AutoChangeLog-pr-11992.yml | 4 -- html/changelogs/AutoChangeLog-pr-12274.yml | 4 -- html/changelogs/AutoChangeLog-pr-12441.yml | 5 -- html/changelogs/AutoChangeLog-pr-12442.yml | 6 --- html/changelogs/AutoChangeLog-pr-12448.yml | 4 -- html/changelogs/AutoChangeLog-pr-12455.yml | 4 -- html/changelogs/AutoChangeLog-pr-12458.yml | 4 -- html/changelogs/AutoChangeLog-pr-12471.yml | 4 -- html/changelogs/AutoChangeLog-pr-12472.yml | 4 -- html/changelogs/AutoChangeLog-pr-12478.yml | 4 -- html/changelogs/archive/2026-06.yml | 56 ++++++++++++++++++++++ 12 files changed, 56 insertions(+), 54 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-10541.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-11992.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12274.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12441.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12442.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12448.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12455.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12458.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12471.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12472.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-12478.yml diff --git a/html/changelogs/AutoChangeLog-pr-10541.yml b/html/changelogs/AutoChangeLog-pr-10541.yml deleted file mode 100644 index 572ccf8455fc..000000000000 --- a/html/changelogs/AutoChangeLog-pr-10541.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: "Venuska1117" -delete-after: True -changes: - - rscadd: "Add new Warrior Strain \"Bulwark\"." - - rscadd: "Bulwark have 600 health, tackles of 2 min - 5max, gains 200 plasma, +10 explosive and +10 normal armor for decreased speed and takes 50% more melee damage." - - rscadd: "Bulwark have 4 passive abilities, 50% less damage from wired cades (5 damage instead of 10), 75% for slashes or tailstab to go through wired cades and hit target behind them, +10 front armor and +10 side armor and no direct lock slowdown." - - rscadd: "Encased Plates, this ability when activated it will reduce your movement speed by 1.35, increases minimum tackles needed to tackle someone down by +2 and decreased slash damage by 8, in exchange you gain +10 front armor and lose -10 side armor (stacks with passive), immunity to knockdowns and ability to open holes in walls." - - rscadd: "Plate Bash, this ability will launch you toward targets if its in range of 2 tiles (3 tiles), it will hit them 1 tile away and shake their screen, if encased plates are active, this ability changes to only work on adjecent targets but in exchange you send them 3 tiles away, knockdown and stun target." - - rscadd: "Tail Sweep, this ability will hit all adjecent tiles (including corners) around you and trip enemies down and briefly stun them, if grenade is present instead of target, you will send grenade 4 tiles away and your cooldown will be decreased to 1/3rd of full cooldown, if both target and grenade are hit, normal cooldown value will be applied." - - rscadd: "Reflective Shield, this ability will lock your looking direction when casted to reflect bullets towards target in 50 degree cone (-25 to 25 angle), reflected bullets will only deal half of their original damage, your reflection chance is 100% from front ONLY but you lose ability to attack or help (you can still use abilities) and drop pulled targets, this ability can be disabled early like how lurker invisibility works 1s used is 2s cooldown but you gain +6s to cooldown, minimum 6s cooldown and 18s max, this ability CANNOT reflects sniper bullets, rockets and anti-reflective ammo (like SHARP darts), xeno projectiles and turrets." - - balance: "Fix Reflective walls, now they reflect bullets properly (uses new bulwark reflective proc)." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-11992.yml b/html/changelogs/AutoChangeLog-pr-11992.yml deleted file mode 100644 index 8790bca9e114..000000000000 --- a/html/changelogs/AutoChangeLog-pr-11992.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MoondancerPony" -delete-after: True -changes: - - refactor: "made fire spread (from OB, flamers, etc) much faster" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12274.yml b/html/changelogs/AutoChangeLog-pr-12274.yml deleted file mode 100644 index 275f0e8abf01..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12274.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "cuberound" -delete-after: True -changes: - - qol: "xenos can see reamining durability of special structures on examine" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12441.yml b/html/changelogs/AutoChangeLog-pr-12441.yml deleted file mode 100644 index 443c1ae68ed6..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12441.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Added Abomination pelt and skull items." - - code_imp: "Added code to delete instances of skull and pelt that have no icon." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12442.yml b/html/changelogs/AutoChangeLog-pr-12442.yml deleted file mode 100644 index cf4b1de2bb08..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12442.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - code_imp: "Changed some queen procs to xenomorph base." - - rscadd: "Changed Queen naming convention (thought I did this ages ago)" - - code_imp: "Changed the tier_slot_multiplier var name to divisor because it was stupidly named." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12448.yml b/html/changelogs/AutoChangeLog-pr-12448.yml deleted file mode 100644 index 90b8abbc5c74..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12448.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "cuberound" -delete-after: True -changes: - - code_imp: "isbanana is no longer" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12455.yml b/html/changelogs/AutoChangeLog-pr-12455.yml deleted file mode 100644 index df9abaf913d1..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12455.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Almayer crash no longer breaks hardened APCs." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12458.yml b/html/changelogs/AutoChangeLog-pr-12458.yml deleted file mode 100644 index 0e86266b88d8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12458.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "hry-gh" -delete-after: True -changes: - - server: "twitch linking functionality is deprecated in game" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12471.yml b/html/changelogs/AutoChangeLog-pr-12471.yml deleted file mode 100644 index 9e978adcde40..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12471.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "virtualgirlie" -delete-after: True -changes: - - spellcheck: "changed \"enemy boiler's\" to \"enemy boilers\"" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12472.yml b/html/changelogs/AutoChangeLog-pr-12472.yml deleted file mode 100644 index 27e3e935b6e2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12472.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed a runtime with custom smoke spawning" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-12478.yml b/html/changelogs/AutoChangeLog-pr-12478.yml deleted file mode 100644 index b47f8db7cd87..000000000000 --- a/html/changelogs/AutoChangeLog-pr-12478.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "NHC" -delete-after: True -changes: - - bugfix: "Removed duped sunglasses from loudout menu" \ No newline at end of file diff --git a/html/changelogs/archive/2026-06.yml b/html/changelogs/archive/2026-06.yml index eba1ae22092f..14c4a8236610 100644 --- a/html/changelogs/archive/2026-06.yml +++ b/html/changelogs/archive/2026-06.yml @@ -246,3 +246,59 @@ 2026-06-20: Antlers: - bugfix: Hyperdyne corporate survivors no longer get aired out by LZ turrets +2026-06-22: + Drathek: + - bugfix: Fixed a runtime with custom smoke spawning + MoondancerPony: + - refactor: made fire spread (from OB, flamers, etc) much faster + NHC: + - bugfix: Removed duped sunglasses from loudout menu + Venuska1117: + - rscadd: Add new Warrior Strain "Bulwark". + - rscadd: Bulwark have 600 health, tackles of 2 min - 5max, gains 200 plasma, +10 + explosive and +10 normal armor for decreased speed and takes 50% more melee + damage. + - rscadd: Bulwark have 4 passive abilities, 50% less damage from wired cades (5 + damage instead of 10), 75% for slashes or tailstab to go through wired cades + and hit target behind them, +10 front armor and +10 side armor and no direct + lock slowdown. + - rscadd: Encased Plates, this ability when activated it will reduce your movement + speed by 1.35, increases minimum tackles needed to tackle someone down by +2 + and decreased slash damage by 8, in exchange you gain +10 front armor and lose + -10 side armor (stacks with passive), immunity to knockdowns and ability to + open holes in walls. + - rscadd: Plate Bash, this ability will launch you toward targets if its in range + of 2 tiles (3 tiles), it will hit them 1 tile away and shake their screen, if + encased plates are active, this ability changes to only work on adjecent targets + but in exchange you send them 3 tiles away, knockdown and stun target. + - rscadd: Tail Sweep, this ability will hit all adjecent tiles (including corners) + around you and trip enemies down and briefly stun them, if grenade is present + instead of target, you will send grenade 4 tiles away and your cooldown will + be decreased to 1/3rd of full cooldown, if both target and grenade are hit, + normal cooldown value will be applied. + - rscadd: Reflective Shield, this ability will lock your looking direction when + casted to reflect bullets towards target in 50 degree cone (-25 to 25 angle), + reflected bullets will only deal half of their original damage, your reflection + chance is 100% from front ONLY but you lose ability to attack or help (you can + still use abilities) and drop pulled targets, this ability can be disabled early + like how lurker invisibility works 1s used is 2s cooldown but you gain +6s to + cooldown, minimum 6s cooldown and 18s max, this ability CANNOT reflects sniper + bullets, rockets and anti-reflective ammo (like SHARP darts), xeno projectiles + and turrets. + - balance: Fix Reflective walls, now they reflect bullets properly (uses new bulwark + reflective proc). + cuberound: + - qol: xenos can see reamining durability of special structures on examine + - code_imp: isbanana is no longer + hry-gh: + - server: twitch linking functionality is deprecated in game + realforest2001: + - rscadd: Added Abomination pelt and skull items. + - code_imp: Added code to delete instances of skull and pelt that have no icon. + - rscadd: Almayer crash no longer breaks hardened APCs. + - code_imp: Changed some queen procs to xenomorph base. + - rscadd: Changed Queen naming convention (thought I did this ages ago) + - code_imp: Changed the tier_slot_multiplier var name to divisor because it was + stupidly named. + virtualgirlie: + - spellcheck: changed "enemy boiler's" to "enemy boilers" From f2473b626988ca675528f1ad79c2387008d08055 Mon Sep 17 00:00:00 2001 From: Ammoniacres <168367356+Ammoniacres@users.noreply.github.com> Date: Sun, 21 Jun 2026 22:08:28 -0400 Subject: [PATCH 32/70] FIX: Lets maintenance jacks open unpowered doors without Synth/Yautja Superstrong. (#12373) # About the pull request Title. Swaps the order of checks so that the check for super-strength doesn't come first, letting regular-unpowered door conditions be checked first. # Explain why it's good for the game Bug fix! # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: fixed unpowered doors being unable to be opened by maintenance jacks (for humans) /:cl: --- code/game/objects/items/tools/maintenance_tools.dm | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/tools/maintenance_tools.dm b/code/game/objects/items/tools/maintenance_tools.dm index 95437a42524c..a6f377e22c52 100644 --- a/code/game/objects/items/tools/maintenance_tools.dm +++ b/code/game/objects/items/tools/maintenance_tools.dm @@ -591,7 +591,12 @@ if(attacked_door.locked) //Bolted to_chat(user, SPAN_DANGER("You can't pry open [attacked_door] while it is bolted shut.")) return - + if(!attacked_door.density && !attacked_door.arePowerSystemsOn()) //If its open and unpowered + attacked_door.close(TRUE) + return + if(attacked_door.density && !attacked_door.arePowerSystemsOn()) // if its closed and unpowered + attacked_door.open(TRUE) + return if(requires_superstrength_pry) if(!HAS_TRAIT(user, TRAIT_SUPER_STRONG)) //basically IS_PRY_CAPABLE_CROWBAR return @@ -600,15 +605,8 @@ return if(user.action_busy) return - if(!attacked_door.density && !attacked_door.arePowerSystemsOn()) //If its open and unpowered - attacked_door.close(TRUE) - return - if(attacked_door.density && !attacked_door.arePowerSystemsOn()) // if its closed and unpowered - attacked_door.open(TRUE) - return if(!attacked_door.density) //If its open return - user.visible_message(SPAN_DANGER("[user] jams [src] into [attacked_door] and starts to pry it open."), SPAN_DANGER("You jam [src] into [attacked_door] and start to pry it open.")) playsound(src, "pry", 15, TRUE) From 2fd21770fa63e97f6986ca8827cd5b608cb7df16 Mon Sep 17 00:00:00 2001 From: BlitzArde <125638858+BlitzArde@users.noreply.github.com> Date: Sun, 21 Jun 2026 22:08:23 -0400 Subject: [PATCH 33/70] Fix: Corrected hazmat joe disturbances sound file (#12420) # About the pull request One of the hazmat files was forgotten and instead the emote was just a duplicate of another sound file with different text. Thanks to Blundir, the correct file has been obtained and replaced. Sound file is below so you can hear the correct one. # Testing Photographs and Procedure
Screenshots & Videos https://files.catbox.moe/hiuni7.ogg
# Changelog :cl: BlitzArde, Blundir soundtweak: Replaced the disturbances hazmat joe sound file /:cl: --- sound/voice/joe/disturbance_haz.ogg | Bin 39485 -> 61144 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/voice/joe/disturbance_haz.ogg b/sound/voice/joe/disturbance_haz.ogg index cfe4110d5dfccf1046992cce2c78ceebe7cc0ffb..366cd7d6d5377a62936eb0e18a1d09171674dc70 100644 GIT binary patch delta 57543 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 From 7ecc75816be0987cb640ce6e747abdb5e3276dd1 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 05:11:27 +0000 Subject: [PATCH 34/70] Automatic changelog for PR #12420 [ci skip] --- html/changelogs/AutoChangeLog-pr-12420.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12420.yml diff --git a/html/changelogs/AutoChangeLog-pr-12420.yml b/html/changelogs/AutoChangeLog-pr-12420.yml new file mode 100644 index 000000000000..169690e97921 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12420.yml @@ -0,0 +1,4 @@ +author: "BlitzArde, Blundir" +delete-after: True +changes: + - soundtweak: "Replaced the disturbances hazmat joe sound file" \ No newline at end of file From 1638a7a9f1c9ea636952f4fec2789d7ffae41458 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 05:12:25 +0000 Subject: [PATCH 35/70] Automatic changelog for PR #12373 [ci skip] --- html/changelogs/AutoChangeLog-pr-12373.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12373.yml diff --git a/html/changelogs/AutoChangeLog-pr-12373.yml b/html/changelogs/AutoChangeLog-pr-12373.yml new file mode 100644 index 000000000000..665345299bb5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12373.yml @@ -0,0 +1,4 @@ +author: "Ammoniacres" +delete-after: True +changes: + - bugfix: "fixed unpowered doors being unable to be opened by maintenance jacks (for humans)" \ No newline at end of file From 54aeed9ece3ac9abdcb589d6ac75f70ff5df580e Mon Sep 17 00:00:00 2001 From: BlitzArde <125638858+BlitzArde@users.noreply.github.com> Date: Sun, 21 Jun 2026 22:09:46 -0400 Subject: [PATCH 36/70] Fix: Drenching an object in acid properly displays the object name (#12398) # About the pull request Drenching an acid-ed object in acid in current state will tell you that the "Acid (Obj)" is already drenched in acid. It should instead say that the object alone is drenched. Trying to drench the acid itself still will say that you are trying to acid the acid. I hope this make sense. Try to do it in-game and you'll see what I mean. # Explain why it's good for the game Yay yippee fix!!! Yay!!! # Testing Photographs and Procedure
Screenshots & Videos https://files.catbox.moe/mpl4op.png
# Changelog :cl: fix: Trying to drench an acid-ed object in acid now properly states the object's name /:cl: --- .../living/carbon/xenomorph/abilities/ability_helper_procs.dm | 4 ++-- .../living/carbon/xenomorph/abilities/runner/runner_powers.dm | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm index e98b6d900dc8..4d008f6dc2b1 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm @@ -25,7 +25,7 @@ for(var/obj/effect/xenomorph/acid/A in turf) if(acid_type == A.type && A.acid_t == O) - to_chat(src, SPAN_WARNING("[A] is already drenched in acid.")) + to_chat(src, SPAN_WARNING("[O] is already drenched in acid.")) return var/obj/I @@ -103,7 +103,7 @@ // AGAIN BECAUSE SOMETHING COULD'VE ACIDED THE PLACE for(var/obj/effect/xenomorph/acid/A in turf) if(acid_type == A.type && A.acid_t == O) - to_chat(src, SPAN_WARNING("[A] is already drenched in acid.")) + to_chat(src, SPAN_WARNING("[O] is already drenched in acid.")) return if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) //Checked again to account for people trying to place acid while channeling the burrow ability diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm index 6ebc429a44ce..3cdbe7be7c8c 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm @@ -91,7 +91,7 @@ // AGAIN BECAUSE SOMETHING COULD'VE ACIDED THE PLACE for(var/obj/effect/xenomorph/acid/acid in turf) if(acid_type == acid.type && acid.acid_t == affected_atom) - to_chat(src, SPAN_WARNING("[acid] is already drenched in acid.")) + to_chat(src, SPAN_WARNING("[affected_atom] is already drenched in acid.")) return if(!check_state()) From 1cb0b72787e0c10f2de55c307126b5e0c37258a2 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 05:49:42 +0000 Subject: [PATCH 37/70] Automatic changelog for PR #12398 [ci skip] --- html/changelogs/AutoChangeLog-pr-12398.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12398.yml diff --git a/html/changelogs/AutoChangeLog-pr-12398.yml b/html/changelogs/AutoChangeLog-pr-12398.yml new file mode 100644 index 000000000000..cc15a17ca818 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12398.yml @@ -0,0 +1,4 @@ +author: "BlitzArde" +delete-after: True +changes: + - bugfix: "Trying to drench an acid-ed object in acid now properly states the object's name" \ No newline at end of file From 7cd53b1704a270828fa38c276ab635652e548d04 Mon Sep 17 00:00:00 2001 From: kitchenenthusiast Date: Sun, 21 Jun 2026 22:14:04 -0400 Subject: [PATCH 38/70] comms signal clarity meter on OW consoles (#12278) # About the pull request this was a good idea: https://forum.cm-ss13.com/t/overwatch-console-radio-clarity-meter/20423. so i DID it adds a meter to the overwatch console UI to show the announcement signal strength based on the groundside comms garble. accounts for decoder sequences, drops dynamically in real time, and unobtrusively doesn't extend the OW console interface to make it any longer. 44% clarity or less = CRITICAL BLACKOUT / red 45% to 79% clarity = DEGRADED / orange 80% clarity or greater = STABLE / green # Explain why it's good for the game more feedback for butterbars that no one can hear them groundside overwatch console still needs this added but that UI is a jenga block stack i fear uhhhhhh feel free to lmk if there's something different for how i should handle ftl crashes; i left as-is because i feel like survivors running out to the comms towers to set them up is very sovlful # Testing Photographs and Procedure Screenshot 2026-05-26 143147 Screenshot 2026-05-26 143201 Screenshot 2026-05-26 143307 Screenshot 2026-05-26 143720 not broken, updates dynamically, matches tgui, doesn't extend past the console window only edge case is based on the radio garble itself. you can TECHNICALLY have your radio tower set up but if you don't have fac frequency added, but do have decrypt updated, it'll max at 95% and slowly degrade over time to follow with the announcement clarity degradation. once you add fac freq, it goes back to 100%. # Changelog :cl: add: added an announcement clarity meter to Overwatch consoles so you no longer scream into the void, Lieutenant ui: added an announcement clarity meter to Overwatch consoles /:cl: --- code/modules/cm_marines/overwatch.dm | 29 +++ .../tgui/interfaces/OverwatchConsole.tsx | 211 ++++++++++++------ 2 files changed, 168 insertions(+), 72 deletions(-) diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index f78155165bfc..01d277572ee7 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -479,6 +479,7 @@ GLOBAL_LIST_EMPTY_TYPED(active_overwatch_consoles, /obj/structure/machinery/comp /obj/structure/machinery/computer/overwatch/ui_data(mob/user) var/list/data = list() + data = pack_radio_data() data["theme"] = ui_theme if(!current_squad) @@ -527,6 +528,8 @@ GLOBAL_LIST_EMPTY_TYPED(active_overwatch_consoles, /obj/structure/machinery/comp data["theme"] = ui_theme + data = pack_radio_data() + if(!current_squad) data["squad_list"] = list() for(var/datum/squad/current_squad in GLOB.RoleAuthority.squads) @@ -1684,6 +1687,32 @@ GLOBAL_LIST_EMPTY_TYPED(active_overwatch_consoles, /obj/structure/machinery/comp icon_state = "deltadrop" squad = SQUAD_UPP_4 +/obj/structure/machinery/computer/overwatch/proc/get_radio_clarity() + var/ground_z = length(SSmapping.levels_by_trait(ZTRAIT_GROUND)) ? SSmapping.levels_by_trait(ZTRAIT_GROUND)[1] : null + var/current_clarity + if(ground_z && (ground_z in SSradio.get_available_tcomm_zs(COMM_FREQ))) + return 100 + if(SSradio.faction_coms_clarity && SSradio.faction_coms_clarity[faction]) + current_clarity = SSradio.faction_coms_clarity[faction] + if(SSradio.faction_coms_codes && length(SSradio.faction_coms_codes[faction])) + return current_clarity + return 15 + +/obj/structure/machinery/computer/overwatch/proc/pack_radio_data() + var/list/clarity_data = list () + var/clarity = get_radio_clarity() + clarity_data["radio_clarity"] = clarity + if(clarity >= 80) + clarity_data["clarity_color"] = "good" + clarity_data["clarity_status"] = "STABLE" + else if(clarity >= 45) + clarity_data["clarity_color"] = "average" + clarity_data["clarity_status"] = "DEGRADED" + else + clarity_data["clarity_color"] = "bad" + clarity_data["clarity_status"] = "CRITICAL BLACKOUT" + return clarity_data + #undef HIDE_ALMAYER #undef HIDE_GROUND #undef HIDE_NONE diff --git a/tgui/packages/tgui/interfaces/OverwatchConsole.tsx b/tgui/packages/tgui/interfaces/OverwatchConsole.tsx index 9421b99f7d9f..a67324cb0ba9 100644 --- a/tgui/packages/tgui/interfaces/OverwatchConsole.tsx +++ b/tgui/packages/tgui/interfaces/OverwatchConsole.tsx @@ -8,6 +8,7 @@ import { Input, LabeledControls, NumberInput, + ProgressBar, Section, Stack, Table, @@ -69,6 +70,9 @@ type Data = { ob_safety: Boolean; supply_cooldown: number; operator: string; + radio_clarity: number; + clarity_color: string; + clarity_status: string; }; export const OverwatchConsole = (props) => { @@ -76,7 +80,7 @@ export const OverwatchConsole = (props) => { return ( @@ -213,77 +217,140 @@ const MainDashboard = (props) => { } > - - - PRIMARY ORDERS - SECONDARY ORDERS - - - - {primary_objective ? primary_objective : 'NONE'} - - - {secondary_objective ? secondary_objective : 'NONE'} - - -
- - - {primary_objective && ( - - )} - - {secondary_objective && ( - - )} - - - - - - + + + + + + PRIMARY ORDERS + + SECONDARY ORDERS + + + + {primary_objective ? primary_objective : 'NONE'} + + + {secondary_objective ? secondary_objective : 'NONE'} + + +
+ + + + + + {primary_objective && ( + + )} + + + + + + {secondary_objective && ( + + )} + + + + + + + + + + + +
+
+ + + + SIGNAL CLARITY + + + {data.clarity_status} + + + {''} + + + {data.radio_clarity}% + + + +
); }; From be624c93d28a9e29647c9a2552b9a06590a991b6 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 06:12:17 +0000 Subject: [PATCH 39/70] Automatic changelog for PR #12278 [ci skip] --- html/changelogs/AutoChangeLog-pr-12278.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12278.yml diff --git a/html/changelogs/AutoChangeLog-pr-12278.yml b/html/changelogs/AutoChangeLog-pr-12278.yml new file mode 100644 index 000000000000..86eb786a986f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12278.yml @@ -0,0 +1,5 @@ +author: "kitchenenthusiast" +delete-after: True +changes: + - rscadd: "added an announcement clarity meter to Overwatch consoles so you no longer scream into the void, Lieutenant" + - ui: "added an announcement clarity meter to Overwatch consoles" \ No newline at end of file From c30c0aeaee84d36ef30b1c604e91232d8123c66c Mon Sep 17 00:00:00 2001 From: cuberound <122645057+cuberound@users.noreply.github.com> Date: Mon, 22 Jun 2026 04:15:02 +0200 Subject: [PATCH 40/70] moving under transparent does not cancel looking up, multiz init (#12446) # About the pull request moving under turf that allows you to look up (istransparent) no longer cancels looking up # Explain why it's good for the game having to mash the button as you move under catwalks is incorrect # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: moving under transparent turfs no longer cancels looking up /:cl: --- code/modules/cm_tech/hologram.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cm_tech/hologram.dm b/code/modules/cm_tech/hologram.dm index 7edd7593ef48..cc6b1f1301f9 100644 --- a/code/modules/cm_tech/hologram.dm +++ b/code/modules/cm_tech/hologram.dm @@ -183,7 +183,7 @@ GLOBAL_LIST_EMPTY_TYPED(hologram_list, /mob/hologram) var/turf/new_turf = get_step(loc, direct) forceMove(new_turf) - if(!istype(new_turf, /turf/open_space)) + if(!istransparentturf(new_turf)) UnregisterSignal(linked_mob, COMSIG_MOB_RESET_VIEW) view_registered = FALSE linked_mob.reset_view() From cc78062c5146aa7551f63e8353cf654504a3c314 Mon Sep 17 00:00:00 2001 From: riot <103988604+CapCamIII@users.noreply.github.com> Date: Sun, 21 Jun 2026 21:44:07 -0500 Subject: [PATCH 41/70] Minor CLF buffs (#11953) # About the pull request buffs CLF IEDs by giving them normal OT chems for their reactions instead of just water/potassium, and gives the incendiary one some ethanol so it has some decent flames, even if short-lasted. Gives CLF combat flashlights, you can see like a tile further with these strongly raises cyanide's oxygen damage levels, adds neurotoxic so it does brain damage, and raises its sleep chemical level. this is technically a CLF buff because cyanide only spawns on CLF guys, poision apples, and in the liason briefcase # Explain why it's good for the game The grenades kinda really suck, xenos can just literally ignore them as they do that little damage, and the only reason they bother humans is the stun from being too close, this makes them actually threatening, which is nice You can't see shit as CLF in the darkness, marine armor lights are like double your view-range, this is better Cyanide took like a half a minute to down and a minute to kill you, now its roughly 10 seconds to down 30ish to kill. This is mostly an admin event tool buff, as cyanide is so rare that I've seen it more often used by admins than the 3 sources possible ingame. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Riot balance: Buffs the IEDs used by the CLF balance: CLF have combat flashlights now. balance: Cyanide kills you faster now /:cl: --- .../items/explosives/grenades/chem_grenade.dm | 18 ++++++----- code/modules/gear_presets/clf.dm | 32 +++++++++---------- .../reagents/chemistry_reagents/toxin.dm | 2 +- 3 files changed, 27 insertions(+), 25 deletions(-) diff --git a/code/game/objects/items/explosives/grenades/chem_grenade.dm b/code/game/objects/items/explosives/grenades/chem_grenade.dm index 9836f06b0dec..d239dc905197 100644 --- a/code/game/objects/items/explosives/grenades/chem_grenade.dm +++ b/code/game/objects/items/explosives/grenades/chem_grenade.dm @@ -209,10 +209,11 @@ var/obj/item/reagent_container/glass/beaker/B1 = new(src) var/obj/item/reagent_container/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("potassium", 20) - B1.reagents.add_reagent("iron", 40) - B2.reagents.add_reagent("water", 20) - B2.reagents.add_reagent("iron", 40) + B1.reagents.add_reagent("cyclonite", 40) + B1.reagents.add_reagent("iron", 20) + B2.reagents.add_reagent("cyclonite", 20) + B2.reagents.add_reagent("anfo", 20) + B2.reagents.add_reagent("iron", 20) detonator = new/obj/item/device/assembly_holder/timer_igniter(src, 2) //~4 second timer @@ -233,10 +234,11 @@ var/obj/item/reagent_container/glass/beaker/B1 = new(src) var/obj/item/reagent_container/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("potassium", 20) - B1.reagents.add_reagent("iron", 40) - B2.reagents.add_reagent("water", 20) - B2.reagents.add_reagent("iron", 30) + B1.reagents.add_reagent("octogen", 10) + B1.reagents.add_reagent("iron", 50) + B2.reagents.add_reagent("octogen", 10) + B2.reagents.add_reagent("iron", 10) + B2.reagents.add_reagent("ethanol", 30) B2.reagents.add_reagent("phoron", 10) detonator = new/obj/item/device/assembly_holder/timer_igniter(src, 2) //~4 second timer diff --git a/code/modules/gear_presets/clf.dm b/code/modules/gear_presets/clf.dm index 754176846c53..de5985a04e8b 100644 --- a/code/modules/gear_presets/clf.dm +++ b/code/modules/gear_presets/clf.dm @@ -72,7 +72,7 @@ spawn_rebel_shoes(new_human) spawn_rebel_gloves(new_human) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_JACKET) - 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/device/flashlight/combat(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/clf_patch, WEAR_ACCESSORY) @@ -97,7 +97,7 @@ list("CLF Head Gear (Random)", 0, /obj/effect/essentials_set/random/clf_head, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/CLF, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Makeshift Meal", 0, /obj/item/mre_food_packet/clf, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("Flashlight", 0, /obj/item/device/flashlight, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + list("Flashlight", 0, /obj/item/device/flashlight/combat, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("POUCHES (CHOOSE 2)", 0, null, null, null), @@ -194,7 +194,7 @@ 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/mre_food_packet/clf, 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/device/flashlight/combat, 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) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/clf_patch, WEAR_ACCESSORY) @@ -211,7 +211,7 @@ list("Insulated Gloves", 0, /obj/item/clothing/gloves/yellow, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/CLF/cct, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Makeshift Meal", 0, /obj/item/mre_food_packet/clf, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("Flashlight", 0, /obj/item/device/flashlight, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + list("Flashlight", 0, /obj/item/device/flashlight/combat, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), list("Welderpack", 0, /obj/item/storage/backpack/marine/engineerpack/ert, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), @@ -329,7 +329,7 @@ new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_EYES) else new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_EYES) - 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/device/flashlight/combat(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large(new_human), WEAR_R_STORE) spawn_rebel_smg(new_human) @@ -345,7 +345,7 @@ list("Headset", 0, /obj/item/device/radio/headset/distress/CLF/medic, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_MANDATORY), list("Makeshift Meal", 0, /obj/item/mre_food_packet/clf, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("Flashlight", 0, /obj/item/device/flashlight, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + list("Flashlight", 0, /obj/item/device/flashlight/combat, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("BELT (CHOOSE 1)", 0, null, null, null), @@ -514,7 +514,7 @@ new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/CLF/cct(new_human), WEAR_L_EAR) //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/device/flashlight/combat(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 @@ -546,7 +546,7 @@ list("SWAT Helmet", 0, /obj/item/clothing/head/helmet/swat, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/CLF/cct, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Makeshift Meal", 0, /obj/item/mre_food_packet/clf, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("Flashlight", 0, /obj/item/device/flashlight, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + list("Flashlight", 0, /obj/item/device/flashlight/combat, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("POUCHES (CHOOSE 2)", 0, null, null, null), @@ -651,7 +651,7 @@ 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/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/device/flashlight/combat(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) spawn_weapon(/obj/item/weapon/gun/rifle/mar40, /obj/item/ammo_magazine/rifle/mar40, new_human) @@ -666,7 +666,7 @@ list("CLF Belt (Random)", 0, /obj/effect/essentials_set/random/clf_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/CLF/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Makeshift Meal", 0, /obj/item/mre_food_packet/clf, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("Flashlight", 0, /obj/item/device/flashlight, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + list("Flashlight", 0, /obj/item/device/flashlight/combat, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("HELMET (CHOOSE 1)", 0, null, null, null), @@ -960,7 +960,7 @@ list("Binoculars", 5,/obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), list("Rangefinder", 8, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), list("Laser Designator", 12, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_RECOMMENDED), - list("Flashlight", 1, /obj/item/device/flashlight, null, VENDOR_ITEM_RECOMMENDED), + list("Flashlight", 1, /obj/item/device/flashlight/combat, null, VENDOR_ITEM_RECOMMENDED), list("Fulton Recovery Device", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), list("Space Cleaner", 2, /obj/item/reagent_container/spray/cleaner, null, VENDOR_ITEM_REGULAR), @@ -1070,7 +1070,7 @@ list("CLF Smartgunner Belt", 0, /obj/item/storage/belt/gun/smartgunner/clf, MARINE_CAN_BUY_BELT, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/distress/CLF/command, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), list("Makeshift Meal", 0, /obj/item/mre_food_packet/clf, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), - list("Flashlight", 0, /obj/item/device/flashlight, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), + list("Flashlight", 0, /obj/item/device/flashlight/combat, MARINE_CAN_BUY_KIT, VENDOR_ITEM_MANDATORY), list("Combat Pack", 0, /obj/item/storage/backpack/lightpack, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("HELMET (CHOOSE 1)", 0, null, null, null), @@ -1220,7 +1220,7 @@ spawn_rebel_shoes(new_human) spawn_rebel_gloves(new_human) new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_JACKET) - 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/device/flashlight/combat(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/belt/shotgun/full/random(new_human), WEAR_WAIST) new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/pump/dual_tube/cmb(new_human), WEAR_BACK) @@ -1256,7 +1256,7 @@ 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/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/device/flashlight/combat(new_human), WEAR_L_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert(new_human), WEAR_R_STORE) spawn_weapon(/obj/item/weapon/gun/rifle/mar40, /obj/item/ammo_magazine/rifle/mar40, new_human) @@ -1283,7 +1283,7 @@ new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/engineerpack/ert, WEAR_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/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/device/flashlight/combat, WEAR_IN_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/ert, WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/clf_patch, WEAR_ACCESSORY) @@ -1302,7 +1302,7 @@ new_human.equip_to_slot_or_del(terrorist, WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/accessory/patch/clf_patch, WEAR_ACCESSORY) - new_human.equip_to_slot_or_del(new /obj/item/device/flashlight, WEAR_IN_ACCESSORY) + new_human.equip_to_slot_or_del(new /obj/item/device/flashlight/combat, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/incendiary/molotov, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/incendiary/molotov, WEAR_IN_ACCESSORY) new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/incendiary/molotov, WEAR_IN_ACCESSORY) diff --git a/code/modules/reagents/chemistry_reagents/toxin.dm b/code/modules/reagents/chemistry_reagents/toxin.dm index fef31ace6b8d..238c0e2524ae 100644 --- a/code/modules/reagents/chemistry_reagents/toxin.dm +++ b/code/modules/reagents/chemistry_reagents/toxin.dm @@ -80,7 +80,7 @@ color = "#CF3600" // rgb: 207, 54, 0 custom_metabolism = AMOUNT_PER_TIME(1, 5 SECONDS) chemclass = CHEM_CLASS_HYDRO - properties = list(PROPERTY_HYPOXEMIC = 4, PROPERTY_HYPNOTIC = 1) + properties = list(PROPERTY_HYPOXEMIC = 12, PROPERTY_NEUROTOXIC = 4, PROPERTY_HYPNOTIC = 5) /datum/reagent/toxin/minttoxin name = "Mint Toxin" From eab2de04fad7a195cfd7bd499d0835d39ee8ac56 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 06:30:44 +0000 Subject: [PATCH 42/70] Automatic changelog for PR #12446 [ci skip] --- html/changelogs/AutoChangeLog-pr-12446.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12446.yml diff --git a/html/changelogs/AutoChangeLog-pr-12446.yml b/html/changelogs/AutoChangeLog-pr-12446.yml new file mode 100644 index 000000000000..0fa8717dc9da --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12446.yml @@ -0,0 +1,4 @@ +author: "cuberound" +delete-after: True +changes: + - bugfix: "moving under transparent turfs no longer cancels looking up" \ No newline at end of file From 92951948c132f8a67ad78c05b3c765e73dae2add Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 06:33:55 +0000 Subject: [PATCH 43/70] Automatic changelog for PR #11953 [ci skip] --- html/changelogs/AutoChangeLog-pr-11953.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11953.yml diff --git a/html/changelogs/AutoChangeLog-pr-11953.yml b/html/changelogs/AutoChangeLog-pr-11953.yml new file mode 100644 index 000000000000..19fb8a905000 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11953.yml @@ -0,0 +1,6 @@ +author: "Riot" +delete-after: True +changes: + - balance: "Buffs the IEDs used by the CLF" + - balance: "CLF have combat flashlights now." + - balance: "Cyanide kills you faster now" \ No newline at end of file From cdda06e33ebfb89ec49b1b1ff39d5d788791b4ea Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Sun, 21 Jun 2026 22:02:35 -0500 Subject: [PATCH 44/70] Mass Screenshot Fixes Again (#12360) # About the pull request This PR is a follow up to #10293 fixing two things: - I forgot when repeating the for x loop to also apply the `offset_x` again (for centered Z levels) - I didn't notice the to_chat was getting sent to the old mob rather than a possibly force aghosted one # Explain why it's good for the game Rather than USS runtime looking like this (formed from 7 images): image It looks like this (formed from 4 images) rawr # Testing Photographs and Procedure See above. # Changelog :cl: Drathek fix: Fixed a couple errors with the debug mass screenshot verb when handling centered space levels and ever the mob is force aghosted /:cl: --- code/modules/admin/verbs/debug.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index d3bc85d221e9..7e1c788f6b33 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -162,7 +162,7 @@ cur_x = min(cur_x, width_inside) if(cur_y == height_inside) break - cur_x = half_chunk_size + cur_x = half_chunk_size + offset_x cur_y += chunk_size cur_y = min(cur_y, height_inside) @@ -183,7 +183,7 @@ mob.hud_used.show_hud(HUD_STYLE_STANDARD) mob.animate_movement = SLIDE_STEPS // Initial is incorrect - to_chat(usr, "Provide these values when asked for the MapTileImageTool: [width] [height] [half_chunk_size] [world.icon_size]") + to_chat(mob, "Provide these values when asked for the MapTileImageTool: [width] [height] [half_chunk_size] [world.icon_size]") //TODO: merge the vievars version into this or something maybe mayhaps /client/proc/cmd_debug_del_all() From b168f6b4c08e5fbedc22c1b06a618221ec272af9 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 07:03:32 +0000 Subject: [PATCH 45/70] Automatic changelog for PR #12360 [ci skip] --- html/changelogs/AutoChangeLog-pr-12360.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12360.yml diff --git a/html/changelogs/AutoChangeLog-pr-12360.yml b/html/changelogs/AutoChangeLog-pr-12360.yml new file mode 100644 index 000000000000..20b3d4493332 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12360.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Fixed a couple errors with the debug mass screenshot verb when handling centered space levels and ever the mob is force aghosted" \ No newline at end of file From 3e82e157df3200f31c5436eecf1c64d41fef07d0 Mon Sep 17 00:00:00 2001 From: ComboTombo <41296617+ComboTombo@users.noreply.github.com> Date: Mon, 22 Jun 2026 06:06:38 +0300 Subject: [PATCH 46/70] Added machete in-hand activation tip (#12402) # About the pull request Did you know? You can press Z to clear vines, bushes, and tall grass really quickly while holding a machete without having to spam left-click for a few seconds. # Explain why it's good for the game Extremely useful but esoteric information like this should be taught to players. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Added a tip explaining that in-hand activation with a machete can quickly clear out foliage /:cl: --- strings/marinetips.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/strings/marinetips.txt b/strings/marinetips.txt index 5528877bc318..6094a210e45a 100644 --- a/strings/marinetips.txt +++ b/strings/marinetips.txt @@ -124,4 +124,4 @@ M37 is best used on harm intent and at point blank range. If you hit within 1 ti Marines take fewer bullets to kill than xenomorphs. Make sure to bring flares. No one wants to be blind against these things… The best time to kill a marine is when they don’t expect it. Hit and run is the bread and butter of xenos! Always be ready to fight back. Always assume a door will have ambushers behind it. - +You can clear vines, bushes, and tall grass in front of you quickly and efficiently by holding a machete and pressing your 'activate in-hand' hotkey (default: Z). From 5ab4835a8820f26ca6d6e1edd64392966ea18b13 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 07:18:47 +0000 Subject: [PATCH 47/70] Automatic changelog for PR #12402 [ci skip] --- html/changelogs/AutoChangeLog-pr-12402.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12402.yml diff --git a/html/changelogs/AutoChangeLog-pr-12402.yml b/html/changelogs/AutoChangeLog-pr-12402.yml new file mode 100644 index 000000000000..be7b4458572d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12402.yml @@ -0,0 +1,4 @@ +author: "ComboTombo" +delete-after: True +changes: + - rscadd: "Added a tip explaining that in-hand activation with a machete can quickly clear out foliage" \ No newline at end of file From 2d0717aef40c25c98a0863d06e9a33fc624fadd7 Mon Sep 17 00:00:00 2001 From: cuberound <122645057+cuberound@users.noreply.github.com> Date: Mon, 22 Jun 2026 05:10:23 +0200 Subject: [PATCH 48/70] Fixes brute upper resin walls (#12162) # About the pull request big explosions of upper resin walls now correctly destroy the lower wall too. big explosions bypassed dealing damage for the sake of spalling or whatever # Explain why it's good for the game ther shuld not be walls without upper part # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: explosions on upper xeno walls destroy the lower portion too /:cl: --- code/game/turfs/walls/wall_types.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index ee1240f917dd..7ec978aef332 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -961,6 +961,7 @@ while(above && istransparentturf(above)) above.update_vis_contents() above = SSmapping.get_turf_above(above) + /turf/closed/wall/resin/process() . = ..() @@ -1044,10 +1045,12 @@ /turf/closed/wall/resin/above/Destroy(force) . = ..() if(wall_below) - wall_below.upper_wall = null //we should not get here naturaly + wall_below.upper_wall = null + wall_below.dismantle_wall() wall_below = null if(door_below) door_below.upper_wall = null + door_below.Dismantle(TRUE) door_below = null var/turf/above = SSmapping.get_turf_above(src) if(above && istransparentturf(above)) From 400e97dc7f81c70a535c56b01a5ab88da86c2762 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 07:42:31 +0000 Subject: [PATCH 49/70] Automatic changelog for PR #12162 [ci skip] --- html/changelogs/AutoChangeLog-pr-12162.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12162.yml diff --git a/html/changelogs/AutoChangeLog-pr-12162.yml b/html/changelogs/AutoChangeLog-pr-12162.yml new file mode 100644 index 000000000000..daf103692bc3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12162.yml @@ -0,0 +1,4 @@ +author: "cuberound" +delete-after: True +changes: + - bugfix: "explosions on upper xeno walls destroy the lower portion too" \ No newline at end of file From 32e4793f109b174a6a90f76adaf893af07a94f74 Mon Sep 17 00:00:00 2001 From: harry Date: Mon, 22 Jun 2026 07:24:31 +0100 Subject: [PATCH 50/70] implement pii scrubbing for sentry (#11902) title :cl: server: events sent to sentry are now scrubbed for user PII and ignoring sensitive datums, procs /:cl: --------- Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/__DEFINES/_globals.dm | 17 ++++++ code/__DEFINES/_protect.dm | 9 +++ code/__DEFINES/client.dm | 2 +- code/__DEFINES/configuration.dm | 2 + code/_globalvars/lists/mobs.dm | 9 +++ .../controllers/configuration/config_entry.dm | 2 + .../configuration/configuration.dm | 5 ++ .../configuration/entries/achievements.dm | 4 +- .../configuration/entries/dbconfig.dm | 2 +- .../configuration/entries/general.dm | 15 ++--- code/controllers/mc/globals.dm | 8 ++- code/controllers/subsystem/cmtv.dm | 2 +- code/controllers/subsystem/sentry.dm | 57 +++++++++++++++---- code/modules/admin/admin_ranks.dm | 2 +- code/modules/admin/tabs/admin_tab.dm | 2 + code/modules/admin/verbs/adminhelp.dm | 4 ++ code/modules/admin/verbs/adminpm.dm | 1 + code/modules/client/client_procs.dm | 9 +++ 18 files changed, 128 insertions(+), 24 deletions(-) diff --git a/code/__DEFINES/_globals.dm b/code/__DEFINES/_globals.dm index 6448fab451a3..4da30c08aace 100644 --- a/code/__DEFINES/_globals.dm +++ b/code/__DEFINES/_globals.dm @@ -9,6 +9,21 @@ /// Creates an empty global initializer, do not use #define GLOBAL_UNMANAGED(X) /datum/controller/global_vars/proc/InitGlobal##X() { return; } +#define GLOBAL_MANAGED_MULTIPLE(X)\ +/datum/controller/global_vars/proc/InitGlobal##X(){\ + ##X = CollectGlobal##X();\ +}\ +/datum/controller/global_vars/proc/CollectGlobal##X(){\ + CAN_BE_REDEFINED(TRUE);\ + return list();\ +} + +#define GLOBAL_MULTIPLE_UPDATE(X, NewValue)\ +/datum/controller/global_vars/CollectGlobal##X(){\ + . = ..();\ + . += ##NewValue;\ +} + /// Creates name keyed subtype instance list #define GLOBAL_SUBTYPE_INDEXED(X, TypePath, Index)\ /datum/controller/global_vars/proc/InitGlobal##X(){\ @@ -69,6 +84,8 @@ /// Create a global const var, do not use #define GLOBAL_VAR_CONST(X, InitValue) GLOBAL_RAW(/const/##X) = InitValue; GLOBAL_UNMANAGED(X) +#define GLOBAL_MULTIPLE(X) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED_MULTIPLE(X) + /// Create a list global with an initializer expression #define GLOBAL_LIST_INIT(X, InitValue) GLOBAL_RAW(/list/##X); GLOBAL_MANAGED(X, InitValue) diff --git a/code/__DEFINES/_protect.dm b/code/__DEFINES/_protect.dm index 5dbbd2d51386..f6fa1c12c8b0 100644 --- a/code/__DEFINES/_protect.dm +++ b/code/__DEFINES/_protect.dm @@ -1,4 +1,13 @@ +GLOBAL_MULTIPLE(protected_sentry_procs) +#define SET_PROTECTED_PROC(proc) GLOBAL_MULTIPLE_UPDATE(protected_sentry_procs, proc) + +GLOBAL_MULTIPLE(protected_sentry_datums) +#define SET_PROTECTED_DATUM(datum) GLOBAL_MULTIPLE_UPDATE(protected_sentry_datums, datum) + +GLOBAL_LIST_EMPTY(protected_config_entries) + #define GENERAL_PROTECT_DATUM(Path)\ +SET_PROTECTED_DATUM(Path)\ ##Path/can_vv_get(var_name){\ return FALSE;\ }\ diff --git a/code/__DEFINES/client.dm b/code/__DEFINES/client.dm index b335951aec0f..3ef997774bbf 100644 --- a/code/__DEFINES/client.dm +++ b/code/__DEFINES/client.dm @@ -8,6 +8,6 @@ /// This gathers all the client *procs* that we are pretending are verbs - but only particularly want /// authorized users to be able to use /client/proc/collect_client_verbs() as /list - CAN_BE_REDEFINED(TRUE); + CAN_BE_REDEFINED(TRUE) return list() diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm index f0d64efb6dd7..749ec7b9380a 100644 --- a/code/__DEFINES/configuration.dm +++ b/code/__DEFINES/configuration.dm @@ -8,6 +8,8 @@ //flags #define CONFIG_ENTRY_LOCKED (1<<0) //can't edit #define CONFIG_ENTRY_HIDDEN (1<<1) //can't see value +#define CONFIG_ENTRY_SENSITIVE (1<<2) //scrubbed from public logging, if a list assumes value is sensitive +#define CONFIG_ENTRY_SENSITIVE_KEY (1<<3) //scrubbed from public logging, if a list assumes key is sensitive #define ON_CONFIG_LOAD(type) \ ##type/New() { \ diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 6c57aa62f2af..fd6f2fa5b5dc 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -4,6 +4,15 @@ GLOBAL_PROTECT(admins) GLOBAL_LIST_EMPTY(directory) //all ckeys with associated client +GLOBAL_DATUM(all_player_keys_regex, /regex) +GLOBAL_LIST_EMPTY(all_player_keys) + +GLOBAL_DATUM(all_player_cids_regex, /regex) +GLOBAL_LIST_EMPTY(all_player_cids) + +GLOBAL_DATUM(all_player_ckeys_regex, /regex) +GLOBAL_LIST_EMPTY(all_player_ckeys) + GLOBAL_LIST_EMPTY(player_list) //all mobs **with clients attached**. GLOBAL_LIST_EMPTY(living_player_list) // all /mob/living with clients diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index 5225bfb63844..f9e618942ff2 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -6,6 +6,8 @@ #define KEY_MODE_TYPE 1 #define KEY_MODE_TEXT_UNALTERED 2 +SET_PROTECTED_DATUM(/datum/config_entry) + /datum/config_entry var/name //read-only, this is determined by the last portion of the derived entry type var/config_entry_value diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index b74275d2cee2..be0dd7c8d53b 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -1,3 +1,5 @@ +SET_PROTECTED_DATUM(/datum/controller/configuration) + /datum/controller/configuration name = "Configuration" @@ -162,6 +164,9 @@ _entries[esname] = E _entries_by_type[I] = E + if(E.protection & (CONFIG_ENTRY_SENSITIVE|CONFIG_ENTRY_SENSITIVE_KEY)) + GLOB.protected_config_entries += E + /datum/controller/configuration/proc/RemoveEntry(datum/config_entry/CE) entries -= CE.name diff --git a/code/controllers/configuration/entries/achievements.dm b/code/controllers/configuration/entries/achievements.dm index ca537860691f..036b6e4d1d21 100644 --- a/code/controllers/configuration/entries/achievements.dm +++ b/code/controllers/configuration/entries/achievements.dm @@ -1,10 +1,10 @@ /// The base URL for the achievements API endpoint /datum/config_entry/string/achievements_api_url - protection = CONFIG_ENTRY_HIDDEN + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_SENSITIVE /// The API key for authenticating with the achievements service /datum/config_entry/string/achievements_api_key - protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_SENSITIVE /// Additional parameter passed to the backend service /datum/config_entry/string/achievements_instance diff --git a/code/controllers/configuration/entries/dbconfig.dm b/code/controllers/configuration/entries/dbconfig.dm index be4799988f3b..1cf195732a95 100644 --- a/code/controllers/configuration/entries/dbconfig.dm +++ b/code/controllers/configuration/entries/dbconfig.dm @@ -15,7 +15,7 @@ protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED /datum/config_entry/string/db_password - protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_SENSITIVE /datum/config_entry/flag/db_debug_mode protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 1fde1a7cef87..dbc4732a5531 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -240,7 +240,7 @@ Administrative related. protection = CONFIG_ENTRY_LOCKED /datum/config_entry/string/tgs3_commandline_path - protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + protection = CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_SENSITIVE config_entry_value = "C:\\Program Files (x86)\\TG Station Server\\TGCommandLine.exe" /datum/config_entry/number/minute_topic_limit @@ -375,14 +375,14 @@ or your package manager The default value assumes youtube-dl is in your system PATH */ /datum/config_entry/string/invoke_youtubedl - protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + protection = CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_SENSITIVE /datum/config_entry/string/cobalt_base_api - protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + protection = CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_SENSITIVE /datum/config_entry/string/cobalt_api_key - protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + protection = CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_SENSITIVE /datum/config_entry/number/error_cooldown // The "cooldown" time for each occurrence of a unique error config_entry_value = 600 @@ -589,7 +589,7 @@ This maintains a list of ip addresses that are able to bypass topic filtering. /datum/config_entry/keyed_list/topic_tokens key_mode = KEY_MODE_TEXT value_mode = VALUE_MODE_TEXT - protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_SENSITIVE_KEY /datum/config_entry/keyed_list/topic_tokens/ValidateListEntry(key_name, key_value) return key_value != "topic_token" && ..() @@ -627,7 +627,7 @@ This maintains a list of ip addresses that are able to bypass topic filtering. /datum/config_entry/string/redis_connection config_entry_value = "redis://127.0.0.1/" - protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_SENSITIVE /datum/config_entry/string/instance_name config_entry_value = "game" @@ -724,9 +724,10 @@ This maintains a list of ip addresses that are able to bypass topic filtering. protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN /datum/config_entry/string/sentry_endpoint + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_SENSITIVE /datum/config_entry/string/sentry_dsn - protection = CONFIG_ENTRY_HIDDEN + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_SENSITIVE /datum/config_entry/str_list/ignored_cids protection = CONFIG_ENTRY_LOCKED diff --git a/code/controllers/mc/globals.dm b/code/controllers/mc/globals.dm index 59b96c017d10..977975f3f45f 100644 --- a/code/controllers/mc/globals.dm +++ b/code/controllers/mc/globals.dm @@ -42,8 +42,14 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) gvars_datum_init_order = list() gvars_datum_protected_varlist = list(NAMEOF(src, gvars_datum_protected_varlist) = TRUE) var/list/global_procs = typesof(/datum/controller/global_vars/proc) + + var/global_inits = 0 + for(var/procpath/proc as anything in global_procs) + if(findtext(proc.name, "InitGlobal")) + global_inits++ + var/expected_len = length(vars) - length(gvars_datum_in_built_vars) - if(length(global_procs) != expected_len) + if(global_inits != expected_len) warning("Unable to detect all global initialization procs! Expected [expected_len] got [length(global_procs)]!") if(length(global_procs)) var/list/expected_global_procs = vars - gvars_datum_in_built_vars diff --git a/code/controllers/subsystem/cmtv.dm b/code/controllers/subsystem/cmtv.dm index 73c644fb00e2..22693b69e9b9 100644 --- a/code/controllers/subsystem/cmtv.dm +++ b/code/controllers/subsystem/cmtv.dm @@ -672,7 +672,7 @@ SUBSYSTEM_DEF(cmtv) protection = CONFIG_ENTRY_LOCKED /datum/config_entry/string/cmtv_api_key - protection = CONFIG_ENTRY_HIDDEN | CONFIG_ENTRY_LOCKED + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_SENSITIVE /datum/config_entry/string/cmtv_subscriber_api protection = CONFIG_ENTRY_LOCKED diff --git a/code/controllers/subsystem/sentry.dm b/code/controllers/subsystem/sentry.dm index cd54ec39996a..304d0f55129c 100644 --- a/code/controllers/subsystem/sentry.dm +++ b/code/controllers/subsystem/sentry.dm @@ -19,6 +19,8 @@ SUBSYSTEM_DEF(sentry) can_fire = FALSE return SS_INIT_NO_NEED + return SS_INIT_SUCCESS + /datum/controller/subsystem/sentry/fire(resumed) var/static/list/headers = list( "Content-Type" = "application/x-sentry-envelope", @@ -37,6 +39,8 @@ SUBSYSTEM_DEF(sentry) if(!endpoint) endpoint = ENDPOINT_CONFIG + var/static/regex/ip_regex = regex(@"(((?!25?[6-9])[12]\d|[1-9])?\d\.?\b){4}", "g") + for(var/datum/error_envelope/error as anything in envelopes) var/event_id = get_uuid() @@ -46,12 +50,12 @@ SUBSYSTEM_DEF(sentry) for(var/datum/static_callee/called as anything in error.stacktrace) var/list/parsed_args = list( - "src" = called._src, - "usr" = called._usr, + "src" = isnull(called._src) ? "null" : called._src, + "usr" = isnull(called._usr) ? "null" : called._usr, ) var/index = 1 for(var/arg in called._args) - parsed_args["argument #[index]"] = arg + parsed_args["argument #[index]"] = isnull(arg) ? "null" : arg index++ var/pre_context, context, post_context @@ -72,16 +76,29 @@ SUBSYSTEM_DEF(sentry) var/procpath/proc_path = called.proc - stacktrace += list(list( + var/censor_args = FALSE + if(proc_path.type in GLOB.protected_sentry_procs) + censor_args = TRUE + else + for(var/protected in GLOB.protected_sentry_datums) + if(findtext("[proc_path.type]", "[protected]")) + censor_args = TRUE + break + + var/to_add = list( "filename" = called.file, "function" = proc_path.type, "lineno" = called.line, - "vars" = parsed_args, "pre_context" = pre_context, "context_line" = context, "post_context" = post_context, "source_link" = "https://github.com/cmss13-devs/cmss13/blob/[git_revision]/[called.file]#L[called.line]" - )) + ) + + if(!censor_args) + to_add["vars"] = parsed_args + + stacktrace += list(to_add) var/list/event_parts = list( "event_id" = event_id, @@ -92,17 +109,37 @@ SUBSYSTEM_DEF(sentry) "round_id" = GLOB.round_id, ), "exception" = list( - "type" = error.error, - "value" = "Runtime Error", - "stacktrace" = list("frames" = stacktrace), + "values" = list(list( + "type" = error.error, + "value" = "Runtime Error", + "stacktrace" = list("frames" = stacktrace), + )) ), ) var/event = json_encode(event_parts) + + event = ip_regex.Replace(event, "ip address") + + event = replacetext(event, GLOB.all_player_keys_regex, "player key") + event = replacetext(event, GLOB.all_player_ckeys_regex, "player ckey") + event = replacetext(event, GLOB.all_player_cids_regex, "player computer id") + + for(var/datum/config_entry/protected_entry in GLOB.protected_config_entries) + if(islist(protected_entry.config_entry_value)) + for(var/key, value in protected_entry.config_entry_value) + if(protected_entry.protection & CONFIG_ENTRY_SENSITIVE_KEY || isnull(value)) + event = replacetext(event, key, "config entry key [protected_entry.type]") + else + event = replacetext(event, value, "config entry value [protected_entry.type]") + else + if(length(protected_entry.config_entry_value)) + event = replacetext(event, protected_entry.config_entry_value, "config entry [protected_entry.type]") + var/event_header = "{\"type\":\"event\",\"length\":[length(event)]}" var/assembled = "[header]\n[event_header]\n[event]\n" - rustg_http_request_fire_and_forget(RUSTG_HTTP_METHOD_POST, endpoint, assembled, headers, null) + rustg_http_request_blocking(RUSTG_HTTP_METHOD_POST, endpoint, assembled, headers, null) envelopes.Cut() diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index ed59ea2fad01..c049dc10bddb 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -166,7 +166,7 @@ GLOBAL_LIST_EMPTY(admin_ranks) //list of all ranks with associated rights protection = CONFIG_ENTRY_LOCKED /datum/config_entry/string/cmdb_api_key - protection = CONFIG_ENTRY_HIDDEN | CONFIG_ENTRY_LOCKED + protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED|CONFIG_ENTRY_SENSITIVE /** * Using the API backed admins/admin_ranks requires a response from the endpoint following this schema: diff --git a/code/modules/admin/tabs/admin_tab.dm b/code/modules/admin/tabs/admin_tab.dm index 3aa5f5fd333e..d82dbdd66830 100644 --- a/code/modules/admin/tabs/admin_tab.dm +++ b/code/modules/admin/tabs/admin_tab.dm @@ -257,6 +257,7 @@ cmd_admin_say(msg) +SET_PROTECTED_PROC(/client/proc/cmd_admin_say) /client/proc/cmd_admin_say(msg as text) set name = "Asay" //Gave this shit a shorter name so you only have to time out "asay" rather than "admin say" to use it --NeoFite set category = "Admin" @@ -385,6 +386,7 @@ var/msg = input(src, null, "asay \"text\"") as text|null cmd_admin_say(msg) +SET_PROTECTED_PROC(/client/proc/cmd_mentor_say) /client/proc/cmd_mentor_say(msg as text) set name = "MentorSay" set category = "Admin.Mentor" diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 935e1a5a2a68..1ad555c40590 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -163,6 +163,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) #define WEBHOOK_URGENT 1 #define WEBHOOK_NON_URGENT 2 +SET_PROTECTED_DATUM(/datum/admin_help) + /** * # Adminhelp Ticket */ @@ -804,6 +806,8 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) GLOBAL_DATUM_INIT(admin_help_ui_handler, /datum/admin_help_ui_handler, new) +SET_PROTECTED_DATUM(/datum/admin_help_ui_handler) + /datum/admin_help_ui_handler var/list/ahelp_cooldowns = list() diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 2d3513510c5d..5d05c9fce24d 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -97,6 +97,7 @@ return cmd_admin_pm(whom, msg) +SET_PROTECTED_PROC(/client/proc/cmd_admin_pm) //takes input from cmd_admin_pm_context, cmd_admin_pm_panel or /client/Topic and sends them a PM. //Fetching a message if needed. src is the sender and C is the target client /client/proc/cmd_admin_pm(whom, msg) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index c5110033ba16..2f83e1c3be34 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -553,6 +553,15 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CLIENT_LOGGED_IN, src) SEND_SIGNAL(src, COMSIG_CLIENT_LOGGED_IN) + GLOB.all_player_keys |= key + GLOB.all_player_keys_regex = regex(jointext(GLOB.all_player_keys, "|"), "g") + + GLOB.all_player_ckeys |= ckey + GLOB.all_player_ckeys_regex = regex(jointext(GLOB.all_player_ckeys, "|"), "g") + + GLOB.all_player_cids |= computer_id + GLOB.all_player_cids_regex = regex(jointext(GLOB.all_player_cids, "|"), "g") + if(CONFIG_GET(flag/ooc_country_flags)) spawn if(src) ip2country(address, src) From 4e610ca92c4a6d8211901774e0efe7ea8926400d Mon Sep 17 00:00:00 2001 From: Itus Date: Mon, 22 Jun 2026 04:06:24 -0300 Subject: [PATCH 51/70] Rankspins 2: Eletric Bogaloo -- Navy Shoulderpatches. (#11720) # About the pull request **_Tested, it runs, compiles and works._** Big thank you to Puckaboo2 for helping me with the shoulder patch collors and form. Big thank you to Pointman for helping me with the ranks. Shoulder patches should be roughly the size of USCMC regular ones. Does a few things, among them, adds a new framework to Aerospace force: It changes the ranks from navy to a proprietary one based on the air force(might be adjusted in the future). Overview of the rank structure(E1-E9): Aeroman Recruit Aeroman Aeroman First class Sergeant Staff Sergeant Technical Sergeant Master Sergeant Senior Master Sergeant Chief Master Sergeant Aerospaceman shorted to > Aeroman Buck sergeant turned back > Sergeant _**Officers share marine rank names**_ # Explain why it's good for the game Adds better visibility for rank and helps a bit with immersion. # Testing Photographs and Procedure
Screenshots & Videos image image image image
# Changelog :cl: Itus code: Rankpins.Dm got every navy rank shoulder patch renamed appropriately and icon'ed refactor: Paygrades file got some changes to rank names. imageadd: adds inventory overlays(which work), Onmob sprites for the patches and item sprites. spellcheck: fixed the N36 -> NE6 typo /:cl: --------- Co-authored-by: Detective-Google <48196179+Detective-Google@users.noreply.github.com> --- code/__DEFINES/paygrade_defs/navy.dm | 42 ++++---- code/datums/paygrades/factions/uscm/navy.dm | 92 +++++++++--------- code/modules/clothing/under/rank_pins.dm | 56 +++++++---- .../humans/onmob/clothing/accessory/ranks.dmi | Bin 1361 -> 2126 bytes .../accessory/inventory_overlays/ranks.dmi | Bin 898 -> 1232 bytes icons/obj/items/clothing/accessory/ranks.dmi | Bin 5259 -> 6768 bytes 6 files changed, 102 insertions(+), 88 deletions(-) diff --git a/code/__DEFINES/paygrade_defs/navy.dm b/code/__DEFINES/paygrade_defs/navy.dm index 1ccb820274b0..e09dff6d44cb 100644 --- a/code/__DEFINES/paygrade_defs/navy.dm +++ b/code/__DEFINES/paygrade_defs/navy.dm @@ -1,55 +1,55 @@ // Paygrade shorthand defines, to allow clearer designation. // USCM NAVY -/// NE1, Seaman Recruit +/// NE1, Aerospaceman Recruit #define PAY_SHORT_NE1 "NE1" -/// NE2M, Seaman Apprentice +/// NE2M, Aerospaceman #define PAY_SHORT_NE2 "NE2" -/// NE3, Seaman +/// NE3, Aerospaceman 1st Class #define PAY_SHORT_NE3 "NE3" -/// NE4, Petty Officer 3rd Class +/// NE4, Buck Sergeant #define PAY_SHORT_NE4 "NE4" -/// NE5, Petty Officer 2nd Class +/// NE5, Staff Sergeant #define PAY_SHORT_NE5 "NE5" -/// NE6, Petty Officer 1st Class +/// NE6, Technical Sergeant #define PAY_SHORT_NE6 "NE6" -/// NE7, Chief Petty Officer +/// NE7, Master Sergeant #define PAY_SHORT_NE7 "NE7" -/// NE8, Senior Chief Petty Officer +/// NE8, Senior Master Sergeant #define PAY_SHORT_NE8 "NE8" -/// NE8C, Command Senior Chief Petty Officer +/// NE8C, Command Senior Master Sergeant #define PAY_SHORT_NE8C "NE8C" -/// NE9, Master Chief Petty Officer +/// NE9, Chief Master Sergeant #define PAY_SHORT_NE9 "NE9" -/// NE9C, Command Master Chief Petty Officer +/// NE9C, Command Chief Master Sergeant Of The Aerospace Force #define PAY_SHORT_NE9C "NE9C" -/// NO1, Ensign +/// NO1, 2nd Lieutenant #define PAY_SHORT_NO1 "NO1" -/// NO2, Lieutenant Junior Grade +/// NO2, 1st Lieutenant #define PAY_SHORT_NO2 "NO2" -/// NO3, Lieutenant +/// NO3, Captain #define PAY_SHORT_NO3 "NO3" -/// NO4, Lieutenant Commander +/// NO4, Lieutenant Colonel #define PAY_SHORT_NO4 "NO4" -/// NO5, Commander +/// NO5, Colonel #define PAY_SHORT_NO5 "NO5" -/// NO6, Captain +/// NO6, Major #define PAY_SHORT_NO6 "NO6" /// NO6E, Commodore @@ -58,16 +58,16 @@ /// NO6C, Senior Commodore #define PAY_SHORT_NO6C "NO6C" -/// NO7, Rear Admiral (Lower Half) +/// NO7, Brigadier General #define PAY_SHORT_NO7 "NO7" -/// NO8, Rear Admiral (Upper Half) +/// NO8, Major General #define PAY_SHORT_NO8 "NO8" -/// NO9, Vice Admiral +/// NO9, Lieutenant General #define PAY_SHORT_NO9 "NO9" -/// NO10, Admiral +/// NO10, General #define PAY_SHORT_NO10 "NO10" /// NO10C, Chief of Naval Operations diff --git a/code/datums/paygrades/factions/uscm/navy.dm b/code/datums/paygrades/factions/uscm/navy.dm index 5b16509313f2..e445a7b42f8f 100644 --- a/code/datums/paygrades/factions/uscm/navy.dm +++ b/code/datums/paygrades/factions/uscm/navy.dm @@ -8,78 +8,78 @@ /datum/paygrade/navy/e1 paygrade = PAY_SHORT_NE1 - name = "Seaman Recruit" - prefix = "SR." + name = "Aeroman Recruit" + prefix = "AER." rank_pin = /obj/item/clothing/accessory/ranks/navy/e1 ranking = 0 /datum/paygrade/navy/e2 paygrade = PAY_SHORT_NE2 - name = "Seaman Apprentice" - prefix = "SA." + name = "Aeroman" + prefix = "AEM." rank_pin = /obj/item/clothing/accessory/ranks/navy/e2 ranking = 1 /datum/paygrade/navy/e3 paygrade = PAY_SHORT_NE3 - name = "Seaman" - prefix = "SN." + name = "Aeroman 1st Class" + prefix = "1AEM." rank_pin = /obj/item/clothing/accessory/ranks/navy/e3 ranking = 2 /datum/paygrade/navy/e4 paygrade = PAY_SHORT_NE4 - name = "Petty Officer 3rd Class" - prefix = "PO3." + name = "Sergeant" + prefix = "Sgt." rank_pin = /obj/item/clothing/accessory/ranks/navy/e4 ranking = 3 /datum/paygrade/navy/e5 paygrade = PAY_SHORT_NE5 - name = "Petty Officer 2nd Class" - prefix = "PO2." + name = "Staff Sergeant" + prefix = "SSgt." rank_pin = /obj/item/clothing/accessory/ranks/navy/e5 ranking = 4 /datum/paygrade/navy/e6 paygrade = PAY_SHORT_NE6 - name = "Petty Officer 1st Class" - prefix = "PO1." + name = "Technical Sergeant" + prefix = "TSgt." rank_pin = /obj/item/clothing/accessory/ranks/navy/e6 ranking = 5 /datum/paygrade/navy/e7 paygrade = PAY_SHORT_NE7 - name = "Chief Petty Officer" - prefix = "CPO." + name = "Master Sergeant" + prefix = "MSgt." rank_pin = /obj/item/clothing/accessory/ranks/navy/e7 ranking = 6 /datum/paygrade/navy/e8 paygrade = PAY_SHORT_NE8 - name = "Senior Chief Petty Officer" - prefix = "SCPO." + name = "Senior Master Sergeant" + prefix = "SMSgt." rank_pin = /obj/item/clothing/accessory/ranks/navy/e8 ranking = 7 /datum/paygrade/navy/e8c paygrade = PAY_SHORT_NE8C - name = "Command Senior Chief Petty Officer" - prefix = "CSCPO." + name = "Command Senior Master Sergeant" + prefix = "CSM." rank_pin = /obj/item/clothing/accessory/ranks/navy/e8c ranking = 8 /datum/paygrade/navy/e9 paygrade = PAY_SHORT_NE9 - name = "Master Chief Petty Officer" - prefix = "MCPO." + name = "Chief Master Sergeant" + prefix = "CMSgt." rank_pin = /obj/item/clothing/accessory/ranks/navy/e9 ranking = 9 /datum/paygrade/navy/e9c paygrade = PAY_SHORT_NE9C - name = "Command Master Chief Petty Officer" - prefix = "CMCPO." + name = "Command Chief Master Sergeant Of The Aerospace Force" + prefix = "CCMSAF." rank_pin = /obj/item/clothing/accessory/ranks/navy/e9c ranking = 10 @@ -87,96 +87,96 @@ /datum/paygrade/navy/o1 paygrade = PAY_SHORT_NO1 - name = "Ensign" - prefix = "ENS." + name = "Second Lieutenant" + prefix = "2LT." rank_pin = /obj/item/clothing/accessory/ranks/navy/o1 ranking = 11 officer_grade = GRADE_OFFICER /datum/paygrade/navy/o2 paygrade = PAY_SHORT_NO2 - name = "Lieutenant Junior Grade" - prefix = "LTJG." + name = "First Lieutenant" + prefix = "1LT." rank_pin = /obj/item/clothing/accessory/ranks/navy/o2 ranking = 12 officer_grade = GRADE_OFFICER /datum/paygrade/navy/o3 paygrade = PAY_SHORT_NO3 - name = "Lieutenant" - prefix = "LT." + name = "Captain" + prefix = "Cpt." rank_pin = /obj/item/clothing/accessory/ranks/navy/o3 ranking = 13 officer_grade = GRADE_OFFICER /datum/paygrade/navy/o4 paygrade = PAY_SHORT_NO4 - name = "Lieutenant Commander" - prefix = "LCDR." + name = "Major" + prefix = "Maj." rank_pin = /obj/item/clothing/accessory/ranks/navy/o4 ranking = 14 officer_grade = GRADE_OFFICER /datum/paygrade/navy/o5 paygrade = PAY_SHORT_NO5 - name = "Commander" - prefix = "CDR." + name = "Lieutenant Colonel" + prefix = "LtCol." rank_pin = /obj/item/clothing/accessory/ranks/navy/o5 ranking = 15 officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6 paygrade = PAY_SHORT_NO6 - name = "Captain" - prefix = "CAPT." + name = "Colonel" + prefix = "Col." rank_pin = /obj/item/clothing/accessory/ranks/navy/o6 ranking = 16 officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6e paygrade = PAY_SHORT_NO6E - name = "Commodore" - prefix = "CDRE." + name = "Wing Commander" + prefix = "WCmd." rank_pin = /obj/item/clothing/accessory/ranks/navy/o6e ranking = 17 officer_grade = GRADE_OFFICER /datum/paygrade/navy/o6c paygrade = PAY_SHORT_NO6C - name = "Senior Commodore" - prefix = "Snr CDRE." + name = "Group Captain" + prefix = "GCpt" rank_pin = /obj/item/clothing/accessory/ranks/navy/o6e ranking = 18 officer_grade = GRADE_OFFICER /datum/paygrade/navy/o7 paygrade = PAY_SHORT_NO7 - name = "Rear Admiral (Lower Half)" - prefix = "RDML." + name = "Brigadier General" + prefix = "BrgGen." rank_pin = /obj/item/clothing/accessory/ranks/navy/o7 ranking = 19 officer_grade = GRADE_FLAG /datum/paygrade/navy/o8 paygrade = PAY_SHORT_NO8 - name = "Rear Admiral (Upper Half)" - prefix = "RADM." + name = "Major General" + prefix = "MajGen." rank_pin = /obj/item/clothing/accessory/ranks/navy/o8 ranking = 20 officer_grade = GRADE_FLAG /datum/paygrade/navy/o9 paygrade = PAY_SHORT_NO9 - name = "Vice Admiral" - prefix = "VADM." + name = "Lieutenant General" + prefix = "LtGen." rank_pin = /obj/item/clothing/accessory/ranks/navy/o9 ranking = 21 officer_grade = GRADE_FLAG /datum/paygrade/navy/o10 paygrade = PAY_SHORT_NO10 - name = "Admiral" - prefix = "ADM." + name = "General" + prefix = "Gen." rank_pin = /obj/item/clothing/accessory/ranks/navy/o10 ranking = 22 officer_grade = GRADE_FLAG diff --git a/code/modules/clothing/under/rank_pins.dm b/code/modules/clothing/under/rank_pins.dm index e988b8cf8f1d..e46279a077de 100644 --- a/code/modules/clothing/under/rank_pins.dm +++ b/code/modules/clothing/under/rank_pins.dm @@ -297,111 +297,125 @@ ################################################*/ //ENLISTED /obj/item/clothing/accessory/ranks/navy/e1 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE1 + icon_state = "ranks_ne1" /obj/item/clothing/accessory/ranks/navy/e2 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE2 + icon_state = "ranks_ne2" /obj/item/clothing/accessory/ranks/navy/e3 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE3 + icon_state = "ranks_ne3" /obj/item/clothing/accessory/ranks/navy/e4 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE4 - icon_state = "ranks_nco" + icon_state = "ranks_ne4" /obj/item/clothing/accessory/ranks/navy/e5 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE5 - icon_state = "ranks_nco" + icon_state = "ranks_ne5" /obj/item/clothing/accessory/ranks/navy/e6 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE6 - icon_state = "ranks_nco" + icon_state = "ranks_ne6" /obj/item/clothing/accessory/ranks/navy/e7 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE7 - icon_state = "ranks_snco" + icon_state = "ranks_ne7" /obj/item/clothing/accessory/ranks/navy/e8 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE8 - icon_state = "ranks_snco" + icon_state = "ranks_ne8" /obj/item/clothing/accessory/ranks/navy/e8c + name = "rank shoulder patch" rank_short = PAY_SHORT_NE8C - icon_state = "ranks_snco" + icon_state = "ranks_ne8" /obj/item/clothing/accessory/ranks/navy/e9 + name = "rank shoulder patch" rank_short = PAY_SHORT_NE9 - icon_state = "ranks_snco" + icon_state = "ranks_ne9" /obj/item/clothing/accessory/ranks/navy/e9c + name = "rank shoulder patch" rank_short = PAY_SHORT_NE9C - icon_state = "ranks_snco" + icon_state = "ranks_ne9" //OFFICERS /obj/item/clothing/accessory/ranks/navy/o1 name = "rank boards" rank_short = PAY_SHORT_NO1 - icon_state = "ranks_officer" + icon_state = "ranks_no1" /obj/item/clothing/accessory/ranks/navy/o2 name = "rank boards" rank_short = PAY_SHORT_NO2 - icon_state = "ranks_officer" + icon_state = "ranks_no2" /obj/item/clothing/accessory/ranks/navy/o3 name = "rank boards" rank_short = PAY_SHORT_NO3 - icon_state = "ranks_officer" + icon_state = "ranks_no3" /obj/item/clothing/accessory/ranks/navy/o4 name = "rank boards" rank_short = PAY_SHORT_NO4 - icon_state = "ranks_seniorofficer" + icon_state = "ranks_no4" /obj/item/clothing/accessory/ranks/navy/o5 name = "rank boards" rank_short = PAY_SHORT_NO5 - icon_state = "ranks_seniorofficer" + icon_state = "ranks_no5" /obj/item/clothing/accessory/ranks/navy/o6 name = "rank boards" rank_short = PAY_SHORT_NO6 - icon_state = "ranks_seniorofficer" + icon_state = "ranks_no6" /obj/item/clothing/accessory/ranks/navy/o6e name = "rank boards" rank_short = PAY_SHORT_NO6E - icon_state = "ranks_seniorofficer" + icon_state = "ranks_no6" /obj/item/clothing/accessory/ranks/navy/o6c name = "rank boards" rank_short = PAY_SHORT_NO6C - icon_state = "ranks_seniorofficer" + icon_state = "ranks_no6" /obj/item/clothing/accessory/ranks/navy/o7 name = "rank boards" rank_short = PAY_SHORT_NO7 - icon_state = "ranks_flagofficer" + icon_state = "ranks_no7" /obj/item/clothing/accessory/ranks/navy/o8 name = "rank boards" rank_short = PAY_SHORT_NO8 - icon_state = "ranks_flagofficer" + icon_state = "ranks_no8" /obj/item/clothing/accessory/ranks/navy/o9 name = "rank boards" rank_short = PAY_SHORT_NO9 - icon_state = "ranks_flagofficer" + icon_state = "ranks_no9" /obj/item/clothing/accessory/ranks/navy/o10 name = "rank boards" rank_short = PAY_SHORT_NO10 - icon_state = "ranks_flagofficer" + icon_state = "ranks_no10" /obj/item/clothing/accessory/ranks/navy/o10c name = "rank boards" rank_short = PAY_SHORT_NO10C - icon_state = "ranks_flagofficer" + icon_state = "ranks_no10" /*################################################ ################# SPECIAL ################# ################################################*/ diff --git a/icons/mob/humans/onmob/clothing/accessory/ranks.dmi b/icons/mob/humans/onmob/clothing/accessory/ranks.dmi index aaae33ad5c3844c932e2a341f69a24bfc0c788d4..677b69136780e18103853773e0a5af914b08395f 100644 GIT binary patch literal 2126 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 DA-6w+ delta 870 zcmcb>*~G5e8Q|y6%O%Cdz`(%k>ERLtq#pqB0S;y$sTDu}DUdRlsH$D>Y8^MZZ_9xL z2PD%XTY-X%B|(0{3=Yq3qygDHRUr{2E~&-IMVSR9nfZAP3>9;xPCeUo$UwyH`q^NX zyWRU2>&0kv?byKlnMvr)THdN+RZh|S_pGk=D*WB$eQM`Y%jH{Q_uk4WUm5qle3gp) z8jHOb9>>M2n$JGE=vGggmS+8ld0i3tP9_sqr5=|q=VL!vT&;3H&@-)e#XA0wN!5o# z*4w{uIMj5n5m&XZx!lyG;iRHZ zUqX>gfry&A!B6JN!59ACt9Z>}D|+~se}WSy_u4@oX4VevhjtwtW(d->-W3W zzt(4n^12YvR3>CHdBIecUX=`GM`6$6h2j?Nt=|(rWzSxBZ^`Tb_pdW|NBq2}9`;op z7&0$BT^vIy=DfYz?RVHfz~$n#+RMlP*Xt#?W@WrxQy_h!=lw*dB|4(A8Ohn<2eMch z7!nfZn*H44`8ug~cG=H8-nWx%-}3*gxlzA7>F*4`pEX{`r_WoyssG^$OMZ7>DL!CC zfWYTnK0n?+|0X7^8N(!2A97zjm+9Xog=NhRx~hsSASP**+sWji3$e9vNOJo zt{3~qc=vW2(7bPJs~K*+$q)K>y63;!!TQzTPdClryVne|>5udJe|2#i_bvGO$Yxiz z%rr#Gp?A z7btDnm{r-UW|j*W}8 diff --git a/icons/obj/items/clothing/accessory/ranks.dmi b/icons/obj/items/clothing/accessory/ranks.dmi index 412a559d2bea723610af769d5e843880589288a0..1ce965ff6b83809df6a78970bb8a5e398aef508d 100644 GIT binary patch delta 6705 zcmYj$c{tSH7e8YxGscXpBV_Dk8(WB)v6dxEgo+qKb}3upZHzTLDYBQW5h5ZPOWCvU zdzPfJ?+kwW{Jzig`@Nof?>YB8=f3{9=RW72``jqe4LQL`L;V{J(2GzC3JM18n;N$% zC@8W2Ivv%yrYJaZ(OekXoI^CMkjG7}0 zV&b)K--|zLvTLGRK;xK#$you@%^FX>qSJsRq)FlJ#iR^EEa6M*8;;UJ&-$^oA*bqY zeWAhOsAspM(zLG}RfOj`@hp9EG2ysxdh2-s=TwTf68zrv6$LAnD+;*u82FXJ)!zdy zCg4>)i?bYO{^4+(|BH8$K=|r`%20P1w^r_FY((C+AmZzSo zxGtRY)MI9YzB1LuGpt=nh+Y1Mv|m)avflLe!TyoPJUdsz>;ZMFl%jECD)grbHjjOa zGAV9yK%Z7D>;X3Xj?#w?+#Ptar+IR75tr#=*=1Uj`WAgGtDjSwF`$}xv}qET@2!$N zU&v`NbWoY9JIkz>H}%xZn88GH^o#YM;1c>_$oE<#zWovMP^eA$3 zERE0h*!^*I4>XHL@cMJI0hgIU%Q_W}l;l~&JSOdT769Y;TKnygtQ1@P`*#|%Eh8|V zC2;U?d}g$mPu;)FLVRF{Sw)O^=D!!mb3O0R`d(zv**@tt`)kLe8{6Ph$zvW52H142 z<1YBL^vmZDreftKMl6wga(ySuv&Zas2;6%Z^uaQfo`E62D&1aaudTS6LXr!6F% z@*~aMW@Bl4>bEq(K+ReKCb`j9&W{JC&{r;3Dv;IFcAESKrVHg)r*CFK6#ELjklv~ES@vfAIyi(XaZ8-z8&iThPlAwk#@u6x z;t9y;p(7JWa@J$K)CuU?qeFjL59MQ^?Jg4p=GGK*J4-xgOV*}PLR!eMb4K}6b@7yb zSG20YTX`Kme4}DWxOtZ3xr2S7sI;8pp?_n^0X3zH`roN%^{nuin_C*F3!|M|(Y9!~ zv2RN-kF20c;5WH-r-6qOfE0zSvuwPacin`W&s$C^z%Ox;i{O_zM~Ea8NCM4_e_Qn+ z$vi%wDsufU9GR#=M=l+9SsgOa0;T&;G2|9+%2g3id8WOMX~b=SUM! zlPjqfCp7AN+hz-+xujt>r&2t$^m-Zk^nc$Aq%f6A>W$tIk^nw3@j6Vde*U|vW8GUT z?a)H`6Wlzi1RJt>`ws>6E4n((=@AP>1t5$cAWJ}e3!j5`=BKk( zzDj|LF<|4oi5Wxp+ZKgW<}f10X4yD7ahrs&645g?c>0Ye`nBV5$=JTX0tYUPPG09k;j)k*U;Xaoqe53vgEyp>g_ zaQ3NR{hN)BM3n)uT1#NXF9ii?<^B>N)@U@qD|k(K%#s=LG&B-S-RW)>V-$-o0)ay% zR&Z-_)be}B$LGnEnmjpUP+ph!tpJ(?0UawS(X2=oiFWNVs^BY{;$N+R8+Co^oVSuo z(Le$!99d9XP*AqcN*E>wR5ZLx4)&YVKa!9U~haLEoaQtLkaWCqYP9c>Qy z4W7c(Ok_YTo;x?pZnt3jH1C9-96T^SI602{1HDh7z6+@ZQ2HnbpPyM4FUWtOUJ>}j zC@1Lgw*#Cg_$ZJO>;be5l zAX_<|jpvDMhRERJ$Wp5MLl5)ibh<&dGGkJalBCV7;oawYciHTRkAhZyxsHR9wzj-0 z)zVk*dCf|RU*V?_o-{|;mm&%zr(X$@6O|%DEK?a8MOubRfjfwPnP_3etQVDXJEAz_f_XL8sKvY>n{C=?U?TX-U#hjw6Ui5N&9Wz7$BC%Ls?JKy z2&)jH)ht%;?E=|12cCZ28ejoAlp^RR33MYa_<&gQqBwzr(V{TEQWomS*y&yJ><*8r z1aUMV{K?!o-&?woCQ#6E0EjEu0tpV*eWwdisEg+x2K--knYG z&wsHxzjfxM{`CA)$*$e08`9_DbNYX^&3{@eguiJjdWrNXcaFo`IuN*>D_XstrOBab z6Lv3E!|%2Z_;Q*PHErLUWS!j+t#qC03{?v|Q6{>DMM#zOJIxo`_LP9t9wS!=p#`^> z4(7MXDjjAXlL4gLqN}i(>lFfx2f|&phHnSYgTmqh>D! z&gzE)B|yY=6R>na%T0pn z*_$)CC2iW}hC^QEGM@NFrQTMzV`N(l!YStQu!`bnzRAq>8c>?z)XfaKUg0n3GBYUn z;+e#i=PKmfT%OL_4BeD~$l?XBl1pHz#xnl?Jjrpg@v&GA{ zVO7#Se>7R}N`uvi2l&F239w}PHUk)>`b>=iCU7P{W3XlQ$;%^9aX~G?tW|3;Yn)b> z5=}&k97_ElTCDxDJG(~xsQFPJ-YA<7pYmG*@lMc>bGxud{UPlY1{PaIb5^+h?83=N z^Zx++lk+aKNgo`V@(+7L&eW4qH-Hs6=1k&$@%tB2wOJdE)9UFidwg7E7H-8X9JO-) zNj`;H!zo)ch`UZy=JUSv?s1d{%A=etae8<^%7BF`Dqe7O*c~BVV3nE%YMCoOx)X`R zmvToj?p=yNcnJAEANYYALu3m8C&$K7i`K14Zz$L3$B$NdX?De)7+XK3d2_yE?zhjX z`FWXl#-8VR^f#*#LbUW>L1Q8tr zd@nz2wE8oTv5#QzIrnFS?K9gDy~s&CJ|6hxF8@)_yE*_*8=DBjHGUFW7rc+Lm! z-z`KdR)+KYD?ou$X2iQ}Ef0pYYWc2dPmj4!-sRs7^2(UA6OMj{Y>3nn{7suD-vRmeyJD!F0BS2{--E^y@MD$}0^-yRtI9D<&@W`Feq z%vh*PQ_J^lvGmmA*`%J4EFM`&g@ew!vU8Ah2%ru8mm1uie}=@JpC@Bwm4C=&_?DCk zKrmgY5KM0-1T&NdF__gmKq@l3zrecoF?&^~MNZ7s%;wUW49AEur#AY&V{BpVEj`fP zV;ArUs7v&Qx7?9#u@m)}Llsi29SW|Re`o7mQ;PJip2%b!?jJEG-JE$=|4ZStxynx< z*kh63akT=;ekt*ar7ivF@tR}DwCO8=16VKobgvNSMyv{cQKT`YE>rwF>ao zYtmhsPfQ15cvT_z+s{PxsFzU$HT(w9umDzXUyFZkf}<9=345`(>r_pRpDqPdgL0WU zPb)$OP$E({*!4ZH!haRv(iB6Gtu3mBL2s-@#<=@u#7&8+D0IOn13~OnL)XzqTs%so zn#>#Er$xGU*Zi5scH7IzZzkf_+cO6uBIA}2IWky9{S9}9ZynQ4^$qyDkm1?uGgP5= zrc3r&%L&~3-1_Pkl=9y*%31*)6dRGOAPV(feJ8TK+{B7$WBd|TXODmp#KJHZDKOs& zTB5av#BKWn^+X8*zdw%U72B(98#1LQo?1hxEAaRZhW5mx)s4rN`ZG%TLbUskZX$1Y zELPYaQc0!`Qw`3Z++v@-w8)|Ap=n@fjnS28%wtLEL)0=w(OeLP0Fzh(ZWsgzEJ$Z#5<D|tbEbC>A%^s^GMi7)t z5|uyE^HRNwySK;cis1$6D*5Z&!Wdf`nx?!8_&zGkeBg2z@IL+8`@F0|Nf9x<&Tqd+ zmoZW=XMlV=gTg-!Mf4refr^jjbsatQi~FKu#!g46E5Q{_&)V;_xN1+AZf(mP2He|w z`6@84Hv27F;`l{%F^&ng5vLX9gv`kr$bFYUWla}loiUyhQI z^w-hF4AAwn*dIc^ki@3fbgZj8$`1o3N^tQNoWSYZW$72oq{7Q5;{8>$jIW%C`*+ps$i|>Fakz_lp%6+e zs{^9^^~G^vAHE&*58ejEAnhOrL+rrvlirzm{-;%OaTk)W+4c8igU#D_WQVAYyY8xn z0<7sxPzx~nJBf`?xp|zI7)weDmu_9!=LLokxE@u@xQ!N`qSxPdKI!B^q_AK9epb>VU)g@$}y)jB7*@h2T(d~^ab}?1#uXcs730V3*Iy~ zmpXHQaYFsOsSX;g^szA|CrT?+YvKAZa8s)hn9# z;Us!3vQ4z6BzT!=37nmw1ak1<-OzJ$W@G!xZ9sfj*X(+W%{`j<8-Ix^z$u&#=!yGR zmQh^0In9y6eq#vpKh^q zqb{^z7+YMV5PKh_{BuHP+1vI~f?HP+I}`o|=$*{3DAbe3FSJvr{SGEK2)jxM8tTi} zNounqUideGdWAC-5EjcCJqwnb?5aKATO_vAYDm$U^dx+T%!b`B3J#Cg4%Y2RrY8{@ zDWNK`oY;0v@yWmWB3MA0Mn}@(J2s5il$p+wg>;I-Uu!+e{s^AuYU%5{5M-*iE(ghc z8YT?xqhe8nsXv-B|0P3Y0dcPoK#NFoos0;<*hqZu$&aCHyku@f^K4_k!>JzewxY-P zuJo^61(gpyAL8##KCjI6DGP*v=FRyHJ?CoKg_Ph5rqfzM*#L1aoXZdosc^7@soxC~ zmLlj2Rex-g@Y33$eZEmNsW-6lNEeh|{uMy>jN zP_w1L4eJT2x?zlS&EzYWgNy!U4JCh=nrqqLhx7kQsukY4n3DLW4_d~p({MZ(D_Z8G zDB;!NWr{$=$+ir{1@$ntUy^6}zd|l7<$T5<7q)yZB;>-{ z>Vnr{p2tdIB>$J zU+Y;EE*jA1_&+z7G&vUw1N|Yi9qMY#|F~R}!eaim6>8Lg7r@OlP-8u>B4$D)q;;+w(KZn#g&200wP0vRch=FhP`Jf%)sVy z5D!XjTb4Tx9zrQ|K7Z7Rh<~3N8&1`7KENIG<~K7p0XwCfJSKha)$`9A3T;h&jZ!u1 G;Qs?Q#;AS( delta 5202 zcmYkAcR1T$*#AQiJE9b|Ld;S#R*ldIp$Muit=ej}_Ff;NW{se>k}9pezm?jXqBTkf zrDm&2)kC1VTKpsy{d0slu)R>A!JJbu-)h(Vd;086F~L=k*l6rbf3wnm@igJkRF@o0QqO1Ui?mPGY=?N&mNs9Hf^rV^_=Ja zTI#RtU4Oc}`9{pQ`kR;`dHR5Sj5MSdO`=~yHQxR2jr*7UMfk9-e0y>`mm+!!vcdgd zY~b_zhn+kdcbLZ0eK#T|f=X^{y>|F1^u+fE_nc6OA|ga`jvz1>h@$yp4Yg0*xN}m|4^;`s5Ez?0 zJpzGP1@*MG%mVW_9z4YtkyuM&3&LwhW@p`5xRYv;XJ<)GSG875ppPC8q+XYkPi80Z zlwXbHNf(m?I2mc8x@=@P8Lj(!Qk28vmiR-|64z5uOZ(#A;|{p!lWF$}t_*^QiB4Go%+5bko#?=YsZuG49 zS4Zr|cc7oKt+l|kGh^o*IC@)T8z zLaF~eK*cic2l0h>NyzMG{+y*bZuS1ze6OmvSx8TCdPj|8!^6YlBlJZ(W{W}b)v1#9 znCnShCZ~QvC4qD3qg)1OaLD&o99J&J7{#PMU*V*SKXh4zS*xqEA`Q^E9yl8Ru=vH4 zE6`$9)%0jDt(RSI!91j3z@?zSl2_{e(ah2AB3$bPiL3^eQLqVulQtGT7@HjvLF96w z{pQp(UF~mq(iv9XE6nZ$`B%21T%)2&8Xe}gEQ=SIw8o-QeBtpXLV_Hm~}PD{FG zQ=XP}76NaEYWni4F-(LNg`JcjcmKkF{u%G8hgu!&lan?y}c}G;JLQ+aIq6aQ`po3quk<7M%|$oH5h{Y`SP~9CM^r> z(PlyrVx6?6HY(UiSaBz90yC}>3avWARc4)LAFTv_?Qgz&+PhIA9V>ed4Tu1%M8|G;vb z4ePaS#F7^Jz61k@oP{wohuPu`keGfE!|#{E{=NbgMDDq_&C$o|I7nT>Qu@>1^<*sZ zVy=0X+|aJ^FfE4cz|vHPz$3$OR1ZJ>5I7hdaBrE7x1~8IReJKEKd|rHZL=Jv{ESPu zkh41OTsZ&DD+5=7{cXC}5K{BTJKJ$iooATvuMiImqZNX2BfS>Z{5`NqFo#`2`@oEl z=#7uT!*XmJ%Q8`Gx&`1EfyvFSpi&(dd#hOGJmTw=ak|Cy##fua^5f+H_|NS53(K%| zC(0K!UsCa;t`c0^-wKLj!S@H{eiryp+V=C3kkXD^>!mG50o1-y3+f3MKu5?F^eWXx zY={ByKihzr0ou?rp--v-$`5sfuLxrShgL z1PAT#512u8BSauH|9Rj@OEZU$Rg9E#mB0rh^&byllP3hN1N9ykk_5gTOdh;_K{6(c z&79fP20eNX-?L{dZFe!9^l3!8otp^wv2lD)ope{Y3`p2fiP!R+V>h*-5;tens%*7~ zx@u#&$!`%S1b76D-WeQwcM@8*$YQ7|GHg#g)Qsqase9KjsaxYv#R=$yM1DDKhstfR zNx#c;O5Mt_M3X`1#psG(v7cJ1B$>tQ%S)+5x3@Xxo<6JB{|%xmX>4|z5*LC=4zVj8u@?AYb95UXk@W9}^vfK{JT8g_{u zp-$h;ITY|M`VY=hUe2iO43LmiREl#?m1*h@2emBatqJM$Im3!Oa%?Ar070+htMl_8 zy&7b0-@c7yr1VUX{)_mKIKHxEuuaVSBX%c4?PkUZ9RA+NtDwty&HkTX#S7U|@X{mA zg)o>e#Uvs=<06bqZBi`RIko5?ebJ3vfm18)K04oS0~l{E(qH}#FpbsjCl|-`eNS+f z!JkuFi@f3`k5A4P4$pRKHgR5q_8F8T{=~yE{4aC${CaQ4Mjx-;<2b>%@+WBMq>u7U z!q72BSIkFzg6E>tbA@2+QihqN%2e8k@X2r6BIm7!oVZ))Z;4V04t; zmO6%N=AOmy>E?1V|R&x#}Y#Cs#2 z>%a#G?mpO7IoIm@pc)A3PvX}uFnmtJV-m&M^l*ZS@FW}QXdEnxkT6Puk%MF zVM_rzr)4y=LWN%j?XVMEBR(-qZcUS3=S_KB1RLMmtLG%Y)TU4lpEF8H*9r7DpUfxTD=Is{4tfbGhlJ6xo9yxX&zdaQSdur*1yAeTBfvUYGhR^;N) zzyOV>1g^1l&9Q)B!i1(clHYx$fBha1m6h*pK16_* zC0%o8rR(Civwi9t7vb{cfCmMs`iU~qdiLSJ=F%9Q$zqaiE7PCKSaZJ9UOoMxuygXZ zrqmJC)lT0qTJ>gK&B7Z9ou!J~&--k`Gcv4gFwrOh;lD+gD5h6HU~DQg>P{ zrCUF{xvp{KtiISe5K9F}*wJ7MnR=~;-AVGf{P3;c3{TIpKy|0zF3PxtUPWK-O-#WH_TiN7T83k|dNur0 zOc{F5%lm15K40`TPm`0;%m!8K7J4pyl0e{mKnuWntm{DXW;dQ>OWOHOG+bBSH0E1k zv{d=vpm0L@rc-ziHFIr%z;G;7@FIcBS_kT||5cvHi!mge(AzoIYZU^0_ghm_{X$B8 zF0FEkt3R3+e&>`%D#m6{0j&()RMg=`akgKm!v!tTHE`PXa{j3=MkcqiYpJDPpB(_^ zHBD}oI)vK0#ub$=8hIiW`#EF{b4UXD7>;J^VQIsd94HZD<5+tBmYs0t(>^|=eiZri z7x0EeGe2}R)|lfzk18x2n+OfZL+e0ZiUJV)5;rce4om;e`Vcy zne^-wa`5Yv#s4maLhS;7d8!IetUN#}_-xD=wY1JaTAJaLc{{1#{>%BG>;rSW=(A3x zHdc<0XHVF)ccNZ1@huDB9N*b$UhVSC*rO}12FYFe@w(_I?Tz3ea91lGj z^pX(q+80h2S2J5@y?eMtZs^$$hJlVC=l87-QT6rlSbY2Ll+u$1j&Ak(8*N8BszpxH zC2GET@An&Knlr{Hd7qqkQ}Mq28k$4&_%z_W#yk}6&U{^NqOP9n`jnmuHod0Q__uVq zD)#7r>ak)EY5GySK0(CV1VC$(Sqx{jW~9F+U}hoKLKjK_!H~FDe{9w{=<4S3-p@DO zqMcZlaE%+}D=Je}Zc$u+$;`lXsCDE#lSof@wE5!Q-AR^Ib?sXLwf>Lijd{)0SSJ~( z5on)1-P}+N6YMLRW|7IxA*0C+J-RlAoC?!e*ylwaBwP_ph;;_mnCGhFIez?(bsqU< zeeRpenXjl+HLyhl$dO1{knsU-w->>PLD*7Yq)avNsETEBt7qsgk`f8sT1-+-=JL~Z z!o4Qnr<0Yo7S~`fx)29q^9O=9&}^mi=kF&<`=hUV!Et&+1$o6L|D^>!28&yppoIox z{dNhtJ1ju0onRC|7o=N@#^-$*b^if=#Y@Z?*o@fDFtWv5IGQhisR+JXRv`}U3Om_; z^cK*aSyJ9Rq^V<9efyHrvz32_N9Ol_h?#mc`*>X0`S9h&AkXbkM|TkLU6|5R$iXFd z1tL)^>>d>N#yXk!zKOM1Zisf&KfA+z=a9Q~RZ6uvhioRaOqB>L*{9+@&|J(_cl30 ze@~-nw+`pWLUQP-9J$OQ1OQqCrff^FhckYtKKUlk{?%J+64R1CkMB5C4UCkxwu!kFxM6q+sl01(d7oEKE0j9r zay(TuapG*vToAiOEY{l>95l#%Nn0TT-3&eP0{*Z@LBwUr82m8@uvpF_R{vWtUztt_ z%UCCpx1{9@OO#}b+3$!SNZ_>SWDeA$sMFygg4{i~IL~6bOYx1-l9$AyI6b;P#n8Sk z{V*Qc%OezRo)yK3U(*av=6=;2Yzg_+vBePB)$w&QK0@(XKu{z{)!!?32z3O<>vHph zBt@g8;6f%4pU_Vtprbz#$teQS+R5-AUEbRC&5xPZOeqw)W{kYv)@_~N9b(brJWs>! zAek-~R_GeW>|$X(^3e=|rLPN<(DCNX>QZk5M?#W1iZRfkV@l7{_xs!IfnN03MX6Q< z&eK}!ot%{XUvUmr_|K;c-#SElWgr>hX0$WdI@spUS5-PA2FH#H@XXgQ8p@YB|{sp}3PBZ7ldiPQ3nQ9PB%#*0pg)UN=*$l3N>neWnZ7(5CZ6=caK7 z_Ze5kw$)u)!4=~{5r}$bQoqP2e&r&ZCSui%c$`eeJo>T1(nF3$lk9rsuCw%1f635F7YgQVDAO8V;C$fTkQ`udU=&wkm!$H z+lJ}NZxvhNhPG!LnT1!l{^y%SlJ%2TIu}6~lL?BZKwxbm_-|X#v(fCEWRz&y|NjE= z{}z;Kx}8o$zusKZdq{Mf3C7iDeVUVCT!;Ki!PRrCe~U9{L4j#rfe%_omNjHIP8m6~nU{Cu z(vNx@kI?jdaRI~lZxs2j%{tr$c{LH(RgkOxUSGuT3$qdt#@8z`#X+s*G;;OayZ{eM uOl48E3xUPNr Date: Mon, 22 Jun 2026 08:12:25 +0000 Subject: [PATCH 52/70] Automatic changelog for PR #11720 [ci skip] --- html/changelogs/AutoChangeLog-pr-11720.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11720.yml diff --git a/html/changelogs/AutoChangeLog-pr-11720.yml b/html/changelogs/AutoChangeLog-pr-11720.yml new file mode 100644 index 000000000000..c524ab9ba039 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11720.yml @@ -0,0 +1,7 @@ +author: "Itus" +delete-after: True +changes: + - code_imp: "Rankpins.Dm got every navy rank shoulder patch renamed appropriately and icon'ed" + - refactor: "Paygrades file got some changes to rank names." + - imageadd: "adds inventory overlays(which work), Onmob sprites for the patches and item sprites." + - spellcheck: "fixed the N36 -> NE6 typo" \ No newline at end of file From c301ea1ef6d06d49a5df0e4464da7738293be208 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 08:12:27 +0000 Subject: [PATCH 53/70] Automatic changelog for PR #11902 [ci skip] --- html/changelogs/AutoChangeLog-pr-11902.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11902.yml diff --git a/html/changelogs/AutoChangeLog-pr-11902.yml b/html/changelogs/AutoChangeLog-pr-11902.yml new file mode 100644 index 000000000000..cc3d101e6d1c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11902.yml @@ -0,0 +1,4 @@ +author: "hry-gh" +delete-after: True +changes: + - server: "events sent to sentry are now scrubbed for user PII and ignoring sensitive datums, procs" \ No newline at end of file From 48d10bc5bdda84bc2184e2aa4b91a1c46e8decf5 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Mon, 22 Jun 2026 02:07:50 -0500 Subject: [PATCH 54/70] Fix weird as usage for 516.1682 (#12484) # About the pull request This PR simply fixes a compiler error exclusive to 516.1682 # Explain why it's good for the game Fixes image # Testing Photographs and Procedure Compile game on 516.1682. # Changelog No player facing changes. --- code/datums/world_topic.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index ccac5b44cf67..cd761a0de402 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -94,8 +94,8 @@ /datum/world_topic/playerlist/Run(list/input) . = ..() data = list() - for(var/client/C as() in GLOB.clients) - data += C.ckey + for(var/client/current as anything in GLOB.clients) + data += current.ckey statuscode = 200 response = "Player list fetched" From f0fcb30a40e80039edf4ce7da37504dd86fc1f99 Mon Sep 17 00:00:00 2001 From: Danger Revolution! <142105406+DangerRevolution@users.noreply.github.com> Date: Mon, 22 Jun 2026 08:52:53 +0100 Subject: [PATCH 55/70] Lowpop Rounds with no Surgeon will have autodocs be upgraded + become free-use. (#12428) # About the pull request If by 00:20 there is no Doctor, Pharma Doctor, Surgeon Doctor, FD, CMO, Synthetic or Research - then autodoc upgrade disks will be raised on ASRS. As well as this, I think it is worth considering removing the skill-lock on the autodoc but I'm not sure of what roles can and cannot use it and how those roles are present on lowpop. # Explain why it's good for the game This is a contingency for some rounds I see on extreme lowpop where your manifest consists of: XO (MAYBE) Squad Roles and that's it. You are lucky to have a Corpsman at most, and rounds are over quickly, but there are some weird anomalies where there's enough pop for the game to not be Wipe Vs Wipe so you get infected Marines shipside with absolutely no one around to operate. # Testing Photographs and Procedure I added two timers, and set them to 1 minute and 2 minute. I was QM, then CMO, both checks fired and passed as expected. image image In 2nd image, as CMO the announcement did not fire meaning it passed as expected. Added on: it now wipes the skill lock on Autodocs image And now it only sends an announcement image # Changelog :cl: DangerRevolution add: At 00:20, if there is no CMO, FD, Doctor, Researcher or Synthetic shipside then autodoc upgrade disks will be spawned on the ASRS elevator. add: At 00:20, if there is no CMO, FD, Doctor, Researcher or Synthetic then autodocs will have their Surgery-1 skill check removed. Anyone can use them in this situation. /:cl: --------- Co-authored-by: forest2001 <41653574+realforest2001@users.noreply.github.com> --- code/__DEFINES/job.dm | 2 ++ code/datums/supply_packs/research.dm | 18 ++++++++++++++++ .../colonialmarines/colonialmarines.dm | 21 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index 689b1748f3e7..50219f1191bb 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -76,6 +76,8 @@ GLOBAL_LIST_INIT(job_squad_roles, JOB_SQUAD_ROLES_LIST) #define JOB_DOCTOR_ROLES_LIST list(JOB_CMO, JOB_DOCTOR, JOB_SURGEON, JOB_PHARMACIST, JOB_FIELD_DOCTOR) #define JOB_RESEARCH_ROLES /datum/timelock/research #define JOB_RESEARCH_ROLES_LIST list(JOB_RESEARCHER) +/// all roles expected to perform shipside larva removal, used for ares_autodoc_check +#define JOB_SURGERY_ROLES_LIST list(JOB_CMO, JOB_DOCTOR, JOB_SURGEON, JOB_PHARMACIST, JOB_FIELD_DOCTOR, JOB_SYNTH, JOB_SYNTH_ENG, JOB_SYNTH_MED, JOB_SYNTH_INTEL, JOB_SYNTH_MP, JOB_SYNTH_CMD, JOB_SYNTH_SCI) #define JOB_CORPORATE_LIAISON "Corporate Liaison" #define JOB_CORPORATE_BODYGUARD "Corporate Bodyguard" diff --git a/code/datums/supply_packs/research.dm b/code/datums/supply_packs/research.dm index e81617357fb2..fa507d3de2d7 100644 --- a/code/datums/supply_packs/research.dm +++ b/code/datums/supply_packs/research.dm @@ -122,3 +122,21 @@ containertype = /obj/structure/closet/crate/secure/weyland containername = "IFF tag crate" group = "Research" + +/datum/supply_packs/ares_autodoc_check //same name as the proc for convenience of finding it :D + name = "ARES Emergency Autodoc Supplies" + contains = list( + /obj/item/research_upgrades/autodoc, // IB + /obj/item/research_upgrades/autodoc, // IB + /obj/item/research_upgrades/autodoc/tier2, // Bone Frac + /obj/item/research_upgrades/autodoc/tier2, // Bone Frac + /obj/item/research_upgrades/autodoc/tier3, // Organ + /obj/item/research_upgrades/autodoc/tier3, // Organ + /obj/item/research_upgrades/autodoc/tier4, // Larva + /obj/item/research_upgrades/autodoc/tier4, // Larva + ) + buyable = 0 + containertype = /obj/structure/closet/crate/secure/phoron + cost = 0 + group = "Research" + diff --git a/code/game/gamemodes/colonialmarines/colonialmarines.dm b/code/game/gamemodes/colonialmarines/colonialmarines.dm index d23cc82505a4..414b00b001bb 100644 --- a/code/game/gamemodes/colonialmarines/colonialmarines.dm +++ b/code/game/gamemodes/colonialmarines/colonialmarines.dm @@ -158,6 +158,7 @@ addtimer(CALLBACK(src, PROC_REF(map_announcement)), 20 SECONDS) addtimer(CALLBACK(src, PROC_REF(start_lz_hazards)), DISTRESS_LZ_HAZARD_START) addtimer(CALLBACK(src, PROC_REF(ares_command_check)), 2 MINUTES) + addtimer(CALLBACK(src, PROC_REF(ares_autodoc_check)), 15 MINUTES) // 5 MINUTE LOBBY + 15 MINUTE DROPSHIP REFUEL addtimer(CALLBACK(SSentity_manager, TYPE_PROC_REF(/datum/controller/subsystem/entity_manager, select), /datum/entity/survivor_survival), 7 MINUTES) GLOB.chemical_data.reroll_chemicals() @@ -448,6 +449,26 @@ message_admins("[key_name(person_in_charge, TRUE)] [ADMIN_JMP_USER(person_in_charge)] has been designated the operation commander.") return +/datum/game_mode/proc/ares_autodoc_check() + var/list/surgery_roles = JOB_SURGERY_ROLES_LIST + var/surgeon_found = FALSE + for(var/mob/living/carbon/human/surgeon in GLOB.alive_human_list) + if(surgeon.job in surgery_roles) + surgeon_found = TRUE + break + if(!surgeon_found) + var/datum/supply_order/new_order = new() + new_order.ordernum = GLOB.supply_controller.ordernum++ + var/actual_type = GLOB.supply_packs_types["ARES Emergency Autodoc Supplies"] + new_order.objects = list(GLOB.supply_packs_datums[actual_type]) + new_order.orderedby = MAIN_AI_SYSTEM + new_order.approvedby = MAIN_AI_SYSTEM + GLOB.supply_controller.shoppinglist += new_order + for(var/obj/structure/machinery/medical_pod/autodoc/target in GLOB.machines) + if(is_mainship_level(target.z)) + target.skilllock = SKILL_SURGERY_DEFAULT // lowers skill-lock to 0 + ai_silent_announcement("WARNING: Cryopod release cycle DELAYED for MEDICAL PERSONNEL. Releasing Emergency Override Disks for AUTODOC Systems.", ".G", TRUE) + return log_admin("No Shipside Doctor found = Autodoc Upgrade Supplies ordered and AutoDoc skill locks released.") /datum/game_mode/colonialmarines/proc/ares_conclude() ai_silent_announcement("Bioscan complete. No unknown lifeform signature detected.", ".V") From cf360c972217fa1b4b9bb05f19c0ab3a2b6166b7 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 08:35:26 +0000 Subject: [PATCH 56/70] Automatic changelog for PR #12428 [ci skip] --- html/changelogs/AutoChangeLog-pr-12428.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12428.yml diff --git a/html/changelogs/AutoChangeLog-pr-12428.yml b/html/changelogs/AutoChangeLog-pr-12428.yml new file mode 100644 index 000000000000..3a6f7a5099cc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12428.yml @@ -0,0 +1,5 @@ +author: "DangerRevolution" +delete-after: True +changes: + - rscadd: "At 00:20, if there is no CMO, FD, Doctor, Researcher or Synthetic shipside then autodoc upgrade disks will be spawned on the ASRS elevator." + - rscadd: "At 00:20, if there is no CMO, FD, Doctor, Researcher or Synthetic then autodocs will have their Surgery-1 skill check removed. Anyone can use them in this situation." \ No newline at end of file From c8b95f15b50c7fde52e410fb67844c71c6d65f29 Mon Sep 17 00:00:00 2001 From: Unknownity <83834638+Unknownity@users.noreply.github.com> Date: Mon, 22 Jun 2026 10:18:46 +0200 Subject: [PATCH 57/70] Adds Yautja Reagent Grinder (#12447) # About the pull request Adds a Yautja variant of the all in one reagent grinder and replaces the juicer with it in the hunter ship inside the research room. The Yautja juicer was renamed to Gibs Juicer (you can suggest a better name) for the reagent grinder to get its previous name instead as the Bone Grinder. No spriting changes (juicers and reagent grinders always shared sprites, even human versions) # Explain why it's good for the game If you want to do anything related with hydroponics research, you need a reagent grinder to be able to obtain the chems from the produce which the Hunter Ship currently lacks. Also you need the reagent grinder to be able to obtain some chemicals like the psilocybin to be able to make certain foods/drinks for cooking. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Unknownity add: The Hunter Ship has gained a reagent grinder. /:cl: --------- Co-authored-by: Unknownity
--- code/game/machinery/kitchen/juicer.dm | 2 +- .../reagents/chemistry_machinery/reagent_grinder.dm | 4 ++++ maps/map_files/Hunter_Ship/Hunter_Ship.dmm | 8 ++++---- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/kitchen/juicer.dm b/code/game/machinery/kitchen/juicer.dm index 935ca57555b2..2e1d61922c5d 100644 --- a/code/game/machinery/kitchen/juicer.dm +++ b/code/game/machinery/kitchen/juicer.dm @@ -162,7 +162,7 @@ break /obj/structure/machinery/juicer/yautja - name = "bone grinder" + name = "Gibs Juicer" icon = 'icons/obj/structures/machinery/yautja_machines.dmi' /obj/structure/closet/crate/juice diff --git a/code/modules/reagents/chemistry_machinery/reagent_grinder.dm b/code/modules/reagents/chemistry_machinery/reagent_grinder.dm index 2f219651475a..187c8610d2fa 100644 --- a/code/modules/reagents/chemistry_machinery/reagent_grinder.dm +++ b/code/modules/reagents/chemistry_machinery/reagent_grinder.dm @@ -477,3 +477,7 @@ /obj/structure/machinery/reagentgrinder/industrial/update_icon() icon_state = "industry"+num2text(!isnull(beaker)) return + +/obj/structure/machinery/reagentgrinder/yautja + name = "Bone Grinder" + icon = 'icons/obj/structures/machinery/yautja_machines.dmi' diff --git a/maps/map_files/Hunter_Ship/Hunter_Ship.dmm b/maps/map_files/Hunter_Ship/Hunter_Ship.dmm index ab5f13ea525d..5343c458d209 100644 --- a/maps/map_files/Hunter_Ship/Hunter_Ship.dmm +++ b/maps/map_files/Hunter_Ship/Hunter_Ship.dmm @@ -11350,14 +11350,14 @@ pixel_x = 7; density = 0 }, -/obj/structure/machinery/juicer/yautja{ - pixel_x = -9; - pixel_y = 16 - }, /obj/structure/window/reinforced/toughened{ dir = 4; color = "#912727" }, +/obj/structure/machinery/reagentgrinder/yautja{ + pixel_x = -9; + pixel_y = 16 + }, /turf/open/predship/tile/red4/glow, /area/yautja_ship/middle_deck/research) "zg" = ( From fef4d8e81acfa80b60aa586c168f7a5178a7369b Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 08:43:35 +0000 Subject: [PATCH 58/70] Automatic changelog for PR #12447 [ci skip] --- html/changelogs/AutoChangeLog-pr-12447.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12447.yml diff --git a/html/changelogs/AutoChangeLog-pr-12447.yml b/html/changelogs/AutoChangeLog-pr-12447.yml new file mode 100644 index 000000000000..001c13f83ecf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12447.yml @@ -0,0 +1,4 @@ +author: "Unknownity" +delete-after: True +changes: + - rscadd: "The Hunter Ship has gained a reagent grinder." \ No newline at end of file From 8a0624b381fe7b4bac74f439f36f9767edeb5845 Mon Sep 17 00:00:00 2001 From: Antlers <78444114+antlersss@users.noreply.github.com> Date: Mon, 22 Jun 2026 04:46:42 -0400 Subject: [PATCH 59/70] Fix: M56D double-mounting (#12466) # About the pull request Fixes #12340 Also fixes a related issue where a gun could be attached to a M56 mount, where the *anchored mount* already had a gun. # 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: Antlers fix: Fixed an issue where a M56D could be attached to a mount that already had a gun fix: Fixed an issue where a disassembled M56D that already had a mount could be attached to another mount. /:cl: --------- Co-authored-by: fira --- code/modules/cm_marines/smartgun_mount.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/cm_marines/smartgun_mount.dm b/code/modules/cm_marines/smartgun_mount.dm index a71dc8082051..01b17c45b8bf 100644 --- a/code/modules/cm_marines/smartgun_mount.dm +++ b/code/modules/cm_marines/smartgun_mount.dm @@ -400,6 +400,12 @@ if(istype(O,/obj/item/device/m56d_gun)) //lets mount the MG onto the mount. var/obj/item/device/m56d_gun/MG = O + if(gun_mounted) + to_chat(user, SPAN_WARNING("There is already a gun mounted to this tripod!")) + return + if(MG.has_mount) + to_chat(user, SPAN_WARNING("The gun you're trying to attach already has a mount!")) + return for(var/obj/structure/machinery/machine in long_orange(MG.defense_check_range, loc)) if(istype(machine, /obj/structure/machinery/m56d_hmg) || istype(machine, /obj/structure/machinery/m56d_post)) to_chat(user, SPAN_WARNING("This is too close to [machine]!")) From 62595c6cdf3456049aa50c9da5b487d7a267ad48 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 08:54:09 +0000 Subject: [PATCH 60/70] Automatic changelog for PR #12466 [ci skip] --- html/changelogs/AutoChangeLog-pr-12466.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12466.yml diff --git a/html/changelogs/AutoChangeLog-pr-12466.yml b/html/changelogs/AutoChangeLog-pr-12466.yml new file mode 100644 index 000000000000..23b5064f9215 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12466.yml @@ -0,0 +1,5 @@ +author: "Antlers" +delete-after: True +changes: + - bugfix: "Fixed an issue where a M56D could be attached to a mount that already had a gun" + - bugfix: "Fixed an issue where a disassembled M56D that already had a mount could be attached to another mount." \ No newline at end of file From d634bf9fb1c1af2d09310069db357bcad27123d5 Mon Sep 17 00:00:00 2001 From: MistChristmas Date: Mon, 22 Jun 2026 10:59:56 +0100 Subject: [PATCH 61/70] Fix: XM88 getting buffed from sentry shots. (#12192) # About the pull request Title Achieved via checking if the shot_from actually is this XM we're holding. Additionally slap a flag on the projectile so we're not sending this signal uselessly. # Explain why it's good for the game Uhmmmm building stacks from your sentry probably bad. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Sentry hits no longer count for lever action streaks /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/modules/projectiles/guns/lever_action.dm | 47 ++++++++++--------- code/modules/projectiles/projectile.dm | 4 +- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/code/modules/projectiles/guns/lever_action.dm b/code/modules/projectiles/guns/lever_action.dm index 29dfd3639e94..507df3586769 100644 --- a/code/modules/projectiles/guns/lever_action.dm +++ b/code/modules/projectiles/guns/lever_action.dm @@ -65,30 +65,32 @@ their unique feature is that a direct hit will buff your damage and firerate /obj/item/weapon/gun/lever_action/set_gun_attachment_offsets() attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 19, "rail_x" = 11, "rail_y" = 21, "under_x" = 24, "under_y" = 16, "stock_x" = 15, "stock_y" = 11) -/obj/item/weapon/gun/lever_action/wield(mob/M) +/obj/item/weapon/gun/lever_action/wield(mob/gun_wielder) . = ..() if(. && (flags_gun_lever_action & USES_STREAKS)) - RegisterSignal(M, COMSIG_BULLET_DIRECT_HIT, PROC_REF(direct_hit_buff)) + RegisterSignal(gun_wielder, COMSIG_BULLET_DIRECT_HIT, PROC_REF(direct_hit_buff)) -/obj/item/weapon/gun/lever_action/unwield(mob/M) +/obj/item/weapon/gun/lever_action/unwield(mob/gun_wielder) . = ..() if(. && (flags_gun_lever_action & USES_STREAKS)) - UnregisterSignal(M, COMSIG_BULLET_DIRECT_HIT) + UnregisterSignal(gun_wielder, COMSIG_BULLET_DIRECT_HIT) /obj/item/weapon/gun/lever_action/dropped(mob/user) . = ..() reset_hit_buff(user) addtimer(VARSET_CALLBACK(src, cur_onehand_chance, reset_onehand_chance), 4 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE) -/obj/item/weapon/gun/lever_action/proc/direct_hit_buff(mob/user, mob/target, one_hand_lever = FALSE) +/obj/item/weapon/gun/lever_action/proc/direct_hit_buff(mob/user, mob/target, obj/item/weapon/gun/projectile_source, one_hand_lever = FALSE) SIGNAL_HANDLER + if(projectile_source != src) + return FALSE var/mob/living/carbon/human/human_user = user if(one_hand_lever && !(flags_gun_lever_action & DANGEROUS_TO_ONEHAND_LEVER)) - return + return FALSE else if(one_hand_lever) //base marines should never be able to easily pass the skillcheck, only specialists and etc. if(prob(cur_onehand_chance) || skillcheck(human_user, SKILL_FIREARMS, SKILL_FIREARMS_SKILLED)) cur_onehand_chance = cur_onehand_chance - 20 //gets steadily worse if you spam it - return + return FALSE else to_chat(user, SPAN_DANGER("Augh! Your hand catches on the [lever_name]!!")) var/obj/limb/O = human_user.get_limb(human_user.hand ? "l_hand" : "r_hand") @@ -98,13 +100,13 @@ their unique feature is that a direct hit will buff your damage and firerate O.fracture() O.status &= ~LIMB_SPLINTED human_user.pain.recalculate_pain() - return + return FALSE if(!istype(target)) - return //sanity... + return FALSE //sanity... else if(target.stat == DEAD || !(flags_gun_lever_action & USES_STREAKS)) - return + return FALSE else if(streak) @@ -114,7 +116,7 @@ their unique feature is that a direct hit will buff your damage and firerate streak++ playsound(user, lever_hitsound, 25, FALSE) if(!(flags_gun_lever_action & USES_STREAKS)) - return + return FALSE apply_hit_buff(user, target, one_hand_lever) //this is a separate proc so it's configgable addtimer(CALLBACK(src, PROC_REF(reset_hit_buff), user, one_hand_lever), hit_buff_reset_cooldown, TIMER_OVERRIDE|TIMER_UNIQUE) @@ -286,7 +288,7 @@ their unique feature is that a direct hit will buff your damage and firerate if(flags_gun_lever_action & MOVES_WHEN_LEVERING) to_chat(user, SPAN_WARNING("You spin \the [src] one-handed! Fuck yeah!")) animation_wrist_flick(src) - direct_hit_buff(user, ,TRUE) + direct_hit_buff(user, projectile_source=src, one_hand_lever=TRUE) /obj/item/weapon/gun/lever_action/reload_into_chamber(mob/user) if(!current_mag) @@ -503,21 +505,22 @@ their unique feature is that a direct hit will buff your damage and firerate /obj/item/weapon/gun/lever_action/xm88/Fire(atom/target, mob/living/user, params, reflex, dual_wield) if(!able_to_fire(user) || !target) //checks here since we don't want to fuck up applying the increase return NONE - if(floating_penetration && in_chamber) //has to go before actual firing - var/obj/projectile/P = in_chamber + if(in_chamber) //has to go before actual firing + var/obj/projectile/projectile_to_shoot = in_chamber switch(floating_penetration) if(FLOATING_PENETRATION_TIER_1) - P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen20] + projectile_to_shoot.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen20] direct_hit_sound = "sound/weapons/gun_xm88_directhit_low.ogg" if(FLOATING_PENETRATION_TIER_2) - P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen30] + projectile_to_shoot.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen30] direct_hit_sound = "sound/weapons/gun_xm88_directhit_medium.ogg" if(FLOATING_PENETRATION_TIER_3) - P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen40] + projectile_to_shoot.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen40] direct_hit_sound = "sound/weapons/gun_xm88_directhit_medium.ogg" if(FLOATING_PENETRATION_TIER_4) - P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen50] + projectile_to_shoot.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88/pen50] direct_hit_sound = "sound/weapons/gun_xm88_directhit_high.ogg" + projectile_to_shoot.projectile_flags |= PROJECTILE_BULLSEYE return ..() /obj/item/weapon/gun/lever_action/xm88/unload(mob/user) @@ -538,8 +541,8 @@ their unique feature is that a direct hit will buff your damage and firerate cur_onehand_chance = initial(cur_onehand_chance) direct_hit_sound = "sound/weapons/gun_xm88_directhit_low.ogg" if(in_chamber) - var/obj/projectile/P = in_chamber - P.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88] + var/obj/projectile/projectile_to_shoot = in_chamber + projectile_to_shoot.ammo = GLOB.ammo_list[/datum/ammo/bullet/lever_action/xm88] floating_penetration = FLOATING_PENETRATION_TIER_0 //these are init configs and so cannot be initial() set_fire_delay(FIRE_DELAY_TIER_1 + FIRE_DELAY_TIER_12) @@ -549,8 +552,10 @@ their unique feature is that a direct hit will buff your damage and firerate if(one_hand_lever) addtimer(VARSET_CALLBACK(src, cur_onehand_chance, reset_onehand_chance), 4 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE) -/obj/item/weapon/gun/lever_action/xm88/direct_hit_buff(mob/user, mob/target, one_hand_lever = FALSE) +/obj/item/weapon/gun/lever_action/xm88/direct_hit_buff(mob/user, mob/target, /obj/item/weapon/gun/projectile_source, one_hand_lever = FALSE) . = ..() + if(!.) + return playsound(target, direct_hit_sound, 75) #undef FLOATING_PENETRATION_TIER_0 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index f9fc7ec260e4..83ecb9b43ce1 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -555,8 +555,8 @@ else direct_hit = TRUE - if(firer) - SEND_SIGNAL(firer, COMSIG_BULLET_DIRECT_HIT, target_living) + if(firer && projectile_flags & PROJECTILE_BULLSEYE) + SEND_SIGNAL(firer, COMSIG_BULLET_DIRECT_HIT, target_living, shot_from) // At present, Xenos have no inherent effects or localized damage stemming from limb targeting // Therefore we exempt the shooter from direct hit accuracy penalties as well, From e862143e2d2d77065d8dab5fde0c9312ba27498e Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 10:08:55 +0000 Subject: [PATCH 62/70] Automatic changelog for PR #12192 [ci skip] --- html/changelogs/AutoChangeLog-pr-12192.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12192.yml diff --git a/html/changelogs/AutoChangeLog-pr-12192.yml b/html/changelogs/AutoChangeLog-pr-12192.yml new file mode 100644 index 000000000000..466671d10776 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12192.yml @@ -0,0 +1,4 @@ +author: "MistChristmas" +delete-after: True +changes: + - bugfix: "Sentry hits no longer count for lever action streaks" \ No newline at end of file From ba1d8181b0c59b42b0931d6daef9572e5cd78f77 Mon Sep 17 00:00:00 2001 From: Kyani <65205627+EmeraldCandy@users.noreply.github.com> Date: Mon, 22 Jun 2026 06:02:40 -0400 Subject: [PATCH 63/70] Provides optional sounds for ghost ERT alerts (#12119) # About the pull request Adds the alert_sound variable to emergency calls. Adding a sound here will allow response team alerts to ghosts to have a special sound, if desired. This allows for certain response teams to have unique pings to ghosts (if so desired) or allows an ert alert sound on otherwise silent pings. This PR keeps the vast majority of response teams unchanged (since many are already accompanied by sounds ghosts can already hear). The only datum changed by this is the predator alerts, which now has the bracer alert sound. Forsaken are also silent, but due to their frequency during hijack they were left silent. # Explain why it's good for the game Extra options for response teams allow for certain pings to feel unique, and allows coverage to normally silent pings. Not knowing alerts are happening because there is no accompanying sound can be frustrating if you're looking for it. Many players are alt tabbed when dead and only tab back in if certain sounds alert the. This should assist that issue a bit. # Testing Photographs and Procedure Changed the youngblood ERT temporarily to clownshoes Spawned in as a yautja, called youngbloods with no observers. Heard no sound. Had a second client join as a ghost and called youngbloods. Heard clownshoes. Called many ERT, heart no additional sounds. # Changelog :cl: add: Added optional customizable sound alerts for response teams add: Predator response team calls now produce a bracer noise alert for ghosts. /:cl: --- code/datums/emergency_calls/emergency_call.dm | 6 ++++++ code/datums/emergency_calls/pred_hunt/hunting_calls.dm | 1 + 2 files changed, 7 insertions(+) diff --git a/code/datums/emergency_calls/emergency_call.dm b/code/datums/emergency_calls/emergency_call.dm index c6168d7154c1..2857151f592e 100644 --- a/code/datums/emergency_calls/emergency_call.dm +++ b/code/datums/emergency_calls/emergency_call.dm @@ -71,6 +71,9 @@ /// the [/datum/lazy_template] we should attempt to spawn in for the return journey var/home_base = /datum/lazy_template/ert/freelancer_station + /// What sound plays to ghosts when this rolls? Silent if null + var/alert_sound + /datum/game_mode/proc/initialize_emergency_calls() if(length(all_calls)) //It's already been set up. return @@ -139,6 +142,9 @@ give_action(M, /datum/action/join_ert, src) + if(!isnull(alert_sound)) + playsound_client(M.client, alert_sound, vol = 50) + /datum/game_mode/proc/activate_distress() ert_dispatched = TRUE var/datum/emergency_call/random_call = get_random_call() diff --git a/code/datums/emergency_calls/pred_hunt/hunting_calls.dm b/code/datums/emergency_calls/pred_hunt/hunting_calls.dm index 2773e946cd22..e5a252ebc035 100644 --- a/code/datums/emergency_calls/pred_hunt/hunting_calls.dm +++ b/code/datums/emergency_calls/pred_hunt/hunting_calls.dm @@ -8,6 +8,7 @@ shuttle_id = "" ert_message = "Prey is being set loose in the Yautja Hunting Grounds" ignore_ftl_or_crash = TRUE + alert_sound = 'sound/items/pred_bracer.ogg' /// Multiplier on the base RESERVE_HUNT_COOLDOWN when a given ERT is selected; 1 is no change. var/timer_mult = 1 var/hunt_name From 24d11d95de41e2411cf0ad474e9b599ec6f7cea5 Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 10:17:22 +0000 Subject: [PATCH 64/70] Automatic changelog for PR #12119 [ci skip] --- html/changelogs/AutoChangeLog-pr-12119.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12119.yml diff --git a/html/changelogs/AutoChangeLog-pr-12119.yml b/html/changelogs/AutoChangeLog-pr-12119.yml new file mode 100644 index 000000000000..ce72d1133cf3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12119.yml @@ -0,0 +1,5 @@ +author: "EmeraldCandy" +delete-after: True +changes: + - rscadd: "Added optional customizable sound alerts for response teams" + - rscadd: "Predator response team calls now produce a bracer noise alert for ghosts." \ No newline at end of file From 064f12c7a74292a76179120536cba318e9c63758 Mon Sep 17 00:00:00 2001 From: Ammoniacres <168367356+Ammoniacres@users.noreply.github.com> Date: Mon, 22 Jun 2026 06:11:51 -0400 Subject: [PATCH 65/70] Updates freelancer ERT hostility message. (#12214) # About the pull request Updates the Freelancer ERT hostile boarding message, making it clear when a given Freelancer ERT is hostile to marines or not. # Explain why it's good for the game Helps avoid the events of round 34142, where marines weren't at all prepared for Freelancers being hostile (due to the hostility message being identical to friendly). # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: made the hostile freelancer boarding message more clear in demonstrating hostile intent. /:cl: --- code/datums/emergency_calls/mercs.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/datums/emergency_calls/mercs.dm b/code/datums/emergency_calls/mercs.dm index b5157739a601..eed6382b7420 100644 --- a/code/datums/emergency_calls/mercs.dm +++ b/code/datums/emergency_calls/mercs.dm @@ -9,10 +9,11 @@ . = ..() if(isnull(hostility)) hostility = pick(75;FALSE,25;TRUE) - arrival_message = "[MAIN_SHIP_NAME], this is Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." if(hostility) + arrival_message = "Lovely ship you've got there. Arikara class, huh? Don't mind if we do. \n\nThis is Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress. Prepare your valuables for boarding." objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Warlord says. Ensure your survival at all costs." else + arrival_message = "[MAIN_SHIP_NAME], this is Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." objectives = "Help the crew of the [MAIN_SHIP_NAME] in exchange for payment, and choose your payment well. Do what your Warlord says. Ensure your survival at all costs." /datum/emergency_call/mercs/friendly //if admins want to specifically call in friendly ones @@ -85,10 +86,11 @@ /datum/emergency_call/heavy_mercs/New() . = ..() hostility = pick(75;FALSE,25;TRUE) - arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." if(hostility) + arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding. We've heard your distress and are currently preparing to ransack you for your very lives. Prepare for boarding." objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Captain says. Ensure your survival at all costs." else + arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." objectives = "Help the crew of the [MAIN_SHIP_NAME] in exchange for payment, and choose your payment well. Do what your Captain says. Ensure your survival at all costs." /datum/emergency_call/heavy_mercs/hostile @@ -97,7 +99,7 @@ /datum/emergency_call/heavy_mercs/hostile/New() . = ..() hostility = TRUE - arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding to your distress call. Prepare for boarding." + arrival_message = "[MAIN_SHIP_NAME], this is Elite Freelancer shuttle [pick(GLOB.alphabet_lowercase)][pick(GLOB.alphabet_lowercase)]-[rand(1, 99)] responding. We've heard your distress and are currently preparing to ransack you for your very lives. Prepare for boarding." objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Captain says. Ensure your survival at all costs." /datum/emergency_call/heavy_mercs/friendly From bdeb8b366cba1352ac399d86dca3eda9ee30689c Mon Sep 17 00:00:00 2001 From: "cmss13-ci[bot]" <180991813+cmss13-ci[bot]@users.noreply.github.com> Date: Mon, 22 Jun 2026 10:26:18 +0000 Subject: [PATCH 66/70] Automatic changelog for PR #12214 [ci skip] --- html/changelogs/AutoChangeLog-pr-12214.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-12214.yml diff --git a/html/changelogs/AutoChangeLog-pr-12214.yml b/html/changelogs/AutoChangeLog-pr-12214.yml new file mode 100644 index 000000000000..5e377ba44818 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12214.yml @@ -0,0 +1,4 @@ +author: "Ammoniacres" +delete-after: True +changes: + - rscadd: "made the hostile freelancer boarding message more clear in demonstrating hostile intent." \ No newline at end of file From e813465f01873166f869c0eb3a68db69e3c31adf Mon Sep 17 00:00:00 2001 From: cuberound Date: Tue, 23 Jun 2026 10:36:24 +0200 Subject: [PATCH 67/70] gator icons --- .../hostile/retaliate/giant_aligator.dm | 6 ++++++ .../hostile/retaliate/giant_lizard.dm | 13 ++++++++----- icons/mob/bortrough.dmi | Bin 0 -> 7229 bytes 3 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 icons/mob/bortrough.dmi diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm index 6d805367f8a4..b18493d9a6da 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm @@ -4,7 +4,13 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator name = "Aligator" + icon = 'icons/mob/bortrough.dmi' + icon_state = "Bortrough Running" + icon_living = "Bortrough Running" + icon_dead = "Bortrough Dead" stun_duration = 2 + grab_level = GRAB_CHOKE + base_state = "Bortrough" /mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/try_to_extinguish() if(istype(get_turf(src), /turf/open/gm/river) || (/obj/effect/blocker/water in loc) || istype(get_turf(src), /turf/open/beach/coastline) || istype(get_turf(src), /turf/open/gm/coast)) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 90431d121093..382153ebdc75 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -43,6 +43,9 @@ attack_same = FALSE langchat_color = LIGHT_COLOR_GREEN + ///used for the other icons to be modular + base_state = "Giant Lizard" + ///Reference to the ZZzzz sleep overlay when resting. var/sleep_overlay ///Reference to the tongue flick overlay. @@ -239,9 +242,9 @@ icon_state = icon_dead else if(body_position == LYING_DOWN) if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) - icon_state = "Giant Lizard Sleeping" + icon_state = "[base_state] Sleeping" else - icon_state = "Giant Lizard Knocked Down" + icon_state = "[base_state] Knocked Down" tongue_icon_holder.alpha = 0 //we can't stop an animation that's called via flick(). best we can do is hide it. else @@ -273,11 +276,11 @@ wound_icon_holder.icon_state = "none" else if(body_position == LYING_DOWN) if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) - wound_icon_holder.icon_state = "Giant Lizard [health_threshold] Rest" + wound_icon_holder.icon_state = "[base_state] [health_threshold] Rest" else - wound_icon_holder.icon_state = "Giant Lizard [health_threshold] Stun" + wound_icon_holder.icon_state = "[base_state] [health_threshold] Stun" else - wound_icon_holder.icon_state = "Giant Lizard [health_threshold]" + wound_icon_holder.icon_state = "[base_state] [health_threshold]" #undef NO_WOUNDS #undef SMALL_WOUNDS diff --git a/icons/mob/bortrough.dmi b/icons/mob/bortrough.dmi new file mode 100644 index 0000000000000000000000000000000000000000..fc71b7b3bf973edf96ce3e3c1d64843e69e120bc GIT binary patch literal 7229 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 Date: Tue, 23 Jun 2026 12:22:26 +0200 Subject: [PATCH 68/70] all icons except for owergrown --- .../hostile/retaliate/giant_aligator.dm | 31 ++++++++++++++++-- .../hostile/retaliate/giant_lizard.dm | 21 ++++++++---- sound/effects/bortrough-chuff1.mp3 | Bin 0 -> 56064 bytes sound/effects/bortrough-chuff2.mp3 | Bin 0 -> 29952 bytes sound/effects/bortrough-die.mp3 | Bin 0 -> 20352 bytes 5 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 sound/effects/bortrough-chuff1.mp3 create mode 100644 sound/effects/bortrough-chuff2.mp3 create mode 100644 sound/effects/bortrough-die.mp3 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm index b18493d9a6da..ecc44ab4c103 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm @@ -1,5 +1,5 @@ -#define ALIGATOR_SPEED_DRAGING 1.2 -#define LIZARD_SPEED_NORMAL 2.8 +#define ALIGATOR_SPEED_DRAGING 2.8 +#define LIZARD_SPEED_NORMAL 1.2 /mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator @@ -11,6 +11,31 @@ stun_duration = 2 grab_level = GRAB_CHOKE base_state = "Bortrough" + death_sound = 'sound/effects/bortrough-die.mp3' + growl_sound = "bortrough-chuff" + hiss_sound = "bortrough-hurt" + wound_icon = 'icons/mob/bortrough.dmi' + var/pulling_state = "Bortrough Running Open Jaws" + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/update_transform(instant_update = FALSE) + . = ..() + if(pulling) + icon_state = "Bortrough Running Open Jaws" + if(istype(loc, /turf/open/gm/river) && stat != DEAD) + icon_state = "Bortrough Submerged" + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/Move(NewLoc, direct) + . = ..() + if(istype(loc, /turf/open/gm/river) && stat != DEAD) + icon_state = "Bortrough Submerged" + else + if(icon_state == "Bortrough Submerged") + update_transform() + +/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/update_wounds() + . = ..() + if(istype(loc, /turf/open/gm/river) && stat != DEAD) + wound_icon_holder.icon_state = "none" /mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/try_to_extinguish() if(istype(get_turf(src), /turf/open/gm/river) || (/obj/effect/blocker/water in loc) || istype(get_turf(src), /turf/open/beach/coastline) || istype(get_turf(src), /turf/open/gm/coast)) @@ -26,10 +51,12 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/start_pulling(atom/movable/clone/AM, lunge, no_msg, simple_mob) . = ..() if(.) + update_transform() speed = ALIGATOR_SPEED_DRAGING /mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/stop_pulling() . = ..() speed = LIZARD_SPEED_NORMAL + update_transform() #undef ALIGATOR_SPEED_DRAGING #undef LIZARD_SPEED_NORMAL diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm index 382153ebdc75..ef4e36a31207 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/giant_lizard.dm @@ -44,7 +44,15 @@ langchat_color = LIGHT_COLOR_GREEN ///used for the other icons to be modular - base_state = "Giant Lizard" + var/base_state = "Giant Lizard" + + var/death_sound = 'sound/effects/giant_lizard_death.ogg' + + var/growl_sound = "giant_lizard_growl" + + var/hiss_sound = "giant_lizard_hiss" + + var/wound_icon = 'icons/mob/mob_64.dmi' ///Reference to the ZZzzz sleep overlay when resting. var/sleep_overlay @@ -153,6 +161,7 @@ /mob/living/simple_animal/hostile/retaliate/giant_lizard/Initialize() . = ..() wound_icon_holder = new(null, src) + wound_icon_holder.icon = wound_icon tongue_icon_holder = new(null, src) tongue_icon_holder.pixel_x = 2 vis_contents += wound_icon_holder @@ -183,7 +192,7 @@ manual_emote("growls at [target_mob].") else manual_emote("growls.") - playsound(loc, "giant_lizard_growl", 60) + playsound(loc, growl_sound, 60) COOLDOWN_START(src, growl_message, rand(10, 14) SECONDS) /mob/living/simple_animal/hostile/retaliate/giant_lizard/get_status_tab_items() @@ -318,7 +327,7 @@ return ..() /mob/living/simple_animal/hostile/retaliate/giant_lizard/death(datum/cause_data/cause_data, gibbed = FALSE, deathmessage = "lets out a waning growl....") - playsound(loc, 'sound/effects/giant_lizard_death.ogg', 70) + playsound(loc, death_sound, 70) GLOB.giant_lizards_alive -= src return ..() @@ -360,7 +369,7 @@ COOLDOWN_START(src, emote_cooldown, rand(5, 8) SECONDS) manual_emote(pick(pick(pet_emotes), "stares at [attacking_mob].", "nuzzles [attacking_mob].", "licks [attacking_mob]'s hand."), "nibbles [attacking_mob]'s arm.") if(prob(50)) - playsound(loc, "giant_lizard_hiss", 25) + playsound(loc, hiss_sound, 25) flick("Giant Lizard Tongue", tongue_icon_holder) if(attacking_mob.a_intent == INTENT_DISARM && prob(25)) playsound(loc, 'sound/weapons/alien_knockdown.ogg', 25, 1) @@ -402,7 +411,7 @@ food_target_ref = null is_eating = FALSE manual_emote("hisses in agony!") - playsound(src, "giant_lizard_hiss", 40) + playsound(src, hiss_sound, 40) MoveTo(null, 9, TRUE, 4 SECONDS, FALSE) COOLDOWN_START(src, calm_cooldown, 8 SECONDS) @@ -937,7 +946,7 @@ playsound(loc, 'sound/weapons/alien_knockdown.ogg', 25, 1) return - playsound(loc, "giant_lizard_hiss", 25) + playsound(loc, hiss_sound, 25) pounced_mob.KnockDown(stun_duration) step_to(src, pounced_mob) if(!client && !(pounced_mob.faction in faction_group)) diff --git a/sound/effects/bortrough-chuff1.mp3 b/sound/effects/bortrough-chuff1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d472486f3499853b085079a1d491d794d9131f55 GIT binary patch literal 56064 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 ABLDyZ literal 0 HcmV?d00001 diff --git a/sound/effects/bortrough-chuff2.mp3 b/sound/effects/bortrough-chuff2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..ffba1d3285fbe483788501c7fa22eb88c4c5e0fc GIT binary patch literal 29952 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
iPbfh(ga*?*1qVf$M3|o!2QWy4H#klQ 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 Date: Tue, 23 Jun 2026 12:40:32 +0200 Subject: [PATCH 69/70] file rename --- .../{giant_aligator.dm => bortrough.dm} | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) rename code/modules/mob/living/simple_animal/hostile/retaliate/{giant_aligator.dm => bortrough.dm} (65%) diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bortrough.dm similarity index 65% rename from code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm rename to code/modules/mob/living/simple_animal/hostile/retaliate/bortrough.dm index ecc44ab4c103..a675e6ef34db 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/giant_aligator.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bortrough.dm @@ -2,7 +2,7 @@ #define LIZARD_SPEED_NORMAL 1.2 -/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough name = "Aligator" icon = 'icons/mob/bortrough.dmi' icon_state = "Bortrough Running" @@ -17,43 +17,43 @@ wound_icon = 'icons/mob/bortrough.dmi' var/pulling_state = "Bortrough Running Open Jaws" -/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/update_transform(instant_update = FALSE) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/update_transform(instant_update = FALSE) . = ..() if(pulling) icon_state = "Bortrough Running Open Jaws" if(istype(loc, /turf/open/gm/river) && stat != DEAD) icon_state = "Bortrough Submerged" -/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/Move(NewLoc, direct) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/Move(NewLoc, direct) . = ..() if(istype(loc, /turf/open/gm/river) && stat != DEAD) icon_state = "Bortrough Submerged" else if(icon_state == "Bortrough Submerged") - update_transform() + update_transform() -/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/update_wounds() +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/update_wounds() . = ..() if(istype(loc, /turf/open/gm/river) && stat != DEAD) wound_icon_holder.icon_state = "none" -/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/try_to_extinguish() +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/try_to_extinguish() if(istype(get_turf(src), /turf/open/gm/river) || (/obj/effect/blocker/water in loc) || istype(get_turf(src), /turf/open/beach/coastline) || istype(get_turf(src), /turf/open/gm/coast)) ExtinguishMob() . = ..() -/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/pounced_mob(mob/living/pounced_mob) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/pounced_mob(mob/living/pounced_mob) . = ..() throwing = 0 start_pulling(pounced_mob, TRUE, simple_mob = TRUE) MoveTo(target_mob_ref?.resolve(), 5, TRUE, 2 SECONDS, TRUE) //drag our target away -/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/start_pulling(atom/movable/clone/AM, lunge, no_msg, simple_mob) +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/start_pulling(atom/movable/clone/AM, lunge, no_msg, simple_mob) . = ..() if(.) update_transform() speed = ALIGATOR_SPEED_DRAGING -/mob/living/simple_animal/hostile/retaliate/giant_lizard/aligator/stop_pulling() +/mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/stop_pulling() . = ..() speed = LIZARD_SPEED_NORMAL update_transform() From 846c933f16382e60eea2885b948a27dd65644bde Mon Sep 17 00:00:00 2001 From: cuberound Date: Tue, 23 Jun 2026 13:12:48 +0200 Subject: [PATCH 70/70] finishing sprite touches --- .../objects/effects/landmarks/landmarks.dm | 9 +++++++-- .../hostile/retaliate/bortrough.dm | 3 +++ colonialmarines.dme | 2 +- icons/mob/bortrough.dmi | Bin 7229 -> 7248 bytes 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/code/game/objects/effects/landmarks/landmarks.dm b/code/game/objects/effects/landmarks/landmarks.dm index 324bbdbd5105..cb13dbe7656f 100644 --- a/code/game/objects/effects/landmarks/landmarks.dm +++ b/code/game/objects/effects/landmarks/landmarks.dm @@ -152,11 +152,16 @@ /obj/effect/landmark/lizard_spawn name = "lizard spawn" icon_state = "lizard_spawn" + var/lizard_path = /mob/living/simple_animal/hostile/retaliate/giant_lizard + +/obj/effect/landmark/lizard_spawn/bortrough + name = "bortrough spawn" + lizard_path = /mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough /obj/effect/landmark/lizard_spawn/Initialize(mapload, ...) . = ..() if(prob(66)) - new /mob/living/simple_animal/hostile/retaliate/giant_lizard(loc) + new lizard_path(loc) addtimer(CALLBACK(src, PROC_REF(latespawn_lizard)), rand(35 MINUTES, 50 MINUTES)) /obj/effect/landmark/lizard_spawn/proc/latespawn_lizard() @@ -170,7 +175,7 @@ continue addtimer(CALLBACK(src, PROC_REF(latespawn_lizard)), 1 MINUTES) return - new /mob/living/simple_animal/hostile/retaliate/giant_lizard(loc) + new lizard_path(loc) #undef MAXIMUM_LIZARD_AMOUNT diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bortrough.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bortrough.dm index a675e6ef34db..23bc779962d3 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/bortrough.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bortrough.dm @@ -15,6 +15,7 @@ growl_sound = "bortrough-chuff" hiss_sound = "bortrough-hurt" wound_icon = 'icons/mob/bortrough.dmi' + pixel_x = -22 var/pulling_state = "Bortrough Running Open Jaws" /mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/update_transform(instant_update = FALSE) @@ -28,9 +29,11 @@ . = ..() if(istype(loc, /turf/open/gm/river) && stat != DEAD) icon_state = "Bortrough Submerged" + update_wounds() else if(icon_state == "Bortrough Submerged") update_transform() + update_wounds() /mob/living/simple_animal/hostile/retaliate/giant_lizard/bortrough/update_wounds() . = ..() diff --git a/colonialmarines.dme b/colonialmarines.dme index ae03ae579ffd..ee54c751f2fa 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -2328,9 +2328,9 @@ #include "code\modules\mob\living\simple_animal\hostile\giant_spider.dm" #include "code\modules\mob\living\simple_animal\hostile\hostile.dm" #include "code\modules\mob\living\simple_animal\hostile\tree.dm" +#include "code\modules\mob\living\simple_animal\hostile\retaliate\bortrough.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\clown.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\drone.dm" -#include "code\modules\mob\living\simple_animal\hostile\retaliate\giant_aligator.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\giant_lizard.dm" #include "code\modules\mob\living\simple_animal\hostile\retaliate\retaliate.dm" #include "code\modules\mob\new_player\body.dm" diff --git a/icons/mob/bortrough.dmi b/icons/mob/bortrough.dmi index fc71b7b3bf973edf96ce3e3c1d64843e69e120bc..06dae9c5cee5a6be6369f258f38539ad8fea4467 100644 GIT binary patch delta 6873 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