--- a/hedgewars/uCommandHandlers.pas Sun Dec 14 20:11:36 2014 +0100
+++ b/hedgewars/uCommandHandlers.pas Sun Dec 14 21:54:54 2014 +0100
@@ -323,6 +323,7 @@
end;
procedure chAttack_p(var s: shortstring);
+var inbtwnTrgtAttks: Boolean;
begin
s:= s; // avoid compiler hint
if CheckNoTeamOrHH then
@@ -333,7 +334,9 @@
AddFileLog('/+attack: hedgehog''s Gear^.State = '+inttostr(State));
if ((State and gstHHDriven) <> 0) then
begin
- FollowGear:= CurrentHedgehog^.Gear;
+ inbtwnTrgtAttks:= ((GameFlags and gfInfAttack) <> 0) and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) <> 0);
+ if (not inbtwnTrgtAttks) then
+ FollowGear:= CurrentHedgehog^.Gear;
if not isExternalSource then
SendIPC(_S'A');
Message:= Message or (gmAttack and InputMask);
--- a/hedgewars/uWorld.pas Sun Dec 14 20:11:36 2014 +0100
+++ b/hedgewars/uWorld.pas Sun Dec 14 21:54:54 2014 +0100
@@ -1857,7 +1857,7 @@
uCursor.updatePosition();
{$ENDIF}
z:= round(200/zoom);
-inbtwnTrgtAttks := (CurrentHedgehog <> nil) and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) <> 0) and ((GameFlags and gfInfAttack) <> 0);
+inbtwnTrgtAttks := ((GameFlags and gfInfAttack) <> 0) and (CurrentHedgehog <> nil) and ((CurrentHedgehog^.Gear = nil) or (CurrentHedgehog^.Gear <> FollowGear)) and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) <> 0);
if autoCameraOn and (not PlacingHogs) and (FollowGear <> nil) and (not isCursorVisible) and (not bShowAmmoMenu) and (not fastUntilLag) and (not inbtwnTrgtAttks) then
if ((abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y)) > 4) then
begin