summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2007-05-29 20:06:06 +0000
committerbjarni <bjarni@openttd.org>2007-05-29 20:06:06 +0000
commit6ce4211ad54da87c117208689c60abbac821ac57 (patch)
treecdcf65539689eb9111781acd630ca2ca9ca463b3
parent0b3ad0ceb9c9ee330eb9020ddd41303172e5d217 (diff)
downloadopenttd-6ce4211ad54da87c117208689c60abbac821ac57.tar.xz
(svn r9981) -Fix: fixed a rare event that could cause autoreplace to run out of money and generate an error (spotted by elmex and UndernotBuilder)
This happened if the new engine was a dualheaded engine and there was money to replace and refit the front, but not the rear It also adds the cost of refitting the rear end of dualheaded engines to the cost animations (display only)
-rw-r--r--src/autoreplace_cmd.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp
index 6bcab4ca5..25759b20c 100644
--- a/src/autoreplace_cmd.cpp
+++ b/src/autoreplace_cmd.cpp
@@ -171,7 +171,12 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags, int32 total_cost)
return cost;
}
- if (replacement_cargo_type != CT_NO_REFIT) cost += GetRefitCost(new_engine_type); // add refit cost
+ if (replacement_cargo_type != CT_NO_REFIT) {
+ /* add refit cost */
+ int32 refit_cost = GetRefitCost(new_engine_type);
+ if (old_v->type == VEH_TRAIN && IsMultiheaded(old_v)) refit_cost += refit_cost; // pay for both ends
+ cost += refit_cost;
+ }
if (flags & DC_EXEC) {
new_v = GetVehicle(_new_vehicle_id);