Prevent character from being Dead on Arrival. #36489
Merged
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
SUMMARY: None
Purpose of change
In #36470 a fix to avoid undefined behavior resulted in leaving characters in a bad state upon character creation, namely their max HP was pinned to 0.
Describe the solution
Instead of skipping the code where undefined behavior was occurring (seriously, this is never a good idea!), add code to insure that the desired semantics are preserved even when max_hp for a body part happens to be 0.
Also initialized max_hp for all body parts to 1 instead of 0, and patched another location where max_hp was potentially 0 to instead floor it at 1.
Testing
The NPC behavior test no longer crashes.
You can now spawn a character without them immediately dying.
Additional context
Since this is one of the few classes of bugs that makes the game literally unplayable, I'm going to merge this once the test suite completes.