IEnumerator DoT(float ammount, int time, IEffectable target, SOEffect effect) { if (ammount != 0) { bool isHeal = (effect.ID == CONSTANTS.EFFECT_REGEN || effect.ID == CONSTANTS.EFFECT_HEAL); for (int i = 0; i < time; i++) { if (!target.AffectedBy(effect)) { // perhaps they got cured break; } if (isHeal) { // hurting target.Heal(ammount); } else { // healing target.Harm(ammount); } yield return(new WaitForSeconds(1)); } target.RemoveEffect(effect); } }
IEnumerator ShrinkLarge(float targetScale, float time, IEffectable target, SOEffect effect) { Vector3 tagetScaleV3 = target.GetDefaultScale() * targetScale; for (float i = 0; i < time; i = i + 1f) { if (!target.AffectedBy(effect)) { // perhaps they got cured break; } Transform t2 = target.GetTransform(); t2.localScale = tagetScaleV3; target.SetTransform(t2); yield return(new WaitForSeconds(1)); } Transform t = target.GetTransform(); t.localScale = target.GetDefaultScale(); target.SetTransform(t); target.RemoveEffect(effect); }
bool applyAffect(SOEffect s, IEffectable target) { if (target.AffectedBy(s)) { return(false); } target.AddEffect(s); return(true); }
IEnumerator SpeedSlow(float factor, float time, IEffectable target, SOEffect effect) { float targetSpeed = target.GetDefaultSpeed() * factor; for (float i = 0; i < time; i = i + 1f) { if (!target.AffectedBy(effect)) { // perhaps they got cured break; } target.SetSpeed(targetSpeed); yield return(new WaitForSeconds(1)); } target.SetSpeed(target.GetDefaultSpeed()); target.RemoveEffect(effect); }
IEnumerator Gravupdown(float factor, float time, IEffectable target, SOEffect effect) { float targetGrav = target.GetDefaultGravity() * factor; float jumpHeight = target.GetDefaultJumpHeight() / factor; for (float i = 0; i < time; i = i + 1f) { if (!target.AffectedBy(effect)) { // perhaps they got cured break; } target.SetGravity(targetGrav); target.SetJumpHeight(jumpHeight); yield return(new WaitForSeconds(1)); } target.SetGravity(target.GetDefaultGravity()); target.SetJumpHeight(target.GetDefaultJumpHeight()); target.RemoveEffect(effect); }