Exemple #1
0
    private IEnumerator IcebergCoroutine()
    {
        yield return(new WaitForSeconds(icebergFallSeconds));

        Vector3 destructionPosition = icebergSpawner.endPosition.position;

        destructionPosition.y = 0;
        GameObject iceDestructionParticles = Instantiate(iceDestructionPrefab, destructionPosition, iceDestructionPrefab.transform.rotation);

        Destroy(iceDestructionParticles, 2f);

        List <GameObject> enemies = _enemyHolder.enemies;

        for (int i = enemies.Count - 1; i >= 0; i--)
        {
            EnemyDebuff enemyDebuff = enemies[i].GetComponent <EnemyDebuff>();
            if (enemyDebuff != null)
            {
                enemyDebuff.Freeze(freezeDebuffDurationSeconds * effectMultiplier);
            }

            EnemyAnimator enemyAnimator = enemies[i].GetComponent <EnemyAnimator>();
            if (enemyAnimator != null)
            {
                enemyAnimator.Pause(freezeDebuffDurationSeconds * effectMultiplier);
            }

            Health health = enemies[i].GetComponent <Health>();
            health.Sub((int)(7f * effectMultiplier));
        }
    }
Exemple #2
0
    public void Debuff(GameObject target)
    {
        EnemyDebuff enemyDebuff = target.GetComponent <EnemyDebuff>();

        if (enemyDebuff)
        {
            enemyDebuff.Freeze(duration);
        }
    }
Exemple #3
0
    private IEnumerator HailCoroutine()
    {
        yield return(new WaitForSeconds(hailDurationSeconds));

        List <GameObject> enemies = _enemyHolder.enemies;

        for (int i = enemies.Count - 1; i >= 0; i--)
        {
            EnemyDebuff enemyDebuff = enemies[i].GetComponent <EnemyDebuff>();
            if (enemyDebuff != null)
            {
                enemyDebuff.Stun(stormDurationSeconds * effectMultiplier * 2f);
            }

            Health health = enemies[i].GetComponent <Health>();
            health.Sub((int)(health.max / 3f * effectMultiplier));
        }
    }
Exemple #4
0
    private IEnumerator StormCoroutine()
    {
        yield return(new WaitForSeconds(stormDurationSeconds / 2f));

        List <GameObject> enemies = _enemyHolder.enemies;

        for (int i = enemies.Count - 1; i >= 0; i--)
        {
            EnemyDebuff enemyDebuff = enemies[i].GetComponent <EnemyDebuff>();
            if (enemyDebuff != null)
            {
                enemyDebuff.SlowDown(stormDurationSeconds * effectMultiplier * 2f);
                enemyDebuff.Stun(stormDurationSeconds * effectMultiplier * 2f);
                _enemiesStunned = true;
            }

            EnemyAnimator enemyAnimator = enemies[i].GetComponent <EnemyAnimator>();
            if (enemyAnimator != null)
            {
                enemyAnimator.SlowDown(true);
            }
        }

        if (_enemiesStunned)
        {
            _audioSource.clip = stunSound;
            _audioSource.outputAudioMixerGroup = stunAudioMixer;
            _audioSource.Play();
            _enemiesStunned = false;
        }

        yield return(new WaitForSeconds(stormDurationSeconds * effectMultiplier * 2f));

        for (int i = enemies.Count - 1; i >= 0; i--)
        {
            EnemyAnimator enemyAnimator = enemies[i].GetComponent <EnemyAnimator>();
            if (enemyAnimator != null)
            {
                enemyAnimator.SlowDown(false);
            }
        }
    }