From 191c442a9c326cb49d09aeed86b7d1d629ad01f2 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 3 Apr 2026 17:09:59 +0100 Subject: [PATCH 001/130] Update carbon.dm --- code/modules/mob/living/carbon/carbon.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 584307727f6f..71872c22878a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1410,3 +1410,6 @@ if (overeatduration >= 200 SECONDS) to_chat(src, span_danger("You suddenly feel blubbery!")) add_traits(list(TRAIT_FAT, TRAIT_OFF_BALANCE_TACKLER), OBESITY) + +/mob/living/carbon/update_soak() //Pretty basic calculation for the average person/being, soak is Bashing only using Stamina. + soak_dice_bashing = st_get_stat(STAT_STAMINA) From ccdb97199ebff5964c4d139f5134e61dfad9c1a0 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 3 Apr 2026 17:11:12 +0100 Subject: [PATCH 002/130] Update carbon_defines.dm --- .../code/modules/mob/living/carbon/carbon_defines.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm index e4e35faf014c..1fb62346cf1c 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm @@ -7,3 +7,8 @@ var/fakediablerist = FALSE var/can_be_embraced = TRUE bloodquality = 2 + + ///The number of dice available to soak bashing, lethal, and aggravated damage + var/soak_dice_bashing = 0 + var/soak_dice_lethal = 0 + var/soak_dice_aggravated = 0 From c3aaf6ce8d7df6aa5cae14110a9f401e9a6c2cb9 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 3 Apr 2026 17:34:56 +0100 Subject: [PATCH 003/130] Update human.dm --- .../modules/mob/living/carbon/human/human.dm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index f78afb1a0081..b3718368358b 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -33,3 +33,21 @@ . = ..() + + +/mob/living/carbon/human/update_soak() //Fairly complex list here. Kindred get double soak dice vs bashing, and can soak lethal with Stamina, and Agg with Fortitude. Garou can soak everything in every form except their breed form, in which they can only soak Lethal and Bashing. + . = ..() + if(iskindred(src)) + soak_dice_bashing = (st_get_stat(STAT_STAMINA) * 2) //Stamina already has the Fortitude bonus added for Bashing and Lethal. + soak_dice_lethal = st_get_stat(STAT_STAMINA) + var/datum/discipline/soak_fortitude = src.get_discipline(/datum/discipline/fortitude) + if(!soak_fortitude) + return + soak_dice_aggravated = soak_fortitude.level + if(isgarou(src)) + soak_dice_bashing = st_get_stat(STAT_STAMINA) + soak_dice_lethal = st_get_stat(STAT_STAMINA) + if(is_breed_form(src)) + return + else + soak_dice_aggravated = st_get_stat(STAT_STAMINA) From 08d747ac13c12474d53d158d9eea5e8f90f576aa Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 3 Apr 2026 17:39:10 +0100 Subject: [PATCH 004/130] Update _species.dm --- code/modules/mob/living/carbon/human/_species.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 83bb043e90dd..ebf237d7e62e 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -444,6 +444,10 @@ GLOBAL_LIST_EMPTY(features_by_species) //we don't allow it to update during species transition, so update it now human_who_gained_species.hud_used?.healthdoll.update_appearance() +///DARKPACK EDIT START + human_who_gained_species.update_soak() //Updates Soak values. +///DARKPACK EDIT END + /** * Proc called when a carbon is no longer this species. From a008f1b5693414580c11a9cbcfe4fb817246a39d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 3 Apr 2026 18:42:23 +0100 Subject: [PATCH 005/130] Update damage_procs.dm --- .../modules/mob/living/carbon/damage_procs.dm | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 874e0f96d736..3655abb4d48e 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -390,3 +390,43 @@ updatehealth() if(update) update_damage_overlays() +// DARKPACK EDIT ADD START - SOAK ROLLS +/mob/living/carbon/soak_roll( + damage = 0, + damagetype = BRUTE, + def_zone = null, + sharpness = NONE, + attacking_item) + + var/roll_used = soak_dice_bashing + switch(damagetype) + if(BRUTE) + switch(attacking_item) + if(isprojectile()) + if(iskindred(src) && !def_zone = HEAD) + roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. + else + roll_used = soak_dice_lethal //Otherwise it's lethal damage. + if(get_sharpness()) + roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. + else + roll_used = soak_dice_bashing //Everything else should take Bashing. + if(BURN) + roll_used = soak_dice_aggravated //Burning is always Agg. + if(TOX) + roll_used = soak_dice_lethal //Poisons can vary from Bashing to Lethal, but the vast majority are Lethal. + if(OXY) + roll_used = unsoakable //Oxygen damage is applied automatically and cannot be soaked. + if(STAMINA) + roll_used = soak_dice_bashing /Stamina damage is a little weird, but as per exhaustion rules for rituals and the like, you can soak it like Bashing. Not too sure about it though. + if(BRAIN) + roll_used = soak_dice_lethal //Not many situations where you'd take direct brain damage really, but it'd be lethal in this case. + if(AGGRAVATED) + roll_used = soak_dice_aggravated //Well, obviously. + + successes = SSroll.storyteller_roll(roll_used, difficulty = 6, roller = src, numerical = TRUE) + + if(successes > 0) + damage = (max(0, damage - (successes * 10))) + to_chat(owner, span_warning("You stand firm and are able to absorb some of the damage!") + // DARKPACK EDIT ADD END From 9569ee7fa6567a22baa0bd0ec72e692fc77796a1 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 3 Apr 2026 19:12:04 +0100 Subject: [PATCH 006/130] Update damage_procs.dm --- .../modules/mob/living/carbon/damage_procs.dm | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 3655abb4d48e..3ee066a9054c 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -391,7 +391,7 @@ if(update) update_damage_overlays() // DARKPACK EDIT ADD START - SOAK ROLLS -/mob/living/carbon/soak_roll( +/mob/living/carbon/proc/soak_roll( damage = 0, damagetype = BRUTE, def_zone = null, @@ -401,32 +401,31 @@ var/roll_used = soak_dice_bashing switch(damagetype) if(BRUTE) - switch(attacking_item) - if(isprojectile()) - if(iskindred(src) && !def_zone = HEAD) - roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. - else - roll_used = soak_dice_lethal //Otherwise it's lethal damage. - if(get_sharpness()) - roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. - else - roll_used = soak_dice_bashing //Everything else should take Bashing. + if(isprojectile(attacking_item)) + if(get_kindred_splat(src) && !def_zone == HEAD) + roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. + else + roll_used = soak_dice_lethal //Otherwise it's lethal damage. + if(!sharpness == NONE) + roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. + else + roll_used = soak_dice_bashing //Everything else should take Bashing. if(BURN) roll_used = soak_dice_aggravated //Burning is always Agg. if(TOX) roll_used = soak_dice_lethal //Poisons can vary from Bashing to Lethal, but the vast majority are Lethal. if(OXY) - roll_used = unsoakable //Oxygen damage is applied automatically and cannot be soaked. + roll_used = null //Oxygen damage is applied automatically and cannot be soaked. if(STAMINA) - roll_used = soak_dice_bashing /Stamina damage is a little weird, but as per exhaustion rules for rituals and the like, you can soak it like Bashing. Not too sure about it though. + roll_used = soak_dice_bashing //Stamina damage is a little weird, but as per exhaustion rules for rituals and the like, you can soak it like Bashing. Not too sure about it though. if(BRAIN) roll_used = soak_dice_lethal //Not many situations where you'd take direct brain damage really, but it'd be lethal in this case. if(AGGRAVATED) roll_used = soak_dice_aggravated //Well, obviously. - successes = SSroll.storyteller_roll(roll_used, difficulty = 6, roller = src, numerical = TRUE) + var/successes = SSroll.storyteller_roll(roll_used, difficulty = 6, roller = src, numerical = TRUE) if(successes > 0) damage = (max(0, damage - (successes * 10))) - to_chat(owner, span_warning("You stand firm and are able to absorb some of the damage!") + to_chat(src, span_warning("You stand firm and are able to absorb some of the damage!")) // DARKPACK EDIT ADD END From 8942be8f3bb91367c77f191803f783d281453f74 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 3 Apr 2026 19:13:46 +0100 Subject: [PATCH 007/130] Update carbon.dm --- code/modules/mob/living/carbon/carbon.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 71872c22878a..e1a1b742d29d 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1411,5 +1411,5 @@ to_chat(src, span_danger("You suddenly feel blubbery!")) add_traits(list(TRAIT_FAT, TRAIT_OFF_BALANCE_TACKLER), OBESITY) -/mob/living/carbon/update_soak() //Pretty basic calculation for the average person/being, soak is Bashing only using Stamina. +/mob/living/carbon/proc/update_soak() //Pretty basic calculation for the average person/being, soak is Bashing only using Stamina. soak_dice_bashing = st_get_stat(STAT_STAMINA) From cbde8d3b5b0965b81544201c380e2393715ac8f2 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 3 Apr 2026 19:14:55 +0100 Subject: [PATCH 008/130] Update human.dm --- .../code/modules/mob/living/carbon/human/human.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index b3718368358b..c316560ef03a 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -37,14 +37,14 @@ /mob/living/carbon/human/update_soak() //Fairly complex list here. Kindred get double soak dice vs bashing, and can soak lethal with Stamina, and Agg with Fortitude. Garou can soak everything in every form except their breed form, in which they can only soak Lethal and Bashing. . = ..() - if(iskindred(src)) + if(get_kindred_splat(src)) soak_dice_bashing = (st_get_stat(STAT_STAMINA) * 2) //Stamina already has the Fortitude bonus added for Bashing and Lethal. soak_dice_lethal = st_get_stat(STAT_STAMINA) var/datum/discipline/soak_fortitude = src.get_discipline(/datum/discipline/fortitude) if(!soak_fortitude) return soak_dice_aggravated = soak_fortitude.level - if(isgarou(src)) + if(get_garou_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) soak_dice_lethal = st_get_stat(STAT_STAMINA) if(is_breed_form(src)) From 13740b6f05d9a42850088c4232ecae11aff93874 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 17:31:54 +0100 Subject: [PATCH 009/130] Update human.dm --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index c316560ef03a..ff5f8cd3c14c 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -38,7 +38,7 @@ /mob/living/carbon/human/update_soak() //Fairly complex list here. Kindred get double soak dice vs bashing, and can soak lethal with Stamina, and Agg with Fortitude. Garou can soak everything in every form except their breed form, in which they can only soak Lethal and Bashing. . = ..() if(get_kindred_splat(src)) - soak_dice_bashing = (st_get_stat(STAT_STAMINA) * 2) //Stamina already has the Fortitude bonus added for Bashing and Lethal. + soak_dice_bashing = st_get_stat(STAT_STAMINA) //Stamina already has the Fortitude bonus added for Bashing and Lethal. soak_dice_lethal = st_get_stat(STAT_STAMINA) var/datum/discipline/soak_fortitude = src.get_discipline(/datum/discipline/fortitude) if(!soak_fortitude) From be98f644d9a87a0d059d9e6bf8b119440181ecbe Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 17:32:43 +0100 Subject: [PATCH 010/130] Update human.dm --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index ff5f8cd3c14c..0cfd2bf500c4 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -35,7 +35,7 @@ . = ..() -/mob/living/carbon/human/update_soak() //Fairly complex list here. Kindred get double soak dice vs bashing, and can soak lethal with Stamina, and Agg with Fortitude. Garou can soak everything in every form except their breed form, in which they can only soak Lethal and Bashing. +/mob/living/carbon/human/update_soak() //Fairly complex list here. Kindred can soak lethal with Stamina, and Agg with Fortitude. Garou can soak everything in every form except their breed form, in which they can only soak Lethal and Bashing. . = ..() if(get_kindred_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) //Stamina already has the Fortitude bonus added for Bashing and Lethal. From e71927fefc0b058af9500f68d1f1003727859b52 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 17:36:40 +0100 Subject: [PATCH 011/130] Update transformation.dm --- .../werewolf_the_apocalypse/code/splats/transformation.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm index 966652e34c66..a3a7868554ed 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm @@ -56,6 +56,7 @@ var/matrix/ntransform = matrix(owner.transform) ntransform.Scale(1.1, 1.1) animate(owner, transform = ntransform, color = "#000000", time = time_to_transform * 0.9) + owner.update_soak() SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) From 745cd7425f58c5be3a4914f4d814b4fae5407c0d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:47:13 +0100 Subject: [PATCH 012/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 3ee066a9054c..de58a1c38604 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -398,6 +398,7 @@ sharpness = NONE, attacking_item) + var/datum/storyteller_roll/soak/soak_roll var/roll_used = soak_dice_bashing switch(damagetype) if(BRUTE) @@ -415,7 +416,7 @@ if(TOX) roll_used = soak_dice_lethal //Poisons can vary from Bashing to Lethal, but the vast majority are Lethal. if(OXY) - roll_used = null //Oxygen damage is applied automatically and cannot be soaked. + roll_used = 0 //Oxygen damage is applied automatically and cannot be soaked. if(STAMINA) roll_used = soak_dice_bashing //Stamina damage is a little weird, but as per exhaustion rules for rituals and the like, you can soak it like Bashing. Not too sure about it though. if(BRAIN) @@ -423,7 +424,13 @@ if(AGGRAVATED) roll_used = soak_dice_aggravated //Well, obviously. - var/successes = SSroll.storyteller_roll(roll_used, difficulty = 6, roller = src, numerical = TRUE) + if(roll_used == 0) + return damage //Skip the roll if it can't be soaked. + + if(!soak_roll) + soak_roll = new() + + var/successes = soak_roll.st_roll(src, src, roll_used) if(successes > 0) damage = (max(0, damage - (successes * 10))) From 3420262409dccf8bb5fd0348612e68879ebe660e Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:47:40 +0100 Subject: [PATCH 013/130] Update roll_subtypes.dm --- .../modules/storyteller_dice/code/roll_subtypes.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm b/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm index 1f0119040caf..e798a89d4946 100644 --- a/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm +++ b/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm @@ -112,3 +112,11 @@ bumper_text = "identify" applicable_stats = list(STAT_INTELLIGENCE, STAT_OCCULT) reroll_cooldown = 1 SCENES + +// Soak +/datum/storyteller_roll/soak + bumper_text = "soak" + roll_output_type = ROLL_PUBLIC + numerical = TRUE + spammy_roll = TRUE + difficulty = 6 From 400f776cf398d5b93d8106b9021b29547fcb6cac Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:49:10 +0100 Subject: [PATCH 014/130] Update transformation.dm --- .../werewolf_the_apocalypse/code/splats/transformation.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm index a3a7868554ed..93042df27f0b 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/transformation.dm @@ -56,7 +56,6 @@ var/matrix/ntransform = matrix(owner.transform) ntransform.Scale(1.1, 1.1) animate(owner, transform = ntransform, color = "#000000", time = time_to_transform * 0.9) - owner.update_soak() SEND_SIGNAL(owner, COMSIG_MASQUERADE_VIOLATION) @@ -77,6 +76,7 @@ /datum/splat/werewolf/shifter/proc/transform_finish(form_to_transform, time_taken = DOGGY_ANIMATION_TIME) animate(owner, transform = null, color = "#FFFFFF", time = time_taken * 0.1) owner.set_species(form_to_transform) + owner.update_soak() /datum/splat/werewolf/shifter/proc/is_breed_form() if(!owner?.dna) From f3b321e6fe25dcba5c25c44cd9a087912deffa15 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:49:52 +0100 Subject: [PATCH 015/130] Update new_player.dm --- code/modules/mob/dead/new_player/new_player.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 615783cf095e..553bc11c114a 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -251,6 +251,7 @@ humanc.increment_scar_slot() humanc.load_persistent_scars() humanc.load_guestbook() // DARKPACK EDIT ADDITION + humanc.update_soak() // DARKPACK EDIT ADDITION if(GLOB.curse_of_madness_triggered) give_madness(humanc, GLOB.curse_of_madness_triggered) From 807f242e8f7631e8e12bc21bd55f87128e2a12dd Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:51:49 +0100 Subject: [PATCH 016/130] Update carbon.dm --- code/modules/mob/living/carbon/carbon.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index e1a1b742d29d..6bc2895fd644 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -1411,5 +1411,7 @@ to_chat(src, span_danger("You suddenly feel blubbery!")) add_traits(list(TRAIT_FAT, TRAIT_OFF_BALANCE_TACKLER), OBESITY) +// DARKPACK EDIT START /mob/living/carbon/proc/update_soak() //Pretty basic calculation for the average person/being, soak is Bashing only using Stamina. soak_dice_bashing = st_get_stat(STAT_STAMINA) +// DARKPACK EDIT END From 9d513c263563facb7ea072bd05409678c9893c72 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 21:52:31 +0100 Subject: [PATCH 017/130] Update human.dm --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index 0cfd2bf500c4..023525c4c5dd 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -34,7 +34,7 @@ . = ..() - +// DARKPACK EDIT START /mob/living/carbon/human/update_soak() //Fairly complex list here. Kindred can soak lethal with Stamina, and Agg with Fortitude. Garou can soak everything in every form except their breed form, in which they can only soak Lethal and Bashing. . = ..() if(get_kindred_splat(src)) @@ -51,3 +51,4 @@ return else soak_dice_aggravated = st_get_stat(STAT_STAMINA) +// DARKPACK EDIT END From 3bafb5971f908150645b26566a039cdeeed1029d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 22:10:17 +0100 Subject: [PATCH 018/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index de58a1c38604..770265fe8cfe 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -50,6 +50,8 @@ wound_clothing = TRUE, ) + if(!forced) + damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item) // Add relevant DR modifiers into blocked value to pass to parent blocked += physiology?.damage_resistance blocked += dna?.species?.damage_modifier From 9aa16975dc0450b75f2f2894033978e1ff6dca00 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 19 Apr 2026 22:33:23 +0100 Subject: [PATCH 019/130] Update carbon.dm --- code/modules/mob/living/carbon/carbon.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 6bc2895fd644..6b75260be621 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -5,6 +5,7 @@ living_flags &= ~STOP_OVERLAY_UPDATE_BODY_PARTS register_context() + update_soak() // DARKPACK EDIT ADDITION GLOB.carbon_list += src ADD_TRAIT(src, TRAIT_CAN_HOLD_ITEMS, INNATE_TRAIT) // Carbons are assumed to be innately capable of having arms, we check their arms count instead From 08a42f9e41dc4f0be2fbf2d01cd20eec001ab3da Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 19:07:10 +0100 Subject: [PATCH 020/130] Update human.dm --- .../code/modules/mob/living/carbon/human/human.dm | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index 023525c4c5dd..6c2f9cb84d1a 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -44,6 +44,7 @@ if(!soak_fortitude) return soak_dice_aggravated = soak_fortitude.level + if(get_garou_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) soak_dice_lethal = st_get_stat(STAT_STAMINA) @@ -51,4 +52,10 @@ return else soak_dice_aggravated = st_get_stat(STAT_STAMINA) + if(get_ghoul_splat(src)) + var/datum/discipline/soak_fortitude = src.get_discipline(/datum/discipline/fortitude) + if(!soak_fortitude) + return + soak_dice_lethal = soak_fortitude.level //Ghouls can soak lethal and agg via fortitude. + soak_dice_aggravated = soak_fortitude.level // DARKPACK EDIT END From a94e736affba92721b84937dae7f6783dd543ad8 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 19:09:34 +0100 Subject: [PATCH 021/130] Update embracing.dm --- modular_darkpack/modules/vitae/code/embracing.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_darkpack/modules/vitae/code/embracing.dm b/modular_darkpack/modules/vitae/code/embracing.dm index 2eb95a1d87ab..eb95af7bf8ac 100644 --- a/modular_darkpack/modules/vitae/code/embracing.dm +++ b/modular_darkpack/modules/vitae/code/embracing.dm @@ -26,6 +26,8 @@ for(var/i in 1 to 3) childe.give_st_power(clan_disciplines[i]) + childe.update_soak() //Updates soak rolls to reflect that they're now a Kindred. + var/datum/st_stat/morality_path/morality/stat_morality_childe = childe.storyteller_stats[STAT_MORALITY] if(stat_morality_childe) From 8bcdc3f33292a870a6df37b459173adec4cdefd6 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 19:58:04 +0100 Subject: [PATCH 022/130] Update silver_damage.dm --- .../modules/werewolf_the_apocalypse/code/silver_damage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm index 24dc27e71fe0..7768db5f8fa5 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm @@ -26,7 +26,7 @@ if(!shot_pup_splat.is_breed_form()) // IDK. This is might TTRPG inaccurate RN because i think it should acctaully convert ALL the damage to agg not just add some agg to it. - shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED) + shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, forced = TRUE) //Skip Soak rolls for Agg /obj/item/proc/fera_silver_damage(mob/living/carbon/human/target, dice = 0, gnosis_damage = 0) if(!istype(target)) @@ -38,4 +38,4 @@ // W20 p. 290 - Werewolves dont take silver damage in breed form because they arent spirits if(!shot_pup_splat.is_breed_form()) - shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED) + shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, forced = TRUE) //Skip Soak rolls for Agg From 6c654f7a75d9f448c0a97fce7c328521bc1bf46e Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 20:52:54 +0100 Subject: [PATCH 023/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 770265fe8cfe..b30af212f0fc 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -426,8 +426,8 @@ if(AGGRAVATED) roll_used = soak_dice_aggravated //Well, obviously. - if(roll_used == 0) - return damage //Skip the roll if it can't be soaked. + if(roll_used < 1) + return damage //Skip the roll if it can't be soaked. Covers negative numbers too, in case of edge cases. if(!soak_roll) soak_roll = new() @@ -437,4 +437,6 @@ if(successes > 0) damage = (max(0, damage - (successes * 10))) to_chat(src, span_warning("You stand firm and are able to absorb some of the damage!")) - // DARKPACK EDIT ADD END + + return damage +// DARKPACK EDIT ADD END From 09e7c8f56965b98afc9321e1fb02d244e2df8c27 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 22:35:28 +0100 Subject: [PATCH 024/130] Update human.dm --- .../code/modules/mob/living/carbon/human/human.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index 6c2f9cb84d1a..d327e2262901 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -48,10 +48,12 @@ if(get_garou_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) soak_dice_lethal = st_get_stat(STAT_STAMINA) - if(is_breed_form(src)) + var/datum/splat/werewolf/shifter/shifter_splat = get_shifter_splat(src) + if(shifter_splat.is_breed_form() && (shifter_splat.get_breed_form_species() != /datum/species/human/shifter/war)) //Garou don't soak Agg in breed form except for + soak_dice_aggravated = 0 return - else - soak_dice_aggravated = st_get_stat(STAT_STAMINA) + soak_dice_aggravated = st_get_stat(STAT_STAMINA) + if(get_ghoul_splat(src)) var/datum/discipline/soak_fortitude = src.get_discipline(/datum/discipline/fortitude) if(!soak_fortitude) From 85f17aa10feaef6a3c87fc49129ab69232e4ddeb Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:23:15 +0100 Subject: [PATCH 025/130] Update kindred_splat.dm --- .../code/splats/kindred_splat/kindred_splat.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm index b1c83a8c5c3a..df7404746707 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm @@ -121,11 +121,14 @@ // Reset bloodpool size from Generation owner.maxbloodpool = initial(owner.maxbloodpool) + owner.update_soak() //Updates Soak on species gain. + /datum/splat/vampire/kindred/on_lose_or_destroy() if (isdummy(owner)) return GLOB.kindred_list -= owner + owner.update_soak() //Updates Soak on species loss. /datum/splat/vampire/kindred/proc/damage_resistance(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER From 3d9f43287b024128c2b258f4cb0176a4ee34b43c Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:23:43 +0100 Subject: [PATCH 026/130] Update ghoul_splat.dm --- .../code/splats/ghoul_splat/ghoul_splat.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/splats/ghoul_splat/ghoul_splat.dm b/modular_darkpack/modules/vampire_the_masquerade/code/splats/ghoul_splat/ghoul_splat.dm index 8f4f711b17ad..4a4e19a19132 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/splats/ghoul_splat/ghoul_splat.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/splats/ghoul_splat/ghoul_splat.dm @@ -37,3 +37,5 @@ owner.give_st_power(discipline, 1) if(ispath(discipline, /datum/discipline/dementation)) owner.add_quirk(/datum/quirk/darkpack/derangement) + + owner.update_soak() //Updates Soak on species gain. From bf0f467b75755de5d29387b25a9f6837e1b9d59d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:28:14 +0100 Subject: [PATCH 027/130] Update gaining_splats.dm --- modular_darkpack/modules/splats/code/gaining_splats.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/modules/splats/code/gaining_splats.dm b/modular_darkpack/modules/splats/code/gaining_splats.dm index ef1318f31f2c..d5753dd893ef 100644 --- a/modular_darkpack/modules/splats/code/gaining_splats.dm +++ b/modular_darkpack/modules/splats/code/gaining_splats.dm @@ -6,6 +6,7 @@ * actions, and biotypes were added. */ /datum/splat/proc/on_gain() + owner.update_soak() //Updates Soak on species gain. return /** From 48966aa2329d32b9418fbaa55d19fac2045f0122 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:29:23 +0100 Subject: [PATCH 028/130] Update gaining_splats.dm --- modular_darkpack/modules/splats/code/gaining_splats.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/modules/splats/code/gaining_splats.dm b/modular_darkpack/modules/splats/code/gaining_splats.dm index d5753dd893ef..ef1318f31f2c 100644 --- a/modular_darkpack/modules/splats/code/gaining_splats.dm +++ b/modular_darkpack/modules/splats/code/gaining_splats.dm @@ -6,7 +6,6 @@ * actions, and biotypes were added. */ /datum/splat/proc/on_gain() - owner.update_soak() //Updates Soak on species gain. return /** From 7b71ea6a9acb2340f4fa67cbf4e4c21784912b9c Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:33:31 +0100 Subject: [PATCH 029/130] Update fera_splat.dm --- .../werewolf_the_apocalypse/code/splats/fera_splat.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm index 1eb5bb01851f..920daa12882a 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm @@ -83,6 +83,14 @@ // incompatible_splats = list(/datum/splat/werewolf/shifter) // TODO: Becoming a shifter should get rid of your kinfolk splat +/datum/splat/werewolf/kinfolk/on_gain() + . = ..() + owner.update_soak() //Updates Soak on species gain. + +/datum/splat/werewolf/kinfolk/on_lose_or_destroy() + . = ..() + owner.update_soak() //Updates Soak on species loss. + /datum/splat/werewolf/shifter abstract_type = /datum/splat/werewolf/shifter splat_traits = list( @@ -125,6 +133,7 @@ owner.set_species(/datum/species/human/shifter/homid) add_power(/datum/action/cooldown/power/gift/howling) + owner.update_soak() //Updates Soak on species gain. RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(revert_to_breed_form)) /datum/splat/werewolf/shifter/on_lose_or_destroy() @@ -132,6 +141,7 @@ if(!QDELETED(owner)) owner.set_species(/datum/species/human) + owner.update_soak() //Updates Soak on species loss. UnregisterSignal(owner, COMSIG_LIVING_DEATH) /datum/splat/werewolf/shifter/splat_life(seconds_per_tick) From 63128dd485fa6c60277bd58d8096432fd37312a1 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:57:34 +0100 Subject: [PATCH 030/130] Update kindred_splat.dm --- .../code/splats/kindred_splat/kindred_splat.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm index df7404746707..b1c83a8c5c3a 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/splats/kindred_splat/kindred_splat.dm @@ -121,14 +121,11 @@ // Reset bloodpool size from Generation owner.maxbloodpool = initial(owner.maxbloodpool) - owner.update_soak() //Updates Soak on species gain. - /datum/splat/vampire/kindred/on_lose_or_destroy() if (isdummy(owner)) return GLOB.kindred_list -= owner - owner.update_soak() //Updates Soak on species loss. /datum/splat/vampire/kindred/proc/damage_resistance(datum/source, list/damage_mods, damage_amount, damagetype, def_zone, sharpness, attack_direction, obj/item/attacking_item) SIGNAL_HANDLER From 5dc17b0d4f6ada0c4a7c6a203e983f43da7f4188 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:58:48 +0100 Subject: [PATCH 031/130] Update ghoul_splat.dm --- .../code/splats/ghoul_splat/ghoul_splat.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/vampire_the_masquerade/code/splats/ghoul_splat/ghoul_splat.dm b/modular_darkpack/modules/vampire_the_masquerade/code/splats/ghoul_splat/ghoul_splat.dm index 4a4e19a19132..f741d44a8304 100644 --- a/modular_darkpack/modules/vampire_the_masquerade/code/splats/ghoul_splat/ghoul_splat.dm +++ b/modular_darkpack/modules/vampire_the_masquerade/code/splats/ghoul_splat/ghoul_splat.dm @@ -38,4 +38,4 @@ if(ispath(discipline, /datum/discipline/dementation)) owner.add_quirk(/datum/quirk/darkpack/derangement) - owner.update_soak() //Updates Soak on species gain. + owner.update_soak() //Updates Soak in case they've inherited Fortitude. From b001891c48e36ff5ca695b7e76fa4d12b412523d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:59:59 +0100 Subject: [PATCH 032/130] Update fera_splat.dm --- .../werewolf_the_apocalypse/code/splats/fera_splat.dm | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm index 920daa12882a..1eb5bb01851f 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/splats/fera_splat.dm @@ -83,14 +83,6 @@ // incompatible_splats = list(/datum/splat/werewolf/shifter) // TODO: Becoming a shifter should get rid of your kinfolk splat -/datum/splat/werewolf/kinfolk/on_gain() - . = ..() - owner.update_soak() //Updates Soak on species gain. - -/datum/splat/werewolf/kinfolk/on_lose_or_destroy() - . = ..() - owner.update_soak() //Updates Soak on species loss. - /datum/splat/werewolf/shifter abstract_type = /datum/splat/werewolf/shifter splat_traits = list( @@ -133,7 +125,6 @@ owner.set_species(/datum/species/human/shifter/homid) add_power(/datum/action/cooldown/power/gift/howling) - owner.update_soak() //Updates Soak on species gain. RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(revert_to_breed_form)) /datum/splat/werewolf/shifter/on_lose_or_destroy() @@ -141,7 +132,6 @@ if(!QDELETED(owner)) owner.set_species(/datum/species/human) - owner.update_soak() //Updates Soak on species loss. UnregisterSignal(owner, COMSIG_LIVING_DEATH) /datum/splat/werewolf/shifter/splat_life(seconds_per_tick) From 9db29094b57150ceaa27728ab8b8b1f1fc24bcb7 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 21 Apr 2026 00:02:51 +0100 Subject: [PATCH 033/130] Update ticker.dm --- code/controllers/subsystem/ticker.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index c355a47f1e2e..03cbd3146410 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -378,6 +378,7 @@ SUBSYSTEM_DEF(ticker) iter_human.increment_scar_slot() iter_human.load_persistent_scars() iter_human.load_guestbook() // DARKPACK EDIT ADDITION + iter_human.update_soak() // DARKPACK EDIT ADDITION if(!iter_human.hardcore_survival_score) continue From a5d7177d1c312d9643ff003ef4ac54e48c7d8db8 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 21 Apr 2026 01:06:26 +0100 Subject: [PATCH 034/130] Update code/modules/mob/living/carbon/human/_species.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/modules/mob/living/carbon/human/_species.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index ebf237d7e62e..4d47e94bb4ba 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -444,9 +444,9 @@ GLOBAL_LIST_EMPTY(features_by_species) //we don't allow it to update during species transition, so update it now human_who_gained_species.hud_used?.healthdoll.update_appearance() -///DARKPACK EDIT START +// DARKPACK EDIT ADD START - (soak) human_who_gained_species.update_soak() //Updates Soak values. -///DARKPACK EDIT END +// DARKPACK EDIT ADD END /** From ea3884177b82b6c442da6cef5b1a7966bda712be Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 21 Apr 2026 01:08:21 +0100 Subject: [PATCH 035/130] Update modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index d327e2262901..5487677a0ed2 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -34,7 +34,7 @@ . = ..() -// DARKPACK EDIT START +// DARKPACK EDIT ADD START /mob/living/carbon/human/update_soak() //Fairly complex list here. Kindred can soak lethal with Stamina, and Agg with Fortitude. Garou can soak everything in every form except their breed form, in which they can only soak Lethal and Bashing. . = ..() if(get_kindred_splat(src)) From 6de9afd4fb3482f8fdfadc5a7d54650024a7e75d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 21 Apr 2026 01:08:31 +0100 Subject: [PATCH 036/130] Update modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index 5487677a0ed2..20f3cc33645e 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -60,4 +60,4 @@ return soak_dice_lethal = soak_fortitude.level //Ghouls can soak lethal and agg via fortitude. soak_dice_aggravated = soak_fortitude.level -// DARKPACK EDIT END +// DARKPACK EDIT ADD END From 73e7e252a482c690602c602a5f734e9d6c50f828 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 21 Apr 2026 01:10:00 +0100 Subject: [PATCH 037/130] Update code/modules/mob/living/carbon/damage_procs.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/modules/mob/living/carbon/damage_procs.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index b30af212f0fc..71a1ea628306 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -429,8 +429,7 @@ if(roll_used < 1) return damage //Skip the roll if it can't be soaked. Covers negative numbers too, in case of edge cases. - if(!soak_roll) - soak_roll = new() + var/datum/storyteller_roll/soak/soak_roll = new() var/successes = soak_roll.st_roll(src, src, roll_used) From d20b255216ec8077851c8294f5abe959c871d15d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 21 Apr 2026 01:11:06 +0100 Subject: [PATCH 038/130] Update modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index 20f3cc33645e..066ec55f9cef 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -40,7 +40,7 @@ if(get_kindred_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) //Stamina already has the Fortitude bonus added for Bashing and Lethal. soak_dice_lethal = st_get_stat(STAT_STAMINA) - var/datum/discipline/soak_fortitude = src.get_discipline(/datum/discipline/fortitude) + var/datum/discipline/soak_fortitude = get_discipline(/datum/discipline/fortitude) if(!soak_fortitude) return soak_dice_aggravated = soak_fortitude.level From f170dc92816cf6fb61bd2b7ecbe7056ab8f130b3 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 21 Apr 2026 01:12:17 +0100 Subject: [PATCH 039/130] Update code/modules/mob/living/carbon/damage_procs.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- code/modules/mob/living/carbon/damage_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 71a1ea628306..699a04e67004 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -392,7 +392,7 @@ updatehealth() if(update) update_damage_overlays() -// DARKPACK EDIT ADD START - SOAK ROLLS +// DARKPACK EDIT ADD START - (soak) /mob/living/carbon/proc/soak_roll( damage = 0, damagetype = BRUTE, From 6414ab1cf00e1414f89909c56dc62e8c64865a86 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 28 Apr 2026 04:11:55 +0100 Subject: [PATCH 040/130] Update carbon_defines.dm --- .../code/modules/mob/living/carbon/carbon_defines.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm index 15cded7909f8..58446c8f6497 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm @@ -8,7 +8,6 @@ var/fakediablerist = FALSE var/can_be_embraced = TRUE - bloodquality = 2 ///The number of dice available to soak bashing, lethal, and aggravated damage var/soak_dice_bashing = 0 From b6560ee9ce4c6b6fd4d897c78795a507aede9c56 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 14:33:27 +0100 Subject: [PATCH 041/130] Update quietus.dm --- .../modules/powers/code/discipline/quietus/quietus.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/quietus/quietus.dm b/modular_darkpack/modules/powers/code/discipline/quietus/quietus.dm index c2b2b00ba203..299ec1f2b398 100644 --- a/modular_darkpack/modules/powers/code/discipline/quietus/quietus.dm +++ b/modular_darkpack/modules/powers/code/discipline/quietus/quietus.dm @@ -202,7 +202,7 @@ to_chat(owner, span_warning("[victim] resists Dargon's Call.")) return - victim.adjust_fire_loss(10 * net_successes) + victim.apply_damage((10 * net_successes), BURN) //Adjustment to use proper damage application system for soak and damage modifiers. to_chat(owner, span_boldwarning("You invoke Dagon's Call on [victim], choking them with their own blood!")) to_chat(victim, span_userdanger("Your blood vessels burst as you drown in your own blood!")) From f80f3bb0d5b21233c3e014bdc2be17776f331aa7 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 14:41:35 +0100 Subject: [PATCH 042/130] Update thanatosis.dm --- .../powers/code/discipline/thanatosis/thanatosis.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm b/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm index 1a68c4332394..4ace4f0dd09d 100644 --- a/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm +++ b/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm @@ -103,7 +103,7 @@ /datum/discipline_power/thanatosis/putrefaction/activate(mob/living/target) . = ..() - target.adjust_brute_loss(successes * 25) + target.apply_damage(successes * 25) //Adjustment to use proper damage application system for soak and damage modifiers. target.apply_status_effect(STATUS_EFFECT_PUTREFACTION, owner) //ASHES TO ASHES @@ -248,9 +248,9 @@ chosen_part.dismember(BURN) else target.visible_message(span_danger("[target]'s body withers under the curse!"), span_userdanger("YOUR BODY WITHERS UNDER THE CURSE!")) - target.adjust_brute_loss(150) + target.apply_damage(successes * 25, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. else - target.adjust_brute_loss(150) + target.apply_damage(successes * 25, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. //NECROSIS /datum/discipline_power/thanatosis/necrosis @@ -301,7 +301,7 @@ /datum/discipline_power/thanatosis/necrosis/activate(mob/living/carbon/human/target) . = ..() - target.adjust_brute_loss(3 TTRPG_DAMAGE) + target.apply_damage(3 TTRPG_DAMAGE, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. if(successes <= 1) to_chat(owner, span_warning("Necrosis has failed to affect [target]!")) From bfb142ce484fed8cad6ba2a8668632f54c05e546 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 14:46:10 +0100 Subject: [PATCH 043/130] Update possession_datums.dm --- .../code/discipline/dominate/possession/possession_datums.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/possession/possession_datums.dm b/modular_darkpack/modules/powers/code/discipline/dominate/possession/possession_datums.dm index fe6f156a4b71..5411a64dc493 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/possession/possession_datums.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/possession/possession_datums.dm @@ -68,7 +68,7 @@ if(mortal.mind) vamp.mind = mortal.mind - vamp.adjust_brute_loss(50) + vamp.apply_damage(50) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable as normal. vamp.visible_message(span_danger("[vamp] suddenly convulses violently and falls into what appears to be a coma!")) to_chat(vamp, span_boldwarning("The psychic shock of your host's death sends you into torpor!")) vamp.torpor(DAMAGE_TRAIT) From 82fc4d43794b933c547f5726038d987ac3524da7 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 14:54:37 +0100 Subject: [PATCH 044/130] Update levinbolt.dm --- .../powers/code/discipline/thaumaturgy/paths/levinbolt.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm index aef105534047..89e403114e99 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm @@ -265,7 +265,7 @@ H.electrocution_animation(40) attacker.adjust_jitter_up_to(2 SECONDS, 15) attacker.Stun(3 SECONDS) - attacker.adjust_fire_loss(30) + attacker.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8 /datum/discipline_power/thaumaturgy/path/levinbolt/three/proc/powerarray_target_click(mob/source, atom/target, params) SIGNAL_HANDLER From 0dd6b8ec47fcc6e78387a9f82403ebb89ac85d53 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:12:55 +0100 Subject: [PATCH 045/130] Update levinbolt.dm --- .../powers/code/discipline/thaumaturgy/paths/levinbolt.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm index 89e403114e99..6d93a3f42e40 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm @@ -265,7 +265,7 @@ H.electrocution_animation(40) attacker.adjust_jitter_up_to(2 SECONDS, 15) attacker.Stun(3 SECONDS) - attacker.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8 + attacker.apply_damage(30, BURN) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. /datum/discipline_power/thaumaturgy/path/levinbolt/three/proc/powerarray_target_click(mob/source, atom/target, params) SIGNAL_HANDLER @@ -452,7 +452,7 @@ owner.Beam(target, icon_state="lightning[rand(1,12)]", time = 10) - target.adjust_fire_loss(20) + target.apply_damage(20, BURN) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. target.adjust_jitter_up_to(3 SECONDS, 15) if(ishuman(target)) var/mob/living/carbon/human/H = target From 8dd2c71ea4002d97a824b7dd56de660fe0cb19b6 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:21:43 +0100 Subject: [PATCH 046/130] Update lure_of_flames.dm --- .../code/discipline/thaumaturgy/paths/lure_of_flames.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm index f9a544d98c60..f6ddcbf0143e 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm @@ -179,7 +179,7 @@ return var/damage_amount = 25 + owner.thaum_damage_plus + success_count - target.adjust_fire_loss(damage_amount) + target.apply_damage(damage_amount, BURN) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 7, but there's no easy way to adjust that currently. target.adjust_fire_stacks(4 + success_count) target.ignite_mob() @@ -249,7 +249,7 @@ if(L == owner) // Don't damage self - but caster still gets set on fire continue - L.adjust_fire_loss(base_damage) + L.apply_damage(base_damage, BURN) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. // Chance to ignite based on successes if(prob(ignite_chance)) From a3de37f219d5e8c0eb28d25318401097f2602650 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:26:06 +0100 Subject: [PATCH 047/130] Update scorptions_touch.dm --- .../code/discipline/quietus/components/scorptions_touch.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/quietus/components/scorptions_touch.dm b/modular_darkpack/modules/powers/code/discipline/quietus/components/scorptions_touch.dm index b2a45ad0ae75..c251c5d30a72 100644 --- a/modular_darkpack/modules/powers/code/discipline/quietus/components/scorptions_touch.dm +++ b/modular_darkpack/modules/powers/code/discipline/quietus/components/scorptions_touch.dm @@ -67,7 +67,7 @@ // apply non transmittable disease to the mortal victim if they reach zero stamina to_chat(victim, span_userdanger("You feel deathly ill as the poison ravages your body!")) - victim.adjust_fire_loss(2 * poison_potency) + victim.apply_damage((2 * poison_potency), BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable. //victim.AdjustKnockdown(3 SECONDS) this is from the old code? to_chat(user, span_warning("Your venomous touch burns [victim]!")) From db780e8620a3835a53bea244c1245ead76e50897 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:39:31 +0100 Subject: [PATCH 048/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 699a04e67004..eaef0e4dad18 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -35,6 +35,7 @@ var/species_mod = (100 - dna.species.damage_modifier) / 100 return ..() * species_mod +//soak_difficulty - The difficulty of soaking an attack. Base is 6, adjusted by some unique effects, rare disciplines, and more. Only reference this if you've used the proper path and checked ishuman() for apply_damage() or it'll throw up errors. /mob/living/carbon/human/apply_damage( damage = 0, damagetype = BRUTE, @@ -48,10 +49,11 @@ attack_direction = null, attacking_item, wound_clothing = TRUE, + soak_difficulty = 6, ) if(!forced) - damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item) + damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item, soak_difficulty) // Add relevant DR modifiers into blocked value to pass to parent blocked += physiology?.damage_resistance blocked += dna?.species?.damage_modifier @@ -398,7 +400,8 @@ damagetype = BRUTE, def_zone = null, sharpness = NONE, - attacking_item) + attacking_item, + soak_difficulty = 6) var/datum/storyteller_roll/soak/soak_roll var/roll_used = soak_dice_bashing @@ -431,6 +434,7 @@ var/datum/storyteller_roll/soak/soak_roll = new() + soak_roll.difficulty = soak_difficulty //Overrides difficulty for adjustments when soak difficulty is different. var/successes = soak_roll.st_roll(src, src, roll_used) if(successes > 0) From 847d791feb8f5348d47025e919020151e28fc23a Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:43:09 +0100 Subject: [PATCH 049/130] Update levinbolt.dm --- .../powers/code/discipline/thaumaturgy/paths/levinbolt.dm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm index 6d93a3f42e40..7b5543710a08 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm @@ -263,9 +263,11 @@ if(ishuman(attacker)) var/mob/living/carbon/human/H = attacker H.electrocution_animation(40) + attacker.apply_damage(30, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8. + else + attacker.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. attacker.adjust_jitter_up_to(2 SECONDS, 15) attacker.Stun(3 SECONDS) - attacker.apply_damage(30, BURN) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. /datum/discipline_power/thaumaturgy/path/levinbolt/three/proc/powerarray_target_click(mob/source, atom/target, params) SIGNAL_HANDLER @@ -457,6 +459,10 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target H.electrocution_animation(50) + target.apply_damage(20, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. + + else + attacker.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. if(prob(60)) target.Stun(1 SECONDS) From 15ea5cc8bf818087447dd90db5c11bb829c5729d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:46:09 +0100 Subject: [PATCH 050/130] Update lure_of_flames.dm --- .../discipline/thaumaturgy/paths/lure_of_flames.dm | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm index f6ddcbf0143e..fc806769f2c2 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm @@ -179,7 +179,12 @@ return var/damage_amount = 25 + owner.thaum_damage_plus + success_count - target.apply_damage(damage_amount, BURN) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 7, but there's no easy way to adjust that currently. + + if(ishuman(target)) + var/mob/living/carbon/human/H = target + H.apply_damage(damage_amount, BURN, soak_difficulty = 7) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 7. + else + target.apply_damage(damage_amount, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. target.adjust_fire_stacks(4 + success_count) target.ignite_mob() @@ -249,7 +254,11 @@ if(L == owner) // Don't damage self - but caster still gets set on fire continue - L.apply_damage(base_damage, BURN) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. + if(ishuman(L)) + var/mob/living/carbon/human/H = L + H.apply_damage(damage_amount, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8. + else + L.apply_damage(damage_amount, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. // Chance to ignite based on successes if(prob(ignite_chance)) From 162498ead3da47fd6c816d54de2ade5e50bcfca9 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:46:52 +0100 Subject: [PATCH 051/130] Update levinbolt.dm --- .../powers/code/discipline/thaumaturgy/paths/levinbolt.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm index 7b5543710a08..edb83ddd10fd 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm @@ -263,7 +263,7 @@ if(ishuman(attacker)) var/mob/living/carbon/human/H = attacker H.electrocution_animation(40) - attacker.apply_damage(30, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8. + H.apply_damage(30, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8. else attacker.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. attacker.adjust_jitter_up_to(2 SECONDS, 15) @@ -459,7 +459,7 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target H.electrocution_animation(50) - target.apply_damage(20, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. + H.apply_damage(20, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. else attacker.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. From abfb959412c03ccfd49462c9d0147585b585c6c5 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:53:20 +0100 Subject: [PATCH 052/130] Update levinbolt.dm --- .../powers/code/discipline/thaumaturgy/paths/levinbolt.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm index edb83ddd10fd..ab66dc3c0127 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm @@ -462,7 +462,7 @@ H.apply_damage(20, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. else - attacker.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. + target.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. if(prob(60)) target.Stun(1 SECONDS) From f16d55ac00d2d6f906c717605f98b69a0b4c1a90 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:54:42 +0100 Subject: [PATCH 053/130] Update lure_of_flames.dm --- .../code/discipline/thaumaturgy/paths/lure_of_flames.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm index fc806769f2c2..ea9636e10e13 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm @@ -256,9 +256,9 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L - H.apply_damage(damage_amount, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8. + H.apply_damage(base_damage, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8. else - L.apply_damage(damage_amount, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. + L.apply_damage(base_damage, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. // Chance to ignite based on successes if(prob(ignite_chance)) From d7db7c80895047d57906226913cbf1c10336de07 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:55:53 +0100 Subject: [PATCH 054/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index eaef0e4dad18..e380d0647eb6 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -403,7 +403,6 @@ attacking_item, soak_difficulty = 6) - var/datum/storyteller_roll/soak/soak_roll var/roll_used = soak_dice_bashing switch(damagetype) if(BRUTE) From 64bb20de99e1097bc00c6ecfeca60c4fe70a5fa0 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 15:59:32 +0100 Subject: [PATCH 055/130] Update _species.dm --- code/modules/mob/living/carbon/human/_species.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 24b02f912ce2..ed62164c85bd 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -444,8 +444,6 @@ GLOBAL_LIST_EMPTY(features_by_species) human_who_gained_species.living_flags &= ~STOP_OVERLAY_UPDATE_BODY_PARTS - //we don't allow it to update during species transition, so update it now - human_who_gained_species.hud_used?.healthdoll.update_appearance() // DARKPACK EDIT ADD START - (soak) human_who_gained_species.update_soak() //Updates Soak values. // DARKPACK EDIT ADD END From 8bce7513ce8a99dfb94d6919735944e16dd338cc Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 16:06:12 +0100 Subject: [PATCH 056/130] Update recalculate_max_health.dm --- .../code/mob_affecting_adjustments/recalculate_max_health.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm index bf6f264b9637..a5d7d8015a17 100644 --- a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm +++ b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm @@ -1,7 +1,7 @@ //Function for updating a player's health based on their current stats. /mob/living/proc/recalculate_max_health(initial = FALSE) var/old_max_health = maxHealth - maxHealth = round(initial(maxHealth) + ((initial(maxHealth)/8) * st_get_stat(STAT_STAMINA))) + maxHealth = round(initial(maxHealth) + ((initial(maxHealth)/8))) if(initial) health = maxHealth else if(health > 0) From e4898d5783e3543457151b2d9fadd493f3b58acc Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 16:07:10 +0100 Subject: [PATCH 057/130] Update __socialrole.dm --- .../modules/npc/code/human/socialroles/__socialrole.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm b/modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm index e0044c436c31..e2def41ce03d 100644 --- a/modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm +++ b/modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm @@ -241,8 +241,8 @@ fully_replace_character_name(name, real_name) - maxHealth = round(initial(maxHealth)+(initial(maxHealth)/3)*(st_get_stat(STAT_STAMINA))) - health = round(initial(health)+(initial(health)/3)*(st_get_stat(STAT_STAMINA))) + maxHealth = round(initial(maxHealth)+(initial(maxHealth)/3)) + health = round(initial(health)+(initial(health)/3)) last_health = health is_criminal = socialrole.is_criminal From ec8d815662c339798c71c4faefbcd827ff8f1bd1 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 16:16:55 +0100 Subject: [PATCH 058/130] Update fortitude.dm --- .../code/discipline/fortitude/fortitude.dm | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude.dm b/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude.dm index b0fc61089dc7..bf296b68c0a6 100644 --- a/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude.dm @@ -7,6 +7,7 @@ /datum/discipline_power/fortitude name = "Fortitude power name" desc = "Fortitude power description" + vitae_cost = 0 //Passive only, only keeping the discipline_power effects for the stamina boosts. activate_sound = 'modular_darkpack/modules/powers/sounds/fortitude_activate.ogg' deactivate_sound = 'modular_darkpack/modules/powers/sounds/fortitude_deactivate.ogg' @@ -14,7 +15,7 @@ //FORTITUDE 1 /datum/discipline_power/fortitude/one name = "Fortitude 1" - desc = "Harden your muscles. Become sturdier than the bodybuilders." + desc = "Harden your muscles. Become sturdier than the bodybuilders. No active effect." level = 1 @@ -31,12 +32,10 @@ ) /datum/discipline_power/fortitude/one/activate() - . = ..() - owner.apply_status_effect(/datum/status_effect/fortitude/one) + return /datum/discipline_power/fortitude/one/deactivate() - . = ..() - owner.remove_status_effect(/datum/status_effect/fortitude/one) + return /datum/discipline_power/fortitude/one/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 1, "Fortitude") @@ -44,7 +43,7 @@ //FORTITUDE 2 /datum/discipline_power/fortitude/two name = "Fortitude 2" - desc = "Become as stone. Let nothing breach your protections." + desc = "Become as stone. Let nothing breach your protections. No active effect." level = 2 @@ -61,12 +60,10 @@ ) /datum/discipline_power/fortitude/two/activate() - . = ..() - owner.apply_status_effect(/datum/status_effect/fortitude/two) + return /datum/discipline_power/fortitude/two/deactivate() - . = ..() - owner.remove_status_effect(/datum/status_effect/fortitude/two) + return /datum/discipline_power/fortitude/two/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 2, "Fortitude") @@ -74,7 +71,7 @@ //FORTITUDE 3 /datum/discipline_power/fortitude/three name = "Fortitude 3" - desc = "Look down upon those who would try to kill you. Shrug off grievous attacks." + desc = "Look down upon those who would try to kill you. Shrug off grievous attacks. No active effect." level = 3 @@ -91,12 +88,10 @@ ) /datum/discipline_power/fortitude/three/activate() - . = ..() - owner.apply_status_effect(/datum/status_effect/fortitude/three) + return /datum/discipline_power/fortitude/three/deactivate() - . = ..() - owner.remove_status_effect(/datum/status_effect/fortitude/three) + return /datum/discipline_power/fortitude/three/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 3, "Fortitude") @@ -104,7 +99,7 @@ //FORTITUDE 4 /datum/discipline_power/fortitude/four name = "Fortitude 4" - desc = "Be like steel. Walk into fire and come out only singed." + desc = "Be like steel. Walk into fire and come out only singed. No active effect." level = 4 @@ -121,12 +116,10 @@ ) /datum/discipline_power/fortitude/four/activate() - . = ..() - owner.apply_status_effect(/datum/status_effect/fortitude/four) + return /datum/discipline_power/fortitude/four/deactivate() - . = ..() - owner.remove_status_effect(/datum/status_effect/fortitude/four) + return /datum/discipline_power/fortitude/four/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 4, "Fortitude") @@ -134,7 +127,7 @@ //FORTITUDE 5 /datum/discipline_power/fortitude/five name = "Fortitude 5" - desc = "Reach the pinnacle of toughness. Never fear anything again." + desc = "Reach the pinnacle of toughness. Never fear anything again. No active effect." level = 5 @@ -151,12 +144,10 @@ ) /datum/discipline_power/fortitude/five/activate() - . = ..() - owner.apply_status_effect(/datum/status_effect/fortitude/five) + return /datum/discipline_power/fortitude/five/deactivate() - . = ..() - owner.remove_status_effect(/datum/status_effect/fortitude/five) + return /datum/discipline_power/fortitude/five/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 5, "Fortitude") From a283ba46b142f4df1f36748a2519d9e821c8d892 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 16:17:53 +0100 Subject: [PATCH 059/130] Delete modular_darkpack/modules/powers/code/discipline/fortitude/fortitude_status_effect.dm --- .../fortitude/fortitude_status_effect.dm | 105 ------------------ 1 file changed, 105 deletions(-) delete mode 100644 modular_darkpack/modules/powers/code/discipline/fortitude/fortitude_status_effect.dm diff --git a/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude_status_effect.dm b/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude_status_effect.dm deleted file mode 100644 index 9322969bae80..000000000000 --- a/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude_status_effect.dm +++ /dev/null @@ -1,105 +0,0 @@ -#define BASHING_LETHAL_PROTECTION 15 -#define AGGRAVATED_PROTECTION 10 - -/datum/status_effect/fortitude - // All IDs are the same to prevent stacking multiple Fortitude statuses - id = "fortitude" - status_type = STATUS_EFFECT_REPLACE - alert_type = null - - var/armor_type - -/datum/status_effect/fortitude/on_apply() - . = ..() - if (!.) - return - - if (ishuman(owner)) - var/mob/living/carbon/human/human_owner = owner - human_owner.physiology.armor = human_owner.physiology.armor.add_other_armor(armor_type) - -/datum/status_effect/fortitude/on_remove() - . = ..() - - if (ishuman(owner)) - var/mob/living/carbon/human/human_owner = owner - human_owner.physiology.armor = human_owner.physiology.armor.subtract_other_armor(armor_type) - -// Status effect ranks -/datum/status_effect/fortitude/one - armor_type = /datum/armor/fortitude1 - -/datum/armor/fortitude1 - acid = 1 * AGGRAVATED_PROTECTION - bio = 1 * AGGRAVATED_PROTECTION - bomb = 1 * BASHING_LETHAL_PROTECTION - bullet = 1 * BASHING_LETHAL_PROTECTION - consume = 1 * BASHING_LETHAL_PROTECTION - energy = 1 * BASHING_LETHAL_PROTECTION - laser = 1 * BASHING_LETHAL_PROTECTION - fire = 1 * AGGRAVATED_PROTECTION - melee = 1 * BASHING_LETHAL_PROTECTION - wound = 1 * BASHING_LETHAL_PROTECTION - -/datum/status_effect/fortitude/two - armor_type = /datum/armor/fortitude2 - -/datum/armor/fortitude2 - acid = 2 * AGGRAVATED_PROTECTION - bio = 2 * AGGRAVATED_PROTECTION - bomb = 2 * BASHING_LETHAL_PROTECTION - bullet = 2 * BASHING_LETHAL_PROTECTION - consume = 2 * BASHING_LETHAL_PROTECTION - energy = 2 * BASHING_LETHAL_PROTECTION - laser = 2 * BASHING_LETHAL_PROTECTION - fire = 2 * AGGRAVATED_PROTECTION - melee = 2 * BASHING_LETHAL_PROTECTION - wound = 2 * BASHING_LETHAL_PROTECTION - -/datum/status_effect/fortitude/three - armor_type = /datum/armor/fortitude3 - -/datum/armor/fortitude3 - acid = 3 * AGGRAVATED_PROTECTION - bio = 3 * AGGRAVATED_PROTECTION - bomb = 3 * BASHING_LETHAL_PROTECTION - bullet = 3 * BASHING_LETHAL_PROTECTION - consume = 3 * BASHING_LETHAL_PROTECTION - energy = 3 * BASHING_LETHAL_PROTECTION - laser = 3 * BASHING_LETHAL_PROTECTION - fire = 3 * AGGRAVATED_PROTECTION - melee = 3 * BASHING_LETHAL_PROTECTION - wound = 3 * BASHING_LETHAL_PROTECTION - -/datum/status_effect/fortitude/four - armor_type = /datum/armor/fortitude4 - -/datum/armor/fortitude4 - acid = 4 * AGGRAVATED_PROTECTION - bio = 4 * AGGRAVATED_PROTECTION - bomb = 4 * BASHING_LETHAL_PROTECTION - bullet = 4 * BASHING_LETHAL_PROTECTION - consume = 4 * BASHING_LETHAL_PROTECTION - energy = 4 * BASHING_LETHAL_PROTECTION - laser = 4 * BASHING_LETHAL_PROTECTION - fire = 4 * AGGRAVATED_PROTECTION - melee = 4 * BASHING_LETHAL_PROTECTION - wound = 4 * BASHING_LETHAL_PROTECTION - -/datum/status_effect/fortitude/five - armor_type = /datum/armor/fortitude5 - -/datum/armor/fortitude5 - acid = 5 * AGGRAVATED_PROTECTION - bio = 5 * AGGRAVATED_PROTECTION - bomb = 5 * BASHING_LETHAL_PROTECTION - bullet = 5 * BASHING_LETHAL_PROTECTION - consume = 5 * BASHING_LETHAL_PROTECTION - energy = 5 * BASHING_LETHAL_PROTECTION - laser = 5 * BASHING_LETHAL_PROTECTION - fire = 5 * AGGRAVATED_PROTECTION - melee = 5 * BASHING_LETHAL_PROTECTION - wound = 5 * BASHING_LETHAL_PROTECTION - -#undef BASHING_LETHAL_PROTECTION -#undef AGGRAVATED_PROTECTION From 2c4650679e3066d0e389cd972c99c73b6129c9f7 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 16:18:17 +0100 Subject: [PATCH 060/130] Update tgstation.dme --- tgstation.dme | 1 - 1 file changed, 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 56f457cb3b4b..273c773bb990 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7549,7 +7549,6 @@ #include "modular_darkpack\modules\powers\code\discipline\dominate\status_effects\conditioning_status_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\dominate\status_effects\mesmerize_status_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\fortitude\fortitude.dm" -#include "modular_darkpack\modules\powers\code\discipline\fortitude\fortitude_status_effect.dm" #include "modular_darkpack\modules\powers\code\discipline\obeah\obeah.dm" #include "modular_darkpack\modules\powers\code\discipline\obeah\shepherds_watch.dm" #include "modular_darkpack\modules\powers\code\discipline\obfuscate\obfuscate.dm" From db9a2a7fcf2c88d33faa0c769a91ea7364e35380 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 29 Apr 2026 16:40:17 +0100 Subject: [PATCH 061/130] Update fortitude.dm --- .../code/discipline/fortitude/fortitude.dm | 39 +++++-------------- 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude.dm b/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude.dm index bf296b68c0a6..7ef632a73de7 100644 --- a/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude.dm +++ b/modular_darkpack/modules/powers/code/discipline/fortitude/fortitude.dm @@ -12,6 +12,15 @@ activate_sound = 'modular_darkpack/modules/powers/sounds/fortitude_activate.ogg' deactivate_sound = 'modular_darkpack/modules/powers/sounds/fortitude_deactivate.ogg' +/datum/discipline_power/fortitude/activate() //Override base calls. + SHOULD_CALL_PARENT(FALSE) + return + +/datum/discipline_power/fortitude/deactivate() + SHOULD_CALL_PARENT(FALSE) + return + + //FORTITUDE 1 /datum/discipline_power/fortitude/one name = "Fortitude 1" @@ -31,12 +40,6 @@ /datum/discipline_power/fortitude/five ) -/datum/discipline_power/fortitude/one/activate() - return - -/datum/discipline_power/fortitude/one/deactivate() - return - /datum/discipline_power/fortitude/one/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 1, "Fortitude") @@ -59,12 +62,6 @@ /datum/discipline_power/fortitude/five ) -/datum/discipline_power/fortitude/two/activate() - return - -/datum/discipline_power/fortitude/two/deactivate() - return - /datum/discipline_power/fortitude/two/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 2, "Fortitude") @@ -87,12 +84,6 @@ /datum/discipline_power/fortitude/five ) -/datum/discipline_power/fortitude/three/activate() - return - -/datum/discipline_power/fortitude/three/deactivate() - return - /datum/discipline_power/fortitude/three/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 3, "Fortitude") @@ -115,12 +106,6 @@ /datum/discipline_power/fortitude/five ) -/datum/discipline_power/fortitude/four/activate() - return - -/datum/discipline_power/fortitude/four/deactivate() - return - /datum/discipline_power/fortitude/four/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 4, "Fortitude") @@ -143,11 +128,5 @@ /datum/discipline_power/fortitude/four ) -/datum/discipline_power/fortitude/five/activate() - return - -/datum/discipline_power/fortitude/five/deactivate() - return - /datum/discipline_power/fortitude/five/post_gain() owner.st_add_stat_mod(STAT_STAMINA, 5, "Fortitude") From 07dc636ff9ce99b37fc522999e12e48715f380b8 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Thu, 30 Apr 2026 04:14:53 +0100 Subject: [PATCH 062/130] Update modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm Co-authored-by: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index 066ec55f9cef..b717a25772ef 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -60,4 +60,3 @@ return soak_dice_lethal = soak_fortitude.level //Ghouls can soak lethal and agg via fortitude. soak_dice_aggravated = soak_fortitude.level -// DARKPACK EDIT ADD END From 4bf9dea664f1beba702d5062a4bcaaba660ebf4a Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Thu, 30 Apr 2026 04:15:56 +0100 Subject: [PATCH 063/130] Update modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm Co-authored-by: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com> --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index b717a25772ef..b4cbf16c486f 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -34,7 +34,6 @@ . = ..() -// DARKPACK EDIT ADD START /mob/living/carbon/human/update_soak() //Fairly complex list here. Kindred can soak lethal with Stamina, and Agg with Fortitude. Garou can soak everything in every form except their breed form, in which they can only soak Lethal and Bashing. . = ..() if(get_kindred_splat(src)) From 583c931c0465e9796fbd3515d5973d6dbb0d000c Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 1 May 2026 20:26:02 +0100 Subject: [PATCH 064/130] Update mob_procs.dm --- .../code/mob_affecting_adjustments/mob_procs.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm index fcafd17fa869..45becd0f58de 100644 --- a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm +++ b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm @@ -47,6 +47,8 @@ var/datum/st_stat/stat_datum = storyteller_stats[stat_typepath] if(stat_datum.stat_flags & AFFECTS_HEALTH) recalculate_max_health(initial) + if(iscarbon(src)) + update_soak() if(stat_datum.stat_flags & AFFECTS_SPEED) add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/dexterity, multiplicative_slowdown = -(st_get_stat(STAT_DEXTERITY) / 20)) From afeccc1b3f9d959274b7932461c8eadc808c8ea9 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 1 May 2026 20:33:02 +0100 Subject: [PATCH 065/130] Update mob_procs.dm --- .../code/mob_affecting_adjustments/mob_procs.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm index 45becd0f58de..7408aca6ac74 100644 --- a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm +++ b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm @@ -48,7 +48,8 @@ if(stat_datum.stat_flags & AFFECTS_HEALTH) recalculate_max_health(initial) if(iscarbon(src)) - update_soak() + var/mob/libing/carbon/C = src + C.update_soak() if(stat_datum.stat_flags & AFFECTS_SPEED) add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/dexterity, multiplicative_slowdown = -(st_get_stat(STAT_DEXTERITY) / 20)) From a0e87b87603fbaaccd56672172ced5f703449fd4 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 1 May 2026 20:44:10 +0100 Subject: [PATCH 066/130] Update mob_procs.dm --- .../code/mob_affecting_adjustments/mob_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm index 7408aca6ac74..b99613cf6bea 100644 --- a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm +++ b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm @@ -48,7 +48,7 @@ if(stat_datum.stat_flags & AFFECTS_HEALTH) recalculate_max_health(initial) if(iscarbon(src)) - var/mob/libing/carbon/C = src + var/mob/living/carbon/C = src C.update_soak() if(stat_datum.stat_flags & AFFECTS_SPEED) add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/dexterity, multiplicative_slowdown = -(st_get_stat(STAT_DEXTERITY) / 20)) From 60098a476a4a181c90608de5702a4347961997a2 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 1 May 2026 20:45:39 +0100 Subject: [PATCH 067/130] Update ticker.dm --- code/controllers/subsystem/ticker.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index b41f6197ca13..36e2a60d0d12 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -377,7 +377,6 @@ SUBSYSTEM_DEF(ticker) iter_human.increment_scar_slot() iter_human.load_persistent_scars() - iter_human.load_guestbook() // DARKPACK EDIT ADD iter_human.update_soak() // DARKPACK EDIT ADDITION From 3223c042b23ccf720ac4c4f5ae4b07fd384f0cc0 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 1 May 2026 20:51:11 +0100 Subject: [PATCH 068/130] Update ticker.dm --- code/controllers/subsystem/ticker.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 36e2a60d0d12..46a10c537621 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -377,8 +377,9 @@ SUBSYSTEM_DEF(ticker) iter_human.increment_scar_slot() iter_human.load_persistent_scars() + iter_human.load_guestbook() // DARKPACK EDIT ADD - iter_human.update_soak() // DARKPACK EDIT ADDITION + iter_human.update_soak() // DARKPACK EDIT ADDITION if(!iter_human.hardcore_survival_score) continue From 46f56f1de1b60668c017f6e9d098a28a55887b9e Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 3 May 2026 04:19:51 +0100 Subject: [PATCH 069/130] Update combat.dm --- code/modules/unit_tests/combat.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/code/modules/unit_tests/combat.dm b/code/modules/unit_tests/combat.dm index 113abac1339c..a8152018e9d8 100644 --- a/code/modules/unit_tests/combat.dm +++ b/code/modules/unit_tests/combat.dm @@ -3,6 +3,7 @@ var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human/consistent) puncher.st_set_stat(STAT_STRENGTH, 1) // DARKPACK EDIT ADD + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. // Avoid all randomness in tests ADD_TRAIT(puncher, TRAIT_PERFECT_ATTACKER, INNATE_TRAIT) @@ -16,6 +17,9 @@ var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human/consistent) var/obj/item/storage/toolbox/toolbox = allocate(/obj/item/storage/toolbox) + + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. + tider.put_in_active_hand(toolbox, forced = TRUE) tider.set_combat_mode(TRUE) victim.attackby(toolbox, tider) @@ -27,6 +31,8 @@ var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human/consistent) var/obj/item/weldingtool/welding_tool = allocate(/obj/item/weldingtool) + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. + attacker.put_in_active_hand(welding_tool, forced = TRUE) attacker.set_combat_mode(TRUE) @@ -106,6 +112,7 @@ /datum/unit_test/self_punch/Run() var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent) + dummy.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. ADD_TRAIT(dummy, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS) dummy.set_combat_mode(TRUE) dummy.ClickOn(dummy) @@ -119,6 +126,7 @@ var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human/consistent) ADD_TRAIT(attacker, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS) ADD_TRAIT(attacker, TRAIT_HANDS_BLOCKED, TRAIT_SOURCE_UNIT_TESTS) + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Prevents potential issue with soak absorbing hit and causing this to fail to runtime properly. attacker.set_combat_mode(TRUE) attacker.ClickOn(victim) TEST_ASSERT_EQUAL(victim.get_brute_loss(), 0, "Victim took brute damage from being punched by a handcuffed attacker") @@ -133,6 +141,7 @@ /datum/unit_test/handcuff_bite/Run() var/mob/living/carbon/human/attacker = allocate(/mob/living/carbon/human/consistent) var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human/consistent) + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. ADD_TRAIT(attacker, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS) ADD_TRAIT(attacker, TRAIT_HANDS_BLOCKED, TRAIT_SOURCE_UNIT_TESTS) attacker.set_combat_mode(TRUE) From c07d96db82a392eb105e5cd235e925f5ba3a51a1 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 3 May 2026 04:21:12 +0100 Subject: [PATCH 070/130] Update baton.dm --- code/modules/unit_tests/baton.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/unit_tests/baton.dm b/code/modules/unit_tests/baton.dm index 8b27b4d9ca30..fe610bc2dadc 100644 --- a/code/modules/unit_tests/baton.dm +++ b/code/modules/unit_tests/baton.dm @@ -15,6 +15,7 @@ /datum/unit_test/baton/Run() var/mob/living/carbon/human/consistent/secoff = EASY_ALLOCATE() var/mob/living/carbon/human/consistent/tider = EASY_ALLOCATE() + tider.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. ADD_TRAIT(secoff, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS) var/obj/item/melee/baton/stun_baton = allocate(baton_type) From 2d09b069ec02e8f15ae41e6e5121b454921ff49a Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 3 May 2026 04:23:18 +0100 Subject: [PATCH 071/130] Update combat_eyestab.dm --- code/modules/unit_tests/combat_eyestab.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/unit_tests/combat_eyestab.dm b/code/modules/unit_tests/combat_eyestab.dm index d065607bec2b..4e97802a4c94 100644 --- a/code/modules/unit_tests/combat_eyestab.dm +++ b/code/modules/unit_tests/combat_eyestab.dm @@ -6,6 +6,8 @@ var/mob/living/carbon/human/consistent/victim = EASY_ALLOCATE() var/obj/item/screwdriver/stabber = EASY_ALLOCATE() + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. + attacker.zone_selected = BODY_ZONE_PRECISE_EYES attacker.put_in_active_hand(stabber, forced = TRUE) From 4d8536274ab2617403c1b8374598e479668bc318 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 3 May 2026 04:24:10 +0100 Subject: [PATCH 072/130] Update combat_pistol_whip.dm --- code/modules/unit_tests/combat_pistol_whip.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/unit_tests/combat_pistol_whip.dm b/code/modules/unit_tests/combat_pistol_whip.dm index f67a57f9841a..7d70f2ac2a0c 100644 --- a/code/modules/unit_tests/combat_pistol_whip.dm +++ b/code/modules/unit_tests/combat_pistol_whip.dm @@ -8,6 +8,7 @@ attacker.put_in_active_hand(gun, forced = TRUE) victim.forceMove(locate(attacker.x + 1, attacker.y, attacker.z)) + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. var/expected_ammo = gun.magazine.max_ammo + 1 // These assertions are just here because I don't understand gun code From 2209af902d77afcb085cee452f5bda86737bc3e1 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 3 May 2026 04:38:11 +0100 Subject: [PATCH 073/130] Update combat.dm --- code/modules/unit_tests/combat.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/unit_tests/combat.dm b/code/modules/unit_tests/combat.dm index a8152018e9d8..7ab03e612430 100644 --- a/code/modules/unit_tests/combat.dm +++ b/code/modules/unit_tests/combat.dm @@ -31,7 +31,7 @@ var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human/consistent) var/obj/item/weldingtool/welding_tool = allocate(/obj/item/weldingtool) - victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Prevents potential issue with soak absorbing hit and causing this to fail to runtime properly. attacker.put_in_active_hand(welding_tool, forced = TRUE) attacker.set_combat_mode(TRUE) From 085e68fd9ecef946f289ecca0fdaee493389c887 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 4 May 2026 17:03:41 +0100 Subject: [PATCH 074/130] Update thanatosis.dm --- .../modules/powers/code/discipline/thanatosis/thanatosis.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm b/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm index 4ace4f0dd09d..72bf8d9d1214 100644 --- a/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm +++ b/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm @@ -248,9 +248,9 @@ chosen_part.dismember(BURN) else target.visible_message(span_danger("[target]'s body withers under the curse!"), span_userdanger("YOUR BODY WITHERS UNDER THE CURSE!")) - target.apply_damage(successes * 25, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. + target.apply_damage(150, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. else - target.apply_damage(successes * 25, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. + target.apply_damage(150, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. //NECROSIS /datum/discipline_power/thanatosis/necrosis From cf87e0eed25a9555aa3cb5e937d31ee0c40b75da Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 4 May 2026 17:21:07 +0100 Subject: [PATCH 075/130] Update new_player.dm --- code/modules/mob/dead/new_player/new_player.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 6cc76241f2a0..3e70d74ad532 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -255,8 +255,8 @@ humanc.increment_scar_slot() humanc.load_persistent_scars() - humanc.load_guestbook() // DARKPACK EDIT ADDITION - humanc.update_soak() // DARKPACK EDIT ADDITION + humanc.load_guestbook() // DARKPACK EDIT ADD + humanc.update_soak() // DARKPACK EDIT ADD if(GLOB.curse_of_madness_triggered) give_madness(humanc, GLOB.curse_of_madness_triggered) From 38fc884799fc58a1b7909925ff347b6387a612d6 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 4 May 2026 17:22:12 +0100 Subject: [PATCH 076/130] Update _species.dm --- code/modules/mob/living/carbon/human/_species.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 8c75585c2291..0bb49d1592f5 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -444,6 +444,7 @@ GLOBAL_LIST_EMPTY(features_by_species) human_who_gained_species.living_flags &= ~STOP_OVERLAY_UPDATE_BODY_PARTS +//we don't allow it to update during species transition, so update it now // DARKPACK EDIT ADD START - (soak) human_who_gained_species.update_soak() //Updates Soak values. // DARKPACK EDIT ADD END From d58dd4770cccc5d7e1b4c1ee036c1626fbc5fd31 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 4 May 2026 18:01:32 +0100 Subject: [PATCH 077/130] Update quietus.dm --- .../modules/powers/code/discipline/quietus/quietus.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/quietus/quietus.dm b/modular_darkpack/modules/powers/code/discipline/quietus/quietus.dm index 299ec1f2b398..c0881f697af5 100644 --- a/modular_darkpack/modules/powers/code/discipline/quietus/quietus.dm +++ b/modular_darkpack/modules/powers/code/discipline/quietus/quietus.dm @@ -202,7 +202,7 @@ to_chat(owner, span_warning("[victim] resists Dargon's Call.")) return - victim.apply_damage((10 * net_successes), BURN) //Adjustment to use proper damage application system for soak and damage modifiers. + victim.apply_damage((10 * net_successes), BURN) to_chat(owner, span_boldwarning("You invoke Dagon's Call on [victim], choking them with their own blood!")) to_chat(victim, span_userdanger("Your blood vessels burst as you drown in your own blood!")) From 88c2afd2116479d3c496ae957ff627aaace1fb4e Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 4 May 2026 21:08:24 +0100 Subject: [PATCH 078/130] Update modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm Co-authored-by: FalloutFalcon <86381784+FalloutFalcon@users.noreply.github.com> --- .../modules/npc/code/human/socialroles/__socialrole.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm b/modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm index e2def41ce03d..fdf5dd98f3a8 100644 --- a/modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm +++ b/modular_darkpack/modules/npc/code/human/socialroles/__socialrole.dm @@ -241,8 +241,6 @@ fully_replace_character_name(name, real_name) - maxHealth = round(initial(maxHealth)+(initial(maxHealth)/3)) - health = round(initial(health)+(initial(health)/3)) last_health = health is_criminal = socialrole.is_criminal From a1881e45688afe807ff02611efb2424e73fb35cf Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 4 May 2026 21:29:14 +0100 Subject: [PATCH 079/130] Delete modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm --- .../mob_affecting_adjustments/recalculate_max_health.dm | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm diff --git a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm deleted file mode 100644 index a5d7d8015a17..000000000000 --- a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/recalculate_max_health.dm +++ /dev/null @@ -1,8 +0,0 @@ -//Function for updating a player's health based on their current stats. -/mob/living/proc/recalculate_max_health(initial = FALSE) - var/old_max_health = maxHealth - maxHealth = round(initial(maxHealth) + ((initial(maxHealth)/8))) - if(initial) - health = maxHealth - else if(health > 0) - health = max(health + maxHealth - old_max_health, 1) From 3d85cf271d8ef78f73ee26e99605ba204d1e7b96 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 4 May 2026 21:29:41 +0100 Subject: [PATCH 080/130] Update mob_procs.dm --- .../code/mob_affecting_adjustments/mob_procs.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm index b99613cf6bea..d928791ad47d 100644 --- a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm +++ b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm @@ -46,7 +46,6 @@ for(var/stat_typepath in storyteller_stats) var/datum/st_stat/stat_datum = storyteller_stats[stat_typepath] if(stat_datum.stat_flags & AFFECTS_HEALTH) - recalculate_max_health(initial) if(iscarbon(src)) var/mob/living/carbon/C = src C.update_soak() From 51c07884616170509147f8fbffcd6f2d8040df29 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Mon, 4 May 2026 22:21:54 +0100 Subject: [PATCH 081/130] Update tgstation.dme --- tgstation.dme | 1 - 1 file changed, 1 deletion(-) diff --git a/tgstation.dme b/tgstation.dme index 3576bb3b9a97..c8ef5927d0e0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -7719,7 +7719,6 @@ #include "modular_darkpack\modules\storyteller_stats\code\stat_pref_middleware.dm" #include "modular_darkpack\modules\storyteller_stats\code\mob_affecting_adjustments\mob_procs.dm" #include "modular_darkpack\modules\storyteller_stats\code\mob_affecting_adjustments\movespeed_modifier.dm" -#include "modular_darkpack\modules\storyteller_stats\code\mob_affecting_adjustments\recalculate_max_health.dm" #include "modular_darkpack\modules\storyteller_stats\code\st_stats\default_abilities.dm" #include "modular_darkpack\modules\storyteller_stats\code\st_stats\default_attributes.dm" #include "modular_darkpack\modules\storyteller_stats\code\st_stats\default_morality.dm" From da82d0fae94e6e1d45fd65663ea0b7840ee6fc56 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 20:49:42 +0100 Subject: [PATCH 082/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index e380d0647eb6..7cc604df2645 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -11,7 +11,13 @@ attack_direction = null, attacking_item, wound_clothing = TRUE, + soak_difficulty = 6, //soak_difficulty - The difficulty of soaking an attack. Base is 6, adjusted by some unique effects, rare disciplines, and more. Only reference this if you've used the proper path and checked iscarbon() for apply_damage() or it'll throw up errors. + unsoakable = FALSE, //unsoakable - Whether an attack is soakable or not. By default off, some damage types and specific effects are unsoakable. ) + + if(!forced && unsoakable = FALSE) + damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item, soak_difficulty) + // Spread damage should always have def zone be null if(spread_damage) def_zone = null @@ -35,7 +41,7 @@ var/species_mod = (100 - dna.species.damage_modifier) / 100 return ..() * species_mod -//soak_difficulty - The difficulty of soaking an attack. Base is 6, adjusted by some unique effects, rare disciplines, and more. Only reference this if you've used the proper path and checked ishuman() for apply_damage() or it'll throw up errors. + /mob/living/carbon/human/apply_damage( damage = 0, damagetype = BRUTE, @@ -50,9 +56,10 @@ attacking_item, wound_clothing = TRUE, soak_difficulty = 6, + unsoakable = FALSE, ) - if(!forced) + if(!forced && unsoakable = FALSE) damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item, soak_difficulty) // Add relevant DR modifiers into blocked value to pass to parent blocked += physiology?.damage_resistance From 49096558c3552e9f2423824ce3e76e4d177446ae Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 20:52:27 +0100 Subject: [PATCH 083/130] Update thanatosis.dm --- .../powers/code/discipline/thanatosis/thanatosis.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm b/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm index 72bf8d9d1214..3d0d5376f485 100644 --- a/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm +++ b/modular_darkpack/modules/powers/code/discipline/thanatosis/thanatosis.dm @@ -103,7 +103,7 @@ /datum/discipline_power/thanatosis/putrefaction/activate(mob/living/target) . = ..() - target.apply_damage(successes * 25) //Adjustment to use proper damage application system for soak and damage modifiers. + target.apply_damage(successes * 25) target.apply_status_effect(STATUS_EFFECT_PUTREFACTION, owner) //ASHES TO ASHES @@ -248,9 +248,9 @@ chosen_part.dismember(BURN) else target.visible_message(span_danger("[target]'s body withers under the curse!"), span_userdanger("YOUR BODY WITHERS UNDER THE CURSE!")) - target.apply_damage(150, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. + target.apply_damage(150, unsoakable = TRUE) else - target.apply_damage(150, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. + target.apply_damage(150) //NECROSIS /datum/discipline_power/thanatosis/necrosis @@ -301,7 +301,7 @@ /datum/discipline_power/thanatosis/necrosis/activate(mob/living/carbon/human/target) . = ..() - target.apply_damage(3 TTRPG_DAMAGE, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable for sucessful attack here. + target.apply_damage(3 TTRPG_DAMAGE, unsoakable = TRUE) if(successes <= 1) to_chat(owner, span_warning("Necrosis has failed to affect [target]!")) From fbf61b49e98fcbb8771165999554221474823ecd Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 20:54:46 +0100 Subject: [PATCH 084/130] Update levinbolt.dm --- .../code/discipline/thaumaturgy/paths/levinbolt.dm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm index ab66dc3c0127..9b7120b9e502 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm @@ -263,9 +263,9 @@ if(ishuman(attacker)) var/mob/living/carbon/human/H = attacker H.electrocution_animation(40) - H.apply_damage(30, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8. + H.apply_damage(30, BURN, soak_difficulty = 8) else - attacker.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. + attacker.apply_damage(30, BURN) attacker.adjust_jitter_up_to(2 SECONDS, 15) attacker.Stun(3 SECONDS) @@ -454,15 +454,14 @@ owner.Beam(target, icon_state="lightning[rand(1,12)]", time = 10) - target.apply_damage(20, BURN) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. target.adjust_jitter_up_to(3 SECONDS, 15) if(ishuman(target)) var/mob/living/carbon/human/H = target H.electrocution_animation(50) - H.apply_damage(20, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8, but there's no easy way to adjust that currently. + H.apply_damage(20, BURN, soak_difficulty = 8) else - target.apply_damage(30, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. + target.apply_damage(20, BURN) if(prob(60)) target.Stun(1 SECONDS) From e20926470615056e468b39a33bd94db0920251d4 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 20:56:20 +0100 Subject: [PATCH 085/130] Update lure_of_flames.dm --- .../code/discipline/thaumaturgy/paths/lure_of_flames.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm index ea9636e10e13..03b87fcbca62 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm @@ -182,9 +182,9 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target - H.apply_damage(damage_amount, BURN, soak_difficulty = 7) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 7. + H.apply_damage(damage_amount, BURN, soak_difficulty = 7) else - target.apply_damage(damage_amount, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. + target.apply_damage(damage_amount, BURN) target.adjust_fire_stacks(4 + success_count) target.ignite_mob() @@ -256,9 +256,9 @@ if(ishuman(L)) var/mob/living/carbon/human/H = L - H.apply_damage(base_damage, BURN, soak_difficulty = 8) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable at Diff 8. + H.apply_damage(base_damage, BURN, soak_difficulty = 8) else - L.apply_damage(base_damage, BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Makes the damage forced for non-human entities. + L.apply_damage(base_damage, BURN) // Chance to ignite based on successes if(prob(ignite_chance)) From 988b17fe56665e7810061420895da70c1cb3029b Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 20:57:39 +0100 Subject: [PATCH 086/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 7cc604df2645..1a3cb5e17887 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -11,8 +11,8 @@ attack_direction = null, attacking_item, wound_clothing = TRUE, - soak_difficulty = 6, //soak_difficulty - The difficulty of soaking an attack. Base is 6, adjusted by some unique effects, rare disciplines, and more. Only reference this if you've used the proper path and checked iscarbon() for apply_damage() or it'll throw up errors. - unsoakable = FALSE, //unsoakable - Whether an attack is soakable or not. By default off, some damage types and specific effects are unsoakable. + soak_difficulty = 6, + unsoakable = FALSE, ) if(!forced && unsoakable = FALSE) From 7f79e283e5a5e64d6530c2741200b13734ce594b Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:26:47 +0100 Subject: [PATCH 087/130] Update damage_procs.dm --- code/modules/mob/living/damage_procs.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 61850f26f10a..83baa7b404ed 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -17,6 +17,8 @@ * * attack_direction - Direction of the attack from the attacker to [src]. * * attacking_item - Item that is attacking [src]. * * wound_clothing - If this should cause damage to clothing. + * * soak_difficulty - The difficulty of soaking an attack. Base is 6, adjusted by some unique effects, rare disciplines, and more. Only reference this if you've used the proper path and checked iscarbon() for apply_damage() or it'll throw up errors. + * * unsoakable - Whether an attack is soakable or not. By default off, some damage types and specific effects are unsoakable. * * Returns the amount of damage dealt. */ @@ -33,6 +35,8 @@ attack_direction = null, attacking_item, wound_clothing = TRUE, + soak_difficulty = 6, + unsoakable = FALSE, ) SHOULD_CALL_PARENT(TRUE) var/damage_amount = damage From 9109fd860415221e1fdd8ae4314f4fdea0d449cf Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:28:20 +0100 Subject: [PATCH 088/130] Update levinbolt.dm --- .../code/discipline/thaumaturgy/paths/levinbolt.dm | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm index 9b7120b9e502..b44ec5ad3f8a 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/levinbolt.dm @@ -263,9 +263,7 @@ if(ishuman(attacker)) var/mob/living/carbon/human/H = attacker H.electrocution_animation(40) - H.apply_damage(30, BURN, soak_difficulty = 8) - else - attacker.apply_damage(30, BURN) + attacker.apply_damage(30, BURN, soak_difficulty = 8) attacker.adjust_jitter_up_to(2 SECONDS, 15) attacker.Stun(3 SECONDS) @@ -458,10 +456,8 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target H.electrocution_animation(50) - H.apply_damage(20, BURN, soak_difficulty = 8) - - else - target.apply_damage(20, BURN) + + target.apply_damage(20, BURN, soak_difficulty = 8) if(prob(60)) target.Stun(1 SECONDS) From 6a8e249a964a917082b5b4cdc46970f32827840e Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:29:24 +0100 Subject: [PATCH 089/130] Update lure_of_flames.dm --- .../discipline/thaumaturgy/paths/lure_of_flames.dm | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm index 03b87fcbca62..899d2fcbc61f 100644 --- a/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm +++ b/modular_darkpack/modules/powers/code/discipline/thaumaturgy/paths/lure_of_flames.dm @@ -180,12 +180,7 @@ var/damage_amount = 25 + owner.thaum_damage_plus + success_count - if(ishuman(target)) - var/mob/living/carbon/human/H = target - H.apply_damage(damage_amount, BURN, soak_difficulty = 7) - else - target.apply_damage(damage_amount, BURN) - + target.apply_damage(damage_amount, BURN, soak_difficulty = 7) target.adjust_fire_stacks(4 + success_count) target.ignite_mob() @@ -254,11 +249,7 @@ if(L == owner) // Don't damage self - but caster still gets set on fire continue - if(ishuman(L)) - var/mob/living/carbon/human/H = L - H.apply_damage(base_damage, BURN, soak_difficulty = 8) - else - L.apply_damage(base_damage, BURN) + L.apply_damage(base_damage, BURN, soak_difficulty = 8) // Chance to ignite based on successes if(prob(ignite_chance)) From b7592b3d964f4a22907fee662b4c124d99d98de1 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:35:17 +0100 Subject: [PATCH 090/130] Update liver.dm --- code/modules/unit_tests/liver.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/unit_tests/liver.dm b/code/modules/unit_tests/liver.dm index 2b24997c28ac..fc5b851fdd51 100644 --- a/code/modules/unit_tests/liver.dm +++ b/code/modules/unit_tests/liver.dm @@ -16,6 +16,8 @@ TEST_ASSERT_EQUAL(mrbones.has_reagent(/datum/reagent/toxin/bonehurtingjuice), FALSE, "Skeleton somehow has bone hurting juice before drinking") TEST_ASSERT_EQUAL(mrbones.has_reagent(/datum/reagent/consumable/milk), FALSE, "Skeleton somehow has milk before drinking") + mrbones.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. + // Test bone hurting juice reactions mrbones.reagents.add_reagent(bonehurting, 40) From 523c2609257cf7985f4662e7ca3b977a48a6c602 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:39:14 +0100 Subject: [PATCH 091/130] Update mob_damage.dm --- code/modules/unit_tests/mob_damage.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/unit_tests/mob_damage.dm b/code/modules/unit_tests/mob_damage.dm index 21e723282129..499f83faea61 100644 --- a/code/modules/unit_tests/mob_damage.dm +++ b/code/modules/unit_tests/mob_damage.dm @@ -10,6 +10,7 @@ SSmobs.pause() var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent) dummy.maxHealth = 200 // tank mode + dummy.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. /* The sanity tests: here we make sure that: 1) That damage procs are returning the expected values. They should be returning the actual amount of damage taken/healed. From 0e832b266c1961d2be307dc446484a1cfd9d4675 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:46:19 +0100 Subject: [PATCH 092/130] Update combat_blocking.dm --- code/modules/unit_tests/combat_blocking.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/unit_tests/combat_blocking.dm b/code/modules/unit_tests/combat_blocking.dm index 17e2da816db4..457fe65be1b5 100644 --- a/code/modules/unit_tests/combat_blocking.dm +++ b/code/modules/unit_tests/combat_blocking.dm @@ -9,6 +9,7 @@ victim.put_in_active_hand(chair, forced = TRUE) attacker.set_combat_mode(TRUE) ADD_TRAIT(attacker, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS) + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Prevents potential issue with soak absorbing hit and causing this to fail to runtime properly. click_wrapper(attacker, victim) TEST_ASSERT_EQUAL(victim.get_brute_loss(), 0, "Victim took damage from being punched despite having a 100% block chance chair in their hands.") @@ -24,6 +25,7 @@ victim.put_in_active_hand(shield, forced = TRUE) attacker.set_combat_mode(TRUE) ADD_TRAIT(attacker, TRAIT_PERFECT_ATTACKER, TRAIT_SOURCE_UNIT_TESTS) + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Prevents potential issue with soak absorbing hit and causing this to fail to runtime properly. click_wrapper(attacker, victim) TEST_ASSERT_EQUAL(victim.get_brute_loss(), 0, "Victim took damage from being punched despite having a 100% block chance shield in their hands.") From a4ef254ed488a99099cec9628d446421de8685fb Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:47:28 +0100 Subject: [PATCH 093/130] Update tail_wag.dm --- code/modules/unit_tests/tail_wag.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/unit_tests/tail_wag.dm b/code/modules/unit_tests/tail_wag.dm index 03b921ac01bc..de7d01101232 100644 --- a/code/modules/unit_tests/tail_wag.dm +++ b/code/modules/unit_tests/tail_wag.dm @@ -7,6 +7,7 @@ var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent) var/obj/item/organ/tail/cat/dummy_tail = allocate(/obj/item/organ/tail/cat) dummy_tail.Insert(dummy, special = TRUE, movement_flags = DELETE_IF_REPLACED) + dummy.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. // SANITY TEST From e2c3354a05f31a68b364d61a869a7525dda931f2 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:53:25 +0100 Subject: [PATCH 094/130] Update explosion_action.dm --- code/modules/unit_tests/explosion_action.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/unit_tests/explosion_action.dm b/code/modules/unit_tests/explosion_action.dm index 6e9abb3c2dc9..e495bf69359a 100644 --- a/code/modules/unit_tests/explosion_action.dm +++ b/code/modules/unit_tests/explosion_action.dm @@ -23,6 +23,7 @@ var/mob/living/simple_animal/test_simple_animal = allocate(/mob/living/simple_animal) test_simple_animal.maxHealth = MAX_LIVING_HEALTH test_simple_animal.health = MAX_LIVING_HEALTH + test_simple_animal.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. EX_ACT(test_simple_animal, EXPLODE_NONE) // should do nothing. TEST_ASSERT_EQUAL(test_simple_animal.health, MAX_LIVING_HEALTH, "EX_ACT() with EXPLODE_NONE severity should not affect the health of a simple animal! Something has gone terribly wrong!") @@ -62,6 +63,8 @@ var/mob/living/carbon/alien/test_alien = allocate(/mob/living/carbon/alien) test_alien.maxHealth = MAX_LIVING_HEALTH test_alien.health = MAX_LIVING_HEALTH + test_alien.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. + EX_ACT(test_alien, EXPLODE_NONE) // should do nothing. read_alien_damages(test_alien) @@ -84,6 +87,7 @@ // Let's check to make sure the armor system works as expected. Corgi dogs are the only one that have this implemented on the basic level, so let's use that. var/mob/living/basic/pet/dog/corgi/test_dog = set_up_test_dog() + test_dog.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. // those two items should give us a 100% armor rating, so let's test that to make sure it works (all ex_act checks should now be prob(100)), no room for error. EX_ACT(test_dog, EXPLODE_LIGHT) // should do 20 damage (basic animals do a prob() check based on the armor rating, and divide the expected brute loss by 1.5). From 33cb96fa9f4b92403388aaa89021de086726d889 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:54:23 +0100 Subject: [PATCH 095/130] Update hulk.dm --- code/modules/unit_tests/hulk.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/unit_tests/hulk.dm b/code/modules/unit_tests/hulk.dm index aed8c1459062..6467d5a3f5f9 100644 --- a/code/modules/unit_tests/hulk.dm +++ b/code/modules/unit_tests/hulk.dm @@ -7,6 +7,7 @@ var/mob/living/carbon/human/hulk = allocate(/mob/living/carbon/human/consistent) var/mob/living/carbon/human/dummy = allocate(/mob/living/carbon/human/consistent) + dummy.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. RegisterSignal(dummy, COMSIG_ATOM_HULK_ATTACK, PROC_REF(hulk_sig_fire)) RegisterSignal(dummy, COMSIG_ATOM_ATTACK_HAND, PROC_REF(hand_sig_fire)) From 480f9c4f8b87bbc1c307ce156fb777b34fcaf67d Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 22:55:12 +0100 Subject: [PATCH 096/130] Update human_through_recycler.dm --- code/modules/unit_tests/human_through_recycler.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/unit_tests/human_through_recycler.dm b/code/modules/unit_tests/human_through_recycler.dm index 1f62a022c05c..19240d25abde 100644 --- a/code/modules/unit_tests/human_through_recycler.dm +++ b/code/modules/unit_tests/human_through_recycler.dm @@ -8,6 +8,8 @@ var/turf/open/stage = get_turf(chewer) assistant.forceMove(stage) // put the assistant in the recycler, to ensure that the recycler still registers incoming input. + assistant.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. + // okay, let's first test the basics of how an emagged recycler should operate TEST_ASSERT_NULL(QDELETED(assistant), "Assistant was deleted by the emagged recycler!") // The assistant should not be deleted by the recycler. if(assistant.stat < UNCONSCIOUS) From 6512c1c845ab306234c8a752a96002465ea4db84 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 23:00:23 +0100 Subject: [PATCH 097/130] Update medical_wounds.dm --- code/modules/unit_tests/medical_wounds.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/unit_tests/medical_wounds.dm b/code/modules/unit_tests/medical_wounds.dm index 161492a726a9..0e588637b166 100644 --- a/code/modules/unit_tests/medical_wounds.dm +++ b/code/modules/unit_tests/medical_wounds.dm @@ -1,6 +1,7 @@ /// This test is used to make sure a flesh-and-bone base human can suffer all the types of wounds, and that suffering more severe wounds removes and replaces the lesser wound. Also tests that [/mob/living/carbon/proc/fully_heal] removes all wounds /datum/unit_test/test_human_base/Run() var/mob/living/carbon/human/victim = allocate(/mob/living/carbon/human/consistent) + victim.st_set_stat(STAT_STAMINA, 0) // DARKPACK EDIT ADD //Avoids reading as broken because damage was soaked. /// the limbs have no wound resistance like the chest and head do, so let's go with the r_arm var/obj/item/bodypart/tested_part = victim.get_bodypart(BODY_ZONE_R_ARM) From b7f0f3ca7574ec2c488ed61eb5ed5fda353eab2f Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 23:01:38 +0100 Subject: [PATCH 098/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 1a3cb5e17887..0561afa7673a 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -15,7 +15,7 @@ unsoakable = FALSE, ) - if(!forced && unsoakable = FALSE) + if(!forced && unsoakable == FALSE) damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item, soak_difficulty) // Spread damage should always have def zone be null @@ -59,8 +59,6 @@ unsoakable = FALSE, ) - if(!forced && unsoakable = FALSE) - damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item, soak_difficulty) // Add relevant DR modifiers into blocked value to pass to parent blocked += physiology?.damage_resistance blocked += dna?.species?.damage_modifier From e95eb97b01c8fb896bf6f0ff61ba7b403c3cb538 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 5 May 2026 23:02:22 +0100 Subject: [PATCH 099/130] Update roll_subtypes.dm --- .../modules/storyteller_dice/code/roll_subtypes.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm b/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm index a7d7aaa4f84d..c19aeeaec825 100644 --- a/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm +++ b/modular_darkpack/modules/storyteller_dice/code/roll_subtypes.dm @@ -117,7 +117,7 @@ bumper_text = "identify" applicable_stats = list(STAT_INTELLIGENCE, STAT_OCCULT) reroll_cooldown = 1 SCENES - difficulty = 8 + difficulty = 8 // Soak /datum/storyteller_roll/soak @@ -125,4 +125,4 @@ roll_output_type = ROLL_PUBLIC numerical = TRUE spammy_roll = TRUE - difficulty = 6 \ No newline at end of file + difficulty = 6 From e51b6e4c9b381498d5ac2a34b434d47a62b7836b Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 00:23:06 +0100 Subject: [PATCH 100/130] Update robot_defense.dm --- code/modules/mob/living/silicon/robot/robot_defense.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index b3c899b25421..145a70767b3e 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -537,7 +537,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real . = TRUE return ..() || . -/mob/living/silicon/robot/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing) +/mob/living/silicon/robot/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) var/mob/living/silicon/robot/borg = src var/obj/item/shield_module/shield = locate() in borg if(!shield) From 446050ea8290182760f1e4b32a939de505a1452a Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 00:24:43 +0100 Subject: [PATCH 101/130] Update goliath.dm --- code/modules/mob/living/basic/lavaland/goliath/goliath.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm index 6aef2570060d..ce56094d8000 100644 --- a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm +++ b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm @@ -94,7 +94,7 @@ . += span_info("Someone appears to have attached a saddle to this one.") // Goliaths can summon tentacles more frequently as they take damage, scary. -/mob/living/basic/mining/goliath/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing) +/mob/living/basic/mining/goliath/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) . = ..() if (. <= 0) return From dca5f2d3759cc4f2bce49cb738dfb8d36de3df32 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 02:00:41 +0100 Subject: [PATCH 102/130] Update human.dm --- .../code/modules/mob/living/carbon/human/human.dm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index b4cbf16c486f..81ccf0071f84 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -39,10 +39,14 @@ if(get_kindred_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) //Stamina already has the Fortitude bonus added for Bashing and Lethal. soak_dice_lethal = st_get_stat(STAT_STAMINA) + var/datum/discipline/soak_visceratika = get_discipline(/datum/discipline/visceratika) var/datum/discipline/soak_fortitude = get_discipline(/datum/discipline/fortitude) - if(!soak_fortitude) - return - soak_dice_aggravated = soak_fortitude.level + if(soak_visceratika.level >= 4) + soak_dice_aggravated += 1 //1 Agg and Lethal soak, 2 Bashing from Armour of Terra. + soak_dice_lethal += 1 + soak_dice_bashing += 2 + if(soak_fortitude) + soak_dice_aggravated += soak_fortitude.level if(get_garou_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) From d69b3a418141f0cefe3a9250d9b278f6ac72d182 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 02:02:11 +0100 Subject: [PATCH 103/130] Update visceratika.dm --- .../modules/powers/code/discipline/visceratika.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/modular_darkpack/modules/powers/code/discipline/visceratika.dm b/modular_darkpack/modules/powers/code/discipline/visceratika.dm index 9d17cad7b8b7..4404bb25895b 100644 --- a/modular_darkpack/modules/powers/code/discipline/visceratika.dm +++ b/modular_darkpack/modules/powers/code/discipline/visceratika.dm @@ -20,10 +20,8 @@ owner.update_body() // since dot 4 is always active and requires no roll if(level >= 4) - owner.physiology.brute_mod *= 0.8 + owner.physiology.burn_mod *= 0.5 //Halves burn damage dice pools, V20 Core Page 476 owner.physiology.heat_mod *= 0.5 - //owner.physiology.clone_mod *= 0.9 - //ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_GENERIC) ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, DISCIPLINE_TRAIT(type)) if(!(owner.is_clan(/datum/subsplat/vampire_clan/gargoyle))) ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT(type)) From 9dd6a23b0a9a3620d5155977c2b86d0a7452a17e Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 02:32:36 +0100 Subject: [PATCH 104/130] Update human.dm --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index 81ccf0071f84..e5c1d95f1b86 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -39,6 +39,7 @@ if(get_kindred_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) //Stamina already has the Fortitude bonus added for Bashing and Lethal. soak_dice_lethal = st_get_stat(STAT_STAMINA) + soak_dice_aggravated = 0 //Reset it beforehand in case you had leftover agg dice. var/datum/discipline/soak_visceratika = get_discipline(/datum/discipline/visceratika) var/datum/discipline/soak_fortitude = get_discipline(/datum/discipline/fortitude) if(soak_visceratika.level >= 4) From 61b033e4c8973ec10c1a119fca377f9c718bf921 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 02:39:11 +0100 Subject: [PATCH 105/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 0561afa7673a..82850d4839ed 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -15,7 +15,7 @@ unsoakable = FALSE, ) - if(!forced && unsoakable == FALSE) + if(!forced && unsoakable == FALSE) //If the damage isn't forced and isn't unsoakable, run it through the soak proc. damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item, soak_difficulty) // Spread damage should always have def zone be null From 4714ac3627b02d0df1bdabb7ffae7b508d7d5b79 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 02:40:10 +0100 Subject: [PATCH 106/130] Update silver_damage.dm --- .../modules/werewolf_the_apocalypse/code/silver_damage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm index 7768db5f8fa5..eb736107286c 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm @@ -26,7 +26,7 @@ if(!shot_pup_splat.is_breed_form()) // IDK. This is might TTRPG inaccurate RN because i think it should acctaully convert ALL the damage to agg not just add some agg to it. - shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, forced = TRUE) //Skip Soak rolls for Agg + shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, unsoakable == TRUE) //Agg from silver is unsoakable. /obj/item/proc/fera_silver_damage(mob/living/carbon/human/target, dice = 0, gnosis_damage = 0) if(!istype(target)) @@ -38,4 +38,4 @@ // W20 p. 290 - Werewolves dont take silver damage in breed form because they arent spirits if(!shot_pup_splat.is_breed_form()) - shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, forced = TRUE) //Skip Soak rolls for Agg + shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, unsoakable == TRUE) //Agg from silver is unsoakable. From c21f7c5fffd282e57350ade20363f02b7ff56340 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 03:03:27 +0100 Subject: [PATCH 107/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 82850d4839ed..e725da7e10e9 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -416,7 +416,7 @@ roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. else roll_used = soak_dice_lethal //Otherwise it's lethal damage. - if(!sharpness == NONE) + else if(!sharpness == NONE) roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. else roll_used = soak_dice_bashing //Everything else should take Bashing. From 44f6ef57650e9e204ca26ff2bd405fe6f4c2d4c6 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Wed, 6 May 2026 05:08:40 +0100 Subject: [PATCH 108/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index e725da7e10e9..711d31920a68 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -16,7 +16,7 @@ ) if(!forced && unsoakable == FALSE) //If the damage isn't forced and isn't unsoakable, run it through the soak proc. - damage = soak_roll(damage, damagetype, def_zone, sharpness, attack_direction, attacking_item, soak_difficulty) + damage = soak_roll(damage, damagetype, def_zone, sharpness, attacking_item, soak_difficulty) // Spread damage should always have def zone be null if(spread_damage) From a6f93f33ec4b03780a0247a5848d8c506f5d71b6 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Thu, 7 May 2026 14:35:41 +0100 Subject: [PATCH 109/130] Update silver_damage.dm --- .../modules/werewolf_the_apocalypse/code/silver_damage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm index eb736107286c..2b0d47acd407 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm @@ -26,7 +26,7 @@ if(!shot_pup_splat.is_breed_form()) // IDK. This is might TTRPG inaccurate RN because i think it should acctaully convert ALL the damage to agg not just add some agg to it. - shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, unsoakable == TRUE) //Agg from silver is unsoakable. + shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, unsoakable = TRUE) //Agg from silver is unsoakable. /obj/item/proc/fera_silver_damage(mob/living/carbon/human/target, dice = 0, gnosis_damage = 0) if(!istype(target)) @@ -38,4 +38,4 @@ // W20 p. 290 - Werewolves dont take silver damage in breed form because they arent spirits if(!shot_pup_splat.is_breed_form()) - shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, unsoakable == TRUE) //Agg from silver is unsoakable. + shot_pup.apply_damage(dice TTRPG_DAMAGE, AGGRAVATED, unsoakable = TRUE) //Agg from silver is unsoakable. From 49e9b35f03fc4af1a7505bf973c7d7f347cd0813 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 02:23:18 +0100 Subject: [PATCH 110/130] Update human.dm --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index e5c1d95f1b86..d98cb89b20e8 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -42,7 +42,7 @@ soak_dice_aggravated = 0 //Reset it beforehand in case you had leftover agg dice. var/datum/discipline/soak_visceratika = get_discipline(/datum/discipline/visceratika) var/datum/discipline/soak_fortitude = get_discipline(/datum/discipline/fortitude) - if(soak_visceratika.level >= 4) + if(soak_visceratika && soak_visceratika.level >= 4) soak_dice_aggravated += 1 //1 Agg and Lethal soak, 2 Bashing from Armour of Terra. soak_dice_lethal += 1 soak_dice_bashing += 2 From 28f3b76e83e3b7fb8a4fcea4967842b44e9a96b5 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 02:55:49 +0100 Subject: [PATCH 111/130] Update possession_datums.dm --- .../code/discipline/dominate/possession/possession_datums.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/dominate/possession/possession_datums.dm b/modular_darkpack/modules/powers/code/discipline/dominate/possession/possession_datums.dm index 5411a64dc493..57d888465a03 100644 --- a/modular_darkpack/modules/powers/code/discipline/dominate/possession/possession_datums.dm +++ b/modular_darkpack/modules/powers/code/discipline/dominate/possession/possession_datums.dm @@ -68,7 +68,7 @@ if(mortal.mind) vamp.mind = mortal.mind - vamp.apply_damage(50) //Adjustment to use proper damage application system for soak and damage modifiers. Soakable as normal. + vamp.apply_damage(50) vamp.visible_message(span_danger("[vamp] suddenly convulses violently and falls into what appears to be a coma!")) to_chat(vamp, span_boldwarning("The psychic shock of your host's death sends you into torpor!")) vamp.torpor(DAMAGE_TRAIT) From cc2adbec49664e37876963ee2632ae7a04ef7d32 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 02:57:16 +0100 Subject: [PATCH 112/130] Update scorptions_touch.dm --- .../code/discipline/quietus/components/scorptions_touch.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/quietus/components/scorptions_touch.dm b/modular_darkpack/modules/powers/code/discipline/quietus/components/scorptions_touch.dm index c251c5d30a72..5a0f30b782f4 100644 --- a/modular_darkpack/modules/powers/code/discipline/quietus/components/scorptions_touch.dm +++ b/modular_darkpack/modules/powers/code/discipline/quietus/components/scorptions_touch.dm @@ -67,7 +67,7 @@ // apply non transmittable disease to the mortal victim if they reach zero stamina to_chat(victim, span_userdanger("You feel deathly ill as the poison ravages your body!")) - victim.apply_damage((2 * poison_potency), BURN, forced = TRUE) //Adjustment to use proper damage application system for soak and damage modifiers. Unsoakable. + victim.apply_damage((2 * poison_potency), BURN, unsoakable = TRUE) //victim.AdjustKnockdown(3 SECONDS) this is from the old code? to_chat(user, span_warning("Your venomous touch burns [victim]!")) From 981a27ac51a62b763c9f095601c8ae6b19e5d9ab Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 7 May 2026 22:38:02 -0500 Subject: [PATCH 113/130] FIXES --- code/__DEFINES/~darkpack/storyteller_stats.dm | 4 +--- code/controllers/subsystem/ticker.dm | 2 -- code/modules/mob/dead/new_player/new_player.dm | 1 - .../mob/living/basic/lavaland/goliath/goliath.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 6 ------ code/modules/mob/living/carbon/damage_procs.dm | 15 +++++++++------ code/modules/mob/living/carbon/human/_species.dm | 6 +----- code/modules/mob/living/damage_procs.dm | 2 +- .../mob/living/silicon/robot/robot_defense.dm | 2 +- .../modules/mob/living/carbon/carbon_defines.dm | 3 +-- .../modules/storyteller_stats/code/_st_stats.dm | 4 ++++ .../code/mob_affecting_adjustments/mob_procs.dm | 7 +------ .../code/st_stats/default_attributes.dm | 9 +++++++-- 13 files changed, 27 insertions(+), 36 deletions(-) diff --git a/code/__DEFINES/~darkpack/storyteller_stats.dm b/code/__DEFINES/~darkpack/storyteller_stats.dm index 7e384fd4aaf8..9b066f82cc47 100644 --- a/code/__DEFINES/~darkpack/storyteller_stats.dm +++ b/code/__DEFINES/~darkpack/storyteller_stats.dm @@ -1,7 +1,5 @@ // Stat Flags -#define AFFECTS_HEALTH (1<<0) -#define AFFECTS_SPEED (1<<1) -#define AFFECTS_STATS (1<<2) // If the stat affects other stats, like courage or permanent willpower. +#define AFFECTS_STATS (1<<0) // If the stat affects other stats, like courage or permanent willpower. #define STAT_FREEBIE_POINTS /datum/st_stat/freebie diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 46a10c537621..d0d7ccc37a81 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -377,9 +377,7 @@ SUBSYSTEM_DEF(ticker) iter_human.increment_scar_slot() iter_human.load_persistent_scars() - iter_human.load_guestbook() // DARKPACK EDIT ADD - iter_human.update_soak() // DARKPACK EDIT ADDITION if(!iter_human.hardcore_survival_score) continue diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 991cd0075557..7a9f24a6125e 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -258,7 +258,6 @@ humanc.load_persistent_scars() humanc.load_guestbook() // DARKPACK EDIT ADD - humanc.update_soak() // DARKPACK EDIT ADD if(GLOB.curse_of_madness_triggered) give_madness(humanc, GLOB.curse_of_madness_triggered) diff --git a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm index ce56094d8000..c0630f6dbe61 100644 --- a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm +++ b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm @@ -94,7 +94,7 @@ . += span_info("Someone appears to have attached a saddle to this one.") // Goliaths can summon tentacles more frequently as they take damage, scary. -/mob/living/basic/mining/goliath/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) +/mob/living/basic/mining/goliath/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) // DARKPACK EDIT CHAGE - (soak) . = ..() if (. <= 0) return diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 6f05ad89524a..068db7caf721 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -5,7 +5,6 @@ living_flags &= ~STOP_OVERLAY_UPDATE_BODY_PARTS register_context() - update_soak() // DARKPACK EDIT ADDITION GLOB.carbon_list += src ADD_TRAIT(src, TRAIT_CAN_HOLD_ITEMS, INNATE_TRAIT) // Carbons are assumed to be innately capable of having arms, we check their arms count instead @@ -1414,8 +1413,3 @@ if (overeatduration >= 200 SECONDS) to_chat(src, span_danger("You suddenly feel blubbery!")) add_traits(list(TRAIT_FAT, TRAIT_OFF_BALANCE_TACKLER), OBESITY) - -// DARKPACK EDIT START -/mob/living/carbon/proc/update_soak() //Pretty basic calculation for the average person/being, soak is Bashing only using Stamina. - soak_dice_bashing = st_get_stat(STAT_STAMINA) -// DARKPACK EDIT END diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 711d31920a68..9510ae325bb3 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -13,7 +13,7 @@ wound_clothing = TRUE, soak_difficulty = 6, unsoakable = FALSE, -) +) // DARKPACK EDIT CHANGE - (soak) if(!forced && unsoakable == FALSE) //If the damage isn't forced and isn't unsoakable, run it through the soak proc. damage = soak_roll(damage, damagetype, def_zone, sharpness, attacking_item, soak_difficulty) @@ -57,7 +57,7 @@ wound_clothing = TRUE, soak_difficulty = 6, unsoakable = FALSE, -) +) // DARKPACK EDIT CHANGE - (soak) // Add relevant DR modifiers into blocked value to pass to parent blocked += physiology?.damage_resistance @@ -411,12 +411,12 @@ var/roll_used = soak_dice_bashing switch(damagetype) if(BRUTE) - if(isprojectile(attacking_item)) + if(isprojectile(attacking_item)) if(get_kindred_splat(src) && !def_zone == HEAD) roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. - else + else roll_used = soak_dice_lethal //Otherwise it's lethal damage. - else if(!sharpness == NONE) + else if(!sharpness == NONE) roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. else roll_used = soak_dice_bashing //Everything else should take Bashing. @@ -445,5 +445,8 @@ damage = (max(0, damage - (successes * 10))) to_chat(src, span_warning("You stand firm and are able to absorb some of the damage!")) - return damage + return damage + +/mob/living/carbon/proc/update_soak() //Pretty basic calculation for the average person/being, soak is Bashing only using Stamina. + soak_dice_bashing = st_get_stat(STAT_STAMINA) // DARKPACK EDIT ADD END diff --git a/code/modules/mob/living/carbon/human/_species.dm b/code/modules/mob/living/carbon/human/_species.dm index 0bb49d1592f5..d56e98ba1aeb 100644 --- a/code/modules/mob/living/carbon/human/_species.dm +++ b/code/modules/mob/living/carbon/human/_species.dm @@ -444,11 +444,7 @@ GLOBAL_LIST_EMPTY(features_by_species) human_who_gained_species.living_flags &= ~STOP_OVERLAY_UPDATE_BODY_PARTS -//we don't allow it to update during species transition, so update it now -// DARKPACK EDIT ADD START - (soak) - human_who_gained_species.update_soak() //Updates Soak values. -// DARKPACK EDIT ADD END - + //we don't allow it to update during species transition, so update it now human_who_gained_species.hud_used?.screen_objects[HUD_MOB_HEALTHDOLL]?.update_appearance() /** diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 83baa7b404ed..d7480b285d49 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -37,7 +37,7 @@ wound_clothing = TRUE, soak_difficulty = 6, unsoakable = FALSE, -) +) // DARKPACK EDIT CHANGE - (soak) SHOULD_CALL_PARENT(TRUE) var/damage_amount = damage if(!forced) diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 145a70767b3e..26a8925f2cc9 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -537,7 +537,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real . = TRUE return ..() || . -/mob/living/silicon/robot/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) +/mob/living/silicon/robot/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) // DARKPACK EDIT CHAGE - (soak) var/mob/living/silicon/robot/borg = src var/obj/item/shield_module/shield = locate() in borg if(!shield) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm index 58446c8f6497..8c01696257cd 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm @@ -9,8 +9,7 @@ var/fakediablerist = FALSE var/can_be_embraced = TRUE - ///The number of dice available to soak bashing, lethal, and aggravated damage + // The number of dice available to soak bashing, lethal, and aggravated damage var/soak_dice_bashing = 0 var/soak_dice_lethal = 0 var/soak_dice_aggravated = 0 - diff --git a/modular_darkpack/modules/storyteller_stats/code/_st_stats.dm b/modular_darkpack/modules/storyteller_stats/code/_st_stats.dm index b7cd90e076fa..67865eea5a12 100644 --- a/modular_darkpack/modules/storyteller_stats/code/_st_stats.dm +++ b/modular_darkpack/modules/storyteller_stats/code/_st_stats.dm @@ -195,3 +195,7 @@ points -= amount freebie_cost_spent += amount return TRUE + + +/datum/st_stat/proc/update_mob(mob/living/our_mob) + return diff --git a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm index 50fb4e5b3dd9..c97ac312f1b4 100644 --- a/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm +++ b/modular_darkpack/modules/storyteller_stats/code/mob_affecting_adjustments/mob_procs.dm @@ -58,12 +58,7 @@ /mob/living/proc/update_modifiers_from_stats(initial = FALSE) for(var/stat_typepath in storyteller_stats) var/datum/st_stat/stat_datum = storyteller_stats[stat_typepath] - if(stat_datum.stat_flags & AFFECTS_HEALTH) - if(iscarbon(src)) - var/mob/living/carbon/C = src - C.update_soak() - if(stat_datum.stat_flags & AFFECTS_SPEED) - add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/dexterity, multiplicative_slowdown = -(st_get_stat(STAT_DEXTERITY) / 20)) + stat_datum.update_mob(src) /datum/preferences/proc/apply_stats_from_prefs(mob/living/carbon/human/character) diff --git a/modular_darkpack/modules/storyteller_stats/code/st_stats/default_attributes.dm b/modular_darkpack/modules/storyteller_stats/code/st_stats/default_attributes.dm index 194cb87643c3..23ddfe88d5ae 100644 --- a/modular_darkpack/modules/storyteller_stats/code/st_stats/default_attributes.dm +++ b/modular_darkpack/modules/storyteller_stats/code/st_stats/default_attributes.dm @@ -7,13 +7,18 @@ name = "Dexterity" description = "Affects your speed and melee weapon accuracy. Increases your defense against being knocked down in unarmed combat. Increases the speed of certain actions." subcategory = "Physical" - stat_flags = AFFECTS_SPEED + +/datum/st_stat/attribute/dexterity/update_mob(mob/living/our_mob) + our_mob.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/dexterity, multiplicative_slowdown = -(get_score() / 20)) /datum/st_stat/attribute/stamina name = "Stamina" description = "Affects your maximum health. Used in Quietus." subcategory = "Physical" - stat_flags = AFFECTS_HEALTH + +/datum/st_stat/attribute/stamina/update_mob(mob/living/our_mob) + var/mob/living/carbon/carbon_mob = astype(our_mob) + carbon_mob?.update_soak() /datum/st_stat/attribute/charisma name = "Charisma" From b45ca548714dbace1edd906befbafb9a09fe1712 Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 7 May 2026 22:49:47 -0500 Subject: [PATCH 114/130] yea --- code/modules/mob/living/carbon/damage_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 9510ae325bb3..21d6c3d6083b 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -442,7 +442,7 @@ var/successes = soak_roll.st_roll(src, src, roll_used) if(successes > 0) - damage = (max(0, damage - (successes * 10))) + damage = (max(0, damage - (successes * (1 TTRPG_DAMAGE)))) to_chat(src, span_warning("You stand firm and are able to absorb some of the damage!")) return damage From 5d9a48ce10e1f3825ec55039a2af636d3778c00f Mon Sep 17 00:00:00 2001 From: FalloutFalcon Date: Thu, 7 May 2026 22:56:58 -0500 Subject: [PATCH 115/130] yea --- code/modules/mob/living/basic/lavaland/goliath/goliath.dm | 2 +- code/modules/mob/living/silicon/robot/robot_defense.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm index c0630f6dbe61..a4aee0cf99c8 100644 --- a/code/modules/mob/living/basic/lavaland/goliath/goliath.dm +++ b/code/modules/mob/living/basic/lavaland/goliath/goliath.dm @@ -94,7 +94,7 @@ . += span_info("Someone appears to have attached a saddle to this one.") // Goliaths can summon tentacles more frequently as they take damage, scary. -/mob/living/basic/mining/goliath/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) // DARKPACK EDIT CHAGE - (soak) +/mob/living/basic/mining/goliath/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) // DARKPACK EDIT CHANGE - (soak) . = ..() if (. <= 0) return diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 26a8925f2cc9..a029e80a3c13 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -537,7 +537,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real . = TRUE return ..() || . -/mob/living/silicon/robot/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) // DARKPACK EDIT CHAGE - (soak) +/mob/living/silicon/robot/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item, wound_clothing, soak_difficulty = 6, unsoakable = FALSE) // DARKPACK EDIT CHANGE - (soak) var/mob/living/silicon/robot/borg = src var/obj/item/shield_module/shield = locate() in borg if(!shield) From 463e499193201de6ef5a9c88c90505c51b3cb788 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 21:44:02 +0100 Subject: [PATCH 116/130] Update human.dm --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index d98cb89b20e8..bf0acc630493 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -49,7 +49,7 @@ if(soak_fortitude) soak_dice_aggravated += soak_fortitude.level - if(get_garou_splat(src)) + if(get_shifter_splat(src)) soak_dice_bashing = st_get_stat(STAT_STAMINA) soak_dice_lethal = st_get_stat(STAT_STAMINA) var/datum/splat/werewolf/shifter/shifter_splat = get_shifter_splat(src) From 05ea5cf7ad92fe7df3e50c53a7c224149c74f86e Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 21:44:52 +0100 Subject: [PATCH 117/130] Update silver_damage.dm --- .../modules/werewolf_the_apocalypse/code/silver_damage.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm b/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm index 2b0d47acd407..e6d19ac257e7 100644 --- a/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm +++ b/modular_darkpack/modules/werewolf_the_apocalypse/code/silver_damage.dm @@ -19,7 +19,7 @@ /obj/projectile/bullet/proc/fera_silver_damage(mob/living/carbon/human/target, dice = 0) if(!istype(target)) return - var/datum/splat/werewolf/shifter/shot_pup_splat = get_shifter_splat(target) + var/datum/splat/werewolf/shifter/shot_pup_splat = get_garou_splat(target) if(shot_pup_splat) var/mob/living/carbon/human/shot_pup = target shot_pup.apply_status_effect(STATUS_EFFECT_SILVER_BULLET_STACKS) @@ -31,7 +31,7 @@ /obj/item/proc/fera_silver_damage(mob/living/carbon/human/target, dice = 0, gnosis_damage = 0) if(!istype(target)) return - var/datum/splat/werewolf/shifter/shot_pup_splat = get_shifter_splat(target) + var/datum/splat/werewolf/shifter/shot_pup_splat = get_garou_splat(target) if(shot_pup_splat) var/mob/living/carbon/human/shot_pup = target shot_pup_splat.adjust_gnosis(-gnosis_damage, TRUE) From 9cc8bf8a1357d24cf35571a14ce38b3099c09380 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 21:45:54 +0100 Subject: [PATCH 118/130] Update damage_procs.dm --- code/modules/mob/living/carbon/damage_procs.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 21d6c3d6083b..b44bc05bc5ad 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -15,9 +15,6 @@ unsoakable = FALSE, ) // DARKPACK EDIT CHANGE - (soak) - if(!forced && unsoakable == FALSE) //If the damage isn't forced and isn't unsoakable, run it through the soak proc. - damage = soak_roll(damage, damagetype, def_zone, sharpness, attacking_item, soak_difficulty) - // Spread damage should always have def zone be null if(spread_damage) def_zone = null From 24c7e6e703ada6b9ab60f3683c6a1e1a830d436a Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 21:48:56 +0100 Subject: [PATCH 119/130] Update damage_procs.dm --- .../modules/mob/living/carbon/damage_procs.dm | 51 ------------------- 1 file changed, 51 deletions(-) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index b44bc05bc5ad..f1aca8c39e1b 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -396,54 +396,3 @@ updatehealth() if(update) update_damage_overlays() -// DARKPACK EDIT ADD START - (soak) -/mob/living/carbon/proc/soak_roll( - damage = 0, - damagetype = BRUTE, - def_zone = null, - sharpness = NONE, - attacking_item, - soak_difficulty = 6) - - var/roll_used = soak_dice_bashing - switch(damagetype) - if(BRUTE) - if(isprojectile(attacking_item)) - if(get_kindred_splat(src) && !def_zone == HEAD) - roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. - else - roll_used = soak_dice_lethal //Otherwise it's lethal damage. - else if(!sharpness == NONE) - roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. - else - roll_used = soak_dice_bashing //Everything else should take Bashing. - if(BURN) - roll_used = soak_dice_aggravated //Burning is always Agg. - if(TOX) - roll_used = soak_dice_lethal //Poisons can vary from Bashing to Lethal, but the vast majority are Lethal. - if(OXY) - roll_used = 0 //Oxygen damage is applied automatically and cannot be soaked. - if(STAMINA) - roll_used = soak_dice_bashing //Stamina damage is a little weird, but as per exhaustion rules for rituals and the like, you can soak it like Bashing. Not too sure about it though. - if(BRAIN) - roll_used = soak_dice_lethal //Not many situations where you'd take direct brain damage really, but it'd be lethal in this case. - if(AGGRAVATED) - roll_used = soak_dice_aggravated //Well, obviously. - - if(roll_used < 1) - return damage //Skip the roll if it can't be soaked. Covers negative numbers too, in case of edge cases. - - var/datum/storyteller_roll/soak/soak_roll = new() - - soak_roll.difficulty = soak_difficulty //Overrides difficulty for adjustments when soak difficulty is different. - var/successes = soak_roll.st_roll(src, src, roll_used) - - if(successes > 0) - damage = (max(0, damage - (successes * (1 TTRPG_DAMAGE)))) - to_chat(src, span_warning("You stand firm and are able to absorb some of the damage!")) - - return damage - -/mob/living/carbon/proc/update_soak() //Pretty basic calculation for the average person/being, soak is Bashing only using Stamina. - soak_dice_bashing = st_get_stat(STAT_STAMINA) -// DARKPACK EDIT ADD END From 54d288677c6650f65952e73d07f0fdeed57706ee Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 21:50:08 +0100 Subject: [PATCH 120/130] Update damage_procs.dm --- code/modules/mob/living/damage_procs.dm | 56 +++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index d7480b285d49..ef3412ccd64d 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -39,6 +39,10 @@ unsoakable = FALSE, ) // DARKPACK EDIT CHANGE - (soak) SHOULD_CALL_PARENT(TRUE) + + if(!forced && unsoakable == FALSE) //If the damage isn't forced and isn't unsoakable, run it through the soak proc. Soak runs before damage mods. + damage = soak_roll(damage, damagetype, def_zone, sharpness, attacking_item, soak_difficulty) + var/damage_amount = damage if(!forced) damage_amount *= ((100 - blocked) / 100) @@ -584,3 +588,55 @@ break if(. && update_health) updatehealth() + +// DARKPACK EDIT ADD START - (soak) +/mob/living/proc/soak_roll( + damage = 0, + damagetype = BRUTE, + def_zone = null, + sharpness = NONE, + attacking_item, + soak_difficulty = 6) + + var/roll_used = soak_dice_bashing + switch(damagetype) + if(BRUTE) + if(isprojectile(attacking_item)) + if(get_kindred_splat(src) && !def_zone == HEAD) + roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. + else + roll_used = soak_dice_lethal //Otherwise it's lethal damage. + else if(!sharpness == NONE) + roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. + else + roll_used = soak_dice_bashing //Everything else should take Bashing. + if(BURN) + roll_used = soak_dice_aggravated //Burning is always Agg. + if(TOX) + roll_used = soak_dice_lethal //Poisons can vary from Bashing to Lethal, but the vast majority are Lethal. + if(OXY) + roll_used = 0 //Oxygen damage is applied automatically and cannot be soaked. + if(STAMINA) + roll_used = soak_dice_bashing //Stamina damage is a little weird, but as per exhaustion rules for rituals and the like, you can soak it like Bashing. Not too sure about it though. + if(BRAIN) + roll_used = soak_dice_lethal //Not many situations where you'd take direct brain damage really, but it'd be lethal in this case. + if(AGGRAVATED) + roll_used = soak_dice_aggravated //Well, obviously. + + if(roll_used < 1) + return damage //Skip the roll if it can't be soaked. Covers negative numbers too, in case of edge cases. + + var/datum/storyteller_roll/soak/soak_roll = new() + + soak_roll.difficulty = soak_difficulty //Overrides difficulty for adjustments when soak difficulty is different. + var/successes = soak_roll.st_roll(src, src, roll_used) + + if(successes > 0) + damage = (max(0, damage - (successes * (1 TTRPG_DAMAGE)))) + to_chat(src, span_warning("You stand firm and are able to absorb some of the damage!")) + + return damage + +/mob/living/proc/update_soak() //Pretty basic calculation for the average entity, soak is Bashing only using Stamina. + soak_dice_bashing = st_get_stat(STAT_STAMINA) +// DARKPACK EDIT ADD END From 0ea2abc33d2fd84d76e3bccb55e07b473323f6de Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 21:52:16 +0100 Subject: [PATCH 121/130] Update human.dm --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index bf0acc630493..85e7217a38ea 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -53,7 +53,7 @@ soak_dice_bashing = st_get_stat(STAT_STAMINA) soak_dice_lethal = st_get_stat(STAT_STAMINA) var/datum/splat/werewolf/shifter/shifter_splat = get_shifter_splat(src) - if(shifter_splat.is_breed_form() && (shifter_splat.get_breed_form_species() != /datum/species/human/shifter/war)) //Garou don't soak Agg in breed form except for + if(shifter_splat.is_breed_form() && (shifter_splat.get_breed_form_species() != /datum/species/human/shifter/war)) //Garou don't soak Agg in breed form except for Crinos-born. Adjustment will need to be added once Corax are in for their +2 bashing soak diff. soak_dice_aggravated = 0 return soak_dice_aggravated = st_get_stat(STAT_STAMINA) From e7b152218b21bcc031d99ff06c12616590066b3a Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 22:40:54 +0100 Subject: [PATCH 122/130] Update carbon_defines.dm --- .../code/modules/mob/living/carbon/carbon_defines.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm index 8c01696257cd..903c68e3c056 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/carbon_defines.dm @@ -8,8 +8,3 @@ var/fakediablerist = FALSE var/can_be_embraced = TRUE - - // The number of dice available to soak bashing, lethal, and aggravated damage - var/soak_dice_bashing = 0 - var/soak_dice_lethal = 0 - var/soak_dice_aggravated = 0 From 5286a8283ecbdbd6fb9ed2a0577068a561c29860 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 8 May 2026 22:41:09 +0100 Subject: [PATCH 123/130] Update living_defines.dm --- .../master_files/code/modules/mob/living/living_defines.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modular_darkpack/master_files/code/modules/mob/living/living_defines.dm b/modular_darkpack/master_files/code/modules/mob/living/living_defines.dm index c4fa9ff11c8d..08d3151f8d1b 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/living_defines.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/living_defines.dm @@ -53,3 +53,8 @@ //thaumaturgy & necro path stuff var/research_points = 0 var/collected_souls = 0 + + // The number of dice available to soak bashing, lethal, and aggravated damage + var/soak_dice_bashing = 0 + var/soak_dice_lethal = 0 + var/soak_dice_aggravated = 0 From 0d419245174da1a3a021da45b85e663a7d1da82a Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sat, 9 May 2026 03:58:23 +0100 Subject: [PATCH 124/130] Update ticker.dm --- code/controllers/subsystem/ticker.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 82b0c4d396b4..f143d3bf327b 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -374,6 +374,7 @@ SUBSYSTEM_DEF(ticker) iter_human.increment_scar_slot() iter_human.load_persistent_scars() iter_human.load_guestbook() // DARKPACK EDIT ADD + iter_human.update_soak() // DARKPACK EDIT ADDITION if(!iter_human.hardcore_survival_score) continue From 151d110ae28da7e160349e22610e3af045945084 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sat, 9 May 2026 03:59:37 +0100 Subject: [PATCH 125/130] Update new_player.dm --- code/modules/mob/dead/new_player/new_player.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 7a9f24a6125e..92d635270e01 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -258,6 +258,7 @@ humanc.load_persistent_scars() humanc.load_guestbook() // DARKPACK EDIT ADD + humanc.update_soak() // DARKPACK EDIT ADDITION if(GLOB.curse_of_madness_triggered) give_madness(humanc, GLOB.curse_of_madness_triggered) From 295c9aa21db7e33c46bafdd45796aee2483ae33e Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Sun, 10 May 2026 22:38:55 +0100 Subject: [PATCH 126/130] Update human.dm --- .../master_files/code/modules/mob/living/carbon/human/human.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm index 85e7217a38ea..0e285070ff59 100644 --- a/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm +++ b/modular_darkpack/master_files/code/modules/mob/living/carbon/human/human.dm @@ -59,8 +59,9 @@ soak_dice_aggravated = st_get_stat(STAT_STAMINA) if(get_ghoul_splat(src)) + soak_dice_lethal = st_get_stat(STAT_STAMINA) //Ghouls and Revenants, V20, Page 42 var/datum/discipline/soak_fortitude = src.get_discipline(/datum/discipline/fortitude) if(!soak_fortitude) return - soak_dice_lethal = soak_fortitude.level //Ghouls can soak lethal and agg via fortitude. + soak_dice_lethal += soak_fortitude.level //Ghouls can soak lethal and agg via fortitude. soak_dice_aggravated = soak_fortitude.level From f5742c5ad7ad0fcc3878d7655c58a5adec1e9e52 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 15 May 2026 21:41:48 +0100 Subject: [PATCH 127/130] Update damage_procs.dm --- code/modules/mob/living/damage_procs.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index ef3412ccd64d..5686288665ba 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -606,12 +606,16 @@ roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. else roll_used = soak_dice_lethal //Otherwise it's lethal damage. + roll_used += (round(getarmor(def_zone, BULLET) / 20)) else if(!sharpness == NONE) roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. + roll_used += (max(round(getarmor(def_zone, MELEE) / 20) - 1), 0) else roll_used = soak_dice_bashing //Everything else should take Bashing. + roll_used += (round(getarmor(def_zone, MELEE) / 20)) if(BURN) roll_used = soak_dice_aggravated //Burning is always Agg. + roll_used += (round(getarmor(def_zone, FIRE) / 20)) if(TOX) roll_used = soak_dice_lethal //Poisons can vary from Bashing to Lethal, but the vast majority are Lethal. if(OXY) @@ -622,6 +626,7 @@ roll_used = soak_dice_lethal //Not many situations where you'd take direct brain damage really, but it'd be lethal in this case. if(AGGRAVATED) roll_used = soak_dice_aggravated //Well, obviously. + roll_used += (max(round(getarmor(def_zone, FIRE) / 20) - 1), 0) if(roll_used < 1) return damage //Skip the roll if it can't be soaked. Covers negative numbers too, in case of edge cases. From dc7ac3f55e14f4ff5132d430968cc20afe9154b3 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Fri, 15 May 2026 22:47:52 +0100 Subject: [PATCH 128/130] Update damage_procs.dm --- code/modules/mob/living/damage_procs.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 5686288665ba..82a225272f41 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -606,16 +606,16 @@ roll_used = soak_dice_bashing //Kindred take bullets as bashing unless they're to the head. else roll_used = soak_dice_lethal //Otherwise it's lethal damage. - roll_used += (round(getarmor(def_zone, BULLET) / 20)) + roll_used += round(getarmor(def_zone, BULLET) / 20) else if(!sharpness == NONE) roll_used = soak_dice_lethal //Sharp or piercing objects deal lethal to every splat. - roll_used += (max(round(getarmor(def_zone, MELEE) / 20) - 1), 0) + roll_used += max((round(getarmor(def_zone, MELEE) / 20) - 1), 0) else roll_used = soak_dice_bashing //Everything else should take Bashing. - roll_used += (round(getarmor(def_zone, MELEE) / 20)) + roll_used += round(getarmor(def_zone, MELEE) / 20) if(BURN) roll_used = soak_dice_aggravated //Burning is always Agg. - roll_used += (round(getarmor(def_zone, FIRE) / 20)) + roll_used += round(getarmor(def_zone, FIRE) / 20) if(TOX) roll_used = soak_dice_lethal //Poisons can vary from Bashing to Lethal, but the vast majority are Lethal. if(OXY) @@ -626,7 +626,7 @@ roll_used = soak_dice_lethal //Not many situations where you'd take direct brain damage really, but it'd be lethal in this case. if(AGGRAVATED) roll_used = soak_dice_aggravated //Well, obviously. - roll_used += (max(round(getarmor(def_zone, FIRE) / 20) - 1), 0) + roll_used += max((round(getarmor(def_zone, FIRE) / 20) - 1), 0) if(roll_used < 1) return damage //Skip the roll if it can't be soaked. Covers negative numbers too, in case of edge cases. From 20cbebaf743f6d4d3a77662f133aa65e4b4cfd25 Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 2 Jun 2026 20:51:31 +0000 Subject: [PATCH 129/130] Serpentis Changes --- code/modules/mob/living/damage_procs.dm | 5 +++++ .../modules/powers/code/discipline/serpentis.dm | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index 82a225272f41..800e5747ec82 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -627,10 +627,15 @@ if(AGGRAVATED) roll_used = soak_dice_aggravated //Well, obviously. roll_used += max((round(getarmor(def_zone, FIRE) / 20) - 1), 0) + if(HAS_TRAIT(src, TRAIT_SERPENTIS_SKIN)) + roll_used += st_get_stat(STAT_TEMPORARY_WILLPOWER) if(roll_used < 1) return damage //Skip the roll if it can't be soaked. Covers negative numbers too, in case of edge cases. + if(HAS_TRAIT(src, TRAIT_SERPENTIS_SKIN)) + soak_difficulty -= 1 //Technically RAW sets it to 5 no matter what, but this seems more reasonable. + var/datum/storyteller_roll/soak/soak_roll = new() soak_roll.difficulty = soak_difficulty //Overrides difficulty for adjustments when soak difficulty is different. diff --git a/modular_darkpack/modules/powers/code/discipline/serpentis.dm b/modular_darkpack/modules/powers/code/discipline/serpentis.dm index 937a2e6e2ecf..a3f39c1852a2 100644 --- a/modular_darkpack/modules/powers/code/discipline/serpentis.dm +++ b/modular_darkpack/modules/powers/code/discipline/serpentis.dm @@ -124,7 +124,7 @@ //THE SKIN OF THE ADDER /datum/discipline_power/serpentis/the_skin_of_the_adder name = "The Skin of the Adder" - desc = "Become like a snake and harden your skin into scales." + desc = "Become like a snake and harden your skin into scales. Spend willpower to do so subtly." level = 3 check_flags = DISC_CHECK_CAPABLE | DISC_CHECK_IMMOBILE | DISC_CHECK_LYING toggled = TRUE @@ -135,19 +135,20 @@ /datum/discipline_power/serpentis/the_skin_of_the_adder/pre_activation_checks() . = ..() owner.adjust_blood_pool(-1) + choice = tgui_alert(owner, "How do you manifest the scales along your body?", "Scales", list("Subtle", "Obvious")) + if(choice == "Subtle" && owner.st_get_stat(STAT_TEMPORARY_WILLPOWER) <= 0) + to_chat(owner, span_warning("You don't have enough willpower to do that!")) + return /datum/discipline_power/serpentis/the_skin_of_the_adder/activate() . = ..() - //this needs a sprite - choice = tgui_alert(owner, "How do you manifest the scales along your body?", "Scales", list("Subtle", "Obvious")) if(choice == "Obvious") owner.st_add_stat_mod(STAT_INTIMIDATION, 2, "Serpentis") // 'reduce intimidation difficulties by two' placeholder - owner.st_add_stat_mod(STAT_STAMINA, 3, "Serpentis") // 'reduces all soak difficulty to 5' placeholder ADD_TRAIT(owner, TRAIT_MASQUERADE_VIOLATING_FACE, DISCIPLINE_TRAIT(type)) + owner.st_add_stat_mod(STAT_APPEARANCE, -(owner.st_get_stat(STAT_APPEARANCE) - 1), "Serpentis") else - owner.st_add_stat_mod(STAT_STAMINA, 2, "Serpentis") // permanently on with no downsides according to dav20. its staying at fort one bro + owner.st_set_stat(STAT_TEMPORARY_WILLPOWER, owner.st_get_stat(STAT_TEMPORARY_WILLPOWER) - 1) ADD_TRAIT(owner, TRAIT_SERPENTIS_SKIN, DISCIPLINE_TRAIT(type)) //ideally this would either be blatantly obvious or not so much depending on the choice. I guess masq violating face trait will work for obvious. - owner.st_add_stat_mod(STAT_APPEARANCE, -(owner.st_get_stat(STAT_APPEARANCE) - 1), "Serpentis") /* owner.Stun(duration_length) owner.petrify(duration_length, "Serpentis") From fec93f383a55bfcebb611d33d2595171e2800f8a Mon Sep 17 00:00:00 2001 From: Magisterium2022 <103293726+Magisterium2022@users.noreply.github.com> Date: Tue, 2 Jun 2026 20:52:35 +0000 Subject: [PATCH 130/130] Serpentis --- modular_darkpack/modules/powers/code/discipline/serpentis.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_darkpack/modules/powers/code/discipline/serpentis.dm b/modular_darkpack/modules/powers/code/discipline/serpentis.dm index a3f39c1852a2..4d367930809d 100644 --- a/modular_darkpack/modules/powers/code/discipline/serpentis.dm +++ b/modular_darkpack/modules/powers/code/discipline/serpentis.dm @@ -134,11 +134,11 @@ /datum/discipline_power/serpentis/the_skin_of_the_adder/pre_activation_checks() . = ..() - owner.adjust_blood_pool(-1) choice = tgui_alert(owner, "How do you manifest the scales along your body?", "Scales", list("Subtle", "Obvious")) if(choice == "Subtle" && owner.st_get_stat(STAT_TEMPORARY_WILLPOWER) <= 0) to_chat(owner, span_warning("You don't have enough willpower to do that!")) return + owner.adjust_blood_pool(-1) /datum/discipline_power/serpentis/the_skin_of_the_adder/activate() . = ..()