hedgewars/uCollisions.pas
changeset 517 ba560c17c24c
parent 514 fb8ba88a83c3
child 521 bc8fd78d7598
--- a/hedgewars/uCollisions.pas	Mon May 21 15:42:21 2007 +0000
+++ b/hedgewars/uCollisions.pas	Mon May 21 18:07:25 2007 +0000
@@ -191,7 +191,7 @@
    end;
 TestCollisionXKick:= false;
 
-if flag then
+if flag and (Gear^.dX > cHHKick) then
    begin
    if Count = 0 then exit;
    mx:= hwRound(Gear^.X);
@@ -201,7 +201,8 @@
     with cinfos[i] do
       if (Gear <> cGear) and
          (sqr(mx - x) + sqr(my - y) <= sqr(Radius + Gear^.Radius)) and
-         ((mx > x) xor (Dir > 0)) then  // FIXME: Check Gear.Kind
+         ((mx > x) xor (Dir > 0)) then
+         if (cinfos[i].cGear^.Kind in [gtHedgehog, gtMine]) then
              begin
              Gear^.dX:= Gear^.dX {* _0_6};
              Gear^.dY:= Gear^.dY {* _0_6};
@@ -214,7 +215,7 @@
                   end;
              DeleteCI(cinfos[i].cGear);
              exit
-             end
+             end else exit(true)
    end
 end;
 
@@ -240,7 +241,7 @@
    end;
 TestCollisionYKick:= false;
 
-if flag then
+if flag and (Gear^.dX > cHHKick) then
    begin
    if Count = 0 then exit;
    mx:= hwRound(Gear^.X);
@@ -251,9 +252,10 @@
       if (Gear <> cGear) and
          (sqr(mx - x) + sqr(my - y) <= sqr(Radius + Gear^.Radius)) and
          ((my > y) xor (Dir > 0)) then
+         if (cinfos[i].cGear^.Kind in [gtHedgehog, gtMine]) then
              begin
-             Gear^.dX:= Gear^.dX * _0_6;
-             Gear^.dY:= Gear^.dY * _0_6;
+             Gear^.dX:= Gear^.dX {* _0_6};
+             Gear^.dY:= Gear^.dY {* _0_6};
              with cinfos[i].cGear^ do
                   begin
                   dX:= Gear^.dX {* _1_5};
@@ -263,7 +265,7 @@
                   end;
              DeleteCI(cinfos[i].cGear);
              exit
-             end
+             end else exit(true)
    end
 end;