private void OnLevelDoScreenWipe(On.Celeste.AreaData.orig_DoScreenWipe orig, Celeste.AreaData self, Scene scene, bool wipeIn, Action onComplete) { if (doTaxWipe) { new TaxWipe(scene, wipeIn, onComplete); } else { orig(self, scene, wipeIn, onComplete); } }
// Everest 的 Bug,另外的 Mod Hook 了 PlayerDeadBody.End 方法后 Level.DoScreenWipe Hook 的方法 wipeIn 为 false 时就不触发了 // 所以改成了 Hook AreaData.DoScreenWipe 方法 private void QuickLoadWhenDeath(On.Celeste.AreaData.orig_DoScreenWipe orig, AreaData self, Scene scene, bool wipeIn, Action onComplete) { if (SpeedrunToolModule.Settings.Enabled && SpeedrunToolModule.Settings.AutoLoadAfterDeath && IsSaved && !wipeIn && scene is Level level && onComplete != null && (onComplete == level.Reload || currentPlayerDeadBody?.HasGolden == true)) { Action complete = onComplete; currentPlayerDeadBody = null; onComplete = () => { if (IsSaved) { LoadState(); } else { complete(); } }; } orig(self, scene, wipeIn, onComplete); }