Skip to content

The Brawlening#798

Draft
SELFHELL wants to merge 10 commits intoDarkPack13:masterfrom
SELFHELL:The-Brawlening
Draft

The Brawlening#798
SELFHELL wants to merge 10 commits intoDarkPack13:masterfrom
SELFHELL:The-Brawlening

Conversation

@SELFHELL
Copy link
Copy Markdown
Contributor

@SELFHELL SELFHELL commented Mar 23, 2026

About The Pull Request

This has been a PR that's been getting baked for a decently long time, Chaz requested that I draft it RN for preliminary TTRPG Accuracy/Code Quality Pass

What's actually included in the Brawlening?

Customish Darkpack Martial Arts for users with 4+ dots in Brawl

Close Quarters Brawling (CQB):
Takes heavy inspiration from Krav Maga, Judo, and a nonzero amount of metal gear.
Primarily oriented around grappling + disabling

Kung-Fu:
It's self explanatory really, though this is a bastardization
Primarily oriented around evasion & knockback
Dex + Athletics are used to calculate melee attack dodge chance

Street Boxing:
A hybrid of some actual (dirty) boxing techniques
Slightly more complex combos but deals the highest damage
Dex + Athletics used to SOLEY calculate unarmed dodge chance, higher than Kung-Fu

Minor non-modular changes to butchering & beheading for quality of life

Expect a proper rewritten design doc once I've finalized everything

Why It's Good For The Game

One of the main goals of this PR is to actually increase the immersion & player options for melee combat.
You can mechanically larp as being a trained fencer using a rapier, ect
Implementing proper martial arts allows for the same thing with unarmed fighting styles

Given the live-action nature of SS13, it's unfortunately impossible to really even try and translate WOD's grappling/fistfighting mechanics. Instead, I choose to work off the existing martial arts datums from upstream and improve from there using TTRPG accurate rolling where applicable.

Nothing is final, ESPECIALLY damage/probability math.

Changelog

🆑
add: Martial Arts, Available to characters with 4+ dots in Brawl
qol: adjusted butchering location requirements
qol: Re-enabled natural decapitation on humans
/:cl:

@github-actions
Copy link
Copy Markdown
Contributor

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

Copy link
Copy Markdown
Contributor

@chazzyjazzy chazzyjazzy left a comment

Choose a reason for hiding this comment

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

light review for now becuase i have things to do tomorrow that im stressed out about, will drop a more comprehensive review tmrw

return

if (!user.combat_mode)
if (user.combat_mode) //DARKPACK EDIT CHANGE- quality of life for melee weapons, doesnt make sense you couldnt do combos in combat mode
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 may have unintended effects. will try and think of an example

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.

I did some testing with it myself, it mostly came down to doing butchering instead of surgery on RMB. LMB surgery still works fine.
Technically I could revert this for a while until I finish melee properly in a later PR

Comment on lines +71 to +72
var/stun_time = SSroll.storyteller_roll((attacker.st_get_stat(STAT_STRENGTH) + attacker.st_get_stat(STAT_BRAWL)), difficulty = 6, numerical = TRUE, roller = attacker) //In THEORY this should be attacker weighted, with high stamima users shrugging it off.
var/defended_time = SSroll.storyteller_roll(defender.st_get_stat(STAT_STAMINA) * 2, difficulty = (attacker.st_get_stat(STAT_STRENGTH) + attacker.st_get_stat(STAT_BRAWL)), numerical = TRUE, roller = defender)
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.

you need to datumize these rolls, storyteller_roll is soft deprecated and is now a wrapper for how to correctly make a roll

basically a roll is its own object now, /datum/storyteller_roll.

return FALSE

attacker.do_attack_animation(defender)
if(defender.body_position == LYING_DOWN && !defender.IsUnconscious() && !iskindred(defender) && defender.get_stamina_loss() >= 0) //This is EXTREMELY conditional to make sure it's not abused to shit
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.

iskindred and get_stamina_loss don't exist

iskindred i think was changed to get_kindred_splat

Comment on lines +140 to +141
var/stun_time = SSroll.storyteller_roll((attacker.st_get_stat(STAT_STRENGTH) + attacker.st_get_stat(STAT_BRAWL)), difficulty = 6, numerical = TRUE, roller = attacker) //In THEORY this should be attacker weighted, with high stamima users shrugging it off.
var/defended_time = SSroll.storyteller_roll(defender.st_get_stat(STAT_STAMINA) + defender.st_get_stat(STAT_ATHLETICS), difficulty = (attacker.st_get_stat(STAT_STRENGTH) + attacker.st_get_stat(STAT_BRAWL)), numerical = TRUE, roller = defender)
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.

datumize rolls

return FALSE

if(!HAS_TRAIT(owner, TRAIT_CURSED) && owner.stat < HARD_CRIT)
if (owner.stat < HARD_CRIT)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Nonmodular (not commented) removal and im not sure why it was removed in the first place.

Co-authored-by: chazzyjazzy <33268885+chazzyjazzy@users.noreply.github.com>
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