Changeset - r2529:6f097297b1e8
[Not reviewed]
master
0 3 0
tron - 19 years ago 2005-10-18 07:01:00
tron@openttd.org
(svn r3058) The default AI may not build dual headed trains under certain circumstances.
Simplify this check by testing the rail vehicle info flags instead of passing a global variable around.
Note: This is not exactly the original behaviour, because the Lev4 was always allowed to be built, but i guess that was a glitch.
3 files changed with 7 insertions and 25 deletions:
0 comments (0 inline, 0 general)
ai/default/default.c
Show inline comments
 
@@ -133,12 +133,16 @@ static int AiChooseTrainToBuild(byte rai
 
		const RailVehicleInfo *rvi = RailVehInfo(i);
 
		const Engine* e = GetEngine(i);
 

	
 
		if (e->railtype != railtype || rvi->flags & RVI_WAGON
 
		    || !HASBIT(e->player_avail, _current_player) || e->reliability < 0x8A3D)
 
		if (e->railtype != railtype ||
 
				rvi->flags & RVI_WAGON ||
 
				(rvi->flags & RVI_MULTIHEAD && flag & 1) ||
 
				!HASBIT(e->player_avail, _current_player) ||
 
				e->reliability < 0x8A3D) {
 
			continue;
 
		}
 

	
 
		ret = DoCommandByTile(tile, i, 0, 0, CMD_BUILD_RAIL_VEHICLE);
 
		if (!CmdFailed(ret) && (!(_cmd_build_rail_veh_var1&1) || !(flag&1)) && ret <= money &&
 
		if (!CmdFailed(ret) && ret <= money &&
 
				_cmd_build_rail_veh_score >= best_veh_score) {
 
			best_veh_score = _cmd_build_rail_veh_score;
 
			best_veh_index = i;
train_cmd.c
Show inline comments
 
@@ -498,24 +498,6 @@ static void NormalizeTrainVehInDepot(Veh
 
	}
 
}
 

	
 
static const byte _railveh_unk1[] = {
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 1, 1, 0, 0, 0,
 
	0, 0, 0, 0, 1, 0, 1, 0,
 
	0, 1, 1, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 1,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0, 0, 0, 0, 0,
 
	0, 0, 0, 0,
 
};
 

	
 
static const byte _railveh_score[] = {
 
	1, 4, 7, 19, 20, 30, 31, 19,
 
	20, 21, 22, 10, 11, 30, 31, 32,
 
@@ -590,8 +572,6 @@ int32 CmdBuildRailVehicle(int x, int y, 
 
		if (!IsTileOwner(tile, _current_player)) return CMD_ERROR;
 
	}
 

	
 
	_cmd_build_rail_veh_var1 = 0;
 

	
 
	SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
 

	
 
	rvi = RailVehInfo(p1);
 
@@ -676,7 +656,6 @@ int32 CmdBuildRailVehicle(int x, int y, 
 
			InvalidateWindow(WC_COMPANY, v->owner);
 
		}
 
	}
 
	_cmd_build_rail_veh_var1 = _railveh_unk1[p1];
 
	_cmd_build_rail_veh_score = _railveh_score[p1];
 

	
 
	InvalidateWindow(WC_REPLACE_VEHICLE, VEH_Train); // updates the replace Train window
vehicle.h
Show inline comments
 
@@ -447,7 +447,6 @@ VARDEF VehicleID _new_ship_id;
 
VARDEF VehicleID _new_roadveh_id;
 
VARDEF uint16 _aircraft_refit_capacity;
 
VARDEF byte _cmd_build_rail_veh_score;
 
VARDEF byte _cmd_build_rail_veh_var1;
 

	
 
// for each player, for each vehicle type, keep a list of the vehicles.
 
//VARDEF Vehicle *_vehicle_arr[8][4];
0 comments (0 inline, 0 general)