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 void LevelEnterGo(On.Celeste.LevelEnter.orig_Go orig, Celeste.Session session, bool fromSaveData)
 {
     if (!fromSaveData && session.StartedFromBeginning && session.Area.Mode == AreaMode.Normal && session.Area.ChapterIndex == 1 && session.Area.GetLevelSet() == "KaydenFox/FactoryMod")
     {
         Engine.Scene = new FactoryIntroVignette(session);
     }
     else
     {
         orig(session, fromSaveData);
     }
 }
 private void OnLevelLoader_ctor(On.Celeste.LevelLoader.orig_ctor orig, Celeste.LevelLoader self, Celeste.Session session, Vector2?startPosition)
 {
     orig(self, session, startPosition);
     Celeste.PlayerSprite.CreateFramesMetadata("player_KaydenFox");
     Celeste.PlayerSprite.CreateFramesMetadata("player_no_backpack_KaydenFox");
 }