- Version
- v2.6
- Platform
- Windows
sorry for using AI to translate this,but I found what appears to be a bug with perkShotgunMessiahPartyStarter.
The current effect is:
<effect_group>
<requirement name="StatComparePercCurrentToMax" target="other" stat="Health" operation="GTE" value="1"/>
<passive_effect name="EntityDamage" operation="perc_add" level="1" value=".2" tags="perkBoomstick"/>
</effect_group>
This appears intended to give +20% shotgun damage against full-health targets.
After tracing the runtime behavior, the issue seems to be that the requirement is evaluated using a strict floating-point ratio:
(float)this.target.Health / this.target.Stats.Health.Max
and then compared directly against value="1".
In actual gameplay, even when a zombie is effectively at full health, the ratio is often slightly below 1.0 because Health and Max do not resolve to the same exact value. For example, I captured this runtime case:
stat=Health, op=GTE, value=1, invert=False,
target=zombieYoRadiated(id=264, class=zombieYoRadiated, hp=927),
health=927, max=927.8012, ratio=0.9991364,
self=ddr(id=171, class=playerFemale, hp=102),
other=zombieYoRadiated(id=264, class=zombieYoRadiated, hp=927)
So although the target is functionally “full health,” the actual comparison becomes:
0.9991364 >= 1
which fails.
The current effect is:
<effect_group>
<requirement name="StatComparePercCurrentToMax" target="other" stat="Health" operation="GTE" value="1"/>
<passive_effect name="EntityDamage" operation="perc_add" level="1" value=".2" tags="perkBoomstick"/>
</effect_group>
This appears intended to give +20% shotgun damage against full-health targets.
After tracing the runtime behavior, the issue seems to be that the requirement is evaluated using a strict floating-point ratio:
(float)this.target.Health / this.target.Stats.Health.Max
and then compared directly against value="1".
In actual gameplay, even when a zombie is effectively at full health, the ratio is often slightly below 1.0 because Health and Max do not resolve to the same exact value. For example, I captured this runtime case:
stat=Health, op=GTE, value=1, invert=False,
target=zombieYoRadiated(id=264, class=zombieYoRadiated, hp=927),
health=927, max=927.8012, ratio=0.9991364,
self=ddr(id=171, class=playerFemale, hp=102),
other=zombieYoRadiated(id=264, class=zombieYoRadiated, hp=927)
So although the target is functionally “full health,” the actual comparison becomes:
0.9991364 >= 1
which fails.
- Reproduction Steps
- 1. spawn a zombie
2. Hit the zombie with a shotgun and record the damage
3. Unlock perkShotgunMessiahPartyStarter
4. spawn another fresh zombie
5. Hit the zombie with a shotgun and record the damage
6. Compare the damage from the two shots.
- Link to Logs
- https://pastebin.com/GjCb36p4
- Link to Screenshot/Video
- https://youtu.be/vVycj0GpcAk