diff --git a/source/funkin/menus/StoryMenuState.hx b/source/funkin/menus/StoryMenuState.hx index 1efb8a8a..956fb36b 100644 --- a/source/funkin/menus/StoryMenuState.hx +++ b/source/funkin/menus/StoryMenuState.hx @@ -173,6 +173,8 @@ class StoryMenuState extends MusicBeatState { characterSprites.members[i].changeCharacter(characters[weeks[curWeek].chars[i]]); changeDifficulty(0, true); + + MemoryUtil.clearMinor(); } var __oldDiffName = null; diff --git a/source/funkin/system/Conductor.hx b/source/funkin/system/Conductor.hx index 491b1ccf..1cd85181 100644 --- a/source/funkin/system/Conductor.hx +++ b/source/funkin/system/Conductor.hx @@ -196,25 +196,45 @@ class Conductor curBeatFloat = curStepFloat / stepsPerBeat; curMeasureFloat = curBeatFloat / beatsPerMesure; + var oldStep = curStep; + var oldBeat = curBeat; + var oldMeasure = curMeasure; if (curStep != (curStep = Std.int(curStepFloat))) { // updates step __updateBeat = curBeat != (curBeat = Std.int(curBeatFloat)); __updateMeasure = __updateBeat && (curMeasure != (curMeasure = Std.int(curMeasureFloat))); - onStepHit.dispatch(curStep); - if (__updateBeat) - onBeatHit.dispatch(curBeat); + if (curStep > oldStep) { + for(i in oldStep...curStep) { + onStepHit.dispatch(i+1); + } + } + if (__updateBeat && curBeat > oldBeat) { + for(i in oldBeat...curBeat) { + onBeatHit.dispatch(i+1); + } + } if (FlxG.state is IBeatReceiver) { var state = FlxG.state; while(state != null) { if (state is IBeatReceiver && (state.subState == null || state.persistentUpdate)) { var st = cast(state, IBeatReceiver); - st.stepHit(curStep); - if (__updateBeat) - st.beatHit(curBeat); - if (__updateMeasure) - st.measureHit(curMeasure); + if (curStep > oldStep) { + for(i in oldStep...curStep) { + st.stepHit(i+1); + } + } + if (__updateBeat && curBeat > oldBeat) { + for(i in oldBeat...curBeat) { + st.beatHit(i+1); + } + } + if (__updateMeasure && curMeasure > oldMeasure) { + for(i in oldMeasure...curMeasure) { + st.measureHit(i+1); + } + } } state = state.subState; }