diff -r 0a52c1dd9400 -r 2fd51591b260 hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Fri Oct 11 13:06:04 2013 -0400 +++ b/hedgewars/uGearsHedgehog.pas Sun Oct 13 13:14:32 2013 -0400 @@ -1275,10 +1275,20 @@ //////////////////////////////////////////////////////////////////////////////// procedure doStepHedgehog(Gear: PGear); +var tX: hwFloat; begin -if WorldWrap(Gear) and (WorldEdge <> weBounce) and - (Gear = CurrentHedgehog^.Gear) and (CurAmmoGear <> nil) and (CurAmmoGear^.Kind =gtRope) then - CurAmmoGear^.PortalCounter:= 1; +tX:= Gear^.X; +if WorldWrap(Gear) then + begin + if (WorldEdge <> weBounce) and (Gear = CurrentHedgehog^.Gear) and + (CurAmmoGear <> nil) and (CurAmmoGear^.Kind =gtRope) then + CurAmmoGear^.PortalCounter:= 1; + if (WorldEdge = weWrap) and (TestCollisionXwithGear(Gear, 1) or TestCollisionXwithGear(Gear, -1)) then + begin + Gear^.X:= tX; + Gear^.dX.isNegative:= (hwRound(tX) > leftX+Gear^.Radius*2) + end + end; CheckSum:= CheckSum xor Gear^.Hedgehog^.BotLevel; if (Gear^.Message and gmDestroy) <> 0 then