private IEnumerator modDashCoroutine(On.Celeste.Player.orig_DashCoroutine orig, Player self) { // intercept the moment when the dash coroutine sends out the dash time // so that we can extend it as long as Dash is pressed. IEnumerator coroutine = orig.Invoke(self); while (coroutine.MoveNext()) { object o = coroutine.Current; if (o != null && o.GetType() == typeof(float)) { yield return(o); while (Input.Dash.Check && hasHeldDash(self)) { yield return(null); } } else { yield return(o); } } yield break; }
private IEnumerator modDashCoroutine(On.Celeste.Player.orig_DashCoroutine orig, Player self) { // intercept the moment when the dash coroutine sends out the dash time // so that we can extend it as long as Dash is pressed. IEnumerator coroutine = orig.Invoke(self); while (coroutine.MoveNext()) { object o = coroutine.Current; if (o != null && o.GetType() == typeof(float)) { yield return(o); while (hasHeldDash(self) && (Input.Dash.Check || (crouchDash != null && crouchDashCheck()))) { DynData <Player> selfData = new DynData <Player>(self); selfData["dashAttackTimer"] = 0.15f; // hold the dash attack timer to continue breaking dash blocks and such. selfData["gliderBoostTimer"] = 0.30f; // hold the glider boost timer to still get boosted by jellies. yield return(null); } } else { yield return(o); } } yield break; }
private IEnumerator onDashCoroutine(On.Celeste.Player.orig_DashCoroutine orig, Player self) { if (Settings.DashDirection == 0) { return(orig(self)); } return(modDashCoroutine(orig(self), self)); }
private IEnumerator onDashCoroutine(On.Celeste.Player.orig_DashCoroutine orig, Player self) { if (!Settings.EnableGrapplingHook) { return(orig(self)); } else { return(modDashCoroutine(orig(self), self)); } }