diff -r 2c0811bbc1d9 -r fb2dea5c98f1 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Thu May 12 19:33:30 2016 +0200 +++ b/hedgewars/uGearsHandlersMess.pas Thu May 12 19:45:26 2016 +0200 @@ -4396,6 +4396,7 @@ continue; if iterator^.Kind = gtDuck then + // Make duck go into “falling” mode again iterator^.Pos:= 0; isbullet:= (iterator^.Kind in [gtShotgunShot, gtDEagleShot, gtSniperRifleShot, gtSineGunShot]); @@ -6388,11 +6389,11 @@ Gear^.Y:= Gear^.Y + Gear^.dY; end; - // Mirrored duck - // Pos 1 or 2: Duck is on water (not Sea world edge) + // Handle speed if Gear^.Pos = 1 then Gear^.dX:= cWindSpeed * Gear^.Damage else if Gear^.Pos = 2 then + // Mirrored duck (after bounce edge bounce) Gear^.dX:= -cWindSpeed * Gear^.Damage else if Gear^.Pos = 3 then Gear^.dY:= cWindSpeed * Gear^.Damage @@ -6431,8 +6432,8 @@ if Gear^.Pos <> 0 then // Manual collision check required because we don't use onStepFallingGear in this case CheckCollision(Gear); - // Explode duck if (Gear^.Timer = 0) or ((Gear^.State and gstCollision) <> 0) then + // Explode duck begin doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Boom, Gear^.Hedgehog, EXPLAutoSound); PlaySound(sndDuckDie);