private Color OnPlayerHair_GetHairColor(On.Celeste.PlayerHair.orig_GetHairColor orig, Celeste.PlayerHair self, int index) { if (Settings.Enabled && (self.Entity is Celeste.Player)) { Celeste.Player player = self.Entity as Celeste.Player; if (player.StateMachine.State != 19 && (player.Sprite.Mode == PlayerSpriteMode.Madeline || player.Sprite.Mode == PlayerSpriteMode.MadelineNoBackpack)) { int colorIndex = 1; if (player.Inventory.Dashes > 0) { colorIndex = player.Dashes; } switch (colorIndex) { case 0: return(new Color(134, 135, 138)); case 1: return(new Color(78, 60, 42)); case 2: return(new Color(237, 194, 18)); } } } return(orig(self, index)); }
private void OnPlayerUpdate(On.Celeste.Player.orig_Update orig, Celeste.Player self) { if (Settings.Enabled) { var wasOnGroundField = typeof(Celeste.Player).GetField("onGround", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); bool wasOnGround = (bool)wasOnGroundField.GetValue(self); orig(self); var isOnGroundField = typeof(Celeste.Player).GetField("onGround", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); bool isOnGround = (bool)isOnGroundField.GetValue(self); if (self.InControl && isOnGround && (wasOnGround != isOnGround)) { ApplyRules(self.Scene, "Land"); } if (Engine.Scene.OnInterval(Calc.LerpClamp(0.05f, 0, Math.Min(0.99f, Session.AnxietyBonus)))) { Session.AnxietyStutter = Calc.Random.NextFloat(); } } else { orig(self); } }
private void OnPlayerDuck(On.Celeste.Player.orig_Duck orig, Celeste.Player self) { orig(self); if (Settings.Enabled) { ApplyRules(self.Scene, "Duck"); } }
private void OnPlayerJump(On.Celeste.Player.orig_Jump orig, Celeste.Player self, bool particles, bool playSfx) { if (Settings.Enabled && self.InControl) { ApplyRules(self.Scene, "Jump"); } orig(self, particles, playSfx); }
private void OnPlayerDashBegin(On.Celeste.Player.orig_DashBegin orig, Celeste.Player self) { if (Settings.Enabled && self.InControl) { ApplyRules(self.Scene, "Dash"); } orig(self); }
private static bool Pickup(On.Celeste.Player.orig_Pickup orig, Celeste.Player self, Celeste.Holdable pickup) { if (self.Holding == null || !(self.Holding.Entity is ThrowBox)) { return(orig(self, pickup)); } return(false); }
private Celeste.PlayerDeadBody OnPlayerDie(On.Celeste.Player.orig_Die orig, Celeste.Player self, Vector2 direction, bool evenIfInvincible, bool registerDeathInStats) { PlayerDeadBody result = orig(self, direction, evenIfInvincible, registerDeathInStats); if (Settings.Enabled && result != null) { ApplyRules(self.Scene, "Die"); } return(result); }
private bool OnPlayerUseRefill(On.Celeste.Player.orig_UseRefill orig, Celeste.Player self, bool twoDashes) { bool refilled = orig(self, twoDashes); if (refilled && Settings.Enabled) { ApplyRules(self.Scene, "Refill"); } return(refilled); }
private bool OnPlayerStartStarFly(On.Celeste.Player.orig_StartStarFly orig, Celeste.Player self) { bool startedFly = orig(self); if (startedFly && Settings.Enabled) { ApplyRules(self.Scene, "Feather"); } return(startedFly); }
public static IEnumerator OshiroSpawnRoutine(Celeste.Player player, int count) { while (count > 0) { yield return(0.5f); Celeste.AngryOshiro oshiro = new Celeste.AngryOshiro(new Vector2(player.SceneAs <Celeste.Level>().Bounds.Left - 64, player.Position.Y), false); player.Scene.Add(oshiro); Session.SpawnedOshiros.Add(oshiro); count--; } }
private static void LoadLevel(On.Celeste.Level.orig_LoadLevel orig, Celeste.Level self, Celeste.Player.IntroTypes playerIntro, bool isFromLoader) { orig(self, playerIntro, isFromLoader); if (playerIntro != Celeste.Player.IntroTypes.Transition || isFromLoader) { Celeste.Player player = self.Tracker.GetEntity <Celeste.Player>(); foreach (Celeste.EntityID key in (FactoryHelperModule.Instance._Session as FactoryHelperSession).Batteries) { self.Add(new Battery(player, key)); } } }
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 OnLevelLoadLevel(On.Celeste.Level.orig_LoadLevel orig, Celeste.Level self, Celeste.Player.IntroTypes playerIntro, bool isFromLoader) { orig(self, playerIntro, isFromLoader); Session.SpawnedOshiros.Clear(); Session.SpawnedBadelineChasers.Clear(); if (Settings.Enabled) { Celeste.Player player = self.Tracker.GetEntity <Celeste.Player>(); if (!isFromLoader) { ApplyRules(self, "ScreenChange"); if (self.NewLevel) { ApplyRules(self, "NewRoom"); } } if (player != null) { int chaserCount = self.Tracker.CountEntities <BadelineOldsite>() + self.Tracker.CountEntities <EveryTimeCustomChaser>(); int added = 0; while (added < Session.ChaserCount) { if (chaserCount >= 7) { break; } EveryTimeCustomChaser chaser = new EveryTimeCustomChaser(player.Position + Vector2.UnitY * 32, chaserCount++); self.Add(chaser); Session.SpawnedBadelineChasers.Add(chaser); added++; } player.Add(new Coroutine(OshiroSpawnRoutine(player, Session.OshiroCount))); } } }
private static Celeste.PlayerDeadBody PlayerDie(On.Celeste.Player.orig_Die orig, Celeste.Player self, Vector2 direction, bool evenIfInvincible, bool registerDeathInStats) { Celeste.Session session = (self.Scene as Celeste.Level).Session; Celeste.PlayerDeadBody playerDeadBody = orig(self, direction, evenIfInvincible, registerDeathInStats); if (playerDeadBody != null) { Celeste.Strawberry goldenStrawb = null; foreach (Celeste.Follower follower in self.Leader.Followers) { if (follower.Entity is Celeste.Strawberry && (follower.Entity as Celeste.Strawberry).Golden && !(follower.Entity as Celeste.Strawberry).Winged) { goldenStrawb = (follower.Entity as Celeste.Strawberry); } } Vector2?specialBoxLevel = (FactoryHelperModule.Instance._Session as FactoryHelperSession).SpecialBoxPosition; if (goldenStrawb == null && specialBoxLevel != null) { playerDeadBody.DeathAction = delegate { Engine.Scene = new Celeste.LevelExit(Celeste.LevelExit.Mode.Restart, session); }; } } return(playerDeadBody); }
private static IEnumerator LookRoutine(On.Celeste.Lookout.orig_LookRoutine orig, Celeste.Lookout self, Celeste.Player player) { SteamWall steamWall = self.Scene.Tracker.GetEntity <SteamWall>(); if (steamWall != null) { steamWall.Halted = true; } yield return(orig(self, player)); if (steamWall != null) { steamWall.Halted = false; } }
private static Celeste.PlayerDeadBody OnDeath(On.Celeste.Player.orig_Die orig, Celeste.Player self, Vector2 direction, bool evenIfInvincible, bool registerDeathInStats) { Celeste.PlayerDeadBody result = orig(self, direction, evenIfInvincible, registerDeathInStats); if (result != null) { string level = self.SceneAs <Celeste.Level>().Session.Level; if (TrollLandModule.Session.DeathCountPerLevel.ContainsKey(level)) { TrollLandModule.Session.DeathCountPerLevel[level] += 1; } else { TrollLandModule.Session.DeathCountPerLevel[level] = 1; } } return(result); }
private void OnPlayerDreamDashBegin(On.Celeste.Player.orig_DreamDashBegin orig, Celeste.Player self) { orig(self); if (Settings.Enabled) { ApplyRules(self.Scene, "DreamDash"); } }
private void OnKeyOnPlayer(On.Celeste.Key.orig_OnPlayer orig, Celeste.Key self, Celeste.Player player) { orig(self, player); if (Settings.Enabled) { ApplyRules(self.Scene, "CollectKey"); } }
private void OnHeartGemCollect(On.Celeste.HeartGem.orig_Collect orig, Celeste.HeartGem self, Celeste.Player player) { orig(self, player); if (Settings.Enabled) { ApplyRules(self.Scene, "CollectHeart"); } }
private static IEnumerator LookRoutine(On.Celeste.Lookout.orig_LookRoutine orig, Celeste.Lookout self, Celeste.Player player) { SteamWall steamWall = self.Scene.Tracker.GetEntity <SteamWall>(); if (steamWall != null) { steamWall.Halted = true; } IEnumerator enumerator = orig(self, player); while (enumerator.MoveNext()) { yield return(enumerator.Current); } if (steamWall != null) { steamWall.Halted = false; } }
private void OnSpringOnCollide(On.Celeste.Spring.orig_OnCollide orig, Celeste.Spring self, Celeste.Player player) { orig(self, player); if (Settings.Enabled) { var canUseField = typeof(Celeste.Spring).GetField("playerCanUse", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); if (!(player.StateMachine.State == 9 || !(bool)canUseField.GetValue(self))) { ApplyRules(player.Scene, "Spring"); } } }
private void modJump(On.Celeste.Player.orig_Jump orig, Celeste.Player self, bool particles, bool playSfx) { orig(self, particles, playSfx); forceUltra(self); }
private IEnumerator OnLookoutLookRoutine(On.Celeste.Lookout.orig_LookRoutine orig, Celeste.Lookout self, Celeste.Player player) { IEnumerator enumerator = orig(self, player); while (enumerator.MoveNext()) { yield return(enumerator.Current); } if (Settings.Enabled && player != null) { doTaxWipe = true; player.Die(-Vector2.UnitY); } }