# HG changeset patch # User alfadur # Date 1540606666 -10800 # Node ID 31bdb759d98bc5a1dc7c71415dd564441a3cf082 # Parent 97e48a6c2535ceb5c962fa58bbd8e66bcbb6652d prevent firepunch from hitting the same gear multiple times diff -r 97e48a6c2535 -r 31bdb759d98b hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Sat Oct 27 03:36:25 2018 +0200 +++ b/hedgewars/uGearsHandlersMess.pas Sat Oct 27 05:17:46 2018 +0300 @@ -2823,6 +2823,7 @@ if not (HHGear^.dY.isNegative) or (Gear^.Timer = 0) then begin HHGear^.State := HHGear^.State or gstMoving; + ClearHitOrder(); DeleteGear(Gear); AfterAttack; exit @@ -2845,6 +2846,8 @@ HHGear^.dY := - _0_3; + ClearHitOrder(); + Gear^.X := HHGear^.X; Gear^.dX := SignAs(_0_45, Gear^.dX); Gear^.dY := - _0_9; diff -r 97e48a6c2535 -r 31bdb759d98b hedgewars/uGearsUtils.pas --- a/hedgewars/uGearsUtils.pas Sat Oct 27 03:36:25 2018 +0200 +++ b/hedgewars/uGearsUtils.pas Sat Oct 27 05:17:46 2018 +0300 @@ -1320,7 +1320,7 @@ begin dec(i); Gear:= t^.ar[i]; - if (Ammo^.Kind in [gtDEagleShot, gtSniperRifleShot, gtMinigunBullet]) + if (Ammo^.Kind in [gtDEagleShot, gtSniperRifleShot, gtMinigunBullet, gtFirePunch]) and (((Ammo^.Data <> nil) and (PGear(Ammo^.Data) = Gear)) or (not UpdateHitOrder(Gear, Ammo^.WDTimer))) then continue;