diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index ec418d9..6cec3c5 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -10,15 +10,26 @@ body: options: - label: I have properly named my issue - label: I have checked the Issues/Discussions pages to see if my issue has already been reported - + - type: dropdown attributes: label: Platform - description: Which platform are you playing on? + description: Are you playing on the Executable Build or V-Slice Mod Pack? + options: + - Executable Build + - V-Slice Mod Pack + validations: + required: true + + - type: dropdown + attributes: + label: Download Source + description: Where did you download the mod from? options: - - Gamebanana (Downloadable Build) - Windows - - Gamejolt (Downloadable Build) - Windows - - Google Drive (Downloadable Build) - Windows + - Gamebanana + - Game Jolt + - Google Drive + - Github Release Assets - Compiled from GitHub Source Code validations: required: true diff --git a/.github/ISSUE_TEMPLATE/crash.yml b/.github/ISSUE_TEMPLATE/crash.yml index 2ecb1d9..7538233 100644 --- a/.github/ISSUE_TEMPLATE/crash.yml +++ b/.github/ISSUE_TEMPLATE/crash.yml @@ -14,11 +14,22 @@ body: - type: dropdown attributes: label: Platform - description: Which platform are you playing on? + description: Are you playing on the Executable Build or V-Slice Mod Pack? options: - - Gamebanana (Downloadable Build) - Windows - - Gamejolt (Downloadable Build) - Windows - - Google Drive (Downloadable Build) - Windows + - Executable Build + - V-Slice Mod Pack + validations: + required: true + + - type: dropdown + attributes: + label: Download Source + description: Where did you download the mod from? + options: + - Gamebanana + - Game Jolt + - Google Drive + - Github Release Assets - Compiled from GitHub Source Code validations: required: true diff --git a/assets/preload/data/characters/pump-playable-dark.json b/assets/preload/data/characters/pump-playable-dark.json index 1fa05f3..19ab7d8 100644 --- a/assets/preload/data/characters/pump-playable-dark.json +++ b/assets/preload/data/characters/pump-playable-dark.json @@ -80,5 +80,8 @@ "assetPath": "characters/Pump_Playable_DEATH", "offsets": [1114, 138] } - ] + ], + "death": { + "cameraOffsets": [-420, 0] + } } diff --git a/assets/preload/data/characters/pump-playable.json b/assets/preload/data/characters/pump-playable.json index d09d738..ffd2c06 100644 --- a/assets/preload/data/characters/pump-playable.json +++ b/assets/preload/data/characters/pump-playable.json @@ -80,5 +80,8 @@ "assetPath": "characters/Pump_Playable_DEATH", "offsets": [1114, 138] } - ] + ], + "death": { + "cameraOffsets": [-420, 0] + } } diff --git a/assets/preload/data/characters/skid-opponent-dark.json b/assets/preload/data/characters/skid-opponent-dark.json index 24785a5..e535754 100644 --- a/assets/preload/data/characters/skid-opponent-dark.json +++ b/assets/preload/data/characters/skid-opponent-dark.json @@ -14,7 +14,7 @@ "name": "idle", "prefix": "skidIdle", "frameRate": 24, - "offsets": [0, 0] + "offsets": [0, 2] }, { "name": "singLEFT", diff --git a/assets/preload/data/characters/skid-opponent.json b/assets/preload/data/characters/skid-opponent.json index 11a8977..2b39514 100644 --- a/assets/preload/data/characters/skid-opponent.json +++ b/assets/preload/data/characters/skid-opponent.json @@ -14,7 +14,7 @@ "name": "idle", "prefix": "skidIdle", "frameRate": 24, - "offsets": [0, 0] + "offsets": [0, 2] }, { "name": "singLEFT", diff --git a/assets/preload/data/characters/skid-playable-dark.json b/assets/preload/data/characters/skid-playable-dark.json index bc1872e..d010e38 100644 --- a/assets/preload/data/characters/skid-playable-dark.json +++ b/assets/preload/data/characters/skid-playable-dark.json @@ -14,7 +14,7 @@ "name": "idle", "prefix": "skidIdle", "frameRate": 24, - "offsets": [0, 0] + "offsets": [0, 2] }, { "name": "singLEFT", @@ -80,5 +80,8 @@ "assetPath": "characters/Skid_Playable_DEATH", "offsets": [1114, 138] } - ] + ], + "death": { + "cameraOffsets": [-420, 0] + } } diff --git a/assets/preload/data/characters/skid-playable.json b/assets/preload/data/characters/skid-playable.json index 4c840e7..4653b06 100644 --- a/assets/preload/data/characters/skid-playable.json +++ b/assets/preload/data/characters/skid-playable.json @@ -14,7 +14,7 @@ "name": "idle", "prefix": "skidIdle", "frameRate": 24, - "offsets": [0, 0] + "offsets": [0, 2] }, { "name": "singLEFT", @@ -80,5 +80,8 @@ "assetPath": "characters/Skid_Playable_DEATH", "offsets": [1114, 138] } - ] + ], + "death": { + "cameraOffsets": [-420, 0] + } } diff --git a/assets/preload/data/characters/spooky-christmas.json b/assets/preload/data/characters/spooky-christmas.json index 1a3c40c..1ba1769 100644 --- a/assets/preload/data/characters/spooky-christmas.json +++ b/assets/preload/data/characters/spooky-christmas.json @@ -78,5 +78,8 @@ "assetPath": "characters/SpookyKids_Christmas_DEATH", "offsets": [-67, -305] } - ] + ], + "death": { + "cameraOffsets": [65, 100] + } } diff --git a/assets/preload/data/characters/spooky-nogreen.json b/assets/preload/data/characters/spooky-nogreen.json index c4602bc..00b474c 100644 --- a/assets/preload/data/characters/spooky-nogreen.json +++ b/assets/preload/data/characters/spooky-nogreen.json @@ -96,5 +96,8 @@ "assetPath": "characters/SpookyKids_Playable_DEATH", "offsets": [338, -105] } - ] + ], + "death": { + "cameraOffsets": [-40, 120] + } } diff --git a/assets/preload/data/characters/spooky-playable.json b/assets/preload/data/characters/spooky-playable.json index 425cbf1..f7f5e80 100644 --- a/assets/preload/data/characters/spooky-playable.json +++ b/assets/preload/data/characters/spooky-playable.json @@ -96,5 +96,8 @@ "assetPath": "characters/SpookyKids_Playable_DEATH", "offsets": [338, -105] } - ] + ], + "death": { + "cameraOffsets": [-40, 120] + } } diff --git a/assets/preload/data/introText.txt b/assets/preload/data/introText.txt index b913158..a9d99c4 100644 --- a/assets/preload/data/introText.txt +++ b/assets/preload/data/introText.txt @@ -30,7 +30,7 @@ a hot dog with no insides?--idk i forgot hey peter--remember the time family guy--funny moments sonic.exe...--spooky mix.... -get all 7--chaos emeralds +get all seven--chaos emeralds eat my shorts--bart simpson this is freaking--chudtastic Goober alert--Goober alert @@ -73,6 +73,6 @@ look, ramps--we can use these as ramps hi kevin hi kevin hi kevin hi kevin hi kevin hi kevin hi kevin hi kevin--bye kevin bye kevin bye kevin bye kevin bye kevin bye kevin bye kevin bye kevin walk normally--please hello--my name is car -play--garn 47 +play--garn fourty seven turns around slowly--ive been expecting you sr pelo regalame un pelito fetito--porfis uwuwuwuwu diff --git a/assets/preload/data/players/spooky.json b/assets/preload/data/players/spooky.json index 8c16403..714aae2 100644 --- a/assets/preload/data/players/spooky.json +++ b/assets/preload/data/players/spooky.json @@ -1,6 +1,6 @@ { "version": "1.0.0", - "name": "Spooky", + "name": "Spooky Kids", "ownedChars": [ "spooky", "spooky-playable", diff --git a/assets/preload/data/songs/tutorial/tutorial-chart-spooky.json b/assets/preload/data/songs/tutorial/tutorial-chart-spooky.json index 8e8ff02..2c5a07f 100644 --- a/assets/preload/data/songs/tutorial/tutorial-chart-spooky.json +++ b/assets/preload/data/songs/tutorial/tutorial-chart-spooky.json @@ -10,819 +10,966 @@ "t": 0, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 2, - "ease": "expoOut" + "ease": "expoOut", + "char": 2 } }, { "t": 87.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 0.8 + "duration": 32, + "zoom": 0.8, + "mode": "stage" } }, { "t": 10300, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 10387.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 13129.4117647059, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 0, - "ease": "expoOut" + "ease": "expoOut", + "char": 0 } }, { "t": 13225, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 15952.9411764706, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 1, - "ease": "expoOut" + "ease": "expoOut", + "char": 1 } }, { "t": 16062.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 18776.4705882353, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 0, - "ease": "expoOut" + "ease": "expoOut", + "char": 0 } }, { "t": 18875, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 21423.5294117647, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 2, - "ease": "expoOut" + "ease": "expoOut", + "char": 2 } }, { "t": 21512.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 0.8 + "duration": 32, + "zoom": 0.8, + "mode": "stage" } }, { "t": 24423.5294117647, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 0, - "ease": "expoOut" + "ease": "expoOut", + "char": 0 } }, { "t": 24512.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 27070.5882352941, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 1, - "ease": "expoOut" + "ease": "expoOut", + "char": 1 } }, { "t": 27175, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 0.8 + "duration": 32, + "zoom": 0.8, + "mode": "stage" } }, { "t": 30070.5882352941, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 0, - "ease": "expoOut" + "ease": "expoOut", + "char": 0 } }, { "t": 30162.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 32717.6470588235, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 1, - "ease": "expoOut" + "ease": "expoOut", + "char": 1 } }, { "t": 32812.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 36247.0588235294, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 0, - "ease": "expoOut" + "ease": "expoOut", + "char": 0 } }, { "t": 36325, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 39776.4705882353, "e": "FocusCamera", "v": { - "x": 0, "duration": 32, + "x": 0, "y": 0, - "char": 1, - "ease": "expoOut" + "ease": "expoOut", + "char": 1 } }, { "t": 39837.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 43305.8823529412, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 43400, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 52835.2941176471, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 52900, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 58658.8235294118, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 58750, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 60070.5882352941, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 60162.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 61482.3529411765, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 61575, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 62894.1176470588, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 62937.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 64305.8823529412, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 64387.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 65717.6470588235, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 65787.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 67129.4117647059, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 67212.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 69775, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 2 + "char": 2, + "ease": "expoOut" } }, { "t": 69837.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 0.8 + "duration": 32, + "zoom": 0.8, + "mode": "stage" } }, { "t": 75450, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 75537.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 78250, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 78337.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 81075, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 81137.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 84075, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 84175, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 86775, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 86850, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 89725, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 89787.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { - "t": 92375, + "t": 92362.5, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 4, "y": 0, - "ease": "expoOut", + "ease": "INSTANT", "char": 1 } }, { - "t": 92462.5, + "t": 92362.5, "e": "ZoomCamera", "v": { + "duration": 1, + "ease": "INSTANT", + "zoom": 1.1, + "mode": "stage" +} + }, + { + "t": 92737.5, + "e": "FocusCamera", + "v": { + "x": 0, + "duration": 4, + "y": 0, + "ease": "INSTANT", + "char": 0 +} + }, + { + "t": 92737.5, + "e": "ZoomCamera", + "v": { + "duration": 1, + "ease": "INSTANT", + "zoom": 1.15, + "mode": "stage" +} + }, + { + "t": 93075, + "e": "FocusCamera", + "v": { + "x": 0, + "duration": 4, + "y": 0, + "ease": "INSTANT", + "char": 1 +} + }, + { + "t": 93075, + "e": "ZoomCamera", + "v": { + "duration": 1, + "ease": "INSTANT", + "zoom": 1.2, + "mode": "stage" +} + }, + { + "t": 93825, + "e": "FocusCamera", + "v": { + "x": 0, "duration": 32, + "y": 0, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "char": 2 } }, { - "t": 93925, - "e": "FocusCamera", + "t": 93900, + "e": "ZoomCamera", "v": { "duration": 32, + "ease": "expoOut", + "zoom": 0.8, + "mode": "stage" +} + }, + { + "t": 98025, + "e": "FocusCamera", + "v": { "x": 0, + "duration": 4, + "y": 0, + "ease": "INSTANT", + "char": 1 +} + }, + { + "t": 98025, + "e": "ZoomCamera", + "v": { + "duration": 1, + "ease": "INSTANT", + "zoom": 1.1, + "mode": "stage" +} + }, + { + "t": 98362.5, + "e": "FocusCamera", + "v": { + "x": 0, + "duration": 4, + "y": 0, + "ease": "INSTANT", + "char": 0 +} + }, + { + "t": 98362.5, + "e": "ZoomCamera", + "v": { + "duration": 1, + "ease": "INSTANT", + "zoom": 1.15, + "mode": "stage" +} + }, + { + "t": 98700, + "e": "FocusCamera", + "v": { + "x": 0, + "duration": 4, + "y": 0, + "ease": "INSTANT", + "char": 1 +} + }, + { + "t": 98700, + "e": "ZoomCamera", + "v": { + "duration": 1, + "ease": "INSTANT", + "zoom": 1.2, + "mode": "stage" +} + }, + { + "t": 99075, + "e": "FocusCamera", + "v": { + "x": 0, + "duration": 4, + "y": 0, + "ease": "INSTANT", + "char": 0 +} + }, + { + "t": 99075, + "e": "ZoomCamera", + "v": { + "duration": 1, + "ease": "INSTANT", + "zoom": 1.25, + "mode": "stage" +} + }, + { + "t": 99450, + "e": "FocusCamera", + "v": { + "x": 0, + "duration": 32, "y": 0, "ease": "expoOut", "char": 2 } }, { - "t": 94012.5, + "t": 99487.5, "e": "ZoomCamera", "v": { "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 0.8 + "zoom": 0.8, + "mode": "stage" } }, { "t": 105225, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 105312.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 108070.588235294, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 108137.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 110894.117647059, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 1 + "char": 1, + "ease": "expoOut" } }, { "t": 110962.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1 + "duration": 32, + "zoom": 1, + "mode": "stage" } }, { "t": 113717.647058823, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 113787.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 116364.705882353, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 2 + "char": 2, + "ease": "expoOut" } }, { "t": 116462.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 0.8 + "duration": 32, + "zoom": 0.8, + "mode": "stage" } }, { "t": 119364.705882353, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 119462.5, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 122050, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 2 + "char": 2, + "ease": "expoOut" } }, { "t": 122150, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 0.8 + "duration": 32, + "zoom": 0.8, + "mode": "stage" } }, { "t": 125011.764705882, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 0 + "char": 0, + "ease": "expoOut" } }, { "t": 125100, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "expoOut", - "mode": "stage", - "zoom": 1.2 + "duration": 32, + "zoom": 1.2, + "mode": "stage" } }, { "t": 127525, "e": "FocusCamera", "v": { - "duration": 32, "x": 0, + "duration": 32, "y": 0, - "ease": "expoOut", - "char": 2 + "char": 2, + "ease": "expoOut" } }, { "t": 127575, "e": "ZoomCamera", "v": { - "duration": 32, "ease": "smoothStepInOut", - "mode": "stage", - "zoom": 0.8 + "duration": 32, + "zoom": 0.8, + "mode": "stage" } } ], @@ -12022,4 +12169,4 @@ ] }, "generatedBy": "Friday Night Funkin' - v0.5.1" -} \ No newline at end of file +} diff --git a/assets/preload/data/ui/freeplay/styles/spooky.json b/assets/preload/data/ui/freeplay/styles/spooky.json index f09cc7d..e5494f1 100644 --- a/assets/preload/data/ui/freeplay/styles/spooky.json +++ b/assets/preload/data/ui/freeplay/styles/spooky.json @@ -5,5 +5,5 @@ "numbersAsset": "digital_numbers_spooky", "capsuleAsset": "freeplay/freeplayCapsule/capsule/freeplayCapsule_spooky", "capsuleTextColors": ["#00CC0D", "#00CC0D"], - "startDelay": 1.15 + "startDelay": 1.16 } diff --git a/assets/preload/images/freeplay/freeplay-pico/pumpco.png b/assets/preload/images/freeplay/freeplay-pico/pumpco.png new file mode 100644 index 0000000..e91af6d Binary files /dev/null and b/assets/preload/images/freeplay/freeplay-pico/pumpco.png differ diff --git a/assets/preload/images/freeplay/freeplay-pico/pumpco.xml b/assets/preload/images/freeplay/freeplay-pico/pumpco.xml new file mode 100644 index 0000000..d672d67 --- /dev/null +++ b/assets/preload/images/freeplay/freeplay-pico/pumpco.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/preload/images/freeplay/icons/molochpixel.png b/assets/preload/images/freeplay/icons/molochpixel.png index 13ce3bc..8fdb395 100644 Binary files a/assets/preload/images/freeplay/icons/molochpixel.png and b/assets/preload/images/freeplay/icons/molochpixel.png differ diff --git a/assets/preload/images/freeplay/icons/molochpixel.xml b/assets/preload/images/freeplay/icons/molochpixel.xml index 8f386dd..d5adc79 100644 --- a/assets/preload/images/freeplay/icons/molochpixel.xml +++ b/assets/preload/images/freeplay/icons/molochpixel.xml @@ -1,11 +1,11 @@ - + - - - - - - + + + + + + diff --git a/assets/preload/images/icons/icon-spooky-flipped-old.png b/assets/preload/images/icons/icon-spooky-flipped-old.png new file mode 100644 index 0000000..accf011 Binary files /dev/null and b/assets/preload/images/icons/icon-spooky-flipped-old.png differ diff --git a/assets/preload/images/icons/icon-spooky-old.png b/assets/preload/images/icons/icon-spooky-old.png new file mode 100644 index 0000000..023819c Binary files /dev/null and b/assets/preload/images/icons/icon-spooky-old.png differ diff --git a/assets/preload/music/tutorialInstPreview/tutorialInstPreview.ogg b/assets/preload/music/tutorialInstPreview/tutorialInstPreview.ogg new file mode 100644 index 0000000..ad1ca5a Binary files /dev/null and b/assets/preload/music/tutorialInstPreview/tutorialInstPreview.ogg differ diff --git a/assets/preload/scripts/characters/pump-playable-dark.hxc b/assets/preload/scripts/characters/pump-playable-dark.hxc index 3f8c7ef..869d93a 100644 --- a/assets/preload/scripts/characters/pump-playable-dark.hxc +++ b/assets/preload/scripts/characters/pump-playable-dark.hxc @@ -94,10 +94,4 @@ class PumpPlayableDarkCharacter extends MultiSparrowCharacter PauseSubState.musicSuffix = '-spooky'; } - - public override function getDeathCameraOffsets():Array { - var result = super.getDeathCameraOffsets(); - - return [result[0] - 420, result[1]]; - } } diff --git a/assets/preload/scripts/characters/pump-playable.hxc b/assets/preload/scripts/characters/pump-playable.hxc index e4bf748..9875534 100644 --- a/assets/preload/scripts/characters/pump-playable.hxc +++ b/assets/preload/scripts/characters/pump-playable.hxc @@ -68,10 +68,4 @@ class PumpPlayableCharacter extends MultiSparrowCharacter this.visible = true; } - - public override function getDeathCameraOffsets():Array { - var result = super.getDeathCameraOffsets(); - - return [result[0] - 420, result[1]]; - } } diff --git a/assets/preload/scripts/characters/skid-playable-dark.hxc b/assets/preload/scripts/characters/skid-playable-dark.hxc index 1e55add..2420f41 100644 --- a/assets/preload/scripts/characters/skid-playable-dark.hxc +++ b/assets/preload/scripts/characters/skid-playable-dark.hxc @@ -94,10 +94,4 @@ class SkidPlayableDarkCharacter extends MultiSparrowCharacter PauseSubState.musicSuffix = '-spooky'; } - - public override function getDeathCameraOffsets():Array { - var result = super.getDeathCameraOffsets(); - - return [result[0] - 420, result[1]]; - } } diff --git a/assets/preload/scripts/characters/skid-playable.hxc b/assets/preload/scripts/characters/skid-playable.hxc index ae43448..c969ae5 100644 --- a/assets/preload/scripts/characters/skid-playable.hxc +++ b/assets/preload/scripts/characters/skid-playable.hxc @@ -68,10 +68,4 @@ class SkidPlayableCharacter extends MultiSparrowCharacter this.visible = true; } - - public override function getDeathCameraOffsets():Array { - var result = super.getDeathCameraOffsets(); - - return [result[0] - 420, result[1]]; - } } diff --git a/assets/preload/scripts/characters/spooky-christmas.hxc b/assets/preload/scripts/characters/spooky-christmas.hxc index d908a65..2939db1 100644 --- a/assets/preload/scripts/characters/spooky-christmas.hxc +++ b/assets/preload/scripts/characters/spooky-christmas.hxc @@ -68,10 +68,4 @@ class SpookyChristmasCharacter extends MultiSparrowCharacter this.visible = true; } - - public override function getDeathCameraOffsets():Array { - var result = super.getDeathCameraOffsets(); - - return [result[0] + 65, result[1] + 100]; - } } diff --git a/assets/preload/scripts/characters/spooky-nogreen.hxc b/assets/preload/scripts/characters/spooky-nogreen.hxc index 663a153..934f322 100644 --- a/assets/preload/scripts/characters/spooky-nogreen.hxc +++ b/assets/preload/scripts/characters/spooky-nogreen.hxc @@ -68,10 +68,4 @@ class SpookyNoGreenCharacter extends MultiSparrowCharacter this.visible = true; } - - public override function getDeathCameraOffsets():Array { - var result = super.getDeathCameraOffsets(); - - return [result[0] - 40, result[1] + 120]; - } } diff --git a/assets/preload/scripts/characters/spooky-playable.hxc b/assets/preload/scripts/characters/spooky-playable.hxc index aec21c0..f9ae525 100644 --- a/assets/preload/scripts/characters/spooky-playable.hxc +++ b/assets/preload/scripts/characters/spooky-playable.hxc @@ -68,10 +68,4 @@ class SpookyPlayableCharacter extends MultiSparrowCharacter this.visible = true; } - - public override function getDeathCameraOffsets():Array { - var result = super.getDeathCameraOffsets(); - - return [result[0] - 40, result[1] + 120]; - } } diff --git a/assets/preload/scripts/events/FadeInOutBlackScreen.hxc b/assets/preload/scripts/events/FadeInOutBlackScreen.hxc new file mode 100644 index 0000000..3af03bf --- /dev/null +++ b/assets/preload/scripts/events/FadeInOutBlackScreen.hxc @@ -0,0 +1,195 @@ +import funkin.play.PlayState; +import funkin.play.PauseSubState; +import funkin.ui.debug.charting.ChartEditorState; +import funkin.play.PlayStatePlaylist; +import funkin.data.song.SongRegistry; +import funkin.ui.transition.LoadingState; +import funkin.ui.transition.StickerSubState; +import flixel.FlxCamera; +import flixel.math.FlxMath; +import flixel.FlxSprite; +import flixel.math.FlxAngle; +import flixel.math.FlxPoint; +import flixel.text.FlxText; +import flixel.text.FlxTextBorderStyle; +import flixel.tweens.FlxEase; +import flixel.tweens.FlxTween; +import flixel.util.FlxSpriteUtil; +import flixel.util.FlxTimer; +import funkin.graphics.adobeanimate.FlxAtlasSprite; +import funkin.graphics.FunkinSprite; +import funkin.ui.freeplay.charselect.PlayableCharacter; +import funkin.ui.MusicBeatSubState; +import funkin.graphics.shaders.AdjustColorShader; +import flixel.addons.display.FlxTiledSprite; +import flixel.addons.display.FlxBackdrop; +import funkin.PlayerSettings; +import funkin.modding.module.Module; +import funkin.modding.events.ScriptEvent; +import funkin.modding.base.ScriptedMusicBeatSubState; +import funkin.modding.base.ScriptedFlxRuntimeShader; +import funkin.modding.base.ScriptedMusicBeatState; +import funkin.util.ReflectUtil; +import flixel.FlxG; +import funkin.audio.FunkinSound; +import funkin.util.Constants; +import StringTools; +import funkin.save.Save; +import funkin.Preferences; + +class FadeInOutBlackScreen extends Module +{ + //made by Denoohay for FNF: SPOOKY MIX + + var blackScreen:FlxSprite; + + var addedStuff:Bool = false; + + var fadeTween:FlxTween; + + public function new() + { + super('FadeInOutBlackScreen'); + } + + override function onStateChangeBegin(event) + { + super.onStateChangeBegin(event); + addedStuff = false; + } + + override function onSubStateCloseBegin(event:SubStateScriptEvent) + { + super.onSubStateCloseBegin(event); + + if (ReflectUtil.getClassNameOf(FlxG.state.subState) != "funkin.play.PauseSubState" && ReflectUtil.getClassNameOf(FlxG.state.subState) == "funkin.play.PlayState" && ReflectUtil.getClassNameOf(FlxG.state) == "funkin.ui.debug.charting.ChartEditorState") + { + addedStuff = false; + } + } + + function onSongLoaded(event:SongLoadScriptEvent):Void + { + super.onSongLoaded(event); + + if (fadeTween != null) + { + fadeTween.cancel(); + fadeTween.active = true; + } + + if (addedStuff == false) + { + addedStuff = true; + + blackScreen = new FlxSprite(-100, -100).makeGraphic(FlxG.width * 2, FlxG.height * 2, 0xFF000000); + blackScreen.zIndex = 1100; + blackScreen.cameras = [PlayState.instance.camCutscene]; + PlayState.instance.add(blackScreen); + } + + if (PlayState.instance.currentVariation == 'spooky' && (PlayState.instance.currentSong.id == 'monster' || PlayState.instance.currentSong.id == 'winter-horrorland')) + { + blackScreen.alpha = 1; + PlayState.instance.camHUD.alpha = 0; + } + else + { + blackScreen.alpha = 0; + PlayState.instance.camHUD.alpha = 1; + } + } + + function onSongRetry(event:ScriptEvent) + { + super.onSongRetry(event); + + if (PlayState.instance.currentVariation == 'spooky' && (PlayState.instance.currentSong.id == 'monster' || PlayState.instance.currentSong.id == 'winter-horrorland')) + { + blackScreen.alpha = 1; + PlayState.instance.camHUD.alpha = 0; + } + else + { + blackScreen.alpha = 0; + PlayState.instance.camHUD.alpha = 1; + } + } + + function onGameOver(event:ScriptEvent):Void + { + super.onGameOver(event); + + if (PlayState.instance.currentVariation == 'spooky' && (PlayState.instance.currentSong.id == 'monster' || PlayState.instance.currentSong.id == 'winter-horrorland')) + { + blackScreen.alpha = 1; + PlayState.instance.camHUD.alpha = 0; + } + else + { + blackScreen.alpha = 0; + PlayState.instance.camHUD.alpha = 1; + } + } + + public override function onSongEvent(scriptEvent:SongEventScriptEvent) + { + super.onSongEvent(scriptEvent); + + if (scriptEvent.eventData.eventKind == "FadeInOut") + { + if (scriptEvent.eventData.value.inout == 1) + { + if (scriptEvent.eventData.value.object == 1) + { + if (scriptEvent.eventData.value.seconds != 0) + { + fadeTween = FlxTween.tween(PlayState.instance.camHUD, {alpha: 0}, scriptEvent.eventData.value.seconds); + } + else + { + PlayState.instance.camHUD.alpha = 0; + } + } + else if (scriptEvent.eventData.value.object == 2) {} + else + { + if (scriptEvent.eventData.value.seconds != 0) + { + fadeTween = FlxTween.tween(blackScreen, {alpha: 0}, scriptEvent.eventData.value.seconds); + } + else + { + blackScreen.alpha = 0; + } + } + } + else + { + if (scriptEvent.eventData.value.object == 1) + { + if (scriptEvent.eventData.value.seconds != 0) + { + fadeTween = FlxTween.tween(PlayState.instance.camHUD, {alpha: 1}, scriptEvent.eventData.value.seconds); + } + else + { + PlayState.instance.camHUD.alpha = 1; + } + } + else if (scriptEvent.eventData.value.object == 2) {} + else + { + if (scriptEvent.eventData.value.seconds != 0) + { + fadeTween = FlxTween.tween(blackScreen, {alpha: 1}, scriptEvent.eventData.value.seconds); + } + else + { + blackScreen.alpha = 1; + } + } + } + } + } +} diff --git a/assets/preload/scripts/events/FadeInOutSongEvent.hxc b/assets/preload/scripts/events/FadeInOutSongEvent.hxc new file mode 100644 index 0000000..706a261 --- /dev/null +++ b/assets/preload/scripts/events/FadeInOutSongEvent.hxc @@ -0,0 +1,79 @@ +import funkin.play.PlayState; +import funkin.play.PlayStatePlaylist; +import funkin.data.song.SongRegistry; +import funkin.ui.transition.LoadingState; +import funkin.ui.transition.StickerSubState; +import flixel.FlxCamera; +import flixel.math.FlxMath; +import flixel.FlxSprite; +import flixel.math.FlxAngle; +import flixel.math.FlxPoint; +import flixel.text.FlxText; +import flixel.text.FlxTextBorderStyle; +import flixel.tweens.FlxEase; +import flixel.tweens.FlxTween; +import flixel.util.FlxSpriteUtil; +import flixel.util.FlxTimer; +import funkin.graphics.adobeanimate.FlxAtlasSprite; +import funkin.graphics.FunkinSprite; +import funkin.ui.freeplay.charselect.PlayableCharacter; +import funkin.ui.MusicBeatSubState; +import funkin.graphics.shaders.AdjustColorShader; +import flixel.addons.display.FlxTiledSprite; +import flixel.addons.display.FlxBackdrop; +import funkin.PlayerSettings; +import funkin.modding.module.Module; +import funkin.modding.events.ScriptEvent; +import funkin.modding.base.ScriptedMusicBeatSubState; +import funkin.modding.base.ScriptedFlxRuntimeShader; +import funkin.modding.base.ScriptedMusicBeatState; +import funkin.util.ReflectUtil; +import flixel.FlxG; +import funkin.audio.FunkinSound; +import funkin.util.Constants; +import StringTools; +import funkin.save.Save; +import funkin.play.event.SongEvent; + +class FadeInOutSongEvent extends SongEvent +{ + public function new() + { + super('FadeInOut'); + } + + public override function handleEvent(data) {} + + public function getTitle() + { + return "Fade In/Out"; + } + + public function getEventSchema() + { + return + [ + { + name: "inout", + title: "Fade", + defaultValue: 0, + type: "enum", + keys: ["In" => 0, "Out" => 1] + }, + { + name: "object", + title: "Object", + defaultValue: 0, + type: "enum", + keys: ["Black Screen" => 0, "UI" => 1, "Subtitles" => 2] + }, + { + name: "seconds", + title: "Duration", + defaultValue: 0, + type: "float", + units: 'seconds' + } + ]; + } +} \ No newline at end of file diff --git a/assets/preload/scripts/events/LyricsObject.hxc b/assets/preload/scripts/events/LyricsObject.hxc new file mode 100644 index 0000000..fcbc62e --- /dev/null +++ b/assets/preload/scripts/events/LyricsObject.hxc @@ -0,0 +1,481 @@ +import funkin.play.PlayState; +import funkin.play.PauseSubState; +import funkin.ui.debug.charting.ChartEditorState; +import funkin.play.PlayStatePlaylist; +import funkin.data.song.SongRegistry; +import funkin.ui.transition.LoadingState; +import funkin.ui.transition.StickerSubState; +import flixel.FlxCamera; +import flixel.math.FlxMath; +import flixel.FlxSprite; +import flixel.math.FlxAngle; +import flixel.math.FlxPoint; +import flixel.text.FlxText; +import flixel.text.FlxTextBorderStyle; +import flixel.tweens.FlxEase; +import flixel.tweens.FlxTween; +import flixel.util.FlxSpriteUtil; +import flixel.util.FlxTimer; +import funkin.graphics.adobeanimate.FlxAtlasSprite; +import funkin.graphics.FunkinSprite; +import funkin.ui.freeplay.charselect.PlayableCharacter; +import funkin.ui.MusicBeatSubState; +import funkin.graphics.shaders.AdjustColorShader; +import flixel.addons.display.FlxTiledSprite; +import flixel.addons.display.FlxBackdrop; +import funkin.PlayerSettings; +import funkin.modding.module.Module; +import funkin.modding.events.ScriptEvent; +import funkin.modding.base.ScriptedMusicBeatSubState; +import funkin.modding.base.ScriptedFlxRuntimeShader; +import funkin.modding.base.ScriptedMusicBeatState; +import funkin.util.ReflectUtil; +import flixel.FlxG; +import funkin.audio.FunkinSound; +import funkin.util.Constants; +import StringTools; +import funkin.save.Save; +import funkin.Preferences; + +class LyricsObject extends Module +{ + //made by Denoohay for FNF: SPOOKY MIX + + var subtitleText:FlxText; + var subtitleTextOVER:FlxText; + + var fadeTween:FlxTween; + + var textAlpha:Float = 1; + + var addedStuff:Bool = false; + + public function new() + { + super('LyricsObject'); + } + + override function onStateChangeBegin(event) + { + super.onStateChangeBegin(event); + addedStuff = false; + } + + override function onSubStateCloseBegin(event:SubStateScriptEvent) + { + super.onSubStateCloseBegin(event); + + if (ReflectUtil.getClassNameOf(FlxG.state.subState) != "funkin.play.PauseSubState" && ReflectUtil.getClassNameOf(FlxG.state.subState) == "funkin.play.PlayState" && ReflectUtil.getClassNameOf(FlxG.state) == "funkin.ui.debug.charting.ChartEditorState") + { + addedStuff = false; + } + } + + function onSongLoaded(event:SongLoadScriptEvent):Void + { + super.onSongLoaded(event); + + if (fadeTween != null) + { + fadeTween.cancel(); + fadeTween.active = true; + } + + if (addedStuff == false) + { + addedStuff = true; + + subtitleTextOVER = new FlxText(0, 540, FlxG.width, ""); + subtitleTextOVER.setFormat(Paths.font("vcr.ttf"), 32, 0xFFFFFFFF, "center", FlxTextBorderStyle.OUTLINE, 0xFF000000); + subtitleTextOVER.borderSize = 1.25; + subtitleTextOVER.alpha = 1; + subtitleTextOVER.zIndex = 3000; + subtitleTextOVER.cameras = [PlayState.instance.camCutscene]; + PlayState.instance.add(subtitleTextOVER); + + subtitleText = new FlxText(0, 540, FlxG.width, ""); + subtitleText.setFormat(Paths.font("vcr.ttf"), 32, 0xFFFFFFFF, "center", FlxTextBorderStyle.OUTLINE, 0xFF000000); + subtitleText.borderSize = 1.25; + subtitleText.alpha = 1; + subtitleText.zIndex = 850; + subtitleText.cameras = [PlayState.instance.camHUD]; + PlayState.instance.add(subtitleText); + } + } + + function onSongRetry(event:ScriptEvent) + { + super.onSongRetry(event); + + subtitleText.text = ""; + subtitleTextOVER.text = ""; + + subtitleText.alpha = textAlpha; + subtitleTextOVER.alpha = textAlpha; + } + + function onGameOver(event:ScriptEvent):Void + { + super.onGameOver(event); + + subtitleText.text = ""; + subtitleTextOVER.text = ""; + + subtitleText.alpha = textAlpha; + subtitleTextOVER.alpha = textAlpha; + } + + public override function onSongEvent(scriptEvent:SongEventScriptEvent) + { + super.onSongEvent(scriptEvent); + + if (scriptEvent.eventData.eventKind == "Lyrics") + { + if (scriptEvent.eventData.value.lyric != null) + { + subtitleText.text = scriptEvent.eventData.value.lyric; + subtitleTextOVER.text = scriptEvent.eventData.value.lyric; + } + + if (scriptEvent.eventData.value.font != null) + { + subtitleText.font = Paths.font(scriptEvent.eventData.value.font + '.ttf'); + subtitleTextOVER.font = Paths.font(scriptEvent.eventData.value.font + '.ttf'); + } + + if (scriptEvent.eventData.value.fontSize != null) + { + subtitleText.size = scriptEvent.eventData.value.fontSize; + subtitleTextOVER.size = scriptEvent.eventData.value.fontSize; + } + + if (scriptEvent.eventData.value.letterSpacing != null) + { + subtitleText.letterSpacing = scriptEvent.eventData.value.letterSpacing; + subtitleTextOVER.letterSpacing = scriptEvent.eventData.value.letterSpacing; + } + + if (scriptEvent.eventData.value.textColor != null) + { + if (scriptEvent.eventData.value.textColor == 0) + { + subtitleText.color = 0xFFFFFFFF; + subtitleTextOVER.color = 0xFFFFFFFF; + } + else if (scriptEvent.eventData.value.textColor == 1) + { + subtitleText.color = 0xFF000000; + subtitleTextOVER.color = 0xFF000000; + } + else if (scriptEvent.eventData.value.textColor == 2) + { + subtitleText.color = 0xFF0000FF; + subtitleTextOVER.color = 0xFF0000FF; + } + else if (scriptEvent.eventData.value.textColor == 3) + { + subtitleText.color = 0xFF8B4513; + subtitleTextOVER.color = 0xFF8B4513; + } + else if (scriptEvent.eventData.value.textColor == 4) + { + subtitleText.color = 0xFF00FFFF; + subtitleTextOVER.color = 0xFF00FFFF; + } + else if (scriptEvent.eventData.value.textColor == 5) + { + subtitleText.color = 0xFF808080; + subtitleTextOVER.color = 0xFF808080; + } + else if (scriptEvent.eventData.value.textColor == 6) + { + subtitleText.color = 0xFF008000; + subtitleTextOVER.color = 0xFF008000; + } + else if (scriptEvent.eventData.value.textColor == 7) + { + subtitleText.color = 0xFF00FF00; + subtitleTextOVER.color = 0xFF00FF00; + } + else if (scriptEvent.eventData.value.textColor == 8) + { + subtitleText.color = 0xFFFF00FF; + subtitleTextOVER.color = 0xFFFF00FF; + } + else if (scriptEvent.eventData.value.textColor == 9) + { + subtitleText.color = 0xFFFFA500; + subtitleTextOVER.color = 0xFFFFA500; + } + else if (scriptEvent.eventData.value.textColor == 10) + { + subtitleText.color = 0xFFFFC0CB; + subtitleTextOVER.color = 0xFFFFC0CB; + } + else if (scriptEvent.eventData.value.textColor == 11) + { + subtitleText.color = 0xFF800080; + subtitleTextOVER.color = 0xFF800080; + } + else if (scriptEvent.eventData.value.textColor == 12) + { + subtitleText.color = 0xFFFF0000; + subtitleTextOVER.color = 0xFFFF0000; + } + else if (scriptEvent.eventData.value.textColor == 13) + { + subtitleText.color = 0xFFFFFF00; + subtitleTextOVER.color = 0xFFFFFF00; + } + } + + if (scriptEvent.eventData.value.alignment != null) + { + if (scriptEvent.eventData.value.alignment == 0) + { + subtitleText.alignment = "center"; + subtitleTextOVER.alignment = "center"; + } + else if (scriptEvent.eventData.value.alignment == 1) + { + subtitleText.alignment = "left"; + subtitleTextOVER.alignment = "left"; + } + else if (scriptEvent.eventData.value.alignment == 2) + { + subtitleText.alignment = "right"; + subtitleTextOVER.alignment = "right"; + } + else if (scriptEvent.eventData.value.alignment == 3) + { + subtitleText.alignment = "justify"; + subtitleTextOVER.alignment = "justify"; + } + } + + if (scriptEvent.eventData.value.position != null) + { + if (scriptEvent.eventData.value.position == 0) + { + if (Preferences.downscroll) + { + subtitleText.x = 0; + subtitleText.y = 130; + subtitleTextOVER.x = 0; + subtitleTextOVER.y = 130; + } + else + { + subtitleText.x = 0; + subtitleText.y = 540; + subtitleTextOVER.x = 0; + subtitleTextOVER.y = 540; + } + } + else if (scriptEvent.eventData.value.position == 1) + { + if (Preferences.downscroll) + { + subtitleText.x = 0; + subtitleText.y = 540; + subtitleTextOVER.x = 0; + subtitleTextOVER.y = 540; + } + else + { + subtitleText.x = 0; + subtitleText.y = 130; + subtitleTextOVER.x = 0; + subtitleTextOVER.y = 130; + } + } + else if (scriptEvent.eventData.value.position == 2) + { + subtitleText.screenCenter(); + subtitleTextOVER.screenCenter(); + } + else if (scriptEvent.eventData.value.position == 3) + { + if (scriptEvent.eventData.value.customX != null) + { + subtitleText.x = scriptEvent.eventData.value.customX; + subtitleTextOVER.x = scriptEvent.eventData.value.customX; + } + + if (scriptEvent.eventData.value.customY != null) + { + subtitleText.y = scriptEvent.eventData.value.customY; + subtitleTextOVER.y = scriptEvent.eventData.value.customY; + } + } + } + else + { + if (Preferences.downscroll) + { + subtitleText.x = 0; + subtitleText.y = 130; + subtitleTextOVER.x = 0; + subtitleTextOVER.y = 130; + } + else + { + subtitleText.x = 0; + subtitleText.y = 540; + subtitleTextOVER.x = 0; + subtitleTextOVER.y = 540; + } + } + + if (scriptEvent.eventData.value.outlineWidth != null) + { + if (scriptEvent.eventData.value.outlineWidth == 1.3) + { + subtitleText.borderSize = 1.25; + subtitleTextOVER.borderSize = 1.25; + } + else + { + subtitleText.borderSize = scriptEvent.eventData.value.outlineWidth; + subtitleTextOVER.borderSize = scriptEvent.eventData.value.outlineWidth; + } + } + + /* + if (scriptEvent.eventData.value.borderColor != null) + { + if (scriptEvent.eventData.value.borderColor == 0) + { + subtitleText.borderColor = 0xFFFFFFFF; + subtitleTextOVER.borderColor = 0xFFFFFFFF; + } + else if (scriptEvent.eventData.value.borderColor == 1) + { + subtitleText.borderColor = 0xFF000000; + subtitleTextOVER.borderColor = 0xFF000000; + } + else if (scriptEvent.eventData.value.borderColor == 2) + { + subtitleText.borderColor = 0xFF0000FF; + subtitleTextOVER.borderColor = 0xFF0000FF; + } + else if (scriptEvent.eventData.value.borderColor == 3) + { + subtitleText.borderColor = 0xFF8B4513; + subtitleTextOVER.borderColor = 0xFF8B4513; + } + else if (scriptEvent.eventData.value.borderColor == 4) + { + subtitleText.borderColor = 0xFF00FFFF; + subtitleTextOVER.borderColor = 0xFF00FFFF; + } + else if (scriptEvent.eventData.value.borderColor == 5) + { + subtitleText.borderColor = 0xFF808080; + subtitleTextOVER.borderColor = 0xFF808080; + } + else if (scriptEvent.eventData.value.borderColor == 6) + { + subtitleText.borderColor = 0xFF008000; + subtitleTextOVER.borderColor = 0xFF008000; + } + else if (scriptEvent.eventData.value.borderColor == 7) + { + subtitleText.borderColor = 0xFF00FF00; + subtitleTextOVER.borderColor = 0xFF00FF00; + } + else if (scriptEvent.eventData.value.borderColor == 8) + { + subtitleText.borderColor = 0xFFFF00FF; + subtitleTextOVER.borderColor = 0xFFFF00FF; + } + else if (scriptEvent.eventData.value.borderColor == 9) + { + subtitleText.borderColor = 0xFFFFA500; + subtitleTextOVER.borderColor = 0xFFFFA500; + } + else if (scriptEvent.eventData.value.borderColor == 10) + { + subtitleText.borderColor = 0xFFFFC0CB; + subtitleTextOVER.borderColor = 0xFFFFC0CB; + } + else if (scriptEvent.eventData.value.borderColor == 11) + { + subtitleText.borderColor = 0xFF800080; + subtitleTextOVER.borderColor = 0xFF800080; + } + else if (scriptEvent.eventData.value.borderColor == 12) + { + subtitleText.borderColor = 0xFFFF0000; + subtitleTextOVER.borderColor = 0xFFFF0000; + } + else if (scriptEvent.eventData.value.borderColor == 13) + { + subtitleText.borderColor = 0xFFFFFF00; + subtitleTextOVER.borderColor = 0xFFFFFF00; + } + } + */ + + if (scriptEvent.eventData.value.opacity != null) + { + subtitleText.alpha = scriptEvent.eventData.value.opacity / 100; + subtitleTextOVER.alpha = scriptEvent.eventData.value.opacity / 100; + + textAlpha = scriptEvent.eventData.value.opacity / 100; + } + + if (scriptEvent.eventData.value.layering != null) + { + if (scriptEvent.eventData.value.layering == 1) + { + subtitleText.visible = false; + subtitleTextOVER.visible = true; + } + else + { + subtitleText.visible = true; + subtitleTextOVER.visible = false; + } + } + else + { + subtitleText.visible = true; + subtitleTextOVER.visible = false; + } + } + + if (scriptEvent.eventData.eventKind == "FadeInOut") + { + if (scriptEvent.eventData.value.object == 2) + { + if (scriptEvent.eventData.value.inout == 1) + { + if (scriptEvent.eventData.value.seconds != 0) + { + fadeTween = FlxTween.tween(subtitleText, {alpha: 0}, scriptEvent.eventData.value.seconds); + fadeTween = FlxTween.tween(subtitleTextOVER, {alpha: 0}, scriptEvent.eventData.value.seconds); + } + else + { + subtitleText.alpha = 0; + subtitleTextOVER.alpha = 0; + } + } + else + { + if (scriptEvent.eventData.value.seconds != 0) + { + fadeTween = FlxTween.tween(subtitleText, {alpha: textAlpha}, scriptEvent.eventData.value.seconds); + fadeTween = FlxTween.tween(subtitleTextOVER, {alpha: textAlpha}, scriptEvent.eventData.value.seconds); + } + else + { + subtitleText.alpha = textAlpha; + subtitleTextOVER.alpha = textAlpha; + } + } + } + } + } +} diff --git a/assets/preload/scripts/events/LyricsSongEvent.hxc b/assets/preload/scripts/events/LyricsSongEvent.hxc new file mode 100644 index 0000000..617d766 --- /dev/null +++ b/assets/preload/scripts/events/LyricsSongEvent.hxc @@ -0,0 +1,145 @@ +import funkin.play.PlayState; +import funkin.play.PlayStatePlaylist; +import funkin.data.song.SongRegistry; +import funkin.ui.transition.LoadingState; +import funkin.ui.transition.StickerSubState; +import flixel.FlxCamera; +import flixel.math.FlxMath; +import flixel.FlxSprite; +import flixel.math.FlxAngle; +import flixel.math.FlxPoint; +import flixel.text.FlxText; +import flixel.text.FlxTextBorderStyle; +import flixel.tweens.FlxEase; +import flixel.tweens.FlxTween; +import flixel.util.FlxSpriteUtil; +import flixel.util.FlxTimer; +import funkin.graphics.adobeanimate.FlxAtlasSprite; +import funkin.graphics.FunkinSprite; +import funkin.ui.freeplay.charselect.PlayableCharacter; +import funkin.ui.MusicBeatSubState; +import funkin.graphics.shaders.AdjustColorShader; +import flixel.addons.display.FlxTiledSprite; +import flixel.addons.display.FlxBackdrop; +import funkin.PlayerSettings; +import funkin.modding.module.Module; +import funkin.modding.events.ScriptEvent; +import funkin.modding.base.ScriptedMusicBeatSubState; +import funkin.modding.base.ScriptedFlxRuntimeShader; +import funkin.modding.base.ScriptedMusicBeatState; +import funkin.util.ReflectUtil; +import flixel.FlxG; +import funkin.audio.FunkinSound; +import funkin.util.Constants; +import StringTools; +import funkin.save.Save; +import funkin.play.event.SongEvent; + +class LyricsSongEvent extends SongEvent +{ + public function new() + { + super('Lyrics'); + } + + public override function handleEvent(data) {} + + public function getTitle() + { + return "Lyrics"; + } + + public function getEventSchema() + { + return + [ + { + name: "lyric", + title: "Text", + defaultValue: '', + type: "string" + }, + { + name: "font", + title: "Font", + defaultValue: 'vcr', + type: "string", + units: '.ttf' + }, + { + name: "fontSize", + title: "Font Size", + defaultValue: 32, + type: "integer" + }, + { + name: "letterSpacing", + title: "Letter Spacing", + defaultValue: 0, + type: "float" + }, + { + name: "textColor", + title: "Text Color", + defaultValue: 0, + type: "enum", + keys: ["White" => 0, "Black" => 1, "Blue" => 2, "Brown" => 3, "Cyan" => 4, "Gray" => 5, "Green" => 6, "Lime" => 7, "Magenta" => 8, "Orange" => 9, "Pink" => 10, "Purple" => 11, "Red" => 12, "Yellow" => 13] + }, + { + name: "alignment", + title: "Alignment", + defaultValue: 0, + type: "enum", + keys: ["Centered" => 0, "Left" => 1, "Right" => 2, "Justify" => 3] + }, + { + name: "position", + title: "Position", + defaultValue: 0, + type: "enum", + keys: ["Bottom (Top on Downscroll, Igornes Custom X and Y)" => 0, "Top (Bottom on Downscroll, Igornes Custom X and Y)" => 1, "Centered (Igornes Custom X and Y)" => 2, "Custom (Input Below)" => 3] + }, + { + name: "customX", + title: "Custom X", + defaultValue: 0, + type: "float" + }, + { + name: "customY", + title: "Custom Y", + defaultValue: 0, + type: "float" + }, + { + name: "outlineWidth", + title: "Outline Width", + defaultValue: 1.3, + type: "float" + }, + /* + { + name: "outlineColor", + title: "Outline Color", + defaultValue: 1, + type: "enum", + keys: ["White" => 0, "Black" => 1, "Blue" => 2, "Brown" => 3, "Cyan" => 4, "Gray" => 5, "Green" => 6, "Lime" => 7, "Magenta" => 8, "Orange" => 9, "Pink" => 10, "Purple" => 11, "Red" => 12, "Yellow" => 13] + }, + */ + { + name: "opacity", + title: "Opacity", + defaultValue: 100, + type: "float", + units: '%' + }, + { + name: "layering", + title: "Layering", + defaultValue: 0, + type: "enum", + keys: ["Under UI (Default)" => 0, "Above Everything" => 1] + } + ]; + } +} \ No newline at end of file diff --git a/assets/preload/scripts/events/PlaySoundAction.hxc b/assets/preload/scripts/events/PlaySoundAction.hxc new file mode 100644 index 0000000..7d1f9d6 --- /dev/null +++ b/assets/preload/scripts/events/PlaySoundAction.hxc @@ -0,0 +1,58 @@ +import funkin.play.PlayState; +import funkin.play.PauseSubState; +import funkin.ui.debug.charting.ChartEditorState; +import funkin.play.PlayStatePlaylist; +import funkin.data.song.SongRegistry; +import funkin.ui.transition.LoadingState; +import funkin.ui.transition.StickerSubState; +import flixel.FlxCamera; +import flixel.math.FlxMath; +import flixel.FlxSprite; +import flixel.math.FlxAngle; +import flixel.math.FlxPoint; +import flixel.text.FlxText; +import flixel.text.FlxTextBorderStyle; +import flixel.tweens.FlxEase; +import flixel.tweens.FlxTween; +import flixel.util.FlxSpriteUtil; +import flixel.util.FlxTimer; +import funkin.graphics.adobeanimate.FlxAtlasSprite; +import funkin.graphics.FunkinSprite; +import funkin.ui.freeplay.charselect.PlayableCharacter; +import funkin.ui.MusicBeatSubState; +import funkin.graphics.shaders.AdjustColorShader; +import flixel.addons.display.FlxTiledSprite; +import flixel.addons.display.FlxBackdrop; +import funkin.PlayerSettings; +import funkin.modding.module.Module; +import funkin.modding.events.ScriptEvent; +import funkin.modding.base.ScriptedMusicBeatSubState; +import funkin.modding.base.ScriptedFlxRuntimeShader; +import funkin.modding.base.ScriptedMusicBeatState; +import funkin.util.ReflectUtil; +import flixel.FlxG; +import funkin.audio.FunkinSound; +import funkin.util.Constants; +import StringTools; +import funkin.save.Save; +import funkin.Preferences; + +class PlaySoundAction extends Module +{ + //made by Denoohay for FNF: SPOOKY MIX + + public function new() + { + super('PlaySoundAction'); + } + + public override function onSongEvent(scriptEvent:SongEventScriptEvent) + { + super.onSongEvent(scriptEvent); + + if (scriptEvent.eventData.eventKind == "playSound") + { + FunkinSound.playOnce(Paths.sound(scriptEvent.eventData.value.fileName), scriptEvent.eventData.value.volume); + } + } +} diff --git a/assets/preload/scripts/events/PlaySoundSongEvent.hxc b/assets/preload/scripts/events/PlaySoundSongEvent.hxc new file mode 100644 index 0000000..f0b743b --- /dev/null +++ b/assets/preload/scripts/events/PlaySoundSongEvent.hxc @@ -0,0 +1,71 @@ +import funkin.play.PlayState; +import funkin.play.PlayStatePlaylist; +import funkin.data.song.SongRegistry; +import funkin.ui.transition.LoadingState; +import funkin.ui.transition.StickerSubState; +import flixel.FlxCamera; +import flixel.math.FlxMath; +import flixel.FlxSprite; +import flixel.math.FlxAngle; +import flixel.math.FlxPoint; +import flixel.text.FlxText; +import flixel.text.FlxTextBorderStyle; +import flixel.tweens.FlxEase; +import flixel.tweens.FlxTween; +import flixel.util.FlxSpriteUtil; +import flixel.util.FlxTimer; +import funkin.graphics.adobeanimate.FlxAtlasSprite; +import funkin.graphics.FunkinSprite; +import funkin.ui.freeplay.charselect.PlayableCharacter; +import funkin.ui.MusicBeatSubState; +import funkin.graphics.shaders.AdjustColorShader; +import flixel.addons.display.FlxTiledSprite; +import flixel.addons.display.FlxBackdrop; +import funkin.PlayerSettings; +import funkin.modding.module.Module; +import funkin.modding.events.ScriptEvent; +import funkin.modding.base.ScriptedMusicBeatSubState; +import funkin.modding.base.ScriptedFlxRuntimeShader; +import funkin.modding.base.ScriptedMusicBeatState; +import funkin.util.ReflectUtil; +import flixel.FlxG; +import funkin.audio.FunkinSound; +import funkin.util.Constants; +import StringTools; +import funkin.save.Save; +import funkin.play.event.SongEvent; + +class PlaySoundSongEvent extends SongEvent +{ + public function new() + { + super('playSound'); + } + + public override function handleEvent(data) {} + + public function getTitle() + { + return "Play Sound"; + } + + public function getEventSchema() + { + return + [ + { + name: "fileName", + title: "File Name", + defaultValue: "", + type: "string", + units: ".ogg" + }, + { + name: 'volume', + title: 'Volume', + defaultValue: 1, + type: "float" + } + ]; + } +} \ No newline at end of file diff --git a/assets/preload/scripts/events/SongVolumeAction.hxc b/assets/preload/scripts/events/SongVolumeAction.hxc new file mode 100644 index 0000000..1af60a0 --- /dev/null +++ b/assets/preload/scripts/events/SongVolumeAction.hxc @@ -0,0 +1,95 @@ +import funkin.play.PlayState; +import funkin.play.PauseSubState; +import funkin.ui.debug.charting.ChartEditorState; +import funkin.play.PlayStatePlaylist; +import funkin.data.song.SongRegistry; +import funkin.ui.transition.LoadingState; +import funkin.ui.transition.StickerSubState; +import flixel.FlxCamera; +import flixel.math.FlxMath; +import flixel.FlxSprite; +import flixel.math.FlxAngle; +import flixel.math.FlxPoint; +import flixel.text.FlxText; +import flixel.text.FlxTextBorderStyle; +import flixel.tweens.FlxEase; +import flixel.tweens.FlxTween; +import flixel.util.FlxSpriteUtil; +import flixel.util.FlxTimer; +import funkin.graphics.adobeanimate.FlxAtlasSprite; +import funkin.graphics.FunkinSprite; +import funkin.ui.freeplay.charselect.PlayableCharacter; +import funkin.ui.MusicBeatSubState; +import funkin.graphics.shaders.AdjustColorShader; +import flixel.addons.display.FlxTiledSprite; +import flixel.addons.display.FlxBackdrop; +import funkin.PlayerSettings; +import funkin.modding.module.Module; +import funkin.modding.events.ScriptEvent; +import funkin.modding.base.ScriptedMusicBeatSubState; +import funkin.modding.base.ScriptedFlxRuntimeShader; +import funkin.modding.base.ScriptedMusicBeatState; +import funkin.util.ReflectUtil; +import flixel.FlxG; +import funkin.audio.FunkinSound; +import funkin.util.Constants; +import StringTools; +import funkin.save.Save; +import funkin.Preferences; + +class SongVolumeAction extends Module +{ + //made by Denoohay for FNF: SPOOKY MIX + + public function new() + { + super('SongVolumeAction'); + } + + function onSongRetry(event:ScriptEvent) + { + super.onSongRetry(event); + + PlayState.instance.vocals.playerVolume = 1; + PlayState.instance.vocals.opponentVolume = 1; + if (FlxG.sound.music != null) + { + FlxG.sound.music.volume = 1; + } + } + + function onGameOver(event:ScriptEvent):Void + { + super.onGameOver(event); + + PlayState.instance.vocals.playerVolume = 1; + PlayState.instance.vocals.opponentVolume = 1; + if (FlxG.sound.music != null) + { + FlxG.sound.music.volume = 1; + } + } + + public override function onSongEvent(scriptEvent:SongEventScriptEvent) + { + super.onSongEvent(scriptEvent); + + if (scriptEvent.eventData.eventKind == "songVolume") + { + if (scriptEvent.eventData.value.track == 0 || scriptEvent.eventData.value.track == 3) + { + PlayState.instance.vocals.playerVolume = scriptEvent.eventData.value.volume; + } + + if (scriptEvent.eventData.value.track == 1 || scriptEvent.eventData.value.track == 3) + { + PlayState.instance.vocals.opponentVolume = scriptEvent.eventData.value.volume; + } + + if (scriptEvent.eventData.value.track == 2 || scriptEvent.eventData.value.track == 3) + { + FlxG.sound.music.volume = scriptEvent.eventData.value.volume; + } + } + } +} diff --git a/assets/preload/scripts/events/SongVolumeSongEvent.hxc b/assets/preload/scripts/events/SongVolumeSongEvent.hxc new file mode 100644 index 0000000..7916650 --- /dev/null +++ b/assets/preload/scripts/events/SongVolumeSongEvent.hxc @@ -0,0 +1,71 @@ +import funkin.play.PlayState; +import funkin.play.PlayStatePlaylist; +import funkin.data.song.SongRegistry; +import funkin.ui.transition.LoadingState; +import funkin.ui.transition.StickerSubState; +import flixel.FlxCamera; +import flixel.math.FlxMath; +import flixel.FlxSprite; +import flixel.math.FlxAngle; +import flixel.math.FlxPoint; +import flixel.text.FlxText; +import flixel.text.FlxTextBorderStyle; +import flixel.tweens.FlxEase; +import flixel.tweens.FlxTween; +import flixel.util.FlxSpriteUtil; +import flixel.util.FlxTimer; +import funkin.graphics.adobeanimate.FlxAtlasSprite; +import funkin.graphics.FunkinSprite; +import funkin.ui.freeplay.charselect.PlayableCharacter; +import funkin.ui.MusicBeatSubState; +import funkin.graphics.shaders.AdjustColorShader; +import flixel.addons.display.FlxTiledSprite; +import flixel.addons.display.FlxBackdrop; +import funkin.PlayerSettings; +import funkin.modding.module.Module; +import funkin.modding.events.ScriptEvent; +import funkin.modding.base.ScriptedMusicBeatSubState; +import funkin.modding.base.ScriptedFlxRuntimeShader; +import funkin.modding.base.ScriptedMusicBeatState; +import funkin.util.ReflectUtil; +import flixel.FlxG; +import funkin.audio.FunkinSound; +import funkin.util.Constants; +import StringTools; +import funkin.save.Save; +import funkin.play.event.SongEvent; + +class SongVolumeSongEvent extends SongEvent +{ + public function new() + { + super('songVolume'); + } + + public override function handleEvent(data) {} + + public function getTitle() + { + return "Set Song Volume"; + } + + public function getEventSchema() + { + return + [ + { + name: "track", + title: "Track", + defaultValue: 0, + type: "enum", + keys: ["Player Voice" => 0, "Opponent Voice" => 1, "Instrumental" => 2, "All Tracks" => 3] + }, + { + name: 'volume', + title: 'Volume', + defaultValue: 1, + type: "float" + } + ]; + } +} \ No newline at end of file diff --git a/assets/shared/images/characters/Pump_Opponent-dark.png b/assets/shared/images/characters/Pump_Opponent-dark.png index ab5d62a..1a676ff 100644 Binary files a/assets/shared/images/characters/Pump_Opponent-dark.png and b/assets/shared/images/characters/Pump_Opponent-dark.png differ diff --git a/assets/shared/images/characters/Pump_Opponent.png b/assets/shared/images/characters/Pump_Opponent.png index d2c8135..d0957ea 100644 Binary files a/assets/shared/images/characters/Pump_Opponent.png and b/assets/shared/images/characters/Pump_Opponent.png differ diff --git a/assets/shared/images/characters/Pump_Playable-dark.png b/assets/shared/images/characters/Pump_Playable-dark.png index 74c40c8..ae39c6c 100644 Binary files a/assets/shared/images/characters/Pump_Playable-dark.png and b/assets/shared/images/characters/Pump_Playable-dark.png differ diff --git a/assets/shared/images/characters/Pump_Playable.png b/assets/shared/images/characters/Pump_Playable.png index f46d09b..0bc6e69 100644 Binary files a/assets/shared/images/characters/Pump_Playable.png and b/assets/shared/images/characters/Pump_Playable.png differ diff --git a/assets/shared/images/characters/Skid_Opponent-dark.png b/assets/shared/images/characters/Skid_Opponent-dark.png index 997e95a..c31291b 100644 Binary files a/assets/shared/images/characters/Skid_Opponent-dark.png and b/assets/shared/images/characters/Skid_Opponent-dark.png differ diff --git a/assets/shared/images/characters/Skid_Opponent-dark.xml b/assets/shared/images/characters/Skid_Opponent-dark.xml index 9e00281..21652e0 100644 --- a/assets/shared/images/characters/Skid_Opponent-dark.xml +++ b/assets/shared/images/characters/Skid_Opponent-dark.xml @@ -34,22 +34,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -66,36 +66,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/shared/images/characters/Skid_Opponent.png b/assets/shared/images/characters/Skid_Opponent.png index 33837b2..2c20f82 100644 Binary files a/assets/shared/images/characters/Skid_Opponent.png and b/assets/shared/images/characters/Skid_Opponent.png differ diff --git a/assets/shared/images/characters/Skid_Opponent.xml b/assets/shared/images/characters/Skid_Opponent.xml index 442c308..863a708 100644 --- a/assets/shared/images/characters/Skid_Opponent.xml +++ b/assets/shared/images/characters/Skid_Opponent.xml @@ -34,22 +34,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -66,36 +66,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/shared/images/characters/Skid_Playable-dark.png b/assets/shared/images/characters/Skid_Playable-dark.png index 5f3fda4..eda6629 100644 Binary files a/assets/shared/images/characters/Skid_Playable-dark.png and b/assets/shared/images/characters/Skid_Playable-dark.png differ diff --git a/assets/shared/images/characters/Skid_Playable-dark.xml b/assets/shared/images/characters/Skid_Playable-dark.xml index b0edabd..50d58c1 100644 --- a/assets/shared/images/characters/Skid_Playable-dark.xml +++ b/assets/shared/images/characters/Skid_Playable-dark.xml @@ -34,22 +34,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -68,98 +68,98 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/shared/images/characters/Skid_Playable.png b/assets/shared/images/characters/Skid_Playable.png index fec0678..42442d5 100644 Binary files a/assets/shared/images/characters/Skid_Playable.png and b/assets/shared/images/characters/Skid_Playable.png differ diff --git a/assets/shared/images/characters/Skid_Playable.xml b/assets/shared/images/characters/Skid_Playable.xml index 521f14a..dbcc43a 100644 --- a/assets/shared/images/characters/Skid_Playable.xml +++ b/assets/shared/images/characters/Skid_Playable.xml @@ -34,22 +34,22 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -68,98 +68,98 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/shared/images/characters/scarydaddy.png b/assets/shared/images/characters/scarydaddy.png index 3ee8ab6..0fbd5ca 100644 Binary files a/assets/shared/images/characters/scarydaddy.png and b/assets/shared/images/characters/scarydaddy.png differ diff --git a/source/funkin/play/Countdown.hx b/source/funkin/play/Countdown.hx index 8891950..94a7548 100644 --- a/source/funkin/play/Countdown.hx +++ b/source/funkin/play/Countdown.hx @@ -248,12 +248,6 @@ class Countdown var offsets = noteStyle.getCountdownSpriteOffsets(index); countdownSprite.x += offsets[0]; countdownSprite.y += offsets[1]; - - - if (PlayState.instance.coverscreenW.alpha != 0) - countdownSprite.alpha = 1 - PlayState.instance.coverscreenW.alpha; - else if (PlayState.instance.coverscreen.alpha != 0) - countdownSprite.alpha = 1 - PlayState.instance.coverscreen.alpha; } /** diff --git a/source/funkin/play/PauseSubState.hx b/source/funkin/play/PauseSubState.hx index 7415d25..b9175e8 100644 --- a/source/funkin/play/PauseSubState.hx +++ b/source/funkin/play/PauseSubState.hx @@ -297,11 +297,11 @@ class PauseSubState extends MusicBeatSubState if (PlayState.instance?.currentChart != null) { //this is all stupid coding but it works for showing ??? when you first play monster's songs - if (Save.instance.hasBeatenSong('monster', ['easy-spooky', 'normal-spooky', 'hard-spooky']) == false && PlayState.instance.currentChart.songName == 'Monster (Spooky Mix)' && (PlayState.instance.coverscreen.alpha != 0 && PlayState.instance.songScore == 0)) + if (Save.instance.hasBeatenSong('monster', ['easy-spooky', 'normal-spooky', 'hard-spooky']) == false && PlayState.instance.currentChart.songName == 'Monster (Spooky Mix)' && (PlayState.instance.camHUD.alpha != 1 && PlayState.instance.songScore == 0)) { metadataSong.text = '???'; } - else if (Save.instance.hasBeatenSong('winter-horrorland', ['easy-spooky', 'normal-spooky', 'hard-spooky']) == false && PlayState.instance.currentChart.songName == 'Winter Horrorland (Spooky Mix)' && (PlayState.instance.coverscreen.alpha != 0 && PlayState.instance.songScore == 0)) + else if (Save.instance.hasBeatenSong('winter-horrorland', ['easy-spooky', 'normal-spooky', 'hard-spooky']) == false && PlayState.instance.currentChart.songName == 'Winter Horrorland (Spooky Mix)' && (PlayState.instance.camHUD.alpha != 1 && PlayState.instance.songScore == 0)) { metadataSong.text = '???'; } @@ -326,7 +326,7 @@ class PauseSubState extends MusicBeatSubState metadataModArt.setFormat(Paths.font('vcr.ttf'), 32, FlxColor.WHITE, FlxTextAlign.RIGHT); if (PlayState.instance?.currentChart != null) { - metadataModArt.text = 'Mod Artist: ${PlayState.instance.currentChart.modArt}'; + metadataModArt.text = 'Artwork: ${PlayState.instance.currentChart.modArt}'; } metadataModArt.scrollFactor.set(0, 0); metadata.add(metadataModArt); @@ -601,8 +601,6 @@ class PauseSubState extends MusicBeatSubState */ static function resume(state:PauseSubState):Void { - if (PlayState.instance.fadeInTween != null) PlayState.instance.fadeInTween.active = true; - // Resume a paused video if it exists. VideoCutscene.resumeVideo(); diff --git a/source/funkin/play/PlayState.hx b/source/funkin/play/PlayState.hx index 647b108..b5eb7d9 100644 --- a/source/funkin/play/PlayState.hx +++ b/source/funkin/play/PlayState.hx @@ -56,6 +56,7 @@ import funkin.play.scoring.Scoring; import funkin.play.song.Song; import funkin.play.stage.Stage; import funkin.save.Save; +import funkin.ui.debug.latency.LatencyState; import funkin.ui.debug.charting.ChartEditorState; import funkin.ui.debug.stage.StageOffsetSubState; import funkin.ui.mainmenu.MainMenuState; @@ -251,8 +252,6 @@ class PlayState extends MusicBeatSubState */ public var scrollSpeedTweens:Array = []; - public var fadeInTween:FlxTween; - public var theMidPointX:Float = 0; public var theMidPointY:Float = 0; @@ -457,14 +456,6 @@ class PlayState extends MusicBeatSubState var discordRPCAlbum:String = ''; var discordRPCIcon:String = ''; #end - - //uhhh black and white rectangles that cover the whole screen - public var coverscreen:FlxSprite; - public var coverscreenW:FlxSprite; - - //Subtitle text lol - public var subtitleText:FlxText; - public var subtitleTextOVER:FlxText; /** * RENDER OBJECTS @@ -511,11 +502,6 @@ class PlayState extends MusicBeatSubState */ public var camHUD:FlxCamera; - /** - * The camera which contains, and controls visibility of, the user interface elements. - */ - public var camCover:FlxCamera; - /** * The camera which contains, and controls visibility of, the stage and characters. */ @@ -653,6 +639,8 @@ class PlayState extends MusicBeatSubState */ public override function create():Void { + LatencyState.inLatencyState = false; + if (instance != null) { // TODO: Do something in this case? IDK. @@ -778,39 +766,6 @@ class PlayState extends MusicBeatSubState FlxG.console.registerObject('playState', this); #end - coverscreen = new FlxSprite(-100, -100).makeGraphic(FlxG.width * 2, FlxG.height * 2, FlxColor.BLACK); - coverscreen.zIndex = 1100; - if ((currentSong?.id ?? '').toLowerCase() == 'monster' || (currentSong?.id ?? '').toLowerCase() == 'winter-horrorland' ) - { - coverscreen.alpha = 1; - } - else - { - coverscreen.alpha = 0; - } - coverscreen.cameras = [camCover]; - add(coverscreen); - - coverscreenW = new FlxSprite(-100, -100).makeGraphic(FlxG.width * 2, FlxG.height * 2, FlxColor.WHITE); - coverscreenW.zIndex = 1100; - coverscreenW.alpha = 0; - coverscreenW.cameras = [camCover]; - add(coverscreenW); - - subtitleTextOVER = new FlxText(0, 540, FlxG.width, ""); - subtitleTextOVER.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, CENTER, FlxTextBorderStyle.OUTLINE, FlxColor.BLACK); - subtitleTextOVER.borderSize = 1.25; - subtitleTextOVER.zIndex = 3000; - subtitleTextOVER.cameras = [camCover]; - add(subtitleTextOVER); - - subtitleText = new FlxText(0, 540, FlxG.width, ""); - subtitleText.setFormat(Paths.font("vcr.ttf"), 32, FlxColor.WHITE, CENTER, FlxTextBorderStyle.OUTLINE, FlxColor.BLACK); - subtitleText.borderSize = 1.25; - subtitleText.zIndex = 850; - subtitleText.cameras = [camHUD]; - add(subtitleText); - initialized = true; // This step ensures z-indexes are applied properly, @@ -897,8 +852,6 @@ class PlayState extends MusicBeatSubState // Handle restarting the song when needed (player death or pressing Retry) if (needsReset) { - if (fadeInTween != null) fadeInTween.active = true; - if (!assertChartExists()) return; prevScrollTargets = []; @@ -1047,8 +1000,6 @@ class PlayState extends MusicBeatSubState boyfriendPos = currentStage.getBoyfriend().getScreenPosition(); } - if (fadeInTween != null) fadeInTween.active = false; - var pauseSubState:FlxSubState = new PauseSubState({mode: isChartingMode ? Charting : Standard}); FlxTransitionableState.skipNextTransIn = true; @@ -1099,7 +1050,7 @@ class PlayState extends MusicBeatSubState if (!isInCutscene && !disableKeys) { // RESET = Quick Game Over Screen - if (controls.RESET && coverscreen.alpha == 0 && camHUD.alpha == 1) + if (controls.RESET && camHUD.alpha == 1) { health = Constants.HEALTH_MIN; trace('RESET = True'); @@ -1506,27 +1457,6 @@ class PlayState extends MusicBeatSubState //PUT THE HARDCODED IN MID-SONG EVENTS Events events DOWN HERE /* - if ((currentSong?.id ?? '').toLowerCase() == 'test') - { - switch (Conductor.instance.currentStep) - { - case 0: - coverscreenW.alpha = 1; - coverscreen.alpha = 1; - case 12: - FlxTween.tween(coverscreenW, {alpha: 0}, 1, {ease: FlxEase.quadInOut}); - case 20: - FlxTween.tween(coverscreen, {alpha: 0}, 1, {ease: FlxEase.quadInOut}); - case 50: - subtitleText.text = "poop poop sigma test"; - case 60: - subtitleText.text = "test 2 lol"; - case 65: - subtitleText.text = ""; - } - - } - if ((currentSong?.id ?? '').toLowerCase() == 'bopeebo') { switch (Conductor.instance.currentStep) @@ -1568,11 +1498,6 @@ class PlayState extends MusicBeatSubState case 0: FreeplayState.switchToMonsterSong = ''; Save.instance.addMonsterTranitionsSeen('monster'); - coverscreen.alpha = 1; - fadeInTween.cancel(); - fadeInTween = FlxTween.tween(coverscreen, {alpha: 1}, 0); - fadeInTween.cancel(); - coverscreen.alpha = 1; camHUD.alpha = 0; case 2: FreeplayState.switchToMonsterSong = ''; @@ -1591,8 +1516,6 @@ class PlayState extends MusicBeatSubState camHUD.alpha = 1; case 156: camHUD.alpha = 1; - case 196: - coverscreen.alpha = 0; } } @@ -1618,10 +1541,6 @@ class PlayState extends MusicBeatSubState case 0: FreeplayState.switchToMonsterSong = ''; Save.instance.addMonsterTranitionsSeen('winter-horrorland'); - fadeInTween.cancel(); - fadeInTween = FlxTween.tween(coverscreen, {alpha: 1}, 0); - fadeInTween.cancel(); - coverscreen.alpha = 1; camHUD.alpha = 0; case 1: FreeplayState.switchToMonsterSong = ''; @@ -1632,11 +1551,8 @@ class PlayState extends MusicBeatSubState case 3: FreeplayState.switchToMonsterSong = ''; camHUD.alpha = 0; - case 160: - coverscreen.alpha = 0; case 227: camHUD.alpha = 1; - coverscreen.alpha = 0; } } @@ -1777,14 +1693,11 @@ class PlayState extends MusicBeatSubState camGame.bgColor = BACKGROUND_COLOR; // Show a pink background behind the stage. camHUD = new FlxCamera(); camHUD.bgColor.alpha = 0; // Show the game scene behind the camera. - camCover = new FlxCamera(); - camCover.bgColor.alpha = 0; // Show the game scene behind the camera. camCutscene = new FlxCamera(); camCutscene.bgColor.alpha = 0; // Show the game scene behind the camera. FlxG.cameras.reset(camGame); FlxG.cameras.add(camHUD, false); - FlxG.cameras.add(camCover, false); FlxG.cameras.add(camCutscene, false); // Configure camera follow point. @@ -2800,7 +2713,7 @@ class PlayState extends MusicBeatSubState */ function onNoteMiss(note:NoteSprite, playSound:Bool = false, healthChange:Float):Void { - if (coverscreen.alpha == 0 && camHUD.alpha == 1) + if (camHUD.alpha == 1) { // If we are here, we already CALLED the onNoteMiss script hook! @@ -2869,7 +2782,7 @@ class PlayState extends MusicBeatSubState */ function ghostNoteMiss(direction:NoteDirection, hasPossibleNotes:Bool = true):Void { - if (coverscreen.alpha == 0 && camHUD.alpha == 1) + if (camHUD.alpha == 1) { var event:GhostMissNoteScriptEvent = new GhostMissNoteScriptEvent(direction, // Direction missed in. hasPossibleNotes, // Whether there was a note you could have hit. @@ -2988,7 +2901,7 @@ class PlayState extends MusicBeatSubState #end // 9: Toggle the old icon. - //if (FlxG.keys.justPressed.NINE) iconP1.toggleOldIcon(); + if (FlxG.keys.justPressed.NINE) iconP1.toggleOldIcon(); #if FEATURE_DEBUG_FUNCTIONS // PAGEUP: Skip forward two sections. @@ -3050,7 +2963,7 @@ class PlayState extends MusicBeatSubState } if (combo == null) combo = Highscore.tallies.combo; - if (!isPracticeMode && coverscreen.alpha == 0 && camHUD.alpha == 1) + if (!isPracticeMode && camHUD.alpha == 1) { // TODO: Input splitter uses old input system, make it pull from the precise input queue directly. var pressArray:Array = [ diff --git a/source/funkin/play/components/HealthIcon.hx b/source/funkin/play/components/HealthIcon.hx index f643045..88c2ed6 100644 --- a/source/funkin/play/components/HealthIcon.hx +++ b/source/funkin/play/components/HealthIcon.hx @@ -151,16 +151,32 @@ class HealthIcon extends FunkinSprite */ public function toggleOldIcon():Void { - if (characterId == 'bf-old') + if (isPixel == false) { - isPixel = PlayState.instance.currentStage.getBoyfriend().isPixel; - PlayState.instance.currentStage.getBoyfriend().initHealthIcon(false); - } - else - { - characterId = 'bf-old'; - isPixel = false; - loadCharacter(characterId); + if (characterId.startsWith('spooky-flipped')) + { + if (characterId == 'spooky-flipped-old') + { + PlayState.instance.currentStage.getBoyfriend().initHealthIcon(false); + } + else + { + characterId = 'spooky-flipped-old'; + loadCharacter(characterId); + } + } + else + { + if (characterId == 'spooky-old') + { + PlayState.instance.currentStage.getBoyfriend().initHealthIcon(false); + } + else + { + characterId = 'spooky-old'; + loadCharacter(characterId); + } + } } lerpIconSize(true); diff --git a/source/funkin/play/event/FadeOutInSongEvent.hx b/source/funkin/play/event/FadeOutInSongEvent.hx deleted file mode 100644 index 55f67ff..0000000 --- a/source/funkin/play/event/FadeOutInSongEvent.hx +++ /dev/null @@ -1,195 +0,0 @@ -package funkin.play.event; - -import flixel.tweens.FlxTween; -import flixel.FlxCamera; -import flixel.tweens.FlxEase; -// Data from the chart -import funkin.data.song.SongData; -import funkin.data.song.SongData.SongEventData; -// Data from the event schema -import funkin.play.event.SongEvent; -import funkin.data.event.SongEventSchema; -import funkin.data.event.SongEventSchema.SongEventFieldType; - -/** - * - * - * - * ``` - * { - * 'e': 'FadeInOut', - * 'v': { - * 'inout': 0, - * 'object': 0, - * 'seconds': 0, - * } - * } - * ``` - * - * Example: Reset to default values. - * ``` - * { - * 'e': 'FadeInOut', - * 'v': {} - * } - * ``` - */ -class FadeInOutSongEvent extends SongEvent -{ - public function new() - { - super('FadeInOut'); - } - - public override function handleEvent(data:SongEventData):Void - { - // Does nothing if there is no PlayState camera or stage. - if (PlayState.instance == null) return; - - var seconds:Null = data.getFloat('seconds'); - if (seconds == null) seconds = 0; - - var object:Null = data.getInt('object'); - if (object == null) object = 0; - - var inout:Null = data.getInt('inout'); - if (inout == null) inout = 0; - - if (inout == 1) //fade out - { - if (object == 1) - { - if (seconds != 0) - { - PlayState.instance.fadeInTween = FlxTween.tween(PlayState.instance.camHUD, {alpha: 0}, seconds); - } - else - { - PlayState.instance.camHUD.alpha = 0; - } - } - else if (object == 2) - { - if (seconds != 0) - { - if (PlayState.instance.subtitleTextOVER.text != "") - { - PlayState.instance.fadeInTween = FlxTween.tween(PlayState.instance.subtitleTextOVER, {alpha: 0}, seconds); - } - else - { - PlayState.instance.fadeInTween = FlxTween.tween(PlayState.instance.subtitleText, {alpha: 0}, seconds); - } - } - else - { - PlayState.instance.subtitleText.alpha = 0; - PlayState.instance.subtitleTextOVER.alpha = 0; - } - } - else - { - if (seconds != 0) - { - PlayState.instance.fadeInTween = FlxTween.tween(PlayState.instance.coverscreen, {alpha: 0}, seconds); - } - else - { - PlayState.instance.coverscreen.alpha = 0; - } - } - } - else //fade in - { - if (object == 1) - { - if (seconds != 0) - { - PlayState.instance.fadeInTween = FlxTween.tween(PlayState.instance.camHUD, {alpha: 1}, seconds); - } - else - { - PlayState.instance.camHUD.alpha = 1; - } - } - else if (object == 2) - { - if (seconds != 0) - { - if (PlayState.instance.subtitleTextOVER.text != "") - { - PlayState.instance.fadeInTween = FlxTween.tween(PlayState.instance.subtitleTextOVER, {alpha: 1}, seconds); - } - else - { - PlayState.instance.fadeInTween = FlxTween.tween(PlayState.instance.subtitleText, {alpha: 1}, seconds); - } - } - else - { - PlayState.instance.subtitleText.alpha = 1; - PlayState.instance.subtitleTextOVER.alpha = 1; - } - } - else - { - if (seconds != 0) - { - PlayState.instance.fadeInTween = FlxTween.tween(PlayState.instance.coverscreen, {alpha: 1}, seconds); - } - else - { - PlayState.instance.coverscreen.alpha = 1; - } - } - } - } - - public override function getTitle():String - { - return 'Fade In/Out'; - } - - public override function getIconPath():String - { - return 'ui/chart-editor/events/FadeInOut'; - } - - /** - * ``` - * { - * 'inout': ENUM, // Object - * 'object': ENUM, // Object - * 'seconds': FLOAT, // Seconds - * } - * ``` - * @return SongEventSchema - */ - public override function getEventSchema():SongEventSchema - { - return new SongEventSchema([ - { - name: "inout", - title: "Fade", - defaultValue: 0, - type: SongEventFieldType.ENUM, - keys: ["In" => 0, "Out" => 1] - }, - { - name: "object", - title: "Object", - defaultValue: 0, - type: SongEventFieldType.ENUM, - keys: ["Black Screen" => 0, "UI" => 1, "Subtitles" => 2] - }, - { - name: 'seconds', - title: 'Duration', - defaultValue: 0, - step: 0.1, - type: SongEventFieldType.FLOAT, - units: 'seconds' - } - ]); - } -} diff --git a/source/funkin/play/event/LyricsSongEvent.hx b/source/funkin/play/event/LyricsSongEvent.hx deleted file mode 100644 index f298648..0000000 --- a/source/funkin/play/event/LyricsSongEvent.hx +++ /dev/null @@ -1,109 +0,0 @@ -package funkin.play.event; - -import flixel.tweens.FlxTween; -import flixel.FlxCamera; -import flixel.tweens.FlxEase; -// Data from the chart -import funkin.data.song.SongData; -import funkin.data.song.SongData.SongEventData; -// Data from the event schema -import funkin.play.event.SongEvent; -import funkin.data.event.SongEventSchema; -import funkin.data.event.SongEventSchema.SongEventFieldType; -import flixel.util.FlxColor; - -/** - * - * - * - * ``` - * { - * 'e': 'Lyrics', - * 'v': { - * 'layering': 0, - * 'lyric': "", - * } - * } - * ``` - * - * Example: Reset to default values. - * ``` - * { - * 'e': 'Lyrics', - * 'v': {} - * } - * ``` - */ -class LyricsSongEvent extends SongEvent -{ - //Subtitle text lol - - public function new() - { - super('Lyrics'); - } - - public override function handleEvent(data:SongEventData):Void - { - // Does nothing if there is no PlayState camera or stage. - if (PlayState.instance == null) return; - - var lyric:Null = data.getString('lyric'); - if (lyric == null) lyric = ""; - - var layering:Null = data.getInt('layering'); - if (layering == null) layering = 0; - - if (layering == 1) - { - PlayState.instance.subtitleTextOVER.text = Constants.DEFAULT_LYRIC + lyric; - PlayState.instance.subtitleText.text = ""; - } - else - { - PlayState.instance.subtitleText.text = Constants.DEFAULT_LYRIC + lyric; - PlayState.instance.subtitleTextOVER.text = ""; - } - - } - - public override function getTitle():String - { - return 'Lyrics'; - } - - public override function getIconPath():String - { - return 'ui/chart-editor/events/Lyrics'; - } - - /** - * ``` - * { - * 'layering': ENUM, // Layering - * 'lyric': STRING, // Lyric - * } - * ``` - * @return SongEventSchema - */ - public override function getEventSchema():SongEventSchema - { - return new SongEventSchema([ - { - name: "layering", - title: "Layering", - defaultValue: 0, - type: SongEventFieldType.ENUM, - keys: ["Under UI (Default)" => 0, "Above Everything" => 1] - }, - { - name: 'lyric', - title: 'Lyric', - defaultValue: "", - step: 0.1, - type: SongEventFieldType.STRING, - units: '' - } - ]); - } -} diff --git a/source/funkin/play/event/SongVolumeSongEvent.hx b/source/funkin/play/event/SongVolumeSongEvent.hx deleted file mode 100644 index a89c9b5..0000000 --- a/source/funkin/play/event/SongVolumeSongEvent.hx +++ /dev/null @@ -1,109 +0,0 @@ -package funkin.play.event; - -import flixel.tweens.FlxTween; -import flixel.FlxCamera; -import flixel.tweens.FlxEase; -// Data from the chart -import funkin.data.song.SongData; -import funkin.data.song.SongData.SongEventData; -// Data from the event schema -import funkin.play.event.SongEvent; -import funkin.data.event.SongEventSchema; -import funkin.data.event.SongEventSchema.SongEventFieldType; - -/** - * - * - * - * ``` - * { - * 'e': 'songVolume', - * 'v': { - * 'track': 0, - * 'volume': 0, - * } - * } - * ``` - * - * Example: Reset to default values. - * ``` - * { - * 'e': 'songVolume', - * 'v': {} - * } - * ``` - */ -class SongVolumeSongEvent extends SongEvent -{ - public function new() - { - super('songVolume'); - } - - public override function handleEvent(data:SongEventData):Void - { - // Does nothing if there is no PlayState camera or stage. - if (PlayState.instance == null) return; - - var track:Null = data.getInt('track'); - if (track == null) track = 0; - - var volume:Null = data.getFloat('volume'); - if (volume == null) volume = 1; - - if (track == 0 || track == 3) - { - PlayState.instance.vocals.playerVolume = volume; - } - - if (track == 1 || track == 3) - { - PlayState.instance.vocals.opponentVolume = volume; - } - - if (track == 2 || track == 3) - { - FlxG.sound.music.volume = volume; - } - } - - public override function getTitle():String - { - return 'Set Song Volume'; - } - - public override function getIconPath():String - { - return 'ui/chart-editor/events/songVolume'; - } - - /** - * ``` - * { - * 'track': ENUM, // Track - * 'volume': FLOAT, // Volume - * } - * ``` - * @return SongEventSchema - */ - public override function getEventSchema():SongEventSchema - { - return new SongEventSchema([ - { - name: "track", - title: "Track", - defaultValue: 0, - type: SongEventFieldType.ENUM, - keys: ["Player Voice" => 0, "Opponent Voice" => 1, "Instrumental" => 2, "All Tracks" => 3] - }, - { - name: 'volume', - title: 'Volume', - defaultValue: 1, - step: 0.1, - type: SongEventFieldType.FLOAT, - units: '' - } - ]); - } -} diff --git a/source/funkin/play/notes/Strumline.hx b/source/funkin/play/notes/Strumline.hx index 8f8629e..5fa0fe0 100644 --- a/source/funkin/play/notes/Strumline.hx +++ b/source/funkin/play/notes/Strumline.hx @@ -13,6 +13,7 @@ import funkin.play.notes.NoteSplash; import funkin.play.notes.NoteSprite; import funkin.play.notes.SustainTrail; import funkin.data.song.SongData.SongNoteData; +import funkin.ui.debug.latency.LatencyState; import funkin.ui.options.PreferencesMenu; import funkin.util.SortUtil; import funkin.modding.events.ScriptEvent; @@ -688,7 +689,11 @@ class Strumline extends FlxSpriteGroup public function playPress(direction:NoteDirection):Void { - if (PlayState.instance.camHUD.alpha == 1) + if (LatencyState.inLatencyState == true) + { + getByDirection(direction).playPress(); + } + else if (PlayState.instance.camHUD.alpha == 1) { getByDirection(direction).playPress(); } diff --git a/source/funkin/play/scoring/Scoring.hx b/source/funkin/play/scoring/Scoring.hx index bac659a..bead1d0 100644 --- a/source/funkin/play/scoring/Scoring.hx +++ b/source/funkin/play/scoring/Scoring.hx @@ -481,18 +481,17 @@ enum abstract ScoringRank(String) switch (abstract) { case PERFECT_GOLD | PERFECT: - // return 2.5; - return 95 / 24; + return 0; case EXCELLENT: - return 95 / 24; + return 0; case GREAT: - return 95 / 24; + return 0; case GOOD: - return 95 / 24; + return 0; case SHIT: return 2 / 24; default: - return 3.5; + return 0; } } diff --git a/source/funkin/ui/PixelatedIcon.hx b/source/funkin/ui/PixelatedIcon.hx index c604a56..25408d0 100644 --- a/source/funkin/ui/PixelatedIcon.hx +++ b/source/funkin/ui/PixelatedIcon.hx @@ -75,9 +75,6 @@ class PixelatedIcon extends FlxFilteredSprite { case 'parents-christmas': this.origin.x = 140; - case 'moloch': - this.origin.x = 110; - this.origin.y = this.origin.y + 10; default: this.origin.x = 100; } @@ -86,17 +83,9 @@ class PixelatedIcon extends FlxFilteredSprite { this.active = true; - switch (char) - { - case 'moloch': - this.animation.addByPrefix('idle', 'idle0', 20, true); - this.animation.addByPrefix('confirm', 'confirm0', 20, false); - this.animation.addByPrefix('confirm-hold', 'confirm-hold0', 20, true); - default: - this.animation.addByPrefix('idle', 'idle0', 10, true); - this.animation.addByPrefix('confirm', 'confirm0', 10, false); - this.animation.addByPrefix('confirm-hold', 'confirm-hold0', 10, true); - } + this.animation.addByPrefix('idle', 'idle0', 10, true); + this.animation.addByPrefix('confirm', 'confirm0', 10, false); + this.animation.addByPrefix('confirm-hold', 'confirm-hold0', 10, true); this.animation.finishCallback = function(name:String):Void { trace('Finish pixel animation: ${name}'); diff --git a/source/funkin/ui/debug/latency/LatencyState.hx b/source/funkin/ui/debug/latency/LatencyState.hx index 6359565..c243036 100644 --- a/source/funkin/ui/debug/latency/LatencyState.hx +++ b/source/funkin/ui/debug/latency/LatencyState.hx @@ -1,3 +1,4 @@ + package funkin.ui.debug.latency; import funkin.data.notestyle.NoteStyleRegistry; @@ -46,6 +47,8 @@ class LatencyState extends MusicBeatSubState var stateCamera:FlxCamera; + public static var inLatencyState:Bool = true; + /** * A local conductor instance for this testing class, in-case we are in a PlayState * because I'm too lazy to set the old variables for conductor stuff ! @@ -61,6 +64,8 @@ class LatencyState extends MusicBeatSubState { super.create(); + inLatencyState = true; + prevPersistentDraw = FlxG.state.persistentDraw; prevPersistentUpdate = FlxG.state.persistentUpdate; @@ -199,7 +204,11 @@ class LatencyState extends MusicBeatSubState PreciseInputManager.instance.onInputPressed.remove(preciseInputPressed); PreciseInputManager.instance.onInputReleased.remove(preciseInputReleased); - FlxG.sound.music.volume = previousVolume; + if (FlxG.sound.music != null) + { + FlxG.sound.music.volume = previousVolume; + } + swagSong.stop(); FlxG.sound.list.remove(swagSong); @@ -319,6 +328,7 @@ class LatencyState extends MusicBeatSubState { // close(); cleanup(); + inLatencyState = false; FlxG.switchState(() -> new MainMenuState()); } diff --git a/source/funkin/ui/freeplay/FreeplayState.hx b/source/funkin/ui/freeplay/FreeplayState.hx index bf99179..4e1d057 100644 --- a/source/funkin/ui/freeplay/FreeplayState.hx +++ b/source/funkin/ui/freeplay/FreeplayState.hx @@ -799,7 +799,6 @@ class FreeplayState extends MusicBeatSubState { FlxG.sound.music.volume = 0; FlxG.sound.music.stop(); - //coverscreen.alpha = 1; funnyCam.alpha = 0; rankCamera.alpha = 0; busy = true; @@ -2339,20 +2338,12 @@ class FreeplayState extends MusicBeatSubState if (previewSongId == 'tutorial') { - FunkinSound.playMusic(previewSongId, + FunkinSound.playMusic('tutorialInstPreview', { startingVolume: 0.0, overrideExisting: true, restartTrack: false, - mapTimeChanges: false, // The music metadata is not alongside the audio file so this won't work. - pathsFunction: INST, - suffix: instSuffix, - partialParams: - { - loadPartial: true, - start: 0, - end: 0.065 - }, + mapTimeChanges: false, onLoad: function() { if (switchToMonsterSong != '') { diff --git a/source/funkin/ui/mainmenu/MainMenuState.hx b/source/funkin/ui/mainmenu/MainMenuState.hx index 330a77a..887bf32 100644 --- a/source/funkin/ui/mainmenu/MainMenuState.hx +++ b/source/funkin/ui/mainmenu/MainMenuState.hx @@ -169,7 +169,7 @@ class MainMenuState extends MusicBeatState super.create(); // This has to come AFTER! - this.leftWatermarkText.text = "FUNKIN' " + Constants.VERSION + " - SPOOKY MIX v1.0.1"; + this.leftWatermarkText.text = "FUNKIN' " + Constants.VERSION + " - SPOOKY MIX v1.0.2"; // this.rightWatermarkText.text = "blablabla test"; // NG.core.calls.event.logEvent('swag').send(); diff --git a/source/funkin/ui/title/TitleState.hx b/source/funkin/ui/title/TitleState.hx index eb7fdc6..426fbbc 100644 --- a/source/funkin/ui/title/TitleState.hx +++ b/source/funkin/ui/title/TitleState.hx @@ -401,7 +401,7 @@ class TitleState extends MusicBeatState case 4: deleteCoolText(); case 5: - createCoolText(['(Not) in association', 'with']); + createCoolText(['in association', 'with']); case 7: addMoreText('newgrounds'); if (ngSpr != null) ngSpr.visible = true; diff --git a/source/funkin/util/Constants.hx b/source/funkin/util/Constants.hx index 300e390..e3375ba 100644 --- a/source/funkin/util/Constants.hx +++ b/source/funkin/util/Constants.hx @@ -238,12 +238,6 @@ class Constants */ public static final DEFAULT_BOP_INTENSITY:Float = 1.015; - public static final DEFAULT_COVERSCREEN_ALPHA:Float = 0; - - public static final DEFAULT_LYRIC:String = ""; - - public static final DEFAULT_FADEIN_SECONDS:Float = 0; - /** * The default rate for camera zooms (in beats per zoom). */