# HG changeset patch
# User smxx
# Date 1268599693 0
# Node ID b90745d873321ec21791b951820509922cb7de50
# Parent  7ae3067546f2977143a848aaca9c1a6cbe889c01
Engine:
* Small tweaks to Birdy code
* Added (commented) Birdy spawn code

diff -r 7ae3067546f2 -r b90745d87332 hedgewars/GSHandlers.inc
--- a/hedgewars/GSHandlers.inc	Sun Mar 14 20:46:29 2010 +0000
+++ b/hedgewars/GSHandlers.inc	Sun Mar 14 20:48:13 2010 +0000
@@ -2718,7 +2718,7 @@
     fuel: LongInt;
     move: hwFloat;
 begin
-HHGear:=PHedgehog(Gear^.Hedgehog)^.Gear;
+HHGear:= CurrentHedgehog^.Gear;
 
 move:= _0_1;
 fuel:= 50;
@@ -2790,21 +2790,22 @@
 procedure doStepBirdyDescend(Gear: PGear);
 var HHGear: PGear;
 begin
-HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
 AllInactive:= false;
 if Gear^.Timer > 0 then
     dec(Gear^.Timer, 1)
 else if CurrentHedgehog = nil then
     begin
     Gear^.doStep:= @doStepBirdyVanish;
+    exit
     end;
+HHGear:= CurrentHedgehog^.Gear;
 HHGear^.Message:= HHGear^.Message and not (gm_Up or gm_Precise or gm_Left or gm_Right);
 if abs(hwRound(HHGear^.Y - Gear^.Y)) > 32 then
     begin
-    if Gear^.Pos = 0 then
+    if Gear^.Timer = 0 then
         Gear^.Y:= Gear^.Y + _0_1
     end
-else
+else if Gear^.Timer = 0 then
     begin
     Gear^.doStep:= @doStepBirdyFly;
     HHGear^.dY:= -_0_2
@@ -2816,7 +2817,14 @@
 var HHGear: PGear;
 begin
 Gear^.doStep:= @doStepBirdyDescend;
-HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
+if CurrentHedgehog = nil then
+    begin
+    DeleteGear(Gear);
+    exit
+    end;
+
+HHGear:= CurrentHedgehog^.Gear;
+
 if HHGear^.dX.isNegative then
     Gear^.Tag:= -1
 else
diff -r 7ae3067546f2 -r b90745d87332 hedgewars/HHHandlers.inc
--- a/hedgewars/HHHandlers.inc	Sun Mar 14 20:46:29 2010 +0000
+++ b/hedgewars/HHHandlers.inc	Sun Mar 14 20:48:13 2010 +0000
@@ -192,6 +192,7 @@
                         amDrill: FollowGear:= AddGear(hwRound(X), hwRound(Y), gtDrill, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
                       amBallgun: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtBallgun,  0, xx * _0_5, yy * _0_5, 0);
                     amJetpack: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtJetpack, 0, _0, _0, 0);
+                    //amBirdy: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y) - 120, gtBirdy, 0, _0, _0, 0);
                       amLowGravity: begin
                                     PlaySound(sndLowGravity);
                                     cGravity:= cMaxWindSpeed / 2