changeset 18670:1d4ff78e6914 draft

(svn r23518) -Fix (r23124): [NewGRF] The refit cost callback wasn't called if only the subtype differed.
author michi_cc <michi_cc@openttd.org>
date Wed, 14 Dec 2011 22:38:15 +0000
parents 6df688ae093c
children 1859a47e3f5a
files src/vehicle_cmd.cpp
diffstat 1 files changed, 9 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/vehicle_cmd.cpp
+++ b/src/vehicle_cmd.cpp
@@ -228,7 +228,7 @@
 	}
 
 	*auto_refit_allowed = e->info.refit_cost == 0;
-	return e->info.refit_cost;
+	return (v->cargo_type != new_cid) ? e->info.refit_cost : 0;
 }
 
 /**
@@ -335,17 +335,15 @@
 		v->cargo_type = temp_cid;
 		v->cargo_subtype = temp_subtype;
 
-		if (new_cid != v->cargo_type) {
-			bool auto_refit_allowed;
-			CommandCost refit_cost = GetRefitCost(v, v->engine_type, new_cid, new_subtype, &auto_refit_allowed);
-			if (auto_refit && !auto_refit_allowed) {
-				/* Sorry, auto-refitting not allowed, subtract the cargo amount again from the total. */
-				total_capacity -= amount;
-				total_mail_capacity -= mail_capacity;
-				continue;
-			}
-			cost.AddCost(refit_cost);
+		bool auto_refit_allowed;
+		CommandCost refit_cost = GetRefitCost(v, v->engine_type, new_cid, new_subtype, &auto_refit_allowed);
+		if (auto_refit && !auto_refit_allowed) {
+			/* Sorry, auto-refitting not allowed, subtract the cargo amount again from the total. */
+			total_capacity -= amount;
+			total_mail_capacity -= mail_capacity;
+			continue;
 		}
+		cost.AddCost(refit_cost);
 
 		if (flags & DC_EXEC) {
 			v->cargo.Truncate((v->cargo_type == new_cid) ? amount : 0);