diff --git a/src/tbtr_template_vehicle_func.cpp b/src/tbtr_template_vehicle_func.cpp index d17e0de059..a8f8e97771 100644 --- a/src/tbtr_template_vehicle_func.cpp +++ b/src/tbtr_template_vehicle_func.cpp @@ -175,15 +175,8 @@ void SetupTemplateVehicleFromVirtual(TemplateVehicle *tmp, TemplateVehicle *prev // create a full TemplateVehicle based train according to a virtual train TemplateVehicle* TemplateVehicleFromVirtualTrain(Train *virt) { - if (!virt) return nullptr; - Train *init_virt = virt; - int len = CountVehiclesInChain(virt); - if (!TemplateVehicle::CanAllocateItem(len)) { - return nullptr; - } - TemplateVehicle *tmp; TemplateVehicle *prev = nullptr; for (; virt; virt = virt->Next()) { diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index 2c64897f94..ed44eb7429 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -1143,6 +1143,10 @@ CommandCost CmdReplaceTemplateVehicle(TileIndex tile, DoCommandFlag flags, uint3 Train* train = Train::From(vehicle); + if (!TemplateVehicle::CanAllocateItem(CountVehiclesInChain(train))) { + return CMD_ERROR; + } + bool should_execute = (flags & DC_EXEC) != 0; if (should_execute) { @@ -1167,10 +1171,6 @@ CommandCost CmdReplaceTemplateVehicle(TileIndex tile, DoCommandFlag flags, uint3 template_vehicle = TemplateVehicleFromVirtualTrain(train); - if (template_vehicle == nullptr) { - return CMD_ERROR; - } - if (restore_flags) { template_vehicle->reuse_depot_vehicles = reuse_depot_vehicles; template_vehicle->keep_remaining_vehicles = keep_remaining_vehicles;