Prevent AddMultiDamage execution with zero/negative damage #1103
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.
Purpose
The
AddMultiDamagefunction can be skipped entirely when no damage will be applied. While some existing cases already avoid calling it with zero damage (e.g.FireBullets3, shield hit avoidsTraceAttack->AddMultiDamagecalls), there are other scenarios where it is still invoked with adamagevalue of0or less (e.g., hitting a player with shotgun pellets while they have an active Shield).These unnecessary calls not only waste processing but can also have unintended side effects for APIs implemented by developers that rely on
TakeDamagebeing called only when damage is actually applied. This PR ensures that the function only executes whenflDamage > 0.Approach
Added a simple check at the start of
AddMultiDamageto immediately return if theflDamageparameter is0or less.