mirror of https://github.com/OpenTTD/OpenTTD
(svn r2953) - Fix: [ 1257766 ] Cannot make ships go to an oil platform (oilrig has no station). While it is still possible that oilrigs end up without a station, it is only the case where no more stations can be built at all
parent
db31fe8e15
commit
7164ff86f9
|
@ -2886,53 +2886,56 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, int type, uint amount)
|
||||||
|
|
||||||
void BuildOilRig(TileIndex tile)
|
void BuildOilRig(TileIndex tile)
|
||||||
{
|
{
|
||||||
Station *st;
|
|
||||||
int j;
|
int j;
|
||||||
|
Station *st = AllocateStation();
|
||||||
|
|
||||||
FOR_ALL_STATIONS(st) {
|
if (st == NULL) {
|
||||||
if (st->xy == 0) {
|
DEBUG(misc, 0) ("Couldn't allocate station for oilrig at %#X, reverting to oilrig only...", tile);
|
||||||
st->town = ClosestTownFromTile(tile, (uint)-1);
|
return;
|
||||||
st->sign.width_1 = 0;
|
|
||||||
if (!GenerateStationName(st, tile, 2))
|
|
||||||
return;
|
|
||||||
|
|
||||||
SetTileType(tile, MP_STATION);
|
|
||||||
_m[tile].m5 = 0x4B;
|
|
||||||
SetTileOwner(tile, OWNER_NONE);
|
|
||||||
_m[tile].m3 = 0;
|
|
||||||
_m[tile].m4 = 0;
|
|
||||||
_m[tile].m2 = st->index;
|
|
||||||
|
|
||||||
st->owner = OWNER_NONE;
|
|
||||||
st->airport_flags = 0;
|
|
||||||
st->airport_type = AT_OILRIG;
|
|
||||||
st->xy = tile;
|
|
||||||
st->bus_stops = NULL;
|
|
||||||
st->truck_stops = NULL;
|
|
||||||
st->airport_tile = tile;
|
|
||||||
st->dock_tile = tile;
|
|
||||||
st->train_tile = 0;
|
|
||||||
st->had_vehicle_of_type = 0;
|
|
||||||
st->time_since_load = 255;
|
|
||||||
st->time_since_unload = 255;
|
|
||||||
st->delete_ctr = 0;
|
|
||||||
st->last_vehicle = INVALID_VEHICLE;
|
|
||||||
st->facilities = FACIL_AIRPORT | FACIL_DOCK;
|
|
||||||
st->build_date = _date;
|
|
||||||
for(j=0; j!=NUM_CARGO; j++) {
|
|
||||||
st->goods[j].waiting_acceptance = 0;
|
|
||||||
st->goods[j].days_since_pickup = 0;
|
|
||||||
st->goods[j].enroute_from = INVALID_STATION;
|
|
||||||
st->goods[j].rating = 175;
|
|
||||||
st->goods[j].last_speed = 0;
|
|
||||||
st->goods[j].last_age = 255;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateStationVirtCoordDirty(st);
|
|
||||||
UpdateStationAcceptance(st, false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (!GenerateStationName(st, tile, 2)) {
|
||||||
|
DEBUG(misc, 0) ("Couldn't allocate station-name for oilrig at %#X, reverting to oilrig only...", tile);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
st->town = ClosestTownFromTile(tile, (uint)-1);
|
||||||
|
st->sign.width_1 = 0;
|
||||||
|
|
||||||
|
SetTileType(tile, MP_STATION);
|
||||||
|
_m[tile].m5 = 0x4B;
|
||||||
|
SetTileOwner(tile, OWNER_NONE);
|
||||||
|
_m[tile].m3 = 0;
|
||||||
|
_m[tile].m4 = 0;
|
||||||
|
_m[tile].m2 = st->index;
|
||||||
|
|
||||||
|
st->owner = OWNER_NONE;
|
||||||
|
st->airport_flags = 0;
|
||||||
|
st->airport_type = AT_OILRIG;
|
||||||
|
st->xy = tile;
|
||||||
|
st->bus_stops = NULL;
|
||||||
|
st->truck_stops = NULL;
|
||||||
|
st->airport_tile = tile;
|
||||||
|
st->dock_tile = tile;
|
||||||
|
st->train_tile = 0;
|
||||||
|
st->had_vehicle_of_type = 0;
|
||||||
|
st->time_since_load = 255;
|
||||||
|
st->time_since_unload = 255;
|
||||||
|
st->delete_ctr = 0;
|
||||||
|
st->last_vehicle = INVALID_VEHICLE;
|
||||||
|
st->facilities = FACIL_AIRPORT | FACIL_DOCK;
|
||||||
|
st->build_date = _date;
|
||||||
|
|
||||||
|
for (j = 0; j != NUM_CARGO; j++) {
|
||||||
|
st->goods[j].waiting_acceptance = 0;
|
||||||
|
st->goods[j].days_since_pickup = 0;
|
||||||
|
st->goods[j].enroute_from = INVALID_STATION;
|
||||||
|
st->goods[j].rating = 175;
|
||||||
|
st->goods[j].last_speed = 0;
|
||||||
|
st->goods[j].last_age = 255;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateStationVirtCoordDirty(st);
|
||||||
|
UpdateStationAcceptance(st, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeleteOilRig(TileIndex tile)
|
void DeleteOilRig(TileIndex tile)
|
||||||
|
|
Loading…
Reference in New Issue