|
@@ -3917,66 +3917,48 @@ static void AiBuildCompanyHQ(Player *p)
|
|
|
}
|
|
|
|
|
|
|
|
|
void AiDoGameLoop(Player *p)
|
|
|
{
|
|
|
_cur_ai_player = p;
|
|
|
|
|
|
if (p->bankrupt_asked != 0) {
|
|
|
AiHandleTakeover(p);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
// Ugly hack to make sure the service interval of the AI is good, not looking
|
|
|
// to the patch-setting
|
|
|
// Also, it takes into account the setting if the service-interval is in days
|
|
|
// or in %
|
|
|
_ai_service_interval = _patches.servint_ispercent?80:180;
|
|
|
|
|
|
if (IS_HUMAN_PLAYER(_current_player))
|
|
|
return;
|
|
|
|
|
|
AiAdjustLoan(p);
|
|
|
AiBuildCompanyHQ(p);
|
|
|
|
|
|
if (_opt.diff.competitor_speed == 4) {
|
|
|
/* ultraspeed */
|
|
|
_ai_actions[p->ai.state](p);
|
|
|
if (p->bankrupt_asked != 0)
|
|
|
return;
|
|
|
} else if (_opt.diff.competitor_speed != 3) {
|
|
|
p->ai.tick++;
|
|
|
if (!(p->ai.tick&1))
|
|
|
return;
|
|
|
if (_opt.diff.competitor_speed != 2) {
|
|
|
if (!(p->ai.tick&2))
|
|
|
return;
|
|
|
if (_opt.diff.competitor_speed == 0) {
|
|
|
if (!(p->ai.tick&4))
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
#if 0
|
|
|
{
|
|
|
static byte old_state = 99;
|
|
|
static bool hasdots = false;
|
|
|
char *_ai_state_names[]={
|
|
|
"AiCase0",
|
|
|
"AiCase1",
|
|
|
"AiStateVehLoop",
|
|
|
"AiStateCheckReplaceVehicle",
|
|
|
"AiStateDoReplaceVehicle",
|
|
|
"AiStateWantNewRoute",
|
|
|
"AiStateBuildDefaultRailBlocks",
|
|
|
"AiStateBuildRail",
|
|
|
"AiStateBuildRailVeh",
|
|
|
"AiStateDeleteRailBlocks",
|
|
|
"AiStateBuildDefaultRoadBlocks",
|
|
|
"AiStateBuildRoad",
|
|
|
"AiStateBuildRoadVehicles",
|
|
|
"AiStateDeleteRoadBlocks",
|
|
|
"AiStateAirportStuff",
|
|
|
"AiStateBuildDefaultAirportBlocks",
|
|
|
"AiStateBuildAircraftVehicles",
|
|
|
"AiStateCheckShipStuff",
|
|
|
"AiStateBuildDefaultShipBlocks",
|