mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-17 21:25:40 +00:00
(svn r13217) -Fix: old AI was building small airports in years when they were not available in original game, causing small planes and helis everywhere
This commit is contained in:
parent
11e80b2794
commit
baeb6e5395
@ -3438,12 +3438,28 @@ static bool AiCheckAirportResources(TileIndex tile, const AiDefaultBlockData *p,
|
|||||||
static int AiFindBestDefaultAirportBlock(TileIndex tile, byte cargo, byte heli, CommandCost *cost)
|
static int AiFindBestDefaultAirportBlock(TileIndex tile, byte cargo, byte heli, CommandCost *cost)
|
||||||
{
|
{
|
||||||
const AiDefaultBlockData *p;
|
const AiDefaultBlockData *p;
|
||||||
uint i;
|
|
||||||
|
|
||||||
for (i = 0; (p = _airport_default_block_data[i]) != NULL; i++) {
|
bool no_small = false;
|
||||||
// If we are doing a helicopter service, avoid building
|
|
||||||
// airports where they can't land.
|
if (!heli) {
|
||||||
if (heli && !(GetAirport(p->attr)->flags & AirportFTAClass::HELICOPTERS)) continue;
|
/* do not build small airport if we have large available and we are not building heli route */
|
||||||
|
uint valid = GetValidAirports();
|
||||||
|
for (uint i = 0; (p = _airport_default_block_data[i]) != NULL; i++) {
|
||||||
|
if (HasBit(valid, p->attr) && !(GetAirport(p->attr)->flags & AirportFTAClass::SHORT_STRIP)) {
|
||||||
|
no_small = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint i = 0; (p = _airport_default_block_data[i]) != NULL; i++) {
|
||||||
|
uint flags = GetAirport(p->attr)->flags;
|
||||||
|
/* If we are doing a helicopter service, avoid building airports where they can't land */
|
||||||
|
if (heli && !(flags & AirportFTAClass::HELICOPTERS)) continue;
|
||||||
|
/* Similiar with aircraft ... */
|
||||||
|
if (!heli && !(flags & AirportFTAClass::AIRPLANES)) continue;
|
||||||
|
/* Do not build small airport if we prefer large */
|
||||||
|
if (no_small && (flags & AirportFTAClass::SHORT_STRIP)) continue;
|
||||||
|
|
||||||
*cost = AiDoBuildDefaultAirportBlock(tile, p, 0);
|
*cost = AiDoBuildDefaultAirportBlock(tile, p, 0);
|
||||||
if (CmdSucceeded(*cost) && AiCheckAirportResources(tile, p, cargo))
|
if (CmdSucceeded(*cost) && AiCheckAirportResources(tile, p, cargo))
|
||||||
|
Loading…
Reference in New Issue
Block a user