protected override IEnumerator EffectLogic()
    {
        attackPowerPercent = attackPowerPercent / 100;

        while (timer <= duration)
        {
            yield return(new WaitForSeconds(tickFreq));

            if (MyStats == null || TheirStats.IsDead || MyStats.IsDead)
            {
                break;
            }
            else
            {
                TheirStats.TakeDamage(attackPowerPercent * MyStats.attackPower.GetValue(), MyStats, false);

                if (effectPrefab != null)
                {
                    ObjectPooler.Instance.ActivatePooledObject(effectPrefab, TheirStats.transform.position + offset, TheirStats.transform.rotation, tickFreq + 0.5f, transform);
                }
            }
        }

        RemoveAndDestroy();
    }
Exemplo n.º 2
0
    protected override IEnumerator EffectLogic()
    {
        NPCController    npcController    = null;
        PlayerController playerController = null;

        if (TheirStats.GetComponent <NPCController>())
        {
            npcController = TheirStats.GetComponent <NPCController>();
        }
        else if (TheirStats.GetComponent <PlayerController>())
        {
            playerController = TheirStats.GetComponent <PlayerController>();
        }

        NavMeshAgent agent = TheirStats.GetComponent <NavMeshAgent>();

        if (effectPrefab != null)
        {
            ObjectPooler.Instance.ActivatePooledObject(effectPrefab, TheirStats.transform.position, TheirStats.transform.rotation, duration, TheirStats.transform);
        }

        if (!TheirStats.IsDead)
        {
            agent.isStopped = true;

            if (npcController != null)
            {
                npcController.enabled = false;
            }
            else if (playerController != null)
            {
                playerController.enabled = false;
            }
        }

        yield return(new WaitForSeconds(duration));

        if (!TheirStats.IsDead)
        {
            if (npcController != null)
            {
                npcController.enabled = true;
            }
            else if (playerController != null)
            {
                playerController.enabled = true;
            }

            agent.isStopped = false;
        }

        RemoveAndDestroy();
    }
Exemplo n.º 3
0
    protected override IEnumerator EffectLogic()
    {
        NavMeshAgent agent = TheirStats.GetComponent <NavMeshAgent>();

        if (effectPrefab != null)
        {
            ObjectPooler.Instance.ActivatePooledObject(effectPrefab, TheirStats.transform.position, TheirStats.transform.rotation, duration, TheirStats.transform);
        }

        agent.isStopped = true;

        yield return(new WaitForSeconds(duration));

        agent.isStopped = false;

        RemoveAndDestroy();
    }
Exemplo n.º 4
0
    protected override IEnumerator EffectLogic()
    {
        baseHealPerTick = baseHealPerTick / 100;
        while (timer <= duration)
        {
            yield return(new WaitForSeconds(tickFreq));

            if (TheirStats.CurrentHealth <= 0)
            {
                break;
            }
            TheirStats.TakeHeal(baseHealPerTick * MyStats.attackPower.GetValue(), MyStats);
            if (effectPrefab != null)
            {
                ObjectPooler.Instance.ActivatePooledObject(effectPrefab, TheirStats.transform.position, TheirStats.transform.rotation, 2, TheirStats.transform);
            }
        }

        RemoveAndDestroy();
    }
Exemplo n.º 5
0
    protected override IEnumerator EffectLogic()
    {
        NavMeshAgent agent = TheirStats.GetComponent <NavMeshAgent>();

        if (effectPrefab != null)
        {
            ObjectPooler.Instance.ActivatePooledObject(effectPrefab, TheirStats.transform.position, TheirStats.transform.rotation, duration, TheirStats.transform);
        }

        slowPercent = slowPercent / 100;
        slowPercent = Mathf.Clamp(slowPercent, 0.01f, 0.99f);
        float startingSpeed = agent.speed;

        agent.speed = startingSpeed * slowPercent;

        yield return(new WaitForSeconds(duration));

        agent.speed = startingSpeed;

        RemoveAndDestroy();
    }