private void onPlayerConstructor(On.Celeste.Player.orig_ctor orig, Player self, Vector2 position, PlayerSpriteMode spriteMode) { orig(self, position, spriteMode); // make the player spy on transitions self.Add(new TransitionListener { OnOutBegin = () => transitionPercent = 0f, OnOut = percent => transitionPercent = percent }); }
// Adds custom dream tunnel dash state private static void Player_ctor(On.Celeste.Player.orig_ctor orig, Player player, Vector2 position, PlayerSpriteMode spriteMode) { orig(player, position, spriteMode); HasDreamTunnelDash = dreamTunnelDashAttacking = false; if (StDreamTunnelDash != -1) { Extensions.UnregisterState(StDreamTunnelDash); } StDreamTunnelDash = player.StateMachine.AddState(player.DreamTunnelDashUpdate, null, player.DreamTunnelDashBegin, player.DreamTunnelDashEnd); Extensions.RegisterState(StDreamTunnelDash, "StDreamTunnelDash"); }
private void Player_ctor(On.Celeste.Player.orig_ctor orig, Player self, Vector2 position, PlayerSpriteMode spriteMode) { orig(self, position, spriteMode); self.Add(new TransitionListener() { OnOutBegin = () => { Transitioning = true; }, OnInEnd = () => { Transitioning = false; } }); }
private static void ctor(On.Celeste.Player.orig_ctor orig, Celeste.Player self, Vector2 position, PlayerSpriteMode spriteMode) { orig(self, position, spriteMode); var conveyorMover = new ConveyorMover(); conveyorMover.OnMove = (amount) => { if (self.StateMachine.State != 1) { self.MoveH(amount * Engine.DeltaTime); } }; self.Add(conveyorMover); }
private void Player_ctor(On.Celeste.Player.orig_ctor orig, Player self, Vector2 position, PlayerSpriteMode spriteMode) { orig(self, position, spriteMode); new DynData <Player>(self).Set("lastDreamSpeed", 0f); // Let's define new states // .AddState is defined in StateMachineExt YellowBoostState = self.StateMachine.AddState(new Func <int>(YellowBoostUpdate), YellowBoostCoroutine, YellowBoostBegin, YellowBoostEnd); GenericCustomBooster.CustomBoostState = self.StateMachine.AddState(new Func <int>(GenericCustomBooster.BoostUpdate), GenericCustomBooster.BoostCoroutine, GenericCustomBooster.BoostBegin, GenericCustomBooster.BoostEnd); GenericCustomBooster.CustomRedBoostState = self.StateMachine.AddState(new Func <int>(GenericCustomBooster.RedDashUpdate), GenericCustomBooster.RedDashCoroutine, GenericCustomBooster.RedDashBegin, GenericCustomBooster.RedDashEnd); #pragma warning disable CS0618 // Type or member is obsolete CustomDreamDashState = self.StateMachine.AddState(new Func <int>(CustomDreamBlock.DreamDashUpdate), null, CustomDreamBlock.DreamDashBegin, CustomDreamBlock.DreamDashEnd); #pragma warning restore CS0618 // Type or member is obsolete CustomFeather.CustomFeatherState = self.StateMachine.AddState(CustomFeather.StarFlyUpdate, CustomFeather.CustomFeatherCoroutine, CustomFeather.CustomFeatherBegin, CustomFeather.CustomFeatherEnd); }
private static void onPlayerConstructor(On.Celeste.Player.orig_ctor orig, Player self, Vector2 position, PlayerSpriteMode spriteMode) { orig(self, position, spriteMode); Collision originalSquishCallback = self.SquishCallback; Collision patchedSquishCallback = collisionData => { // State 21 is the state where the player is located within the Cassette Bubble. // They shouldn't be squished by moving blocks inside of it, so we prevent that. if (self.StateMachine.State == 21) { return; } originalSquishCallback(collisionData); }; self.SquishCallback = patchedSquishCallback; }
private static void onPlayerConstructor(On.Celeste.Player.orig_ctor orig, Player self, Vector2 position, PlayerSpriteMode spriteMode) { orig(self, position, spriteMode); Collision originalOnCollideV = (Collision)playerOnCollideV.GetValue(self); Collision patchedOnCollideV = collisionData => { // we just want to kill a piece of code that executes in these conditions (supposed to push the player left or right when hitting a wall angle). if (self.StateMachine.State != 19 && self.StateMachine.State != 3 && self.StateMachine.State != 9 && self.Speed.Y < 0 && self.CollideCheckOutside <UpsideDownJumpThru>(self.Position - Vector2.UnitY)) { // kill the player's vertical speed. self.Speed.Y = 0; // reset varJumpTimer to prevent a weird "stuck on ceiling" effect. playerVarJumpTimer.SetValue(self, 0); } originalOnCollideV(collisionData); }; playerOnCollideV.SetValue(self, patchedOnCollideV); }
private static void PlayerOnCtor(On.Celeste.Player.orig_ctor orig, Player self, Vector2 position, PlayerSpriteMode spriteMode) { self.SetEntityId2(EntityId2.PlayerFixedEntityId2); orig(self, position, spriteMode); }
private void modPlayerConstructor(On.Celeste.Player.orig_ctor orig, Player self, Vector2 position, PlayerSpriteMode spriteMode) { forceRefillStamina = true; orig(self, position, spriteMode); forceRefillStamina = false; }
private void Player_ctor1(On.Celeste.Player.orig_ctor orig, Player self, Vector2 position, PlayerSpriteMode spriteMode) { orig(self, position, spriteMode); thePlayer = self; self.StateMachine.SetCallbacks(26, new Func <int>(this.RewindTime)); }