diff --git a/assets/images/editors/charter/event-spr.xml b/assets/images/editors/charter/event-spr.xml index 63543190..78b604f1 100644 --- a/assets/images/editors/charter/event-spr.xml +++ b/assets/images/editors/charter/event-spr.xml @@ -1,13 +1,13 @@ - - - - - - - - - + + + + + + + + + \ No newline at end of file diff --git a/assets/songs/dadbattle/charts/hard.json b/assets/songs/dadbattle/charts/hard.json index 5a332988..3b8e0eae 100644 --- a/assets/songs/dadbattle/charts/hard.json +++ b/assets/songs/dadbattle/charts/hard.json @@ -1 +1 @@ -{"song":{"song":"Dadbattle","bpm":180.0,"needsVoices":true,"player1":"bf","player2":"dad","speed":2.3,"notes":[{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[10666.667,2,0.0],[11000.0,0,0.0],[11166.667,1,0.0],[11333.334,2,0.0],[11666.667,0,0.0],[11833.334,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[12000.0,2,0.0],[12166.667,3,0.0],[12333.334,0,0.0],[12500.0,1,0.0],[12666.667,2,0.0],[13000.0,0,0.0],[13166.667,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[13333.334,2,0.0],[13666.667,0,0.0],[13833.334,1,0.0],[14000.0,2,0.0],[14333.334,0,0.0],[14500.0,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[14666.667,2,0.0],[14833.334,3,0.0],[15000.0,0,0.0],[15166.667,1,0.0],[15333.334,2,0.0],[15666.667,0,0.0],[15833.334,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[16000.0,1,0.0],[16333.334,0,0.0],[16500.0,3,0.0],[16666.668,1,0.0],[17000.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[17333.334,1,0.0],[17666.668,0,0.0],[17833.334,0,0.0],[18000.0,3,0.0],[18166.668,3,0.0],[18333.334,3,0.0],[18500.0,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[18666.668,1,0.0],[19000.0,0,0.0],[19166.668,3,0.0],[19333.334,1,0.0],[19666.668,2,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[20000.0,1,0.0],[20333.334,0,0.0],[20500.0,0,0.0],[20666.668,3,0.0],[20833.334,3,0.0],[21000.0,3,0.0],[21166.668,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[21666.668,2,0.0],[21833.334,1,0.0],[22000.0,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[22833.334,1,0.0],[23000.0,3,0.0],[23333.334,0,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[24333.334,2,0.0],[24666.668,1,0.0],[25000.0,0,0.0],[25166.668,1,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[25333.334,2,0.0],[25500.0,3,0.0],[25666.668,0,0.0],[25833.334,3,0.0],[26000.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[27000.0,2,0.0],[27166.668,1,0.0],[27333.334,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[28166.668,1,0.0],[28333.334,3,0.0],[28666.668,0,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[29666.668,2,0.0],[30000.0,1,0.0],[30333.334,0,0.0],[30500.0,1,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[30666.668,4,0.0],[30666.668,2,0.0],[30833.334,5,0.0],[30833.334,3,0.0],[31000.0,6,0.0],[31000.0,0,0.0],[31166.668,7,0.0],[31166.668,3,0.0],[31333.334,6,0.0],[31333.334,2,0.0],[31500.0,5,0.0],[31666.668,4,0.0],[31833.334,5,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[32166.668,0,0.0],[32333.334,3,0.0],[32500.002,2,0.0],[32666.668,1,0.0],[33000.0,0,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[33500.0,2,0.0],[33666.668,3,0.0],[33833.3359,1,0.0],[34000.0,2,0.0],[34333.3359,0,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[34666.668,0,0.0],[35000.0,1,0.0],[35333.3359,3,0.0],[35666.668,1,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[36000.0,2,0.0],[36333.3359,3,0.0],[36666.668,0,0.0],[36666.668,1,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[37500.0,1,0.0],[37666.668,3,0.0],[37833.3359,2,0.0],[38000.0,0,0.0],[38166.668,2,0.0],[38333.3359,1,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[38666.668,0,0.0],[38750.0,3,0.0],[38833.3359,0,0.0],[39000.0,1,0.0],[39166.668,0,0.0],[39333.3359,2,0.0],[39500.0,3,0.0],[39666.668,1,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[40166.668,0,0.0],[40333.3359,3,0.0],[40500.0,1,0.0],[40666.668,2,0.0],[40833.3359,3,0.0],[41000.0,1,0.0],[41166.668,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[41333.3359,0,0.0],[41333.3359,4,0.0],[41500.0,1,0.0],[41500.0,5,0.0],[41666.668,0,0.0],[41666.668,6,0.0],[41833.3359,3,0.0],[41833.3359,7,0.0],[42000.0,2,0.0],[42000.0,6,0.0],[42166.668,5,0.0],[42333.3359,3,0.0],[42333.3359,4,0.0],[42500.0,5,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[42833.3359,0,0.0],[43000.0,3,0.0],[43166.668,2,0.0],[43333.3359,1,0.0],[43666.668,0,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[44166.668,2,0.0],[44333.3359,3,0.0],[44500.0,1,0.0],[44666.668,2,0.0],[45000.0,0,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[45333.3359,0,0.0],[45666.668,1,0.0],[46000.0,3,0.0],[46333.3359,1,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[46666.668,2,0.0],[47000.0,3,0.0],[47333.3359,0,0.0],[47333.3359,1,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[48166.668,1,0.0],[48333.3359,3,0.0],[48500.0,2,0.0],[48666.668,0,0.0],[48833.3359,2,0.0],[49000.0,1,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[49333.3359,0,0.0],[49416.668,3,0.0],[49500.0,0,0.0],[49666.668,1,0.0],[49833.3359,0,0.0],[50000.0,2,0.0],[50166.668,3,0.0],[50333.3359,1,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[50833.3359,0,0.0],[51000.0,3,0.0],[51166.668,1,0.0],[51333.3359,2,0.0],[51500.0,3,0.0],[51666.668,1,0.0],[51833.3359,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[52000.0,0,0.0],[52166.668,0,0.0],[52333.3359,2,0.0],[52500.0,2,0.0],[52666.668,3,0.0],[53000.0,3,0.0],[53000.0,1,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[53333.3359,2,0.0],[53666.668,0,0.0],[53833.3359,1,0.0],[54000.0,2,0.0],[54333.3359,0,0.0],[54500.0,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[54666.668,2,0.0],[54833.3359,3,0.0],[55000.0,0,0.0],[55166.668,1,0.0],[55333.3359,2,0.0],[55666.668,0,0.0],[55833.3359,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[56000.0,2,0.0],[56333.3359,0,0.0],[56500.0,1,0.0],[56666.668,2,0.0],[57000.0,0,0.0],[57166.668,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[57333.3359,2,0.0],[57500.0,3,0.0],[57666.668,0,0.0],[57833.3359,1,0.0],[58000.0,2,0.0],[58333.3359,0,0.0],[58500.0,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[58666.668,1,0.0],[59000.0,0,0.0],[59166.668,3,0.0],[59333.3359,1,0.0],[59666.668,2,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[60000.0,1,0.0],[60333.3359,0,0.0],[60500.0,0,0.0],[60666.668,3,0.0],[60833.3359,3,0.0],[61000.0,3,0.0],[61166.668,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[61333.3359,1,0.0],[61666.668,0,0.0],[61833.3359,3,0.0],[62000.0,1,0.0],[62333.3359,2,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[62666.668,1,0.0],[62666.668,4,0.0],[62833.3359,5,0.0],[63000.0,0,0.0],[63000.0,6,0.0],[63166.668,0,0.0],[63166.668,7,0.0],[63333.3359,3,0.0],[63333.3359,6,0.0],[63500.0,3,0.0],[63500.0,5,0.0],[63666.668,3,0.0],[63666.668,4,0.0],[63833.3359,5,333.333344],[63833.3359,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[64333.3359,2,0.0],[64500.0039,1,0.0],[64666.668,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[65500.0039,1,0.0],[65666.67,3,0.0],[66000.0,0,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[67000.0,2,0.0],[67333.3359,1,0.0],[67666.67,0,0.0],[67833.3359,1,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[68000.0,2,0.0],[68000.0,4,0.0],[68166.67,3,0.0],[68166.67,5,0.0],[68333.3359,0,0.0],[68333.3359,6,0.0],[68500.0,3,0.0],[68500.0,7,0.0],[68666.67,2,0.0],[68666.67,6,0.0],[68833.3359,5,0.0],[69000.0,4,0.0],[69166.67,5,333.333344]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[69666.67,2,0.0],[69833.3359,1,0.0],[70000.0,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[70833.3359,1,0.0],[71000.0,3,0.0],[71333.3359,0,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[72333.3359,2,0.0],[72666.67,1,0.0],[73000.0,0,0.0],[73166.67,1,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[73333.3359,2,0.0],[73500.0,3,0.0],[73666.67,0,0.0],[73833.3359,3,0.0],[74000.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[74666.67,2,0.0],[75000.0,0,0.0],[75166.67,1,0.0],[75333.3359,2,0.0],[75666.67,0,0.0],[75833.3359,3,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[76000.0,2,0.0],[76166.67,3,0.0],[76333.3359,0,0.0],[76500.0,1,0.0],[76666.67,2,0.0],[77000.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[77333.3359,2,0.0],[77666.67,0,0.0],[77833.3359,1,0.0],[78000.0,2,0.0],[78333.3359,0,0.0],[78500.0,3,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[78666.67,2,0.0],[78833.3359,3,0.0],[79000.0,0,0.0],[79166.67,1,0.0],[79333.3359,2,0.0],[79666.67,2,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[80000.0,1,0.0],[80333.3359,0,0.0],[80500.0,3,0.0],[80666.67,1,0.0],[81000.0,2,0.0]]},{"lengthInSteps":16,"mustHitSection":false,"sectionNotes":[[81333.3359,1,0.0],[81666.67,1,0.0],[82000.0,1,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[82666.67,1,0.0],[83000.0,0,0.0],[83166.67,3,0.0],[83333.3359,1,0.0],[83666.67,2,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[[84000.0,1,0.0],[84333.3359,1,0.0],[84666.67,1,0.0]]},{"lengthInSteps":16,"mustHitSection":true,"sectionNotes":[]}]},"generatedBy":"SNIFF ver.6"} \ No newline at end of file +{"events":[{"params":["cock", ["super", "cock"]],"time":0,"type":-1},{"params":[0],"time":0,"type":1},{"params":[0],"time":10666.6666666667,"type":1},{"params":[1],"time":13333.3333333333,"type":1},{"params":[0],"time":16000,"type":1},{"params":[1],"time":18666.6666666667,"type":1},{"params":[0],"time":21333.3333333333,"type":1},{"params":[1],"time":26666.6666666667,"type":1},{"params":[0],"time":32000,"type":1},{"params":[1],"time":42666.6666666667,"type":1},{"params":[0],"time":53333.3333333334,"type":1},{"params":[1],"time":56000,"type":1},{"params":[0],"time":58666.6666666667,"type":1},{"params":[1],"time":61333.3333333334,"type":1},{"params":[0],"time":64000,"type":1},{"params":[1],"time":69333.3333333334,"type":1},{"params":[0],"time":74666.6666666667,"type":1},{"params":[1],"time":77333.3333333333,"type":1},{"params":[0],"time":80000,"type":1},{"params":[1],"time":82666.6666666667,"type":1}],"strumLines":[{"notes":[{"id":2,"sLen":0,"time":10666.667,"type":0},{"id":0,"sLen":0,"time":11000,"type":0},{"id":1,"sLen":0,"time":11166.667,"type":0},{"id":2,"sLen":0,"time":11333.334,"type":0},{"id":0,"sLen":0,"time":11666.667,"type":0},{"id":3,"sLen":0,"time":11833.334,"type":0},{"id":2,"sLen":0,"time":12000,"type":0},{"id":3,"sLen":0,"time":12166.667,"type":0},{"id":0,"sLen":0,"time":12333.334,"type":0},{"id":1,"sLen":0,"time":12500,"type":0},{"id":2,"sLen":0,"time":12666.667,"type":0},{"id":0,"sLen":0,"time":13000,"type":0},{"id":3,"sLen":0,"time":13166.667,"type":0},{"id":1,"sLen":0,"time":16000,"type":0},{"id":0,"sLen":0,"time":16333.334,"type":0},{"id":3,"sLen":0,"time":16500,"type":0},{"id":1,"sLen":0,"time":16666.668,"type":0},{"id":2,"sLen":0,"time":17000,"type":0},{"id":1,"sLen":0,"time":17333.334,"type":0},{"id":0,"sLen":0,"time":17666.668,"type":0},{"id":0,"sLen":0,"time":17833.334,"type":0},{"id":3,"sLen":0,"time":18000,"type":0},{"id":3,"sLen":0,"time":18166.668,"type":0},{"id":3,"sLen":0,"time":18333.334,"type":0},{"id":3,"sLen":0,"time":18500,"type":0},{"id":2,"sLen":0,"time":21666.668,"type":0},{"id":1,"sLen":0,"time":21833.334,"type":0},{"id":3,"sLen":0,"time":22000,"type":0},{"id":1,"sLen":0,"time":22833.334,"type":0},{"id":3,"sLen":0,"time":23000,"type":0},{"id":0,"sLen":0,"time":23333.334,"type":0},{"id":2,"sLen":0,"time":24333.334,"type":0},{"id":1,"sLen":0,"time":24666.668,"type":0},{"id":0,"sLen":0,"time":25000,"type":0},{"id":1,"sLen":0,"time":25166.668,"type":0},{"id":2,"sLen":0,"time":25333.334,"type":0},{"id":3,"sLen":0,"time":25500,"type":0},{"id":0,"sLen":0,"time":25666.668,"type":0},{"id":3,"sLen":0,"time":25833.334,"type":0},{"id":2,"sLen":0,"time":26000,"type":0},{"id":0,"sLen":0,"time":30666.668,"type":0},{"id":1,"sLen":0,"time":30833.334,"type":0},{"id":2,"sLen":0,"time":31000,"type":0},{"id":3,"sLen":0,"time":31166.668,"type":0},{"id":2,"sLen":0,"time":31333.334,"type":0},{"id":1,"sLen":0,"time":31500,"type":0},{"id":0,"sLen":0,"time":31666.668,"type":0},{"id":1,"sLen":0,"time":31833.334,"type":0},{"id":0,"sLen":0,"time":32166.668,"type":0},{"id":3,"sLen":0,"time":32333.334,"type":0},{"id":2,"sLen":0,"time":32500.002,"type":0},{"id":1,"sLen":0,"time":32666.668,"type":0},{"id":0,"sLen":0,"time":33000,"type":0},{"id":2,"sLen":0,"time":33500,"type":0},{"id":3,"sLen":0,"time":33666.668,"type":0},{"id":1,"sLen":0,"time":33833.3359,"type":0},{"id":2,"sLen":0,"time":34000,"type":0},{"id":0,"sLen":0,"time":34333.3359,"type":0},{"id":0,"sLen":0,"time":34666.668,"type":0},{"id":1,"sLen":0,"time":35000,"type":0},{"id":3,"sLen":0,"time":35333.3359,"type":0},{"id":1,"sLen":0,"time":35666.668,"type":0},{"id":2,"sLen":0,"time":36000,"type":0},{"id":3,"sLen":0,"time":36333.3359,"type":0},{"id":0,"sLen":0,"time":36666.668,"type":0},{"id":1,"sLen":0,"time":36666.668,"type":0},{"id":1,"sLen":0,"time":37500,"type":0},{"id":3,"sLen":0,"time":37666.668,"type":0},{"id":2,"sLen":0,"time":37833.3359,"type":0},{"id":0,"sLen":0,"time":38000,"type":0},{"id":2,"sLen":0,"time":38166.668,"type":0},{"id":1,"sLen":0,"time":38333.3359,"type":0},{"id":0,"sLen":0,"time":38666.668,"type":0},{"id":3,"sLen":0,"time":38750,"type":0},{"id":0,"sLen":0,"time":38833.3359,"type":0},{"id":1,"sLen":0,"time":39000,"type":0},{"id":0,"sLen":0,"time":39166.668,"type":0},{"id":2,"sLen":0,"time":39333.3359,"type":0},{"id":3,"sLen":0,"time":39500,"type":0},{"id":1,"sLen":0,"time":39666.668,"type":0},{"id":0,"sLen":0,"time":40166.668,"type":0},{"id":3,"sLen":0,"time":40333.3359,"type":0},{"id":1,"sLen":0,"time":40500,"type":0},{"id":2,"sLen":0,"time":40666.668,"type":0},{"id":3,"sLen":0,"time":40833.3359,"type":0},{"id":1,"sLen":0,"time":41000,"type":0},{"id":3,"sLen":0,"time":41166.668,"type":0},{"id":0,"sLen":0,"time":41333.3359,"type":0},{"id":1,"sLen":0,"time":41500,"type":0},{"id":0,"sLen":0,"time":41666.668,"type":0},{"id":3,"sLen":0,"time":41833.3359,"type":0},{"id":2,"sLen":0,"time":42000,"type":0},{"id":3,"sLen":0,"time":42333.3359,"type":0},{"id":2,"sLen":0,"time":53333.3359,"type":0},{"id":0,"sLen":0,"time":53666.668,"type":0},{"id":1,"sLen":0,"time":53833.3359,"type":0},{"id":2,"sLen":0,"time":54000,"type":0},{"id":0,"sLen":0,"time":54333.3359,"type":0},{"id":3,"sLen":0,"time":54500,"type":0},{"id":2,"sLen":0,"time":54666.668,"type":0},{"id":3,"sLen":0,"time":54833.3359,"type":0},{"id":0,"sLen":0,"time":55000,"type":0},{"id":1,"sLen":0,"time":55166.668,"type":0},{"id":2,"sLen":0,"time":55333.3359,"type":0},{"id":0,"sLen":0,"time":55666.668,"type":0},{"id":3,"sLen":0,"time":55833.3359,"type":0},{"id":1,"sLen":0,"time":58666.668,"type":0},{"id":0,"sLen":0,"time":59000,"type":0},{"id":3,"sLen":0,"time":59166.668,"type":0},{"id":1,"sLen":0,"time":59333.3359,"type":0},{"id":2,"sLen":0,"time":59666.668,"type":0},{"id":1,"sLen":0,"time":60000,"type":0},{"id":0,"sLen":0,"time":60333.3359,"type":0},{"id":0,"sLen":0,"time":60500,"type":0},{"id":3,"sLen":0,"time":60666.668,"type":0},{"id":3,"sLen":0,"time":60833.3359,"type":0},{"id":3,"sLen":0,"time":61000,"type":0},{"id":3,"sLen":0,"time":61166.668,"type":0},{"id":0,"sLen":0,"time":62666.668,"type":0},{"id":1,"sLen":0,"time":62833.3359,"type":0},{"id":2,"sLen":0,"time":63000,"type":0},{"id":3,"sLen":0,"time":63166.668,"type":0},{"id":2,"sLen":0,"time":63333.3359,"type":0},{"id":1,"sLen":0,"time":63500,"type":0},{"id":0,"sLen":0,"time":63666.668,"type":0},{"id":1,"sLen":333.333343999999,"time":63833.3359,"type":0},{"id":2,"sLen":0,"time":64333.3359,"type":0},{"id":1,"sLen":0,"time":64500.0039,"type":0},{"id":3,"sLen":0,"time":64666.668,"type":0},{"id":1,"sLen":0,"time":65500.0039,"type":0},{"id":3,"sLen":0,"time":65666.67,"type":0},{"id":0,"sLen":0,"time":66000,"type":0},{"id":2,"sLen":0,"time":67000,"type":0},{"id":1,"sLen":0,"time":67333.3359,"type":0},{"id":0,"sLen":0,"time":67666.67,"type":0},{"id":1,"sLen":0,"time":67833.3359,"type":0},{"id":2,"sLen":0,"time":68000,"type":0},{"id":3,"sLen":0,"time":68166.67,"type":0},{"id":0,"sLen":0,"time":68333.3359,"type":0},{"id":3,"sLen":0,"time":68500,"type":0},{"id":2,"sLen":0,"time":68666.67,"type":0},{"id":2,"sLen":0,"time":74666.67,"type":0},{"id":0,"sLen":0,"time":75000,"type":0},{"id":1,"sLen":0,"time":75166.67,"type":0},{"id":2,"sLen":0,"time":75333.3359,"type":0},{"id":0,"sLen":0,"time":75666.67,"type":0},{"id":3,"sLen":0,"time":75833.3359,"type":0},{"id":2,"sLen":0,"time":76000,"type":0},{"id":3,"sLen":0,"time":76166.67,"type":0},{"id":0,"sLen":0,"time":76333.3359,"type":0},{"id":1,"sLen":0,"time":76500,"type":0},{"id":2,"sLen":0,"time":76666.67,"type":0},{"id":2,"sLen":0,"time":77000,"type":0},{"id":1,"sLen":0,"time":80000,"type":0},{"id":0,"sLen":0,"time":80333.3359,"type":0},{"id":3,"sLen":0,"time":80500,"type":0},{"id":1,"sLen":0,"time":80666.67,"type":0},{"id":2,"sLen":0,"time":81000,"type":0},{"id":1,"sLen":0,"time":81333.3359,"type":0},{"id":1,"sLen":0,"time":81666.67,"type":0},{"id":1,"sLen":0,"time":82000,"type":0}],"position":"dad","type":0,"characters":["dad"]},{"notes":[{"id":2,"sLen":0,"time":13333.334,"type":0},{"id":0,"sLen":0,"time":13666.667,"type":0},{"id":1,"sLen":0,"time":13833.334,"type":0},{"id":2,"sLen":0,"time":14000,"type":0},{"id":0,"sLen":0,"time":14333.334,"type":0},{"id":3,"sLen":0,"time":14500,"type":0},{"id":2,"sLen":0,"time":14666.667,"type":0},{"id":3,"sLen":0,"time":14833.334,"type":0},{"id":0,"sLen":0,"time":15000,"type":0},{"id":1,"sLen":0,"time":15166.667,"type":0},{"id":2,"sLen":0,"time":15333.334,"type":0},{"id":0,"sLen":0,"time":15666.667,"type":0},{"id":3,"sLen":0,"time":15833.334,"type":0},{"id":1,"sLen":0,"time":18666.668,"type":0},{"id":0,"sLen":0,"time":19000,"type":0},{"id":3,"sLen":0,"time":19166.668,"type":0},{"id":1,"sLen":0,"time":19333.334,"type":0},{"id":2,"sLen":0,"time":19666.668,"type":0},{"id":1,"sLen":0,"time":20000,"type":0},{"id":0,"sLen":0,"time":20333.334,"type":0},{"id":0,"sLen":0,"time":20500,"type":0},{"id":3,"sLen":0,"time":20666.668,"type":0},{"id":3,"sLen":0,"time":20833.334,"type":0},{"id":3,"sLen":0,"time":21000,"type":0},{"id":3,"sLen":0,"time":21166.668,"type":0},{"id":2,"sLen":0,"time":27000,"type":0},{"id":1,"sLen":0,"time":27166.668,"type":0},{"id":3,"sLen":0,"time":27333.334,"type":0},{"id":1,"sLen":0,"time":28166.668,"type":0},{"id":3,"sLen":0,"time":28333.334,"type":0},{"id":0,"sLen":0,"time":28666.668,"type":0},{"id":2,"sLen":0,"time":29666.668,"type":0},{"id":1,"sLen":0,"time":30000,"type":0},{"id":0,"sLen":0,"time":30333.334,"type":0},{"id":1,"sLen":0,"time":30500,"type":0},{"id":2,"sLen":0,"time":30666.668,"type":0},{"id":3,"sLen":0,"time":30833.334,"type":0},{"id":0,"sLen":0,"time":31000,"type":0},{"id":3,"sLen":0,"time":31166.668,"type":0},{"id":2,"sLen":0,"time":31333.334,"type":0},{"id":0,"sLen":0,"time":41333.3359,"type":0},{"id":1,"sLen":0,"time":41500,"type":0},{"id":2,"sLen":0,"time":41666.668,"type":0},{"id":3,"sLen":0,"time":41833.3359,"type":0},{"id":2,"sLen":0,"time":42000,"type":0},{"id":1,"sLen":0,"time":42166.668,"type":0},{"id":0,"sLen":0,"time":42333.3359,"type":0},{"id":1,"sLen":0,"time":42500,"type":0},{"id":0,"sLen":0,"time":42833.3359,"type":0},{"id":3,"sLen":0,"time":43000,"type":0},{"id":2,"sLen":0,"time":43166.668,"type":0},{"id":1,"sLen":0,"time":43333.3359,"type":0},{"id":0,"sLen":0,"time":43666.668,"type":0},{"id":2,"sLen":0,"time":44166.668,"type":0},{"id":3,"sLen":0,"time":44333.3359,"type":0},{"id":1,"sLen":0,"time":44500,"type":0},{"id":2,"sLen":0,"time":44666.668,"type":0},{"id":0,"sLen":0,"time":45000,"type":0},{"id":0,"sLen":0,"time":45333.3359,"type":0},{"id":1,"sLen":0,"time":45666.668,"type":0},{"id":3,"sLen":0,"time":46000,"type":0},{"id":1,"sLen":0,"time":46333.3359,"type":0},{"id":2,"sLen":0,"time":46666.668,"type":0},{"id":3,"sLen":0,"time":47000,"type":0},{"id":0,"sLen":0,"time":47333.3359,"type":0},{"id":1,"sLen":0,"time":47333.3359,"type":0},{"id":1,"sLen":0,"time":48166.668,"type":0},{"id":3,"sLen":0,"time":48333.3359,"type":0},{"id":2,"sLen":0,"time":48500,"type":0},{"id":0,"sLen":0,"time":48666.668,"type":0},{"id":2,"sLen":0,"time":48833.3359,"type":0},{"id":1,"sLen":0,"time":49000,"type":0},{"id":0,"sLen":0,"time":49333.3359,"type":0},{"id":3,"sLen":0,"time":49416.668,"type":0},{"id":0,"sLen":0,"time":49500,"type":0},{"id":1,"sLen":0,"time":49666.668,"type":0},{"id":0,"sLen":0,"time":49833.3359,"type":0},{"id":2,"sLen":0,"time":50000,"type":0},{"id":3,"sLen":0,"time":50166.668,"type":0},{"id":1,"sLen":0,"time":50333.3359,"type":0},{"id":0,"sLen":0,"time":50833.3359,"type":0},{"id":3,"sLen":0,"time":51000,"type":0},{"id":1,"sLen":0,"time":51166.668,"type":0},{"id":2,"sLen":0,"time":51333.3359,"type":0},{"id":3,"sLen":0,"time":51500,"type":0},{"id":1,"sLen":0,"time":51666.668,"type":0},{"id":3,"sLen":0,"time":51833.3359,"type":0},{"id":0,"sLen":0,"time":52000,"type":0},{"id":0,"sLen":0,"time":52166.668,"type":0},{"id":2,"sLen":0,"time":52333.3359,"type":0},{"id":2,"sLen":0,"time":52500,"type":0},{"id":3,"sLen":0,"time":52666.668,"type":0},{"id":1,"sLen":0,"time":53000,"type":0},{"id":3,"sLen":0,"time":53000,"type":0},{"id":2,"sLen":0,"time":56000,"type":0},{"id":0,"sLen":0,"time":56333.3359,"type":0},{"id":1,"sLen":0,"time":56500,"type":0},{"id":2,"sLen":0,"time":56666.668,"type":0},{"id":0,"sLen":0,"time":57000,"type":0},{"id":3,"sLen":0,"time":57166.668,"type":0},{"id":2,"sLen":0,"time":57333.3359,"type":0},{"id":3,"sLen":0,"time":57500,"type":0},{"id":0,"sLen":0,"time":57666.668,"type":0},{"id":1,"sLen":0,"time":57833.3359,"type":0},{"id":2,"sLen":0,"time":58000,"type":0},{"id":0,"sLen":0,"time":58333.3359,"type":0},{"id":3,"sLen":0,"time":58500,"type":0},{"id":1,"sLen":0,"time":61333.3359,"type":0},{"id":0,"sLen":0,"time":61666.668,"type":0},{"id":3,"sLen":0,"time":61833.3359,"type":0},{"id":1,"sLen":0,"time":62000,"type":0},{"id":2,"sLen":0,"time":62333.3359,"type":0},{"id":1,"sLen":0,"time":62666.668,"type":0},{"id":0,"sLen":0,"time":63000,"type":0},{"id":0,"sLen":0,"time":63166.668,"type":0},{"id":3,"sLen":0,"time":63333.3359,"type":0},{"id":3,"sLen":0,"time":63500,"type":0},{"id":3,"sLen":0,"time":63666.668,"type":0},{"id":3,"sLen":0,"time":63833.3359,"type":0},{"id":0,"sLen":0,"time":68000,"type":0},{"id":1,"sLen":0,"time":68166.67,"type":0},{"id":2,"sLen":0,"time":68333.3359,"type":0},{"id":3,"sLen":0,"time":68500,"type":0},{"id":2,"sLen":0,"time":68666.67,"type":0},{"id":1,"sLen":0,"time":68833.3359,"type":0},{"id":0,"sLen":0,"time":69000,"type":0},{"id":1,"sLen":333.333343999999,"time":69166.67,"type":0},{"id":2,"sLen":0,"time":69666.67,"type":0},{"id":1,"sLen":0,"time":69833.3359,"type":0},{"id":3,"sLen":0,"time":70000,"type":0},{"id":1,"sLen":0,"time":70833.3359,"type":0},{"id":3,"sLen":0,"time":71000,"type":0},{"id":0,"sLen":0,"time":71333.3359,"type":0},{"id":2,"sLen":0,"time":72333.3359,"type":0},{"id":1,"sLen":0,"time":72666.67,"type":0},{"id":0,"sLen":0,"time":73000,"type":0},{"id":1,"sLen":0,"time":73166.67,"type":0},{"id":2,"sLen":0,"time":73333.3359,"type":0},{"id":3,"sLen":0,"time":73500,"type":0},{"id":0,"sLen":0,"time":73666.67,"type":0},{"id":3,"sLen":0,"time":73833.3359,"type":0},{"id":2,"sLen":0,"time":74000,"type":0},{"id":2,"sLen":0,"time":77333.3359,"type":0},{"id":0,"sLen":0,"time":77666.67,"type":0},{"id":1,"sLen":0,"time":77833.3359,"type":0},{"id":2,"sLen":0,"time":78000,"type":0},{"id":0,"sLen":0,"time":78333.3359,"type":0},{"id":3,"sLen":0,"time":78500,"type":0},{"id":2,"sLen":0,"time":78666.67,"type":0},{"id":3,"sLen":0,"time":78833.3359,"type":0},{"id":0,"sLen":0,"time":79000,"type":0},{"id":1,"sLen":0,"time":79166.67,"type":0},{"id":2,"sLen":0,"time":79333.3359,"type":0},{"id":2,"sLen":0,"time":79666.67,"type":0},{"id":1,"sLen":0,"time":82666.67,"type":0},{"id":0,"sLen":0,"time":83000,"type":0},{"id":3,"sLen":0,"time":83166.67,"type":0},{"id":1,"sLen":0,"time":83333.3359,"type":0},{"id":2,"sLen":0,"time":83666.67,"type":0},{"id":1,"sLen":0,"time":84000,"type":0},{"id":1,"sLen":0,"time":84333.3359,"type":0},{"id":1,"sLen":0,"time":84666.67,"type":0}],"position":"boyfriend","type":1,"characters":["bf"]},{"notes":[],"visible":false,"position":"girlfriend","strumLinePos":0.5,"type":2,"characters":["gf"]}],"codenameChart":true,"scrollSpeed":2.3,"noteTypes":[]} \ No newline at end of file diff --git a/liveReload.bat b/liveReload.bat new file mode 100644 index 00000000..c8ca3ec8 --- /dev/null +++ b/liveReload.bat @@ -0,0 +1,3 @@ +cd export/release/windows/bin/ +start cmd /k CodenameEngine.exe -livereload +cd ../../../../ \ No newline at end of file diff --git a/source/funkin/backend/system/Conductor.hx b/source/funkin/backend/system/Conductor.hx index 7709cd91..a35f57c7 100644 --- a/source/funkin/backend/system/Conductor.hx +++ b/source/funkin/backend/system/Conductor.hx @@ -120,7 +120,13 @@ class Conductor */ public static function mapBPMChanges(song:ChartData) { - bpmChangeMap = []; + bpmChangeMap = [ + { + stepTime: 0, + songTime: 0, + bpm: song.meta.bpm + } + ]; if (song.events == null) return; diff --git a/source/funkin/editors/charter/Charter.hx b/source/funkin/editors/charter/Charter.hx index a67ad0f2..348e0dd5 100644 --- a/source/funkin/editors/charter/Charter.hx +++ b/source/funkin/editors/charter/Charter.hx @@ -64,6 +64,7 @@ class Charter extends UIState { */ public var strumLines:FlxTypedGroup = new FlxTypedGroup(); public var notesGroup:CharterNoteGroup = new CharterNoteGroup(); + public var eventsGroup:CharterEventGroup = new CharterEventGroup(); /** * CAMERAS @@ -381,6 +382,7 @@ class Charter extends UIState { add(gridBackdrop); add(sectionSeparator); add(beatSeparator); + add(eventsGroup); add(notesGroup); add(topLimit); add(conductorFollowerSpr); @@ -424,6 +426,23 @@ class Charter extends UIState { return FlxSort.byValues(FlxSort.ASCENDING, n1.step, n2.step); }); + trace("generating events..."); + var __last:CharterEvent = null; + var __lastTime:Float = Math.NaN; + for(e in PlayState.SONG.events) { + if (e == null) continue; + if (__last != null && __lastTime == e.time) { + __last.events.push(e); + } else { + __last = new CharterEvent(Conductor.getStepForTime(e.time), [e]); + __lastTime = e.time; + eventsGroup.add(__last); + } + } + + for(e in eventsGroup.members) + e.refreshEventIcons(); + refreshBPMSensitive(); } @@ -959,10 +978,16 @@ class Charter extends UIState { public function buildChart() { PlayState.SONG.strumLines = []; + PlayState.SONG.events = []; for(s in strumLines) { s.strumLine.notes = []; PlayState.SONG.strumLines.push(s.strumLine); } + for(e in eventsGroup.members) { + for(event in e.events) { + PlayState.SONG.events.push(event); + } + } for(n in notesGroup.members) { var strLineID = Std.int(n.id / 4); if (PlayState.SONG.strumLines[strLineID] != null) { diff --git a/source/funkin/editors/charter/CharterEvent.hx b/source/funkin/editors/charter/CharterEvent.hx index 5fc6896a..c0c10d02 100644 --- a/source/funkin/editors/charter/CharterEvent.hx +++ b/source/funkin/editors/charter/CharterEvent.hx @@ -26,11 +26,16 @@ class CharterEvent extends UISliceSprite { public var icons:Array = []; public function new(step:Float, ?events:Array) { - super(-100, step * 40, 100, 34, 'editors/charter/event-spr'); + super(-100, (step * 40) - 17, 100, 34, 'editors/charter/event-spr'); this.step = step; this.events = events.getDefault([]); + } - refreshEventIcons(); + public override function update(elapsed:Float) { + super.update(elapsed); + for(k=>i in icons) { + i.follow(this, (k * 22) + 23 - (i.width / 2), (bHeight - i.height) / 2); + } } public function refreshEventIcons() { @@ -42,7 +47,7 @@ class CharterEvent extends UISliceSprite { var f = function(type) { var spr = new FlxSprite().loadGraphic(Paths.image('editors/charter/event-icons'), true, 16, 16); - spr.frame = spr.frames.frames[type]; + spr.frame = spr.frames.frames[type+1]; icons.push(spr); members.push(spr); }; @@ -56,15 +61,15 @@ class CharterEvent extends UISliceSprite { var state = cast(FlxG.state, Charter); if (event.params[0] != null && event.params[0] >= 0 && event.params[0] < state.strumLines.length) { // camera movement, use health icon - var healthIcon = new HealthIcon('${event.params[0]}'); - healthIcon.setGraphicSize(24, 24); - healthIcon.updateHitbox(); + var healthIcon = new HealthIcon('${state.strumLines.members[event.params[0]].strumLine.characters[0]}'); + healthIcon.setUnstretchedGraphicSize(32, 32, false); icons.push(healthIcon); members.push(healthIcon); } else f(event.type); } } + x = -(bWidth = 32 + (icons.length * 22)); } } diff --git a/source/funkin/editors/charter/CharterEventGroup.hx b/source/funkin/editors/charter/CharterEventGroup.hx new file mode 100644 index 00000000..c631a05a --- /dev/null +++ b/source/funkin/editors/charter/CharterEventGroup.hx @@ -0,0 +1,5 @@ +package funkin.editors.charter; + +class CharterEventGroup extends FlxTypedGroup { + +} \ No newline at end of file diff --git a/source/funkin/game/Note.hx b/source/funkin/game/Note.hx index 29849376..c2ab5696 100644 --- a/source/funkin/game/Note.hx +++ b/source/funkin/game/Note.hx @@ -91,7 +91,7 @@ class Note extends FlxSprite private static var __customNoteTypeExists:Map = []; - public var animSuffix:String = ""; + public var animSuffix:String = null; private static function customTypePathExists(path:String) { diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 58330583..8c0d2cbd 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -1167,14 +1167,20 @@ class PlayState extends MusicBeatState switch(event.type) { case CUSTOM: - var d = [for(d in event.params) d]; - scripts.call(d.shift(), d); + if (event.params[0] is String && event.params[1] is Array) { + scripts.call(event.params[0], event.params[1]); + } case CAM_MOVEMENT: - if (event.params.length > 0 && event.params[0] is Int) + if (event.params[0] is Int) curCameraTarget = event.params[0]; case BPM_CHANGE: // automatically handled by conductor case ALT_ANIM_TOGGLE: + if (event.params[0] is Int && event.params[1] is Bool) { + var strLine = strumLines[event.params[0]]; + if (strLine != null) + strLine.altAnim = cast event.params[1]; + } // todo!!! default: } @@ -1469,9 +1475,9 @@ class PlayState extends MusicBeatState var event:NoteHitEvent; if (strumLine != null && !strumLine.cpu) - event = scripts.event("onPlayerHit", EventManager.get(NoteHitEvent).recycle(false, !note.isSustainNote, !note.isSustainNote, note, strumLine.characters, true, note.noteType, note.animSuffix, "game/score/", "", note.strumID, score, note.isSustainNote ? null : accuracy, note.noteData > 0 ? 0.023 : 0.004, daRating, Options.splashesEnabled && !note.isSustainNote && daRating == "sick")); + event = scripts.event("onPlayerHit", EventManager.get(NoteHitEvent).recycle(false, !note.isSustainNote, !note.isSustainNote, note, strumLine.characters, true, note.noteType, note.animSuffix.getDefault(strumLine.altAnim ? "-alt" : ""), "game/score/", "", note.strumID, score, note.isSustainNote ? null : accuracy, note.noteData > 0 ? 0.023 : 0.004, daRating, Options.splashesEnabled && !note.isSustainNote && daRating == "sick")); else - event = scripts.event("onDadHit", EventManager.get(NoteHitEvent).recycle(false, false, false, note, strumLine.characters, false, note.noteType, note.animSuffix, "game/score/", "", note.strumID, 0, null, 0, daRating, false)); + event = scripts.event("onDadHit", EventManager.get(NoteHitEvent).recycle(false, false, false, note, strumLine.characters, false, note.noteType, note.animSuffix.getDefault(strumLine.altAnim ? "-alt" : ""), "game/score/", "", note.strumID, 0, null, 0, daRating, false)); strumLine.onHit.dispatch(event); scripts.event("onNoteHit", event); @@ -1524,7 +1530,7 @@ class PlayState extends MusicBeatState FlxTween.tween(numScore, {alpha: 0}, 0.2, { onComplete: function(tween:FlxTween) { - numScore.exists = false; + numScore.visible = numScore.active = false; }, startDelay: Conductor.crochet * 0.002 }); @@ -1548,8 +1554,8 @@ class PlayState extends MusicBeatState FlxTween.tween(comboSpr, {alpha: 0}, 0.2, { onComplete: function(tween:FlxTween) { - rating.exists = false; - comboSpr.exists = false; + rating.visible = rating.active = false; + comboSpr.visible = comboSpr.active = false; }, startDelay: Conductor.crochet * 0.001 }); diff --git a/source/funkin/game/StrumLine.hx b/source/funkin/game/StrumLine.hx index 1755420a..2fd68f71 100644 --- a/source/funkin/game/StrumLine.hx +++ b/source/funkin/game/StrumLine.hx @@ -55,6 +55,10 @@ class StrumLine extends FlxTypedGroup { * Group of all of the notes in this strumline. Using `forEach` on this group will only loop through the first notes for performance reasons. */ public var notes:NoteGroup; + /** + * Whenever alt animation is enabled on this strumline. + */ + public var altAnim:Bool = false; private function get_ghostTapping() { if (this.ghostTapping != null) return this.ghostTapping;