diff --git a/SynthEBD/Patcher/PatcherAux/UpdateHandler.cs b/SynthEBD/Patcher/PatcherAux/UpdateHandler.cs index 532364c5..782b3e1d 100644 --- a/SynthEBD/Patcher/PatcherAux/UpdateHandler.cs +++ b/SynthEBD/Patcher/PatcherAux/UpdateHandler.cs @@ -1,3 +1,4 @@ +using DynamicData; using Microsoft.Extensions.Logging; using Mutagen.Bethesda.Plugins; using System; @@ -187,31 +188,42 @@ private void UpdateV1025RaceGroupings() { if (!_patcherState.UpdateLog.Performed1_0_2_5RGUpdate) { - if (MessageWindow.DisplayNotificationYesNo("Version 1.0.2.5 Update", new List() { "In previous SynthEBD versions, the Humanoid Playable race grouping erroneously included Elder Race.", "Would you like to fix this? (Recommend: Yes)"}, Environment.NewLine)) + List toUpdateVMs = new(); + var humanoidPlayableVM = _generalVM.RaceGroupingEditor.RaceGroupings.Where(x => x.Label.Equals("Humanoid Playable", StringComparison.OrdinalIgnoreCase) && (x.Races.Contains(Mutagen.Bethesda.FormKeys.SkyrimSE.Skyrim.Race.ElderRace.FormKey) || x.Races.Contains(Mutagen.Bethesda.FormKeys.SkyrimSE.Skyrim.Race.ElderRaceVampire.FormKey))).FirstOrDefault(); + if (humanoidPlayableVM != null) { - var humanoidPlayableVM = _generalVM.RaceGroupingEditor.RaceGroupings.Where(x => x.Label.Equals("Humanoid Playable", StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); - if (humanoidPlayableVM != null && (humanoidPlayableVM.Races.Contains(Mutagen.Bethesda.FormKeys.SkyrimSE.Skyrim.Race.ElderRace.FormKey) || humanoidPlayableVM.Races.Contains(Mutagen.Bethesda.FormKeys.SkyrimSE.Skyrim.Race.ElderRaceVampire.FormKey))) + toUpdateVMs.Add(humanoidPlayableVM); + } + + foreach (var assetPack in _texMeshVM.AssetPacks) + { + humanoidPlayableVM = assetPack.RaceGroupingEditor.RaceGroupings.Where(x => x.Label.Equals("Humanoid Playable", StringComparison.OrdinalIgnoreCase) && (x.Races.Contains(Mutagen.Bethesda.FormKeys.SkyrimSE.Skyrim.Race.ElderRace.FormKey) || x.Races.Contains(Mutagen.Bethesda.FormKeys.SkyrimSE.Skyrim.Race.ElderRaceVampire.FormKey))).FirstOrDefault(); + if (humanoidPlayableVM != null) { + toUpdateVMs.Add(humanoidPlayableVM); + } + } - RemoveEldersFromGrouping(humanoidPlayableVM.Races); + List toUpdateMs = new(); + foreach (var assetPack in _patcherState.AssetPacks) + { + var humanoidPlayableM = assetPack.RaceGroupings.Where(x => x.Label.Equals("Humanoid Playable", StringComparison.OrdinalIgnoreCase) && (x.Races.Contains(Mutagen.Bethesda.FormKeys.SkyrimSE.Skyrim.Race.ElderRace.FormKey) || x.Races.Contains(Mutagen.Bethesda.FormKeys.SkyrimSE.Skyrim.Race.ElderRaceVampire.FormKey))).FirstOrDefault(); + if (humanoidPlayableM != null) + { + toUpdateMs.Add(humanoidPlayableM); } + } - foreach (var assetPack in _texMeshVM.AssetPacks) + if ((toUpdateVMs.Any() || toUpdateMs.Any()) && MessageWindow.DisplayNotificationYesNo("Version 1.0.2.5 Update", new List() { "In previous SynthEBD versions, the Humanoid Playable race grouping erroneously included Elder Race.", "Would you like to fix this? (Recommend: Yes)"}, Environment.NewLine)) + { + foreach (var vm in toUpdateVMs) { - var humanoidPlayableM = assetPack.RaceGroupingEditor.RaceGroupings.Where(x => x.Label.Equals("Humanoid Playable", StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); - if (humanoidPlayableM != null) - { - RemoveEldersFromGrouping(humanoidPlayableM.Races); - } + RemoveEldersFromGrouping(vm.Races); } - foreach (var assetPack in _patcherState.AssetPacks) + foreach (var m in toUpdateMs) { - var humanoidPlayableM = assetPack.RaceGroupings.Where(x => x.Label.Equals("Humanoid Playable", StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); - if (humanoidPlayableM != null) - { - RemoveEldersFromGrouping(humanoidPlayableM.Races); - } + RemoveEldersFromGrouping(m.Races); } } } diff --git a/SynthEBD/Settings/Settings_General/DefaultRaceGroupings.cs b/SynthEBD/Settings/Settings_General/DefaultRaceGroupings.cs index c490f273..031d3786 100644 --- a/SynthEBD/Settings/Settings_General/DefaultRaceGroupings.cs +++ b/SynthEBD/Settings/Settings_General/DefaultRaceGroupings.cs @@ -47,7 +47,6 @@ public class DefaultRaceGroupings Skyrim.Race.OrcRace.FormKey, Skyrim.Race.RedguardRace.FormKey, Skyrim.Race.WoodElfRace.FormKey, - Skyrim.Race.ElderRace.FormKey, Skyrim.Race.NordRaceVampire.FormKey, Skyrim.Race.BretonRaceVampire.FormKey, Skyrim.Race.DarkElfRaceVampire.FormKey, @@ -55,8 +54,7 @@ public class DefaultRaceGroupings Skyrim.Race.ImperialRaceVampire.FormKey, Skyrim.Race.OrcRaceVampire.FormKey, Skyrim.Race.RedguardRaceVampire.FormKey, - Skyrim.Race.WoodElfRaceVampire.FormKey, - Skyrim.Race.ElderRaceVampire.FormKey, + Skyrim.Race.WoodElfRaceVampire.FormKey } };