diff -r 1998ff75321a -r d14adf1c7721 hedgewars/uGears.pas --- 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);