// SHIELD BOOSTER // public void ShieldBoosterRoutine(CharacterAttributes attributes, GameObject target, float length, Object booster) { AOETargetController aoeController = target.GetComponent <AOETargetController>(); GameObject[] affectedPlayersCopy = new GameObject[aoeController.affectedPlayers.Count]; aoeController.affectedPlayers.CopyTo(affectedPlayersCopy); StartCoroutine(ShieldBoosterEffect(affectedPlayersCopy, length, booster)); Destroy(target); }
// SHOCKWAVE // public void ShockwaveRoutine(Transform playerOrigin, GameObject target, Object blast, float damage, float stunLength) { AOETargetController aoeController = target.GetComponent <AOETargetController>(); GameObject[] affectedEnemiesCopy = new GameObject[aoeController.affectedEnemies.Count]; aoeController.affectedEnemies.CopyTo(affectedEnemiesCopy); Instantiate(blast, playerOrigin.position, Quaternion.Euler(-90, 0, 0)); foreach (GameObject enemy in affectedEnemiesCopy) { Vector3 nextEnemyPos = (Vector3.Normalize(enemy.transform.position - playerOrigin.position) * 9.0f) + playerOrigin.position; StartCoroutine(ShockwaveEnemy(enemy.transform, nextEnemyPos, 0.5f)); enemy.GetComponent <EnemyHealth>().TakeDamage(damage); } Destroy(target); }
private IEnumerator Explode(CharacterAttributes attributes, GameObject origin, GameObject target, float damage, Object explosion, float timeToCast) { yield return(new WaitForSeconds(timeToCast)); AOETargetController aoeController = target.GetComponent <AOETargetController>(); foreach (GameObject enemy in aoeController.affectedEnemies) { enemy.GetComponent <EnemyHealth>().TakeDamage(damage); } Object exp = Instantiate(explosion, target.transform.position, Quaternion.identity); Destroy(target, 0.05f); Destroy(exp, 1.0f); }
private IEnumerator HealOverTime() { float tracker = 0.0f; while (tracker < healLength) { yield return(new WaitForSeconds(healRate)); AOETargetController aoeController = target.GetComponent <AOETargetController>(); foreach (GameObject player in aoeController.affectedPlayers) { player.GetComponent <PlayerResources>().Heal(healHP); //Debug.Log(name + " on " + target.name + " does " + healHP + " heal."); } tracker += healRate; } }