From be0776010364fda81554a845461d71a2ad4a16a1 Mon Sep 17 00:00:00 2001
From: EliteMasterEric <ericmyllyoja@gmail.com>
Date: Wed, 8 May 2024 00:08:44 -0400
Subject: [PATCH 01/20] Fix a crash when querying FlxG.state

---
 source/funkin/util/logging/CrashHandler.hx | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/source/funkin/util/logging/CrashHandler.hx b/source/funkin/util/logging/CrashHandler.hx
index 8cfa2270f..71d1ad394 100644
--- a/source/funkin/util/logging/CrashHandler.hx
+++ b/source/funkin/util/logging/CrashHandler.hx
@@ -141,7 +141,9 @@ class CrashHandler
 
     fullContents += '\n';
 
-    fullContents += 'Flixel Current State: ${Type.getClassName(Type.getClass(FlxG.state))}\n';
+    var currentState = FlxG.state != null ? Type.getClassName(Type.getClass(FlxG.state)) : 'No state loaded';
+
+    fullContents += 'Flixel Current State: ${currentState}\n';
 
     fullContents += '\n';
 

From cfeca56634628a7cbaff085df62eafa9c193961d Mon Sep 17 00:00:00 2001
From: EliteMasterEric <ericmyllyoja@gmail.com>
Date: Tue, 7 May 2024 14:01:00 -0400
Subject: [PATCH 02/20] Fix an error related to an easter egg, plus some
 warnings.

---
 source/funkin/play/GameOverSubState.hx | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/source/funkin/play/GameOverSubState.hx b/source/funkin/play/GameOverSubState.hx
index e7b128385..c3abbcf3e 100644
--- a/source/funkin/play/GameOverSubState.hx
+++ b/source/funkin/play/GameOverSubState.hx
@@ -83,6 +83,8 @@ class GameOverSubState extends MusicBeatSubState
 
   var isChartingMode:Bool = false;
 
+  var mustNotExit:Bool = false;
+
   var transparent:Bool;
 
   static final CAMERA_ZOOM_DURATION:Float = 0.5;
@@ -240,7 +242,7 @@ class GameOverSubState extends MusicBeatSubState
     }
 
     // KEYBOARD ONLY: Return to the menu when pressing the assigned key.
-    if (controls.BACK)
+    if (controls.BACK && !mustNotExit)
     {
       blueballed = false;
       PlayState.instance.deathCounter = 0;

From 2e74678cafbc0d44559c2eb85b6847dd8cb8e249 Mon Sep 17 00:00:00 2001
From: EliteMasterEric <ericmyllyoja@gmail.com>
Date: Wed, 8 May 2024 01:54:48 -0400
Subject: [PATCH 03/20] Fix an issue where the Freeplay menu never displays
 100% clear.

---
 source/funkin/ui/freeplay/FreeplayState.hx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/source/funkin/ui/freeplay/FreeplayState.hx b/source/funkin/ui/freeplay/FreeplayState.hx
index 7b7543845..5960795ea 100644
--- a/source/funkin/ui/freeplay/FreeplayState.hx
+++ b/source/funkin/ui/freeplay/FreeplayState.hx
@@ -733,8 +733,8 @@ class FreeplayState extends MusicBeatSubState
       }
     }
 
-    lerpScore = MathUtil.coolLerp(lerpScore, intendedScore, 0.2);
-    lerpCompletion = MathUtil.coolLerp(lerpCompletion, intendedCompletion, 0.9);
+    lerpScore = MathUtil.smoothLerp(lerpScore, intendedScore, elapsed, 0.5);
+    lerpCompletion = MathUtil.smoothLerp(lerpCompletion, intendedCompletion, elapsed, 0.5);
 
     if (Math.isNaN(lerpScore))
     {

From 6fdc090eccdeab76503918b4810c42114bbbaab5 Mon Sep 17 00:00:00 2001
From: nebulazorua <rainbowsmokefox@gmail.com>
Date: Wed, 8 May 2024 19:53:47 +0800
Subject: [PATCH 04/20] i have accidentally done this and wiped out my chart
 many times

---
 source/funkin/play/PlayState.hx | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/source/funkin/play/PlayState.hx b/source/funkin/play/PlayState.hx
index 44ad819c4..c5f76710e 100644
--- a/source/funkin/play/PlayState.hx
+++ b/source/funkin/play/PlayState.hx
@@ -2549,12 +2549,20 @@ class PlayState extends MusicBeatSubState
     // Redirect to the chart editor playing the current song.
     if (controls.DEBUG_CHART)
     {
-      disableKeys = true;
-      persistentUpdate = false;
-      FlxG.switchState(() -> new ChartEditorState(
-        {
-          targetSongId: currentSong.id,
-        }));
+      if (isChartingMode)
+      {
+        if (FlxG.sound.music != null) FlxG.sound.music.pause(); // Don't reset song position!
+        PlayState.instance.close(); // This only works because PlayState is a substate!
+      }
+      else
+      {
+        disableKeys = true;
+        persistentUpdate = false;
+        FlxG.switchState(() -> new ChartEditorState(
+          {
+            targetSongId: currentSong.id,
+          }));
+      }
     }
     #end
 

From f5143c2d7859ef51912155243b7411f1ad6d8c1d Mon Sep 17 00:00:00 2001
From: nebulazorua <rainbowsmokefox@gmail.com>
Date: Wed, 8 May 2024 19:56:13 +0800
Subject: [PATCH 05/20] this is better

---
 source/funkin/play/PlayState.hx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source/funkin/play/PlayState.hx b/source/funkin/play/PlayState.hx
index c5f76710e..0ba4e17ec 100644
--- a/source/funkin/play/PlayState.hx
+++ b/source/funkin/play/PlayState.hx
@@ -2552,7 +2552,7 @@ class PlayState extends MusicBeatSubState
       if (isChartingMode)
       {
         if (FlxG.sound.music != null) FlxG.sound.music.pause(); // Don't reset song position!
-        PlayState.instance.close(); // This only works because PlayState is a substate!
+        this.close(); // This only works because PlayState is a substate!
       }
       else
       {

From 4d1c2c1b8841bdf95ea6107298b3632be86334c1 Mon Sep 17 00:00:00 2001
From: MadBear422 <supermarioland100@gmail.com>
Date: Wed, 8 May 2024 15:30:40 -0700
Subject: [PATCH 06/20] Character selection fix for chart editor.

---
 .../charting/dialogs/ChartEditorCharacterIconSelectorMenu.hx    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source/funkin/ui/debug/charting/dialogs/ChartEditorCharacterIconSelectorMenu.hx b/source/funkin/ui/debug/charting/dialogs/ChartEditorCharacterIconSelectorMenu.hx
index eb60cb6db..1edbb6c00 100644
--- a/source/funkin/ui/debug/charting/dialogs/ChartEditorCharacterIconSelectorMenu.hx
+++ b/source/funkin/ui/debug/charting/dialogs/ChartEditorCharacterIconSelectorMenu.hx
@@ -67,7 +67,7 @@ class ChartEditorCharacterIconSelectorMenu extends ChartEditorBaseMenu
 
     var charGrid = new Grid();
     charGrid.columns = 5;
-    charGrid.width = 100;
+    charGrid.width = this.width;
     charSelectScroll.addComponent(charGrid);
 
     var charIds:Array<String> = CharacterDataParser.listCharacterIds();

From 4fdc437840949f4558b82b64cc06412c952d27c5 Mon Sep 17 00:00:00 2001
From: Eric <ericmyllyoja@gmail.com>
Date: Wed, 8 May 2024 23:55:19 -0400
Subject: [PATCH 07/20] Update Funkin' Debug Hotkeys.md

---
 docs/Funkin' Debug Hotkeys.md | 48 +++++++++++++++++------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/docs/Funkin' Debug Hotkeys.md b/docs/Funkin' Debug Hotkeys.md
index c560c5422..1287d5a1b 100644
--- a/docs/Funkin' Debug Hotkeys.md	
+++ b/docs/Funkin' Debug Hotkeys.md	
@@ -1,31 +1,31 @@
 # Funkin' Debug Hotkeys
 
-`F4` (EVERYWHERE) - Leave Current State and move to Main Menu
-`F5` (EVERYWHERE) - Hot Reload Data Files
+Most of this functionality is only available on debug builds of the game!
 
-`Y` (Title Screen) - WOAH
+## Any State
+- `F2`: ***OVERLAY***: Enables the Flixel debug overlay, which has partial support for scripting.
+- `F3`: ***SCREENSHOT***: Takes a screenshot of the game and saves it to the local `screenshots` directory. Works outside of debug builds too!
+- `F4`: ***EJECT***: Forcibly switch state to the Main Menu (with no extra transition). Useful if you're stuck in a level and you need to get out!
+- `F5`: ***HOT RELOAD***: Forcibly reload the game's scripts and data files, then restart the current state. If any files in the `assets` folder have been modified, the game should process the changes for you! NOTE: Known bug, this does not reset song charts or song scripts, but it should reset everything else (such as stage layout data and character animation data).
+- `CTRL-SHIFT-L`: ***FORCE CRASH***: Immediately crash the game with a detailed crash log and a stack trace.
 
-`~` (Main Menu) - Access Debug Menu
+## **Play State**
+- `H`: ***HIDE UI***: Makes the user interface invisible. Works in Pause Menu, great for screenshots.
+- `1`: ***END SONG***: Immediately ends the song and moves to Results Screen on Freeplay, or next song on Story Mode.
+- `2`: ***GAIN HEALTH***: Debug function, add 10% to the player's health.
+- `3`: ***LOSE HEALTH***: Debug function, subtract 5% to the player's health.
+- `9`: NEATO!
+- `PAGEUP` (MacOS: `Fn-Up`): ***FORWARDS TIME TRAVEL****: Move forward by 2 sections. Hold SHIFT to move forward by 20 sections instead.
+- `PAGEDOWN` (MacOS: `Fn-Down`): ***BACKWARDS TIME TRAVEL****: Move backward by 2 sections. Hold SHIFT to move backward by 20 sections instead.
 
-`U` (Play) - Open Stage Editor State
-`H` (Play) - Show/Hide HUD
-`1` (Play) - End Song
-`2` (Play) - Add 10% Health
-`3` (Play) - Subtract 5% Health
-`7` (Play) - (NOT WORKING) Open Chart Editor
-`8` (Play) - Open Animation Editor
-`9` (Play) - (Easter Egg) Classic Health Icon
-`PGUP`/`Fn+Up` (Play) - Skip Forward In Time
-`PGDN`/`Fn+Down` (Play) - 🦃 That's right, we're going to go BACK IN TIME
+## **Freeplay State**
+- `F` (Freeplay Menu) - Move to Favorites
+- `Q` (Freeplay Menu) - Back one category
+- `E` (Freeplay Menu) - Forward one category
 
-`F` (Freeplay Menu) - Move to Favorites
-`P` (Freeplay Menu) - Switch to Pico (probably doesn't work)
-`T` (Freeplay Menu) - Start typing in search bar
-`Q` (Freeplay Menu) - Back one letter
-`E` (Freeplay Menu) - Forward one letter
+## **Title State**
+- `Y` - WOAH
 
-`Arrows` (Stage Editor) - Move Prop
-`Ctrl-Z` (Stage Editor) - Undo
-`Y` (Stage Editor) - Leave Stage Editor
-
-`H` (Pause Menu) - Hide the Pause Menu UI (good for screenshots!)
+## **Main Menu**
+- `~`: ***DEBUG****: Opens a menu to access the Chart Editor and other work-in-progress editors. Rebindable in the options menu.
+- `CTRL-ALT-SHIFT-W`: ***ALL ACCESS***: Unlocks all songs in Freeplay. Only available on debug builds.

From 2e4baa8ab2cc3cea56ba5e235541740348628cce Mon Sep 17 00:00:00 2001
From: EliteMasterEric <ericmyllyoja@gmail.com>
Date: Thu, 9 May 2024 00:43:33 -0400
Subject: [PATCH 08/20] Fix a null object reference caused by accessing cut
 assets.

---
 assets | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/assets b/assets
index 962130b22..783f22e74 160000
--- a/assets
+++ b/assets
@@ -1 +1 @@
-Subproject commit 962130b2243a839106607d08a11599b1857bf8b3
+Subproject commit 783f22e741c85223da7f3f815b28fc4c6f240cbc

From 4d5c0444c834ad16637d1912f096b733a76152e5 Mon Sep 17 00:00:00 2001
From: EliteMasterEric <ericmyllyoja@gmail.com>
Date: Thu, 9 May 2024 00:46:21 -0400
Subject: [PATCH 09/20] Fix an issue where control binds would be duplicated
 and quickly multiply.

---
 source/funkin/input/Controls.hx | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/source/funkin/input/Controls.hx b/source/funkin/input/Controls.hx
index 1983d413b..548e4edfa 100644
--- a/source/funkin/input/Controls.hx
+++ b/source/funkin/input/Controls.hx
@@ -527,6 +527,14 @@ class Controls extends FlxActionSet
           action.inputs[i].inputID = toAdd;
         }
         hasReplaced = true;
+      } else if (input.device == KEYBOARD && input.inputID == toAdd) {
+        // This key is already bound!
+        if (hasReplaced) {
+          // Remove the duplicate keybind, don't replace.
+          action.inputs.remove(input);
+        } else {
+          hasReplaced = true;
+        }
       }
     }
 
@@ -989,6 +997,7 @@ class Controls extends FlxActionSet
     for (control in Control.createAll())
     {
       var inputs:Array<Int> = Reflect.field(data, control.getName());
+      inputs = inputs.unique();
       if (inputs != null)
       {
         if (inputs.length == 0) {
@@ -1038,7 +1047,11 @@ class Controls extends FlxActionSet
       var inputs = getInputsFor(control, device);
       isEmpty = isEmpty && inputs.length == 0;
 
-      if (inputs.length == 0) inputs = [FlxKey.NONE];
+      if (inputs.length == 0) {
+        inputs = [FlxKey.NONE];
+      } else {
+        inputs = inputs.unique();
+      }
 
       Reflect.setField(data, control.getName(), inputs);
     }

From bfaa4626f88be1deb3a5af85c2939e3a351b150a Mon Sep 17 00:00:00 2001
From: codist <50346006+ImCodist@users.noreply.github.com>
Date: Thu, 9 May 2024 01:10:53 -0400
Subject: [PATCH 10/20] Polish for the transition from GameOverSubState back
 into PlayState.

---
 source/funkin/play/PlayState.hx | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)

diff --git a/source/funkin/play/PlayState.hx b/source/funkin/play/PlayState.hx
index 44ad819c4..8903a4e63 100644
--- a/source/funkin/play/PlayState.hx
+++ b/source/funkin/play/PlayState.hx
@@ -826,6 +826,8 @@ class PlayState extends MusicBeatSubState
 
       resetCamera();
 
+      var fromDeathState = isPlayerDying;
+
       persistentUpdate = true;
       persistentDraw = true;
 
@@ -863,8 +865,11 @@ class PlayState extends MusicBeatSubState
 
       if (currentStage != null) currentStage.resetStage();
 
-      playerStrumline.vwooshNotes();
-      opponentStrumline.vwooshNotes();
+      if (!fromDeathState)
+      {
+        playerStrumline.vwooshNotes();
+        opponentStrumline.vwooshNotes();
+      }
 
       playerStrumline.clean();
       opponentStrumline.clean();
@@ -1075,6 +1080,22 @@ class PlayState extends MusicBeatSubState
 
   function moveToGameOver():Void
   {
+    // Reset and update a bunch of values in advance for the transition back from the game over substate.
+    playerStrumline.clean();
+    opponentStrumline.clean();
+
+    songScore = 0;
+    updateScoreText();
+
+    health = Constants.HEALTH_STARTING;
+    healthLerp = health;
+
+    healthBar.value = healthLerp;
+
+    iconP1.updatePosition();
+    iconP2.updatePosition();
+
+    // Transition to the game over substate.
     var gameOverSubState = new GameOverSubState(
       {
         isChartingMode: isChartingMode,

From 4f8a0dbebfdafb37955177d316e82dd26543dd39 Mon Sep 17 00:00:00 2001
From: JugieNoob <jurgenarna@gmail.com>
Date: Sun, 12 May 2024 01:35:04 +0200
Subject: [PATCH 11/20] Fixed Freeplay Scrolling Issue

---
 source/funkin/ui/freeplay/FreeplayState.hx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source/funkin/ui/freeplay/FreeplayState.hx b/source/funkin/ui/freeplay/FreeplayState.hx
index 7b7543845..b0d435274 100644
--- a/source/funkin/ui/freeplay/FreeplayState.hx
+++ b/source/funkin/ui/freeplay/FreeplayState.hx
@@ -892,7 +892,7 @@ class FreeplayState extends MusicBeatSubState
     if (FlxG.mouse.wheel != 0)
     {
       dj.resetAFKTimer();
-      changeSelection(-Math.round(FlxG.mouse.wheel / 4));
+      changeSelection(-Math.round(FlxG.mouse.wheel));
     }
 
     if (controls.UI_LEFT_P && !FlxG.keys.pressed.CONTROL)

From b22f09d4daf8784fdf46fec564abac21e20ede3e Mon Sep 17 00:00:00 2001
From: JugieNoob <jurgenarna@gmail.com>
Date: Sun, 12 May 2024 02:21:59 +0200
Subject: [PATCH 12/20] Fixed Scrolling on HTML5 Platforms

---
 source/funkin/ui/freeplay/FreeplayState.hx | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/source/funkin/ui/freeplay/FreeplayState.hx b/source/funkin/ui/freeplay/FreeplayState.hx
index b0d435274..d4a89531c 100644
--- a/source/funkin/ui/freeplay/FreeplayState.hx
+++ b/source/funkin/ui/freeplay/FreeplayState.hx
@@ -889,11 +889,24 @@ class FreeplayState extends MusicBeatSubState
       spamTimer = 0;
     }
 
+    #if !html5
     if (FlxG.mouse.wheel != 0)
     {
       dj.resetAFKTimer();
       changeSelection(-Math.round(FlxG.mouse.wheel));
     }
+    #else
+    if (FlxG.mouse.wheel < 0)
+    {
+      dj.resetAFKTimer();
+      changeSelection(-Math.round(FlxG.mouse.wheel / 4));
+    }
+    else if (FlxG.mouse.wheel > 0)
+    {
+      dj.resetAFKTimer();
+      changeSelection(-Math.round(FlxG.mouse.wheel / 8));
+    }
+    #end
 
     if (controls.UI_LEFT_P && !FlxG.keys.pressed.CONTROL)
     {

From 090e4fc6e886093267f612dbe9a1674d4e68518d Mon Sep 17 00:00:00 2001
From: gamerbross <55158797+gamerbross@users.noreply.github.com>
Date: Sun, 12 May 2024 02:42:02 +0200
Subject: [PATCH 13/20] Fixed doing actions when exiting Freeplay menu

---
 source/funkin/ui/freeplay/FreeplayState.hx | 1 +
 1 file changed, 1 insertion(+)

diff --git a/source/funkin/ui/freeplay/FreeplayState.hx b/source/funkin/ui/freeplay/FreeplayState.hx
index 7b7543845..52fc32196 100644
--- a/source/funkin/ui/freeplay/FreeplayState.hx
+++ b/source/funkin/ui/freeplay/FreeplayState.hx
@@ -910,6 +910,7 @@ class FreeplayState extends MusicBeatSubState
 
     if (controls.BACK)
     {
+      busy = true;
       FlxTween.globalManager.clear();
       FlxTimer.globalManager.clear();
       dj.onIntroDone.removeAll();

From 4e935b47c66112239ac2c1ddf660ff9cfe08ee79 Mon Sep 17 00:00:00 2001
From: lemz <ismael.amjad07@gmail.com>
Date: Tue, 14 May 2024 00:04:45 +0200
Subject: [PATCH 14/20] Update LoadingState.hx

---
 source/funkin/ui/transition/LoadingState.hx | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/source/funkin/ui/transition/LoadingState.hx b/source/funkin/ui/transition/LoadingState.hx
index 28533e35b..9ac34465c 100644
--- a/source/funkin/ui/transition/LoadingState.hx
+++ b/source/funkin/ui/transition/LoadingState.hx
@@ -162,7 +162,8 @@ class LoadingState extends MusicBeatSubState
     {
       targetShit = FlxMath.remapToRange(callbacks.numRemaining / callbacks.length, 1, 0, 0, 1);
 
-      loadBar.scale.x = FlxMath.lerp(loadBar.scale.x, targetShit, 0.50);
+      loadBar.setGraphicSize(Std.int(FlxG.width * targetShit), loadBar.height);
+      loadBar.updateHitbox();
       FlxG.watch.addQuick('percentage?', callbacks.numRemaining / callbacks.length);
     }
 

From 259df760bc8d4eb3131b06d106b1ebee0493a7d3 Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Mon, 13 May 2024 21:06:41 -0400
Subject: [PATCH 15/20] re-add lerp to load screen

---
 source/funkin/ui/transition/LoadingState.hx | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/source/funkin/ui/transition/LoadingState.hx b/source/funkin/ui/transition/LoadingState.hx
index 9ac34465c..95c378b24 100644
--- a/source/funkin/ui/transition/LoadingState.hx
+++ b/source/funkin/ui/transition/LoadingState.hx
@@ -162,7 +162,8 @@ class LoadingState extends MusicBeatSubState
     {
       targetShit = FlxMath.remapToRange(callbacks.numRemaining / callbacks.length, 1, 0, 0, 1);
 
-      loadBar.setGraphicSize(Std.int(FlxG.width * targetShit), loadBar.height);
+      var lerpWidth:Int = Std.int(FlxMath.lerp(loadBar.width, FlxG.width * targetShit, 0.2));
+      loadBar.setGraphicSize(lerpWidth, loadBar.height);
       loadBar.updateHitbox();
       FlxG.watch.addQuick('percentage?', callbacks.numRemaining / callbacks.length);
     }

From 2434f6438146b5bfbb224c6a6c98cf8d932ecdc1 Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Tue, 14 May 2024 21:21:47 -0400
Subject: [PATCH 16/20] web fix for scroll

---
 assets                                     | 2 +-
 source/funkin/ui/freeplay/FreeplayState.hx | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/assets b/assets
index 783f22e74..962130b22 160000
--- a/assets
+++ b/assets
@@ -1 +1 @@
-Subproject commit 783f22e741c85223da7f3f815b28fc4c6f240cbc
+Subproject commit 962130b2243a839106607d08a11599b1857bf8b3
diff --git a/source/funkin/ui/freeplay/FreeplayState.hx b/source/funkin/ui/freeplay/FreeplayState.hx
index a3726e025..1c7926f62 100644
--- a/source/funkin/ui/freeplay/FreeplayState.hx
+++ b/source/funkin/ui/freeplay/FreeplayState.hx
@@ -899,7 +899,7 @@ class FreeplayState extends MusicBeatSubState
     if (FlxG.mouse.wheel < 0)
     {
       dj.resetAFKTimer();
-      changeSelection(-Math.round(FlxG.mouse.wheel / 4));
+      changeSelection(-Math.round(FlxG.mouse.wheel / 8));
     }
     else if (FlxG.mouse.wheel > 0)
     {

From 41686dce9e739783dfb98025b44427d12079a2be Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Tue, 14 May 2024 21:22:17 -0400
Subject: [PATCH 17/20] assets submod

---
 assets | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/assets b/assets
index 962130b22..783f22e74 160000
--- a/assets
+++ b/assets
@@ -1 +1 @@
-Subproject commit 962130b2243a839106607d08a11599b1857bf8b3
+Subproject commit 783f22e741c85223da7f3f815b28fc4c6f240cbc

From ac06c2357735f90825586ccccd02a555d76e26ec Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Tue, 14 May 2024 21:41:42 -0400
Subject: [PATCH 18/20] assets submod

---
 assets | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/assets b/assets
index 783f22e74..962130b22 160000
--- a/assets
+++ b/assets
@@ -1 +1 @@
-Subproject commit 783f22e741c85223da7f3f815b28fc4c6f240cbc
+Subproject commit 962130b2243a839106607d08a11599b1857bf8b3

From 4e6d980447cacc5cda32d74320b833593cb8e045 Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Tue, 14 May 2024 22:10:13 -0400
Subject: [PATCH 19/20] 0.3.3 changelog

---
 CHANGELOG.md | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e7f830047..2f0a0dcff 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,20 @@ All notable changes will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## [0.3.3] - 2024-05-14
+### Changed
+- Cleaned up some code in `PlayAnimationSongEvent.hx` (thanks BurgerBalls!)
+### Fixed
+- Fix Web Loading Bar (thanks lemz1!)
+- Don't allow any more inputs when exiting freeplay (thanks gamerbros!)
+- Fixed using mouse wheel to scroll on freeplay (thanks JugieNoob!)
+- Fixed the reset's of the health icons, score, and notes when re-entering gameplay from gameover (thanks ImCodist!)
+- Fixed the chart editor character selector's hitbox width (thanks MadBear422!)
+- Fixed camera stutter once a wipe transition to the Main Menu completes (thanks ImCodist!)
+- Fixed an issue where hold note would be invisible for a single frame (thanks ImCodist!)
+- Fix tween accumulation on title screen when pressing Y multiple times (thanks TheGaloXx!)
+- Fix for a game over easter egg so you don't accidentally exit it when viewing
+
 ## [0.3.2] - 2024-05-03
 ### Added
 - Added `,` and `.` keybinds to the Chart Editor. These place Focus Camera events at the playhead, for the opponent and player respectively.

From 1a8706b0315ca0728536080cff49934a27e4861b Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Tue, 14 May 2024 22:11:57 -0400
Subject: [PATCH 20/20] project.xml version bump

---
 Project.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Project.xml b/Project.xml
index fcfcfb9f3..24cdac270 100644
--- a/Project.xml
+++ b/Project.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <project>
 	<!-- _________________________ Application Settings _________________________ -->
-	<app title="Friday Night Funkin'" file="Funkin" packageName="com.funkin.fnf" package="com.funkin.fnf" main="Main" version="0.3.2" company="ninjamuffin99" />
+	<app title="Friday Night Funkin'" file="Funkin" packageName="com.funkin.fnf" package="com.funkin.fnf" main="Main" version="0.3.3" company="ninjamuffin99" />
 	<!--Switch Export with Unique ApplicationID and Icon-->
 	<set name="APP_ID" value="0x0100f6c013bbc000" />