diff -r ba6648614cd7 -r 212036414957 hedgewars/uGearsHandlers.pas --- a/hedgewars/uGearsHandlers.pas Fri Aug 03 15:34:23 2018 -0400 +++ b/hedgewars/uGearsHandlers.pas Fri Aug 03 00:39:50 2018 +0200 @@ -27,7 +27,7 @@ implementation -uses SDLh, uFloat, uCollisions; +uses SDLh, uFloat, uCollisions, uVariables, uGearsUtils; @@ -95,6 +95,28 @@ end end; + // Handle world wrap and bounce edge manually + if (WorldEdge = weWrap) and + ((hwRound(Gear^.X) <= LongInt(leftX)) or (hwRound(Gear^.X) >= LongInt(rightX))) then + begin + LeftImpactTimer:= 150; + RightImpactTimer:= 150; + Gear^.WDTimer:= 4; + Gear^.Karma:= 2; + end + else if (WorldEdge = weBounce) and + (((hwRound(Gear^.X) - Gear^.Radius) < LongInt(leftX)) or ((hwRound(Gear^.X) + Gear^.Radius) > LongInt(rightX))) then + begin + if (hwRound(Gear^.X) - Gear^.Radius < LongInt(leftX)) then + LeftImpactTimer:= 333 + else + RightImpactTimer:= 333; + Gear^.Karma:= 1; + Gear^.WDTimer:= 0; + if (Gear^.Radius > 2) and (Gear^.dX.QWordValue > _0_001.QWordValue) then + AddBounceEffectForGear(Gear); + end; + cakeStep:= Gear^.WDTimer < 4 end;