From 7e906c7c59b6e2dfda546e33b33aa01861549e31 Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Tue, 9 May 2023 22:27:45 +0200 Subject: [PATCH] Change: Preserve orders and related settings where possible when moving engines around in a train. --- src/train_cmd.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 9a906de7ec..13c241f4e9 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1322,8 +1322,14 @@ CommandCost CmdMoveRailVehicle(DoCommandFlag flags, VehicleID src_veh, VehicleID DeleteNewGRFInspectWindow(GSF_TRAINS, src->index); SetWindowDirty(WC_COMPANY, _current_company); - /* Delete orders, group stuff and the unit number as we're not the - * front of any vehicle anymore. */ + if (src_head != nullptr && src_head->IsFrontEngine()) { + /* Cases #?b: Transfer order, unit number and other stuff + * to the new front engine. */ + src_head->orders = src->orders; + if (src_head->orders != nullptr) src_head->AddToShared(src); + src_head->CopyVehicleConfigAndStatistics(src); + } + /* Remove stuff not valid anymore for non-front engines. */ DeleteVehicleOrders(src); src->unitnumber = 0; }