diff --git a/Pause/MU3.Sound/patch_SoundManager.cs b/Pause/MU3.Sound/patch_SoundManager.cs index d28b2a1..2d4cab2 100644 --- a/Pause/MU3.Sound/patch_SoundManager.cs +++ b/Pause/MU3.Sound/patch_SoundManager.cs @@ -5,6 +5,8 @@ class patch_SoundManager: SoundManager { private HandleInfo getHandle(Priority priority) => orig_getHandle(priority); private patch_SoundPlayer[] _soundPlayers; public void pause(HandleInfo handle, bool val) { - _soundPlayers[handle.Index].pause(val); + if(handle.Index < _soundPlayers.Length) { + _soundPlayers[handle.Index].pause(val); + } } } \ No newline at end of file diff --git a/SkipNotice/MU3/patch_DailyBonus.cs b/SkipNotice/MU3/patch_DailyBonus.cs new file mode 100644 index 0000000..c5a82ec --- /dev/null +++ b/SkipNotice/MU3/patch_DailyBonus.cs @@ -0,0 +1,27 @@ +using MonoMod; +using MU3.Util; + +namespace MU3; +class patch_DailyBonus: DailyBonus { + [MonoModIgnore] + private enum State { + ItemWindow = 3, + ExitWait = 4, + } + + private float waitCount; + private State _state; + private extern void orig_Update(); + private void Update() { + if(_state < State.ItemWindow) { + if(Singleton.instance.getTriggerOn(UIInput.Key.Decision)) { + waitCount = 100.0f; + } + if(Singleton.instance.getTriggerOn(UIInput.Key.MenuLeft)) { + waitCount = 100.0f; + _state = State.ExitWait; + } + } + orig_Update(); + } +} diff --git a/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs b/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs index b1ca5d7..1eedd11 100644 --- a/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs +++ b/SkipNotice/MU3/patch_Scene_30_NoticeReward.cs @@ -4,27 +4,21 @@ namespace MU3; class patch_Scene_30_NoticeReward: Scene_30_NoticeReward { private Mode _mode; - public static bool Skipped { get; private set; } private enum State { RankingReward = 2, FadeOut = 8, } private void Start() { - Skipped = false; + using IniFile iniFile = new("mu3.ini"); + + var quickLogin = iniFile.getValue("Sequence", "QuickLogin", false); + _mode = new Mode(this); - _mode.set(State.RankingReward); - SingletonMonoBehaviour.instance.Panel.pushState(0, show: true); - } - private void Update() { - if(_mode.get() < (int)State.FadeOut && Singleton.instance.getTriggerOn(UIInput.Key.MenuLeft)) { - Skipped = true; + if(quickLogin) { _mode.set(State.FadeOut); } else { - _mode.update(); + _mode.set(State.RankingReward); + SingletonMonoBehaviour.instance.Panel.pushState(0, show: true); } } - - private void End_Init() { - Skipped = false; - } } \ No newline at end of file diff --git a/SkipNotice/MU3/patch_UIGetRewards.cs b/SkipNotice/MU3/patch_UIGetRewards.cs deleted file mode 100644 index 30f7b61..0000000 --- a/SkipNotice/MU3/patch_UIGetRewards.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace MU3; -class patch_UIGetRewards: UIGetRewards { - private extern void orig_invokeOnFinish(); - private extern void orig_startNextItem(); - private void invokeOnFinish() => orig_invokeOnFinish(); - private void startNextItem() { - if(!patch_Scene_30_NoticeReward.Skipped) { - orig_startNextItem(); - } - } - void Update() { - // The panel state will still be screwed up for some reason but it won't crash - // This could be improved - if(patch_Scene_30_NoticeReward.Skipped) { - invokeOnFinish(); - } - } -} diff --git a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs index ad65c0b..7623384 100644 --- a/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs +++ b/SkipPreMusicRitual/MU3.Sequence/patch_PlayMusic.cs @@ -1,13 +1,16 @@ using MU3.Battle; +using MU3.Data; +using MU3.Game; using MU3.Util; namespace MU3.Sequence; class patch_PlayMusic: PlayMusic { private GameEngine _gameEngine; - private extern void orig_Execute_StartCutscene(); + private SessionInfo _sessionInfo; + private bool _nuclearSkip = false; public static bool ForceSkipped { get; private set; } - + private extern void orig_Execute_StartCutscene(); private void Execute_StartCutscene() { orig_Execute_StartCutscene(); ForceSkipped = false; @@ -17,4 +20,22 @@ class patch_PlayMusic: PlayMusic { setNextState(EState.Countdown); } } + public extern bool orig_updateState(float deltaTime); + public override bool updateState(float deltaTime = -1f) { + var state = getCurrentState(); + if(state >= EState.PlayEnd && Singleton.instance.getTriggerOn(UIInput.Key.MenuLeft)) { + _nuclearSkip = true; + } + if(_nuclearSkip) { + if(state < EState.CalcResult) { + setNextState(EState.CalcResult); + } + if(state > EState.CalcResult) { + int selectorID = SingletonStateMachine.instance.getMemoryChapterData(_sessionInfo.chapterSelection.memoryChapterId)?.getMemoryChapterSelectorID() ?? 4; + Singleton.instance.gameBGM.playBGM(236, selectorID); + setNextState(EState.End); + } + } + return orig_updateState(deltaTime); + } } \ No newline at end of file