Skip to content

Conversation

kevingranade
Copy link
Member

Summary

None

Purpose of change

DDA systems are not designed around characters having arbitrarily high stats. These very high stats cause breakage on a fairly regular basis and should be avoided.

Describe the solution

Add an external option setting the cap to 20 and apply it in character::get_() methods.
When this topic has come up before I've gotten feedback from mod maintainers that they don't want the same cap as core DDA, which is totally reasonable.

Describe alternatives you've considered

I'm not 100% on 20, but that's a good starting point. Lower is pretty much not happening, slightly higher might work, but not by much.
I very briefly pondered a separate cap for each stat, but I'm not aware of any use cases for it.

Testing

Spawned a character, debugged stats above 20, saw that the character dialog showed 20.

Additional context

Leaving this in draft because I want mod authors to have a chance to requests different limits for their mods, there's no rush.

If you have feedback about increasing the cap, please explain with examples why it's beneficial for it to be higher, "I want it higher" isn't compelling.

@github-actions github-actions bot added [JSON] Changes (can be) made in JSON [C++] Changes (can be) made in C++. Previously named `Code` json-styled JSON lint passed, label assigned by github actions astyled astyled PR, label is assigned by github actions labels Sep 23, 2025
@gimy77357-netizen
Copy link
Contributor

gimy77357-netizen commented Sep 23, 2025

I think 24 is better because certain CBMs(passive stat increase +2) and artifacts(passive stat increase maxium +4) would totally end up being useless to a 20/20/20/20 character, mutations at least comes with additional features even if they can't increase the stat.

@b3brodie
Copy link
Contributor

Related to Gimy's comment. Slime mutants will likely hit this cap by default simply by mutating the Distributed Neurology mutation when combined with any other intelligence increase and / or simply starting with >= 10 Intelligence at character creation.

Copy link
Member

@RenechCDDA RenechCDDA left a comment

Choose a reason for hiding this comment

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

External option is the way to go for mod support.

Only other thing I would suggest is making it a cached option. A character's stats can be checked or redrawn several times in one turn, just for one character! There could be many characters (NPCs) needing so each turn...

@GK-Edelweiss
Copy link
Contributor

For the STR attribute, this limit seems too easy to exceed. Bears provide nearly a +10 STR bonus. If I have a CBM equipped and am holding an artifact, even with a base attribute of 8, I can easily hit the attribute cap, which ends up limiting the stats I should rightfully gain.

@SariusSkelrets
Copy link
Contributor

Activating hydraulic muscles gives 20 STR by itself. The base limit might need to be higher, as it currently cannot account for high but short-lived stat boosts.

@gimy77357-netizen
Copy link
Contributor

Activating hydraulic muscles gives 20 STR by itself. The base limit might need to be higher, as it currently cannot account for high but short-lived stat boosts.

Maybe we can not apply limit to stat increase caused by CBM or artifact? They don't have meaningfull impact on gameplay unlike mutations or bonus from mods.

@RenechCDDA
Copy link
Member

Maybe we can not apply limit to stat increase caused by CBM or artifact? They don't have meaningfull impact on gameplay unlike mutations or bonus from mods.

That's not a reasonable approach. The cap is meant to be a cap, making exceptions would defeat the purpose. It would also require the sources of each modifier to be tracked, which is not reasonable.

@gimy77357-netizen
Copy link
Contributor

Perhaps limiting the stat in the chargen menu to be 15 like how it was in the point system days is a better way to solve this problem rather than increasing the cap or allowing an exception.

@Profugo-Barbatus
Copy link

Or you could just leave the cap as the cap regardless of buffs and accept that if a player is already a walking hydraulic bear at the stat cap and chugs a bottle of muscle milk special blend, they don't get any bonus. Its not any more reasonable to design a stat cap around "well what if the player stacked every possible buff". Stat caps are to prevent them from breaking the game, so at some point you have to be telling the player "no" regardless.

@kevingranade
Copy link
Member Author

"It's possible to exceed the cap" is not an argument in favor of increasing the cap, it's the reason we need a cap.

These stat increases are for the most part not intended to stack, if you give a bear mutant a human-scale augmented muscle CBM, that should not stack with the improved strength from being a bear mutant in the first place.
With hydraulic muscles in particular, it shouldn't add to anything, it should just set your strength to the hydraulic muscles value.

@Maddremor
Copy link
Contributor

It is also possible that some things that give stat bonuses right now might instead give specific effects that are more narrow in scope.

@Standing-Storm
Copy link
Contributor

Would it be possible to have separate caps for each stat? For example, MoM has reason to have higher caps on Strength/Dexterity/Perception, but nothing in MoM increases Intelligence at all.

@kevingranade
Copy link
Member Author

Would it be possible to have separate caps for each stat?

Yea I didn't have a use case, but if you do I can break it down.

@Tiareth
Copy link

Tiareth commented Sep 26, 2025

I'd limit it to around 30. This value seems like a happy medium between doubling mutations and endless stacking on all sorts of artifacts without having to track the different bonus types like in a pathfinder. Thank you so much for setting this value in an easily editable json file, i am very grateful for this.

@kevingranade
Copy link
Member Author

To be clear to mod authors, the reason this is in draft is so I can incorporate your picks for max stats in your mods without you having to rush to fix it in a follow-up PR, so tell me what you want it set to and I'll add it.

@github-actions github-actions bot added Code: Tests Measurement, self-control, statistics, balancing. Mechanics: Enchantments / Spells Enchantments and spells BasicBuildPassed This PR builds correctly, label assigned by github actions labels Sep 27, 2025
@Standing-Storm
Copy link
Contributor

To be clear to mod authors, the reason this is in draft is so I can incorporate your picks for max stats in your mods without you having to rush to fix it in a follow-up PR, so tell me what you want it set to and I'll add it.

For MoM: Strength/Dexterity/Perception: 35

No override value set for Intelligence

@Cactoideae
Copy link

Cactoideae commented Sep 30, 2025

25 could be cleaner than 20 for several reasons.
Mutation attacks that scale off dexterity generally max out at 25 DEX.
Reading speed maxes out at around 28 INT, but that makes read times more or less instant, so 25 would be better.
Mutations from just a single tree can give up to +11 to one stat. Since 12 starting is still considered within normal human limits, a normal human who is mutating just one category would easily run againt the 20 cap. Since 14 starting is the lowest "totally unrealistic" stat, a cap of 25 would naturally complement it (14+11=25).
Some specific examples from purely vanilla:

  1. A professional athlete (10-12 STR) drinks bear mutagens and goes post-thresh. The cap of 20 would eat up to 3 points, and make this character the same strength as a formerly average human (9 STR) who drank the same bear mutagens. The cap of 25 would still allow the two to be different.
  2. A somewhat clever person (10 INT) would exceed the cap of 20 simply by mutating into a slime. If the cap is 25 instead, it wouldn't be exceeded by any normal starting int (12 or lower).

Basically, you can hit 20 stat without doing anything minmaxy by just playing the game normally, so it might be too low.
I've deliberately not mentioned situations where stacking multiple stat increases breaks the cap. In my examples, a single source brings a normal starting character over the proposed cap of 20.

@Maddremor
Copy link
Contributor

25 could be cleaner than 20 for several reasons. Mutation attacks that scale off dexterity generally max out at 25 DEX. Reading speed maxes out at around 28 INT, but that makes read times more or less instant, so 25 would be better. Mutations from just a single tree can give up to +11 to one stat. Since 12 starting is still considered within normal human limits, a normal human who is mutating just one category would easily run againt the 20 cap. Since 14 starting is the lowest "totally unrealistic" stat, a cap of 25 would naturally complement it (14+11=25).

The point of a cap is for it to kick in as the game is played. Someone who is already very strong shouldn't have the incentive to double down on strength mutations. It's the weaklings that are better serverd by leaving their natural bodies behind.

  1. A somewhat clever person (10 INT) would exceed the cap of 20 simply by mutating into a slime. If the cap is 25 instead, it wouldn't be exceeded by any normal starting int (12 or lower).

Having Slime give bonuses that aren't straight INT but rather more targeted bonuses would be an alternative. There is no need for the caps to keep every single game interaction and balance factor as they now stand unaltered.

@Cactoideae
Copy link

Cactoideae commented Sep 30, 2025

Someone who is already very strong shouldn't have the incentive to double down on strength mutations. It's the weaklings that are better serverd by leaving their natural bodies behind.

Mutations should logically be multipliers on pre-existing body capabilities. An already strong human body could sustain more blob-induced hulk muscles than a weak one. I don't think it makes sense for mutations to equalize characters in such a way.
From a videogame perspective, when a player takes a stronger-than-average starting character, it means this is the storytelling fantasy they want to play at the moment. So they are more inclined to pick further strength-enhancing trajectory, not less.

@kevingranade
Copy link
Member Author

Starting character stats are not "selecting a storytelling fantasy" in dda, they're simply choosing the initial state of the character.

As for how mutations "should" work they very definitely are intended to replace existing physiology rather than augment it, but making them additive is a compromise because we want different mutations to stack with each other.

@TheShadowFerret
Copy link
Contributor

TheShadowFerret commented Oct 1, 2025

Since Magiclysm has species with different base stats(ex. dwarves have +2 str/-1 dex), is allowing specie-type mutations to alter the cap to reflect never being on a human baseline to begin with against the intended purpose of the PR?

@RenechCDDA
Copy link
Member

Since Magiclysm has species with different base stats(ex. dwarves have +2 str/-1 dex), is allowing specie-type mutations to alter the cap to reflect never being on a human baseline to begin with against the intended purpose of the PR?

That would be a question for Magiclysm's maintainer.

@StarShatter707

This comment was marked as off-topic.

@kevingranade kevingranade marked this pull request as ready for review October 2, 2025 16:20
Copy link
Contributor

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Auto-requesting reviews from non-collaborators: @Standing-Storm

@Maleclypse
Copy link
Member

Maleclypse commented Oct 4, 2025

At the moment I think both Xedra Evolved and Magiclysm should be set to 35 and I'll see how that handles.
Storm made a good point elsewhere it's significantly above the human range but not so high that spells and abilities fail to work properly which we know happens at higher levels.

This cap includes intelligence.

@github-actions github-actions bot added Mods: Magiclysm Anything to do with the Magiclysm mod Mods: Xedra Evolved Anything to do with Xedra Evolved labels Oct 4, 2025
@github-actions github-actions bot removed json-styled JSON lint passed, label assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions labels Oct 4, 2025
@github-actions github-actions bot added json-styled JSON lint passed, label assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions labels Oct 4, 2025
@Maleclypse
Copy link
Member

Since Magiclysm has species with different base stats(ex. dwarves have +2 str/-1 dex), is allowing specie-type mutations to alter the cap to reflect never being on a human baseline to begin with against the intended purpose of the PR?

I think unless I’ve missed something this is a possibility, for a followup PR. Though we do want to make sure we avoid racial determinism. I think that can be managed though

@Maleclypse
Copy link
Member

Unless @John-Candlebury feels otherwise I think Aftershock can do 25 on each stat

@Maddremor
Copy link
Contributor

I should note that the issue isn't game balance as such, but that the stats aren't designed to be arbitrarily high. It's not that 40 STR is making the player too strong and potent, rather that at that level the math isn't checking out anymore.

@kevingranade
Copy link
Member Author

Yes, this isn't a balance change per se, this is making something that was poorly specified better specified so we can even do balance consistently.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
astyled astyled PR, label is assigned by github actions BasicBuildPassed This PR builds correctly, label assigned by github actions [C++] Changes (can be) made in C++. Previously named `Code` Code: Tests Measurement, self-control, statistics, balancing. [JSON] Changes (can be) made in JSON json-styled JSON lint passed, label assigned by github actions Mechanics: Enchantments / Spells Enchantments and spells Mods: Magiclysm Anything to do with the Magiclysm mod Mods: Mind Over Matter Mods: Xedra Evolved Anything to do with Xedra Evolved
Projects
None yet
Development

Successfully merging this pull request may close these issues.