diff -r f2a3d861b23a -r cb5f04cc9d76 hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Mon Mar 29 20:27:54 2010 +0000 +++ b/hedgewars/GSHandlers.inc Mon Mar 29 20:32:35 2010 +0000 @@ -2796,7 +2796,7 @@ //////////////////////////////////////////////////////////////////////////////// procedure doStepBirdyFly(Gear: PGear); var HHGear: PGear; - fuel: LongInt; + fuel, i: LongInt; move: hwFloat; begin HHGear:= CurrentHedgehog^.Gear; @@ -2831,10 +2831,11 @@ end; if Gear^.Health < 0 then Gear^.Health:= 0; -if (GameTicks and $3F) = 0 then +if (GameTicks and $7F) = 0 then begin - if Gear^.Health < 500 then - AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFeather); + if Gear^.Health < 1000 then + for i:= ((1000-Gear^.Health) div 250) downto 0 do + AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtFeather); if Gear^.Tex <> nil then FreeTexture(Gear^.Tex); Gear^.Tex:= RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(round(Gear^.Health / 20)) + '%', cWhiteColor, fntSmall) end; @@ -2873,21 +2874,12 @@ Active:= true; State:= State or gstMoving end; - if Gear^.Tag = -1 then + Gear^.State:= Gear^.State or gstAnimation or gstTmpFlag; + if HHGear^.dY < _0 then begin - Gear^.dX:= Gear^.X + int2hwFloat(LAND_WIDTH + 1024); - Gear^.dY:= int2hwFloat(256); - Gear^.X:= int2hwFloat(-LAND_WIDTH -1024); - Gear^.Y:= Gear^.Y + int2hwFloat(-256); - end - else - begin - Gear^.dX:= Gear^.X - int2hwFloat(LAND_WIDTH + 1024); - Gear^.dY:= int2hwFloat(256); - Gear^.X:= int2hwFloat(+LAND_WIDTH +1024); - Gear^.Y:= Gear^.Y + int2hwFloat(-256); + Gear^.dX:= HHGear^.dX; + Gear^.dY:= HHGear^.dY; end; - Gear^.State:= Gear^.State or gstAnimation or gstTmpFlag; Gear^.Timer:= 0; Gear^.doStep:= @doStepBirdyDisappear; CurAmmoGear:= nil;