From eb5b4ecd4a8ebd70732052788ac90e7b6f67629a Mon Sep 17 00:00:00 2001 From: bjarni Date: Tue, 29 May 2007 20:06:06 +0000 Subject: [PATCH] (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) --- src/autoreplace_cmd.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp index 6bcab4ca54..25759b20cc 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);