changeset 11342:fff0ccb2819a draft

(svn r15692) -Fix [FS#2721]: Just sell the old engines after autorenew/replace. Don't bother about trains exceeding the trainlimit, which will be sold anyway.
author frosch <frosch@openttd.org>
date Thu, 12 Mar 2009 19:40:16 +0000
parents 7db19bd958af
children 06d999f0ca89
files src/autoreplace_cmd.cpp
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/autoreplace_cmd.cpp
+++ b/src/autoreplace_cmd.cpp
@@ -513,7 +513,7 @@
 					*chain = new_head;
 				}
 
-				/* Transfer cargo of old vehicles and sell them*/
+				/* Transfer cargo of old vehicles and sell them */
 				for (int i = 0; i < num_units; i++) {
 					Vehicle *w = old_vehs[i];
 					/* Is the vehicle again part of the new chain?
@@ -522,7 +522,10 @@
 
 					if ((flags & DC_EXEC) != 0) TransferCargo(w, new_head, true);
 
-					cost.AddCost(DoCommand(0, w->index, 0, flags, GetCmdSellVeh(w)));
+					/* Sell the vehicle.
+					 * Note: This might temporarly construct new trains, so use DC_AUTOREPLACE to prevent
+					 *       it from failing due to engine limits. */
+					cost.AddCost(DoCommand(0, w->index, 0, flags | DC_AUTOREPLACE, GetCmdSellVeh(w)));
 					if ((flags & DC_EXEC) != 0) {
 						old_vehs[i] = NULL;
 						if (i == 0) old_head = NULL;