From b3ad4ab90842a443ff64c8a309ba95adfd28ab1c Mon Sep 17 00:00:00 2001
From: Cameron Taylor <cameron.taylor.ninja@gmail.com>
Date: Sun, 27 Dec 2020 05:37:04 -0500
Subject: [PATCH] maybe ready to go???

---
 source/FreeplayState.hx  |  9 ++++++++-
 source/MenuCharacter.hx  |  1 +
 source/MenuItem.hx       |  1 +
 source/PlayState.hx      | 35 +++++++++++++++++++++++++++++++++--
 source/StoryMenuState.hx |  8 +++++---
 5 files changed, 48 insertions(+), 6 deletions(-)

diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx
index 2c39e3dc5..13742f687 100644
--- a/source/FreeplayState.hx
+++ b/source/FreeplayState.hx
@@ -12,7 +12,7 @@ import lime.utils.Assets;
 
 class FreeplayState extends MusicBeatState
 {
-	var songs:Array<String> = ["Satin-Panties", "High", "Milf", "Bopeebo", "Dadbattle", "Fresh", "Tutorial"];
+	var songs:Array<String> = ["Bopeebo", "Dadbattle", "Fresh", "Tutorial"];
 
 	var selector:FlxText;
 	var curSelected:Int = 0;
@@ -55,6 +55,13 @@ class FreeplayState extends MusicBeatState
 			songs.push('Blammed');
 		}
 
+		if (StoryMenuState.weekUnlocked[4] || isDebug)
+		{
+			songs.push('Satin-Panties');
+			songs.push('High');
+			songs.push('Milf');
+		}
+
 		// LOAD MUSIC
 
 		// LOAD CHARACTERS
diff --git a/source/MenuCharacter.hx b/source/MenuCharacter.hx
index b550c330c..e25c892f9 100644
--- a/source/MenuCharacter.hx
+++ b/source/MenuCharacter.hx
@@ -22,6 +22,7 @@ class MenuCharacter extends FlxSprite
 		animation.addByPrefix('dad', "Dad idle dance BLACK LINE", 24);
 		animation.addByPrefix('spooky', "spooky dance idle BLACK LINES", 24);
 		animation.addByPrefix('pico', "Pico Idle Dance", 24);
+		animation.addByPrefix('mom', "Mom Idle Black Lines smol", 24);
 
 		animation.play(character);
 		updateHitbox();
diff --git a/source/MenuItem.hx b/source/MenuItem.hx
index 32652114c..6c18fc89f 100644
--- a/source/MenuItem.hx
+++ b/source/MenuItem.hx
@@ -23,6 +23,7 @@ class MenuItem extends FlxSpriteGroup
 		week.animation.addByPrefix('week1', "WEEK1 select", 24);
 		week.animation.addByPrefix('week2', "week2 select", 24);
 		week.animation.addByPrefix('week3', "Week 3 press", 24);
+		week.animation.addByPrefix('week3', "Week 4 press", 24);
 		add(week);
 
 		week.animation.play('week' + weekNum);
diff --git a/source/PlayState.hx b/source/PlayState.hx
index 66b9909f7..404a5d30c 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -91,6 +91,7 @@ class PlayState extends MusicBeatState
 
 	var limo:FlxSprite;
 	var grpLimoDancers:FlxTypedGroup<BackgroundDancer>;
+	var fastCar:FlxSprite;
 
 	var talking:Bool = true;
 	var songScore:Int = 0;
@@ -208,7 +209,7 @@ class PlayState extends MusicBeatState
 			skyBG.scrollFactor.set(0.1, 0.1);
 			add(skyBG);
 
-			var bgLimo:FlxSprite = new FlxSprite(-200, 400);
+			var bgLimo:FlxSprite = new FlxSprite(-200, 480);
 			bgLimo.frames = FlxAtlasFrames.fromSparrow(AssetPaths.bgLimo__png, AssetPaths.bgLimo__xml);
 			bgLimo.animation.addByPrefix('drive', "background limo pink", 24);
 			bgLimo.animation.play('drive');
@@ -220,7 +221,7 @@ class PlayState extends MusicBeatState
 
 			for (i in 0...5)
 			{
-				var dancer:BackgroundDancer = new BackgroundDancer((370 * i) + 130, 20);
+				var dancer:BackgroundDancer = new BackgroundDancer((370 * i) + 130, bgLimo.y - 400);
 				dancer.scrollFactor.set(0.4, 0.4);
 				grpLimoDancers.add(dancer);
 			}
@@ -242,6 +243,8 @@ class PlayState extends MusicBeatState
 			limo.animation.addByPrefix('drive', "Limo stage", 24);
 			limo.animation.play('drive');
 			limo.antialiasing = true;
+
+			fastCar = new FlxSprite(-300, 160).loadGraphic(AssetPaths.fastCarLol__png);
 			// add(limo);
 		}
 		else
@@ -319,6 +322,9 @@ class PlayState extends MusicBeatState
 				{
 					boyfriend.y -= 220;
 					boyfriend.x += 260;
+
+					resetFastCar();
+					add(fastCar);
 				}
 		}
 
@@ -1481,6 +1487,28 @@ class PlayState extends MusicBeatState
 		}
 	}
 
+	var fastCarCanDrive:Bool = true;
+
+	function resetFastCar():Void
+	{
+		fastCar.x = -12600;
+		fastCar.y = FlxG.random.int(140, 250);
+		fastCar.velocity.x = 0;
+		fastCarCanDrive = true;
+	}
+
+	function fastCarDrive()
+	{
+		FlxG.sound.play('assets/sounds/carPass' + FlxG.random.int(0, 1) + TitleState.soundExt, 0.7);
+
+		fastCar.velocity.x = (FlxG.random.int(170, 220) / FlxG.elapsed) * 3;
+		fastCarCanDrive = false;
+		new FlxTimer().start(2, function(tmr:FlxTimer)
+		{
+			resetFastCar();
+		});
+	}
+
 	var trainMoving:Bool = false;
 	var trainFrameTiming:Float = 0;
 
@@ -1637,6 +1665,9 @@ class PlayState extends MusicBeatState
 				{
 					dancer.dance();
 				});
+
+				if (FlxG.random.bool(10) && fastCarCanDrive)
+					fastCarDrive();
 			case "philly":
 				if (!trainMoving)
 					trainCooldown += 1;
diff --git a/source/StoryMenuState.hx b/source/StoryMenuState.hx
index b881fa9cc..bc48cb717 100644
--- a/source/StoryMenuState.hx
+++ b/source/StoryMenuState.hx
@@ -21,17 +21,19 @@ class StoryMenuState extends MusicBeatState
 		['Tutorial'],
 		['Bopeebo', 'Fresh', 'Dadbattle'],
 		['Spookeez', 'South'],
-		['Pico', 'Philly', "Blammed"]
+		['Pico', 'Philly', "Blammed"],
+		['Satin-Panties', "High", "Milf"]
 	];
 	var curDifficulty:Int = 1;
 
-	public static var weekUnlocked:Array<Bool> = [true, true, false, false];
+	public static var weekUnlocked:Array<Bool> = [true, true, true, true, true];
 
 	var weekCharacters:Array<Dynamic> = [
 		['dad', 'bf', 'gf'],
 		['dad', 'bf', 'gf'],
 		['spooky', 'bf', 'gf'],
-		['pico', 'bf', 'gf']
+		['pico', 'bf', 'gf'],
+		['mom', 'bf', 'gf']
 	];
 	var curWeek:Int = 0;