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.
For context, refer to #7433 (reply in thread) and the comments that follow.
Because monster order has changed between vanilla and the current version of DevilutionX, we can't rely on the fact that monster
toHit
was already initialized. Otherwise, we will end up using the wrong monster'stoHit
value if we load a vanilla savegame.It seems the reason we don't use the value from the save file is because we don't want to inherit erroneous values from vanilla due to the bug that applies difficulty bonuses twice. In that case, it's better to compute the value on the fly, like with
Monster::level()
.However, we can't entirely do away with the
toHit
variable because a Golem's hit chance depends on the player character's stats at the time the spell was cast. I had to keep the variable but renamed it togolemToHit
to avoid naming conflicts. ThetoHit()
function simply returns thegolemToHit
value if the monster is a golem.