예제 #1
0
    /**
     * @param attackType
     * Exeuctes attack using a couroutine that is dependent on the return value of @param.
     */
    private IEnumerator executeAttack(AIAttackType attackType) // this should call the attack animation
    {
        // variance
        gun.bulletSpawn.transform.rotation = Gun_Utils.aimVariance(2 ,gameObject, target.gameObject);

        CurrentAttackExecution = attackType;
        switch (CurrentAttackExecution)
        {
            case AIAttackType.Gun:
                if (gun != null)
                {
                    
                    gun.EnemyFire();
                }
                break;
            case AIAttackType.Physical:
                break;
            case AIAttackType.None:
                Debug.LogError("attempted to attack woth no weapon. This should not have happened");
                break;
          
        }



        yield return new WaitForSeconds(gun.rateOfFire); // replace this line


        AttackCoroutine = null; // this must be last call

    }
예제 #2
0
        public CustomAI(MonsterInfo info) : base(info)
        {
            if (Info.Attacks != null &&
                Info.Attacks.Count > 0)
            {
                if (Info.Attacks.Count == 1)
                {
                    Attack1Time        = info.Attacks[0].Delay;
                    AttackType1        = info.Attacks[0].AttackType;
                    AttackStyle1       = info.Attacks[0].AttackStyle;
                    AttackEffect1      = info.Attacks[0].AttackEffect;
                    Debuff1            = info.Attacks[0].Debuff;
                    CanSteal1          = info.Attacks[0].Steal;
                    DebuffDuration1    = info.Attacks[0].DebuffDuration;
                    DebuffStealAmount1 = info.Attacks[0].StealPercent;
                    StealDuration1     = info.Attacks[0].StealDuration;
                }
                if (Info.Attacks.Count == 2)
                {
                    Attack1Time        = info.Attacks[0].Delay;
                    AttackType1        = info.Attacks[0].AttackType;
                    AttackStyle1       = info.Attacks[0].AttackStyle;
                    AttackEffect1      = info.Attacks[0].AttackEffect;
                    Debuff1            = info.Attacks[0].Debuff;
                    CanSteal1          = info.Attacks[0].Steal;
                    DebuffDuration1    = info.Attacks[0].DebuffDuration;
                    DebuffStealAmount1 = info.Attacks[0].StealPercent;
                    StealDuration1     = info.Attacks[0].StealDuration;
                    Attack2Time        = info.Attacks[1].Delay;
                    AttackType2        = info.Attacks[1].AttackType;
                    AttackStyle2       = info.Attacks[1].AttackStyle;
                    AttackEffect2      = info.Attacks[1].AttackEffect;
                    Debuff2            = info.Attacks[1].Debuff;
                    CanSteal2          = info.Attacks[1].Steal;
                    DebuffDuration2    = info.Attacks[1].DebuffDuration;
                    DebuffStealAmount2 = info.Attacks[1].StealPercent;
                    StealDuration2     = info.Attacks[1].StealDuration;
                }
                if (Info.Attacks.Count == 3)
                {
                    Attack1Time        = info.Attacks[0].Delay;
                    AttackType1        = info.Attacks[0].AttackType;
                    AttackStyle1       = info.Attacks[0].AttackStyle;
                    AttackEffect1      = info.Attacks[0].AttackEffect;
                    Debuff1            = info.Attacks[0].Debuff;
                    CanSteal1          = info.Attacks[0].Steal;
                    DebuffDuration1    = info.Attacks[0].DebuffDuration;
                    DebuffStealAmount1 = info.Attacks[0].StealPercent;
                    StealDuration1     = info.Attacks[0].StealDuration;
                    Attack2Time        = info.Attacks[1].Delay;
                    AttackType2        = info.Attacks[1].AttackType;
                    AttackStyle2       = info.Attacks[1].AttackStyle;
                    AttackEffect2      = info.Attacks[1].AttackEffect;
                    Debuff2            = info.Attacks[1].Debuff;
                    CanSteal2          = info.Attacks[1].Steal;
                    DebuffDuration2    = info.Attacks[1].DebuffDuration;
                    DebuffStealAmount2 = info.Attacks[1].StealPercent;
                    StealDuration2     = info.Attacks[1].StealDuration;
                    Attack3Time        = info.Attacks[2].Delay;
                    AttackType3        = info.Attacks[2].AttackType;
                    AttackStyle3       = info.Attacks[2].AttackStyle;
                    AttackEffect3      = info.Attacks[2].AttackEffect;
                    Debuff3            = info.Attacks[2].Debuff;
                    CanSteal3          = info.Attacks[2].Steal;
                    DebuffDuration3    = info.Attacks[2].DebuffDuration;
                    DebuffStealAmount3 = info.Attacks[2].StealPercent;
                    StealDuration3     = info.Attacks[2].StealDuration;
                }
                if (Info.Attacks.Count == 4)
                {
                    Attack1Time        = info.Attacks[0].Delay;
                    AttackType1        = info.Attacks[0].AttackType;
                    AttackStyle1       = info.Attacks[0].AttackStyle;
                    AttackEffect1      = info.Attacks[0].AttackEffect;
                    Debuff1            = info.Attacks[0].Debuff;
                    CanSteal1          = info.Attacks[0].Steal;
                    DebuffDuration1    = info.Attacks[0].DebuffDuration;
                    DebuffStealAmount1 = info.Attacks[0].StealPercent;
                    StealDuration1     = info.Attacks[0].StealDuration;
                    Attack2Time        = info.Attacks[1].Delay;
                    AttackType2        = info.Attacks[1].AttackType;
                    AttackStyle2       = info.Attacks[1].AttackStyle;
                    AttackEffect2      = info.Attacks[1].AttackEffect;
                    Debuff2            = info.Attacks[1].Debuff;
                    CanSteal2          = info.Attacks[1].Steal;
                    DebuffDuration2    = info.Attacks[1].DebuffDuration;
                    DebuffStealAmount2 = info.Attacks[1].StealPercent;
                    StealDuration2     = info.Attacks[1].StealDuration;
                    Attack3Time        = info.Attacks[2].Delay;
                    AttackType3        = info.Attacks[2].AttackType;
                    AttackStyle3       = info.Attacks[2].AttackStyle;
                    AttackEffect3      = info.Attacks[2].AttackEffect;
                    Debuff3            = info.Attacks[2].Debuff;
                    CanSteal3          = info.Attacks[2].Steal;
                    DebuffDuration3    = info.Attacks[2].DebuffDuration;
                    DebuffStealAmount3 = info.Attacks[2].StealPercent;
                    StealDuration3     = info.Attacks[2].StealDuration;
                    Attack4Time        = info.Attacks[3].Delay;
                    AttackType4        = info.Attacks[3].AttackType;
                    AttackStyle4       = info.Attacks[3].AttackStyle;
                    AttackEffect4      = info.Attacks[3].AttackEffect;
                    Debuff4            = info.Attacks[3].Debuff;
                    CanSteal4          = info.Attacks[3].Steal;
                    DebuffDuration4    = info.Attacks[3].DebuffDuration;
                    DebuffStealAmount4 = info.Attacks[3].StealPercent;
                    StealDuration4     = info.Attacks[3].StealDuration;
                }
                if (Info.Attacks.Count == 5)
                {
                    Attack1Time        = info.Attacks[0].Delay;
                    AttackType1        = info.Attacks[0].AttackType;
                    AttackStyle1       = info.Attacks[0].AttackStyle;
                    AttackEffect1      = info.Attacks[0].AttackEffect;
                    Debuff1            = info.Attacks[0].Debuff;
                    CanSteal1          = info.Attacks[0].Steal;
                    DebuffDuration1    = info.Attacks[0].DebuffDuration;
                    DebuffStealAmount1 = info.Attacks[0].StealPercent;
                    StealDuration1     = info.Attacks[0].StealDuration;
                    Attack2Time        = info.Attacks[1].Delay;
                    AttackType2        = info.Attacks[1].AttackType;
                    AttackStyle2       = info.Attacks[1].AttackStyle;
                    AttackEffect2      = info.Attacks[1].AttackEffect;
                    Debuff2            = info.Attacks[1].Debuff;
                    CanSteal2          = info.Attacks[1].Steal;
                    DebuffDuration2    = info.Attacks[1].DebuffDuration;
                    DebuffStealAmount2 = info.Attacks[1].StealPercent;
                    StealDuration2     = info.Attacks[1].StealDuration;
                    Attack3Time        = info.Attacks[2].Delay;
                    AttackType3        = info.Attacks[2].AttackType;
                    AttackStyle3       = info.Attacks[2].AttackStyle;
                    AttackEffect3      = info.Attacks[2].AttackEffect;
                    Debuff3            = info.Attacks[2].Debuff;
                    CanSteal3          = info.Attacks[2].Steal;
                    DebuffDuration3    = info.Attacks[2].DebuffDuration;
                    DebuffStealAmount3 = info.Attacks[2].StealPercent;
                    StealDuration3     = info.Attacks[2].StealDuration;
                    Attack4Time        = info.Attacks[3].Delay;
                    AttackType4        = info.Attacks[3].AttackType;
                    AttackStyle4       = info.Attacks[3].AttackStyle;
                    AttackEffect4      = info.Attacks[3].AttackEffect;
                    Debuff4            = info.Attacks[3].Debuff;
                    CanSteal4          = info.Attacks[3].Steal;
                    DebuffDuration4    = info.Attacks[3].DebuffDuration;
                    DebuffStealAmount4 = info.Attacks[3].StealPercent;
                    StealDuration4     = info.Attacks[3].StealDuration;
                    Attack5Time        = info.Attacks[4].Delay;
                    AttackType5        = info.Attacks[4].AttackType;
                    AttackStyle5       = info.Attacks[4].AttackStyle;
                    AttackEffect5      = info.Attacks[4].AttackEffect;
                    Debuff5            = info.Attacks[4].Debuff;
                    CanSteal5          = info.Attacks[4].Steal;
                    DebuffDuration5    = info.Attacks[4].DebuffDuration;
                    DebuffStealAmount5 = info.Attacks[4].StealPercent;
                    StealDuration5     = info.Attacks[4].StealDuration;
                }


                numberOfAttacks = (byte)Info.Attacks.Count();
            }
        }
예제 #3
0
    public IEnumerator attack(AIAttackType attackType)
    {
        yield return new WaitUntil(() => CanAttack == true);
        StartCoroutine(executeAttack(attackType));

    }