changeset 6261:a2ab35efe1ab draft

(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
author truelight <truelight@openttd.org>
date Thu, 08 Mar 2007 20:50:27 +0000
parents c0de6f270ae9
children a457647cd27d
files src/station.h src/station_cmd.cpp
diffstat 2 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/station.h
+++ b/src/station.h
@@ -11,13 +11,14 @@
 #include "newgrf_station.h"
 
 static const StationID INVALID_STATION = 0xFFFF;
+static const byte INITIAL_STATION_RATING = 175;
 
 struct GoodsEntry {
 	GoodsEntry() :
 		waiting_acceptance(0),
 		unload_pending(0),
 		days_since_pickup(0),
-		rating(175),
+		rating(INITIAL_STATION_RATING),
 		enroute_from(INVALID_STATION),
 		enroute_from_xy(INVALID_TILE),
 		last_speed(0),
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2210,6 +2210,12 @@
 
 	GoodsEntry *ge = st->goods;
 	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) {
 			byte_inc_sat(&ge->enroute_time);
 			byte_inc_sat(&ge->days_since_pickup);
@@ -2546,7 +2552,7 @@
 		st->goods[j].days_since_pickup = 0;
 		st->goods[j].enroute_from = INVALID_STATION;
 		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_age = 255;
 	}