(svn r3058) The default AI may not build dual headed trains under certain circumstances.
authortron
Tue, 18 Oct 2005 07:01:00 +0000
changeset 2529 97c0b71ee7dd
parent 2528 c63eeb1899cb
child 2530 b8d5a5284024
(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.
ai/default/default.c
train_cmd.c
vehicle.h
--- a/ai/default/default.c	Mon Oct 17 22:49:15 2005 +0000
+++ b/ai/default/default.c	Tue Oct 18 07:01:00 2005 +0000
@@ -133,12 +133,16 @@
 		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;
--- a/train_cmd.c	Mon Oct 17 22:49:15 2005 +0000
+++ b/train_cmd.c	Tue Oct 18 07:01:00 2005 +0000
@@ -498,24 +498,6 @@
 	}
 }
 
-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 @@
 		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 @@
 			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
--- a/vehicle.h	Mon Oct 17 22:49:15 2005 +0000
+++ b/vehicle.h	Tue Oct 18 07:01:00 2005 +0000
@@ -447,7 +447,6 @@
 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];