Merge remote-tracking branch 'upstream/main'

This commit is contained in:
Ne_Eo
2024-11-15 11:48:50 +01:00
34 changed files with 714 additions and 477 deletions
+5 -5
View File
@@ -10,9 +10,9 @@
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
<!-- funny loop -->
<anim name="idle-loop" anim="BF idle dance" fps="24" loop="true" x="-5" y="0" indices="10,11,12,13"/>
<anim name="singUP-loop" anim="BF NOTE UP0" fps="24" loop="true" x="-29" y="27" indices="11,12,13,14"/>
<anim name="singLEFT-loop" anim="BF NOTE LEFT0" fps="24" loop="true" x="12" y="-6" indices="12,13,14,15"/>
<anim name="singRIGHT-loop" anim="BF NOTE RIGHT0" fps="24" loop="true" x="-38" y="-7" indices="58,59,60,61"/>
<anim name="singDOWN-loop" anim="BF NOTE DOWN0" fps="24" loop="true" x="-10" y="-50" indices="26,27,28,29"/>
<anim name="idle-loop" anim="BF idle dance" fps="24" loop="true" x="-5" y="0" indices="10..13"/>
<anim name="singUP-loop" anim="BF NOTE UP0" fps="24" loop="true" x="-29" y="27" indices="11..14"/>
<anim name="singLEFT-loop" anim="BF NOTE LEFT0" fps="24" loop="true" x="12" y="-6" indices="12..15"/>
<anim name="singRIGHT-loop" anim="BF NOTE RIGHT0" fps="24" loop="true" x="-38" y="-7" indices="58..61"/>
<anim name="singDOWN-loop" anim="BF NOTE DOWN0" fps="24" loop="true" x="-10" y="-50" indices="26..29"/>
</character>
+10 -10
View File
@@ -1,13 +1,13 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf" camy="55" color="#31B0D1">
<anim name="idle" anim="BF idle dance" fps="24" loop="false" x="-5" y="0"/>
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="27"/>
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="-6"/>
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-38" y="-7"/>
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-50"/>
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="27"/>
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="24"/>
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
<anim name="hey" anim="BF HEY" fps="24" loop="false" x="7" y="4"/>
<anim name="idle" anim="BF idle dance" x="-5" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="BF NOTE UP0" x="-39" y="27" fps="24" loop="false"/>
<anim name="singLEFT" anim="BF NOTE LEFT0" x="6" y="-7" fps="24" loop="false"/>
<anim name="singRIGHT" anim="BF NOTE RIGHT0" x="-48" y="-6" fps="24" loop="false"/>
<anim name="singDOWN" anim="BF NOTE DOWN0" x="-17" y="-50" fps="24" loop="false"/>
<anim name="singUPmiss" anim="BF NOTE UP MISS" x="-35" y="27" fps="24" loop="false"/>
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" x="6" y="19" fps="24" loop="false"/>
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" x="-44" y="22" fps="24" loop="false"/>
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" x="-16" y="-19" fps="24" loop="false"/>
<anim name="hey" anim="BF HEY" x="-3" y="6" fps="24" loop="false"/>
</character>
+11 -11
View File
@@ -1,13 +1,13 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf" gameOverChar="bf-holding-gf-dead" color="#31B0D1">
<anim name="idle" anim="BF idle dance" fps="24" loop="false"/>
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="10"/>
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="7"/>
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-41" y="23"/>
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-10"/>
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="10"/>
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="7"/>
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-41" y="23"/>
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-10" y="-10"/>
<anim name="bfCatch" anim="BF catches GF" fps="24" loop="false" x="6" y="88"/>
<character y="350" sprite="bf-holding-gf" flipX="true" isPlayer="true" icon="bf" color="#31B0D1" gameOverChar="bf-holding-gf-dead">
<anim name="idle" anim="BF idle dance" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="BF NOTE UP0" x="-42" y="9" fps="24" loop="false"/>
<anim name="singLEFT" anim="BF NOTE LEFT0" x="11" y="2" fps="24" loop="false"/>
<anim name="singRIGHT" anim="BF NOTE RIGHT0" x="-46" y="21" fps="24" loop="false"/>
<anim name="singDOWN" anim="BF NOTE DOWN0" x="-16" y="-14" fps="24" loop="false"/>
<anim name="singUPmiss" anim="BF NOTE UP MISS" x="-39" y="8" fps="24" loop="false"/>
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" x="10" y="3" fps="24" loop="false"/>
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" x="-41" y="37" fps="24" loop="false"/>
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" x="-15" y="-11" fps="24" loop="false"/>
<anim name="bfCatch" anim="BF catches GF" x="6" y="90" fps="24" loop="false"/>
</character>
+11 -14
View File
@@ -1,15 +1,12 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="true" flipX="true" x="200" y="570" antialiasing="false" scale="6" gameOverChar="bf-pixel-dead" color="#7BD6F6">
<anim name="idle" anim="BF IDLE" fps="24" loop="false" x="0" y="0" />
<!-- Offsets are actually multiplied by scale -->
<anim name="singLEFT" anim="BF LEFT NOTE" fps="24" loop="false" x="0" y="0" />
<anim name="singDOWN" anim="BF DOWN NOTE" fps="24" loop="false" x="0" y="0" />
<anim name="singUP" anim="BF UP NOTE" fps="24" loop="false" x="0" y="0" />
<anim name="singRIGHT" anim="BF RIGHT NOTE" fps="24" loop="false" x="0" y="0" />
<anim name="singUPmiss" anim="BF UP MISS" fps="24" loop="false" x="0" y="0"/>
<anim name="singLEFTmiss" anim="BF LEFT MISS" fps="24" loop="false" x="0" y="0"/>
<anim name="singRIGHTmiss" anim="BF RIGHT MISS" fps="24" loop="false" x="0" y="0"/>
<anim name="singDOWNmiss" anim="BF DOWN MISS" fps="24" loop="false" x="0" y="0"/>
</character>
<character x="200" y="570" sprite="bf-pixel" scale="6" antialiasing="false" flipX="true" isPlayer="true" icon="bf-pixel" color="#7BD6F6" gameOverChar="bf-pixel-dead">
<anim name="idle" anim="BF IDLE" x="0" y="0" fps="24" loop="false"/>
<anim name="singLEFT" anim="BF LEFT NOTE" x="-1" y="0" fps="24" loop="false"/>
<anim name="singDOWN" anim="BF DOWN NOTE" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="BF UP NOTE" x="0" y="0" fps="24" loop="false"/>
<anim name="singRIGHT" anim="BF RIGHT NOTE" x="0" y="0" fps="24" loop="false"/>
<anim name="singUPmiss" anim="BF UP MISS" x="0" y="0" fps="24" loop="false"/>
<anim name="singLEFTmiss" anim="BF LEFT MISS" x="-1" y="0" fps="24" loop="false"/>
<anim name="singRIGHTmiss" anim="BF RIGHT MISS" x="0" y="0" fps="24" loop="false"/>
<anim name="singDOWNmiss" anim="BF DOWN MISS" x="0" y="0" fps="24" loop="false"/>
</character>
+16 -16
View File
@@ -1,18 +1,18 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="true" flipX="true" x="0" y="350" color="#31B0D1">
<anim name="idle" anim="BF idle dance" fps="24" loop="false" x="-5" y="0"/>
<anim name="singUP" anim="BF NOTE UP0" fps="24" loop="false" x="-29" y="27"/>
<anim name="singLEFT" anim="BF NOTE LEFT0" fps="24" loop="false" x="12" y="-6"/>
<anim name="singRIGHT" anim="BF NOTE RIGHT0" fps="24" loop="false" x="-38" y="-7"/>
<anim name="singDOWN" anim="BF NOTE DOWN0" fps="24" loop="false" x="-10" y="-50"/>
<anim name="singUPmiss" anim="BF NOTE UP MISS" fps="24" loop="false" x="-29" y="27"/>
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" fps="24" loop="false" x="12" y="24"/>
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" fps="24" loop="false" x="-30" y="21"/>
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" fps="24" loop="false" x="-11" y="-19"/>
<anim name="hey" anim="BF HEY" fps="24" loop="false" x="7" y="4"/>
<anim name="scared" anim="BF idle shaking" fps="24" loop="true" x="-4" y="0"/>
<anim name="hit" anim="BF hit" fps="24" loop="false" x="13" y="19"/>
<anim name="pre-attack" anim="bf pre attack" fps="24" loop="false" x="-47" y="-36"/>
<anim name="attack" anim="boyfriend attack" fps="24" loop="false" x="289" y="270"/>
<anim name="dodge" anim="boyfriend dodge" fps="24" loop="false" x="-7" y="-15"/>
<character y="350" sprite="bf" flipX="true" isPlayer="true" icon="bf" color="#31B0D1">
<anim name="idle" anim="BF idle dance" x="-5" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="BF NOTE UP0" x="-39" y="27" fps="24" loop="false"/>
<anim name="singLEFT" anim="BF NOTE LEFT0" x="6" y="-7" fps="24" loop="false"/>
<anim name="singRIGHT" anim="BF NOTE RIGHT0" x="-48" y="-6" fps="24" loop="false"/>
<anim name="singDOWN" anim="BF NOTE DOWN0" x="-17" y="-50" fps="24" loop="false"/>
<anim name="singUPmiss" anim="BF NOTE UP MISS" x="-35" y="27" fps="24" loop="false"/>
<anim name="singLEFTmiss" anim="BF NOTE LEFT MISS" x="6" y="19" fps="24" loop="false"/>
<anim name="singRIGHTmiss" anim="BF NOTE RIGHT MISS" x="-44" y="22" fps="24" loop="false"/>
<anim name="singDOWNmiss" anim="BF NOTE DOWN MISS" x="-16" y="-19" fps="24" loop="false"/>
<anim name="hey" anim="BF HEY" x="-3" y="6" fps="24" loop="false"/>
<anim name="scared" anim="BF idle shaking" x="-6" y="1" fps="24" loop="true"/>
<anim name="hit" anim="BF hit" x="13" y="19" fps="24" loop="false"/>
<anim name="pre-attack" anim="bf pre attack" x="-47" y="-36" fps="24" loop="false"/>
<anim name="attack" anim="boyfriend attack" x="289" y="270" fps="24" loop="false"/>
<anim name="dodge" anim="boyfriend dodge" x="-8" y="-13" fps="24" loop="false"/>
</character>
+11 -12
View File
@@ -1,13 +1,12 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" holdTime="6.1" color="#AF66CE">
<anim name="idle" anim="Dad idle dance" fps="24" loop="false" x="0" y="0"/>
<anim name="singUP" anim="Dad Sing note UP" fps="24" loop="false" x="-6" y="50"/>
<anim name="singLEFT" anim="dad sing note right" fps="24" loop="false" x="-10" y="10"/>
<anim name="singRIGHT" anim="Dad Sing Note LEFT" fps="24" loop="false" x="0" y="27"/>
<anim name="singDOWN" anim="Dad Sing Note DOWN" fps="24" loop="false" x="0" y="-30"/>
<!-- funny loop -->
<anim name="idle-loop" anim="Dad idle dance" fps="24" loop="true" x="0" y="0" indices="10,11,12,12"/>
<anim name="singUP-loop" anim="Dad Sing note UP" fps="24" loop="true" x="-6" y="50" indices="56,57,58,59"/>
<anim name="singLEFT-loop" anim="dad sing note right" fps="24" loop="true" x="-10" y="10" indices="12,13,14,15"/>
<anim name="singRIGHT-loop" anim="Dad Sing Note LEFT" fps="24" loop="true" x="0" y="27" indices="15,16,17,18"/>
</character>
<character sprite="dad" icon="dad" color="#AF66CE" holdTime="6.1">
<anim name="idle" anim="Dad idle dance" x="0" y="0" fps="24" loop="false" indices="2..12,0,1"/>
<anim name="singUP" anim="Dad Sing note UP" x="-10" y="50" fps="24" loop="false"/>
<anim name="singLEFT" anim="dad sing note right" x="-10" y="10" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Dad Sing Note LEFT" x="-4" y="26" fps="24" loop="false"/>
<anim name="singDOWN" anim="Dad Sing Note DOWN" x="2" y="-31" fps="24" loop="false"/>
<anim name="idle-loop" anim="Dad idle dance" x="0" y="0" fps="24" loop="true" indices="10..12,12"/>
<anim name="singUP-loop" anim="Dad Sing note UP" x="-10" y="50" fps="24" loop="true" indices="56..59"/>
<anim name="singLEFT-loop" anim="dad sing note right" x="-10" y="10" fps="24" loop="true" indices="12..15"/>
<anim name="singRIGHT-loop" anim="Dad Sing Note LEFT" x="-4" y="26" fps="24" loop="true" indices="15..18"/>
</character>
+2 -2
View File
@@ -1,5 +1,5 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" isGF="true" x="75" y="335" icon="gf" color="#A5004D">
<anim name="danceLeft" anim="GF Dancing Beat Hair blowing CAR" fps="24" loop="false" x="0" y="0" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
<anim name="danceRight" anim="GF Dancing Beat Hair blowing CAR" fps="24" loop="false" x="0" y="0" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
<anim name="danceLeft" anim="GF Dancing Beat Hair blowing CAR" fps="24" loop="false" x="0" y="0" indices="0..15" />
<anim name="danceRight" anim="GF Dancing Beat Hair blowing CAR" fps="24" loop="false" x="0" y="0" indices="16..30" />
</character>
+13 -13
View File
@@ -1,14 +1,14 @@
<!DOCTYPE codename-engine-character>
<character x="115" icon="gf" y="325" isGF="true" flipX="false" isPlayer="false" antialiasing="true" color="#A5004D">
<anim x="0" loop="true" y="-9" fps="24" anim="GF FEAR" name="scared"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF Down Note" name="singDOWN"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF Dancing Beat" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" name="danceRight"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF Up Note" name="singUP"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF Dancing Beat" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" name="danceLeft"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF Dancing Beat Hair blowing" indices="0,1,2,3" name="hairBlow"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF Right Note" name="singRIGHT"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF Dancing Beat Hair Landing" indices="0,1,2,3,4,5,6,7,8,9,10,11" name="hairFall"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF Cheer" name="cheer"/>
<anim x="0" loop="false" y="-9" fps="24" anim="GF left note" name="singLEFT"/>
<anim x="-51" loop="true" y="306" fps="24" anim="gf sad" indices="0,1,2,3,4,5,6,7,8,9,10,11,12" name="sad"/>
</character>
<character x="115" y="325" sprite="gf-christmas" icon="gf" color="#A5004D" isGF="true">
<anim name="danceLeft" anim="GF Dancing Beat" x="0" y="-9" fps="24" loop="false" indices="0..14"/>
<anim name="danceRight" anim="GF Dancing Beat" x="0" y="-9" fps="24" loop="false" indices="15..30"/>
<anim name="singUP" anim="GF Up Note" x="0" y="-9" fps="24" loop="false"/>
<anim name="singDOWN" anim="GF Down Note" x="0" y="-9" fps="24" loop="false"/>
<anim name="singLEFT" anim="GF left note" x="0" y="-9" fps="24" loop="false"/>
<anim name="singRIGHT" anim="GF Right Note" x="0" y="-9" fps="24" loop="false"/>
<anim name="scared" anim="GF FEAR" x="0" y="-9" fps="24" loop="true"/>
<anim name="hairBlow" anim="GF Dancing Beat Hair blowing" x="0" y="-9" fps="24" loop="false" indices="0..3"/>
<anim name="hairFall" anim="GF Dancing Beat Hair Landing" x="0" y="-9" fps="24" loop="false" indices="0..11"/>
<anim name="cheer" anim="GF Cheer" x="0" y="-9" fps="24" loop="false"/>
<anim name="sad" anim="gf sad" x="-51" y="306" fps="24" loop="true" indices="0..12"/>
</character>
+4 -4
View File
@@ -1,5 +1,5 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" x="180" y="300" antialiasing="false" scale="6" camx="180" camy="300" color="#C70660">
<anim name="danceLeft" anim="GF IDLE" fps="24" loop="false" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" x="0" y="0" />
<anim name="danceRight" anim="GF IDLE" fps="24" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" x="0" y="0" />
</character>
<character x="180" y="300" sprite="gf-pixel" scale="6" antialiasing="false" camx="180" camy="300" icon="gf-pixel" color="#C70660">
<anim name="danceLeft" anim="GF IDLE" x="0" y="0" fps="24" loop="false" indices="0..14"/>
<anim name="danceRight" anim="GF IDLE" x="0" y="0" fps="24" loop="false" indices="15..30"/>
</character>
+5 -5
View File
@@ -1,7 +1,7 @@
<!DOCTYPE codename-engine-character>
<character icon="gf" isGF="true" flipX="false" isPlayer="false" antialiasing="true" color="#A5004D">
<anim x="0" loop="false" y="0" fps="24" anim="GF Dancing at Gunpoint" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" name="danceLeft"/>
<anim x="0" loop="true" y="0" fps="24" anim="GF Dancing at Gunpoint" name="dance-cutscene"/>
<anim x="-315" loop="true" y="6" fps="24" anim="GF Crying at Gunpoint" indices="0,1,2,3,4,5,6,7,8,9,10,11,12" name="sad"/>
<anim x="0" loop="false" y="0" fps="24" anim="GF Dancing at Gunpoint" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" name="danceRight"/>
<character sprite="gf-tankmen" icon="gf" color="#A5004D" isGF="true">
<anim name="danceLeft" anim="GF Dancing at Gunpoint" x="0" y="0" fps="24" loop="false" indices="0..14"/>
<anim name="danceRight" anim="GF Dancing at Gunpoint" x="0" y="0" fps="24" loop="false" indices="15..30"/>
<anim name="dance-cutscene" anim="GF Dancing at Gunpoint" x="0" y="0" fps="24" loop="true"/>
<anim name="sad" anim="GF Crying at Gunpoint" x="-315" y="6" fps="24" loop="true" indices="0..12"/>
</character>
+13 -13
View File
@@ -1,14 +1,14 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" isGF="true" x="100" y="275" color="#A5004D">
<anim name="cheer" anim="GF Cheer" fps="24" loop="false" />
<anim name="singUP" anim="GF Up Note" fps="24" loop="false" x="0" y="0" />
<anim name="singLEFT" anim="GF left note" fps="24" loop="false" x="0" y="0" />
<anim name="singRIGHT" anim="GF Right Note" fps="24" loop="false" x="0" y="0" />
<anim name="singDOWN" anim="GF Down Note" fps="24" loop="false" x="0" y="0" />
<anim name="danceLeft" anim="GF Dancing Beat" fps="24" loop="false" x="0" y="0" indices="30,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
<anim name="danceRight" anim="GF Dancing Beat" fps="24" loop="false" x="0" y="0" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
<anim name="hairBlow" anim="GF Dancing Beat Hair blowing" fps="24" loop="true" x="0" y="0" indices="0,1,2,3" />
<anim name="hairFall" anim="GF Dancing Beat Hair Landing" fps="24" loop="false" x="0" y="0" indices="0,1,2,3,4,5,6,7,8,9,10,11" />
<anim name="scared" anim="GF FEAR" fps="24" loop="true" x="0" y="0" />
<anim name="sad" anim="gf sad" fps="24" loop="true" x="0" y="0" indices="0,1,2,3,4,5,6,7,8,9,10,11,12" />
</character>
<character x="100" y="275" sprite="gf" icon="gf" color="#A5004D" isGF="true">
<anim name="cheer" anim="GF Cheer" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="GF Up Note" x="0" y="0" fps="24" loop="false"/>
<anim name="singLEFT" anim="GF left note" x="0" y="0" fps="24" loop="false"/>
<anim name="singRIGHT" anim="GF Right Note" x="0" y="0" fps="24" loop="false"/>
<anim name="singDOWN" anim="GF Down Note" x="0" y="0" fps="24" loop="false"/>
<anim name="danceLeft" anim="GF Dancing Beat" x="0" y="0" fps="24" loop="false" indices="0..14"/>
<anim name="danceRight" anim="GF Dancing Beat" x="0" y="0" fps="24" loop="false" indices="15..30"/>
<anim name="hairBlow" anim="GF Dancing Beat Hair blowing" x="0" y="0" fps="24" loop="true" indices="0,1,2,3"/>
<anim name="hairFall" anim="GF Dancing Beat Hair Landing" x="0" y="0" fps="24" loop="false" indices="0..11"/>
<anim name="scared" anim="GF FEAR" x="0" y="0" fps="24" loop="true"/>
<anim name="sad" anim="gf sad" x="0" y="0" fps="24" loop="true" indices="0..12"/>
</character>
+12 -15
View File
@@ -1,16 +1,13 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" icon="mom" color="#D8558E">
<anim name="idle" anim="Mom Idle" fps="24" loop="false" />
<anim name="singUP" anim="Mom Up Pose" fps="24" loop="false" x="14" y="71"/>
<anim name="singDOWN" anim="MOM DOWN POSE" fps="24" loop="false" x="20" y="-160"/>
<anim name="singLEFT" anim="Mom Left Pose" fps="24" loop="false" x="250" y="-23"/>
<!-- ANIMATION IS CALLED MOM LEFT POSE BUT ITS FOR THE RIGHT -->
<!-- CUZ DAVE IS DUMB! -->
<anim name="singRIGHT" anim="Mom Pose Left" fps="24" loop="false" x="10" y="-60"/>
<!-- funny loop -->
<anim name="idle-loop" anim="Mom Idle" fps="24" loop="true" indices="10,11,12,13"/>
<anim name="singUP-loop" anim="Mom Up Pose" fps="24" loop="true" x="14" y="71" indices="11,12,13,14"/>
<anim name="singDOWN-loop" anim="MOM DOWN POSE" fps="24" loop="true" x="20" y="-160" indices="11,12,13,14"/>
<anim name="singLEFT-loop" anim="Mom Left Pose" fps="24" loop="true" x="250" y="-23" indices="6,7,8,9"/>
<anim name="singRIGHT-loop" anim="Mom Pose Left" fps="24" loop="true" x="10" y="-60" indices="6,7,8,9"/>
</character>
<character sprite="mom-car" icon="mom" color="#D8558E">
<anim name="idle" anim="Mom Idle" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="Mom Up Pose" x="-1" y="81" fps="24" loop="false"/>
<anim name="singDOWN" anim="MOM DOWN POSE" x="-12" y="-160" fps="24" loop="false"/>
<anim name="singLEFT" anim="Mom Left Pose" x="250" y="-23" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Mom Pose Left" x="-15" y="-55" fps="24" loop="false"/>
<anim name="idle-loop" anim="Mom Idle" x="0" y="0" fps="24" loop="true" indices="10..13"/>
<anim name="singUP-loop" anim="Mom Up Pose" x="-1" y="81" fps="24" loop="true" indices="11..14"/>
<anim name="singDOWN-loop" anim="MOM DOWN POSE" x="-12" y="-160" fps="24" loop="true" indices="11..14"/>
<anim name="singLEFT-loop" anim="Mom Left Pose" x="250" y="-23" fps="24" loop="true" indices="6..9"/>
<anim name="singRIGHT-loop" anim="Mom Pose Left" x="-15" y="-55" fps="24" loop="true" indices="6..9"/>
</character>
+13 -15
View File
@@ -1,16 +1,14 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" color="#D8558E">
<anim name="idle" anim="Mom Idle" fps="24" loop="false" />
<anim name="singUP" anim="Mom Up Pose" fps="24" loop="false" x="14" y="71"/>
<anim name="singDOWN" anim="MOM DOWN POSE" fps="24" loop="false" x="20" y="-160"/>
<anim name="singLEFT" anim="Mom Left Pose" fps="24" loop="false" x="250" y="-23"/>
<!-- ANIMATION IS CALLED MOM LEFT POSE BUT ITS FOR THE RIGHT -->
<!-- CUZ DAVE IS DUMB! -->
<anim name="singRIGHT" anim="Mom Pose Left" fps="24" loop="false" x="10" y="-60"/>
<!-- funny loop -->
<anim name="idle-loop" anim="Mom Idle" fps="24" loop="true" indices="10,11,12,13"/>
<anim name="singUP-loop" anim="Mom Up Pose" fps="24" loop="true" x="14" y="71" indices="11,12,13,14"/>
<anim name="singDOWN-loop" anim="MOM DOWN POSE" fps="24" loop="true" x="20" y="-160" indices="9,10,11,12"/>
<anim name="singLEFT-loop" anim="Mom Left Pose" fps="24" loop="true" x="250" y="-23" indices="6,7,8,9"/>
<anim name="singRIGHT-loop" anim="Mom Pose Left" fps="24" loop="true" x="10" y="-60" indices="6,7,8,9"/>
</character>
<character sprite="mom" icon="mom" color="#D8558E">
<anim name="idle" anim="Mom Idle" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="Mom Up Pose" x="13" y="67" fps="24" loop="false"/>
<anim name="singDOWN" anim="MOM DOWN POSE" x="8" y="-173" fps="24" loop="false"/>
<anim name="singLEFT" anim="Mom Left Pose" x="282" y="-28" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Mom Pose Left" x="-20" y="-60" fps="24" loop="false"/>
<anim name="idle-loop" anim="Mom Idle" x="0" y="0" fps="24" loop="true" indices="10..13"/>
<anim name="singUP-loop" anim="Mom Up Pose" x="13" y="67" fps="24" loop="true" indices="11..14"/>
<anim name="singDOWN-loop" anim="MOM DOWN POSE" x="8" y="-173" fps="24" loop="true" indices="11..14"/>
<anim name="singLEFT-loop" anim="Mom Left Pose" x="282" y="-28" fps="24" loop="true" indices="6..9"/>
<anim name="singRIGHT-loop" anim="Mom Pose Left" x="-20" y="-60" fps="24" loop="true" indices="6..9"/>
</character>
+7 -7
View File
@@ -1,8 +1,8 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" x="0" y="130" icon="monster" color="#F3FF6E">
<anim name="idle" anim="monster idle" fps="24" loop="false" x="0" y="0"/>
<anim name="singUP" anim="monster up note" fps="24" loop="false" x="-20" y="50"/>
<anim name="singRIGHT" anim="Monster left note" fps="24" loop="false" x="-30" y="0"/>
<anim name="singLEFT" anim="Monster Right note" fps="24" loop="false" x="-51" y="0"/>
<anim name="singDOWN" anim="monster down" fps="24" loop="false" x="-40" y="-94"/>
</character>
<character y="130" sprite="monster-christmas" icon="monster" color="#F3FF6E">
<anim name="idle" anim="monster idle" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="monster up note" x="-26" y="57" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Monster left note" x="-34" y="10" fps="24" loop="false"/>
<anim name="singLEFT" anim="Monster Right note" x="-41" y="5" fps="24" loop="false"/>
<anim name="singDOWN" anim="monster down" x="-50" y="-92" fps="24" loop="false"/>
</character>
+7 -7
View File
@@ -1,8 +1,8 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" x="0" y="100" color="#F3FF6E">
<anim name="idle" anim="monster idle" fps="24" loop="false" />
<anim name="singUP" anim="monster up note" fps="24" loop="false" x="-20" y="94"/>
<anim name="singRIGHT" anim="Monster left note" fps="24" loop="false" x="-30" y="20"/>
<anim name="singLEFT" anim="Monster Right note" fps="24" loop="false" x="-51" y="30"/>
<anim name="singDOWN" anim="monster down" fps="24" loop="false" x="-50" y="-80"/>
</character>
<character y="100" sprite="monster" icon="monster" color="#F3FF6E">
<anim name="idle" anim="monster idle" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="monster up note" x="-26" y="92" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Monster left note" x="-34" y="10" fps="24" loop="false"/>
<anim name="singLEFT" anim="Monster Right note" x="-41" y="10" fps="24" loop="false"/>
<anim name="singDOWN" anim="monster down" x="-50" y="-87" fps="24" loop="false"/>
</character>
+24 -11
View File
@@ -1,12 +1,25 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" x="-500" y="0" color="#C45EAE">
<anim name="idle" anim="Parent Christmas Idle" fps="24" loop="false"/>
<anim name="singUP" anim="Parent Up Note Dad" fps="24" loop="false" x="-47" y="24"/>
<anim name="singDOWN" anim="Parent Down Note Dad" fps="24" loop="false" x="-31" y="-29"/>
<anim name="singLEFT" anim="Parent Left Note Dad" fps="24" loop="false" x="-30" y="16"/>
<anim name="singRIGHT" anim="Parent Right Note Dad" fps="24" loop="false" x="-1" y="-23"/>
<anim name="singUP-alt" anim="Parent Up Note Mom" fps="24" loop="false" x="-47" y="24"/>
<anim name="singDOWN-alt" anim="Parent Down Note Mom" fps="24" loop="false" x="-30" y="-27"/>
<anim name="singLEFT-alt" anim="Parent Left Note Mom" fps="24" loop="false" x="-30" y="15"/>
<anim name="singRIGHT-alt" anim="Parent Right Note Mom" fps="24" loop="false" x="-1" y="-24"/>
</character>
<character x="-500" sprite="parents-christmas" icon="parents-christmas" color="#C45EAE">
<!--Dad Animations-->
<anim name="idle" anim="Parent Christmas Idle" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="Parent Up Note Dad" x="-47" y="25" fps="24" loop="false"/>
<anim name="singDOWN" anim="Parent Down Note Dad" x="-33" y="-25" fps="24" loop="false"/>
<anim name="singLEFT" anim="Parent Left Note Dad" x="-28" y="20" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Parent Right Note Dad" x="0" y="-20" fps="24" loop="false"/>
<!--Dad Loop Animations-->
<anim name="idle-loop" anim="Parent Christmas Idle" x="0" y="0" fps="24" loop="true" indices="11,11..13"/>
<anim name="singUP-loop" anim="Parent Up Note Dad" x="-47" y="25" fps="24" loop="true" indices="10..13"/>
<anim name="singDOWN-loop" anim="Parent Down Note Dad" x="-33" y="-25" fps="24" loop="true" indices="11..14"/>
<anim name="singLEFT-loop" anim="Parent Left Note Dad" x="-28" y="20" fps="24" loop="true" indices="12..15"/>
<anim name="singRIGHT-loop" anim="Parent Right Note Dad" x="0" y="-20" fps="24" loop="true" indices="12..15"/>
<!--Mom Animations-->
<anim name="singUP-alt" anim="Parent Up Note Mom" x="-47" y="28" fps="24" loop="false"/>
<anim name="singDOWN-alt" anim="Parent Down Note Mom" x="-33" y="-25" fps="24" loop="false"/>
<anim name="singLEFT-alt" anim="Parent Left Note Mom" x="-28" y="19" fps="24" loop="false"/>
<anim name="singRIGHT-alt" anim="Parent Right Note Mom" x="0" y="-19" fps="24" loop="false"/>
<!--Mom Loop Animations-->
<anim name="singUP-alt-loop" anim="Parent Up Note Mom" x="-47" y="28" fps="24" loop="true" indices="10..13"/>
<anim name="singDOWN-alt-loop" anim="Parent Down Note Mom" x="-33" y="-25" fps="24" loop="true" indices="11..14"/>
<anim name="singLEFT-alt-loop" anim="Parent Left Note Mom" x="-28" y="19" fps="24" loop="true" indices="11..14"/>
<anim name="singRIGHT-alt-loop" anim="Parent Right Note Mom" x="0" y="-19" fps="24" loop="true" indices="11..14"/>
</character>
+10 -15
View File
@@ -1,16 +1,11 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" icon="pico" x="115" y="-85" camx="195" camy="360" color="#B7D855">
<!-- Left Animations -->
<anim name="shoot1" anim="Pico shoot 1" fps="24" loop="false" indices="0,1,2,3" />
<anim name="idle1" anim="Pico shoot 1" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
<anim name="shoot2" anim="Pico shoot 2" fps="24" loop="false" indices="0,1,2,3" />
<anim name="idle2" anim="Pico shoot 2" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
<!-- Right Animations-->
<anim name="shoot3" anim="Pico shoot 3" fps="24" loop="false" indices="0,1,2,3" />
<anim name="idle3" anim="Pico shoot 3" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
<anim name="shoot4" anim="Pico shoot 4" fps="24" loop="false" indices="0,1,2,3" />
<anim name="idle4" anim="Pico shoot 4" fps="24" loop="false" indices="4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" />
</character>
<character x="115" y="-85" sprite="pico-speakers" camx="195" camy="360" icon="pico" color="#B7D855">
<anim name="idle1" anim="Pico shoot 1" x="0" y="0" fps="24" loop="false" indices="4..24"/>
<anim name="idle2" anim="Pico shoot 2" x="0" y="0" fps="24" loop="false" indices="4..24"/>
<anim name="idle3" anim="Pico shoot 3" x="0" y="0" fps="24" loop="false" indices="4..24"/>
<anim name="idle4" anim="Pico shoot 4" x="0" y="0" fps="24" loop="false" indices="4..24"/>
<anim name="shoot1" anim="Pico shoot 1" x="0" y="0" fps="24" loop="false" indices="0..3"/>
<anim name="shoot2" anim="Pico shoot 2" x="0" y="0" fps="24" loop="false" indices="0..3"/>
<anim name="shoot3" anim="Pico shoot 3" x="0" y="0" fps="24" loop="false" indices="0..3"/>
<anim name="shoot4" anim="Pico shoot 4" x="0" y="0" fps="24" loop="false" indices="0..3"/>
</character>
+11 -15
View File
@@ -1,16 +1,12 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="true" x="100" y="300" camx="-100" color="#B7D855">
<anim name="idle" anim="Pico Idle Dance" fps="24" loop="false"/>
<!-- Sing Animations -->
<anim name="singLEFT" anim="Pico Note Right0" fps="24" loop="false" x="65" y="9" />
<anim name="singDOWN" anim="Pico Down Note0" fps="24" loop="false" x="200" y="-70" />
<anim name="singUP" anim="pico Up note0" fps="24" loop="false" x="-29" y="27" />
<anim name="singRIGHT" anim="Pico NOTE LEFT0" fps="24" loop="false" x="-68" y="-7" />
<!-- Miss Animations -->
<anim name="singLEFTmiss" anim="Pico Note Right Miss" fps="24" loop="false" x="62" y="64" />
<anim name="singDOWNmiss" anim="Pico Down Note MISS" fps="24" loop="false" x="210" y="-28" />
<anim name="singUPmiss" anim="pico Up note miss" fps="24" loop="false" x="-19" y="67" />
<anim name="singRIGHTmiss" anim="Pico NOTE LEFT miss" fps="24" loop="false" x="-60" y="41" />
</character>
<character x="100" y="300" sprite="pico" flipX="true" camx="-100" icon="pico" color="#B7D855">
<anim name="idle" anim="Pico Idle Dance" x="0" y="0" fps="24" loop="false"/>
<anim name="singLEFT" anim="Pico Note Right0" x="56" y="1" fps="24" loop="false"/>
<anim name="singDOWN" anim="Pico Down Note0" x="193" y="-82" fps="24" loop="false"/>
<anim name="singUP" anim="pico Up note0" x="-31" y="30" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Pico NOTE LEFT0" x="-83" y="-11" fps="24" loop="false"/>
<anim name="singLEFTmiss" anim="Pico Note Right Miss" x="57" y="47" fps="24" loop="false"/>
<anim name="singDOWNmiss" anim="Pico Down Note MISS" x="193" y="-40" fps="24" loop="false"/>
<anim name="singUPmiss" anim="pico Up note miss" x="-19" y="67" fps="24" loop="false"/>
<anim name="singRIGHTmiss" anim="Pico NOTE LEFT miss" x="-77" y="25" fps="24" loop="false"/>
</character>
+6 -6
View File
@@ -1,8 +1,8 @@
<!DOCTYPE codename-engine-character>
<character x="150" icon="senpai" camx="100" y="360" isGF="false" scale="6" camy="87" isPlayer="false" antialiasing="false" sprite="senpai" color="#FFAA6F">
<anim x="0" loop="false" y="0" fps="24" anim="Angry Senpai Idle" name="idle"/>
<anim x="4" loop="false" y="1" fps="24" anim="Angry Senpai LEFT NOTE" name="singLEFT"/>
<anim x="2" loop="false" y="0" fps="24" anim="Angry Senpai DOWN NOTE" name="singDOWN"/>
<anim x="1" loop="false" y="6" fps="24" anim="Angry Senpai UP NOTE" name="singUP"/>
<anim x="0" loop="false" y="0" fps="24" anim="Angry Senpai RIGHT NOTE" name="singRIGHT"/>
<character x="150" y="360" sprite="senpai" scale="6" antialiasing="false" camx="100" camy="87" icon="senpai" color="#FFAA6F" isGF="false">
<anim name="idle" anim="Angry Senpai Idle" x="0" y="0" fps="24" loop="false"/>
<anim name="singLEFT" anim="Angry Senpai LEFT NOTE" x="3" y="0" fps="24" loop="false"/>
<anim name="singDOWN" anim="Angry Senpai DOWN NOTE" x="-1" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="Angry Senpai UP NOTE" x="0" y="6" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Angry Senpai RIGHT NOTE" x="-1" y="0" fps="24" loop="false"/>
</character>
+8 -9
View File
@@ -1,10 +1,9 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" x="150" y="360" antialiasing="false" scale="6" camx="100" camy="87" color="#FFAA6F">
<anim name="idle" anim="Senpai Idle" fps="12" loop="false" x="0" y="0" />
<!-- Offsets are actually multiplied by scale -->
<anim name="singLEFT" anim="SENPAI LEFT NOTE" fps="12" loop="false" x="7" y="0" />
<anim name="singDOWN" anim="SENPAI DOWN NOTE" fps="12" loop="false" x="2" y="0" />
<anim name="singUP" anim="SENPAI UP NOTE" fps="12" loop="false" x="1" y="6" />
<anim name="singRIGHT" anim="SENPAI RIGHT NOTE" fps="12" loop="false" x="0" y="0" />
</character>
<character x="150" y="360" sprite="senpai" scale="6" antialiasing="false" camx="100" camy="87" icon="senpai" color="#FFAA6F" interval="2">
<anim name="danceLeft" anim="Senpai Idle instance" x="0" y="0" fps="24" loop="false" indices="0..15"/>
<anim name="danceRight" anim="Senpai Idle instance" x="0" y="0" fps="24" loop="false" indices="16..31"/>
<anim name="singLEFT" anim="SENPAI LEFT NOTE" x="4" y="0" fps="24" loop="false"/>
<anim name="singDOWN" anim="SENPAI DOWN NOTE" x="0" y="0" fps="24" loop="false"/>
<anim name="singUP" anim="SENPAI UP NOTE" x="0" y="6" fps="24" loop="false"/>
<anim name="singRIGHT" anim="SENPAI RIGHT NOTE" x="0" y="0" fps="24" loop="false"/>
</character>
+7 -9
View File
@@ -1,10 +1,8 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" x="70" y="380" antialiasing="false" scale="6" camx="100" color="#FF3C6E">
<anim name="idle" anim="idle spirit_" fps="24" loop="false" x="0" y="0" />
<!-- Offsets are actually multiplied by scale -->
<anim name="singLEFT" anim="left_" fps="24" loop="false" x="3" y="0" />
<anim name="singDOWN" anim="spirit down_" fps="24" loop="false" x="65" y="65" />
<anim name="singUP" anim="up_" fps="24" loop="false" x="0" y="7" />
<anim name="singRIGHT" anim="right_" fps="24" loop="false" x="0" y="0" />
</character>
<character x="70" y="380" sprite="spirit" scale="6" antialiasing="false" camx="100" icon="spirit" color="#FF3C6E">
<anim name="idle" anim="idle spirit_" x="0" y="1" fps="24" loop="false"/>
<anim name="singLEFT" anim="left_" x="4" y="-1" fps="24" loop="false"/>
<anim name="singDOWN" anim="spirit down_" x="66" y="64" fps="24" loop="false"/>
<anim name="singUP" anim="up_" x="-1" y="8" fps="24" loop="false"/>
<anim name="singRIGHT" anim="right_" x="-2" y="0" fps="24" loop="false"/>
</character>
+8 -8
View File
@@ -1,9 +1,9 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" x="0" y="200" color="#C5995A">
<anim name="danceLeft" anim="spooky dance idle" fps="12" loop="false" x="0" y="0" indices="0,2,6"/>
<anim name="danceRight" anim="spooky dance idle" fps="12" loop="false" x="0" y="0" indices="8,10,12,14"/>
<anim name="singUP" anim="spooky UP NOTE" fps="24" loop="false" x="-20" y="26"/>
<anim name="singLEFT" anim="note sing left" fps="24" loop="false" x="130" y="-10"/>
<anim name="singRIGHT" anim="spooky sing right" fps="24" loop="false" x="-130" y="-14"/>
<anim name="singDOWN" anim="spooky DOWN note" fps="24" loop="false" x="-50" y="-130"/>
</character>
<character y="200" sprite="spooky" icon="spooky" color="#C5995A">
<anim name="danceLeft" anim="spooky dance idle" x="0" y="0" fps="24" loop="false" indices="0..6"/>
<anim name="danceRight" anim="spooky dance idle" x="0" y="0" fps="24" loop="false" indices="8..14"/>
<anim name="singUP" anim="spooky UP NOTE" x="-20" y="26" fps="24" loop="false"/>
<anim name="singLEFT" anim="note sing left" x="119" y="-11" fps="24" loop="false"/>
<anim name="singRIGHT" anim="spooky sing right" x="-150" y="-11" fps="24" loop="false"/>
<anim name="singDOWN" anim="spooky DOWN note" x="-77" y="-136" fps="24" loop="false"/>
</character>
+8 -8
View File
@@ -1,10 +1,10 @@
<!DOCTYPE codename-engine-character>
<character x="0" icon="tankman" y="180" isGF="false" flipX="true" isPlayer="true" sprite="tankman" color="#FFFFFF">
<anim x="0" loop="false" y="0" fps="24" anim="Tankman Idle Dance instance 100" name="idle"/>
<anim x="-1" loop="false" y="-7" fps="24" anim="Tankman Right Note instance 1000" name="singRIGHT"/>
<anim x="98" loop="false" y="-90" fps="24" anim="Tankman DOWN note instance 1000" name="singDOWN"/>
<anim x="24" loop="false" y="56" fps="24" anim="Tankman UP note instance 1000" name="singUP"/>
<anim x="100" loop="false" y="-14" fps="24" anim="Tankman Note Left instance 1000" name="singLEFT"/>
<anim x="98" loop="false" y="17" fps="24" anim="PRETTY GOOD tankman instance 100" name="good!"/>
<anim x="-16" loop="false" y="-9" fps="30" anim="TANKMAN UGH instance 100" name="singUP-alt"/>
<character y="180" sprite="tankman" flipX="true" isPlayer="true" icon="tankman" color="#FFFFFF" isGF="false">
<anim name="idle" anim="Tankman Idle Dance instance 100" x="0" y="0" fps="24" loop="false"/>
<anim name="singRIGHT" anim="Tankman Right Note instance 1000" x="-24" y="-13" fps="24" loop="false"/>
<anim name="singDOWN" anim="Tankman DOWN note instance 1000" x="75" y="-105" fps="24" loop="false"/>
<anim name="singUP" anim="Tankman UP note instance 1000" x="27" y="53" fps="24" loop="false"/>
<anim name="singLEFT" anim="Tankman Note Left instance 1000" x="92" y="-28" fps="24" loop="false"/>
<anim name="good!" anim="PRETTY GOOD tankman instance 100" x="100" y="17" fps="24" loop="false"/>
<anim name="singUP-alt" anim="TANKMAN UGH instance 100" x="-13" y="-9" fps="30" loop="false"/>
</character>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 105 KiB

+164 -159
View File
@@ -1,159 +1,164 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="senpai.png">
<!-- Created with Adobe Animate version 20.0.0.17400 -->
<!-- http://www.adobe.com/products/animate.html -->
<SubTexture name="Angry Senpai DOWN NOTE instance 10000" x="0" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10001" x="0" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10002" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10003" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10004" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10005" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10006" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10007" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10008" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10009" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10010" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10011" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10012" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 10013" x="135" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10000" x="270" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10001" x="270" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10002" x="405" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10003" x="405" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10004" x="540" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10005" x="540" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10006" x="675" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10007" x="675" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10008" x="810" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10009" x="810" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10010" x="810" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10011" x="810" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10012" x="810" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai Idle instance 10013" x="810" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10000" x="945" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10001" x="945" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10002" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10003" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10004" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10005" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10006" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10007" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10008" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10009" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10010" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10011" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10012" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 10013" x="1080" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10000" x="1215" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10001" x="1215" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10002" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10003" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10004" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10005" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10006" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10007" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10008" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10009" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10010" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10011" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10012" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 10013" x="1350" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10000" x="1485" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10001" x="1485" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10002" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10003" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10004" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10005" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10006" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10007" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10008" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10009" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10010" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10011" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10012" x="1620" y="0" width="125" height="164"/>
<SubTexture name="Angry Senpai UP NOTE instance 10013" x="1620" y="0" width="125" height="164"/>
<SubTexture name="SENPAI DOWN NOTE instance 10000" x="1755" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10001" x="1755" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10002" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10003" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10004" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10005" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10006" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10007" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10008" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10009" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10010" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10011" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10012" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 10013" x="1890" y="0" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10000" x="0" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10001" x="0" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10002" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10003" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10004" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10005" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10006" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10007" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10008" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10009" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10010" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10011" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10012" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 10013" x="135" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10000" x="270" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10001" x="270" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10002" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10003" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10004" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10005" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10006" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10007" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10008" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10009" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10010" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10011" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10012" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 10013" x="405" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10000" x="540" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10001" x="540" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10002" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10003" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10004" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10005" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10006" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10007" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10008" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10009" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10010" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10011" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10012" x="675" y="174" width="125" height="163"/>
<SubTexture name="SENPAI UP NOTE instance 10013" x="675" y="174" width="125" height="163"/>
<SubTexture name="Senpai Idle instance 10000" x="810" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10001" x="810" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10002" x="944" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10003" x="944" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10004" x="1078" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10005" x="1078" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10006" x="1212" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10007" x="1212" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10008" x="1346" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10009" x="1346" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10010" x="1480" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10011" x="1480" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10012" x="1614" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10013" x="1748" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10014" x="1882" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10015" x="0" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10016" x="134" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10017" x="268" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10018" x="402" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10019" x="536" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10020" x="670" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10021" x="804" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10022" x="938" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10023" x="1480" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10024" x="1480" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10025" x="1614" y="174" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10026" x="1072" y="347" width="124" height="163"/>
<SubTexture name="Senpai Idle instance 10027" x="1206" y="347" width="124" height="163"/>
</TextureAtlas>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Created with Funkin Packer v0.1.3 DEV https://neeeoo.github.io/funkin-packer/
-->
<TextureAtlas imagePath="senpai-test.png" width="547" height="611" spritePadding="4" borderPadding="4">
<SubTexture name="Angry Senpai DOWN NOTE instance 0000" x="411" y="478" width="59" height="107" frameX="-28" frameY="-39" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0001" x="411" y="478" width="59" height="107" frameX="-28" frameY="-39" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0002" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0003" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0004" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0005" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0006" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0007" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0008" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0009" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0010" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0011" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0012" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai DOWN NOTE instance 0013" x="283" y="479" width="58" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0000" x="417" y="356" width="66" height="112" frameX="-28" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0001" x="417" y="356" width="66" height="112" frameX="-28" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0002" x="478" y="239" width="63" height="112" frameX="-29" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0003" x="478" y="239" width="63" height="112" frameX="-29" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0004" x="409" y="122" width="63" height="113" frameX="-29" frameY="-33" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0005" x="409" y="122" width="63" height="113" frameX="-29" frameY="-33" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0006" x="134" y="4" width="67" height="116" frameX="-29" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0007" x="134" y="4" width="67" height="116" frameX="-29" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0008" x="146" y="244" width="67" height="115" frameX="-29" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0009" x="146" y="244" width="67" height="115" frameX="-29" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0010" x="146" y="244" width="67" height="115" frameX="-29" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0011" x="146" y="244" width="67" height="115" frameX="-29" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0012" x="146" y="244" width="67" height="115" frameX="-29" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai Idle instance 0013" x="146" y="244" width="67" height="115" frameX="-29" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0000" x="205" y="4" width="55" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0001" x="205" y="4" width="55" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0002" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0003" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0004" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0005" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0006" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0007" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0008" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0009" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0010" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0011" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0012" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai LEFT NOTE instance 0013" x="213" y="123" width="57" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0000" x="146" y="363" width="62" height="114" frameX="-32" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0001" x="146" y="363" width="62" height="114" frameX="-32" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0002" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0003" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0004" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0005" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0006" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0007" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0008" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0009" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0010" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0011" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0012" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai RIGHT NOTE instance 0013" x="345" y="123" width="60" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0000" x="4" y="4" width="60" height="122" frameX="-28" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0001" x="4" y="4" width="60" height="122" frameX="-28" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0002" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0003" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0004" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0005" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0006" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0007" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0008" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0009" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0010" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0011" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0012" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Angry Senpai UP NOTE instance 0013" x="68" y="4" width="62" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0000" x="474" y="472" width="63" height="107" frameX="-28" frameY="-39" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0001" x="474" y="472" width="63" height="107" frameX="-28" frameY="-39" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0002" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0003" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0004" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0005" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0006" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0007" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0008" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0009" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0010" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0011" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0012" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI DOWN NOTE instance 0013" x="345" y="479" width="62" height="108" frameX="-29" frameY="-38" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0000" x="264" y="4" width="59" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0001" x="264" y="4" width="59" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0002" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0003" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0004" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0005" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0006" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0007" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0008" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0009" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0010" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0011" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0012" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI LEFT NOTE instance 0013" x="217" y="242" width="61" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0000" x="212" y="363" width="65" height="114" frameX="-32" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0001" x="212" y="363" width="65" height="114" frameX="-32" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0002" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0003" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0004" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0005" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0006" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0007" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0008" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0009" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0010" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0011" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0012" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI RIGHT NOTE instance 0013" x="281" y="361" width="63" height="114" frameX="-31" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0000" x="4" y="130" width="64" height="122" frameX="-28" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0001" x="4" y="130" width="64" height="122" frameX="-28" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0002" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0003" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0004" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0005" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0006" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0007" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0008" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0009" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0010" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0011" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0012" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="SENPAI UP NOTE instance 0013" x="72" y="130" width="66" height="122" frameX="-27" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0000" x="4" y="495" width="66" height="112" frameX="-27" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0001" x="4" y="495" width="66" height="112" frameX="-27" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0002" x="409" y="239" width="65" height="113" frameX="-28" frameY="-33" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0003" x="409" y="239" width="65" height="113" frameX="-28" frameY="-33" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0004" x="409" y="4" width="65" height="114" frameX="-28" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0005" x="409" y="4" width="65" height="114" frameX="-28" frameY="-32" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0006" x="142" y="124" width="67" height="116" frameX="-28" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0007" x="142" y="124" width="67" height="116" frameX="-28" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0008" x="274" y="123" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0009" x="274" y="123" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0010" x="327" y="4" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0011" x="327" y="4" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0012" x="282" y="242" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0013" x="282" y="242" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0014" x="4" y="376" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0015" x="4" y="376" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0016" x="74" y="495" width="66" height="112" frameX="-27" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0017" x="74" y="495" width="66" height="112" frameX="-27" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0018" x="144" y="495" width="66" height="112" frameX="-27" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0019" x="478" y="4" width="65" height="112" frameX="-28" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0020" x="214" y="481" width="65" height="112" frameX="-28" frameY="-34" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0021" x="348" y="361" width="65" height="113" frameX="-28" frameY="-33" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0022" x="476" y="122" width="65" height="113" frameX="-28" frameY="-33" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0023" x="4" y="256" width="67" height="116" frameX="-28" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0024" x="75" y="256" width="67" height="116" frameX="-28" frameY="-30" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0025" x="75" y="376" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0026" x="327" y="4" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0027" x="327" y="4" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0028" x="282" y="242" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0029" x="282" y="242" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0030" x="4" y="376" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
<SubTexture name="Senpai Idle instance 0031" x="4" y="376" width="67" height="115" frameX="-28" frameY="-31" frameWidth="124" frameHeight="163"/>
</TextureAtlas>
+5
View File
@@ -0,0 +1,5 @@
function next(event)
if (!event.playFirst) trace("-");
function postNext(event)
trace(curLine.char + " says: " + curLine.text);
+1 -1
View File
@@ -180,7 +180,7 @@ class Paths
return FlxAtlasFrames.fromAseprite('$key.png', '$key.json');
inline static public function getAssetsRoot():String
return ModsFolder.currentModFolder != null ? '${ModsFolder.modsPath}${ModsFolder.currentModFolder}' : './assets';
return ModsFolder.currentModFolder != null ? '${ModsFolder.modsPath}${ModsFolder.currentModFolder}' : #if (sys && TEST_BUILD) './${Main.pathBack}assets/' #else './assets' #end;
/**
* Gets frames at specified path.
@@ -24,9 +24,19 @@ final class NoteHitEvent extends CancellableEvent {
*/
public var countScore:Bool = true;
/**
* Whenever ratings should be shown or not.
* Whenever ratings (Rating sprite, Digits sprites and Combo sprite) should be shown or not.
*
* NOTE: Whether it's `true` use `displayRating` and `displayCombo` (plus `minDigitDisplay` in the PlayState class) to change what's going to pop up!
*/
public var showRating:Null<Bool> = null;
/**
* Whenever the Rating sprites should be shown or not.
*/
public var displayRating:Bool;
/**
* Whenever the Combo sprite should be shown or not (like old Week 7 patches).
*/
public var displayCombo:Bool;
/**
* Note that has been pressed
*/
@@ -0,0 +1,14 @@
package funkin.backend.scripting.events.dialogue;
/**
* CANCEL this event to prevent continuing with the next dialogue.
*
* **NOTE**: To access the current, past or next lines, use `curLine`, `lastLine` or also `dialogueLines` in the `DialogueCutscene` class (they're globals and can be accessed at any time as long as the Dialogue Cutscene is active)!
*/
final class DialogueNextLineEvent extends CancellableEvent
{
/**
* If the dialogue has just been opened.
*/
public var playFirst:Bool = false;
}
@@ -25,6 +25,9 @@ class CustomShader extends FunkinShader {
var fragCode = Assets.exists(fragShaderPath) ? Assets.getText(fragShaderPath) : null;
var vertCode = Assets.exists(vertShaderPath) ? Assets.getText(vertShaderPath) : null;
fragFileName = fragShaderPath;
vertFileName = vertShaderPath;
path = fragShaderPath+vertShaderPath;
if (fragCode == null && vertCode == null)
+173 -70
View File
@@ -1,15 +1,16 @@
package funkin.backend.shaders;
import flixel.system.FlxAssets.FlxShader;
import haxe.Exception;
import hscript.IHScriptCustomBehaviour;
import flixel.system.FlxAssets.FlxShader;
import lime.utils.Float32Array;
import openfl.display.ShaderParameterType;
import openfl.display.ShaderParameter;
import openfl.display.BitmapData;
import openfl.display.ShaderInput;
import openfl.display.ShaderParameter;
import openfl.display.ShaderParameterType;
import openfl.display3D._internal.GLProgram;
import openfl.display3D._internal.GLShader;
import openfl.utils._internal.Log;
using StringTools;
@:access(openfl.display3D.Context3D)
@@ -20,6 +21,8 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
private static var __instanceFields = Type.getInstanceFields(FunkinShader);
public var glslVer:String = "120";
public var fragFileName:String;
public var vertFileName:String;
/**
* Creates a new shader from the specified fragment and vertex source.
@@ -38,10 +41,135 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
super();
}
var ERROR_POS_REGEX = ~/(\d+):(\d+): (.*)/g;
var ERROR_REGEX = ~/ERROR: (\d+):(\d+): (.*)/g;
var ERROR_REGEX_2 = ~/(\d+)\((\d+)\) : error ([^:]+): (.*)/g;
@:noCompletion private override function __createGLShader(source:String, type:Int):GLShader
{
var gl = __context.gl;
var shader = gl.createShader(type);
gl.shaderSource(shader, source);
gl.compileShader(shader);
var shaderInfoLog = gl.getShaderInfoLog(shader);
var hasInfoLog = shaderInfoLog != null && StringTools.trim(shaderInfoLog) != "";
var compileStatus = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
if (hasInfoLog || compileStatus == 0)
{
var isVertexShader = type == gl.VERTEX_SHADER;
var messageBuf = new StringBuf();
messageBuf.add((compileStatus == 0) ? "Error" : "Info");
if(isVertexShader) {
messageBuf.add(" compiling vertex shader");
if(vertFileName != null && vertFileName.length > 0) {
messageBuf.add(" (" + vertFileName + ")");
}
} else {
messageBuf.add(" compiling fragment shader");
if(fragFileName != null && fragFileName.length > 0) {
messageBuf.add(" (" + fragFileName + ")");
}
}
messageBuf.add("\n");
var errorPositions = [];
var regex = null;
var tmp = shaderInfoLog;
if(shaderInfoLog.contains(" : error ")) {
regex = ERROR_REGEX_2;
while(regex.match(tmp)) {
errorPositions.push(new ShaderErrorPosition(regex.matched(2), regex.matched(1), regex.matched(4)));
tmp = regex.matchedRight();
}
} else if(shaderInfoLog.contains("ERROR: ")) {
regex = ERROR_REGEX;
while(regex.match(tmp)) {
errorPositions.push(new ShaderErrorPosition(regex.matched(2), regex.matched(1), regex.matched(3)));
tmp = regex.matchedRight();
}
} else {
regex = ERROR_POS_REGEX;
while(regex.match(tmp)) {
errorPositions.push(new ShaderErrorPosition(regex.matched(2), regex.matched(1), regex.matched(3)));
tmp = regex.matchedRight();
}
}
var splitSource = source.split("\n");
for(error in errorPositions) {
messageBuf.add("ERROR: Line: " + error.line);
if(error.column > 0) {
messageBuf.add(", Column: " + error.column);
}
messageBuf.add(", " + error.message);
if(error.line < splitSource.length) {
messageBuf.add("\nLine: ");
messageBuf.add(splitSource[error.line-1].trim());
}
messageBuf.add("\n\n");
}
var hasErrorPosition = errorPositions.length > 0;
if(hasErrorPosition) {
messageBuf.add("Raw shader info log:\n");
}
messageBuf.add(shaderInfoLog);
messageBuf.add("\n");
messageBuf.add(source);
var message = messageBuf.toString();
if (compileStatus == 0) Log.error(message);
else if (hasInfoLog) Log.debug(message);
}
return shader;
}
@:noCompletion private override function __createGLProgram(vertexSource:String, fragmentSource:String):GLProgram
{
var gl = __context.gl;
var vertexShader = __createGLShader(vertexSource, gl.VERTEX_SHADER);
var fragmentShader = __createGLShader(fragmentSource, gl.FRAGMENT_SHADER);
var program = gl.createProgram();
// Fix support for drivers that don't draw if attribute 0 is disabled
for (param in __paramFloat)
{
if (param.name.indexOf("Position") > -1 && StringTools.startsWith(param.name, "openfl_"))
{
gl.bindAttribLocation(program, 0, param.name);
break;
}
}
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);
if (gl.getProgramParameter(program, gl.LINK_STATUS) == 0)
{
var messageBuf = new StringBuf();
messageBuf.add("Unable to initialize the shader program");
messageBuf.add("\n");
messageBuf.add(gl.getProgramInfoLog(program));
var message = messageBuf.toString();
Log.error(message);
}
return program;
}
var glRawFragmentSource:String;
var glRawVertexSource:String;
@:noCompletion override private function set_glFragmentSource(value:String):String
{
if(value == null)
value = ShaderTemplates.defaultFragmentSource;
glRawFragmentSource = value;
value = value.replace("#pragma header", ShaderTemplates.fragHeader).replace("#pragma body", ShaderTemplates.fragBody);
if (value != __glFragmentSource)
{
@@ -55,6 +183,7 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
{
if(value == null)
value = ShaderTemplates.defaultVertexSource;
glRawVertexSource = value;
value = value.replace("#pragma header", ShaderTemplates.vertHeader).replace("#pragma body", ShaderTemplates.vertBody);
if (value != __glVertexSource)
{
@@ -83,20 +212,24 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
if (__context != null && program == null)
{
var prefix = '#version ${glslVer}\n';
var prefixBuf = new StringBuf();
prefixBuf.add('#version ${glslVer}\n');
var gl = __context.gl;
prefix += "#ifdef GL_ES
"
+ (precisionHint == FULL ? "#ifdef GL_FRAGMENT_PRECISION_HIGH
precision highp float;
#else
precision mediump float;
#endif" : "precision lowp float;")
+ "
#endif
";
prefixBuf.add("#ifdef GL_ES\n");
if (precisionHint == FULL) {
prefixBuf.add("#ifdef GL_FRAGMENT_PRECISION_HIGH\n");
prefixBuf.add("precision highp float;\n");
prefixBuf.add("#else\n");
prefixBuf.add("precision mediump float;\n");
prefixBuf.add("#endif\n");
} else {
prefixBuf.add("precision lowp float;\n");
}
prefixBuf.add("#endif\n");
var prefix = prefixBuf.toString();
var vertex = prefix + glVertexSource;
var fragment = prefix + glFragmentSource;
@@ -110,9 +243,7 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
else
{
program = __context.createProgram(GLSL);
program.__glProgram = __createGLProgram(vertex, fragment);
__context.__programs.set(id, program);
}
@@ -120,56 +251,35 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
{
glProgram = program.__glProgram;
for (input in __inputBitmapData)
{
for (input in __inputBitmapData) {
if (input.__isUniform)
{
if (input.__isUniform) {
input.index = gl.getUniformLocation(glProgram, input.name);
}
else
{
} else {
input.index = gl.getAttribLocation(glProgram, input.name);
}
}
for (parameter in __paramBool)
{
if (parameter.__isUniform)
{
for (parameter in __paramBool) {
if (parameter.__isUniform) {
parameter.index = gl.getUniformLocation(glProgram, parameter.name);
}
else
{
} else {
parameter.index = gl.getAttribLocation(glProgram, parameter.name);
}
}
for (parameter in __paramFloat)
{
if (parameter.__isUniform)
{
for (parameter in __paramFloat) {
if (parameter.__isUniform) {
parameter.index = gl.getUniformLocation(glProgram, parameter.name);
}
else
{
} else {
parameter.index = gl.getAttribLocation(glProgram, parameter.name);
}
}
for (parameter in __paramInt)
{
if (parameter.__isUniform)
{
for (parameter in __paramInt) {
if (parameter.__isUniform) {
parameter.index = gl.getUniformLocation(glProgram, parameter.name);
}
else
{
} else {
parameter.index = gl.getAttribLocation(glProgram, parameter.name);
}
}
@@ -207,7 +317,6 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
{
var input = new ShaderInput<BitmapData>();
input.name = name;
@:privateAccess
input.__isUniform = isUniform;
__inputBitmapData.push(input);
@@ -274,15 +383,10 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
case BOOL, BOOL2, BOOL3, BOOL4:
var parameter = new ShaderParameter<Bool>();
parameter.name = name;
@:privateAccess
parameter.type = parameterType;
@:privateAccess
parameter.__arrayLength = arrayLength;
@:privateAccess
parameter.__isBool = true;
@:privateAccess
parameter.__isUniform = isUniform;
@:privateAccess
parameter.__length = length;
__paramBool.push(parameter);
@@ -297,17 +401,11 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
case INT, INT2, INT3, INT4:
var parameter = new ShaderParameter<Int>();
parameter.name = name;
@:privateAccess
parameter.type = parameterType;
@:privateAccess
parameter.__arrayLength = arrayLength;
@:privateAccess
parameter.__isInt = true;
@:privateAccess
parameter.__isUniform = isUniform;
@:privateAccess
parameter.__length = length;
@:privateAccess
__paramInt.push(parameter);
Reflect.setField(__data, name, parameter);
try{Reflect.setField(this, name, parameter);} catch(e) {}
@@ -315,19 +413,13 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
default:
var parameter = new ShaderParameter<Float>();
parameter.name = name;
@:privateAccess
parameter.type = parameterType;
@:privateAccess
parameter.__arrayLength = arrayLength;
#if lime
@:privateAccess
if (arrayLength > 0) parameter.__uniformMatrix = new Float32Array(arrayLength * arrayLength);
#end
@:privateAccess
parameter.__isFloat = true;
@:privateAccess
parameter.__isUniform = isUniform;
@:privateAccess
parameter.__length = length;
__paramFloat.push(parameter);
@@ -394,7 +486,6 @@ class FunkinShader extends FlxShader implements IHScriptCustomBehaviour {
var cl:String = Type.getClassName(Type.getClass(field));
// cant do "field is ShaderInput" for some reason
if (cl.startsWith("openfl.display.ShaderParameter")) {
@:privateAccess
if (field.__length <= 1) {
if ((val is Array))
return field.value = val;
@@ -546,4 +637,16 @@ class ShaderTypeException extends Exception {
this.name = name;
super('ShaderTypeException - Tried to set the shader uniform "${name}" as a ${Type.getClassName(has)}, but the shader uniform is a ${Std.string(want)}.');
}
}
class ShaderErrorPosition {
public var column:Int;
public var line:Int;
public var message:String;
public function new(line:String, column:String, message:String) {
this.line = Std.parseInt(line);
this.column = Std.parseInt(column);
this.message = message;
}
}
+26 -10
View File
@@ -459,6 +459,22 @@ class PlayState extends MusicBeatState
* Group containing all of the combo sprites.
*/
public var comboGroup:RotatingSpriteGroup;
/**
* Whenever the Rating sprites should be shown or not.
*
* NOTE: This is just a default value for the final value, the final value can be changed through notes hit events.
*/
public var defaultDisplayRating:Bool = true;
/**
* Whenever the Combo sprite should be shown or not (like old Week 7 patches).
*
* NOTE: This is just a default value for the final value, the final value can be changed through notes hit events.
*/
public var defaultDisplayCombo:Bool = false;
/**
* Minimum Combo Count to display the combo digits. Anything less than 0 means it won't be shown.
*/
public var minDigitDisplay:Int = 10;
/**
* Array containing all of the note types names.
*/
@@ -1655,9 +1671,9 @@ class PlayState extends MusicBeatState
var event:NoteHitEvent;
if (strumLine != null && !strumLine.cpu)
event = EventManager.get(NoteHitEvent).recycle(false, !note.isSustainNote, !note.isSustainNote, note, strumLine.characters, true, note.noteType, note.animSuffix.getDefault(note.strumID < strumLine.members.length ? strumLine.members[note.strumID].animSuffix : strumLine.animSuffix), "game/score/", "", note.strumID, score, note.isSustainNote ? null : accuracy, 0.023, daRating, Options.splashesEnabled && !note.isSustainNote && daRating == "sick");
event = EventManager.get(NoteHitEvent).recycle(false, !note.isSustainNote, !note.isSustainNote, null, defaultDisplayRating, defaultDisplayCombo, note, strumLine.characters, true, note.noteType, note.animSuffix.getDefault(note.strumID < strumLine.members.length ? strumLine.members[note.strumID].animSuffix : strumLine.animSuffix), "game/score/", "", note.strumID, score, note.isSustainNote ? null : accuracy, 0.023, daRating, Options.splashesEnabled && !note.isSustainNote && daRating == "sick");
else
event = EventManager.get(NoteHitEvent).recycle(false, false, false, note, strumLine.characters, false, note.noteType, note.animSuffix.getDefault(note.strumID < strumLine.members.length ? strumLine.members[note.strumID].animSuffix : strumLine.animSuffix), "game/score/", "", note.strumID, 0, null, 0, daRating, false);
event = EventManager.get(NoteHitEvent).recycle(false, false, false, null, defaultDisplayRating, defaultDisplayCombo, note, strumLine.characters, false, note.noteType, note.animSuffix.getDefault(note.strumID < strumLine.members.length ? strumLine.members[note.strumID].animSuffix : strumLine.animSuffix), "game/score/", "", note.strumID, 0, null, 0, daRating, false);
event.deleteNote = !note.isSustainNote; // work around, to allow sustain notes to be deleted
event = scripts.event(strumLine != null && !strumLine.cpu ? "onPlayerHit" : "onDadHit", event);
strumLine.onHit.dispatch(event);
@@ -1676,7 +1692,8 @@ class PlayState extends MusicBeatState
if (event.showRating || (event.showRating == null && event.player))
{
displayCombo(event);
displayRating(event.rating, event);
if (event.displayRating)
displayRating(event.rating, event);
ratingNum += 1;
}
}
@@ -1735,14 +1752,12 @@ class PlayState extends MusicBeatState
}
public function displayCombo(?evt:NoteHitEvent = null):Void {
var hasEvent = evt != null;
var pre:String = hasEvent ? evt.ratingPrefix : "";
var suf:String = hasEvent ? evt.ratingSuffix : "";
if (minDigitDisplay >= 0 && (combo == 0 || combo >= minDigitDisplay)) {
var hasEvent = evt != null;
var pre:String = hasEvent ? evt.ratingPrefix : "";
var suf:String = hasEvent ? evt.ratingSuffix : "";
var separatedScore:String = Std.string(combo).addZeros(3);
if (combo == 0 || combo >= 10) {
if (combo >= 10) {
if (evt.displayCombo) {
var comboSpr:FlxSprite = comboGroup.recycleLoop(FlxSprite).loadAnimatedGraphic(Paths.image('${pre}combo${suf}'));
comboSpr.resetSprite(comboGroup.x, comboGroup.y);
comboSpr.acceleration.y = 600;
@@ -1764,6 +1779,7 @@ class PlayState extends MusicBeatState
});
}
var separatedScore:String = Std.string(combo).addZeros(3);
for (i in 0...separatedScore.length)
{
var numScore:FlxSprite = comboGroup.recycleLoop(FlxSprite).loadAnimatedGraphic(Paths.image('${pre}num${separatedScore.charAt(i)}${suf}'));
@@ -138,8 +138,8 @@ class DialogueCutscene extends Cutscene {
public var canProceed:Bool = true;
public function next(playFirst:Bool = false) {
var event = EventManager.get(DynamicEvent).recycle(playFirst);
dialogueScript.call("next", [playFirst]);
var event = EventManager.get(DialogueNextLineEvent).recycle(playFirst);
dialogueScript.call("next", [event]);
if(event.cancelled || !canProceed) return;
if ((curLine = dialogueLines.shift()) == null) {
@@ -154,7 +154,7 @@ class DialogueCutscene extends Cutscene {
}
if (curLine.callback != null)
dialogueScript.call(curLine.callback, [playFirst]);
dialogueScript.call(curLine.callback, [event.playFirst]);
for (k=>c in charMap)
if (k != curLine.char)
@@ -167,8 +167,8 @@ class DialogueCutscene extends Cutscene {
dialogueBox.popupChar(char, force);
}
var finalSuffix:String = playFirst && dialogueBox.hasAnimation(curLine.bubble + "-firstOpen") ? "-firstOpen" : dialogueBox.hasAnimation(curLine.bubble + "-open") ? "-open" : "";
dialogueBox.playBubbleAnim(curLine.bubble, finalSuffix, curLine.text, curLine.format, curLine.speed, curLine.nextSound, curLine.textSound != null ? [curLine.textSound] : null, finalSuffix == "-firstOpen" || finalSuffix == "-open", !playFirst);
var finalSuffix:String = event.playFirst && dialogueBox.hasAnimation(curLine.bubble + "-firstOpen") ? "-firstOpen" : dialogueBox.hasAnimation(curLine.bubble + "-open") ? "-open" : "";
dialogueBox.playBubbleAnim(curLine.bubble, finalSuffix, curLine.text, curLine.format, curLine.speed, curLine.nextSound, curLine.textSound != null ? [curLine.textSound] : null, finalSuffix == "-firstOpen" || finalSuffix == "-open", !event.playFirst);
if(curLine.playSound != null) curLine.playSound.play();
if(curLine.changeMusic != null) {
@@ -178,7 +178,7 @@ class DialogueCutscene extends Cutscene {
curMusic.fadeIn(1, 0, curMusic.volume);
} else if(curLine.musicVolume != null && curMusic != null) curMusic.volume = curLine.musicVolume;
dialogueScript.call("postNext", [playFirst]);
dialogueScript.call("postNext", [event]);
}
public override function close() {
+89
View File
@@ -0,0 +1,89 @@
package openfl.display;
import openfl.utils.ByteArray;
#if !openfl_debug
@:fileXml('tags="haxe,release"')
@:noDebug
#end
class GraphicsShader extends Shader
{
@:glVertexHeader("attribute float openfl_Alpha;
attribute vec4 openfl_ColorMultiplier;
attribute vec4 openfl_ColorOffset;
attribute vec4 openfl_Position;
attribute vec2 openfl_TextureCoord;
varying float openfl_Alphav;
varying vec4 openfl_ColorMultiplierv;
varying vec4 openfl_ColorOffsetv;
varying vec2 openfl_TextureCoordv;
uniform mat4 openfl_Matrix;
uniform bool openfl_HasColorTransform;
uniform vec2 openfl_TextureSize;")
@:glVertexBody("openfl_Alphav = openfl_Alpha;
openfl_TextureCoordv = openfl_TextureCoord;
if (openfl_HasColorTransform) {
openfl_ColorMultiplierv = openfl_ColorMultiplier;
openfl_ColorOffsetv = openfl_ColorOffset / 255.0;
}
gl_Position = openfl_Matrix * openfl_Position;")
@:glVertexSource("#pragma header
void main(void) {
#pragma body
}")
@:glFragmentHeader("varying float openfl_Alphav;
varying vec4 openfl_ColorMultiplierv;
varying vec4 openfl_ColorOffsetv;
varying vec2 openfl_TextureCoordv;
uniform bool openfl_HasColorTransform;
uniform vec2 openfl_TextureSize;
uniform sampler2D bitmap;")
@:glFragmentBody("vec4 color = texture2D (bitmap, openfl_TextureCoordv);
if (color.a == 0.0) {
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
} else if (openfl_HasColorTransform) {
color = vec4(color.rgb / color.a, color.a);
mat4 colorMultiplier = mat4(0);
colorMultiplier[0][0] = openfl_ColorMultiplierv.x;
colorMultiplier[1][1] = openfl_ColorMultiplierv.y;
colorMultiplier[2][2] = openfl_ColorMultiplierv.z;
colorMultiplier[3][3] = 1.0; // openfl_ColorMultiplierv.w;
color = clamp(openfl_ColorOffsetv + (color * colorMultiplier), 0.0, 1.0);
if (color.a > 0.0) {
gl_FragColor = vec4(color.rgb * color.a * openfl_Alphav, color.a * openfl_Alphav);
} else {
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
}
} else {
gl_FragColor = color * openfl_Alphav;
}")
#if emscripten
@:glFragmentSource("#pragma header
void main(void) {
#pragma body
gl_FragColor = gl_FragColor.bgra;
}")
#else
@:glFragmentSource("#pragma header
void main(void) {
#pragma body
}")
#end
public function new(code:ByteArray = null)
{
super(code);
}
}