hedgewars/GSHandlers.inc
changeset 517 ba560c17c24c
parent 516 f682e134ac2e
child 519 981df6f6e2a9
--- a/hedgewars/GSHandlers.inc	Mon May 21 15:42:21 2007 +0000
+++ b/hedgewars/GSHandlers.inc	Mon May 21 18:07:25 2007 +0000
@@ -643,6 +643,7 @@
 Gear^.Y:= Gear^.Y - Gear^.dY;
 Gear^.Elasticity:= Gear^.Elasticity + _1;
 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
+DeleteCI(HHGear);
 if (HHGear^.State and gstFalling) <> 0 then
    if TestCollisionYwithGear(HHGear, 1) then
       begin
@@ -662,8 +663,8 @@
       ty:= _0;
       while tt > _20 do
             begin
-            if  TestCollisionXwithXYShift(Gear, tx, hwRound(ty), hwSign(Gear^.dX))
-             or TestCollisionYwithXYShift(Gear, hwRound(tx), hwRound(ty), hwSign(Gear^.dY)) then
+            if  TestCollisionXwithXYShift(Gear, tx, hwRound(ty), -hwSign(Gear^.dX))
+             or TestCollisionYwithXYShift(Gear, hwRound(tx), hwRound(ty), -hwSign(Gear^.dY)) then
                 begin
                 Gear^.X:= Gear^.X + tx;
                 Gear^.Y:= Gear^.Y + ty;
@@ -672,8 +673,8 @@
                 with HHGear^ do State:= State and not gstAttacking;
                 tt:= _0
                 end;
-            tx:= tx + Gear^.dX - Gear^.dX;
-            ty:= ty + Gear^.dY - Gear^.dY;
+            tx:= tx + Gear^.dX + Gear^.dX;
+            ty:= ty + Gear^.dY + Gear^.dY;
             tt:= tt - _2;
             end;
       end;
@@ -987,6 +988,7 @@
 begin
 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
 HHGear^.State:= HHGear^.State and not gstAttacking;
+DeleteCI(HHGear);
 
 inc(Gear^.Timer);