--- a/hedgewars/uGears.pas Tue Aug 09 21:31:49 2011 +0200
+++ b/hedgewars/uGears.pas Tue Aug 09 21:41:52 2011 +0200
@@ -207,6 +207,7 @@
FillChar(gear^, sizeof(TGear), 0);
gear^.X:= int2hwFloat(X);
gear^.Y:= int2hwFloat(Y);
+gear^.TargetX:= NoPointX;
gear^.Kind := Kind;
gear^.State:= State;
gear^.Active:= true;
@@ -275,6 +276,8 @@
gear^.Density:= _1;
end;
gtSnowball: begin
+ gear^.ImpactSound:= sndMudballImpact;
+ gear^.nImpactSounds:= 1;
gear^.Radius:= 4;
gear^.Elasticity:= _1;
gear^.Friction:= _1;
@@ -310,6 +313,9 @@
gear^.Elasticity:= _0_9;
gear^.Tag:= getRandom(32);
end;
+ gtSeduction: begin
+ gear^.Radius:= 250;
+ end;
gtShotgunShot: begin
gear^.Timer:= 900;
gear^.Radius:= 2
@@ -328,6 +334,8 @@
RopePoints.Count:= 0;
end;
gtMine: begin
+ gear^.ImpactSound:= sndMineImpact;
+ gear^.nImpactSounds:= 1;
gear^.Health:= 10;
gear^.State:= gear^.State or gstMoving;
gear^.Radius:= 2;
@@ -910,8 +918,15 @@
begin
dec(delay2);
- if ((delay2 mod cInactDelay) = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) then
+ 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
+ begin
+ CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstHHChooseTarget;
+ isCursorVisible := true
+ end;
CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and not gstAttacked;
+ end;
if delay2 = 0 then
begin
if (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear^.State and gstAttacked = 0) then SweepDirty;
@@ -1210,7 +1225,6 @@
vg: PVisualGear;
i, cnt: LongInt;
begin
-TargetPoint.X:= NoPointX;
if Radius > 4 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');
if Radius > 25 then KickFlakes(Radius, X, Y);
@@ -1587,7 +1601,6 @@
begin
gear^.dX := _0;
gear^.dY := _0;
- gear^.State := gstWait;
gear^.Damage := 0;
gear^.Health := gear^.Hedgehog^.InitialHealth;
gear^.Hedgehog^.Effects[hePoisoned] := false;
@@ -1604,6 +1617,7 @@
if gear <> nil then begin
RenderHealth(gear^.Hedgehog^);
ScriptCall('onGearResurrect', gear^.uid);
+ gear^.State := gstWait;
end;
RecountTeamHealth(tempTeam);
end;