Esempio n. 1
0
 public Ability[] GetCopAbilities(AbilityFlags restrictions, int numberOfAbilities = 1)
 {
     return(GetAbilities(
                restrictions,
                numberOfAbilities,
                new Ability[][] { availableSharedAbilities, availableCopAbilities }));
 }
Esempio n. 2
0
 public virtual bool IsUsable(AbilityFlags requirements)
 {
     if (_abilityRequirements == AbilityFlags.None)
     {
         return(true);
     }
     return(requirements.HasFlag(_abilityRequirements));
 }
Esempio n. 3
0
        public bool HasFlag(AbilityFlags flagType)
        {
            if (!(GetViableEffect() is AfflictionPrefab.Effect currentEffect))
            {
                return(false);
            }

            return(currentEffect.AfflictionAbilityFlags.Contains(flagType));
        }
        public static AbilityFlags ParseFlagType(string flagTypeString, string debugIdentifier)
        {
            AbilityFlags flagType = AbilityFlags.None;

            if (!Enum.TryParse(flagTypeString, true, out flagType))
            {
                DebugConsole.ThrowError("Invalid flag type type \"" + flagTypeString + "\" in CharacterTalent (" + debugIdentifier + ")");
            }
            return(flagType);
        }
Esempio n. 5
0
    public Entity(EntityPrototype proto)
    {
        prototype     = ScriptableObject.Instantiate(proto);
        mEntityType   = prototype.entityType;
        entityName    = proto.mName;
        Game          = GameManager.instance;
        Map           = MapManager.instance;
        ignoreTilemap = proto.ignoreTilemap;
        hostility     = prototype.hostility;
        abilities     = new List <Ability>();

        //mRenderer = GameObject.Instantiate<EntityRenderer>();
        mCollidesWith = proto.CollidesWith;
        statusEffects = new List <StatusEffect>();
        abilityFlags  = new AbilityFlags();
        abilityFlags.Initialize();
        baseGravityMultiplier = proto.baseGravityMultiplier;
        gravityMultiplier     = baseGravityMultiplier;
        crushDamage           = proto.crushDamage;
        //if (colorPallete != null && colorPallete.Count > 0)
        //ColorSwap.SwapSpritesTexture(GetComponent<SpriteRenderer>(), colorPallete);
        foreach (AbilityFlag flag in proto.abilityFlags)
        {
            abilityFlags.SetFlag(flag, true);
        }

        foreach (Ability ability in proto.baseAbilities)
        {
            Ability temp = ScriptableObject.Instantiate(ability);
            temp.OnGainTrigger(this);
        }

        mUpdateId = Game.AddToUpdateList(this);

        Body = new PhysicsBody(this, new CustomAABB(Position, proto.bodySize, new Vector2(0, proto.bodySize.y)));
        Body.mIsKinematic    = proto.kinematic;
        Body.mIgnoresGravity = proto.ignoreGravity;
        List <Color> palette = proto.colorPallete;

        //Stats
        mStats = new Stats();
        mStats.SetStats(prototype.stats);

        instadeathSFX = Resources.Load <AudioClip>("Sounds/SFX/splatter");
    }
Esempio n. 6
0
        }                                           // IReadOnlyCollection

        #endregion

        public Ability(int id, string name, AbilityTargets target, AbilityBehaviors behavior, AbilityKinds kind, ResourceKinds resourceKind, AmountOperators costType, int costAmount, int globalCooldown, int cooldown, int duration, SchoolTypes school, AbilityMechanics mechanic, DispelTypes dispelType, AbilityFlags flags, params AbilityEffect[] effects)
        {
            Id             = id;
            Name           = name;
            Target         = target;
            Behavior       = behavior;
            Kind           = kind;
            ResourceKind   = resourceKind;
            CostType       = costType;
            CostAmount     = costAmount;
            GlobalCooldown = globalCooldown;
            Cooldown       = cooldown;
            Duration       = duration;
            School         = school;
            Mechanic       = mechanic;
            DispelType     = dispelType;
            Flags          = flags;
            Effects        = effects?.ToList();
        }
Esempio n. 7
0
        Ability[] GetAbilities(AbilityFlags metAbilityFlags, int numberOfAbilities, Ability[][] lists)
        {
            var set = new List <Ability>();

            foreach (var abilityList in lists)
            {
                foreach (var ability in abilityList)
                {
                    if (ability.IsUsable(metAbilityFlags))
                    {
                        set.Add(ability);
                    }
                }
            }


            // Pass filted list to the weighting system

            // Randomly fill new array of nuymberOfAbilities weights?

            // Ability groups?


            if (numberOfAbilities > set.Count)
            {
                numberOfAbilities = set.Count;
            }

            #region
            var chosenAbilities = new Ability[numberOfAbilities];
            for (int i = 0; i < numberOfAbilities; i++)
            {
                if (i >= set.Count)
                {
                    break;
                }
                chosenAbilities[i] = set[UnityEngine.Random.Range(0, set.Count)];
            }
            #endregion

            return(chosenAbilities);
        }
 public CharacterAbilityModifyFlag(CharacterAbilityGroup characterAbilityGroup, XElement abilityElement) : base(characterAbilityGroup, abilityElement)
 {
     abilityFlag = CharacterAbilityGroup.ParseFlagType(abilityElement.GetAttributeString("flagtype", ""), CharacterTalent.DebugIdentifier);
 }