diff --git a/ImperatorToCK3/CK3/Provinces/ProvinceCollection.cs b/ImperatorToCK3/CK3/Provinces/ProvinceCollection.cs index 817bab523..5ea4e6eb0 100644 --- a/ImperatorToCK3/CK3/Provinces/ProvinceCollection.cs +++ b/ImperatorToCK3/CK3/Provinces/ProvinceCollection.cs @@ -159,7 +159,13 @@ public void LoadPrehistory() { var parser = new Parser(); parser.RegisterRegex(CommonRegexes.Integer, (reader, provIdStr) => { var provId = ulong.Parse(provIdStr); - this[provId].UpdateHistory(reader); + + if (TryGetValue(provId, out var province)) { + province.UpdateHistory(reader); + } else { + Logger.Warn($"Province {provId} referenced in prehistory not found!"); + ParserHelpers.IgnoreItem(reader); + } }); parser.IgnoreAndLogUnregisteredItems(); parser.ParseFile(prehistoryPath); diff --git a/ImperatorToCK3/CommonUtils/Map/MapData.cs b/ImperatorToCK3/CommonUtils/Map/MapData.cs index c148ab39b..9bc83a846 100644 --- a/ImperatorToCK3/CommonUtils/Map/MapData.cs +++ b/ImperatorToCK3/CommonUtils/Map/MapData.cs @@ -493,21 +493,37 @@ private void DetermineMapEdgeProvinces(ModFilesystem modFS) { for (var y = 0; y < height; ++y) { // Get left edge color. var color = GetPixelColor(new Point(0, y), mapPng); - mapEdgeProvinces.Add(ProvinceDefinitions.ColorToProvinceDict[color]); + if (ProvinceDefinitions.ColorToProvinceDict.TryGetValue(color, out var provinceId)) { + mapEdgeProvinces.Add(provinceId); + } else { + Logger.Warn($"Province not found for color {color}!"); + } // Get right edge color. color = GetPixelColor(new Point(width - 1, y), mapPng); - mapEdgeProvinces.Add(ProvinceDefinitions.ColorToProvinceDict[color]); + if (ProvinceDefinitions.ColorToProvinceDict.TryGetValue(color, out provinceId)) { + mapEdgeProvinces.Add(provinceId); + } else { + Logger.Warn($"Province not found for color {color}!"); + } } for (var x = 0; x < width; ++x) { // Get top edge color. var color = GetPixelColor(new Point(x, 0), mapPng); - mapEdgeProvinces.Add(ProvinceDefinitions.ColorToProvinceDict[color]); + if (ProvinceDefinitions.ColorToProvinceDict.TryGetValue(color, out var provinceId)) { + mapEdgeProvinces.Add(provinceId); + } else { + Logger.Warn($"Province not found for color {color}!"); + } // Get bottom edge color. color = GetPixelColor(new Point(x, height - 1), mapPng); - mapEdgeProvinces.Add(ProvinceDefinitions.ColorToProvinceDict[color]); + if (ProvinceDefinitions.ColorToProvinceDict.TryGetValue(color, out provinceId)) { + mapEdgeProvinces.Add(provinceId); + } else { + Logger.Warn($"Province not found for color {color}!"); + } } } } \ No newline at end of file