Skip to content

Soak 2 - The return! - #1417

Open
Magisterium2022 wants to merge 227 commits into
DarkPack13:masterfrom
Magisterium2022:soak
Open

Soak 2 - The return!#1417
Magisterium2022 wants to merge 227 commits into
DarkPack13:masterfrom
Magisterium2022:soak

Conversation

@Magisterium2022

Copy link
Copy Markdown
Contributor

About The Pull Request

Adds Soak mechanics.

On character spawn and transformations for Garou, alongside embraces and ghouling, soak values for Bashing, lethal, and Agg are updated depending on Stamina, depending on Character Splat, and Disciplines.

Bashing is non-projectile or sharp brute damage, and stamina damage .
Lethal is projectile and sharp brute damage, poison damage, and brain damage.
Aggravated Damage is Burn and Aggravated damage.

Humans can soak Bashing with Stamina
Ghoul can soak Bashing and Lethal with Stamina (Ghouls and Revenants, v20, Page 42), and Agg with Fortitude if possessed.
Kindred can soak Bashing and Lethal, and Agg with Fortitude if possessed.
Garou can soak Bashing and Lethal in all forms, and Agg if outside of Breed form, or Metis.

Silver bullets ignore Soak values for Garou.
Kindred treat projectiles as dealing bashing except for the head

Currently, each soak roll success deducts 10 damage from an attack, to a minimum of 0 damage. This makes Kindred and Garou somewhat more bullet-resistant than previously, and renders Garou more fire resistant.

Adjusted direct brute and burn adjustments in the code to use the proper damage application system, alongside making unsoakable damage bypass soak.

Added soak_difficulty variable to the human version of adjust_damage() for setting soak difficulty where applicable. This is currently only used on Levinbolt and Lure of Flames.

Stamina no longer impacts max health, as this was previously being used as a placeholder for Soak.

Removes active Fortitude.

Adjusts Visceratika 4 to provide 1 Agg and Lethal soak, and 2 bashing, alongside halved burn damage as per V20 core.

Adjusts runtime tests to account for soak mechanics by setting testing target stamina to 0. This avoids false positive errors, and false negatives where soak might otherwise prevent a runtime from showing in testing properly.

Adds "NO_SOAK" trait for entities that shouldn't have soak effects applied to them for whatever reason.

Armour for most common Vampire armours has been adjusted to use Soak rolls instead of base TG armour values, although those have been preserved where possible

Why It's Good For The Game

Alongside introducing a core tabletop mechanic, this allows for more effective balancing of Disciplines such as Fortitude, and better reflection of the benefits of Stamina bonuses from Garou forms and other alternative forms.

Changelog

🆑
add: Adds Soak mechanics for various damage types. Humans can soak non-bullet or bladed brute, Kindred, Ghouls with Fortitude, and Garou can soak bullets and blades, Garou and those with Fortitude can soak Aggravated damage from Fire and the like. Silver bullets ignore Garou soak. Armour increases soak values.
balance: Stamina no longer impacts Max Health.
balance: Visceratika 4 now provides 1 Agg and Lethal soak, and 2 Bashing alongside halved burn damage.
del: Removes active Fortitude.
/:cl:

@github-actions

Copy link
Copy Markdown
Contributor

You currently have a negative Fix/Feature pull request delta of -10. Maintainers may close this PR at will. Fixing issues or improving the codebase will improve this score.


/// Soak values for equipment. Differentiated from armour to avoid losing TG base armour systems
/// Generic non-sharp impact defence
var/bashing_soak = 0

@Iamgoofball Iamgoofball Aug 15, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should not be done this way, this should be on the armor datum, not on the actual object. We should be replacing /tg/ armor systems with this, it's alright.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doing so would unfortunately lose functionality, undermine compatibility, and cause a lot of errors and issues requiring adjustments, since it's such a referenced part of the code. It's simpler and easier to maintain and preserve armour systems as-is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants