# HG changeset patch # User nemo # Date 1384451242 18000 # Node ID fc849dd48ae6aa1f484b2656ad57a46f9ef2a2b1 # Parent cb9f9b79d427f71c63c270d261e07dd12fef73ac Make birdy fly away if hog gear is deleted. diff -r cb9f9b79d427 -r fc849dd48ae6 hedgewars/uGearsHandlersMess.pas --- a/hedgewars/uGearsHandlersMess.pas Wed Nov 13 09:35:52 2013 -0500 +++ b/hedgewars/uGearsHandlersMess.pas Thu Nov 14 12:47:22 2013 -0500 @@ -3555,7 +3555,13 @@ HHGear := Gear^.Hedgehog^.Gear; if HHGear = nil then begin - DeleteGear(Gear); + Gear^.Timer := 0; + Gear^.State := Gear^.State or gstAnimation or gstTmpFlag; + Gear^.Timer := 0; + Gear^.doStep := @doStepBirdyDisappear; + CurAmmoGear := nil; + isCursorVisible := false; + AfterAttack; exit end; @@ -3657,14 +3663,21 @@ HHGear: PGear; begin if Gear^.Timer > 0 then - dec(Gear^.Timer, 1) - else if Gear^.Hedgehog^.Gear = nil then - begin - DeleteGear(Gear); + dec(Gear^.Timer, 1); + + HHGear := Gear^.Hedgehog^.Gear; + if HHGear = nil then + begin + Gear^.Timer := 0; + Gear^.State := Gear^.State or gstAnimation or gstTmpFlag; + Gear^.Timer := 0; + Gear^.doStep := @doStepBirdyDisappear; + CurAmmoGear := nil; + isCursorVisible := false; AfterAttack; exit end; - HHGear := Gear^.Hedgehog^.Gear; + HHGear^.Message := HHGear^.Message and (not (gmUp or gmPrecise or gmLeft or gmRight)); if abs(hwRound(HHGear^.Y - Gear^.Y)) > 32 then begin