--- a/src/ai/default/default.cpp Wed Jun 13 11:17:30 2007 +0000
+++ b/src/ai/default/default.cpp Wed Jun 13 11:45:14 2007 +0000
@@ -543,6 +543,7 @@
static void AiFindRandomIndustryRoute(FoundRoute *fr)
{
Industry* i;
+ const IndustrySpec *indsp;
uint32 r;
CargoID cargo;
@@ -556,8 +557,9 @@
if (i == NULL) return;
// pick a random produced cargo
- cargo = i->produced_cargo[0];
- if (r & 1 && i->produced_cargo[1] != CT_INVALID) cargo = i->produced_cargo[1];
+ indsp = GetIndustrySpec(i->type);
+ cargo = indsp->produced_cargo[0];
+ if (r & 1 && indsp->produced_cargo[1] != CT_INVALID) cargo = indsp->produced_cargo[1];
fr->cargo = cargo;
@@ -567,12 +569,16 @@
if (cargo != CT_GOODS && cargo != CT_FOOD) {
// pick a dest, and see if it can receive
Industry* i2 = AiFindRandomIndustry();
-
- if (i2 == NULL || i == i2 || (
- i2->accepts_cargo[0] != cargo &&
- i2->accepts_cargo[1] != cargo &&
- i2->accepts_cargo[2] != cargo)
- ) {
+ if (i2 == NULL) {
+ return;
+ }
+
+ indsp = GetIndustrySpec(i2->type);
+
+ if (i == i2 ||
+ (indsp->accepts_cargo[0] != cargo &&
+ indsp->accepts_cargo[1] != cargo &&
+ indsp->accepts_cargo[2] != cargo)) {
return;
}
@@ -664,9 +670,10 @@
}
} else {
const Industry* i = (const Industry*)fr->from;
-
- if (i->pct_transported[fr->cargo != i->produced_cargo[0]] > 0x99 ||
- i->total_production[fr->cargo != i->produced_cargo[0]] == 0) {
+ const IndustrySpec *indsp = GetIndustrySpec(i->type);
+
+ if (i->pct_transported[fr->cargo != indsp->produced_cargo[0]] > 0x99 ||
+ i->total_production[fr->cargo != indsp->produced_cargo[0]] == 0) {
return false;
}
}
@@ -1792,17 +1799,15 @@
p->ai.state_mode = -p->ai.state_mode;
}
} else if (CheckPlayerHasMoney(cost)) {
- int32 r;
// player has money, build it.
aib->cur_building_rule = rule;
- r = AiDoBuildDefaultRailTrack(
+ AiDoBuildDefaultRailTrack(
aib->use_tile,
_default_rail_track_data[rule]->data,
p->ai.railtype_to_use,
DC_EXEC | DC_NO_TOWN_RATING
);
- assert(!CmdFailed(r));
}
} while (++aib, --j);
}
@@ -2574,11 +2579,11 @@
if (p->mode == 2) {
if (IsTileType(c, MP_STREET) &&
GetRoadTileType(c) == ROAD_TILE_NORMAL &&
- (GetRoadBits(c) & p->attr) != 0) {
+ (GetRoadBits(c, ROADTYPE_ROAD) & p->attr) != 0) {
roadflag |= 2;
// all bits are already built?
- if ((GetRoadBits(c) & p->attr) == p->attr) continue;
+ if ((GetRoadBits(c, ROADTYPE_ROAD) & p->attr) == p->attr) continue;
}
ret = DoCommand(c, p->attr, 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD);