# HG changeset patch # User alfadur # Date 1542063402 -10800 # Node ID 1bdce164eb72129894cfc994a19cb233b21bee50 # Parent 3c36a4e66c8255e4a522ac183d368163ce23f90f stun airmines on shove diff -r 3c36a4e66c82 -r 1bdce164eb72 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Mon Nov 12 20:30:06 2018 +0300 +++ b/hedgewars/uGearsHandlersMess.pas Tue Nov 13 01:56:42 2018 +0300 @@ -2090,6 +2090,16 @@ if (TurnTimeLeft = 0) and ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) > _0_02.QWordValue) then AllInactive := false; + //Disable targeting while the airmine is stunned + if Gear^.Tag <> 0 then + begin + Gear^.Hedgehog:= nil; + dec(Gear^.FlightTime); + if Gear^.FlightTime = 0 then + Gear^.Tag:= 0; + exit + end; + if (TurnTimeLeft = 0) or (Gear^.Angle = 0) or (Gear^.Hedgehog = nil) or (Gear^.Hedgehog^.Gear = nil) then begin Gear^.Hedgehog:= nil; diff -r 3c36a4e66c82 -r 1bdce164eb72 hedgewars/uGearsList.pas --- a/hedgewars/uGearsList.pas Mon Nov 12 20:30:06 2018 +0300 +++ b/hedgewars/uGearsList.pas Tue Nov 13 01:56:42 2018 +0300 @@ -447,6 +447,7 @@ gear^.Angle:= 175; // Radius at which air bombs will start "seeking". $FFFFFFFF = unlimited. check is skipped. gear^.Power:= cMaxWindSpeed.QWordValue div 2; // hwFloat converted. 1/2 g default. defines the "seek" speed when a gear is in range. gear^.Pos:= cMaxWindSpeed.QWordValue * 3 div 2; // air friction. slows it down when not hitting stuff + gear^.Tag:= 0; if gear^.Timer = 0 then begin if cMinesTime < 0 then diff -r 3c36a4e66c82 -r 1bdce164eb72 hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Mon Nov 12 20:30:06 2018 +0300 +++ b/hedgewars/uGearsRender.pas Tue Nov 13 01:56:42 2018 +0300 @@ -1339,6 +1339,8 @@ gtAirMine: if (Gear^.State and gstFrozen <> 0) then DrawSprite(sprFrozenAirMine, x-16, y-16, 15) + else if (Gear^.Tag <> 0) then + DrawSprite(sprAirMine, x-16, y-16, 16 + ((RealTicks div 50 + Gear^.Uid) mod 16)) else if (Gear^.State and gstTmpFlag = 0) then // mine is inactive begin if (Gear^.State and gstTmpFlag = 0) then Tint(150,150,150,255); diff -r 3c36a4e66c82 -r 1bdce164eb72 hedgewars/uGearsUtils.pas --- a/hedgewars/uGearsUtils.pas Mon Nov 12 20:30:06 2018 +0300 +++ b/hedgewars/uGearsUtils.pas Tue Nov 13 01:56:42 2018 +0300 @@ -1242,7 +1242,13 @@ t^.State:= t^.State or gstMoving; if t^.Kind = gtKnife then t^.State:= t^.State and (not gstCollision); t^.Active:= true; - FollowGear:= t + FollowGear:= t; + + if t^.Kind = gtAirmine then + begin + t^.Tag:= 1; + t^.FlightTime:= 5000; + end end end; gtGrave: begin @@ -1388,7 +1394,13 @@ State:= ord(sprStar) end end; - ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg, dsShove) + ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg, dsShove); + + if Gear^.Kind = gtAirmine then + begin + Gear^.Tag:= 1; + Gear^.FlightTime:= 5000; + end end else Gear^.State:= Gear^.State or gstWinner; diff -r 3c36a4e66c82 -r 1bdce164eb72 share/hedgewars/Data/Graphics/AirMine.png Binary file share/hedgewars/Data/Graphics/AirMine.png has changed