From fb1fae001ac12a0fdb5cdc3cc350c2f2de35e649 Mon Sep 17 00:00:00 2001 From: frosch Date: Mon, 22 Sep 2008 19:28:53 +0000 Subject: (svn r14384) -Fix: Moving the first vehicle of a train elsewhere might require a new unitnumber for the remaining chain. --- src/train_cmd.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index e940cb22f..7a21aa82f 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -1121,6 +1121,14 @@ CommandCost CmdMoveRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p if (flags & DC_EXEC) src->unitnumber = unit_num; } + /* When we move the front vehicle, the second vehicle might need a unitnumber */ + if (!HasBit(p2, 0) && (IsFreeWagon(src) || IsFrontEngine(src)) && (flags & DC_AUTOREPLACE) == 0) { + Vehicle *second = GetNextUnit(src); + if (second != NULL && IsTrainEngine(second) && GetFreeUnitNumber(VEH_TRAIN) > _settings_game.vehicle.max_trains) { + return_cmd_error(STR_00E1_TOO_MANY_VEHICLES_IN_GAME); + } + } + /* * Check whether the vehicles in the source chain are in the destination * chain. This can easily be done by checking whether the first vehicle -- cgit v1.2.3-54-g00ecf