From f3796eee66f9163fecbb36560d3742641caae04b Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 16 Jan 2007 15:45:20 +0000 Subject: (svn r8157) -Fix (r3136): moving cargo during auto replaces did not update the cached vehicle weight for trains properly. This caused (in network games) the server to have a different cached vehicle weight than newly joined clients would have, which causes desyncs. --- src/vehicle.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/vehicle.cpp b/src/vehicle.cpp index d2a44652d..07399e101 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1901,6 +1901,14 @@ static void MoveVehicleCargo(Vehicle *dest, Vehicle *source) } while (source->cargo_count > 0 && (dest = dest->next) != NULL); dest = v; } while ((source = source->next) != NULL); + + /* + * The of the train will be incorrect at this moment. This is due + * to the fact that removing the old wagon updates the weight of + * the complete train, which is without the weight of cargo we just + * moved back into some (of the) new wagon(s). + */ + if (dest->type == VEH_Train) TrainConsistChanged(dest->first); } static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, const EngineID engine_type) -- cgit v1.2.3-70-g09d2