diff --git a/CHANGELOG.md b/CHANGELOG.md
index ee6e752..3d1bc56 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@ All notable changes will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.2.3]
+### Added
+- More intro texts
+### Fixed
+- Exploit where you could potentially give yourself a high score via the debug menu
+- Issue/bug where you could spam the confirm button on the story menu ([shoutouts lotusotho for the CODE contribution/pull request!](https://github.com/ninjamuffin99/Funkin/pull/19))
+- Glitch where if you never would lose health if you missed a note on a fast song (shoutouts [MrDulfin](https://github.com/ninjamuffin99/Funkin/issues/10), [HotSauceBurritos](https://github.com/ninjamuffin99/Funkin/issues/13) and [LobsterMango](https://lobstermango.newgrounds.com))
+- Fixed tiny note bleed over thingies (shoutouts [lotusotho](https://github.com/ninjamuffin99/Funkin/pull/24))
+
## [0.2.2] - 2020-11-20
### Added
- Music playing on the freeplay menu.
@@ -53,4 +62,4 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [0.1.0] - 2020-10-05
### Added
-- Uh, everything. This the game's initial gamejam release. We put it out
\ No newline at end of file
+- Uh, everything. This the game's initial gamejam release. We put it out
diff --git a/Project.xml b/Project.xml
index 4d162fd..322b465 100644
--- a/Project.xml
+++ b/Project.xml
@@ -9,7 +9,8 @@
-
+
+
@@ -64,7 +65,7 @@
-
+
diff --git a/README.md b/README.md
index e069942..313730e 100644
--- a/README.md
+++ b/README.md
@@ -4,5 +4,4 @@ This is the repository for Friday Night Funkin, a game originally made for Ludum
Play the Ludum Dare prototype here: https://ninja-muffin24.itch.io/friday-night-funkin
Play the Newgrounds one here: https://www.newgrounds.com/portal/view/770371
-
-## BrandyBuizel porting this shit like a G to Nintendo Switch
\ No newline at end of file
+Support the project on the itch.io page: https://ninja-muffin24.itch.io/funkin
\ No newline at end of file
diff --git a/assets/data/introText.txt b/assets/data/introText.txt
index 8b7da62..a772043 100644
--- a/assets/data/introText.txt
+++ b/assets/data/introText.txt
@@ -22,4 +22,7 @@ play dead estate--on newgrounds
this is a god damn prototype--we workin on it okay
women are real--this is official
too over exposed--newgrounds cant handle us
-Nintendo Switch--pre-orders now available
\ No newline at end of file
+Hatsune Miku--biggest inspiration
+too many people--my head hurts
+newgrounds--forever
+refined taste in music--if i say so myself
\ No newline at end of file
diff --git a/assets/data/monster/monster.json b/assets/data/monster/monster.json
index dd62162..8a48d7b 100644
Binary files a/assets/data/monster/monster.json and b/assets/data/monster/monster.json differ
diff --git a/assets/images/NOTE_assets.xml b/assets/images/NOTE_assets.xml
index ef398e8..82a997a 100644
--- a/assets/images/NOTE_assets.xml
+++ b/assets/images/NOTE_assets.xml
@@ -1,4 +1,4 @@
-
+
@@ -11,8 +11,8 @@
-
-
+
+
@@ -22,8 +22,8 @@
-
-
+
+
@@ -44,8 +44,8 @@
-
-
+
+
diff --git a/assets/images/custom_chars/charlist.txt b/assets/images/custom_chars/charlist.txt
new file mode 100644
index 0000000..8f91b47
--- /dev/null
+++ b/assets/images/custom_chars/charlist.txt
@@ -0,0 +1 @@
+template
\ No newline at end of file
diff --git a/assets/images/custom_chars/template.png b/assets/images/custom_chars/template.png
new file mode 100644
index 0000000..8cefb72
Binary files /dev/null and b/assets/images/custom_chars/template.png differ
diff --git a/assets/images/custom_chars/template.xml b/assets/images/custom_chars/template.xml
new file mode 100644
index 0000000..50b7bd2
--- /dev/null
+++ b/assets/images/custom_chars/template.xml
@@ -0,0 +1,501 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/ChartingState.hx b/source/ChartingState.hx
index f83eae3..6b1be13 100644
--- a/source/ChartingState.hx
+++ b/source/ChartingState.hx
@@ -97,7 +97,8 @@ class ChartingState extends MusicBeatState
player1: 'bf',
player2: 'dad',
sectionLengths: [],
- speed: 1
+ speed: 1,
+ validScore: false
};
}
diff --git a/source/FreeplayState.hx b/source/FreeplayState.hx
index ccfdefa..795091f 100644
--- a/source/FreeplayState.hx
+++ b/source/FreeplayState.hx
@@ -42,7 +42,7 @@ class FreeplayState extends MusicBeatState
isDebug = true;
#end
- if (StoryMenuState.weekUnlocked[1] || isDebug)
+ if (StoryMenuState.weekUnlocked[2] || isDebug)
{
songs.push('Spookeez');
songs.push('South');
@@ -180,12 +180,10 @@ class FreeplayState extends MusicBeatState
if (curDifficulty > 2)
curDifficulty = 0;
-
#if !switch
intendedScore = Highscore.getScore(songs[curSelected], curDifficulty);
#end
-
switch (curDifficulty)
{
case 0:
@@ -199,7 +197,6 @@ class FreeplayState extends MusicBeatState
function changeSelection(change:Int = 0)
{
-
#if !switch
NGio.logEvent('Fresh');
#end
@@ -216,13 +213,11 @@ class FreeplayState extends MusicBeatState
// selector.y = (70 * curSelected) + 30;
-
#if !switch
intendedScore = Highscore.getScore(songs[curSelected], curDifficulty);
// lerpScore = 0;
#end
-
FlxG.sound.playMusic('assets/music/' + songs[curSelected] + "_Inst" + TitleState.soundExt, 0);
var bullShit:Int = 0;
diff --git a/source/PlayState.hx b/source/PlayState.hx
index fb155f3..2c5c6da 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -648,7 +648,7 @@ class PlayState extends MusicBeatState
}
else
{
- //Conductor.songPosition = FlxG.sound.music.time;
+ // Conductor.songPosition = FlxG.sound.music.time;
Conductor.songPosition += FlxG.elapsed * 1000;
if (!paused)
@@ -679,7 +679,7 @@ class PlayState extends MusicBeatState
if (camFollow.x != dad.getMidpoint().x + 150 && !PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection)
{
camFollow.setPosition(dad.getMidpoint().x + 150, dad.getMidpoint().y - 100);
- //camFollow.setPosition(lucky.getMidpoint().x - 120, lucky.getMidpoint().y + 210);
+ // camFollow.setPosition(lucky.getMidpoint().x - 120, lucky.getMidpoint().y + 210);
vocals.volume = 1;
if (SONG.song.toLowerCase() == 'tutorial')
@@ -739,14 +739,16 @@ class PlayState extends MusicBeatState
}
// better streaming of shit
- //RESET = Quick Game Over Screen
- if (controls.RESET){
+ // RESET = Quick Game Over Screen
+ if (controls.RESET)
+ {
health = 0;
trace("RESET = True");
}
- //CHEAT = brandon's a pussy
- if (controls.CHEAT){
+ // CHEAT = brandon's a pussy
+ if (controls.CHEAT)
+ {
health += 1;
trace("User is cheating!");
}
@@ -828,7 +830,7 @@ class PlayState extends MusicBeatState
if (daNote.y < -daNote.height)
{
- if (daNote.tooLate)
+ if (daNote.tooLate || !daNote.wasGoodHit)
{
health -= 0.04;
vocals.volume = 0;
@@ -851,10 +853,12 @@ class PlayState extends MusicBeatState
{
canPause = false;
-
- #if !switch
- Highscore.saveScore(SONG.song, songScore, storyDifficulty);
- #end
+ if (SONG.validScore)
+ {
+ #if !switch
+ Highscore.saveScore(SONG.song, songScore, storyDifficulty);
+ #end
+ }
if (isStoryMode)
{
@@ -868,11 +872,14 @@ class PlayState extends MusicBeatState
FlxG.switchState(new StoryMenuState());
+ // if ()
StoryMenuState.weekUnlocked[2] = true;
- NGio.unlockMedal(60961);
- Highscore.saveWeekScore(storyWeek, campaignScore, storyDifficulty);
-
+ if (SONG.validScore)
+ {
+ NGio.unlockMedal(60961);
+ Highscore.saveWeekScore(storyWeek, campaignScore, storyDifficulty);
+ }
FlxG.save.data.weekUnlocked = StoryMenuState.weekUnlocked;
FlxG.save.flush();
diff --git a/source/Song.hx b/source/Song.hx
index 8af7083..772652b 100644
--- a/source/Song.hx
+++ b/source/Song.hx
@@ -19,6 +19,7 @@ typedef SwagSong =
var player1:String;
var player2:String;
+ var validScore:Bool;
}
class Song
@@ -49,7 +50,6 @@ class Song
public static function loadFromJson(jsonInput:String, ?folder:String):SwagSong
{
-
var rawJson = Assets.getText('assets/data/' + folder.toLowerCase() + '/' + jsonInput.toLowerCase() + '.json').trim();
while (!rawJson.endsWith("}"))
@@ -59,6 +59,7 @@ class Song
}
var swagShit:SwagSong = cast Json.parse(rawJson).song;
+ swagShit.validScore = true;
trace(swagShit.notes[0]);
// FIX THE CASTING ON WINDOWS/NATIVE
diff --git a/source/StoryMenuState.hx b/source/StoryMenuState.hx
index 1bdfa86..d5338b2 100644
--- a/source/StoryMenuState.hx
+++ b/source/StoryMenuState.hx
@@ -230,15 +230,19 @@ class StoryMenuState extends MusicBeatState
var movedBack:Bool = false;
var selectedWeek:Bool = false;
-
+ var stopspamming:Bool = false;
function selectWeek()
{
if (weekUnlocked[curWeek])
{
- FlxG.sound.play('assets/sounds/confirmMenu' + TitleState.soundExt);
+ if (stopspamming == false)
+ {
+ FlxG.sound.play('assets/sounds/confirmMenu' + TitleState.soundExt);
- grpWeekText.members[curWeek].week.animation.resume();
- grpWeekCharacters.members[1].animation.play('bfConfirm');
+ grpWeekText.members[curWeek].week.animation.resume();
+ grpWeekCharacters.members[1].animation.play('bfConfirm');
+ stopspamming = true;
+ }
PlayState.storyPlaylist = weekData[curWeek];
PlayState.isStoryMode = true;
diff --git a/source/TitleState.hx b/source/TitleState.hx
index e492d0b..ba0012e 100644
--- a/source/TitleState.hx
+++ b/source/TitleState.hx
@@ -51,9 +51,9 @@ class TitleState extends MusicBeatState
super.create();
- #if (!switch && !debug && NG_LOGIN)
-
+ #if ng
var ng:NGio = new NGio(APIStuff.API, APIStuff.EncKey);
+ trace('NEWGROUNDS LOL');
#end
FlxG.save.bind('funkin', 'ninjamuffin99');