diff --git a/SSBM Music - Break The Targets-Vc1wzDWFvf8.mp3 b/SSBM Music - Break The Targets-Vc1wzDWFvf8.mp3
deleted file mode 100644
index 5e8e81374..000000000
Binary files a/SSBM Music - Break The Targets-Vc1wzDWFvf8.mp3 and /dev/null differ
diff --git a/art/GF_ass_sets.fla b/art/GF_ass_sets.fla
new file mode 100644
index 000000000..c61801a02
Binary files /dev/null and b/art/GF_ass_sets.fla differ
diff --git a/assets/data/dadbattle/dadbattle.json b/assets/data/dadbattle/dadbattle.json
index fd8c30e1b..c4365166b 100644
--- a/assets/data/dadbattle/dadbattle.json
+++ b/assets/data/dadbattle/dadbattle.json
@@ -1 +1 @@
-{"song":{"song":"Dadbattle","bpm":180,"sections":45,"notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[10667,2],[11000,0],[11167,1],[11333,2],[11750,0],[11833,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[12000,2],[12167,3],[12333,0],[12500,1],[12667,2],[13083,0],[13250,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[13333.666666666666,2],[13666.666666666666,0],[13833.666666666666,1],[13999.666666666666,2],[14416.666666666666,0],[14499.666666666666,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[14666.666666666666,2],[14833.666666666666,3],[14999.666666666666,0],[15166.666666666666,1],[15333.666666666666,2],[15749.666666666666,0],[15916.666666666666,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[16000,1],[16333,0],[16500,3],[16667,1],[16917,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[17333,1],[17348,1],[17750,0],[17917,0],[18083,3],[18250,3],[18417,3],[18583,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[18666.666666666668,1],[18999.666666666668,0],[19166.666666666668,3],[19333.666666666668,1],[19583.666666666668,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[19999.666666666668,1],[20014.666666666668,1],[20416.666666666668,0],[20583.666666666668,0],[20749.666666666668,3],[20916.666666666668,3],[21083.666666666668,3],[21249.666666666668,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[21750,2],[21917,1],[22083,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[22833,1],[23000,3],[23250,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[24417,2],[24750,1],[25000,0],[25167,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[25333,2],[25342,2],[25500,3],[25583,0],[25750,1],[25917,3],[26083,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[27083.333333333332,2],[27250.333333333332,1],[27416.333333333332,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[28166.333333333332,1],[28333.333333333332,3],[28583.333333333332,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[29750.333333333332,2],[30083.333333333332,1],[30333.333333333332,0],[30500.333333333332,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[30666.333333333332,2],[30675.333333333332,2],[30833.333333333332,3],[30916.333333333332,0],[31083.333333333332,1],[31250.333333333332,3],[31416.333333333332,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[32167,0],[32333,3],[32500,2],[32750,1],[33000,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[33500,2],[33667,3],[33833,1],[34083,2],[34417,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[34669,0],[35000,1],[35333,3],[35667,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[36008,2],[36333,3],[36750,0],[36750,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[37583,1],[37750,3],[37917,2],[38083,0],[38167,2],[38333,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[38679,0],[38750,3],[38833,0],[39000,1],[39167,0],[39333,2],[39500,3],[39667,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[40167,0],[40333,3],[40500,1],[40750,2],[40917,3],[41083,1],[41250,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[41337,4],[41750,6],[41583,5],[41917,7],[42083,6],[42250,5],[42417,4],[42583,5],[41348,0],[41583,1],[41750,0],[41917,3],[42167,2],[42333,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[42833.666666666664,0],[42999.666666666664,3],[43166.666666666664,2],[43416.666666666664,1],[43666.666666666664,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[44166.666666666664,2],[44333.666666666664,3],[44499.666666666664,1],[44749.666666666664,2],[45083.666666666664,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[45335.666666666664,0],[45666.666666666664,1],[45999.666666666664,3],[46333.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[46674.666666666664,2],[46999.666666666664,3],[47416.666666666664,0],[47416.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[48249.666666666664,1],[48416.666666666664,3],[48583.666666666664,2],[48749.666666666664,0],[48833.666666666664,2],[48999.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[49345.666666666664,0],[49416.666666666664,3],[49499.666666666664,0],[49666.666666666664,1],[49833.666666666664,0],[49999.666666666664,2],[50166.666666666664,3],[50333.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[50833.666666666664,0],[50999.666666666664,3],[51166.666666666664,1],[51416.666666666664,2],[51583.666666666664,3],[51749.666666666664,1],[51916.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[52014.666666666664,0],[52250,0],[52417,2],[52583,2],[52750,3],[53000,1],[53000,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[53333.666666666664,2],[53666.666666666664,0],[53833.666666666664,1],[53999.666666666664,2],[54416.666666666664,0],[54499.666666666664,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[54666.666666666664,2],[54833.666666666664,3],[54999.666666666664,0],[55166.666666666664,1],[55333.666666666664,2],[55749.666666666664,0],[55916.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[56000.33333333333,2],[56333.33333333333,0],[56500.33333333333,1],[56666.33333333333,2],[57083.33333333333,0],[57166.33333333333,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[57333,1],[57333.33333333333,2],[57500.33333333333,3],[57666.33333333333,0],[57833.33333333333,1],[58000.33333333333,2],[58416.33333333333,0],[58583.33333333333,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[58666.666666666664,1],[58999.666666666664,0],[59166.666666666664,3],[59333.666666666664,1],[59583.666666666664,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[59999.666666666664,1],[60014.666666666664,1],[60416.666666666664,0],[60583.666666666664,0],[60749.666666666664,3],[60916.666666666664,3],[61083.666666666664,3],[61249.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[61333.33333333333,1],[61666.33333333333,0],[61833.33333333333,3],[62000.33333333333,1],[62250.33333333333,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[62666.33333333333,1],[62681.33333333333,1],[63083.33333333333,0],[63250.33333333333,0],[63416.33333333333,3],[63583.33333333333,3],[63750.33333333333,3],[63916.33333333333,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[64416.666666666664,2],[64583.666666666664,1],[64749.666666666664,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[65499.666666666664,1],[65666.66666666666,3],[65916.66666666666,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[67083.66666666666,2],[67416.66666666666,1],[67666.66666666666,0],[67833.66666666666,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[67999.66666666666,2],[68008.66666666666,2],[68166.66666666666,3],[68249.66666666666,0],[68416.66666666666,1],[68583.66666666666,3],[68749.66666666666,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[69750,2],[69917,1],[70083,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[70833,1],[71000,3],[71250,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[72417,2],[72750,1],[73000,0],[73167,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[73333,2],[73342,2],[73500,3],[73583,0],[73750,1],[73917,3],[74083,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]}],"needsVoices":true,"speed":1.9000000000000004},"bpm":180,"sections":59,"notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[10667,2],[11000,0],[11167,1],[11333,2],[11750,0],[11833,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[12000,2],[12167,3],[12333,0],[12500,1],[12667,2],[13083,0],[13250,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[13333.666666666666,2],[13666.666666666666,0],[13833.666666666666,1],[13999.666666666666,2],[14416.666666666666,0],[14499.666666666666,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[14666.666666666666,2],[14833.666666666666,3],[14999.666666666666,0],[15166.666666666666,1],[15333.666666666666,2],[15749.666666666666,0],[15916.666666666666,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[16000,1],[16333,0],[16500,3],[16667,1],[16917,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[17333,1],[17348,1],[17750,0],[17917,0],[18083,3],[18250,3],[18417,3],[18583,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[18666.666666666668,1],[18999.666666666668,0],[19166.666666666668,3],[19333.666666666668,1],[19583.666666666668,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[19999.666666666668,1],[20014.666666666668,1],[20416.666666666668,0],[20583.666666666668,0],[20749.666666666668,3],[20916.666666666668,3],[21083.666666666668,3],[21249.666666666668,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[21750,2],[21917,1],[22083,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[22833,1],[23000,3],[23250,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[24417,2],[24750,1],[25000,0],[25167,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[25333,2],[25342,2],[25500,3],[25583,0],[25750,1],[25917,3],[26083,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[27083.333333333332,2],[27250.333333333332,1],[27416.333333333332,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[28166.333333333332,1],[28333.333333333332,3],[28583.333333333332,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[29750.333333333332,2],[30083.333333333332,1],[30333.333333333332,0],[30500.333333333332,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[30666.333333333332,2],[30675.333333333332,2],[30833.333333333332,3],[30916.333333333332,0],[31083.333333333332,1],[31250.333333333332,3],[31416.333333333332,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[32167,0],[32333,3],[32500,2],[32750,1],[33000,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[33500,2],[33667,3],[33833,1],[34083,2],[34417,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[34669,0],[35000,1],[35333,3],[35667,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[36008,2],[36333,3],[36750,0],[36750,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[37583,1],[37750,3],[37917,2],[38083,0],[38167,2],[38333,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[38679,0],[38750,3],[38833,0],[39000,1],[39167,0],[39333,2],[39500,3],[39667,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[40167,0],[40333,3],[40500,1],[40750,2],[40917,3],[41083,1],[41250,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[41337,4],[41750,6],[41583,5],[41917,7],[42083,6],[42250,5],[42417,4],[42583,5],[41348,0],[41583,1],[41750,0],[41917,3],[42167,2],[42333,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[42833.666666666664,0],[42999.666666666664,3],[43166.666666666664,2],[43416.666666666664,1],[43666.666666666664,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[44166.666666666664,2],[44333.666666666664,3],[44499.666666666664,1],[44749.666666666664,2],[45083.666666666664,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[45335.666666666664,0],[45666.666666666664,1],[45999.666666666664,3],[46333.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[46674.666666666664,2],[46999.666666666664,3],[47416.666666666664,0],[47416.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[48249.666666666664,1],[48416.666666666664,3],[48583.666666666664,2],[48749.666666666664,0],[48833.666666666664,2],[48999.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[49345.666666666664,0],[49416.666666666664,3],[49499.666666666664,0],[49666.666666666664,1],[49833.666666666664,0],[49999.666666666664,2],[50166.666666666664,3],[50333.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[50833.666666666664,0],[50999.666666666664,3],[51166.666666666664,1],[51416.666666666664,2],[51583.666666666664,3],[51749.666666666664,1],[51916.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[52014.666666666664,0],[52250,0],[52417,2],[52583,2],[52750,3],[53000,1],[53000,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[53333.666666666664,2],[53666.666666666664,0],[53833.666666666664,1],[53999.666666666664,2],[54416.666666666664,0],[54499.666666666664,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[54666.666666666664,2],[54833.666666666664,3],[54999.666666666664,0],[55166.666666666664,1],[55333.666666666664,2],[55749.666666666664,0],[55916.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[56000.33333333333,2],[56333.33333333333,0],[56500.33333333333,1],[56666.33333333333,2],[57083.33333333333,0],[57166.33333333333,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[57333,1],[57333.33333333333,2],[57500.33333333333,3],[57666.33333333333,0],[57833.33333333333,1],[58000.33333333333,2],[58416.33333333333,0],[58583.33333333333,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[58666.666666666664,1],[58999.666666666664,0],[59166.666666666664,3],[59333.666666666664,1],[59583.666666666664,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[59999.666666666664,1],[60014.666666666664,1],[60416.666666666664,0],[60583.666666666664,0],[60749.666666666664,3],[60916.666666666664,3],[61083.666666666664,3],[61249.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[61333.33333333333,1],[61666.33333333333,0],[61833.33333333333,3],[62000.33333333333,1],[62250.33333333333,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[62666.33333333333,1],[62681.33333333333,1],[63083.33333333333,0],[63250.33333333333,0],[63416.33333333333,3],[63583.33333333333,3],[63750.33333333333,3],[63916.33333333333,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[64416.666666666664,2],[64583.666666666664,1],[64749.666666666664,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[65499.666666666664,1],[65666.66666666666,3],[65916.66666666666,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[67083.66666666666,2],[67416.66666666666,1],[67666.66666666666,0],[67833.66666666666,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[67999.66666666666,2],[68008.66666666666,2],[68166.66666666666,3],[68249.66666666666,0],[68416.66666666666,1],[68583.66666666666,3],[68749.66666666666,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[69750,2],[69917,1],[70083,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[70833,1],[71000,3],[71250,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[72417,2],[72750,1],[73000,0],[73167,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[73333,2],[73342,2],[73500,3],[73583,0],[73750,1],[73917,3],[74083,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]}]}
\ No newline at end of file
+{"song":{"song":"Dadbattle","bpm":180,"sections":45,"notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[10667,2],[11000,0],[11167,1],[11333,2],[11750,0],[11833,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[12000,2],[12167,3],[12333,0],[12500,1],[12667,2],[13083,0],[13250,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[13333.666666666666,2],[13666.666666666666,0],[13833.666666666666,1],[13999.666666666666,2],[14416.666666666666,0],[14499.666666666666,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[14666.666666666666,2],[14833.666666666666,3],[14999.666666666666,0],[15166.666666666666,1],[15333.666666666666,2],[15749.666666666666,0],[15916.666666666666,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[16000,1],[16333,0],[16500,3],[16667,1],[16917,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[17333,1],[17348,1],[17750,0],[17917,0],[18083,3],[18250,3],[18417,3],[18583,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[18666.666666666668,1],[18999.666666666668,0],[19166.666666666668,3],[19333.666666666668,1],[19583.666666666668,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[19999.666666666668,1],[20014.666666666668,1],[20416.666666666668,0],[20583.666666666668,0],[20749.666666666668,3],[20916.666666666668,3],[21083.666666666668,3],[21249.666666666668,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[21750,2],[21917,1],[22083,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[22833,1],[23000,3],[23250,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[24417,2],[24750,1],[25000,0],[25167,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[25333,2],[25342,2],[25500,3],[25583,0],[25750,1],[25917,3],[26083,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[27083.333333333332,2],[27250.333333333332,1],[27416.333333333332,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[28166.333333333332,1],[28333.333333333332,3],[28583.333333333332,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[29750.333333333332,2],[30083.333333333332,1],[30333.333333333332,0],[30500.333333333332,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[30666.333333333332,2],[30675.333333333332,2],[30833.333333333332,3],[30916.333333333332,0],[31083.333333333332,1],[31250.333333333332,3],[31416.333333333332,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[32167,0],[32333,3],[32500,2],[32750,1],[33000,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[33500,2],[33667,3],[33833,1],[34083,2],[34417,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[34669,0],[35000,1],[35333,3],[35667,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[36008,2],[36333,3],[36750,0],[36750,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[37583,1],[37750,3],[37917,2],[38083,0],[38167,2],[38333,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[38679,0],[38750,3],[38833,0],[39000,1],[39167,0],[39333,2],[39500,3],[39667,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[40167,0],[40333,3],[40500,1],[40750,2],[40917,3],[41083,1],[41250,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[41337,4],[41750,6],[41583,5],[41917,7],[42083,6],[42250,5],[42417,4],[42583,5],[41348,0],[41583,1],[41750,0],[41917,3],[42167,2],[42333,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[42833.666666666664,0],[42999.666666666664,3],[43166.666666666664,2],[43416.666666666664,1],[43666.666666666664,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[44166.666666666664,2],[44333.666666666664,3],[44499.666666666664,1],[44749.666666666664,2],[45083.666666666664,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[45335.666666666664,0],[45666.666666666664,1],[45999.666666666664,3],[46333.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[46674.666666666664,2],[46999.666666666664,3],[47416.666666666664,0],[47416.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[48249.666666666664,1],[48416.666666666664,3],[48583.666666666664,2],[48749.666666666664,0],[48833.666666666664,2],[48999.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[49345.666666666664,0],[49416.666666666664,3],[49499.666666666664,0],[49666.666666666664,1],[49833.666666666664,0],[49999.666666666664,2],[50166.666666666664,3],[50333.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[50833.666666666664,0],[50999.666666666664,3],[51166.666666666664,1],[51416.666666666664,2],[51583.666666666664,3],[51749.666666666664,1],[51916.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[52014.666666666664,0],[52250,0],[52417,2],[52583,2],[52750,3],[53000,1],[53000,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[53333.666666666664,2],[53666.666666666664,0],[53833.666666666664,1],[53999.666666666664,2],[54416.666666666664,0],[54499.666666666664,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[54666.666666666664,2],[54833.666666666664,3],[54999.666666666664,0],[55166.666666666664,1],[55333.666666666664,2],[55749.666666666664,0],[55916.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[56000.33333333333,2],[56333.33333333333,0],[56500.33333333333,1],[56666.33333333333,2],[57083.33333333333,0],[57166.33333333333,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[57333,1],[57333.33333333333,2],[57500.33333333333,3],[57666.33333333333,0],[57833.33333333333,1],[58000.33333333333,2],[58416.33333333333,0],[58583.33333333333,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[58666.666666666664,1],[58999.666666666664,0],[59166.666666666664,3],[59333.666666666664,1],[59583.666666666664,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[59999.666666666664,1],[60014.666666666664,1],[60416.666666666664,0],[60583.666666666664,0],[60749.666666666664,3],[60916.666666666664,3],[61083.666666666664,3],[61249.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[61333.33333333333,1],[61666.33333333333,0],[61833.33333333333,3],[62000.33333333333,1],[62250.33333333333,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[62666.33333333333,1],[62681.33333333333,1],[63083.33333333333,0],[63250.33333333333,0],[63416.33333333333,3],[63583.33333333333,3],[63750.33333333333,3],[63916.33333333333,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[64416.666666666664,2],[64583.666666666664,1],[64749.666666666664,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[65499.666666666664,1],[65666.66666666666,3],[65916.66666666666,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[67083.66666666666,2],[67416.66666666666,1],[67666.66666666666,0],[67833.66666666666,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[67999.66666666666,2],[68008.66666666666,2],[68166.66666666666,3],[68249.66666666666,0],[68416.66666666666,1],[68583.66666666666,3],[68749.66666666666,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[69750,2],[69917,1],[70083,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[70833,1],[71000,3],[71250,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[72417,2],[72750,1],[73000,0],[73167,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[73333,2],[73342,2],[73500,3],[73583,0],[73750,1],[73917,3],[74083,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]}],"needsVoices":true,"speed":1.9000000000000004,"player1":"bf","player2":"dad"},"bpm":180,"sections":61,"notes":[{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[10667,2],[11000,0],[11167,1],[11333,2],[11750,0],[11833,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[12000,2],[12167,3],[12333,0],[12500,1],[12667,2],[13083,0],[13250,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[13333.666666666666,2],[13666.666666666666,0],[13833.666666666666,1],[13999.666666666666,2],[14416.666666666666,0],[14499.666666666666,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[14666.666666666666,2],[14833.666666666666,3],[14999.666666666666,0],[15166.666666666666,1],[15333.666666666666,2],[15749.666666666666,0],[15916.666666666666,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[16000,1],[16333,0],[16500,3],[16667,1],[16917,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[17333,1],[17348,1],[17750,0],[17917,0],[18083,3],[18250,3],[18417,3],[18583,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[18666.666666666668,1],[18999.666666666668,0],[19166.666666666668,3],[19333.666666666668,1],[19583.666666666668,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[19999.666666666668,1],[20014.666666666668,1],[20416.666666666668,0],[20583.666666666668,0],[20749.666666666668,3],[20916.666666666668,3],[21083.666666666668,3],[21249.666666666668,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[21750,2],[21917,1],[22083,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[22833,1],[23000,3],[23250,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[24417,2],[24750,1],[25000,0],[25167,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[25333,2],[25342,2],[25500,3],[25583,0],[25750,1],[25917,3],[26083,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[27083.333333333332,2],[27250.333333333332,1],[27416.333333333332,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[28166.333333333332,1],[28333.333333333332,3],[28583.333333333332,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[29750.333333333332,2],[30083.333333333332,1],[30333.333333333332,0],[30500.333333333332,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[30666.333333333332,2],[30675.333333333332,2],[30833.333333333332,3],[30916.333333333332,0],[31083.333333333332,1],[31250.333333333332,3],[31416.333333333332,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[32167,0],[32333,3],[32500,2],[32750,1],[33000,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[33500,2],[33667,3],[33833,1],[34083,2],[34417,0]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[34669,0],[35000,1],[35333,3],[35667,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[36008,2],[36333,3],[36750,0],[36750,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[37583,1],[37750,3],[37917,2],[38083,0],[38167,2],[38333,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[38679,0],[38750,3],[38833,0],[39000,1],[39167,0],[39333,2],[39500,3],[39667,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[40167,0],[40333,3],[40500,1],[40750,2],[40917,3],[41083,1],[41250,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[41337,4],[41750,6],[41583,5],[41917,7],[42083,6],[42250,5],[42417,4],[42583,5],[41348,0],[41583,1],[41750,0],[41917,3],[42167,2],[42333,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[42833.666666666664,0],[42999.666666666664,3],[43166.666666666664,2],[43416.666666666664,1],[43666.666666666664,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[44166.666666666664,2],[44333.666666666664,3],[44499.666666666664,1],[44749.666666666664,2],[45083.666666666664,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[45335.666666666664,0],[45666.666666666664,1],[45999.666666666664,3],[46333.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[46674.666666666664,2],[46999.666666666664,3],[47416.666666666664,0],[47416.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[48249.666666666664,1],[48416.666666666664,3],[48583.666666666664,2],[48749.666666666664,0],[48833.666666666664,2],[48999.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[49345.666666666664,0],[49416.666666666664,3],[49499.666666666664,0],[49666.666666666664,1],[49833.666666666664,0],[49999.666666666664,2],[50166.666666666664,3],[50333.666666666664,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[50833.666666666664,0],[50999.666666666664,3],[51166.666666666664,1],[51416.666666666664,2],[51583.666666666664,3],[51749.666666666664,1],[51916.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[52014.666666666664,0],[52250,0],[52417,2],[52583,2],[52750,3],[53000,1],[53000,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[53333.666666666664,2],[53666.666666666664,0],[53833.666666666664,1],[53999.666666666664,2],[54416.666666666664,0],[54499.666666666664,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[54666.666666666664,2],[54833.666666666664,3],[54999.666666666664,0],[55166.666666666664,1],[55333.666666666664,2],[55749.666666666664,0],[55916.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[56000.33333333333,2],[56333.33333333333,0],[56500.33333333333,1],[56666.33333333333,2],[57083.33333333333,0],[57166.33333333333,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[57333,1],[57333.33333333333,2],[57500.33333333333,3],[57666.33333333333,0],[57833.33333333333,1],[58000.33333333333,2],[58416.33333333333,0],[58583.33333333333,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[58666.666666666664,1],[58999.666666666664,0],[59166.666666666664,3],[59333.666666666664,1],[59583.666666666664,2]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[59999.666666666664,1],[60014.666666666664,1],[60416.666666666664,0],[60583.666666666664,0],[60749.666666666664,3],[60916.666666666664,3],[61083.666666666664,3],[61249.666666666664,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[61333.33333333333,1],[61666.33333333333,0],[61833.33333333333,3],[62000.33333333333,1],[62250.33333333333,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[62666.33333333333,1],[62681.33333333333,1],[63083.33333333333,0],[63250.33333333333,0],[63416.33333333333,3],[63583.33333333333,3],[63750.33333333333,3],[63916.33333333333,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[64416.666666666664,2],[64583.666666666664,1],[64749.666666666664,3]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[65499.666666666664,1],[65666.66666666666,3],[65916.66666666666,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[67083.66666666666,2],[67416.66666666666,1],[67666.66666666666,0],[67833.66666666666,1]]},{"mustHitSection":false,"typeOfSection":0,"lengthInSteps":16,"notes":[[67999.66666666666,2],[68008.66666666666,2],[68166.66666666666,3],[68249.66666666666,0],[68416.66666666666,1],[68583.66666666666,3],[68749.66666666666,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[69750,2],[69917,1],[70083,3]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[70833,1],[71000,3],[71250,0]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[72417,2],[72750,1],[73000,0],[73167,1]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[[73333,2],[73342,2],[73500,3],[73583,0],[73750,1],[73917,3],[74083,2]]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]},{"mustHitSection":true,"typeOfSection":0,"lengthInSteps":16,"notes":[]}]}
\ No newline at end of file
diff --git a/assets/images/GF_assets.png b/assets/images/GF_assets.png
index cd140156c..c6d07793f 100644
Binary files a/assets/images/GF_assets.png and b/assets/images/GF_assets.png differ
diff --git a/assets/images/GF_assets.xml b/assets/images/GF_assets.xml
index 366cec7a6..63ab27506 100644
--- a/assets/images/GF_assets.xml
+++ b/assets/images/GF_assets.xml
@@ -2,135 +2,192 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/AnimationDebug.hx b/source/AnimationDebug.hx
index a637847f4..6a938d683 100644
--- a/source/AnimationDebug.hx
+++ b/source/AnimationDebug.hx
@@ -12,10 +12,10 @@ import flixel.util.FlxColor;
/**
*DEBUG MODE
*/
-class Charting extends FlxState
+class AnimationDebug extends FlxState
{
var bf:Boyfriend;
- var dad:Dad;
+ var dad:Character;
var char:Character;
var textAnim:FlxText;
var dumbTexts:FlxTypedGroup;
@@ -40,7 +40,7 @@ class Charting extends FlxState
if (isDad)
{
- dad = new Dad(0, 0);
+ dad = new Character(0, 0);
dad.screenCenter();
dad.debugMode = true;
add(dad);
diff --git a/source/Character.hx b/source/Character.hx
index 8caf4f37a..ca9211d79 100644
--- a/source/Character.hx
+++ b/source/Character.hx
@@ -1,16 +1,93 @@
package;
import flixel.FlxSprite;
+import flixel.graphics.frames.FlxAtlasFrames;
class Character extends FlxSprite
{
public var animOffsets:Map>;
public var debugMode:Bool = false;
- public function new(x:Float, y:Float)
+ public var isPlayer:Bool = false;
+ public var curCharacter:String = 'bf';
+
+ public function new(x:Float, y:Float, ?character:String = "bf", ?isPlayer:Bool = false)
{
animOffsets = new Map>();
super(x, y);
+
+ curCharacter = character;
+ this.isPlayer = isPlayer;
+
+ var tex:FlxAtlasFrames;
+ antialiasing = true;
+
+ switch (curCharacter)
+ {
+ case 'bf':
+ case 'gf':
+ // GIRLFRIEND CODE
+ tex = FlxAtlasFrames.fromSparrow(AssetPaths.GF_assets__png, AssetPaths.GF_assets__xml);
+ frames = tex;
+ animation.addByPrefix('cheer', 'GF Cheer', 24, false);
+ animation.addByPrefix('singLEFT', 'GF left note', 24, false);
+ animation.addByPrefix('singRIGHT', 'GF Right Note', 24, false);
+ animation.addByPrefix('singUP', 'GF Up Note', 24, false);
+ animation.addByPrefix('singDOWN', 'GF Down Note', 24, false);
+ animation.addByIndices('sad', 'gf sad', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "", 24, false);
+ animation.addByIndices('danceLeft', 'GF Dancing Beat', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
+ animation.addByIndices('danceRight', 'GF Dancing Beat', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
+
+ addOffset('cheer');
+ addOffset('sad');
+ addOffset('danceLeft');
+ addOffset('danceRight');
+
+ addOffset("singUP");
+ addOffset("singRIGHT");
+ addOffset("singLEFT");
+ addOffset("singDOWN");
+
+ playAnim('danceRight');
+
+ case 'dad':
+ // DAD ANIMATION LOADING CODE
+ tex = FlxAtlasFrames.fromSparrow(AssetPaths.DADDY_DEAREST__png, AssetPaths.DADDY_DEAREST__xml);
+ frames = tex;
+ animation.addByPrefix('idle', 'Dad idle dance', 24);
+ animation.addByPrefix('singUP', 'Dad Sing Note UP', 24);
+ animation.addByPrefix('singRIGHT', 'Dad Sing Note RIGHT', 24);
+ animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
+ animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
+ playAnim('idle');
+
+ addOffset('idle');
+ addOffset("singUP", -6, 50);
+ addOffset("singRIGHT", 0, 27);
+ addOffset("singLEFT", -10, 10);
+ addOffset("singDOWN", 0, -30);
+ }
+ }
+
+ private var danced:Bool = false;
+
+ /**
+ * FOR GF DANCING SHIT
+ */
+ public function dance()
+ {
+ switch (curCharacter)
+ {
+ case 'gf':
+ danced = !danced;
+
+ if (danced)
+ playAnim('danceRight');
+ else
+ playAnim('danceLeft');
+ case 'dad':
+ playAnim('idle');
+ }
}
public function playAnim(AnimName:String, Force:Bool = false, Reversed:Bool = false, Frame:Int = 0):Void
diff --git a/source/ChartingState.hx b/source/ChartingState.hx
index 409d494c0..1adfb7a69 100644
--- a/source/ChartingState.hx
+++ b/source/ChartingState.hx
@@ -7,6 +7,7 @@ import flixel.addons.ui.FlxInputText;
import flixel.addons.ui.FlxUI9SliceSprite;
import flixel.addons.ui.FlxUI;
import flixel.addons.ui.FlxUICheckBox;
+import flixel.addons.ui.FlxUIDropDownMenu;
import flixel.addons.ui.FlxUIInputText;
import flixel.addons.ui.FlxUINumericStepper;
import flixel.addons.ui.FlxUITabMenu;
@@ -60,6 +61,7 @@ class ChartingState extends MusicBeatState
var _song:Song;
var typingShit:FlxInputText;
+ var curSelectedNote:Note = new Note(0, 0, null);
override function create()
{
@@ -152,6 +154,21 @@ class ChartingState extends MusicBeatState
stepperBPM.value = Conductor.bpm;
stepperBPM.name = 'song_bpm';
+ var characters:Array = ["bf", 'dad', 'gf'];
+
+ var player1DropDown = new FlxUIDropDownMenu(10, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String)
+ {
+ _song.player1 = characters[Std.parseInt(character)];
+ });
+ player1DropDown.selectedLabel = _song.player1;
+
+ var player2DropDown = new FlxUIDropDownMenu(140, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String)
+ {
+ _song.player2 = characters[Std.parseInt(character)];
+ });
+
+ player2DropDown.selectedLabel = _song.player2;
+
var tab_group_song = new FlxUI(null, UI_box);
tab_group_song.name = "Song";
tab_group_song.add(UI_songTitle);
@@ -162,6 +179,8 @@ class ChartingState extends MusicBeatState
tab_group_song.add(reloadSongJson);
tab_group_song.add(stepperBPM);
tab_group_song.add(stepperSpeed);
+ tab_group_song.add(player1DropDown);
+ tab_group_song.add(player2DropDown);
UI_box.addGroup(tab_group_song);
UI_box.scrollFactor.set();
@@ -422,12 +441,9 @@ class ChartingState extends MusicBeatState
{
var daSec = FlxMath.maxInt(curSection, sectionNum);
- for (note in _song.notes[daSec - sectionNum].notes)
+ for (note in _song.notes[daSec - sectionNum].sectionNotes)
{
- _song.notes[daSec].notes.push([
- note[0] + Conductor.stepCrochet * (_song.notes[daSec].lengthInSteps * sectionNum),
- note[1]
- ]);
+ _song.notes[daSec].sectionNotes.push(note);
}
updateGrid();
@@ -448,7 +464,7 @@ class ChartingState extends MusicBeatState
curRenderedNotes.remove(curRenderedNotes.members[0], true);
}
- var sectionInfo:Array = _song.notes[curSection].notes;
+ var sectionInfo:Array = _song.notes[curSection].sectionNotes;
for (i in sectionInfo)
{
@@ -471,12 +487,12 @@ class ChartingState extends MusicBeatState
function deleteNote(note:Note):Void
{
- for (i in _song.notes[curSection].notes)
+ for (i in _song.notes[curSection].sectionNotes)
{
- if (i[0] == note.strumTime && i[1] % 4 == note.noteData)
+ if (i.strumTime == note.strumTime && i.noteData % 4 == note.noteData)
{
FlxG.log.add('FOUND EVIL NUMBER');
- _song.notes[curSection].notes.remove(i);
+ _song.notes[curSection].sectionNotes.remove(i);
}
}
@@ -485,10 +501,10 @@ class ChartingState extends MusicBeatState
private function addNote():Void
{
- _song.notes[curSection].notes.push([
- Math.round(getStrumTime(dummyArrow.y) + (curSection * (Conductor.stepCrochet * 16))),
- Math.floor(FlxG.mouse.x / GRID_SIZE)
- ]);
+ var swagNote:Note = new Note(Math.round(getStrumTime(dummyArrow.y) + (curSection * (Conductor.stepCrochet * 16))),
+ Math.floor(FlxG.mouse.x / GRID_SIZE));
+
+ _song.notes[curSection].sectionNotes.push(swagNote);
trace(getStrumTime(dummyArrow.y) + (curSection * (Conductor.stepCrochet * 16)));
trace(curSection);
@@ -542,7 +558,7 @@ class ChartingState extends MusicBeatState
for (i in _song.notes)
{
- noteData.push(i.notes);
+ noteData.push(i.sectionNotes);
}
return noteData;
diff --git a/source/Conductor.hx b/source/Conductor.hx
index f1e3d4c77..b63d53654 100644
--- a/source/Conductor.hx
+++ b/source/Conductor.hx
@@ -12,10 +12,12 @@ class Conductor
public static var songPosition:Float;
public static var offset:Float = 0;
- public static var safeFrames:Int = 5;
+ public static var safeFrames:Int = 10;
public static var safeZoneOffset:Float = (safeFrames / 60) * 1000; // is calculated in create(), is safeFrames in milliseconds
- public function new() {}
+ public function new()
+ {
+ }
public static function changeBPM(newBpm:Int)
{
diff --git a/source/Dad.hx b/source/Dad.hx
deleted file mode 100644
index b0228c487..000000000
--- a/source/Dad.hx
+++ /dev/null
@@ -1,26 +0,0 @@
-package;
-
-import flixel.graphics.frames.FlxAtlasFrames;
-
-class Dad extends Character
-{
- public function new(x:Float, y:Float)
- {
- super(x, y);
- var dadTex = FlxAtlasFrames.fromSparrow(AssetPaths.DADDY_DEAREST__png, AssetPaths.DADDY_DEAREST__xml);
- frames = dadTex;
- antialiasing = true;
- animation.addByPrefix('idle', 'Dad idle dance', 24);
- animation.addByPrefix('singUP', 'Dad Sing Note UP', 24);
- animation.addByPrefix('singRIGHT', 'Dad Sing Note RIGHT', 24);
- animation.addByPrefix('singDOWN', 'Dad Sing Note DOWN', 24);
- animation.addByPrefix('singLEFT', 'Dad Sing Note LEFT', 24);
- playAnim('idle');
-
- addOffset('idle');
- addOffset("singUP", -6, 50);
- addOffset("singRIGHT", 0, 27);
- addOffset("singLEFT", -10, 10);
- addOffset("singDOWN", 0, -30);
- }
-}
diff --git a/source/Girlfriend.hx b/source/Girlfriend.hx
deleted file mode 100644
index fe04683a7..000000000
--- a/source/Girlfriend.hx
+++ /dev/null
@@ -1,37 +0,0 @@
-package;
-
-import flixel.graphics.frames.FlxAtlasFrames;
-
-class Girlfriend extends Character
-{
- public function new(x:Float, y:Float)
- {
- super(x, y);
-
- var tex = FlxAtlasFrames.fromSparrow(AssetPaths.GF_assets__png, AssetPaths.GF_assets__xml);
- frames = tex;
- animation.addByPrefix('cheer', 'GF Cheer');
- animation.addByIndices('sad', 'gf sad', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], "", 24, false);
- animation.addByIndices('danceLeft', 'GF Dancing Beat', [30, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "", 24, false);
- animation.addByIndices('danceRight', 'GF Dancing Beat', [15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29], "", 24, false);
-
- addOffset('cheer');
- addOffset('sad');
- addOffset('danceLeft');
- addOffset('danceRight');
-
- playAnim('danceRight');
- }
-
- private var danced:Bool = false;
-
- public function dance()
- {
- danced = !danced;
-
- if (danced)
- playAnim('danceRight');
- else
- playAnim('danceLeft');
- }
-}
diff --git a/source/Note.hx b/source/Note.hx
index c15d72a5b..5ea093e49 100644
--- a/source/Note.hx
+++ b/source/Note.hx
@@ -15,6 +15,8 @@ class Note extends FlxSprite
public var wasGoodHit:Bool = false;
public var prevNote:Note;
+ public var sustainLength:Float = 0;
+
public var noteScore:Float = 1;
public static var swagWidth:Float = 160 * 0.7;
diff --git a/source/PlayState.hx b/source/PlayState.hx
index 9c64a635e..3e07cf547 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -33,8 +33,8 @@ class PlayState extends MusicBeatState
private var vocals:FlxSound;
- private var dad:Dad;
- private var gf:Girlfriend;
+ private var dad:Character;
+ private var gf:Character;
private var boyfriend:Boyfriend;
private var notes:FlxTypedGroup;
@@ -96,14 +96,20 @@ class PlayState extends MusicBeatState
stageCurtains.scrollFactor.set(1.3, 1.3);
stageCurtains.active = false;
- gf = new Girlfriend(400, 130);
+ gf = new Character(400, 130, 'gf');
gf.scrollFactor.set(0.95, 0.95);
gf.antialiasing = true;
add(gf);
- dad = new Dad(100, 100);
+ dad = new Character(100, 100, SONG.player2);
add(dad);
+ if (SONG.player2 == 'gf')
+ {
+ dad.setPosition(gf.x, gf.y);
+ gf.visible = false;
+ }
+
boyfriend = new Boyfriend(770, 450);
add(boyfriend);
@@ -263,7 +269,7 @@ class PlayState extends MusicBeatState
{
var coolSection:Int = Std.int(section.lengthInSteps / 4);
- for (songNotes in section.notes)
+ for (songNotes in section.sectionNotes)
{
sectionScores[0].push(0);
sectionScores[1].push(0);
@@ -454,12 +460,11 @@ class PlayState extends MusicBeatState
healthHeads.animation.play('unhealthy');
else
healthHeads.animation.play('healthy');
- /*
- if (FlxG.keys.justPressed.NINE)
- FlxG.switchState(new Charting());
- if (FlxG.keys.justPressed.EIGHT)
- FlxG.switchState(new Charting(true));
- */
+
+ /* if (FlxG.keys.justPressed.NINE)
+ FlxG.switchState(new Charting()); */
+ if (FlxG.keys.justPressed.EIGHT)
+ FlxG.switchState(new AnimationDebug(true));
if (countingDown)
{
@@ -477,7 +482,7 @@ class PlayState extends MusicBeatState
if (playerTurn == (sectionLengths[curSection] * 8) - 1 && !sectionScored)
{
- popUpScore();
+ // popUpScore();
sectionScored = true;
}
@@ -488,15 +493,15 @@ class PlayState extends MusicBeatState
trace(PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection);
}
- if (camFollow.x != dad.getGraphicMidpoint().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.getGraphicMidpoint().x + 150, dad.getGraphicMidpoint().y - 100);
+ camFollow.setPosition(dad.getMidpoint().x + 150, dad.getMidpoint().y - 100);
vocals.volume = 1;
}
- if (PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection && camFollow.x != boyfriend.getGraphicMidpoint().x - 100)
+ if (PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection && camFollow.x != boyfriend.getMidpoint().x - 100)
{
- camFollow.setPosition(boyfriend.getGraphicMidpoint().x - 100, boyfriend.getGraphicMidpoint().y - 100);
+ camFollow.setPosition(boyfriend.getMidpoint().x - 100, boyfriend.getMidpoint().y - 100);
}
}
@@ -626,29 +631,47 @@ class PlayState extends MusicBeatState
keyShit();
}
- private function popUpScore():Void
+ private function popUpScore(strumtime:Float):Void
{
- boyfriend.playAnim('hey');
- vocals.volume = 1;
+ var noteDiff:Float = Math.abs(strumtime - Conductor.songPosition);
+
+ trace(noteDiff);
+
+ // boyfriend.playAnim('hey');
+ // vocals.volume = 1;
var placement:String = Std.string(combo);
// var placement:String = sectionScores[1][curSection] + '/' + sectionScores[0][curSection];
var coolText:FlxText = new FlxText(0, 0, 0, placement, 32);
coolText.screenCenter();
- coolText.x = FlxG.width * 0.75;
+ coolText.x = FlxG.width * 0.55;
//
var rating:FlxSprite = new FlxSprite();
- var daRating:String = "shit";
+ var daRating:String = "sick";
- if (combo > 60)
- daRating = 'sick';
- else if (combo > 12)
- daRating = 'good'
- else if (combo > 4)
+ if (noteDiff > Conductor.safeZoneOffset * 0.9)
+ {
+ daRating = 'shit';
+ }
+ else if (noteDiff > Conductor.safeZoneOffset * 0.75)
+ {
daRating = 'bad';
+ }
+ else if (noteDiff > Conductor.safeZoneOffset * 0.2)
+ {
+ daRating = 'good';
+ }
+
+ /* if (combo > 60)
+ daRating = 'sick';
+ else if (combo > 12)
+ daRating = 'good'
+ else if (combo > 4)
+ daRating = 'bad';
+ */
rating.loadGraphic('assets/images/' + daRating + ".png");
rating.screenCenter();
rating.x = coolText.x - 40;
@@ -669,7 +692,7 @@ class PlayState extends MusicBeatState
comboSpr.setGraphicSize(Std.int(comboSpr.width * 0.7));
comboSpr.updateHitbox();
comboSpr.velocity.x += FlxG.random.int(1, 10);
- add(comboSpr);
+ // add(comboSpr);
add(rating);
var seperatedScore:Array = [];
@@ -1017,6 +1040,7 @@ class PlayState extends MusicBeatState
{
if (!note.wasGoodHit)
{
+ popUpScore(note.strumTime);
combo += 1;
if (note.noteData >= 0)
@@ -1072,7 +1096,7 @@ class PlayState extends MusicBeatState
if (camZooming && FlxG.camera.zoom < 1.35 && totalBeats % 4 == 0)
FlxG.camera.zoom += 0.025;
- dad.playAnim('idle');
+ dad.dance();
healthHeads.setGraphicSize(Std.int(healthHeads.width + 20));
if (totalBeats % gfSpeed == 0)
diff --git a/source/Section.hx b/source/Section.hx
index 530402fa0..4b1950c70 100644
--- a/source/Section.hx
+++ b/source/Section.hx
@@ -2,10 +2,7 @@ package;
class Section
{
- /**
- * NOT ACTUAL NOTE DATA! Just holds strum time and which part of the chart it is!
- */
- public var notes:Array = [];
+ public var sectionNotes:Array = [];
public var lengthInSteps:Int = 16;
public var typeOfSection:Int = 0;
diff --git a/source/Song.hx b/source/Song.hx
index 441778c77..ab7c4e1c8 100644
--- a/source/Song.hx
+++ b/source/Song.hx
@@ -15,6 +15,9 @@ class Song
public var needsVoices:Bool = true;
public var speed:Float = 1;
+ public var player1:String = 'bf';
+ public var player2:String = 'dad';
+
public function new(song, notes, bpm, sections)
{
this.song = song;