changeset 7990:2dbd0a76860f draft

(svn r11546) -Fix[FS#1496]: If ever the air/heli port is suddenly not available while the "chopper" is descending, just go back into flying. The code should have been better written, but in respect of newgrf_port branch, i prefer minimalist intervention
author belugas <belugas@openttd.org>
date Sat, 01 Dec 2007 14:04:16 +0000
parents 4e0b8188984f
children 2b690afd01ca
files src/aircraft_cmd.cpp
diffstat 1 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/aircraft_cmd.cpp
+++ b/src/aircraft_cmd.cpp
@@ -1042,7 +1042,17 @@
 		tile = st->xy;
 
 		/* Jump into our "holding pattern" state machine if possible */
-	if (v->u.air.pos >= afc->nofelements) v->u.air.pos = v->u.air.previous_pos = AircraftGetEntryPoint(v, afc);
+		if (v->u.air.pos >= afc->nofelements) {
+			v->u.air.pos = v->u.air.previous_pos = AircraftGetEntryPoint(v, afc);
+		} else {
+			/* If not possible, just get out of here fast */
+			v->u.air.state = FLYING;
+			UpdateAircraftCache(v);
+			AircraftNextAirportPos_and_Order(v);
+			/* get aircraft back on running altitude */
+			SetAircraftPosition(v, v->x_pos, v->y_pos, GetAircraftFlyingAltitude(v));
+			return false;
+		}
 	}
 
 	/*  get airport moving data */