Example #1
0
            private static void Postfix(ProgressionVM __instance, ref ProgressionVM.FeatureEntry featureEntry)
            {
                if (!settings.toggleMultiArchetype)
                {
                    return;
                }
                var featureEntry2 = featureEntry;

                foreach (var archetype in __instance.ProgressionData.Archetypes)
                {
                    foreach (var removeFeature in archetype.RemoveFeatures.Where(entry => entry.Level == featureEntry2.Level))
                    {
                        if (removeFeature.Features.Any(f => f == featureEntry2.Feature))
                        {
                            featureEntry.DifType = ClassArchetypeDifType.Removed;
                        }
                        ;
                    }
                    foreach (var addFeature in archetype.AddFeatures.Where(entry => entry.Level == featureEntry2.Level))
                    {
                        if (addFeature.Features.Any(f => f == featureEntry2.Feature))
                        {
                            featureEntry.DifType = ClassArchetypeDifType.Added;
                        }
                        ;
                    }
                }
            }
Example #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));
                }
            }