Пример #1
0
    // 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);
    }
Пример #2
0
    // 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);
    }
Пример #3
0
    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);
    }
Пример #4
0
    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;
        }
    }