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; } }
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(); } }
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))); } } }