private static void Postfix(ClassProgressionVM __instance, UnitDescriptor unit, ClassData unitClass) { if (!settings.toggleMultiArchetype) { return; } var Name = string.Join("/", unitClass.Archetypes.Select(a => a.Name)); if (!string.IsNullOrEmpty(Name)) { __instance.Name = string.Join(" ", unitClass.CharacterClass.Name, $"({Name})"); } var castingArchetype = unitClass.Archetypes.Where(a => a.ReplaceSpellbook != null).FirstOrDefault(); if (castingArchetype != null) { __instance.AddDisposable(__instance.SpellbookProgressionVM = new SpellbookProgressionVM( __instance.m_UnitClass, castingArchetype, __instance.m_Unit, __instance.m_LevelProgressionVM)); } }
private static void Postfix(ClassProgressionVM __instance, BlueprintCharacterClass classBlueprint, int level, bool buildDifference) { if (!settings.toggleMultiArchetype) { return; } var data = __instance.ProgressionVms.Select(vm => vm.ProgressionData).OfType <AdvancedProgressionData>().First(); __instance.ProgressionVms.Clear(); var addArchetypes = Game.Instance.LevelUpController.LevelUpActions.OfType <AddArchetype>(); foreach (var add in addArchetypes) { data.AddArchetype(add.Archetype); } var newVM = new ProgressionVM(data, __instance.m_Unit, new int?(level), buildDifference); __instance.ProgressionVms.Add(newVM); __instance.AddProgressions(__instance.m_Unit.Progression.GetClassProgressions(__instance.m_UnitClass).EmptyIfNull <ProgressionData>()); __instance.AddProgressionSources(newVM.ProgressionSourceFeatures); var archetypeString = string.Join("/", addArchetypes.Select(a => a.Archetype.Name)); if (!string.IsNullOrEmpty(archetypeString)) { __instance.Name = string.Join(" ", classBlueprint.Name, $"({archetypeString})"); } var castingArchetype = addArchetypes.Select(a => a.Archetype).Where(a => a.ReplaceSpellbook != null).FirstOrDefault(); if (castingArchetype != null) { __instance.AddDisposable(__instance.SpellbookProgressionVM = new SpellbookProgressionVM( __instance.m_UnitClass, castingArchetype, __instance.m_Unit, __instance.m_LevelProgressionVM)); } }