summaryrefslogtreecommitdiff
path: root/src/station_cmd.cpp
diff options
context:
space:
mode:
authorcelestar <celestar@openttd.org>2007-03-29 13:52:34 +0000
committercelestar <celestar@openttd.org>2007-03-29 13:52:34 +0000
commit4ad4f1f3f15a49954ced9ac2e53e8840811dadf8 (patch)
tree37ea5878b75e7b5f0193b94c6d3c2aa3e1e9b498 /src/station_cmd.cpp
parent34272ad2011ea4e4ba690170338f3a138eae7281 (diff)
downloadopenttd-4ad4f1f3f15a49954ced9ac2e53e8840811dadf8.tar.xz
(svn r9524) -Fix(FS#640,r8755): Implemented a "dummy" State Machine for stations who got their airport removed while there were still aircraft within the State Machine (and thus caused asserts)
Diffstat (limited to 'src/station_cmd.cpp')
-rw-r--r--src/station_cmd.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index 6341fd7df..00f77d44f 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -1600,6 +1600,13 @@ static int32 RemoveAirport(Station *st, uint32 flags)
int32 cost = w * h * _price.remove_airport;
+ Vehicle *v;
+ FOR_ALL_VEHICLES(v) {
+ if (!(v->type == VEH_AIRCRAFT && IsNormalAircraft(v))) continue;
+
+ if (v->u.air.targetairport == st->index && v->u.air.state != FLYING) return CMD_ERROR;
+ }
+
BEGIN_TILE_LOOP(tile_cur, w, h, tile) {
if (!EnsureNoVehicle(tile_cur)) return CMD_ERROR;