From 374c042ad020fd8b60adf6c9814f905f0f56d919 Mon Sep 17 00:00:00 2001
From: EliteMasterEric <ericmyllyoja@gmail.com>
Date: Tue, 23 Apr 2024 18:32:07 -0400
Subject: [PATCH] Fix a critical issue causing instrumental variations to not
 load on web.

---
 source/funkin/play/song/Song.hx             | 13 +++++++++----
 source/funkin/ui/transition/LoadingState.hx |  2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/source/funkin/play/song/Song.hx b/source/funkin/play/song/Song.hx
index d219dc2f6..e71ae3213 100644
--- a/source/funkin/play/song/Song.hx
+++ b/source/funkin/play/song/Song.hx
@@ -609,28 +609,33 @@ class SongDifficulty
     return cast events;
   }
 
-  public function cacheInst(instrumental = ''):Void
+  public function getInstPath(instrumental = ''):String
   {
     if (characters != null)
     {
       if (instrumental != '' && characters.altInstrumentals.contains(instrumental))
       {
         var instId = '-$instrumental';
-        FlxG.sound.cache(Paths.inst(this.song.id, instId));
+        return Paths.inst(this.song.id, instId);
       }
       else
       {
         // Fallback to default instrumental.
         var instId = (characters.instrumental ?? '') != '' ? '-${characters.instrumental}' : '';
-        FlxG.sound.cache(Paths.inst(this.song.id, instId));
+        return Paths.inst(this.song.id, instId);
       }
     }
     else
     {
-      FlxG.sound.cache(Paths.inst(this.song.id));
+      return Paths.inst(this.song.id);
     }
   }
 
+  public function cacheInst(instrumental = ''):Void
+  {
+    FlxG.sound.cache(getInstPath(instrumental));
+  }
+
   public function playInst(volume:Float = 1.0, looped:Bool = false):Void
   {
     var suffix:String = (variation != null && variation != '' && variation != 'default') ? '-$variation' : '';
diff --git a/source/funkin/ui/transition/LoadingState.hx b/source/funkin/ui/transition/LoadingState.hx
index ec6621ee3..3b53e1b4a 100644
--- a/source/funkin/ui/transition/LoadingState.hx
+++ b/source/funkin/ui/transition/LoadingState.hx
@@ -77,7 +77,7 @@ class LoadingState extends MusicBeatSubState
         var difficulty:String = playParams.targetDifficulty ?? Constants.DEFAULT_DIFFICULTY;
         var variation:String = playParams.targetVariation ?? Constants.DEFAULT_VARIATION;
         var targetChart:SongDifficulty = playParams.targetSong?.getDifficulty(difficulty, variation);
-        var instPath:String = Paths.inst(targetChart.song.id);
+        var instPath:String = targetChart.getInstPath(playParams.targetInstrumental);
         var voicesPaths:Array<String> = targetChart.buildVoiceList();
 
         checkLoadSong(instPath);