From 0feaee4124e3905eea2b214142eb7f91919d7738 Mon Sep 17 00:00:00 2001 From: belugas Date: Sat, 1 Dec 2007 14:04:16 +0000 Subject: (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 --- src/aircraft_cmd.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp index 96276611b..df79cb73d 100644 --- a/src/aircraft_cmd.cpp +++ b/src/aircraft_cmd.cpp @@ -1042,7 +1042,17 @@ static bool AircraftController(Vehicle *v) 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 */ -- cgit v1.2.3-70-g09d2