mirror of
https://github.com/OpenTTD/OpenTTD
synced 2026-01-20 10:52:41 +01:00
@@ -1125,6 +1125,15 @@ static bool AircraftController(Aircraft *v)
|
||||
}
|
||||
|
||||
if (amd.flags.Test(AirportMovingDataFlag::Land)) {
|
||||
if (st->airport.blocks.Test(AirportBlock::Zeppeliner)) {
|
||||
/* Zeppeliner blocked the runway, abort landing */
|
||||
v->state = FLYING;
|
||||
UpdateAircraftCache(v);
|
||||
SetAircraftPosition(v, gp.x, gp.y, GetAircraftFlightLevel(v));
|
||||
v->pos = v->previous_pos;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (st->airport.tile == INVALID_TILE) {
|
||||
/* Airport has been removed, abort the landing procedure */
|
||||
v->state = FLYING;
|
||||
@@ -1782,6 +1791,11 @@ static void AirportClearBlock(const Aircraft *v, const AirportFTAClass *apc)
|
||||
if (apc->layout[v->previous_pos].blocks != apc->layout[v->pos].blocks) {
|
||||
Station *st = Station::Get(v->targetairport);
|
||||
|
||||
if (st->airport.blocks.Test(AirportBlock::Zeppeliner) &&
|
||||
apc->layout[v->previous_pos].blocks == AirportBlock::RunwayIn) {
|
||||
return;
|
||||
}
|
||||
|
||||
st->airport.blocks.Reset(apc->layout[v->previous_pos].blocks);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user