hedgewars/uGears.pas
branchhedgeroid
changeset 6328 d14adf1c7721
parent 6299 fa5bc796261d
child 6380 1ff5ad1d771b
--- a/hedgewars/uGears.pas	Sat Nov 12 15:48:55 2011 +0100
+++ b/hedgewars/uGears.pas	Sat Nov 12 17:06:49 2011 +0100
@@ -320,7 +320,7 @@
                 gear^.Timer:= 500;
                 gear^.RenderTimer:= true;
                 gear^.Elasticity:= _0_9;
-                gear^.Tag:= getRandom(32);
+                gear^.Tag:= 0;
                 end;
    gtSeduction: begin
                 gear^.Radius:= 250;
@@ -1290,7 +1290,7 @@
                 gtMelonPiece,
                 gtGrenade,
                 gtClusterBomb,
-                gtCluster,
+            //    gtCluster, too game breaking I think
                 gtSMine,
                 gtCase,
                 gtTarget,
@@ -1314,8 +1314,17 @@
                             if ((Mask and EXPLDoNotTouchAny) = 0) and (((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog)) then
                                 begin
                                 DeleteCI(Gear);
-                                Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - fX);
-                                Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - fY);
+                                if Gear^.Kind <> gtHedgehog then
+                                    begin
+                                    Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - fX)/Gear^.Density;
+                                    Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - fY)/Gear^.Density;
+                                    end
+                                else
+                                    begin
+                                    Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - fX);
+                                    Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - fY);
+                                    end;
+
                                 Gear^.State:= (Gear^.State or gstMoving) and (not gstLoser);
                                 if not Gear^.Invulnerable then
                                     Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner);