diff --git a/OpenRA.Game/Map/MapCache.cs b/OpenRA.Game/Map/MapCache.cs index cc868dd6b9..2e23e440a9 100644 --- a/OpenRA.Game/Map/MapCache.cs +++ b/OpenRA.Game/Map/MapCache.cs @@ -380,10 +380,12 @@ namespace OpenRA public string ChooseInitialMap(string initialUid, MersenneTwister random) { - if (string.IsNullOrEmpty(initialUid) || previews[initialUid].Status != MapStatus.Available) + UpdateMaps(); + var map = string.IsNullOrEmpty(initialUid) ? null : previews[initialUid]; + if (map == null || map.Status != MapStatus.Available || !map.Visibility.HasFlag(MapVisibility.Lobby) || (map.Class != MapClassification.System && map.Class != MapClassification.User)) { var selected = previews.Values.Where(IsSuitableInitialMap).RandomOrDefault(random) ?? - previews.Values.FirstOrDefault(m => m.Status == MapStatus.Available && m.Visibility.HasFlag(MapVisibility.Lobby)); + previews.Values.FirstOrDefault(m => m.Status == MapStatus.Available && m.Visibility.HasFlag(MapVisibility.Lobby) && (m.Class == MapClassification.System || m.Class == MapClassification.User)); return selected == null ? string.Empty : selected.Uid; }