summaryrefslogtreecommitdiff
path: root/src/autoreplace_cmd.cpp
diff options
context:
space:
mode:
authorbjarni <bjarni@openttd.org>2007-05-26 17:00:44 +0000
committerbjarni <bjarni@openttd.org>2007-05-26 17:00:44 +0000
commitfd2d6329f3be06525bc1ea5681c9b563cf202502 (patch)
tree76f63f11b13322e8e72c77222d23842a25b0f70e /src/autoreplace_cmd.cpp
parent35a1668bd4a7408ba29a9d7f4561e96621360aa0 (diff)
downloadopenttd-fd2d6329f3be06525bc1ea5681c9b563cf202502.tar.xz
(svn r9938) -Fix [FS#799]: 100 wagons train + replace engine
Replacing a unit in a train will now remove the old unit before adding the new one. This will solve issues when max train length has been reached
Diffstat (limited to 'src/autoreplace_cmd.cpp')
-rw-r--r--src/autoreplace_cmd.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp
index 776320e04..5d1dce962 100644
--- a/src/autoreplace_cmd.cpp
+++ b/src/autoreplace_cmd.cpp
@@ -195,9 +195,11 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags, int32 total_cost)
* We add the new engine after the old one instead of replacing it. It will give the same result anyway when we
* sell the old engine in a moment
*/
- DoCommand(0, (GetPrevVehicleInChain(old_v)->index << 16) | new_v->index, 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
+ Vehicle *front = GetPrevVehicleInChain(old_v);
/* Now we move the old one out of the train */
DoCommand(0, (INVALID_VEHICLE << 16) | old_v->index, 0, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
+ /* Add the new vehicle */
+ DoCommand(0, (front->index << 16) | new_v->index, 1, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
} else {
// copy/clone the orders
DoCommand(0, (old_v->index << 16) | new_v->index, IsOrderListShared(old_v) ? CO_SHARE : CO_COPY, DC_EXEC, CMD_CLONE_ORDER);