Пример #1
0
            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));
                }
            }
Пример #2
0
            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));
                }
            }