diff --git a/Maple2.Database/Storage/Game/GameStorage.Map.cs b/Maple2.Database/Storage/Game/GameStorage.Map.cs index aaeed30d..41d60a8e 100644 --- a/Maple2.Database/Storage/Game/GameStorage.Map.cs +++ b/Maple2.Database/Storage/Game/GameStorage.Map.cs @@ -293,10 +293,11 @@ public bool DeleteCube(PlotCube cube) { } public bool InitUgcMap(IEnumerable maps) { - // If there are entries, we assume it's already initialized. - if (Context.UgcMap.Any()) { - return true; - } + HashSet<(int MapId, int Number)> existing = Context.UgcMap + .Select(m => new { m.MapId, m.Number }) + .AsEnumerable() + .Select(m => (m.MapId, m.Number)) + .ToHashSet(); foreach (UgcMapMetadata map in maps) { if (map.Id == Constant.DefaultHomeMapId) { @@ -304,6 +305,10 @@ public bool InitUgcMap(IEnumerable maps) { } foreach (UgcMapGroup group in map.Plots.Values) { + if (existing.Contains((map.Id, group.Number))) { + continue; + } + Context.UgcMap.Add(new UgcMap { MapId = map.Id, Number = group.Number,