(svn r3663) - Fix: [Multistop] Check the status of the destination road stop instead of a station's first road stop. This only has effect with road vehicle queuing disabled.

pull/155/head
peter1138 19 years ago
parent f3b50cdd35
commit ea59cc4a26

@ -983,17 +983,12 @@ static int RoadFindPathToDest(Vehicle *v, TileIndex tile, int enterdir)
/* Road depot */ /* Road depot */
bitmask |= _road_veh_fp_ax_or[GB(_m[tile].m5, 0, 2)]; bitmask |= _road_veh_fp_ax_or[GB(_m[tile].m5, 0, 2)];
} }
} else if (IsTileType(tile, MP_STATION)) { } else if (IsTileType(tile, MP_STATION) && IsRoadStationTile(tile)) {
if (IsTileOwner(tile, OWNER_NONE) || IsTileOwner(tile, v->owner)) { if (IsTileOwner(tile, v->owner)) {
/* Our station */ /* Our station */
const Station* st = GetStation(_m[tile].m2); const RoadStop *rs = GetRoadStopByTile(tile, (v->cargo_type == CT_PASSENGERS) ? RS_BUS : RS_TRUCK);
byte val = _m[tile].m5; if (rs != NULL && (_patches.roadveh_queue || GB(rs->status, 0, 2) != 0)) {
if (v->cargo_type != CT_PASSENGERS) { bitmask |= _road_veh_fp_ax_or[GetRoadStationDir(tile)];
if (IS_BYTE_INSIDE(val, 0x43, 0x47) && (_patches.roadveh_queue || st->truck_stops->status&3))
bitmask |= _road_veh_fp_ax_or[(val-0x43)&3];
} else {
if (IS_BYTE_INSIDE(val, 0x47, 0x4B) && (_patches.roadveh_queue || st->bus_stops->status&3))
bitmask |= _road_veh_fp_ax_or[(val-0x47)&3];
} }
} }
} }

Loading…
Cancel
Save