Esempio n. 1
0
            public override bool CanBeUsedOn(BlueprintAbility ability, [CanBeNull] AbilityData data)
            {
                bool is_metamagic_not_available = ability == null || data?.Spellbook == null || ability.Type != AbilityType.Spell ||
                                                  ((ability.AvailableMetamagic & Metamagic) == 0);

                if (is_metamagic_not_available)
                {
                    return(false);
                }

                if (!Helpers.checkSpellbook(spellbook, specific_class, data?.Spellbook, this.Owner))
                {
                    return(false);
                }

                if (this.Abilities != null && !this.Abilities.Empty() && !this.Abilities.Contains(ability))
                {
                    return(false);
                }

                if (!spell_descriptor.HasAnyFlag(data.Blueprint.SpellDescriptor) && spell_descriptor != SpellDescriptor.None)
                {
                    return(false);
                }

                int cost = calculate_cost(this.Owner.Unit);

                if (resource != null && this.Owner.Resources.GetResourceAmount((BlueprintScriptableObject)this.resource) < cost)
                {
                    return(false);
                }


                if (limit_spell_level && data.Spellbook.MaxSpellLevel < data.SpellLevel + Metamagic.DefaultCost())
                {
                    return(false);
                }

                return(true);
            }
Esempio n. 2
0
            public override bool CanBeUsedOn(BlueprintAbility ability, [CanBeNull] AbilityData data)
            {
                bool is_metamagic_not_available = ability == null || data?.Spellbook == null || ability.Type != AbilityType.Spell ||
                                                  ((ability.AvailableMetamagic & Metamagic) == 0);

                if (is_metamagic_not_available)
                {
                    return(false);
                }

                if (!checkSpellbook(data?.Spellbook?.Blueprint))
                {
                    return(false);
                }


                int cost = calculate_cost(this.Owner.Unit);

                if (resource != null && this.Owner.Resources.GetResourceAmount((BlueprintScriptableObject)this.resource) < cost)
                {
                    return(false);
                }


                if (limit_spell_level && data.Spellbook.MaxSpellLevel < data.SpellLevel + Metamagic.DefaultCost())
                {
                    return(false);
                }

                return(true);
            }