diff -r b4bc05237c06 -r 36379e6abcdd hedgewars/uGears.pas --- a/hedgewars/uGears.pas Thu Nov 23 19:48:39 2006 +0000 +++ b/hedgewars/uGears.pas Thu Nov 23 20:10:42 2006 +0000 @@ -112,7 +112,9 @@ doStepActionTimer, doStepActionTimer, doStepActionTimer, - doStepParachute + doStepParachute, + doStepAirAttack, + doStepAirBomb ); function AddGear(X, Y: integer; Kind: TGearType; State: Longword; const dX: Double=0.0; dY: Double=0.0; Timer: LongWord=0): PGear; @@ -221,6 +223,9 @@ Result.Radius:= 15; Result.Tag:= Y end; + gtAirBomb: begin + Result.Radius:= 3; + end; end; if GearsList = nil then GearsList:= Result else begin @@ -244,10 +249,12 @@ exit end else begin + if Gear.Y >= cWaterLine then + AddGear(Round(Gear.X), Round(Gear.Y), gtHealthTag, max(Gear.Damage, Gear.Health)).Hedgehog:= Gear.Hedgehog; team:= PHedgehog(Gear.Hedgehog).Team; - PHedgehog(Gear.Hedgehog).Gear:= nil; if CurrentTeam.Hedgehogs[CurrentTeam.CurrHedgehog].Gear = Gear then FreeActionsList; // to avoid ThinkThread on drawned gear + PHedgehog(Gear.Hedgehog).Gear:= nil; RecountTeamHealth(team); end; {$IFDEF DEBUGFILE}AddFileLog('DeleteGear: handle = '+inttostr(integer(Gear)));{$ENDIF} @@ -517,6 +524,7 @@ gtClusterBomb: DrawSprite(sprClusterBomb, Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, trunc(Gear.DirAngle), Surface); gtCluster: DrawSprite(sprClusterParticle, Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy, 0, Surface); gtFlame: DrawSprite(sprFlame, Round(Gear.X) - 8 + WorldDx, Round(Gear.Y) - 8 + WorldDy,(GameTicks div 128 + Gear.Angle) mod 8, Surface); + gtAirBomb: DrawSprite(sprAirBomb , Round(Gear.X) - 16 + WorldDx, Round(Gear.Y) - 16 + WorldDy, DxDy2Angle32(Gear.dY, Gear.dX), Surface); end; Gear:= Gear.NextGear end;