mirror of https://github.com/OpenTTD/OpenTTD
(svn r11929) -Fix (r9981)[FS#1624]: [autoreplace] fixed a case where a single headed locomotive caused an assert when being replaced to a dualheaded one
This triggered if the player had enough money to replace and refit one of them but not enough to refit the last one as wellrelease/0.6
parent
2f6ee3a4a1
commit
e91230415d
|
@ -21,6 +21,7 @@
|
||||||
#include "functions.h"
|
#include "functions.h"
|
||||||
#include "variables.h"
|
#include "variables.h"
|
||||||
#include "autoreplace_func.h"
|
#include "autoreplace_func.h"
|
||||||
|
#include "articulated_vehicles.h"
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
||||||
|
@ -175,7 +176,10 @@ static CommandCost ReplaceVehicle(Vehicle **w, byte flags, Money total_cost)
|
||||||
if (replacement_cargo_type != CT_NO_REFIT) {
|
if (replacement_cargo_type != CT_NO_REFIT) {
|
||||||
/* add refit cost */
|
/* add refit cost */
|
||||||
CommandCost refit_cost = GetRefitCost(new_engine_type);
|
CommandCost refit_cost = GetRefitCost(new_engine_type);
|
||||||
if (old_v->type == VEH_TRAIN && IsMultiheaded(old_v)) refit_cost.AddCost(refit_cost); // pay for both ends
|
if (old_v->type == VEH_TRAIN && RailVehInfo(new_engine_type)->railveh_type == RAILVEH_MULTIHEAD) {
|
||||||
|
/* Since it's a dualheaded engine we have to pay once more because the rear end is being refitted too. */
|
||||||
|
refit_cost.AddCost(refit_cost);
|
||||||
|
}
|
||||||
cost.AddCost(refit_cost);
|
cost.AddCost(refit_cost);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue