(svn r2948) -Fix: the old AI needs a special flag that triggers all kind of special

abilities you really don't want to know about (free bridges, etc..)
       I removed this flag some revisions ago, but the Aircraft part
       depends on it, so I re-enabled it again..
This commit is contained in:
truelight 2005-09-13 12:19:27 +00:00
parent 42813c5426
commit 2e87864d0b
7 changed files with 15 additions and 13 deletions

View File

@ -126,8 +126,12 @@ void AI_RunTick(byte player)
if (_patches.ainew_active)
AiNewDoGameLoop(p);
else
else {
/* Enable all kind of cheats the old AI needs in order to operate correctly... */
_is_old_ai_player = true;
AiDoGameLoop(p);
_is_old_ai_player = false;
}
}

View File

@ -253,10 +253,9 @@ int32 CmdBuildAircraft(int x, int y, uint32 flags, uint32 p1, uint32 p2)
_new_aircraft_id = v->index;
// the AI doesn't click on a tile to build airplanes, so the below code will
// the old AI doesn't click on a tile to build airplanes, so the below code will
// never work. Therefore just assume the AI's planes always come from Hangar0
// On hold for NewAI
v->u.air.pos = (!_patches.ainew_active && _is_ai_player) ? 0:MAX_ELEMENTS;
v->u.air.pos = _is_old_ai_player ? 0 : MAX_ELEMENTS;
/* When we click on hangar we know the tile (it is in var 'tile')it is on. By that we know
its position in the array of depots the airport has.....we can search

View File

@ -247,8 +247,7 @@ static uint32 CheckRailSlope(uint tileh, TrackBits rail_bits, TrackBits existing
)) { // partly up
if (existing != 0) {
return 0;
} else if (!_patches.build_on_slopes ||
(_is_ai_player && !_patches.ainew_active)) {
} else if (!_patches.build_on_slopes || _is_old_ai_player) {
return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
} else {
return _price.terraform;
@ -679,7 +678,7 @@ int32 CmdBuildTrainDepot(int x, int y, uint32 flags, uint32 p1, uint32 p2)
*/
if (tileh != 0 && (
(!_patches.ainew_active && _is_ai_player) ||
_is_old_ai_player ||
!_patches.build_on_slopes ||
IsSteepTileh(tileh) ||
!CanBuildDepotByTileh(p2, tileh)

View File

@ -457,7 +457,7 @@ do_clear:;
cost = CheckRoadSlope(ti.tileh, &pieces, existing);
if (CmdFailed(cost)) return_cmd_error(STR_1800_LAND_SLOPED_IN_WRONG_DIRECTION);
if (cost && (!_patches.build_on_slopes || (!_patches.ainew_active && _is_ai_player)))
if (cost && (!_patches.build_on_slopes || _is_old_ai_player))
return CMD_ERROR;
if (!(ti.type == MP_STREET && (ti.map5 & 0xF0) == 0)) {

View File

@ -779,7 +779,7 @@ int32 CheckFlatLandBelow(TileIndex tile, uint w, uint h, uint flags, uint invali
b) the build_on_slopes switch is disabled
*/
if (IsSteepTileh(tileh) ||
(((!_patches.ainew_active && _is_ai_player) || !_patches.build_on_slopes)
((_is_old_ai_player || !_patches.build_on_slopes)
&& tileh != 0)) {
_error_message = STR_0007_FLAT_LAND_REQUIRED;
@ -1009,7 +1009,7 @@ int32 CmdBuildRailroadStation(int x, int y, uint32 flags, uint32 p1, uint32 p2)
if (st->train_tile != 0) {
// check if we want to expanding an already existing station?
if ((!_patches.ainew_active && _is_ai_player) || !_patches.join_stations)
if (_is_old_ai_player || !_patches.join_stations)
return_cmd_error(STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD);
if (!CanExpandRailroadStation(st, finalvalues, direction))
return CMD_ERROR;

View File

@ -265,7 +265,7 @@ int32 CmdBuildBridge(int x, int y, uint32 flags, uint32 p1, uint32 p2)
// Towns are not allowed to use bridges on slopes.
allow_on_slopes = ((!_is_ai_player || _patches.ainew_active)
allow_on_slopes = (!_is_old_ai_player
&& _current_player != OWNER_TOWN && _patches.build_on_slopes);
/* Try and clear the start landscape */
@ -410,7 +410,7 @@ not_valid_below:;
bridge_len += 2; // begin and end tiles/ramps
if (_current_player < MAX_PLAYERS && !(_is_ai_player && !_patches.ainew_active))
if (_current_player < MAX_PLAYERS && !_is_old_ai_player)
bridge_len = CalcBridgeLenCostFactor(bridge_len);
cost += ((int64)bridge_len * _price.build_bridge * b->price) >> 8;

View File

@ -252,7 +252,7 @@ VARDEF byte _cur_month;
VARDEF uint32 _frame_counter;
VARDEF bool _is_ai_player; // current player is an AI player? - Can be removed if new AI is done
VARDEF bool _is_old_ai_player; // current player is an oldAI player? (enables a lot of cheats..)
VARDEF bool _do_autosave;
VARDEF int _autosave_ctr;