Example #1
0
        IEnumerator StunTimer(AbilitiesAndStatusEffects effect)
        {
            yield return(new WaitForSeconds(effect.GetStatusEffectLifeTime()));

            isStunned = false;
            GetComponent <DefenceApplicator>().RemoveStatusEffect(effect.GetStatusEffect());
        }
    IEnumerator Relentless(AbilitiesAndStatusEffects ability)
    {
        Debug.Log("Relentless started.");
        Attacker attacker            = GetComponent <Attacker>();
        float    startingAttackSpeed = attacker.GetAttackSpeed();

        isRelentlessInProgress = true;
        bool isEnemyInRange = true;

        while (isEnemyInRange)
        {
            Debug.Log("Relentless continues.");
            isEnemyInRange = false;
            Enemy[] enemies = FindObjectsOfType <Enemy>();
            foreach (Enemy enemy in enemies)
            {
                if (Vector3.Distance(enemy.transform.position, transform.position) <= attacker.GetRange())
                {
                    isEnemyInRange = true;
                }
            }
            yield return(new WaitForSeconds(1f));

            attacker.SetAttackSpeed(attacker.GetAttackSpeed() + ability.GetAttackSpeedIncrease());
            Debug.Log("New attack speed = " + attacker.GetAttackSpeed());
        }
        Debug.Log("Relentless Ended.");
        attacker.SetAttackSpeed(startingAttackSpeed);
        isRelentlessInProgress = false;
    }
 public void ApplyStatusEffect(AbilitiesAndStatusEffects effect)
 {
     if (poisonCo != null)
     {
         StopCoroutine(poisonCo);
     }
     poisonCo = StartCoroutine(ProcessPoison(effect));
 }
        IEnumerator ProcessPoison(AbilitiesAndStatusEffects effect)
        {
            for (int i = 0; i < effect.GetStatusEffectLifeTime(); i++)
            {
                yield return(new WaitForSeconds(1));

                LoseHealth(effect.GetStatusEffectDamage());
            }
            GetComponent <DefenceApplicator>().RemoveStatusEffect(effect.GetStatusEffect());
        }
 private void TriggerStatusEffect(AbilitiesAndStatusEffects effect)
 {
     if (effect.GetStatusEffect() == statusEffects.Poisoned)
     {
         GetComponent <Health>().ApplyStatusEffect(effect);
     }
     if (effect.GetStatusEffect() == statusEffects.Stunned)
     {
         GetComponent <Mover>().ApplyStatusEffect(effect);
     }
 }
Example #6
0
 public void ApplyStatusEffect(AbilitiesAndStatusEffects effect)
 {
     if (Mathf.RoundToInt(Random.Range(0.5f, effect.GetEffectChance() + (0.5f - Mathf.Epsilon))) == 1)
     {
         isStunned = true;
         navMeshAgent.ResetPath();
         StartCoroutine(StunTimer(effect));
     }
     else
     {
         GetComponent <DefenceApplicator>().RemoveStatusEffect(effect.GetStatusEffect());
     }
 }