From 1e45f4bc4c1faf89469ef9b92ae7b5ce358dda46 Mon Sep 17 00:00:00 2001 From: smatz Date: Tue, 19 May 2009 12:47:47 +0000 Subject: [PATCH] (svn r16357) -Codechange: delete invalid depots in TTD savegames caused by improper SVXConverter conversions --- src/saveload/oldloader_sl.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index fc2d2038c0..ca63e7c1e2 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -96,6 +96,17 @@ static void FixTTDMapArray() FixOldMapArray(); } +static void FixTTDDepots() +{ + const Depot *d; + FOR_ALL_DEPOTS_FROM(d, 252) { + if (!IsRoadDepotTile(d->xy) && !IsRailDepotTile(d->xy) && !IsShipDepotTile(d->xy) && !IsHangarTile(d->xy)) { + /** Workaround for SVXConverter bug, depots 252-255 could be invalid */ + delete d; + } + } +} + #define FIXNUM(x, y, z) (((((x) << 16) / (y)) + 1) << z) static uint32 RemapOldTownName(uint32 townnameparts, byte old_town_name_type) @@ -1769,6 +1780,7 @@ bool LoadTTDMain(LoadgameState *ls) DEBUG(oldloader, 3, "Done, converting game data..."); FixTTDMapArray(); + FixTTDDepots(); /* Fix some general stuff */ _settings_game.game_creation.landscape = _settings_game.game_creation.landscape & 0xF;