From b81948a14c138517f6a227dac5b71f0b2facb33c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Thu, 6 Jan 2022 20:16:35 +0000 Subject: Fix damage wraparound if very high damage (#11872) --- src/tool.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/tool.cpp') 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}; -- cgit v1.2.3