forked from mirror/OpenTTD
(svn r77) -Fix: [1010788] AI service interval bug (tnx truesatan)
-Add: AI overrides service interval to 180 days -Fix: AI hanged when all vehicles were disabled in Patch menu
This commit is contained in:
16
ai.c
16
ai.c
@@ -301,6 +301,8 @@ static void AiHandleReplaceTrain(Player *p)
|
||||
veh = _new_train_id;
|
||||
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
|
||||
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_TRAIN);
|
||||
// Force the service interval to 180 days.. else things can go very wrong :p
|
||||
DoCommandByTile(0, veh, 180, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -327,6 +329,8 @@ static void AiHandleReplaceRoadVeh(Player *p)
|
||||
veh = _new_roadveh_id;
|
||||
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
|
||||
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
|
||||
// Force the service interval to 180 days.. else things can go very wrong :p
|
||||
DoCommandByTile(0, veh, 180, DC_EXEC, CMD_CHANGE_ROADVEH_SERVICE_INT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -353,6 +357,8 @@ static void AiHandleReplaceAircraft(Player *p)
|
||||
veh = _new_aircraft_id;
|
||||
AiRestoreVehicleOrders(&_vehicles[veh], orderbak);
|
||||
DoCommandByTile(0, veh, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
|
||||
// Force the service interval to 180 days.. else things can go very wrong :p
|
||||
DoCommandByTile(0, veh, 180, DC_EXEC, CMD_CHANGE_AIRCRAFT_SERVICE_INT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1492,6 +1498,10 @@ static void AiStateWantNewRoute(Player *p)
|
||||
for(;;) {
|
||||
r = (uint16)Random();
|
||||
|
||||
if (_patches.ai_disable_veh_train && _patches.ai_disable_veh_roadveh &&
|
||||
_patches.ai_disable_veh_aircraft && _patches.ai_disable_veh_ship)
|
||||
return;
|
||||
|
||||
if (r < 0x7626) {
|
||||
if (_patches.ai_disable_veh_train) continue;
|
||||
AiWantTrainRoute(p);
|
||||
@@ -2422,6 +2432,8 @@ handle_nocash:
|
||||
}
|
||||
|
||||
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_TRAIN);
|
||||
// Force the service interval to 180 days.. else things can go very wrong :p
|
||||
DoCommandByTile(0, loco_id, 180, DC_EXEC, CMD_CHANGE_TRAIN_SERVICE_INT);
|
||||
|
||||
if (p->ai.num_want_fullload != 0)
|
||||
p->ai.num_want_fullload--;
|
||||
@@ -3167,6 +3179,8 @@ static void AiStateBuildRoadVehicles(Player *p)
|
||||
}
|
||||
|
||||
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_ROADVEH);
|
||||
// Force the service interval to 180 days.. else things can go very wrong :p
|
||||
DoCommandByTile(0, loco_id, 180, DC_EXEC, CMD_CHANGE_ROADVEH_SERVICE_INT);
|
||||
|
||||
if (p->ai.num_want_fullload != 0)
|
||||
p->ai.num_want_fullload--;
|
||||
@@ -3473,6 +3487,8 @@ static void AiStateBuildAircraftVehicles(Player *p)
|
||||
}
|
||||
|
||||
DoCommandByTile(0, loco_id, 0, DC_EXEC, CMD_START_STOP_AIRCRAFT);
|
||||
// Force the service interval to 180 days.. else things can go very wrong :p
|
||||
DoCommandByTile(0, loco_id, 180, DC_EXEC, CMD_CHANGE_AIRCRAFT_SERVICE_INT);
|
||||
|
||||
if (p->ai.num_want_fullload != 0)
|
||||
p->ai.num_want_fullload--;
|
||||
|
Reference in New Issue
Block a user