diff -r 8ce83caec236 -r 4c813650fe17 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Sat May 26 10:54:17 2018 -0400 +++ b/hedgewars/uGearsHandlersMess.pas Sun May 27 13:10:32 2018 -0400 @@ -6263,9 +6263,8 @@ end else if iter^.Kind = gtAirMine then begin - AddCI(iter); - iter^.Damage := 0; - iter^.State:= iter^.State or gstFrozen + ForcePlaceOnLand(hwRound(iter^.X)-16, hwRound(iter^.Y)-16, sprFrozenAirMine, 0, lfIce, $FFFFFFFF, false, false, false); + iter^.State:= gstFrozen or gstInvisible; end else // gtExplosives begin @@ -6279,6 +6278,7 @@ // FillRoundInLandWithIce(Target.X, Target.Y, iceRadius); SetAllHHToActive; Timer := iceWaitCollision; + Power:= GameTicks end; if (Timer = iceCollideWithWater) and ((GameTicks - Power) > groundFreezingTime div 2) then @@ -6338,13 +6338,17 @@ X:= HHGear^.X; Y:= HHGear^.Y end - else if CheckGearNear(Gear, gtAirMine, Gear^.Radius*2, Gear^.Radius*2) <> nil then + else begin - Target.X:= gX; - Target.Y:= gY; - X:= HHGear^.X; - Y:= HHGear^.Y - end; + iter:= CheckGearNear(Gear, gtAirMine, Gear^.Radius*2, Gear^.Radius*2); + if (iter <> nil) and (iter^.State <> gstFrozen) then + begin + Target.X:= gX; + Target.Y:= gY; + X:= HHGear^.X; + Y:= HHGear^.Y + end + end; if (gX > max(LAND_WIDTH,4096)*2) or (gX < -max(LAND_WIDTH,4096)) or (gY < -max(LAND_HEIGHT,4096)) or