diff options
author | Wuzzy <wuzzy2@mail.ru> | 2022-01-06 20:16:35 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-06 21:16:35 +0100 |
commit | b81948a14c138517f6a227dac5b71f0b2facb33c (patch) | |
tree | ffa09a47f4d5ad118b165d889baff5f122e2ec2f /src/tool.cpp | |
parent | 85da2e284b8091062e1b53ad5a703aae6cbc3a3c (diff) | |
download | minetest-b81948a14c138517f6a227dac5b71f0b2facb33c.tar.gz minetest-b81948a14c138517f6a227dac5b71f0b2facb33c.tar.bz2 minetest-b81948a14c138517f6a227dac5b71f0b2facb33c.zip |
Fix damage wraparound if very high damage (#11872)
Diffstat (limited to 'src/tool.cpp')
-rw-r--r-- | src/tool.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/tool.cpp b/src/tool.cpp index b0749286d..075c6b3c5 100644 --- a/src/tool.cpp +++ b/src/tool.cpp @@ -306,7 +306,7 @@ HitParams getHitParams(const ItemGroupList &armor_groups, const ToolCapabilities *tp, float time_from_last_punch, u16 initial_wear) { - s16 damage = 0; + s32 damage = 0; float result_wear = 0.0f; float punch_interval_multiplier = rangelim(time_from_last_punch / tp->full_punch_interval, 0.0f, 1.0f); @@ -320,6 +320,8 @@ HitParams getHitParams(const ItemGroupList &armor_groups, result_wear = calculateResultWear(tp->punch_attack_uses, initial_wear); result_wear *= punch_interval_multiplier; } + // Keep damage in sane bounds for simplicity + damage = rangelim(damage, -U16_MAX, U16_MAX); u32 wear_i = (u32) result_wear; return {damage, wear_i}; |