diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 6162a75b79..fb7e97a422 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -2334,18 +2334,20 @@ CommandCost CmdSellRailWagon(DoCommandFlag flags, Vehicle *t, uint16 data, uint3 /* First normalise the sub types of the chain. */ NormaliseSubtypes(new_head); - if (v == first && v->IsEngine() && !sell_chain && new_head != nullptr && new_head->IsFrontEngine()) { - /* We are selling the front engine. In this case we want to - * 'give' the order, unit number and such to the new head. */ - new_head->orders = first->orders; - new_head->AddToShared(first); - DeleteVehicleOrders(first); + if (v == first && !sell_chain && new_head != nullptr && new_head->IsFrontEngine()) { + if (v->IsEngine()) { + /* We are selling the front engine. In this case we want to + * 'give' the order, unit number and such to the new head. */ + new_head->orders = first->orders; + new_head->AddToShared(first); + DeleteVehicleOrders(first); - /* Copy other important data from the front engine */ - new_head->CopyVehicleConfigAndStatistics(first); - new_head->speed_restriction = first->speed_restriction; - SB(Train::From(new_head)->flags, VRF_SPEED_ADAPTATION_EXEMPT, 1, GB(Train::From(first)->flags, VRF_SPEED_ADAPTATION_EXEMPT, 1)); - GroupStatistics::CountVehicle(new_head, 1); // after copying over the profit + /* Copy other important data from the front engine */ + new_head->CopyVehicleConfigAndStatistics(first); + new_head->speed_restriction = first->speed_restriction; + SB(Train::From(new_head)->flags, VRF_SPEED_ADAPTATION_EXEMPT, 1, GB(Train::From(first)->flags, VRF_SPEED_ADAPTATION_EXEMPT, 1)); + } + GroupStatistics::CountVehicle(new_head, 1); // after copying over the profit, if required } else if (v->IsPrimaryVehicle() && data & (MAKE_ORDER_BACKUP_FLAG >> 20)) { OrderBackup::Backup(v, user); }