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(); }
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(); }
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(); }
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(); }
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(); }