fix METABOLISM enchantment multiply: -1
causing the game to hang
#72255
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
None
Purpose of change
Fix #72242
weariness_level
usesweary_threshold
, which usesbase_bmr
, which usesmetabolic_rate_base
, which useshunger_rate
, and this one may be make zero using METABOLISM enchantment; since all of stuff that happens between these two are multiplicative only, it can carry zero value all way back toweariness_level
calculations, which then stuck in the loop infinitely, trying to subtract zerothreshold
from whateverweariness
isDescribe the solution
Put failsafe code, that checks if
weary_threshold
is zero, and if true, simply return zero, bypassing entire loopAdded test, that checks the trait, that turns off METABOLIC, to prevent regressions of this type in the future
Describe alternatives you've considered
Return some another value
Make BMI not being able to be zero
Testing
Compiled, casted
Stones' Fortitude
lvl 20, the game do not stop respondingAdditional context
I have no clue how the entire chain works ngl, not even sure BMI = 0 makes any sense