mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-11 13:10:45 +00:00
(svn r9070) -Fix [FS#404]: if bribe failed and you didn't pick up cargo yet, you wouldn't ever be able to do so for a given station
This commit is contained in:
parent
6040e559ce
commit
8877d11815
@ -11,13 +11,14 @@
|
|||||||
#include "newgrf_station.h"
|
#include "newgrf_station.h"
|
||||||
|
|
||||||
static const StationID INVALID_STATION = 0xFFFF;
|
static const StationID INVALID_STATION = 0xFFFF;
|
||||||
|
static const byte INITIAL_STATION_RATING = 175;
|
||||||
|
|
||||||
struct GoodsEntry {
|
struct GoodsEntry {
|
||||||
GoodsEntry() :
|
GoodsEntry() :
|
||||||
waiting_acceptance(0),
|
waiting_acceptance(0),
|
||||||
unload_pending(0),
|
unload_pending(0),
|
||||||
days_since_pickup(0),
|
days_since_pickup(0),
|
||||||
rating(175),
|
rating(INITIAL_STATION_RATING),
|
||||||
enroute_from(INVALID_STATION),
|
enroute_from(INVALID_STATION),
|
||||||
enroute_from_xy(INVALID_TILE),
|
enroute_from_xy(INVALID_TILE),
|
||||||
last_speed(0),
|
last_speed(0),
|
||||||
|
@ -2210,6 +2210,12 @@ static void UpdateStationRating(Station *st)
|
|||||||
|
|
||||||
GoodsEntry *ge = st->goods;
|
GoodsEntry *ge = st->goods;
|
||||||
do {
|
do {
|
||||||
|
/* Slowly increase the rating back to his original level in the case we
|
||||||
|
* didn't deliver cargo yet to this station. This happens when a bribe
|
||||||
|
* failed while you didn't moved that cargo yet to a station. */
|
||||||
|
if (ge->enroute_from == INVALID_STATION && ge->rating < INITIAL_STATION_RATING)
|
||||||
|
ge->rating++;
|
||||||
|
/* Only change the rating if we are moving this cargo */
|
||||||
if (ge->enroute_from != INVALID_STATION) {
|
if (ge->enroute_from != INVALID_STATION) {
|
||||||
byte_inc_sat(&ge->enroute_time);
|
byte_inc_sat(&ge->enroute_time);
|
||||||
byte_inc_sat(&ge->days_since_pickup);
|
byte_inc_sat(&ge->days_since_pickup);
|
||||||
@ -2546,7 +2552,7 @@ void BuildOilRig(TileIndex tile)
|
|||||||
st->goods[j].days_since_pickup = 0;
|
st->goods[j].days_since_pickup = 0;
|
||||||
st->goods[j].enroute_from = INVALID_STATION;
|
st->goods[j].enroute_from = INVALID_STATION;
|
||||||
st->goods[j].enroute_from_xy = INVALID_TILE;
|
st->goods[j].enroute_from_xy = INVALID_TILE;
|
||||||
st->goods[j].rating = 175;
|
st->goods[j].rating = INITIAL_STATION_RATING;
|
||||||
st->goods[j].last_speed = 0;
|
st->goods[j].last_speed = 0;
|
||||||
st->goods[j].last_age = 255;
|
st->goods[j].last_age = 255;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user