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