private void UpdateTimerStateOnTouchFlag(On.Celeste.Session.orig_SetFlag origSetFlag, Session session,
                                                 string flag, bool setTo)
        {
            origSetFlag(session, flag, setTo);

            if (flag.StartsWith("summit_checkpoint_") && setTo)
            {
                lastTime = SaveData.Instance.Time;
            }
        }
示例#2
0
        private void UpdateTimerStateOnTouchFlag(On.Celeste.Session.orig_SetFlag origSetFlag, Session session,
                                                 string flag, bool setTo)
        {
            origSetFlag(session, flag, setTo);

            // 似乎通过地图选择旗子作为传送点会预设旗子,所以从第二面碰到的旗子开始才改变计时状态
            // F1 F2 F3 因为有保存旗子状态所以不受影响
            if (flag.StartsWith(FlagPrefix) && setTo &&
                session.Flags.Count(input => input.StartsWith(FlagPrefix)) >= 2)
            {
                UpdateTimerState();
            }
        }
示例#3
0
        private static void SessionOnSetFlag(On.Celeste.Session.orig_SetFlag orig, Session self, string flag,
                                             bool setTo)
        {
            orig(self, flag, setTo);

            // 似乎通过地图选择旗子作为传送点会预设旗子,所以从第二面碰到的旗子开始才开始记录位置
            if (flag.StartsWith(FlagPrefix) && setTo && self.Flags.Count(input => input.StartsWith(FlagPrefix)) >= 2)
            {
                if (Engine.Scene is Level level && level.Entities.FindFirst <Player>() is Player player)
                {
                    player.Add(new Coroutine(WaitSessionReady(self)));
                }
            }
        }