--- a/hedgewars/HHHandlers.inc Fri Sep 16 17:36:05 2011 +0200
+++ b/hedgewars/HHHandlers.inc Fri Sep 16 18:17:16 2011 +0200
@@ -53,7 +53,6 @@
HHGear^.Message:= HHGear^.Message and not gmSlot;
ammoidx:= 0;
if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0) or
- (TargetPoint.X <> NoPointX) or
((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or
((HHGear^.State and gstHHDriven) = 0) then exit;
ChangeAmmo:= true;
@@ -775,6 +774,11 @@
begin
if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then Gear^.dY:= _0;
Gear^.State:= Gear^.State or gstMoving;
+ if (CurrentHedgehog^.Gear = Gear)
+ and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then
+ begin
+ FollowGear:= Gear;
+ end;
if isUnderwater then Gear^.dY:= Gear^.dY + cGravity / _2
else
begin
@@ -1012,7 +1016,7 @@
////////////////////////////////////////////////////////////////////////////////
procedure doStepHedgehogFree(Gear: PGear);
-var prevState,i: Longword;
+var prevState: Longword;
begin
prevState:= Gear^.State;
@@ -1034,7 +1038,7 @@
PrvInactive:= false;
AllInactive:= false;
- if not Gear^.Hedgehog^.Team^.hasGone then
+ if (Gear^.State and gstHHGone) = 0 then
begin
Gear^.Hedgehog^.Effects[hePoisoned] := false;
if Gear^.Hedgehog^.Effects[heResurrectable] then begin
@@ -1048,21 +1052,8 @@
end
else
begin
- Gear^.State:= Gear^.State or gstHHGone;
Gear^.doStep:= @doStepHedgehogGone;
- with Gear^.Hedgehog^.Team^ do
- for i:= 0 to cMaxHHIndex do
- if Hedgehogs[i].GearHidden <> nil then
- begin
- RestoreHog(@Hedgehogs[i]);
- if Hedgehogs[i].Gear <> nil then
- begin
- Hedgehogs[i].Gear^.State:= Gear^.State or gstHHGone;
- Hedgehogs[i].Gear^.doStep:= @doStepHedgehogGone
- end
- end;
-
// Gone message
AddCaption(Format(GetEventString(eidGone), Gear^.Hedgehog^.Name), cWhiteColor, capgrpMessage);
end
@@ -1103,7 +1094,9 @@
else
begin
with Gear^.Hedgehog^ do
- if Team^.hasGone then TeamGoneEffect(Team^);
- doStepHedgehogDriven(Gear)
+ if Team^.hasGone then
+ TeamGoneEffect(Team^)
+ else
+ doStepHedgehogDriven(Gear)
end;
end;