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)); } }
public void Debuff(GameObject target) { EnemyDebuff enemyDebuff = target.GetComponent <EnemyDebuff>(); if (enemyDebuff) { enemyDebuff.Freeze(duration); } }
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)); } }
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); } } }