mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2024-11-05 06:14:36 +00:00
commit
d912f1cf2a
|
@ -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/),
|
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).
|
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
|
## [0.2.2] - 2020-11-20
|
||||||
### Added
|
### Added
|
||||||
- Music playing on the freeplay menu.
|
- Music playing on the freeplay menu.
|
||||||
|
|
|
@ -9,7 +9,8 @@
|
||||||
|
|
||||||
<!--The flixel preloader is not accurate in Chrome. You can use it regularly if you embed the swf into a html file
|
<!--The flixel preloader is not accurate in Chrome. You can use it regularly if you embed the swf into a html file
|
||||||
or you can set the actual size of your file manually at "FlxPreloaderBase-onUpdate-bytesTotal"-->
|
or you can set the actual size of your file manually at "FlxPreloaderBase-onUpdate-bytesTotal"-->
|
||||||
<app preloader="Preloader" resizable="true" />
|
<!-- <app preloader="Preloader" resizable="true" /> -->
|
||||||
|
<app preloader="flixel.system.FlxPreloader" />
|
||||||
|
|
||||||
<!--Minimum without FLX_NO_GAMEPAD: 11.8, without FLX_NO_NATIVE_CURSOR: 11.2-->
|
<!--Minimum without FLX_NO_GAMEPAD: 11.8, without FLX_NO_NATIVE_CURSOR: 11.2-->
|
||||||
<set name="SWF_VERSION" value="11.8" />
|
<set name="SWF_VERSION" value="11.8" />
|
||||||
|
@ -64,7 +65,7 @@
|
||||||
|
|
||||||
<!--In case you want to use the ui package-->
|
<!--In case you want to use the ui package-->
|
||||||
<haxelib name="flixel-ui" />
|
<haxelib name="flixel-ui" />
|
||||||
<haxelib name="newgrounds" />
|
<haxelib name="newgrounds"/>
|
||||||
<haxelib name="faxe" if='switch'/>
|
<haxelib name="faxe" if='switch'/>
|
||||||
|
|
||||||
<!-- <haxelib name="markdown" /> -->
|
<!-- <haxelib name="markdown" /> -->
|
||||||
|
|
|
@ -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 Ludum Dare prototype here: https://ninja-muffin24.itch.io/friday-night-funkin
|
||||||
Play the Newgrounds one here: https://www.newgrounds.com/portal/view/770371
|
Play the Newgrounds one here: https://www.newgrounds.com/portal/view/770371
|
||||||
|
Support the project on the itch.io page: https://ninja-muffin24.itch.io/funkin
|
||||||
## BrandyBuizel porting this shit like a G to Nintendo Switch
|
|
|
@ -97,7 +97,8 @@ class ChartingState extends MusicBeatState
|
||||||
player1: 'bf',
|
player1: 'bf',
|
||||||
player2: 'dad',
|
player2: 'dad',
|
||||||
sectionLengths: [],
|
sectionLengths: [],
|
||||||
speed: 1
|
speed: 1,
|
||||||
|
validScore: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ class FreeplayState extends MusicBeatState
|
||||||
isDebug = true;
|
isDebug = true;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
if (StoryMenuState.weekUnlocked[1] || isDebug)
|
if (StoryMenuState.weekUnlocked[2] || isDebug)
|
||||||
{
|
{
|
||||||
songs.push('Spookeez');
|
songs.push('Spookeez');
|
||||||
songs.push('South');
|
songs.push('South');
|
||||||
|
@ -180,12 +180,10 @@ class FreeplayState extends MusicBeatState
|
||||||
if (curDifficulty > 2)
|
if (curDifficulty > 2)
|
||||||
curDifficulty = 0;
|
curDifficulty = 0;
|
||||||
|
|
||||||
|
|
||||||
#if !switch
|
#if !switch
|
||||||
intendedScore = Highscore.getScore(songs[curSelected], curDifficulty);
|
intendedScore = Highscore.getScore(songs[curSelected], curDifficulty);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
|
||||||
switch (curDifficulty)
|
switch (curDifficulty)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -199,7 +197,6 @@ class FreeplayState extends MusicBeatState
|
||||||
|
|
||||||
function changeSelection(change:Int = 0)
|
function changeSelection(change:Int = 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
#if !switch
|
#if !switch
|
||||||
NGio.logEvent('Fresh');
|
NGio.logEvent('Fresh');
|
||||||
#end
|
#end
|
||||||
|
@ -216,13 +213,11 @@ class FreeplayState extends MusicBeatState
|
||||||
|
|
||||||
// selector.y = (70 * curSelected) + 30;
|
// selector.y = (70 * curSelected) + 30;
|
||||||
|
|
||||||
|
|
||||||
#if !switch
|
#if !switch
|
||||||
intendedScore = Highscore.getScore(songs[curSelected], curDifficulty);
|
intendedScore = Highscore.getScore(songs[curSelected], curDifficulty);
|
||||||
// lerpScore = 0;
|
// lerpScore = 0;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
|
||||||
FlxG.sound.playMusic('assets/music/' + songs[curSelected] + "_Inst" + TitleState.soundExt, 0);
|
FlxG.sound.playMusic('assets/music/' + songs[curSelected] + "_Inst" + TitleState.soundExt, 0);
|
||||||
|
|
||||||
var bullShit:Int = 0;
|
var bullShit:Int = 0;
|
||||||
|
|
|
@ -648,7 +648,7 @@ class PlayState extends MusicBeatState
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
//Conductor.songPosition = FlxG.sound.music.time;
|
// Conductor.songPosition = FlxG.sound.music.time;
|
||||||
Conductor.songPosition += FlxG.elapsed * 1000;
|
Conductor.songPosition += FlxG.elapsed * 1000;
|
||||||
|
|
||||||
if (!paused)
|
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)
|
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(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;
|
vocals.volume = 1;
|
||||||
|
|
||||||
if (SONG.song.toLowerCase() == 'tutorial')
|
if (SONG.song.toLowerCase() == 'tutorial')
|
||||||
|
@ -739,14 +739,16 @@ class PlayState extends MusicBeatState
|
||||||
}
|
}
|
||||||
// better streaming of shit
|
// better streaming of shit
|
||||||
|
|
||||||
//RESET = Quick Game Over Screen
|
// RESET = Quick Game Over Screen
|
||||||
if (controls.RESET){
|
if (controls.RESET)
|
||||||
|
{
|
||||||
health = 0;
|
health = 0;
|
||||||
trace("RESET = True");
|
trace("RESET = True");
|
||||||
}
|
}
|
||||||
|
|
||||||
//CHEAT = brandon's a pussy
|
// CHEAT = brandon's a pussy
|
||||||
if (controls.CHEAT){
|
if (controls.CHEAT)
|
||||||
|
{
|
||||||
health += 1;
|
health += 1;
|
||||||
trace("User is cheating!");
|
trace("User is cheating!");
|
||||||
}
|
}
|
||||||
|
@ -828,7 +830,7 @@ class PlayState extends MusicBeatState
|
||||||
|
|
||||||
if (daNote.y < -daNote.height)
|
if (daNote.y < -daNote.height)
|
||||||
{
|
{
|
||||||
if (daNote.tooLate)
|
if (daNote.tooLate || !daNote.wasGoodHit)
|
||||||
{
|
{
|
||||||
health -= 0.04;
|
health -= 0.04;
|
||||||
vocals.volume = 0;
|
vocals.volume = 0;
|
||||||
|
@ -851,10 +853,12 @@ class PlayState extends MusicBeatState
|
||||||
{
|
{
|
||||||
canPause = false;
|
canPause = false;
|
||||||
|
|
||||||
|
if (SONG.validScore)
|
||||||
|
{
|
||||||
#if !switch
|
#if !switch
|
||||||
Highscore.saveScore(SONG.song, songScore, storyDifficulty);
|
Highscore.saveScore(SONG.song, songScore, storyDifficulty);
|
||||||
#end
|
#end
|
||||||
|
}
|
||||||
|
|
||||||
if (isStoryMode)
|
if (isStoryMode)
|
||||||
{
|
{
|
||||||
|
@ -868,11 +872,14 @@ class PlayState extends MusicBeatState
|
||||||
|
|
||||||
FlxG.switchState(new StoryMenuState());
|
FlxG.switchState(new StoryMenuState());
|
||||||
|
|
||||||
|
// if ()
|
||||||
StoryMenuState.weekUnlocked[2] = true;
|
StoryMenuState.weekUnlocked[2] = true;
|
||||||
|
|
||||||
|
if (SONG.validScore)
|
||||||
|
{
|
||||||
NGio.unlockMedal(60961);
|
NGio.unlockMedal(60961);
|
||||||
Highscore.saveWeekScore(storyWeek, campaignScore, storyDifficulty);
|
Highscore.saveWeekScore(storyWeek, campaignScore, storyDifficulty);
|
||||||
|
}
|
||||||
|
|
||||||
FlxG.save.data.weekUnlocked = StoryMenuState.weekUnlocked;
|
FlxG.save.data.weekUnlocked = StoryMenuState.weekUnlocked;
|
||||||
FlxG.save.flush();
|
FlxG.save.flush();
|
||||||
|
|
|
@ -19,6 +19,7 @@ typedef SwagSong =
|
||||||
|
|
||||||
var player1:String;
|
var player1:String;
|
||||||
var player2:String;
|
var player2:String;
|
||||||
|
var validScore:Bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Song
|
class Song
|
||||||
|
@ -49,7 +50,6 @@ class Song
|
||||||
|
|
||||||
public static function loadFromJson(jsonInput:String, ?folder:String):SwagSong
|
public static function loadFromJson(jsonInput:String, ?folder:String):SwagSong
|
||||||
{
|
{
|
||||||
|
|
||||||
var rawJson = Assets.getText('assets/data/' + folder.toLowerCase() + '/' + jsonInput.toLowerCase() + '.json').trim();
|
var rawJson = Assets.getText('assets/data/' + folder.toLowerCase() + '/' + jsonInput.toLowerCase() + '.json').trim();
|
||||||
|
|
||||||
while (!rawJson.endsWith("}"))
|
while (!rawJson.endsWith("}"))
|
||||||
|
@ -59,6 +59,7 @@ class Song
|
||||||
}
|
}
|
||||||
|
|
||||||
var swagShit:SwagSong = cast Json.parse(rawJson).song;
|
var swagShit:SwagSong = cast Json.parse(rawJson).song;
|
||||||
|
swagShit.validScore = true;
|
||||||
trace(swagShit.notes[0]);
|
trace(swagShit.notes[0]);
|
||||||
|
|
||||||
// FIX THE CASTING ON WINDOWS/NATIVE
|
// FIX THE CASTING ON WINDOWS/NATIVE
|
||||||
|
|
|
@ -230,15 +230,19 @@ class StoryMenuState extends MusicBeatState
|
||||||
|
|
||||||
var movedBack:Bool = false;
|
var movedBack:Bool = false;
|
||||||
var selectedWeek:Bool = false;
|
var selectedWeek:Bool = false;
|
||||||
|
var stopspamming:Bool = false;
|
||||||
function selectWeek()
|
function selectWeek()
|
||||||
{
|
{
|
||||||
if (weekUnlocked[curWeek])
|
if (weekUnlocked[curWeek])
|
||||||
|
{
|
||||||
|
if (stopspamming == false)
|
||||||
{
|
{
|
||||||
FlxG.sound.play('assets/sounds/confirmMenu' + TitleState.soundExt);
|
FlxG.sound.play('assets/sounds/confirmMenu' + TitleState.soundExt);
|
||||||
|
|
||||||
grpWeekText.members[curWeek].week.animation.resume();
|
grpWeekText.members[curWeek].week.animation.resume();
|
||||||
grpWeekCharacters.members[1].animation.play('bfConfirm');
|
grpWeekCharacters.members[1].animation.play('bfConfirm');
|
||||||
|
stopspamming = true;
|
||||||
|
}
|
||||||
|
|
||||||
PlayState.storyPlaylist = weekData[curWeek];
|
PlayState.storyPlaylist = weekData[curWeek];
|
||||||
PlayState.isStoryMode = true;
|
PlayState.isStoryMode = true;
|
||||||
|
|
|
@ -51,9 +51,9 @@ class TitleState extends MusicBeatState
|
||||||
|
|
||||||
super.create();
|
super.create();
|
||||||
|
|
||||||
#if (!switch && !debug && NG_LOGIN)
|
#if ng
|
||||||
|
|
||||||
var ng:NGio = new NGio(APIStuff.API, APIStuff.EncKey);
|
var ng:NGio = new NGio(APIStuff.API, APIStuff.EncKey);
|
||||||
|
trace('NEWGROUNDS LOL');
|
||||||
#end
|
#end
|
||||||
|
|
||||||
FlxG.save.bind('funkin', 'ninjamuffin99');
|
FlxG.save.bind('funkin', 'ninjamuffin99');
|
||||||
|
|
Loading…
Reference in a new issue