Yuki-x

Member
Jul 22, 2021
193
306
Hi, I will do my best to explain what you are experiencing and the key points of the base game system:

The XP multiplier system is designed to balance gameplay and provide subtle advantages for different character builds.

1. Base Multiplier Calculation:
The base multiplier uses a logarithmic function based on total stats:

Code:
(set: _score_multiplier_temp to _a + _b * (log: $total_stats - _c))
This ensures that as your total stats increase, the multiplier changes at a decreasing rate, preventing exponential growth.

2. Level Cap Adjustment:
The 3% adjustment per unobtainable stat point compensates for self-imposed limitations:

Code:
(set: _level_cap_adjustment to $stats_unobtainable * 0.03)
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
This is multiplicative, not additive. In your first screenshot, with a total of 11 stats and a max of 10 per stat, you have 19 unobtainable points (30 - 11). This results in a 57% increase (19 * 3%), explaining the 1.26x multiplier.

3. Hidden Achievements Bonus:
This bonus is applied separately and additively:

Code:
(set:_hidden_ach_bonus to $hidden_achievement_count * 0.03)
(set:$score_multiplier to $score_multiplier + _hidden_ach_bonus)

This bonus is applied after the level cap adjustment, which is why you might not see it directly reflected in the numbers you mentioned.

The reason your modification (changing 0.03 to 1/3 - 3% to 33%) resulted in a lower multiplier is that it drastically increased the level cap adjustment, which interacts with the logarithmic base calculation

The system aims to reward self-imposed limitations while still allowing players free to choose various stat setups. If you find it too grindy, modding is definitely encouraged, as you know it is very easy to do. All I can do is explain why I have set it up this way in the base game, as far as I can tell things are working as intended.
Thanks for the answer, I had already understood points 1 2 3

What I do not get (and the reason I reported it as bug) is how the level cap adjustment can result in a lower multiplier, but it happens only after a achievement is unlocked.

with the 33% modification enabled:
a) before unlocking an achievement
The level cap adjustment interacts with the logarithmic base calculation => gives the expected multiplier score (1.26)
b) after unlocking an achievement
step (a) should still stand / remains the same? correct? It should still be (1.26)
then the bonus should be triggered and the new value should be (1.26) + bonus
But from what I see it ignores the level cap adjustment (all together) and gives
a result of the default initial multiplier only (logarithmic base calculation), ignoring the level cap adjustment setting, and the bonus compensates to bring the value back to the initial setting.
----------------------------
If no modifications are done to the game:
no achievement triggered
level cap + base calculation = results to a value (A)
achievement triggered
level cap + base calculation + bonus = results to a value (B)

(A) should be different than (B) if a bonus is really applied correct?
But in reality, what I get is that (A) is equal to (B)
So either the bonus is not applied (I don't think is the case)... or the multiplier ignores the level cap and applies only the bonus.


edit: it could be related to the export/import saves
edit 2: never mind I found the conflicting code
It's inside passagedata pid="3321" name="score multiplier calc"
(set: $score_multiplier to (round: (100 * _score_multiplier_temp)) / 100)
conflicts with
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
During the setup is used
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
and then during the game play is ovewritten again from
(set: $score_multiplier to (round: (100 * _score_multiplier_temp)) / 100)
 
Last edited:

Smallfrie

Active Member
Dec 25, 2018
740
256
Thanks for the answer, I had already understood points 1 2 3

What I do not get (and the reason I reported it as bug) is how the level cap adjustment can result in a lower multiplier, but it happens only after a achievement is unlocked.

with the 33% modification enabled:
a) before unlocking an achievement
The level cap adjustment interacts with the logarithmic base calculation => gives the expected multiplier score (1.26)
b) after unlocking an achievement
step (a) should still stand / remains the same? correct? It should still be (1.26)
then the bonus should be triggered and the new value should be (1.26) + bonus
But from what I see it ignores the level cap adjustment (all together) and gives
a result of the default initial multiplier only (logarithmic base calculation), ignoring the level cap adjustment setting, and the bonus compensates to bring the value back to the initial setting.
----------------------------
If no modifications are done to the game:
no achievement triggered
level cap + base calculation = results to a value (A)
achievement triggered
level cap + base calculation + bonus = results to a value (B)

(A) should be different than (B) if a bonus is really applied correct?
But in reality, what I get is that (A) is equal to (B)
So either the bonus is not applied (I don't think is the case)... or the multiplier ignores the level cap and applies only the bonus.


edit: it could be related to the export/import saves
edit 2: never mind I found the conflicting code
It's inside passagedata pid="3321" name="score multiplier calc"
(set: $score_multiplier to (round: (100 * _score_multiplier_temp)) / 100)
conflicts with
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
During the setup is used
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
and then during the game play is ovewritten again from
(set: $score_multiplier to (round: (100 * _score_multiplier_temp)) / 100)
It happens in code that is rewritten multiple times... not that it maters much...
 

l1lym

Aphrodite, creator of X-Change Life™
Game Developer
Jan 21, 2019
1,078
3,469
Thanks for the answer, I had already understood points 1 2 3

What I do not get (and the reason I reported it as bug) is how the level cap adjustment can result in a lower multiplier, but it happens only after a achievement is unlocked.

with the 33% modification enabled:
a) before unlocking an achievement
The level cap adjustment interacts with the logarithmic base calculation => gives the expected multiplier score (1.26)
b) after unlocking an achievement
step (a) should still stand / remains the same? correct? It should still be (1.26)
then the bonus should be triggered and the new value should be (1.26) + bonus
But from what I see it ignores the level cap adjustment (all together) and gives
a result of the default initial multiplier only (logarithmic base calculation), ignoring the level cap adjustment setting, and the bonus compensates to bring the value back to the initial setting.
----------------------------
If no modifications are done to the game:
no achievement triggered
level cap + base calculation = results to a value (A)
achievement triggered
level cap + base calculation + bonus = results to a value (B)

(A) should be different than (B) if a bonus is really applied correct?
But in reality, what I get is that (A) is equal to (B)
So either the bonus is not applied (I don't think is the case)... or the multiplier ignores the level cap and applies only the bonus.


edit: it could be related to the export/import saves
edit 2: never mind I found the conflicting code
It's inside passagedata pid="3321" name="score multiplier calc"
(set: $score_multiplier to (round: (100 * _score_multiplier_temp)) / 100)
conflicts with
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
During the setup is used
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
and then during the game play is ovewritten again from
(set: $score_multiplier to (round: (100 * _score_multiplier_temp)) / 100)
No, it is working for me. I did the exact same setup and got 1.26x, and then it went up to 1.38x due to 4 hidden achievements.

You started by telling me the whole system is bad, and then you modified the game code, and then now you are getting some unexpected values, and now you are telling me things are reverted, but I have no way to verify the state of your game, so I'm not going to spend anymore time investigating this unless more people report it.
 

Yuki-x

Member
Jul 22, 2021
193
306
No, it is working for me. I did the exact same setup and got 1.26x, and then it went up to 1.38x due to 4 hidden achievements.

You started by telling me the whole system is bad, and then you modified the game code, and then now you are getting some unexpected values, and now you are telling me things are reverted, but I have no way to verify the state of your game, so I'm not going to spend anymore time investigating this unless more people report it.
Don't really care if you want to fix the bugs in your code (lost enough time already...), but in case you want to fix the conflicting code...

original code
Code:
(set: _a to 5.5772, _b to -1.4407, _c to -8.9769)
(set: _score_multiplier_temp to _a + _b * (log: $total_stats - _c))
(set: $score_multiplier to (round: (100 * _score_multiplier_temp)) / 100)

(if:$club_timer > 0)[(set:$score_multiplier to $score_multiplier + 0.25)]
(if:$potion_shop_max_action_point_purchased is "true")[(set:$score_multiplier to $score_multiplier - 0.05)]
(if:(a:"cherry pop","swirlin surprise") contains $current_zipple)[(set:$score_multiplier to $score_multiplier + 0.25)]
(if:(is_fem:) and not ($handbag is 0))[(set:$score_multiplier to $score_multiplier + ($handbag_xp_bonus / 100))]

(if: (pill:"Resistance") and (checkdm:$resistance_effect,"side effects","contains","xp penalty"))[
        (set: _xp_penalty_count to (count: $resistance_effect's "side effects", "xp penalty"))
        (set: $score_multiplier to (max:0,$score_multiplier - (_xp_penalty_count * 0.15)))
    ]

(set: _level_cap_adjustment to $stats_unobtainable * 0.03)
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
bug fixed
Code:
(set: _a to 5.5772, _b to -1.4407, _c to -8.9769)
(set: _score_multiplier_temp to _a + _b * (log: $total_stats - _c))
(set: _level_cap_adjustment to $stats_unobtainable * 0.03)
(set: $score_multiplier to (round: (100 * _score_multiplier_temp * (1 + _level_cap_adjustment))) / 100)

(if:$club_timer > 0)[(set:$score_multiplier to $score_multiplier + 0.25)]
(if:$potion_shop_max_action_point_purchased is "true")[(set:$score_multiplier to $score_multiplier - 0.05)]
(if:(a:"cherry pop","swirlin surprise") contains $current_zipple)[(set:$score_multiplier to $score_multiplier + 0.25)]
(if:(is_fem:) and not ($handbag is 0))[(set:$score_multiplier to $score_multiplier + ($handbag_xp_bonus / 100))]

(if: (pill:"Resistance") and (checkdm:$resistance_effect,"side effects","contains","xp penalty"))[
        (set: _xp_penalty_count to (count: $resistance_effect's "side effects", "xp penalty"))
        (set: $score_multiplier to (max:0,$score_multiplier - (_xp_penalty_count * 0.15)))
    ]
ps. There is no need to respond to this post
 
  • Like
Reactions: l1lym

Smallfrie

Active Member
Dec 25, 2018
740
256
No, it is working for me. I did the exact same setup and got 1.26x, and then it went up to 1.38x due to 4 hidden achievements.

You started by telling me the whole system is bad, and then you modified the game code, and then now you are getting some unexpected values, and now you are telling me things are reverted, but I have no way to verify the state of your game, so I'm not going to spend anymore time investigating this unless more people report it.
The dude is a bloody idiot in his version the score multiplier not post processed.:FacePalm:
 
Last edited:

l1lym

Aphrodite, creator of X-Change Life™
Game Developer
Jan 21, 2019
1,078
3,469
Don't really care if you want to fix the bugs in your code (lost enough time already...), but in case you want to fix the conflicting code...

original code
Code:
(set: _a to 5.5772, _b to -1.4407, _c to -8.9769)
(set: _score_multiplier_temp to _a + _b * (log: $total_stats - _c))
(set: $score_multiplier to (round: (100 * _score_multiplier_temp)) / 100)

(if:$club_timer > 0)[(set:$score_multiplier to $score_multiplier + 0.25)]
(if:$potion_shop_max_action_point_purchased is "true")[(set:$score_multiplier to $score_multiplier - 0.05)]
(if:(a:"cherry pop","swirlin surprise") contains $current_zipple)[(set:$score_multiplier to $score_multiplier + 0.25)]
(if:(is_fem:) and not ($handbag is 0))[(set:$score_multiplier to $score_multiplier + ($handbag_xp_bonus / 100))]

(if: (pill:"Resistance") and (checkdm:$resistance_effect,"side effects","contains","xp penalty"))[
        (set: _xp_penalty_count to (count: $resistance_effect's "side effects", "xp penalty"))
        (set: $score_multiplier to (max:0,$score_multiplier - (_xp_penalty_count * 0.15)))
    ]

(set: _level_cap_adjustment to $stats_unobtainable * 0.03)
(set: $score_multiplier to (round: (100 * $score_multiplier * (1 + _level_cap_adjustment))) / 100)
bug fixed
Code:
(set: _a to 5.5772, _b to -1.4407, _c to -8.9769)
(set: _score_multiplier_temp to _a + _b * (log: $total_stats - _c))
(set: _level_cap_adjustment to $stats_unobtainable * 0.03)
(set: $score_multiplier to (round: (100 * _score_multiplier_temp * (1 + _level_cap_adjustment))) / 100)

(if:$club_timer > 0)[(set:$score_multiplier to $score_multiplier + 0.25)]
(if:$potion_shop_max_action_point_purchased is "true")[(set:$score_multiplier to $score_multiplier - 0.05)]
(if:(a:"cherry pop","swirlin surprise") contains $current_zipple)[(set:$score_multiplier to $score_multiplier + 0.25)]
(if:(is_fem:) and not ($handbag is 0))[(set:$score_multiplier to $score_multiplier + ($handbag_xp_bonus / 100))]

(if: (pill:"Resistance") and (checkdm:$resistance_effect,"side effects","contains","xp penalty"))[
        (set: _xp_penalty_count to (count: $resistance_effect's "side effects", "xp penalty"))
        (set: $score_multiplier to (max:0,$score_multiplier - (_xp_penalty_count * 0.15)))
    ]
ps. There is no need to respond to this post
Thanks, I will test this new code as I see what you're getting at. I was not able to replicate any issues with the code as it is though, but the updated code does look like it makes sense.
 

l1lym

Aphrodite, creator of X-Change Life™
Game Developer
Jan 21, 2019
1,078
3,469
Never tried but no you can not... al be it you can set it at creation.
There is now a scene with the Dairy Queen pill where your name may get changed... though not to something you would want, muahahah, you can get given a cow name
 
  • Haha
Reactions: menatv

l1lym

Aphrodite, creator of X-Change Life™
Game Developer
Jan 21, 2019
1,078
3,469
The dude is a bloody idiot in his version the score multiplier not post processed.:FacePalm:
It's ok... some people are very sensitive to these numerical differences and I would rather weaponize that type of hyper attention to detail haha... if anyone spots a real issue I'm always happy to fix it. The only problem is when I can't actually replicate the issue - so save files always help.
 

Smallfrie

Active Member
Dec 25, 2018
740
256
It's ok... some people are very sensitive to these numerical differences and I would rather weaponize that type of hyper attention to detail haha... if anyone spots a real issue I'm always happy to fix it. The only problem is when I can't actually replicate the issue - so save files always help.
You are right.
In this case with a minimal post processing->round it to the x.xx format, that modified code can work and be tested.
Al be it is more like broken pride.
 

shelb

New Member
Nov 21, 2019
1
0
For some reason the Step dad maid spike hasn't happened to me yet it's been over a week and it still hasn't happened yet.
 

Smallfrie

Active Member
Dec 25, 2018
740
256
For some reason the Step dad maid spike hasn't happened to me yet it's been over a week and it still hasn't happened yet.
Make sure noncon is active, if you make 50$+ payment it does not happen, it is delayed if you are on a pill
 

Croak

Member
Jul 21, 2017
215
190
What the point of the secretary pill? Do I just keep writing down 5 letter words? How am I supposed to get more points per word? I don't get it
 
4.60 star(s) 94 Votes