(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:
		| @@ -3438,12 +3438,28 @@ static bool AiCheckAirportResources(TileIndex tile, const AiDefaultBlockData *p, | ||||
| static int AiFindBestDefaultAirportBlock(TileIndex tile, byte cargo, byte heli, CommandCost *cost) | ||||
| { | ||||
| 	const AiDefaultBlockData *p; | ||||
| 	uint i; | ||||
|  | ||||
| 	for (i = 0; (p = _airport_default_block_data[i]) != NULL; i++) { | ||||
| 		// If we are doing a helicopter service, avoid building | ||||
| 		// airports where they can't land. | ||||
| 		if (heli && !(GetAirport(p->attr)->flags & AirportFTAClass::HELICOPTERS)) continue; | ||||
| 	bool no_small = false; | ||||
|  | ||||
| 	if (!heli) { | ||||
| 		/* 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); | ||||
| 		if (CmdSucceeded(*cost) && AiCheckAirportResources(tile, p, cargo)) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 smatz
					smatz