From 6475a49bf430c87cc31bb813fa9477b615924bc3 Mon Sep 17 00:00:00 2001
From: Eric Myllyoja <ericmyllyoja@gmail.com>
Date: Sun, 6 Mar 2022 03:33:12 -0500
Subject: [PATCH] Final cleanup before PR.

---
 .vscode/launch.json                        |   4 +-
 Project.xml                                | 167 ++++++++++-----------
 source/FreeplayState.hx                    |   1 -
 source/Note.hx                             |   5 -
 source/PlayState.hx                        | 117 +++------------
 source/i18n/README.md                      |   4 +-
 source/modding/base/ScriptedFlxState.hx    |  12 --
 source/modding/base/ScriptedFlxSubState.hx |  12 --
 source/play/stage/Stage.hx                 |   6 +-
 9 files changed, 106 insertions(+), 222 deletions(-)
 delete mode 100644 source/modding/base/ScriptedFlxState.hx
 delete mode 100644 source/modding/base/ScriptedFlxSubState.hx

diff --git a/.vscode/launch.json b/.vscode/launch.json
index 3a9d77249..4afcd170e 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -2,13 +2,13 @@
   "version": "0.2.0",
   "configurations": [
     {
-			// Launch in native/CPP
+      // Launch in native/CPP
       "name": "Lime",
       "type": "lime",
       "request": "launch"
     },
     {
-			// Evaluate macros with debugging enabled
+      // Evaluate macros with debugging enabled
       "name": "Haxe Eval",
       "type": "haxe-eval",
       "request": "launch"
diff --git a/Project.xml b/Project.xml
index 7ee04917c..bf6b741e3 100644
--- a/Project.xml
+++ b/Project.xml
@@ -24,14 +24,10 @@
 	<window if="html5" resizable="true" />
 
 	<!--Desktop-specific-->
-	<window if="desktop" orientation="landscape" fullscreen="false" resizable="true" vsync="false"/>
+	<window if="desktop" orientation="landscape" fullscreen="false" resizable="true" vsync="false" />
 
 	<!--Mobile-specific-->
-	<window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" resizable="false"/>
-
-	<!-- This macro permanently silences an annoying warning. -->
-	<option flashStrict="False" />
-	<haxeflag name="--macro" value="allowPackage('flash')" />
+	<window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" resizable="false" />
 
 	<!-- _____________________________ Path Settings ____________________________ -->
 
@@ -41,76 +37,76 @@
 
 	<classpath name="source" />
 
-	<assets path="assets/preload" rename="assets" exclude="*.ogg" if="web"/>
-	<assets path="assets/preload" rename="assets" exclude="*.mp3" unless="web"/>
-	
+	<assets path="assets/preload" rename="assets" exclude="*.ogg" if="web" />
+	<assets path="assets/preload" rename="assets" exclude="*.mp3" unless="web" />
+
 	<define name="PRELOAD_ALL" unless="web" />
-	<define name="NO_PRELOAD_ALL" unless="PRELOAD_ALL"/>
-	
+	<define name="NO_PRELOAD_ALL" unless="PRELOAD_ALL" />
+
 	<section if="PRELOAD_ALL">
-		<library name="songs"    preload="true" />
-		<library name="shared"   preload="true" />
+		<library name="songs" preload="true" />
+		<library name="shared" preload="true" />
 		<library name="tutorial" preload="true" />
-		<library name="week1"    preload="true" />
-		<library name="week2"    preload="true" />
-		<library name="week3"    preload="true" />
-		<library name="week4"    preload="true" />
-		<library name="week5"    preload="true" />
-		<library name="week6"    preload="true" />
-		<library name="week7"    preload="true" />
-		<library name="week8"    preload="true" />
+		<library name="week1" preload="true" />
+		<library name="week2" preload="true" />
+		<library name="week3" preload="true" />
+		<library name="week4" preload="true" />
+		<library name="week5" preload="true" />
+		<library name="week6" preload="true" />
+		<library name="week7" preload="true" />
+		<library name="week8" preload="true" />
 	</section>
-	
+
 	<section if="NO_PRELOAD_ALL">
-		<library name="songs"    preload="false" />
-		<library name="shared"   preload="false" />
+		<library name="songs" preload="false" />
+		<library name="shared" preload="false" />
 		<library name="tutorial" preload="false" />
-		<library name="week1"    preload="false" />
-		<library name="week2"    preload="false" />
-		<library name="week3"    preload="false" />
-		<library name="week4"    preload="false" />
-		<library name="week5"    preload="false" />
-		<library name="week6"    preload="false" />
-		<library name="week7"    preload="false" />
-		<library name="week8"    preload="false" />
+		<library name="week1" preload="false" />
+		<library name="week2" preload="false" />
+		<library name="week3" preload="false" />
+		<library name="week4" preload="false" />
+		<library name="week5" preload="false" />
+		<library name="week6" preload="false" />
+		<library name="week7" preload="false" />
+		<library name="week8" preload="false" />
 	</section>
-	
-	<assets path="assets/songs"    library="songs"    exclude="*.fla|*.ogg" if="web" />
-	<assets path="assets/songs"    library="songs"    exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/shared"   library="shared"   exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/shared"   library="shared"   exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/week1"    library="week1"    exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/week1"    library="week1"    exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/week2"    library="week2"    exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/week2"    library="week2"    exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/week3"    library="week3"    exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/week3"    library="week3"    exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/week4"    library="week4"    exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/week4"    library="week4"    exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/week5"    library="week5"    exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/week5"    library="week5"    exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/week6"    library="week6"    exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/week6"    library="week6"    exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/week7"    library="week7"    exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/week7"    library="week7"    exclude="*.fla|*.mp3" unless="web"/>
-	<assets path="assets/week8"    library="week8"    exclude="*.fla|*.ogg" if="web"/>
-	<assets path="assets/week8"    library="week8"    exclude="*.fla|*.mp3" unless="web"/>
-	
+
+	<assets path="assets/songs" library="songs" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/songs" library="songs" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/shared" library="shared" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/shared" library="shared" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/week1" library="week1" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/week1" library="week1" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/week2" library="week2" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/week2" library="week2" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/week3" library="week3" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/week3" library="week3" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/week4" library="week4" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/week4" library="week4" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/week5" library="week5" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/week5" library="week5" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/week6" library="week6" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/week6" library="week6" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/week7" library="week7" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/week7" library="week7" exclude="*.fla|*.mp3" unless="web" />
+	<assets path="assets/week8" library="week8" exclude="*.fla|*.ogg" if="web" />
+	<assets path="assets/week8" library="week8" exclude="*.fla|*.mp3" unless="web" />
+
 	<!-- <assets path='example_mods' rename='mods' embed='false'/> -->
 
-	<assets path='example_mods' rename='mods' embed='false' exclude="*.md"/>
+	<assets path='example_mods' rename='mods' embed='false' exclude="*.md" />
 	<assets path='art/readme.txt' rename='do NOT readme.txt' />
-	
-	<assets path="CHANGELOG.md" rename='changelog.txt'/>
+
+	<assets path="CHANGELOG.md" rename='changelog.txt' />
 
 	<!-- NOTE FOR FUTURE SELF SINCE FONTS ARE ALWAYS FUCKY 
 		TO FIX ONE OF THEM, I CONVERTED IT TO OTF. DUNNO IF YOU NEED TO
 		THEN UHHH I USED THE NAME OF THE FONT WITH SETFORMAT() ON THE TEXT!!!
 		NOT USING A DIRECT THING TO THE ASSET!!!
 	-->
-	<assets path="assets/fonts" embed='true'/>
+	<assets path="assets/fonts" embed='true' />
 	<!-- _______________________________ Libraries ______________________________ -->
 
 	<haxelib name="openfl" />
@@ -124,26 +120,27 @@
 	<!--In case you want to use the ui package-->
 	<haxelib name="flixel-ui" />
 	<!--haxelib name="newgrounds" unless="switch"/> -->
-	<haxelib name="faxe" if='switch'/>
+	<haxelib name="faxe" if='switch' />
 	<haxelib name="polymod" />
 	<haxelib name="firetongue" />
-	
+
 	<!-- <haxelib name="colyseus"/> -->
 	<!-- <haxelib name="colyseus-websocket" /> -->
 	<!-- <haxelib name="newgrounds"/> -->
-	<haxelib name="hxcpp-debug-server" if="desktop debug"/>
-	
+	<haxelib name="hxcpp-debug-server" if="desktop debug" />
+
 	<!-- swf stufffff -->
 	<!-- <haxelib name="swf"/> -->
 	<!-- <library path="assets/tanky.swf" preload="true"/> -->
 	<!-- <library path="assets/tankBG.swf" preload="true"/> -->
-	
+
 	<!-- <haxelib name="flixel-animate" /> -->
 	<!-- <haxelib name="spinehaxe" /> -->
 	<!-- https://github.com/ninjamuffin99/Flixel-Animate-Atlas-Player -->
 
 
-	<!--<haxelib name="discord_rpc" if="cpp"/> --> <!-- foesn't work with neko -->
+	<!--<haxelib name="discord_rpc" if="cpp"/> -->
+	<!-- foesn't work with neko -->
 	<!-- <haxelib name="hxcpp-debug-server" if="desktop"/> -->
 
 	<!-- <haxelib name="markdown" /> -->
@@ -184,7 +181,7 @@
 	<!--Enable this for Nape release builds for a serious peformance improvement-->
 	<haxedef name="NAPE_RELEASE_BUILD" unless="debug" />
 
-  <haxeflag name="-no-traces" unless="debug" />
+	<haxeflag name="-no-traces" unless="debug" />
 	<!-- HScript relies heavily on Reflection, which means we can't use DCE. -->
 	<haxeflag name="--dce no" />
 	<haxedef name="HXCPP_CHECK_POINTER" />
@@ -193,10 +190,10 @@
 	<!-- _________________________________ Custom _______________________________ -->
 
 	<!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)-->
-	
-	<icon path="art/icon16.png" size='16'/>
-	<icon path="art/icon32.png" size='32'/>
-	<icon path="art/icon64.png" size='64'/>
+
+	<icon path="art/icon16.png" size='16' />
+	<icon path="art/icon32.png" size='32' />
+	<icon path="art/icon64.png" size='64' />
 	<icon path="art/iconOG.png" />
 
 	<!--
@@ -207,31 +204,31 @@
 	<haxeflag name="--macro" value="include('modding.base')" />
 
 	<!-- <haxedef name="SKIP_TO_PLAYSTATE" if="debug" /> -->
-	
-	<haxedef name="CAN_OPEN_LINKS" unless="switch"/>
-	<haxedef name="CAN_CHEAT" if="switch debug"/>
-	
+
+	<haxedef name="CAN_OPEN_LINKS" unless="switch" />
+	<haxedef name="CAN_CHEAT" if="switch debug" />
+
 	<!-- Skip the Intro -->
 	<section if="debug">
 		<!-- Starts the game at the specified week, at the first song -->
 		<!-- <haxedef name="week" value="1" if="debug"/> -->
-		
+
 		<!-- Starts the game at the specified song -->
 		<!-- <haxedef name="song" value="bopeebo" if="debug"/> -->
-		
+
 		<!-- Difficulty, only used for week or song, defaults to 1 -->
 		<!-- <haxedef name="dif" value="2" if="debug"/> -->
 	</section>
-	
+
 	<!-- <haxedef name="CLEAR_INPUT_SAVE"/> -->
-	
+
 	<section if="newgrounds">
 		<!-- Enables Ng.core.verbose -->
 		<!-- <haxedef name="NG_VERBOSE" /> -->
-		
+
 		<!-- Enables a NG debug session, so medals don't permently unlock -->
 		<!-- <haxedef name="NG_DEBUG" /> -->
-		
+
 		<!-- pretends that the saved session Id was expired, forcing the reconnect prompt -->
 		<!-- <haxedef name="NG_FORCE_EXPIRED_SESSION" if="debug" /> -->
 	</section>
@@ -239,8 +236,8 @@
 	<!-- <prebuild haxe="trace('prebuilding');"/> -->
 	<!-- <postbuild haxe="art/Postbuild.hx"/> -->
 
-	<config:ios allow-provisioning-updates="true" team-id=""/>
-	
+	<config:ios allow-provisioning-updates="true" team-id="" />
+
 	<!-- Options for Polymod -->
 	<section if="polymod">
 		<!-- Turns on additional debug logging. -->
@@ -266,10 +263,10 @@
 	<section if='TOOLS'>
 		<!-- Compiles tool for old song conversion shit -->
 		<!-- Assumes you use it on windows/desktop!!!! -->
-		<postbuild command='haxe -main art/SongConverter.hx --cs export/songShit'/>
+		<postbuild command='haxe -main art/SongConverter.hx --cs export/songShit' />
 		<assets path='export/songShit/bin/SongConverter.exe' rename='SongConverter.exe' />
 
 		<!-- <postbuild command='ren export/songShit/bin export/songShit/tools '/> -->
 		<!-- <postbuild command='move export/songShit/tools export/release/windows/bin'/> -->
 	</section>
-</project>
+</project>
\ No newline at end of file
diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx
index 58a163b08..b56f9fc95 100644
--- a/source/FreeplayState.hx
+++ b/source/FreeplayState.hx
@@ -518,7 +518,6 @@ class FreeplayState extends MusicBeatSubstate
 		if (controls.BACK)
 		{
 			FlxG.sound.play(Paths.sound('cancelMenu'));
-			// close();
 			FlxG.switchState(new MainMenuState());
 		}
 
diff --git a/source/Note.hx b/source/Note.hx
index f5ce550c0..529b020e9 100644
--- a/source/Note.hx
+++ b/source/Note.hx
@@ -1,17 +1,12 @@
 package;
 
 import flixel.FlxSprite;
-import flixel.graphics.frames.FlxAtlasFrames;
 import flixel.math.FlxMath;
-import flixel.util.FlxColor;
-import flixel.util.FlxTimer;
 import shaderslmfao.ColorSwap;
 import ui.PreferencesMenu;
 
 using StringTools;
 
-import polymod.format.ParseRules.TargetSignatureElement;
-
 class Note extends FlxSprite
 {
 	public var data = new NoteData();
diff --git a/source/PlayState.hx b/source/PlayState.hx
index 103aa05ac..07b35cce3 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -1,25 +1,17 @@
 package;
 
-import shaderslmfao.WiggleEffect;
-import play.stage.StageData;
-import play.stage.Stage;
-import Note;
-import Section.SwagSection;
-import SongLoad.SwagSong;
 import charting.ChartingState;
+import flixel.addons.effects.FlxTrail;
+import flixel.addons.transition.FlxTransitionableState;
 import flixel.FlxCamera;
 import flixel.FlxObject;
 import flixel.FlxSprite;
 import flixel.FlxState;
 import flixel.FlxSubState;
-import flixel.addons.effects.FlxTrail;
-import flixel.addons.transition.FlxTransitionableState;
 import flixel.group.FlxGroup;
-import flixel.math.FlxAngle;
 import flixel.math.FlxMath;
 import flixel.math.FlxPoint;
 import flixel.math.FlxRect;
-import flixel.system.FlxSound;
 import flixel.text.FlxText;
 import flixel.tweens.FlxEase;
 import flixel.tweens.FlxTween;
@@ -30,9 +22,12 @@ import flixel.util.FlxTimer;
 import haxe.Json;
 import lime.ui.Haptic;
 import lime.utils.Assets;
-import shaderslmfao.BuildingShaders;
+import Note;
+import play.stage.Stage;
+import play.stage.StageData;
+import Section.SwagSection;
 import shaderslmfao.ColorSwap;
-import shaderslmfao.OverlayBlend;
+import SongLoad.SwagSong;
 import ui.PopUpStuff;
 import ui.PreferencesMenu;
 
@@ -106,11 +101,6 @@ class PlayState extends MusicBeatState
 
 	public static var seenCutscene:Bool = false;
 
-	var halloweenBG:FlxSprite;
-	var isHalloween:Bool = false;
-
-	var foregroundSprites:FlxTypedGroup<BGSprite>;
-
 	var talking:Bool = true;
 	var songScore:Int = 0;
 	var scoreTxt:FlxText;
@@ -158,8 +148,6 @@ class PlayState extends MusicBeatState
 		Conductor.mapBPMChanges(SONG);
 		Conductor.changeBPM(SONG.bpm);
 
-		foregroundSprites = new FlxTypedGroup<BGSprite>();
-
 		// dialogue init shit, just for week 5 really (for now...?)
 		switch (SONG.song.toLowerCase())
 		{
@@ -175,11 +163,9 @@ class PlayState extends MusicBeatState
 		initDiscord();
 		#end
 
-		initStageBullshit();
+		initStage();
 		initCharacters();
 
-		add(foregroundSprites);
-
 		if (dialogue != null)
 		{
 			doof = new DialogueBox(false, dialogue);
@@ -368,56 +354,35 @@ class PlayState extends MusicBeatState
 		FlxG.cameras.add(camHUD, false);
 	}
 
-	// a lot of this stage code will be cleaned up more when the stage load shit is more fleshed out! For now it's still a lot of hardcoded shit!!
-	function initStageBullshit()
+	function initStage()
 	{
 		// TODO: Move stageId to the song file.
 		switch (SONG.song.toLowerCase())
 		{
 			case 'spookeez' | 'monster' | 'south':
 				curStageId = "spookyMansion";
-				loadStage(curStageId);
-
 			case 'pico' | 'blammed' | 'philly':
 				curStageId = 'phillyTrain';
-				loadStage(curStageId);
-
 			case "milf" | 'satin-panties' | 'high':
 				curStageId = 'limoRide';
-				loadStage(curStageId);
-
 			case "cocoa" | 'eggnog':
 				curStageId = 'mallXmas';
-				loadStage(curStageId);
-
 			case 'winter-horrorland':
 				curStageId = 'mallEvil';
-				loadStage(curStageId);
-
 			case 'pyro':
 				curStageId = 'pyro';
-				loadStage(curStageId);
-
 			case 'senpai' | 'roses':
 				curStageId = 'school';
-				loadStage(curStageId);
-
 			case "darnell":
 				curStageId = 'phillyStreets';
-				loadStage(curStageId);
-
 			case 'thorns':
 				curStageId = 'schoolEvil';
-				loadStage(curStageId);
-
 			case 'guns' | 'stress' | 'ugh':
 				curStageId = 'tankmanBattlefield';
-				loadStage(curStageId);
-
 			default:
 				curStageId = "mainStage";
-				loadStage(curStageId);
 		}
+		loadStage(curStageId);
 	}
 
 	function initCharacters()
@@ -640,6 +605,8 @@ class PlayState extends MusicBeatState
 	 * 
 	 * This is useful for when you want to edit a stage without reloading the whole game.
 	 * Reloading works on both the JSON and the HXC, if applicable.
+	 * 
+	 * Call this by pressing F5 on a debug build.
 	 */
 	function debug_refreshStages()
 	{
@@ -687,45 +654,6 @@ class PlayState extends MusicBeatState
 		}
 	}
 
-	function loadStageOld(path:String)
-	{
-		curStageId = path;
-
-		var json = Assets.getText(Paths.file('data/stagedata/${curStageId}Stage.json'));
-
-		var parsed:StageData = cast Json.parse(json);
-
-		defaultCamZoom *= parsed.camZoom;
-
-		for (prop in parsed.propsBackground)
-		{
-			var funnyProp:BGSprite = new BGSprite(prop.path, prop.x, prop.y, prop.scrollX, prop.scrollY, null, false, false);
-
-			if (prop.animBullshit != null)
-				funnyProp.setupSparrow(prop.path, prop.animBullshit.anims, prop.animBullshit.isLooping);
-			else
-				funnyProp.justLoadImage(prop.path);
-
-			if (prop.updateHitbox != null && !prop.updateHitbox)
-			{
-				funnyProp.scale.set(prop.scaleX, prop.scaleY);
-			}
-			else
-			{
-				funnyProp.setGraphicSize(Std.int(funnyProp.width * prop.scaleX), Std.int(funnyProp.height * prop.scaleY));
-				funnyProp.updateHitbox();
-			}
-
-			if (prop.antialiasing != null)
-				funnyProp.antialiasing = prop.antialiasing;
-
-			funnyProp.scrollFactor.set(prop.scrollX, prop.scrollY);
-			add(funnyProp);
-		}
-
-		trace(parsed.propsBackground);
-	}
-
 	function gunsIntro()
 	{
 		inCutscene = true;
@@ -1384,8 +1312,6 @@ class PlayState extends MusicBeatState
 
 				var swagNote:Note = new Note(daStrumTime, daNoteData, oldNote);
 				swagNote.data = songNotes;
-				// swagNote.data.sustainLength = songNotes.sustainLength;
-				// swagNote.data.altNote = songNotes.altNote;
 				swagNote.scrollFactor.set(0, 0);
 
 				var susLength:Float = swagNote.data.sustainLength;
@@ -1728,9 +1654,11 @@ class PlayState extends MusicBeatState
 			persistentDraw = true;
 			paused = true;
 
+			// There is a 1/1000 change to use a special pause menu.
+			// This prevents the player from resuming, but that's the point.
+			// It's a reference to Gitaroo Man, which doesn't let you pause the game.
 			if (FlxG.random.bool(1 / 1000))
 			{
-				// gitaroo man easter egg
 				FlxG.switchState(new GitarooPause());
 			}
 			else
@@ -1762,7 +1690,6 @@ class PlayState extends MusicBeatState
 		if (FlxG.keys.justPressed.EIGHT)
 			FlxG.switchState(new ui.animDebugShit.DebugBoundingState());
 
-		// get it like refreshing a browser
 		if (FlxG.keys.justPressed.F5)
 			debug_refreshStages();
 
@@ -2001,11 +1928,7 @@ class PlayState extends MusicBeatState
 							curStage.onNoteMiss(daNote);
 						}
 						health -= 0.0775;
-						// Practice mode doesn't mute the vocals on miss.
-						if (!practiceMode)
-						{
-							vocals.volume = 0;
-						}
+						vocals.volume = 0;
 						killCombo();
 					}
 
@@ -2497,12 +2420,8 @@ class PlayState extends MusicBeatState
 		if (!practiceMode)
 			songScore -= 10;
 
-		// Practice mode doesn't mute the vocals on miss.
-		if (!practiceMode)
-		{
-			vocals.volume = 0;
-			FlxG.sound.play(Paths.soundRandom('missnote', 1, 3), FlxG.random.float(0.1, 0.2));
-		}
+		vocals.volume = 0;
+		FlxG.sound.play(Paths.soundRandom('missnote', 1, 3), FlxG.random.float(0.1, 0.2));
 
 		/* boyfriend.stunned = true;
 
diff --git a/source/i18n/README.md b/source/i18n/README.md
index d71d55305..d55a8f41c 100644
--- a/source/i18n/README.md
+++ b/source/i18n/README.md
@@ -1 +1,3 @@
-i18n is short for internationalization.
\ No newline at end of file
+# i18n
+
+This package contains functions used for internationalization (i18n).
diff --git a/source/modding/base/ScriptedFlxState.hx b/source/modding/base/ScriptedFlxState.hx
deleted file mode 100644
index b7d9f0504..000000000
--- a/source/modding/base/ScriptedFlxState.hx
+++ /dev/null
@@ -1,12 +0,0 @@
-package modding.base;
-
-import flixel.FlxState;
-import modding.IHook;
-
-// TODO: Polymod is having trouble with this one.
-// Maybe there's a type parameter that's nested too much?
-// @:hscriptClass
-// class ScriptedFlxState extends FlxState implements IHook
-// {
-// 	// No body needed for this class, it's magic ;)
-// }
diff --git a/source/modding/base/ScriptedFlxSubState.hx b/source/modding/base/ScriptedFlxSubState.hx
deleted file mode 100644
index 23c14e01a..000000000
--- a/source/modding/base/ScriptedFlxSubState.hx
+++ /dev/null
@@ -1,12 +0,0 @@
-package modding.base;
-
-import flixel.FlxSubState;
-import modding.IHook;
-
-// TODO: Polymod is having trouble with this one.
-// Maybe there's a type parameter that's nested too much?
-// @:hscriptClass
-// class ScriptedFlxSubState extends FlxSubState implements IHook
-// {
-//	// No body needed for this class, it's magic ;)
-// }
diff --git a/source/play/stage/Stage.hx b/source/play/stage/Stage.hx
index 617974f85..829376b0a 100644
--- a/source/play/stage/Stage.hx
+++ b/source/play/stage/Stage.hx
@@ -201,13 +201,11 @@ class Stage extends FlxSpriteGroup implements IHook
 	}
 
 	/**
-	 * A function that gets called every frame.
-	 * @param elapsed The number of 
+	 * A function that should get called every frame.
 	 */
 	public function onUpdate(elapsed:Float):Void
 	{
 		// Override me in your scripted stage to perform custom behavior!
-		// trace('Stage.onUpdate(${elapsed})');
 	}
 
 	/**
@@ -303,8 +301,6 @@ class Stage extends FlxSpriteGroup implements IHook
 
 	/**
 	 * Retrieves a given character from the stage.
-	 * @param id 
-	 * @return Character
 	 */
 	public function getCharacter(id:String):Character
 	{