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