コード例 #1
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return(unit.Ensure <UnitPartSelfEvolution>().hasEvolution(evolution) != not);;
 }
コード例 #2
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return((unit.Get <UnitPartFullProficiency>()?.hasFullProficiency(category)).GetValueOrDefault() != not);
 }
コード例 #3
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return(unit.GetSpellbook(character_class) != null);
 }
コード例 #4
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return(this.base_prerequsite.Check(selectionState, unit, state) || this.alternative_prerequsite.Check(selectionState, unit, state));
 }
コード例 #5
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return(this.prerequisite1.Check(selectionState, unit, state) && this.prerequisite2.Check(selectionState, unit, state));
 }
コード例 #6
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return(race == unit.Progression.Race);
 }
コード例 #7
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return(unit.Progression.GetClassLevel(this.CharacterClass) < 1);
 }
コード例 #8
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return(unit.Ensure <UnitPartSelfEvolution>().getNumEvolutionPoints() >= amount || unit.Progression.Features.HasFact((BlueprintFact)this.feature));
 }
コード例 #9
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     return(!unit.Ensure <UnitPartSelfEvolution>().hasPermanentEvolution(evolution));
 }
コード例 #10
0
 public override bool Check(FeatureSelectionState selectionState, UnitDescriptor unit, LevelUpState state)
 {
     foreach (Spellbook Spellbook in unit.Spellbooks)
     {
         if ((CharacterClass == null || Spellbook.Blueprint.CharacterClass == CharacterClass) && Spellbook.IsKnown(Ability))
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #11
0
 public override bool Check(FeatureSelectionState selectionState, UnitDescriptor unit, LevelUpState state)
 {
     foreach (var spellbook in unit.Spellbooks)
     {
         if (spellbook.IsKnown(Spell))
         {
             return(!Not);
         }
     }
     return(Not);
 }
コード例 #12
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     if (selectionState != (FeatureSelectionState)null && selectionState.IsSelectedInChildren((IFeatureSelectionItem)this.base_feature))
     {
         return(false);
     }
     return(unit.Progression.Features.Enumerable.Where(p => p.Blueprint == this.base_feature).Any(this.CheckFeature));
 }
コード例 #13
0
        public override bool Check(FeatureSelectionState selectionState, UnitDescriptor unit, LevelUpState state)
        {
            foreach (Kingmaker.UnitLogic.Abilities.Ability unitAbility in unit.Abilities)
            {
                if (_abilityList.Contains(unitAbility.Blueprint))
                {
                    return(true);
                }
            }

            return(false);
        }
        public override bool Check(FeatureSelectionState selectionState, UnitDescriptor unit, LevelUpState state)
        {
            BlueprintFeature[] features = Features;
            foreach (BlueprintFeature blueprintFeature in features)
            {
                if (blueprintFeature.MeetsPrerequisites(selectionState, unit, state))
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #15
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     foreach (var p in prerequisites)
     {
         if (!p.Check(selectionState, unit, state))
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #16
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     foreach (ClassData classData in unit.Progression.Classes)
     {
         BlueprintSpellbook spellbook = classData.Spellbook;
         if (spellbook != null)
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #17
0
 bool IFeatureSelection.CanSelect(UnitDescriptor unit, LevelUpState state, FeatureSelectionState selectionState, IFeatureSelectionItem item)
 {
     if (!item.Param.HasValue)
     {
         return(false);
     }
     if (HasNoSuchFeature)
     {
         var feat = item.Param.Value.Blueprint as BlueprintFeature;
         if (feat != null && unit.HasFact(feat))
         {
             return(false);
         }
     }
     return(CanSelect(unit, item.Param.Value));
 }
コード例 #18
0
 public override void OnFactActivate()
 {
     try
     {
         var levelUp = Game.Instance.UI.CharacterBuildController.LevelUpController;
         if (Owner == levelUp.Preview || Owner == levelUp.Unit)
         {
             int index = levelUp.State.Selections.Count <FeatureSelectionState>((Func <FeatureSelectionState, bool>)(s => s.Selection == selection));
             FeatureSelectionState featureSelectionState = new FeatureSelectionState(null, null, selection, index, 0);
             levelUp.State.Selections.Add(featureSelectionState);
         }
     }
     catch (Exception e)
     {
         Main.logger.Error(e.ToString());
     }
 }
コード例 #19
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     foreach (var f in Features)
     {
         if (unit.Logic.HasFact(f))
         {
             return(false);
         }
         if (unit.Progression.Features.HasFact(f))
         {
             return(false);
         }
     }
     return(true);
 }
コード例 #20
0
 public override bool Check(
     FeatureSelectionState selectionState,
     UnitDescriptor unit,
     LevelUpState state)
 {
     foreach (ClassData classData in unit.Progression.Classes)
     {
         BlueprintSpellbook spellbook = classData.Spellbook;
         if (spellbook != null &&
             (!this.OnlySpontaneous || spellbook.Spontaneous) &&
             spellbook.GetComponent <PsychicSpellbook>() != null &&
             unit.DemandSpellbook(classData.CharacterClass).MaxSpellLevel >= this.RequiredSpellLevel)
         {
             return(true);
         }
     }
     return(false);
 }
コード例 #21
0
 static void Prefix(SelectFeature __instance, LevelUpState state, UnitDescriptor unit, ref StateReplacer __state)
 {
     if (IsAvailable())
     {
         if (__instance.Item != null)
         {
             FeatureSelectionState selectionState =
                 GetMethodDel <SelectFeature, Func <SelectFeature, LevelUpState, FeatureSelectionState> >
                     ("GetSelectionState")(__instance, state);
             if (selectionState != null)
             {
                 BlueprintCharacterClass sourceClass = (selectionState.Source as BlueprintFeature)?.GetSourceClass(unit);
                 if (sourceClass != null)
                 {
                     __state = new StateReplacer(state);
                     __state.Replace(sourceClass, unit.Progression.GetClassLevel(sourceClass));
                 }
             }
         }
     }
 }
コード例 #22
0
ファイル: LevelUp.cs プロジェクト: ThyWoof/ToyBox
 public static bool Prefix(ref bool __result, FeatureSelectionState __instance, LevelUpState state, UnitEntityData unit)
 {
     __result = false;
     if (__instance.Selection.IsObligatory())
     {
         __result = true;
     }
     else if (__instance.Selection.IsSelectionProhibited(unit.Descriptor))
     {
         __result = false;
     }
     else
     {
         foreach (IFeatureSelectionItem featureSelectionItem in __instance.Selection.Items)
         {
             if (featureSelectionItem != __instance.SelectedItem && __instance.Selection.CanSelect(unit.Descriptor, state, __instance, featureSelectionItem))
             {
                 __result = true;
             }
         }
     }
     return(true);
 }
コード例 #23
0
 public override bool Check([CanBeNull] FeatureSelectionState selectionState, [NotNull] UnitDescriptor unit, [NotNull] LevelUpState state)
 {
     return(CheckUnit(unit));
 }
コード例 #24
0
 public override bool Check(FeatureSelectionState selectionState, UnitDescriptor unit, LevelUpState state)
 {
     return(unit.GetSpellbook(CharacterClass)?.MaxSpellLevel >= RequiredSpellLevel);
 }
 public override bool Check(FeatureSelectionState selectionState, UnitDescriptor unit, LevelUpState state)
 {
     return(Main.ModSettings.IgnoreFeatCasterLevelRestriction || Main.CharacterCasterLevel(unit) >= minimumCasterLevel);
 }
コード例 #26
0
 public bool SelectFeature([NotNull] FeatureSelectionState selection, [NotNull] IFeatureSelectionItem item)
 {
     return(this.AddAction(new SelectFeature(selection, item), false));
 }
コード例 #27
0
 public void UnselectFeature([NotNull] FeatureSelectionState selectionState)
 {
     this.RemoveAction <SelectFeature>((SelectFeature a) => a.Selection == selectionState.Selection && a.SelectionIndex == selectionState.Index);
     this.UpdatePreview();
 }
コード例 #28
0
        private void PerformSelections(LevelUpController controller, Dictionary <SelectionEntry, HashSet <int> > selectionsHistory, LevelUpActionPriority?maxPriority = null)
        {
            SelectionEntry[] selections = instance.Selections;
            int i = 0;

            while (i < selections.Length)
            {
                SelectionEntry selectionEntry = selections[i];
                if (maxPriority == null)
                {
                    goto IL_66;
                }
                if (selectionEntry.IsParametrizedFeature)
                {
                    if (SelectFeature.CalculatePriority(selectionEntry.ParametrizedFeature) <= maxPriority.Value)
                    {
                        goto IL_66;
                    }
                }
                else if (SelectFeature.CalculatePriority(selectionEntry.Selection) <= maxPriority.Value)
                {
                    goto IL_66;
                }
                IL_253:
                i++;
                continue;
                IL_66:
                HashSet <int> hashSet;
                if (!selectionsHistory.TryGetValue(selectionEntry, out hashSet))
                {
                    hashSet = new HashSet <int>();
                    selectionsHistory[selectionEntry] = hashSet;
                }
                if (selectionEntry.IsParametrizedFeature)
                {
                    FeatureSelectionState featureSelectionState = controller.State.FindSelection(selectionEntry.ParametrizedFeature, false);
                    if (featureSelectionState != null)
                    {
                        FeatureUIData item;
                        switch (selectionEntry.ParametrizedFeature.ParameterType)
                        {
                        case FeatureParameterType.Custom:
                        case FeatureParameterType.SpellSpecialization:
                            item = new FeatureUIData(selectionEntry.ParametrizedFeature, selectionEntry.ParamObject, string.Empty, string.Empty, null, selectionEntry.ParamObject.ToString());
                            break;

                        case FeatureParameterType.WeaponCategory:
                            item = new FeatureUIData(selectionEntry.ParametrizedFeature, selectionEntry.ParamWeaponCategory, string.Empty, string.Empty, null, selectionEntry.ParamWeaponCategory.ToString());
                            break;

                        case FeatureParameterType.SpellSchool:
                            item = new FeatureUIData(selectionEntry.ParametrizedFeature, selectionEntry.ParamSpellSchool, string.Empty, string.Empty, null, selectionEntry.ParamSpellSchool.ToString());
                            break;

                        case FeatureParameterType.LearnSpell:
                            goto IL_1BD;

                        case FeatureParameterType.Skill:
                            item = new FeatureUIData(selectionEntry.ParametrizedFeature, selectionEntry.Stat, string.Empty, string.Empty, null, selectionEntry.Stat.ToString());
                            break;

                        default:
                            goto IL_1BD;
                        }
                        controller.SelectFeature(featureSelectionState, item);
                        goto IL_1CE;
IL_1BD:
                        throw new ArgumentOutOfRangeException();
                    }
IL_1CE:
                    goto IL_253;
                }
                for (int j = 0; j < selectionEntry.Features.Length; j++)
                {
                    if (!hashSet.Contains(j))
                    {
                        BlueprintFeature      blueprintFeature       = selectionEntry.Features[j];
                        FeatureSelectionState featureSelectionState2 = controller.State.FindSelection(selectionEntry.Selection, false);
                        if (featureSelectionState2 != null && blueprintFeature != null && controller.SelectFeature(featureSelectionState2, blueprintFeature))
                        {
                            hashSet.Add(j);
                        }
                    }
                }
                goto IL_253;
            }
        }
コード例 #29
0
 public override bool Check(FeatureSelectionState selectionState, UnitDescriptor unit, LevelUpState state)
 {
     return(unit.Progression.CharacterLevel == Level);
 }
コード例 #30
0
            private static bool Prefix(BlueprintParametrizedFeatureWeaponTraining __instance, UnitDescriptor unit, LevelUpState state, FeatureSelectionState selectionState, IFeatureSelectionItem item, ref bool __result)
            {
                if (__instance.GetType() == typeof(BlueprintParametrizedFeatureWeaponTraining))
                {
                    if (item.Param.WeaponCategory != null && !AdvancedWeaponTraining._weaponTrainingToWeaponCategory[__instance.WeaponTraining].Contains((WeaponCategory)item.Param.WeaponCategory))
                    {
                        __result = false;
                        return(false);
                    }
                }

                return(true);
            }