prevent attempting to teleport in mid-air during inf attack
authornemo
Sun, 07 Aug 2011 11:52:06 -0400
changeset 5511 13a222b00a9d
parent 5509 3b344484883e
child 5513 79dd457193e6
prevent attempting to teleport in mid-air during inf attack
hedgewars/HHHandlers.inc
hedgewars/uGears.pas
--- a/hedgewars/HHHandlers.inc	Sun Aug 07 11:23:27 2011 -0400
+++ b/hedgewars/HHHandlers.inc	Sun Aug 07 11:52:06 2011 -0400
@@ -376,8 +376,7 @@
         if Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0 then
             begin
             newGear^.TargetX:= TargetPoint.X;
-            newGear^.TargetY:= TargetPoint.Y;
-            TargetPoint.X := NoPointX
+            newGear^.TargetY:= TargetPoint.Y
             end;
 
         // Clear FollowGear if using on a rope/parachute/saucer etc so focus stays with the hog's movement
@@ -422,7 +421,8 @@
            AfterAttack;
            end
         end else Message:= Message and not gmAttack;
-     end
+     end;
+     TargetPoint.X := NoPointX
 end;
 
 procedure AfterAttack;
--- a/hedgewars/uGears.pas	Sun Aug 07 11:23:27 2011 -0400
+++ b/hedgewars/uGears.pas	Sun Aug 07 11:52:06 2011 -0400
@@ -917,11 +917,12 @@
 
         if ((delay2 mod cInactDelay) = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and not CurrentHedgehog^.Unplaced then
             begin
-            if (CurrentHedgehog^.Gear^.State and gstAttacked <> 0) and (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0) then
+            if (CurrentHedgehog^.Gear^.State and (gstAttacked or gstMoving) = gstAttacked) and (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget <> 0) then
                 begin
                 CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstHHChooseTarget;
                 isCursorVisible := true
                 end;
+            if (CurrentHedgehog^.Gear^.State and gstMoving = 0) or (Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget = 0) then
             CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstAttacked;
             end;
         if delay2 = 0 then