internal static void ResetPlayerPowers(SFXSaveGameFile saveGame, bool resetDefaults = false) { var playerClass = GetPlayerClassInfo(saveGame); var previous = saveGame.Player.Powers; saveGame.Player.Powers = new List <Power>(); saveGame.Player.TalentPoints = SquadVariables.GetPlayerTalentPoints(saveGame.Player.Level); foreach (var powerId in playerClass.Powers) { PowerClass power = null; var pId = powerId; foreach (var powerClass in LoadoutData.PowerClasses.Where(powerClass => powerClass != null && powerClass.Name != null) .Where(powerClass => powerClass.Name.Equals(pId, StringComparison.InvariantCultureIgnoreCase) || (powerClass.CustomName != null && powerClass.CustomName.Equals(pId, StringComparison.InvariantCultureIgnoreCase)))) { power = powerClass; } if (power == null) { continue; } saveGame.Player.Powers.Add(new Power(power.ClassName, power.Name)); } foreach (var power in previous) { if (saveGame.Player.Powers.FindIndex(pwr => pwr.Name.Equals(power.Name, StringComparison.InvariantCultureIgnoreCase)) >= 0) { continue; } var firstOrDefault = LoadoutData.PowerClasses.FirstOrDefault( powerClass => (powerClass.Name.Equals(power.Name, StringComparison.InvariantCultureIgnoreCase)) || (powerClass.CustomName != null && powerClass.CustomName.Equals(power.Name, StringComparison.InvariantCultureIgnoreCase))); if (firstOrDefault != null && firstOrDefault.PowerType == PowerClassType.Bonus) { saveGame.Player.Powers.Add(new Power(power.ClassName, power.Name)); } //LoadoutData.PowerClasses.First(powerClass => powerClass.Name.Equals(power.Name, StringComparison.InvariantCultureIgnoreCase)).PowerType == PowerClassType.Bonus //LoadoutData.PowerClasses.First(powerClass => powerClass.CustomName != null && powerClass.CustomName.Equals(power.Name, StringComparison.InvariantCultureIgnoreCase)).PowerType == PowerClassType.Bonus /*if (LoadoutData.PowerClasses.First(powerClass => powerClass.Name.Equals(power.Name, StringComparison.InvariantCultureIgnoreCase)).PowerType == PowerClassType.Bonus) * { * saveGame.Player.Powers.Add(new Power(power.ClassName, power.Name)); * } * else if (LoadoutData.PowerClasses.First(powerClass => powerClass.CustomName != null && powerClass.CustomName.Equals(power.Name, StringComparison.InvariantCultureIgnoreCase)).PowerType == PowerClassType.Bonus) * { * saveGame.Player.Powers.Add(new Power(power.ClassName, power.Name)); * }*/ } if (!resetDefaults) { return; } foreach (var power in saveGame.Player.Powers) { var powerClass = LoadoutData.PowerClasses.FirstOrDefault( p => (p.ClassName != null && p.ClassName.Equals(power.ClassName, StringComparison.InvariantCultureIgnoreCase))); if (powerClass == null) { continue; } if (!playerClass.DefaultPowers.Any(s => s.Equals(powerClass.Name, StringComparison.InvariantCultureIgnoreCase) || s.Equals(powerClass.CustomName, StringComparison.InvariantCultureIgnoreCase)) && powerClass.PowerType != PowerClassType.Bonus) { continue; } power.CurrentRank = 1; if (powerClass.PowerType != PowerClassType.None) { saveGame.Player.TalentPoints--; } } }
internal static void ResetHenchmanPowers(SFXSaveGameFile saveGame, Henchman henchman, bool resetDefaults = false) { var henchProperty = LoadoutData.HenchmenClasses.FirstOrDefault(pair => pair.Tag.Equals(henchman.Tag, StringComparison.InvariantCultureIgnoreCase)); if (henchProperty == null) { return; } henchman.Powers = new List <Power>(); henchman.CharacterLevel = saveGame.Player.Level; henchman.TalentPoints = SquadVariables.GetHenchTalentPoints(henchman.CharacterLevel); foreach (var powerId in henchProperty.Powers) { PowerClass power = null; var pId = powerId; foreach (var powerClass in LoadoutData.PowerClasses.Where(powerClass => powerClass != null && powerClass.Name != null) .Where(powerClass => powerClass.Name.Equals(pId, StringComparison.InvariantCultureIgnoreCase) || (powerClass.CustomName != null && powerClass.CustomName.Equals(pId, StringComparison.InvariantCultureIgnoreCase)))) { power = powerClass; } if (power == null) { continue; } henchman.Powers.Add(new Power(power.ClassName, power.Name)); } if (!resetDefaults) { return; } foreach (var power in henchman.Powers) { var powerClass = LoadoutData.PowerClasses.FirstOrDefault( p => (p.ClassName != null && p.ClassName.Equals(power.ClassName, StringComparison.InvariantCultureIgnoreCase))); if (powerClass == null) { continue; } if (!henchProperty.DefaultPowers.Any(s => s.Equals(powerClass.Name, StringComparison.InvariantCultureIgnoreCase) || s.Equals(powerClass.CustomName, StringComparison.InvariantCultureIgnoreCase))) { continue; } power.CurrentRank = 1; if (powerClass.PowerType != PowerClassType.None) { henchman.TalentPoints--; } } }