CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
10.11k stars 4.11k forks source link

Balance Prime Foo mutations #23193

Closed ghost closed 5 years ago

ghost commented 6 years ago

Expected behavior

Prime Strength/Dexterity/Intelligence/Perception of Alpha threshold mutations brings your stats near to a modern human maximum, respecting your current stat value.

Actual behavior

Gained bonuses seem stubbed, giving you +2 if you had 6 points and +7 if you had 8.

Suggested solution

Balance out gained stat bonuses the following way:

Initial stat point Mutated was Mutated will be
4 8 (+4) 12 (+8)
5 8 (+3) 12 (+7)
6 8 (+2) 13 (+7)
7 11 (+4) 13 (+6)
8 15 (+7) 14 (+6)
9 15 (+6) 14 (+5)
10 15 (+5) 15 (+5)
11 15 (+4) 15 (+4)
12 15 (+3) 16 (+4)
13 15 (+2) 16 (+3)
14 15 (+1) 17 (+3)
15 18 (+3) 17 (+2)
16 18 (+2) 18 (+2)
17 18 (+1) 18 (+1)
18 18 (+0) 18 (+0)
19 18 (-1) 19 (+0)
20 18 (-2) 20 (+0)

Average points gain with initial points from 4 to 17:

You may say that possible +8 sounds like a big increase in stats, but consider the following:

Suggested implementation

I do not follow repository nor have any C++ skills but it seems to be straightforward. In the src/mutation.cpp changing in the Character::mutation_effect from

//...
    } else if (mut == trait_FOO_ALPHA) {
        ///\EFFECT_FOO_MAX determines bonus from FOO mutation
        if (foo_max <= 6) {
            foo_max = 8;
        } else if (foo_max <= 7) {
            foo_max = 11;
        } else if (foo_max <= 14) {
            foo_max = 15;
        } else {
            foo_max = 18;
        }
//...

to

//...
    } else if (mut == trait_FOO_ALPHA) {
        ///\EFFECT_FOO_MAX determines bonus from FOO mutation
        if (foo_max <= 5) {
            foo_max = 12;
        } else if (foo_max <= 7) {
            foo_max = 13;
        } else if (foo_max <= 9) {
            foo_max = 14;
        } else if (foo_max <= 11) {
            foo_max = 15;
        } else if (foo_max <= 13) {
            foo_max = 16;
        } else if (foo_max <= 15) {
            foo_max = 17;
        } else if (foo_max <= 17) {
            foo_max = 18;
        }
//...

and in the Character::mutation_loss_effect from

//...
    } else if (mut == trait_FOO_ALPHA) {
        ///\EFFECT_FOO_MAX determines penalty from FOO mutation loss
        if (foo_max == 18) {
            foo_max = 15;
        } else if (foo_max == 15) {
            foo_max = 8;
        } else if (foo_max == 11) {
            foo_max = 7;
        } else {
            foo_max = 4;
        }
//...

to

//...
    } else if (mut == trait_FOO_ALPHA) {
        ///\EFFECT_FOO_MAX determines penalty from FOO mutation loss
        if (foo_max == 17) {
            foo_max = 15;
        } else if (foo_max == 16) {
            foo_max = 13;
        } else if (foo_max == 15) {
            foo_max = 11;
        } else if (foo_max == 14) {
            foo_max = 9;
        } else if (foo_max == 13) {
            foo_max = 7;
        } else if (foo_max == 12) {
            foo_max = 5;
        }
//...

should probably do the trick?

Here comes another thing. In the current implementation "if you remove any of the Prime Foo mutations, the relevant stat will be decreased to the lowest possible value it could have been before getting the mutation. For example, if you had 13 Intelligence and got Prime Intelligence, your Intelligence would be raised to 15. If you removed the mutation afterwards, your Intelligence would be lowered to 8."

The only possible explanation of this behavior mentioned here was "Intended. Once you get Prime stats, perhaps you shouldn't be messing around with your genetics, hm?" from the https://github.com/CleverRaven/Cataclysm-DDA/issues/11282#issuecomment-74574291. Well, is the game pro-futurism or pro-tradition? I would say, mess your genetics up and get some surprising rewards, come on! After all, possible +1 (well, possible +2 in case you pushed some initial stat way up to 16) definitely wouldn't be an exploit, considering what it would take to get all the alpha threshold mutations and purify them. Just a little trick to push your very late character that you don't want to be alpha to the very limits.

I am glad to hear comments on this and hopefully some support of the idea.

kevingranade commented 6 years ago

You haven't supported your expected behavior, that might be what you personally expect, but you need to convince others that you're right.

This is a very hard sell as "improving balance" when it consists of a massive buff to prime in every way. The balance goal for prime is that it provides significant stat increases across the board with not much in the way of penalties, and without becoming significantly, "inhuman". With these adjustments it seems likely that it becomes significantly better than mutation flavors that are saddled with significantly worse bad mutations.

Mecares commented 6 years ago

I do not see a reason to buff one of the most popular mutation paths even further.

ghost commented 6 years ago

@kevingranade thanks for the reply. Well, there is still a way to make it more intuitive and less random. Changing gained stat bonuses the following way:

Initial stat point Mutated was Mutated will be
4 8 (+4) 8 (+4)
5 8 (+3) 9 (+4)
6 8 (+2) 10 (+4)
7 11 (+4) 11 (+4)
8 15 (+7) 12 (+4)
9 15 (+6) 13 (+4)
10 15 (+5) 14 (+4)
11 15 (+4) 15 (+4)
12 15 (+3) 16 (+4)
13 15 (+2) 16 (+3)
14 15 (+1) 17 (+3)
15 18 (+3) 17 (+2)
16 18 (+2) 18 (+2)
17 18 (+1) 18 (+1)
18 18 (+0) 18 (+0)
19 18 (-1) 19 (+0)
20 18 (-2) 20 (+0)

will make average points gain up to initial 17 to be exactly the same +3.36 points. In case the community won't agree with the suggested behavior. In that way, receiving back lowest-possible-stat-it-was by getting alpha threshold mutations and purifying them won't be such an issue. Yet I believe that balancing a mutation like that is way wrong.

My point is the following. You ether enjoy some unusual situational mutation rewards and get along with unusual situational drawbacks or work hard to enjoy some common mutation rewards (mainly considerable stats boost) and get along with common drawbacks (Fast Metabolism, Disintegration), that would make life very uneasy early but could be tolerated later on.

I case you still consider the buff to be huge (which just would be very good at covering your weak spots in initial stats), I may suggest the following ways of reasonable rebalancing of alpha branch:

So apart from stats sounding to be greatly buffed is there any reasons for the change not to be desirable? I'd also like to hear your thoughts about rearranging bonuses and adding additional negative mutations. And by the way, in 3 of 14 scenarios (for common 4 - 17 stats) gained bonuses become even less than it would be.

ghost commented 6 years ago

@Mecares so what we have now is basically +3.36 to all points (it could be "+2 +2 +2 +2" or "+7 +7 +7 +7" for stats in 2 points difference, so based nearly on luck or the knowledge of how the code is written) and very little sleep for nearly 10hp pokes a day while awake. As a bonus you may have big permanent stats loss on purifying.

Alpha branch is one of the most popular not because it's superior, but because it's very straightforward and doesn't have pesky traits that will distort your body or require you to do some preparations. And probably because it sounds cool.

kevingranade commented 6 years ago

Counter-proposal (I made this months ago, but it didn't send or something). The goal of Alpha is to bring stats to "extremely good, but not perfect", as such it intentionally penalizes stats that are already very high. This progression does that very simply by giving large bonuses to low stats, negligible bonuses to already good stats, and no bonus or penalties to very good stats. If your goal is

make it more intuitive and less random.

Then I would suggest this:

Initial stat point Mutated was Mutated will be
4 8 (+4) 11 (+7)
5 8 (+3) 11 (+6)
6 8 (+2) 12 (+6)
7 11 (+4) 12 (+5)
8 15 (+7) 13 (+5)
9 15 (+6) 13 (+4)
10 15 (+5) 14 (+4)
11 15 (+4) 14 (+3)
12 15 (+3) 15 (+3)
13 15 (+2) 15 (+2)
14 15 (+1) 16 (+2)
15 18 (+3) 16 (+1)
16 18 (+2) 17 (+1)
17 18 (+1) 17 (+0)
18 18 (+0) 18 (+0)
19 18 (-1) 18 (-1)
20 18 (-2) 18 (-2)

The early part of your first proposal is fine, as you can see I essentially copied it. The problem is the latter part of both proposals gives a massive buff to characters that already have high stats, which goes against the "good but not perfect" goal of Alpha.

ghost commented 6 years ago

@kevingranade

The early part of your first proposal is fine, as you can see I essentially copied it

and subtracted 1 for positive bonuses. In matters of average bonus gain this leaves it almost the same. I like it. About the latter part, I don't really think it has notable balance meaning, but if you say that's important I have no disputes.

RedPine91 commented 6 years ago

At the very least, the current threshholds are very meta-gamey, with the best gains at 4, 8, and 15. I prefer the slightly more gradual progression posted by Kevin, which encourages all even numbers.

BrianLefler commented 6 years ago

This issue can be closed if people are happy with the new change.

Prime mutations now give a gradual bonus when a character's base stats were 14 or less, increasing the stat halfway towards 16, rounded down. They also continue to give the precursor mutation's +1 or +2 bonus.

Above a base stat of 14, they have no effect (other than continuing to give the precursor mutation's +1 or +2 bonus).

Base Precursor New Prime Old Prime Notes
5 6/7 11/12 (+5) 8 (+2/1)
6 7/8 12/13 (+5) 11 (+5/+4)
7 8/9 12/13 (+4) 11 (+3/+2)
8 9/10 13/14 (+4) 15 (+6/+5)
9 10/11 13/14 (+3) 15 (+5/+4)
10 11/12 14/15 (+3) 15 (+4/+3)
11 12/13 14/15 (+2) 15 (+3/+2)
12 13/14 15/16 (+2) 15 (+2/+1)
13 14/15 15/16 (+1) 15 (+1/+0)
14 15/16 16/17 (+1) 15 (0/-1)
15 16/17 16/17 (0) 18 (+2/+1) (new) Prime mutation has no impact.
16 17/18 17/18 (0) 18 (+1/+0)
17 18/19 18/19 (0) 18 (0/-1) (old) Penalty for mutating began here
18 19/20 19/20 (0) 18 (-1/-2)

If people want some other similar calculation I can do it, as long as its straightforward.

For example "A third of the way to 18" would give 1 less bonus to base stats 8 & under, but 1 more bonus to people with base stats of 13, 15, & 16.

Night-Pryanik commented 5 years ago

No objections so far, so closing for now.