Add more stuff from the OG game and more PART 1 (#228)

* senpai fucking dies

* final flash fadeout

* made cutscene not play on restart

* winter horrorland + fixes

* fix for pixel perfect shader

* trail + fixes

* better + shaking

last update about it, i swear

* never fucking mind + repacks + accuracy

* more fixes + chromatic aberration

* i hate how pixel shader fucks everything up

* aberration in the cutscene & its cool twitch

* camera beats when twitching

* tank stuff pt1

now the cutscenes look 99% like og (still gotta freeze the stage animated sprites n stuff)
PS: Deleting the lipSycn function in ugh and guns cutscenes cause its not needed + sometimes breaks the animations so lets just leave it in stress only like it was in og

* week 5 completed + retrocompatibility with altanim

now chrima parents work

* philly train

* gameplay shaders option

better adding it now

* tank stuff pt2

* blue balled text (death counter)

* winter horrorland better rework WIP

colored vignette usable by everyone (you can change its color, amount and strength)
wip cuz i wanna edit the amount/strength based on the zoom, i'll do later, now i dont have time gotta do christmas irl stuff yay

* winter horrorland better rework completed

* seen cutscene variable

finally

* even better cutscenes

* oops

* tank stuff pt3

* tank stuff pt4

WIP running tanks

Co-Authored-By: Ne_Eo <NeeEoo@users.noreply.github.com>

* tankstuff pt4.5

imma check tmr why do some tankmen spawn too much up

* tank stuff pt4.75

* dumb

* tank stuff pt 4.9

* type on xml sprite type fix and more

Co-Authored-By: Ne_Eo <NeeEoo@users.noreply.github.com>

---------

Co-authored-by: Ne_Eo <NeeEoo@users.noreply.github.com>
Co-authored-by: lunarcleint <88809950+lunarcleint@users.noreply.github.com>
This commit is contained in:
⍚~Nex
2024-02-04 00:54:00 -07:00
committed by GitHub
co-authored by Ne_Eo lunarcleint
parent a71a02ea94
commit 6e23da8e86
85 changed files with 1085 additions and 347 deletions
+1 -3
View File
@@ -4,9 +4,7 @@
### Mods created with alpha versions of Codename may not be compatible with the release version
Known issues in the alpha:
- Some options are missing
- Week 5 has no monster animation
- Week 6 still has no dialogue
- Week 7 has no running tankman
- Week 6 still have no dialogue
Build instructions are below. Press TAB on the main menu to switch mods.
+1 -1
View File
@@ -1,5 +1,5 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf">
<character isPlayer="true" flipX="true" x="0" y="350" icon="bf" camy="55">
<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"/>
+1 -1
View File
@@ -9,5 +9,5 @@
<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="0" y="0"/>
<anim name="bfCatch" anim="BF catches GF" fps="24" loop="false" x="6" y="88"/>
</character>
+1 -1
View File
@@ -1,5 +1,5 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="true" flipX="true" x="200" y="570" antialiasing="false" scale="6" camx="-200" camy="-20" gameOverChar="bf-pixel-dead">
<character isPlayer="true" flipX="true" x="200" y="570" antialiasing="false" scale="6" gameOverChar="bf-pixel-dead">
<anim name="idle" anim="BF IDLE" fps="24" loop="false" x="0" y="0" />
<!-- Offsets are actually multiplied by scale -->
+1 -1
View File
@@ -1,5 +1,5 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" icon="pico" x="-50" y="-120" camx="195" camy="365">
<character isPlayer="false" flipX="false" icon="pico" x="115" y="-85" camx="195" camy="360">
<!-- 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" />
+7 -9
View File
@@ -1,10 +1,8 @@
<!DOCTYPE codename-engine-character>
<character sprite="senpai" isPlayer="false" flipX="false" x="150" y="360" antialiasing="false" scale="6" icon="senpai" camx="100">
<anim name="idle" anim="Angry Senpai Idle" fps="24" loop="false" x="0" y="0" />
<!-- Offsets are actually multiplied by scale -->
<anim name="singLEFT" anim="Angry Senpai LEFT NOTE" fps="24" loop="false" x="7" y="0" />
<anim name="singDOWN" anim="Angry Senpai DOWN NOTE" fps="24" loop="false" x="2" y="0" />
<anim name="singUP" anim="Angry Senpai UP NOTE" fps="24" loop="false" x="1" y="6" />
<anim name="singRIGHT" anim="Angry Senpai RIGHT NOTE" fps="24" loop="false" x="0" y="0" />
</character>
<character x="150" icon="senpai" camx="100" y="360" isGF="false" scale="6" camy="87" isPlayer="false" antialiasing="false" sprite="senpai">
<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>
+1 -1
View File
@@ -1,5 +1,5 @@
<!DOCTYPE codename-engine-character>
<character isPlayer="false" flipX="false" x="150" y="360" antialiasing="false" scale="6" camx="100">
<character isPlayer="false" flipX="false" x="150" y="360" antialiasing="false" scale="6" camx="100" camy="87">
<anim name="idle" anim="Senpai Idle" fps="12" loop="false" x="0" y="0" />
<!-- Offsets are actually multiplied by scale -->
+16
View File
@@ -0,0 +1,16 @@
import flixel.addons.effects.FlxTrail;
var self = this;
var trail:FlxTrail;
function postCreate() {
trail = new FlxTrail(self, null, 4, 24, 0.3, 0.069);
}
var toAdd:Bool = true; // Using this just to make sure
function update(elpased) {
if(toAdd) {
toAdd = false;
PlayState.instance.insert(PlayState.instance.members.indexOf(self), trail);
disableScript();
}
}
+5 -5
View File
@@ -7,23 +7,23 @@
<!-- ONLY FOR INSTANCES WITH LOW MEMORY MODE DISABLED -->
<high-memory>
<!-- DANCERS !-->
<sprite name="dancer1" x="130" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
<sprite name="dancer1" x="130" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat">
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
</sprite>
<sprite name="dancer2" x="500" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
<sprite name="dancer2" x="500" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat">
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
</sprite>
<sprite name="dancer3" x="870" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
<sprite name="dancer3" x="870" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat">
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
</sprite>
<sprite name="dancer4" x="1240" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
<sprite name="dancer4" x="1240" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat">
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
</sprite>
<sprite name="dancer5" x="1610" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55">
<sprite name="dancer5" x="1610" y="80" sprite="limoDancer" scroll="0.4" zoomfactor="0.55" type="onbeat">
<anim name="danceLeft" anim="bg dancer sketch PINK" loop="false" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14" />
<anim name="danceRight" anim="bg dancer sketch PINK" loop="false" indices="15,16,17,18,19,20,21,22,23,24,25,26,27,28,29" />
</sprite>
+24
View File
@@ -0,0 +1,24 @@
var idk:CustomShader = null;
function create() {
if(!Options.gameplayShaders) {
disableScript();
return;
}
idk = new CustomShader('coloredVignette');
idk.color = [1, 0, 0];
camGame.addShader(idk);
}
var adder:Int = 0;
function postUpdate(elapsed:Float) { // Doing it like this so at least the red bump doesnt look too much instant
var toAdd:Int = lerp(adder, 0, elapsed);
idk.amount = camGame.zoom * camHUD.zoom + toAdd;
idk.strength = (camGame.zoom - camHUD.zoom + toAdd) * 5;
if(adder > 0) adder -= 0.0001 * camZoomingStrength;
}
function beatHit() {
if(Options.camZoomOnBeat && camZooming && FlxG.camera.zoom < maxCamZoom && curBeat % camZoomingInterval == 0)
adder = 0.05 * camZoomingStrength;
}
+4 -3
View File
@@ -3,17 +3,18 @@
<sprite name="bg" x="-1000" y="-500" sprite="bgWalls" scroll="0.2"/>
<high-memory>
<sprite name="upperBoppers" x="-240" y="-90" sprite="upperBop" scroll="0.2" />
<sprite name="upperBoppers" x="-240" y="-90" sprite="upperBop" scroll="0.2" type="onbeat"/>
</high-memory>
<sprite name="bgEscalator" x="-1100" y="-600" sprite="bgEscalator" scroll="0.3" scale="0.9" updateHitbox="true"/>
<sprite name="tree" x="370" y="-250" sprite="christmasTree" scroll="0.4"/>
<sprite name="bottomBoppers" x="-300" y="140" sprite="bottomBop" scroll="0.9"/>
<sprite name="bottomBoppers" x="-300" y="140" sprite="bottomBop" scroll="0.9" type="onbeat" />
<sprite name="fgSnow" x="-600" y="700" sprite="fgSnow"/>
<high-memory>
<sprite name="santa" x="-840" y="150" sprite="santa"/>
<sprite name="santa" x="-840" y="150" sprite="santa" type="onbeat"/>
</high-memory>
<girlfriend />
<dad />
<boyfriend x="870" camyoffset="-200"/>
+1
View File
@@ -19,6 +19,7 @@ var trainCooldown:Int = 0;
function create() {
// defaultCamZoom = 0.5;
phillyTrain.moves = true; // Def value false in funkinsprite
light.color = colors[curColor];
trainSound = FlxG.sound.load(Paths.sound("train_passes"));
}
+5
View File
@@ -1,4 +1,9 @@
function create() {
importScript("data/scripts/pixel");
isSpooky = true;
// Make transition work between school types
if(PlayState.smoothTransitionData?.stage == "school") PlayState.smoothTransitionData.stage = curStage;
disableScript();
}
+6 -4
View File
@@ -1,5 +1,5 @@
<!DOCTYPE codename-engine-stage>
<stage zoom="1" folder="stages/school/" >
<stage zoom="1" folder="stages/school/">
<sprite name="bgSky" x="-12" y="0" sprite="weebSky"
antialiasing="false" scale="6" scroll="0.1" updateHitbox="true"/>
@@ -11,10 +11,12 @@
<sprite name="fgTrees" x="-30" y="130" sprite="weebTreesBack"
antialiasing="false" scale="4.8" scroll="0.9" updateHitbox="true" type="loop"/>
antialiasing="false" scale="4.797" scroll="0.9" updateHitbox="true" type="loop"/>
<sprite name="bgTrees" x="-1180" y="-1600" sprite="weebTrees"
antialiasing="false" scale="8.4" scroll="0.85" updateHitbox="true" type="loop"/>
<sprite name="bgTrees" x="-590" y="-800" sprite="weebTrees" antialiasing="false" scale="5.102" scroll="0.85" updateHitbox="true" type="loop">
<!-- Frame 19 isnt used in og -->
<anim name="trees" anim="trees" indices="0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19" fps="12" loop="true"/>
</sprite>
<high-memory>
<sprite name="treeLeaves" x="-200" y="-40" sprite="petals"
+7
View File
@@ -6,4 +6,11 @@ function update(elapsed:Float) {
tankRolling.angle = tankAngle - 90 + 15;
tankRolling.x = 400 + (1500 * Math.cos(Math.PI / 180 * (1 * tankAngle + 180)));
tankRolling.y = 1300 + (1100 * Math.sin(Math.PI / 180 * (1 * tankAngle + 180)));
}
function onPostCountdown(event) {
if(!playCutscenes || event.sprite == null) return;
var lastIndex:Int = members.indexOf(event.sprite);
remove(event.sprite);
insert(lastIndex + 4, event.sprite);
}
+7 -7
View File
@@ -15,7 +15,7 @@
<high-memory>
<sprite name="smokeLeft" x="-200" y="-100" sprite="smokeLeft" scroll="0.4" zoomfactor="0.6"/>
<sprite name="smokeRight" x="1100" y="-100" sprite="smokeRight" scroll="0.4" zoomfactor="0.6"/>
<sprite name="tankWatchtower" x="100" y="50" sprite="tankWatchtower" scroll="0.5" onBeat="true" zoomfactor="0.7"/>
<sprite name="tankWatchtower" x="100" y="50" sprite="tankWatchtower" scroll="0.5" type="onbeat" beatInterval="2" zoomfactor="0.7"/>
</high-memory>
<sprite name="tankRolling" x="300" y="300" sprite="tankRolling" scroll="0.5" zoomfactor="0.8" type="loop"/>
<sprite name="tankGround" x="-420" y="-150" sprite="tankGround" scale="1.15" updateHitbox="true" zoomfactor="1.0"/>
@@ -28,11 +28,11 @@
<!-- FOREGROUND TANKMANS -->
<high-memory>
<sprite name="tank0" x="-500" y="650" sprite="tank0" scrollx="1.7" scrolly="1.5" onBeat="true" zoomfactor="1.25"/>
<sprite name="tank1" x="-300" y="750" sprite="tank1" scrollx="2" scrolly="0.2" onBeat="true" zoomfactor="1.25"/>
<sprite name="tank2" x="450" y="940" sprite="tank2" scroll="1.5" onBeat="true" zoomfactor="1.25"/>
<sprite name="tank4" x="1300" y="900" sprite="tank4" scroll="1.5" onBeat="true" zoomfactor="1.25"/>
<sprite name="tank5" x="1620" y="700" sprite="tank5" scroll="1.5" onBeat="true" zoomfactor="1.25"/>
<sprite name="tank3" x="1300" y="1200" sprite="tank3" scrollx="3.5" scrolly="2.5" onBeat="true" zoomfactor="1.25"/>
<sprite name="tank0" x="-500" y="650" sprite="tank0" scrollx="1.7" scrolly="1.5" type="onbeat" beatInterval="2" zoomfactor="1.25"/>
<sprite name="tank1" x="-300" y="750" sprite="tank1" scrollx="2" scrolly="0.2" type="onbeat" beatInterval="2" zoomfactor="1.25"/>
<sprite name="tank2" x="450" y="940" sprite="tank2" scroll="1.5" type="onbeat" beatInterval="2" zoomfactor="1.25"/>
<sprite name="tank4" x="1300" y="900" sprite="tank4" scroll="1.5" type="onbeat" beatInterval="2" zoomfactor="1.25"/>
<sprite name="tank5" x="1620" y="700" sprite="tank5" scroll="1.5" type="onbeat" beatInterval="2" zoomfactor="1.25"/>
<sprite name="tank3" x="1300" y="1200" sprite="tank3" scrollx="3.5" scrolly="2.5" type="onbeat" beatInterval="2" zoomfactor="1.25"/>
</high-memory>
</stage>
+1 -1
View File
@@ -2,5 +2,5 @@
<week name="RED SNOW" chars="parents-christmas,bf,gf" sprite="week5">
<song>Cocoa</song>
<song>Eggnog</song>
<song>Winter Horrorland</song>
<song hide="true">Winter Horrorland</song>
</week>
Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Created with Funkin Packer v0.1.3 https://neeeoo.github.io/funkin-packer/
-->
<TextureAtlas imagePath="senpaiCrazy.png" width="294" height="443">
<SubTexture name="Senpai Pre Explosion instance 10000" x="157" y="110" width="67" height="115" frameX="-48" frameY="-32" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10001" x="120" y="228" width="69" height="112" frameX="-48" frameY="-36" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10002" x="120" y="228" width="69" height="112" frameX="-48" frameY="-36" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10003" x="227" y="108" width="62" height="120" frameX="-50" frameY="-27" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10004" x="227" y="108" width="62" height="120" frameX="-50" frameY="-27" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10005" x="227" y="108" width="62" height="120" frameX="-50" frameY="-27" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10006" x="58" y="216" width="59" height="122" frameX="-51" frameY="-24" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10007" x="58" y="216" width="59" height="122" frameX="-51" frameY="-24" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10008" x="1" y="216" width="54" height="125" frameX="-52" frameY="-24" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10009" x="192" y="231" width="50" height="97" frameX="-53" frameY="-51" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10010" x="192" y="231" width="50" height="97" frameX="-53" frameY="-51" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10011" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10012" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10013" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10014" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10015" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10016" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10017" x="245" y="231" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10018" x="245" y="231" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10019" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10020" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10021" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10022" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10023" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10024" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10025" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10026" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10027" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10028" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10029" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10030" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10031" x="245" y="231" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10032" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10033" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10034" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10035" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10036" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10037" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10038" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10039" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10040" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10041" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10042" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10043" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10044" x="245" y="231" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10045" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10046" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10047" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10048" x="245" y="231" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10049" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10050" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10051" x="245" y="231" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10052" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10053" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10054" x="245" y="231" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10055" x="192" y="331" width="48" height="97" frameX="-55" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10056" x="1" y="344" width="48" height="98" frameX="-54" frameY="-50" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10057" x="58" y="341" width="58" height="100" frameX="-43" frameY="-52" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10058" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10059" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10060" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10061" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10062" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10063" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10064" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10065" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10066" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10067" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10068" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10069" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10070" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10071" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10072" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10073" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10074" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10075" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10076" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10077" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10078" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10079" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10080" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10081" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10082" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10083" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10084" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10085" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10086" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10087" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10088" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10089" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10090" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10091" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10092" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10093" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10094" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10095" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10096" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10097" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10098" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10099" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10100" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10101" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10102" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10103" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10104" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10105" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10106" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10107" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10108" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10109" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10110" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10111" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10112" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10113" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10114" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10115" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10116" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10117" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10118" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10119" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10120" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10121" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10122" x="1" y="1" width="172" height="106" frameX="-6" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10123" x="176" y="1" width="113" height="104" frameX="-8" frameY="-48" frameWidth="252" frameHeight="168"/>
<SubTexture name="Senpai Pre Explosion instance 10124" x="1" y="110" width="153" height="103" frameX="-6" frameY="-49" frameWidth="252" frameHeight="168"/>
</TextureAtlas>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 305 KiB

@@ -1,45 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="animatedEvilSchool.png">
<!-- Created with Adobe Animate version 20.0.0.17400 -->
<!-- http://www.adobe.com/products/animate.html -->
<SubTexture name="background 2 instance 10000" x="0" y="0" width="513" height="512"/>
<SubTexture name="background 2 instance 10001" x="523" y="0" width="513" height="512"/>
<SubTexture name="background 2 instance 10002" x="1046" y="0" width="513" height="512"/>
<SubTexture name="background 2 instance 10003" x="1569" y="0" width="513" height="512"/>
<SubTexture name="background 2 instance 10004" x="2092" y="0" width="513" height="512"/>
<SubTexture name="background 2 instance 10005" x="2615" y="0" width="513" height="512"/>
<SubTexture name="background 2 instance 10006" x="3138" y="0" width="513" height="512"/>
<SubTexture name="background 2 instance 10007" x="0" y="522" width="513" height="512"/>
<SubTexture name="background 2 instance 10008" x="523" y="522" width="513" height="512"/>
<SubTexture name="background 2 instance 10009" x="1046" y="522" width="513" height="512"/>
<SubTexture name="background 2 instance 10010" x="1569" y="522" width="513" height="512"/>
<SubTexture name="background 2 instance 10011" x="2092" y="522" width="513" height="512"/>
<SubTexture name="background 2 instance 10012" x="2615" y="522" width="513" height="512"/>
<SubTexture name="background 2 instance 10013" x="3138" y="522" width="513" height="512"/>
<SubTexture name="background 2 instance 10014" x="0" y="1044" width="513" height="512"/>
<SubTexture name="background 2 instance 10015" x="523" y="1044" width="513" height="512"/>
<SubTexture name="background 2 instance 10016" x="1046" y="1044" width="513" height="512"/>
<SubTexture name="background 2 instance 10017" x="1569" y="1044" width="513" height="512"/>
<SubTexture name="background 2 instance 10018" x="2092" y="1044" width="513" height="512"/>
<SubTexture name="background 2 instance 10019" x="2615" y="1044" width="513" height="512"/>
<SubTexture name="background 2 instance 10020" x="3138" y="1044" width="513" height="512"/>
<SubTexture name="background 2 instance 10021" x="0" y="1566" width="513" height="512"/>
<SubTexture name="background 2 instance 10022" x="523" y="1566" width="513" height="512"/>
<SubTexture name="background 2 instance 10023" x="1046" y="1566" width="513" height="512"/>
<SubTexture name="background 2 instance 10024" x="1569" y="1566" width="513" height="512"/>
<SubTexture name="background 2 instance 10025" x="2092" y="1566" width="513" height="512"/>
<SubTexture name="background 2 instance 10026" x="2615" y="1566" width="513" height="512"/>
<SubTexture name="background 2 instance 10027" x="3138" y="1566" width="513" height="512"/>
<SubTexture name="background 2 instance 10028" x="0" y="2088" width="513" height="512"/>
<SubTexture name="background 2 instance 10029" x="523" y="2088" width="513" height="512"/>
<SubTexture name="background 2 instance 10030" x="1046" y="2088" width="513" height="512"/>
<SubTexture name="background 2 instance 10031" x="1569" y="2088" width="513" height="512"/>
<SubTexture name="background 2 instance 10032" x="2092" y="2088" width="513" height="512"/>
<SubTexture name="background 2 instance 10033" x="2615" y="2088" width="513" height="512"/>
<SubTexture name="background 2 instance 10034" x="3138" y="2088" width="513" height="512"/>
<SubTexture name="background 2 instance 10035" x="0" y="2610" width="513" height="512"/>
<SubTexture name="background 2 instance 10036" x="523" y="2610" width="513" height="512"/>
<SubTexture name="background 2 instance 10037" x="1046" y="2610" width="513" height="512"/>
<SubTexture name="background 2 instance 10038" x="1569" y="2610" width="513" height="512"/>
<SubTexture name="background 2 instance 10039" x="2092" y="2610" width="513" height="512"/>
</TextureAtlas>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Created with Funkin Packer v0.1.3 https://neeeoo.github.io/funkin-packer/
-->
<TextureAtlas imagePath="animatedEvilSchool.png" width="1579" height="1319">
<SubTexture name="background 2 instance 10000" x="1" y="1" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10001" x="1" y="166" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10002" x="317" y="1" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10003" x="317" y="166" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10004" x="1" y="331" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10005" x="317" y="331" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10006" x="1" y="496" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10007" x="317" y="496" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10008" x="633" y="1" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10009" x="633" y="166" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10010" x="633" y="331" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10011" x="633" y="496" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10012" x="1" y="661" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10013" x="317" y="661" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10014" x="633" y="661" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10015" x="1" y="826" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10016" x="317" y="826" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10017" x="633" y="826" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10018" x="949" y="1" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10019" x="949" y="166" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10020" x="949" y="331" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10021" x="949" y="496" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10022" x="949" y="661" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10023" x="949" y="826" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10024" x="1" y="991" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10025" x="317" y="991" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10026" x="633" y="991" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10027" x="949" y="991" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10028" x="1" y="1156" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10029" x="317" y="1156" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10030" x="633" y="1156" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10031" x="949" y="1156" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10032" x="1265" y="1" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10033" x="1265" y="166" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10034" x="1265" y="331" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10035" x="1265" y="496" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10036" x="1265" y="661" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10037" x="1265" y="826" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10038" x="1265" y="991" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
<SubTexture name="background 2 instance 10039" x="1265" y="1156" width="313" height="162" frameX="-100" frameY="-174" frameWidth="513" frameHeight="512"/>
</TextureAtlas>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 92 KiB

+66 -65
View File
@@ -1,65 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="bgFreaks.png">
<!-- Created with Adobe Animate version 20.0.0.17400 -->
<!-- http://www.adobe.com/products/animate.html -->
<SubTexture name="BG fangirls dissuaded0000" x="0" y="0" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0001" x="0" y="0" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0002" x="461" y="0" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0003" x="461" y="0" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0004" x="461" y="0" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0005" x="461" y="0" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0006" x="0" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0007" x="0" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0008" x="0" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0009" x="0" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0010" x="0" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0011" x="0" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0012" x="0" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0013" x="0" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0014" x="461" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0015" x="461" y="106" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0016" x="0" y="212" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0017" x="0" y="212" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0018" x="461" y="212" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0019" x="461" y="212" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0020" x="0" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0021" x="0" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0022" x="461" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0023" x="461" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0024" x="461" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0025" x="461" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0026" x="461" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0027" x="461" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0028" x="461" y="318" width="451" height="96"/>
<SubTexture name="BG fangirls dissuaded0029" x="461" y="318" width="451" height="96"/>
<SubTexture name="BG girls group0000" x="0" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0001" x="0" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0002" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0003" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0004" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0005" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0006" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0007" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0008" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0009" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0010" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0011" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0012" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0013" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0014" x="460" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0015" x="460" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0016" x="0" y="636" width="450" height="96"/>
<SubTexture name="BG girls group0017" x="0" y="636" width="450" height="96"/>
<SubTexture name="BG girls group0018" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0019" x="0" y="530" width="450" height="96"/>
<SubTexture name="BG girls group0020" x="460" y="636" width="450" height="96"/>
<SubTexture name="BG girls group0021" x="460" y="636" width="450" height="96"/>
<SubTexture name="BG girls group0022" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0023" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0024" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0025" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0026" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0027" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0028" x="460" y="424" width="450" height="96"/>
<SubTexture name="BG girls group0029" x="460" y="424" width="450" height="96"/>
</TextureAtlas>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Created with Funkin Packer v0.1.3 https://neeeoo.github.io/funkin-packer/
-->
<TextureAtlas imagePath="bgFreaks.png" width="873" height="590">
<SubTexture name="BG fangirls dissuaded0000" x="1" y="1" width="435" height="82" frameX="-8" frameY="-9" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0001" x="1" y="1" width="435" height="82" frameX="-8" frameY="-9" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0002" x="1" y="341" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0003" x="1" y="341" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0004" x="1" y="341" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0005" x="1" y="341" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0006" x="1" y="425" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0007" x="1" y="425" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0008" x="1" y="425" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0009" x="1" y="425" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0010" x="1" y="425" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0011" x="1" y="425" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0012" x="1" y="425" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0013" x="1" y="425" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0014" x="1" y="86" width="434" height="82" frameX="-8" frameY="-9" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0015" x="1" y="86" width="434" height="82" frameX="-8" frameY="-9" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0016" x="437" y="256" width="434" height="81" frameX="-7" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0017" x="437" y="256" width="434" height="81" frameX="-7" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0018" x="438" y="340" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0019" x="438" y="340" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0020" x="1" y="509" width="434" height="79" frameX="-8" frameY="-12" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0021" x="1" y="509" width="434" height="79" frameX="-8" frameY="-12" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0022" x="438" y="424" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0023" x="438" y="424" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0024" x="438" y="424" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0025" x="438" y="424" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0026" x="438" y="424" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0027" x="438" y="424" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0028" x="438" y="424" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG fangirls dissuaded0029" x="438" y="424" width="434" height="81" frameX="-8" frameY="-10" frameWidth="451" frameHeight="96"/>
<SubTexture name="BG girls group0000" x="1" y="171" width="434" height="82" frameX="-9" frameY="-10" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0001" x="1" y="171" width="434" height="82" frameX="-9" frameY="-10" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0002" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0003" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0004" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0005" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0006" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0007" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0008" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0009" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0010" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0011" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0012" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0013" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0014" x="438" y="170" width="433" height="81" frameX="-8" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0015" x="438" y="170" width="433" height="81" frameX="-8" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0016" x="1" y="256" width="433" height="82" frameX="-9" frameY="-10" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0017" x="1" y="256" width="433" height="82" frameX="-9" frameY="-10" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0018" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0019" x="439" y="1" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0020" x="438" y="508" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0021" x="438" y="508" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0022" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0023" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0024" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0025" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0026" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0027" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0028" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
<SubTexture name="BG girls group0029" x="438" y="86" width="433" height="81" frameX="-9" frameY="-11" frameWidth="450" frameHeight="96"/>
</TextureAtlas>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 19 KiB

+62 -61
View File
@@ -1,61 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<TextureAtlas imagePath="petals.png">
<!-- Created with Adobe Animate version 20.0.0.17400 -->
<!-- http://www.adobe.com/products/animate.html -->
<SubTexture name="PETALS ALL0000" x="0" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0001" x="0" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0002" x="313" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0003" x="313" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0004" x="626" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0005" x="939" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0006" x="1252" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0007" x="1252" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0008" x="1565" y="0" width="311" height="161"/>
<SubTexture name="PETALS ALL0009" x="0" y="163" width="311" height="161"/>
<SubTexture name="PETALS ALL0010" x="313" y="163" width="311" height="161"/>
<SubTexture name="PETALS ALL0011" x="626" y="163" width="311" height="161"/>
<SubTexture name="PETALS ALL0012" x="939" y="163" width="311" height="161"/>
<SubTexture name="PETALS ALL0013" x="1252" y="163" width="311" height="161"/>
<SubTexture name="PETALS ALL0014" x="1252" y="163" width="311" height="161"/>
<SubTexture name="PETALS ALL0015" x="1565" y="163" width="311" height="161"/>
<SubTexture name="PETALS ALL0016" x="0" y="326" width="311" height="161"/>
<SubTexture name="PETALS ALL0017" x="313" y="326" width="311" height="161"/>
<SubTexture name="PETALS ALL0018" x="313" y="326" width="311" height="161"/>
<SubTexture name="PETALS ALL0019" x="626" y="326" width="311" height="161"/>
<SubTexture name="PETALS ALL0020" x="939" y="326" width="311" height="161"/>
<SubTexture name="PETALS ALL0021" x="1252" y="326" width="311" height="161"/>
<SubTexture name="PETALS ALL0022" x="1252" y="326" width="311" height="161"/>
<SubTexture name="PETALS ALL0023" x="1565" y="326" width="311" height="161"/>
<SubTexture name="PETALS ALL0024" x="0" y="489" width="311" height="161"/>
<SubTexture name="PETALS ALL0025" x="313" y="489" width="311" height="161"/>
<SubTexture name="PETALS ALL0026" x="626" y="489" width="311" height="161"/>
<SubTexture name="PETALS ALL0027" x="939" y="489" width="311" height="161"/>
<SubTexture name="PETALS ALL0028" x="1252" y="489" width="311" height="161"/>
<SubTexture name="PETALS ALL0029" x="1565" y="489" width="311" height="161"/>
<SubTexture name="PETALS ALL0030" x="0" y="652" width="311" height="161"/>
<SubTexture name="PETALS ALL0031" x="313" y="652" width="311" height="161"/>
<SubTexture name="PETALS ALL0032" x="626" y="652" width="311" height="161"/>
<SubTexture name="PETALS ALL0033" x="939" y="652" width="311" height="161"/>
<SubTexture name="PETALS ALL0034" x="1252" y="652" width="311" height="161"/>
<SubTexture name="PETALS ALL0035" x="1252" y="652" width="311" height="161"/>
<SubTexture name="PETALS ALL0036" x="1565" y="652" width="311" height="161"/>
<SubTexture name="PETALS ALL0037" x="0" y="815" width="311" height="161"/>
<SubTexture name="PETALS ALL0038" x="313" y="815" width="311" height="161"/>
<SubTexture name="PETALS ALL0039" x="313" y="815" width="311" height="161"/>
<SubTexture name="PETALS ALL0040" x="626" y="815" width="311" height="161"/>
<SubTexture name="PETALS ALL0041" x="939" y="815" width="311" height="161"/>
<SubTexture name="PETALS ALL0042" x="939" y="815" width="311" height="161"/>
<SubTexture name="PETALS ALL0043" x="1252" y="815" width="311" height="161"/>
<SubTexture name="PETALS ALL0044" x="1565" y="815" width="311" height="161"/>
<SubTexture name="PETALS ALL0045" x="0" y="978" width="311" height="161"/>
<SubTexture name="PETALS ALL0046" x="313" y="978" width="311" height="161"/>
<SubTexture name="PETALS ALL0047" x="626" y="978" width="311" height="161"/>
<SubTexture name="PETALS ALL0048" x="939" y="978" width="311" height="161"/>
<SubTexture name="PETALS ALL0049" x="1252" y="978" width="311" height="161"/>
<SubTexture name="PETALS ALL0050" x="1565" y="978" width="311" height="161"/>
<SubTexture name="PETALS ALL0051" x="0" y="1141" width="311" height="161"/>
<SubTexture name="PETALS ALL0052" x="313" y="1141" width="311" height="161"/>
<SubTexture name="PETALS ALL0053" x="313" y="1141" width="311" height="161"/>
<SubTexture name="PETALS ALL0054" x="626" y="1141" width="311" height="161"/>
<SubTexture name="PETALS ALL0055" x="0" y="0" width="311" height="161"/>
</TextureAtlas>
<?xml version="1.0" encoding="UTF-8"?>
<!--
Created with Funkin Packer v0.1.3 https://neeeoo.github.io/funkin-packer/
-->
<TextureAtlas imagePath="petals.png" width="921" height="821">
<SubTexture name="PETALS ALL0000" x="405" y="522" width="125" height="50" frameX="-107" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0001" x="405" y="522" width="125" height="50" frameX="-107" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0002" x="400" y="684" width="123" height="56" frameX="-109" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0003" x="400" y="684" width="123" height="56" frameX="-109" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0004" x="248" y="749" width="118" height="56" frameX="-109" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0005" x="523" y="749" width="118" height="56" frameX="-109" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0006" x="1" y="757" width="121" height="63" frameX="-106" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0007" x="1" y="757" width="121" height="63" frameX="-106" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0008" x="644" y="749" width="113" height="63" frameX="-106" frameY="-13" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0009" x="807" y="1" width="113" height="58" frameX="-106" frameY="-18" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0010" x="125" y="757" width="120" height="63" frameX="-99" frameY="-18" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0011" x="400" y="743" width="120" height="63" frameX="-99" frameY="-18" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0012" x="807" y="62" width="111" height="63" frameX="-99" frameY="-18" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0013" x="526" y="684" width="123" height="62" frameX="-87" frameY="-25" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0014" x="526" y="684" width="123" height="62" frameX="-87" frameY="-25" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0015" x="652" y="637" width="123" height="62" frameX="-87" frameY="-25" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0016" x="1" y="684" width="130" height="70" frameX="-71" frameY="-25" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0017" x="134" y="684" width="130" height="62" frameX="-71" frameY="-33" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0018" x="134" y="684" width="130" height="62" frameX="-71" frameY="-33" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0019" x="267" y="684" width="130" height="62" frameX="-71" frameY="-33" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0020" x="622" y="225" width="149" height="98" frameX="-67" frameY="-5" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0021" x="612" y="326" width="149" height="98" frameX="-67" frameY="-5" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0022" x="612" y="326" width="149" height="98" frameX="-67" frameY="-5" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0023" x="612" y="427" width="149" height="98" frameX="-67" frameY="-5" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0024" x="553" y="528" width="139" height="106" frameX="-64" frameY="-5" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0025" x="1" y="575" width="181" height="106" frameX="-22" frameY="-5" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0026" x="185" y="575" width="181" height="106" frameX="-22" frameY="-5" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0027" x="369" y="575" width="181" height="106" frameX="-22" frameY="-5" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0028" x="623" y="1" width="181" height="109" frameX="-22" frameY="-8" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0029" x="623" y="113" width="180" height="109" frameX="-18" frameY="-8" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0030" x="414" y="320" width="195" height="109" frameX="-18" frameY="-8" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0031" x="405" y="432" width="195" height="87" frameX="-18" frameY="-8" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0032" x="414" y="239" width="199" height="78" frameX="-18" frameY="-17" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0033" x="1" y="207" width="205" height="91" frameX="-12" frameY="-17" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0034" x="210" y="1" width="205" height="89" frameX="-12" frameY="-19" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0035" x="210" y="1" width="205" height="89" frameX="-12" frameY="-19" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0036" x="207" y="343" width="199" height="85" frameX="-12" frameY="-23" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0037" x="1" y="1" width="206" height="100" frameX="-5" frameY="-23" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0038" x="1" y="104" width="206" height="100" frameX="-5" frameY="-23" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0039" x="1" y="104" width="206" height="100" frameX="-5" frameY="-23" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0040" x="418" y="131" width="201" height="105" frameX="-5" frameY="-18" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0041" x="210" y="93" width="205" height="117" frameX="-1" frameY="-18" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0042" x="210" y="93" width="205" height="117" frameX="-1" frameY="-18" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0043" x="209" y="213" width="202" height="127" frameX="-1" frameY="-8" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0044" x="418" y="1" width="202" height="127" frameX="-1" frameY="-8" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0045" x="1" y="301" width="203" height="133" frameX="-0" frameY="-8" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0046" x="1" y="437" width="199" height="135" frameX="-0" frameY="-6" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0047" x="203" y="437" width="199" height="135" frameX="-0" frameY="-6" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0048" x="760" y="702" width="104" height="108" frameX="-95" frameY="-6" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0049" x="806" y="128" width="104" height="89" frameX="-95" frameY="-25" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0050" x="764" y="428" width="97" height="89" frameX="-95" frameY="-25" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0051" x="788" y="326" width="97" height="99" frameX="-95" frameY="-15" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0052" x="695" y="528" width="90" height="103" frameX="-102" frameY="-15" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0053" x="695" y="528" width="90" height="103" frameX="-102" frameY="-15" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0054" x="806" y="220" width="79" height="103" frameX="-102" frameY="-15" frameWidth="311" frameHeight="161"/>
<SubTexture name="PETALS ALL0055" x="405" y="522" width="125" height="50" frameX="-107" frameY="-13" frameWidth="311" frameHeight="161"/>
</TextureAtlas>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 61 KiB

-20
View File
@@ -1,20 +0,0 @@
trees_0 = 0 0 512 512
trees_1 = 513 0 512 512
trees_2 = 1539 1026 512 512
trees_3 = 2052 513 512 512
trees_4 = 2565 0 512 512
trees_5 = 3078 0 512 512
trees_6 = 2565 513 512 512
trees_7 = 2052 1026 512 512
trees_8 = 2565 1026 512 512
trees_9 = 3078 513 512 512
trees_10 = 1026 0 512 512
trees_11 = 0 513 512 512
trees_12 = 513 513 512 512
trees_13 = 0 1026 512 512
trees_14 = 513 1026 512 512
trees_15 = 1026 513 512 512
trees_16 = 1026 1026 512 512
trees_17 = 1539 0 512 512
trees_18 = 1539 513 512 512
trees_19 = 2052 0 512 512
+26
View File
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Created with Funkin Packer v0.1.3 https://neeeoo.github.io/funkin-packer/
-->
<TextureAtlas imagePath="weebTrees.png" width="630" height="679">
<SubTexture name="trees0000" x="1" y="86" width="312" height="82" frameX="-101" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0001" x="1" y="171" width="312" height="82" frameX="-101" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0002" x="1" y="256" width="312" height="82" frameX="-101" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0003" x="1" y="1" width="313" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0004" x="317" y="1" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0005" x="316" y="86" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0006" x="316" y="171" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0007" x="316" y="256" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0008" x="1" y="341" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0009" x="316" y="341" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0010" x="1" y="426" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0011" x="1" y="596" width="311" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0012" x="1" y="596" width="311" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0013" x="1" y="596" width="311" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0014" x="1" y="596" width="311" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0015" x="1" y="596" width="311" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0016" x="315" y="596" width="311" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0017" x="316" y="426" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0018" x="1" y="511" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
<SubTexture name="trees0019" x="316" y="511" width="312" height="82" frameX="-100" frameY="-176" frameWidth="512" frameHeight="512"/>
</TextureAtlas>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1015 KiB

After

Width:  |  Height:  |  Size: 481 KiB

+9 -9
View File
@@ -14,14 +14,14 @@
<SubTexture name="John Shot 10009" x="3519" y="2571" width="521" height="466" frameX="-125" frameY="-156" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10010" x="3519" y="2571" width="521" height="466" frameX="-125" frameY="-156" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10011" x="2626" y="2720" width="459" height="490" frameX="-187" frameY="-132" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10012" x="0" y="0" width="0" height="0" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10012" x="0" y="0" width="1" height="1" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10013" x="2626" y="2720" width="459" height="490" frameX="-187" frameY="-132" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10014" x="0" y="0" width="0" height="0" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10014" x="0" y="0" width="1" height="1" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10015" x="2626" y="2720" width="459" height="490" frameX="-187" frameY="-132" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10016" x="0" y="0" width="0" height="0" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10016" x="0" y="0" width="1" height="1" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10017" x="2626" y="2720" width="459" height="490" frameX="-187" frameY="-132" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10018" x="0" y="0" width="0" height="0" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10019" x="0" y="0" width="0" height="0" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10018" x="0" y="0" width="1" height="1" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 10019" x="0" y="0" width="1" height="1" frameX="-49" frameY="-265" frameWidth="1044" frameHeight="622"/>
<SubTexture name="John Shot 20000" x="0" y="2664" width="597" height="429" frameX="-243" frameY="-212" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20001" x="0" y="1518" width="885" height="626" frameX="-215" frameY="-48" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20002" x="889" y="1556" width="915" height="592" frameX="-185" frameY="-82" frameWidth="1221" frameHeight="828"/>
@@ -34,13 +34,13 @@
<SubTexture name="John Shot 20009" x="754" y="2152" width="768" height="491" frameX="-13" frameY="-179" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20010" x="754" y="2152" width="768" height="491" frameX="-13" frameY="-179" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20011" x="754" y="2647" width="781" height="461" frameX="0" frameY="-209" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20012" x="0" y="0" width="0" height="0" frameX="-123" frameY="-327" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20012" x="0" y="0" width="1" height="1" frameX="-123" frameY="-327" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20013" x="754" y="2647" width="781" height="461" frameX="0" frameY="-209" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20014" x="0" y="0" width="0" height="0" frameX="-123" frameY="-327" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20014" x="0" y="0" width="1" height="1" frameX="-123" frameY="-327" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20015" x="754" y="2647" width="781" height="461" frameX="0" frameY="-209" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20016" x="0" y="0" width="0" height="0" frameX="-123" frameY="-327" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20016" x="0" y="0" width="1" height="1" frameX="-123" frameY="-327" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20017" x="754" y="2647" width="781" height="461" frameX="0" frameY="-209" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20018" x="0" y="0" width="0" height="0" frameX="-123" frameY="-327" frameWidth="1221" frameHeight="828"/>
<SubTexture name="John Shot 20018" x="0" y="0" width="1" height="1" frameX="-123" frameY="-327" frameWidth="1221" frameHeight="828"/>
<SubTexture name="tankman running0000" x="2045" y="2744" width="503" height="412" frameX="0" frameY="-10" frameWidth="505" frameHeight="478"/>
<SubTexture name="tankman running0001" x="2045" y="2744" width="503" height="412" frameX="0" frameY="-10" frameWidth="505" frameHeight="478"/>
<SubTexture name="tankman running0002" x="2045" y="2744" width="503" height="412" frameX="0" frameY="-10" frameWidth="505" frameHeight="478"/>
+17
View File
@@ -0,0 +1,17 @@
#pragma header
uniform vec2 redOff;
uniform vec2 greenOff;
uniform vec2 blueOff;
void main()
{
vec2 uv = getCamPos(openfl_TextureCoordv);
vec4 col;
col.r = textureCam(bitmap, uv + redOff).r;
col.g = textureCam(bitmap, uv + greenOff).g;
col.b = textureCam(bitmap, uv + blueOff).b;
col.a = texture2D(bitmap, openfl_TextureCoordv).a;
gl_FragColor = col;
}
+15
View File
@@ -0,0 +1,15 @@
#pragma header
uniform vec3 color;
uniform float amount;
uniform float strength;
void main() {
vec2 uv = getCamPos(openfl_TextureCoordv);
vec3 col = pow(textureCam(bitmap, uv).rgb, vec3(1.0 / strength));
float vignette = mix(1.0, 1.0 - amount, distance(uv, vec2(0.5)));
col = pow(mix(col * color, col, vignette), vec3(strength));
gl_FragColor = vec4(col, 1.0);
}
-8
View File
@@ -53,12 +53,4 @@ function focusOn(char) {
var camPos = char.getCameraPosition();
game.camFollow.setPosition(camPos.x, camPos.y);
camPos.put();
}
function update(elapsed:Float) {
lipSync(tankTalk);
}
function lipSync(sound:FlxSound) {
tankman.animateAtlas.anim.curFrame = Std.int(tankman.animateAtlas.anim.length / (sound.length-1) * sound.time);
}
+71
View File
@@ -0,0 +1,71 @@
static var roses_shouldPlayOnThorns = false;
var self = this;
__script__.setParent(PlayState.instance);
function create() {
var red:FlxSprite;
red = new FlxSprite().makeSolid(FlxG.width + 100, FlxG.height + 100, 0xFFff1b31);
red.screenCenter();
red.scrollFactor.set();
red.alpha = 0;
add(red);
// reorder dad
remove(dad);
insert(PlayState.instance.members.indexOf(red) + 1, dad);
playDadUpdate = true;
dad.animation.finishCallback = (name:String) -> {
if(name == "idle") {
dad.animation.finishCallback = null;
playDadUpdate = false;
new FlxTimer().start(0.3, function(swagTimer:FlxTimer) {
red.alpha += 0.15;
camHUD.alpha -= 0.15;
var c = FlxMath.lerp(255, 0, red.alpha);
dad.color = FlxColor.fromRGB(c, c, c, 255);
if(red.alpha < 1) swagTimer.reset();
else {
if (Options.gameplayShaders) {
aberration = new CustomShader('chromaticAberration');
camGame.addShader(aberration);
change = true;
}
FlxG.camera.followLerp = 0;
FlxTween.tween(camGame.scroll, {x: -366, y: 192}, 3, {
ease: FlxEase.cubeInOut,
onComplete: (_) -> {
roses_shouldPlayOnThorns = true;
self.close();
}
});
}
});
}
}
if(dad.animation.curAnim.name != "idle")
dad.playAnim("idle", true);
else if(dad.animation.curAnim.finished)
dad.animation.finishCallback("idle");
}
var playDadUpdate = false;
function postUpdate(elapsed) {
if(playDadUpdate)
dad.update(elapsed);
}
var change:Bool = false;
var aberration:CustomShader = null;
function update(elapsed:Float) {
if(change && intens < (Options.week6PixelPerfect ? 0.005 : 0.005)) setGeneralIntensity(intens + 0.00001);
}
var intens:Float = 0;
function setGeneralIntensity(val:Float) {
intens = val;
aberration.redOff = [intens, 0];
aberration.blueOff = [-intens, 0];
}
+37 -10
View File
@@ -3,7 +3,7 @@ import funkin.system.FunkinSprite;
import funkin.options.Options;
var tankman, pico:FunkinSprite;
var gf:Character;
var bf, gf:Character;
var stressCutscene:FlxSound;
var step:Int = 0;
@@ -13,10 +13,15 @@ function create() {
game.persistentUpdate = true;
game.gf.visible = false;
gf = new Character(game.gf.x, game.gf.y, "gf-tankmen");
gf = new Character(game.gf.x + game.gf.globalOffset.x - 115, game.gf.y + game.gf.globalOffset.y + 85, "gf-tankmen");
gf.scrollFactor.set(0.95, 0.95);
gf.playAnim("dance-cutscene");
game.insert(game.members.indexOf(game.gf), gf);
game.insert(game.members.indexOf(game.gf) + 1, gf);
game.boyfriend.visible = false;
bf = new Character(game.boyfriend.x + game.boyfriend.globalOffset.x, game.boyfriend.y + game.boyfriend.globalOffset.y - 350, "boyfriend", true);
bf.scrollFactor.set(0.95, 0.95);
game.insert(game.members.indexOf(game.boyfriend) + 1, bf);
stressCutscene = FlxG.sound.load(Paths.sound(Options.naughtyness ? 'cutscenes/tank/stress' : 'cutscenes/tank/stress-censor'));
@@ -46,14 +51,13 @@ function create() {
pico.scrollFactor.set(0.95, 0.95);
pico.playAnim("idle");
pico.visible = false;
game.insert(game.members.indexOf(game.gf), pico);
game.insert(game.members.indexOf(game.dad), tankman);
game.insert(game.members.indexOf(game.gf) + 1, pico);
game.insert(game.members.indexOf(game.dad) + 1, tankman);
game.dad.visible = false;
focusOn(game.dad);
}
function update(elapsed) {
if (FlxG.keys.justPressed.F5)
FlxG.resetState();
@@ -78,6 +82,14 @@ function update(elapsed) {
FlxG.camera.zoom = 0.8;
step = 2;
pico.playAnim('saves', true);
game.remove(bf);
bf.destroy();
game.boyfriend.visible = true;
game.boyfriend.playAnim('bfCatch');
game.boyfriend.animation.finishCallback = function(anim:String) {
game.boyfriend.dance();
game.boyfriend.animation.finishCallback = null;
};
}
case 2:
if (stressCutscene.time > 19600) {
@@ -93,8 +105,22 @@ function update(elapsed) {
}
case 4:
lipSync(tankman, 19500, stressCutscene.length);
if (pico.isAnimFinished() && pico.getAnimName() == "saves")
pico.playAnim("idle");
pico.animation.finishCallback = pico.playAnim("idle");
if(stressCutscene.time > 31500) {
focusOn(game.boyfriend, true);
FlxG.camera.zoom = game.defaultCamZoom * 1.4;
FlxTween.tween(FlxG.camera, {zoom: FlxG.camera.zoom + 0.1}, 0.5, {ease: FlxEase.elasticOut});
game.boyfriend.playAnim('singUPmiss');
game.boyfriend.animation.finishCallback = function(anim:String)
{
FlxG.camera.zoom /= 1.4;
focusOn(game.dad, true);
game.boyfriend.dance();
game.boyfriend.animation.finishCallback = null;
};
step = 5;
}
}
}
@@ -102,8 +128,9 @@ function lipSync(char:FunkinSprite, begin:Float, end:Float) {
char.animateAtlas.anim.curFrame = Std.int(FlxMath.remapToRange(stressCutscene.time, begin, end, 0, char.animateAtlas.anim.length-1));
}
function focusOn(char) {
function focusOn(char, snap:Bool = false) {
var camPos = char.getCameraPosition();
game.camFollow.setPosition(camPos.x, camPos.y);
if(snap) FlxG.camera.snapToTarget();
camPos.put();
}
+157
View File
@@ -0,0 +1,157 @@
import flixel.FlxSprite;
var tankmanRun:Array<TankmenBG> = [];
var grpTankmanRun:FlxTypedGroup<FlxSprite> = [];
var spawnTimes = []; // [[time, direction]]
var tankmanPool = [];
function recycleTankman() {
if(tankmanPool.length == 0) {
var a = new TankmenBG();
a.self = a;
a.fuckingnewfuckingnew();
return a;
} else {
return tankmanPool.shift(); // can be pop but it causes it to be less random
}
}
function getTankman(data:Array<Float>) {
var tankman:TankmenBG = recycleTankman();
tankman.strumTime = data[0];
tankman.resetShit(500, 200 + FlxG.random.int(50, 100), data[1] < 2);
return tankman;
}
function postCreate() {
grpTankmanRun = new FlxTypedGroup();
insert(members.indexOf(gf) - 1, grpTankmanRun);
if(inCutscene) grpTankmanRun.visible = false;
/*var tempTankman:TankmenBG = recycleTankman();
tempTankman.strumTime = 10;
tempTankman.resetShit(20, 600, true);
tankmanRun.push(tempTankman);
grpTankmanRun.add(tempTankman.sprite);*/
graphicCache.cache(Paths.image('stages/tank/tankmanKilled1'));
for (note in strumLines.members[2].notes.members) {
if (FlxG.random.bool(16)) {
spawnTimes.push([note.strumTime, note.noteData]);
}
}
//spawnTimes.reverse(); // no need to reverse it since the notes are already reversed
}
function onStartCountdown() {
if(PlayState.instance.seenCutscene) grpTankmanRun.visible = true;
}
function spawnTankmen() {
var time = Conductor.songPosition;
//trace(spawnTimes);
while(spawnTimes.length > 0 && spawnTimes[spawnTimes.length-1][0] - 1500 < time) {
var tankmen = getTankman(spawnTimes.pop());
//trace("Spawning Tankman", tankmen.sprite.offset, tankmen.goingRight);
tankmanRun.push(tankmen);
grpTankmanRun.add(tankmen.sprite);
}
}
function update(elapsed) {
spawnTankmen();
var length = tankmanRun.length;
for(i in 0...length) {
var reverseIndex = length - i - 1;
var tankmen = tankmanRun[reverseIndex];
tankmen.update(elapsed);
}
}
class TankmenBG
{
var strumTime = 0;
var goingRight = false;
var tankSpeed = 0.7;
var endingOffset = null;
var sprite = null;
var self = null;
var killed = false;
var fuckingnewfuckingnew = function()
{
this.sprite = new FlxSprite();
var sprite = this.sprite;
sprite.frames = Paths.getSparrowAtlas('stages/tank/tankmanKilled1');
sprite.antialiasing = true;
sprite.animation.addByPrefix('run', 'tankman running', 24, true);
sprite.animation.play('run');
sprite.updateHitbox();
sprite.setGraphicSize(Std.int(sprite.width * 0.8));
sprite.updateHitbox();
}
var resetShit = function(x, y, isGoingRight)
{
var sprite = this.sprite;
sprite.revive();
sprite.setPosition(x, y);
sprite.offset.set(0, 0);
goingRight = isGoingRight;
endingOffset = FlxG.random.float(50, 200);
tankSpeed = FlxG.random.float(0.6, 1);
sprite.animation.remove("shot");
sprite.animation.addByPrefix('shot', 'John Shot ' + FlxG.random.int(1, 2), 24, false);
sprite.animation.play("run");
sprite.animation.curAnim.curFrame = FlxG.random.int(0, sprite.animation.curAnim.numFrames - 1);
killed = false;
sprite.flipX = goingRight;
}
var update = function(elapsed)
{
var sprite = this.sprite;
sprite.visible = !(sprite.x >= FlxG.width * 1.5 || sprite.x <= FlxG.width * -0.5);
if (sprite.animation.curAnim.name == 'run')
{
var endDirection:Float = (FlxG.width * 0.74) + endingOffset;
if (goingRight) {
endDirection = (FlxG.width * 0.02) - endingOffset;
sprite.x = (endDirection + (Conductor.songPosition - strumTime) * tankSpeed);
}
else sprite.x = (endDirection - (Conductor.songPosition - strumTime) * tankSpeed);
}
if (Conductor.songPosition > strumTime)
{
sprite.animation.play('shot');
sprite.animation.finishCallback = function(_) {
killed = true;
grpTankmanRun.remove(sprite, true);
sprite.kill();
tankmanPool.push(self);
tankmanRun.remove(self);
}
if (goingRight)
{
sprite.offset.y = 200;
sprite.offset.x = 300;
}
}
}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+89
View File
@@ -0,0 +1,89 @@
import flixel.addons.util.FlxSimplex;
static var roses_shouldPlayOnThorns = false;
var self = this;
__script__.setParent(PlayState.instance);
var scream:FlxSound;
var senpaiEvil:FlxSprite;
var dfx = 0;
var dfy = 0;
function create() {
// Cutscene stuff
if(!roses_shouldPlayOnThorns) {
disableScript();
self.close();
return;
}
roses_shouldPlayOnThorns = false;
camHUD.visible = false;
var red:FlxSprite = new FlxSprite().makeSolid(FlxG.width + 100, FlxG.height + 100, 0xFFff1b31);
red.screenCenter();
red.scrollFactor.set();
add(red);
senpaiEvil = new FlxSprite();
senpaiEvil.frames = Paths.getSparrowAtlas('game/cutscenes/weeb/senpaiCrazy');
senpaiEvil.animation.addByPrefix('idle', 'Senpai Pre Explosion', 24, false);
senpaiEvil.animation.play('idle');
senpaiEvil.setGraphicSize(Std.int(senpaiEvil.width * daPixelZoom));
senpaiEvil.scrollFactor.set();
senpaiEvil.updateHitbox();
senpaiEvil.screenCenter();
senpaiEvil.x += daPixelZoom * 51;
dfx = senpaiEvil.x;
dfy = senpaiEvil.y;
add(senpaiEvil);
var white:FlxSprite = new FlxSprite().makeSolid(FlxG.width + 100, FlxG.height + 100, FlxColor.WHITE);
white.screenCenter();
white.scrollFactor.set();
white.alpha = 0;
add(white);
new FlxTimer().start(3.2, function(deadTime:FlxTimer)
{
FlxG.camera.fade(FlxColor.WHITE, 1.6, false, function() {
remove(senpaiEvil, true);
senpaiEvil.destroy();
remove(red, true);
red.destroy();
white.alpha = 1;
});
});
scream = FlxG.sound.play(Paths.sound('cutscenes/weeb/Senpai_Dies'), 1, false, null, true, function()
{
new FlxTimer().start(0.2, function(swagTimer:FlxTimer) {
white.alpha -= 0.15;
if(white.alpha > 0) swagTimer.reset();
else {
remove(white, true);
white.destroy();
camHUD.visible = true;
self.close();
}
});
FlxG.camera.fade(FlxColor.WHITE, 0.0001, true);
});
}
var sVal = 0;
var seed = FlxG.random.float(-4000, 4000);
var sShkv = 50; // shake range
var sSpeed = 240;
function update(elapsed:Float) {
if(scream?.time > 2350) {
sVal += sSpeed * elapsed;
var vx = sShkv * FlxSimplex.simplexOctaves(sVal, seed, 0.07, 0.25, 4);
var vy = sShkv * FlxSimplex.simplexOctaves(sVal + 500, seed, 0.07, 0.25, 4);
senpaiEvil.setPosition(dfx + vx, dfy + vy);
}
}
+37
View File
@@ -0,0 +1,37 @@
var aberration:CustomShader = null;
function create() {
if(!Options.gameplayShaders) return;
aberration = new CustomShader('chromaticAberration');
setGeneralIntensity(Options.week6PixelPerfect ? 0.0005 : 0.005);
camGame.addShader(aberration);
}
var intens:Float = 0;
function setGeneralIntensity(val:Float) {
intens = val;
aberration.redOff = [intens, 0];
aberration.blueOff = [-intens, 0];
}
var canBump:Bool = false;
function aberrationCoolThing() {
canBump = !canBump;
if(!canBump) {
if(Options.gameplayShaders) setGeneralIntensity(Options.week6PixelPerfect ? 0.0005 : 0.005); // Just to make sure if anything goes wrong
maxCamZoom = 1.35;
} else maxCamZoom = 0;
}
function update(elapsed:Float) {
if(Options.gameplayShaders && canBump && intens > (Options.week6PixelPerfect ? 0.0005 : 0.005)) setGeneralIntensity(intens - (Options.week6PixelPerfect ? 0.0001 : 0.001));
}
function beatHit(curBeat:Float) {
if(canBump && curBeat % 2 != 0) {
if(Options.gameplayShaders) setGeneralIntensity(Options.week6PixelPerfect ? 0.005 : 0.05);
if(Options.camZoomOnBeat) {
FlxG.camera.zoom += 0.015 * camZoomingStrength;
camHUD.zoom += 0.03 * camZoomingStrength;
}
}
}
-9
View File
@@ -64,13 +64,4 @@ function focusOn(char) {
var camPos = char.getCameraPosition();
game.camFollow.setPosition(camPos.x, camPos.y);
camPos.put();
}
function update(elapsed:Float) {
if (tankTalk1.playing) lipSync(tankTalk1);
if (tankTalk2.playing) lipSync(tankTalk2);
}
function lipSync(sound:FlxSound) {
tankman.animateAtlas.anim.curFrame = Std.int(tankman.animateAtlas.anim.length / (sound.length-1) * sound.time);
}
@@ -0,0 +1,17 @@
var self = this;
__script__.setParent(PlayState.instance);
function create() {
FlxG.sound.play(Paths.sound('Lights_Turn_On'));
camFollow.setPosition(500, -2050);
FlxG.camera.focusOn(camFollow.getPosition());
FlxG.camera.zoom = 1.5;
FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, 2.5, {
ease: FlxEase.quadInOut, startDelay: 0.8,
onComplete: function(twn:FlxTween)
{
self.close();
}
});
}
@@ -0,0 +1,12 @@
function beatHit(curBeat:Int) {
switch(curBeat) {
case 120:
camZoomingInterval = 2;
case 153:
camZoomingInterval = 4;
case 216:
camZoomingInterval = 2;
case 230:
camZoomingInterval = 4;
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+13 -5
View File
@@ -1,5 +1,6 @@
package funkin.backend;
import funkin.backend.utils.XMLUtil.BeatAnim;
import funkin.backend.utils.XMLUtil.AnimData;
import funkin.backend.utils.XMLUtil.IXMLEvents;
import flixel.system.FlxAssets.FlxGraphicAsset;
@@ -34,13 +35,17 @@ abstract XMLAnimType(Int)
class FunkinSprite extends FlxSkewedSprite implements IBeatReceiver implements IOffsetCompatible implements IXMLEvents
{
public var spriteAnimType:XMLAnimType = NONE;
public var beatAnims:Array<String> = [];
public var beatAnims:Array<BeatAnim> = [];
public var name:String;
public var zoomFactor:Float = 1;
public var initialZoom:Float = 1;
public var debugMode:Bool = false;
public var animDatas:Map<String, AnimData> = [];
public var beatInterval:Int = 1;
public var beatOffset:Int = 0;
public var skipNegativeBeats:Bool = false;
public var animateAtlas:FlxAnimate;
@:noCompletion public var atlasPlayingAnim:String;
@:noCompletion public var atlasPath:String;
@@ -108,13 +113,16 @@ class FunkinSprite extends FlxSkewedSprite implements IBeatReceiver implements I
moves = true;
}
private var countedBeat = 0;
public function beatHit(curBeat:Int)
{
if (beatAnims.length > 0)
if (beatAnims.length > 0 && (curBeat + beatOffset) % beatInterval == 0)
{
var anim = beatAnims[FlxMath.wrap(curBeat, 0, beatAnims.length - 1)];
if (anim != null && anim != "null" && anim != "none")
playAnim(anim);
if(skipNegativeBeats && curBeat < 0) return;
// TODO: find a solution without countedBeat
var anim = beatAnims[FlxMath.wrap(countedBeat++, 0, beatAnims.length - 1)];
if (anim.name != null && anim.name != "null" && anim.name != "none")
playAnim(anim.name, anim.forced);
}
}
+11 -1
View File
@@ -41,6 +41,7 @@ class BaseGameParser {
result.meta.needsVoices = data.needsVoices.getDefault(true);
var camFocusedBF:Bool = false;
var altAnims:Bool = false;
var beatsPerMesure:Float = data.beatsPerMesure.getDefault(4);
var curBPM:Float = data.bpm;
var curTime:Float = 0;
@@ -60,6 +61,15 @@ class BaseGameParser {
});
}
if (section.altAnim == null) section.altAnim = false;
if (altAnims != (altAnims = section.altAnim)) {
result.events.push({
time: curTime,
name: "Alt Animation Toggle",
params: [0, altAnims]
});
}
if (section.sectionNotes != null) for(note in section.sectionNotes) {
if (note[1] < 0) continue;
@@ -129,6 +139,6 @@ typedef SwagSection =
var mustHitSection:Bool;
var bpm:Float;
var changeBPM:Bool;
var altAnim:Bool;
var altAnim:Null<Bool>;
@:optional var camTarget:Null<Float>;
}
@@ -20,7 +20,7 @@ class ScriptsMacro {
"flixel.addons.plugin", "flixel.addons.text", "flixel.addons.tile", "flixel.addons.transition",
"flixel.addons.util",
// OTHER LIBRARIES & STUFF
"away3d", "flx3d",
#if THREE_D_SUPPORT "away3d", "flx3d", #end
#if VIDEO_CUTSCENES "hxvlc.flixel", "hxvlc.openfl", #end
// BASE HAXE
"DateTools", "EReg", "Lambda", "StringBuf", "haxe.crypto", "haxe.display", "haxe.exceptions", "haxe.extern", "scripting"
+10
View File
@@ -28,6 +28,16 @@ class CoolUtil
public static function getLastExceptionStack():String {
return CallStack.toString(CallStack.exceptionStack());
}
/*
* Returns `v` if not null
* @param v The value
* @return A bool value
*/
public static inline function isNotNull(v:Null<Dynamic>):Bool {
return v != null && !isNaN(v);
}
/*
* Returns `v` if not null, `defaultValue` otherwise.
* @param v The value
+79 -30
View File
@@ -21,7 +21,7 @@ class XMLUtil {
*/
public static function applyXMLProperty(object:Dynamic, property:Access):ErrorCode {
if (!property.has.name || !property.has.type || !property.has.value) {
Logs.trace('Failed to apply XML property: XML Element misses name, type, or value attributes.', WARNING);
Logs.trace('Failed to apply XML property: XML Element is missing name, type, or value attributes.', WARNING);
return MISSING_PROPERTY;
}
@@ -72,54 +72,86 @@ class XMLUtil {
spr.loadSprite(Paths.image('$parentFolder${node.getAtt("sprite")}', null, true));
if (spr.frames != null && spr.frames.frames != null) {
spr.animation.add("idle", [for(i in 0...spr.frames.frames.length) i], 24, true);
spr.animation.play("idle");
spr.spriteAnimType = defaultAnimType;
if (node.has.type) {
spr.spriteAnimType = XMLAnimType.fromString(node.att.type, spr.spriteAnimType);
}
spr.spriteAnimType = defaultAnimType;
if (node.has.type)
spr.spriteAnimType = XMLAnimType.fromString(node.att.type, spr.spriteAnimType);
var x:Null<Float> = node.has.x ? Std.parseFloat(node.att.x) : null;
var y:Null<Float> = node.has.y ? Std.parseFloat(node.att.y) : null;
if (x != null) spr.x = x;
if (y != null) spr.y = y;
if(node.has.x) {
var x:Null<Float> = Std.parseFloat(node.att.x);
if (x.isNotNull()) spr.x = x;
}
if(node.has.y) {
var y:Null<Float> = Std.parseFloat(node.att.y);
if (y.isNotNull()) spr.y = y;
}
if (node.has.scroll) {
var scroll:Null<Float> = Std.parseFloat(node.att.scroll);
if (scroll != null) spr.scrollFactor.set(scroll, scroll);
if (scroll.isNotNull()) spr.scrollFactor.set(scroll, scroll);
} else {
if (node.has.scrollx) {
var scroll:Null<Float> = Std.parseFloat(node.att.scrollx);
if (scroll != null) spr.scrollFactor.x = scroll;
if (scroll.isNotNull()) spr.scrollFactor.x = scroll;
}
if (node.has.scrolly) {
var scroll:Null<Float> = Std.parseFloat(node.att.scrolly);
if (scroll != null) spr.scrollFactor.y = scroll;
if (scroll.isNotNull()) spr.scrollFactor.y = scroll;
}
}
if (node.has.skewx) {
var skew:Null<Float> = Std.parseFloat(node.att.skewx);
if (skew != null) spr.skew.x = skew;
if (skew.isNotNull()) spr.skew.x = skew;
}
if (node.has.skewy) {
var skew:Null<Float> = Std.parseFloat(node.att.skewy);
if (skew != null) spr.skew.y = skew;
if (skew.isNotNull()) spr.skew.y = skew;
}
if (node.has.antialiasing) spr.antialiasing = node.att.antialiasing == "true";
if (node.has.scale) {
var scale:Null<Float> = Std.parseFloat(node.att.scale);
if (scale != null) spr.scale.set(scale, scale);
if (scale.isNotNull()) spr.scale.set(scale, scale);
}
if (node.has.scalex) {
var scale:Null<Float> = Std.parseFloat(node.att.scalex);
if (scale.isNotNull()) spr.scale.x = scale;
}
if (node.has.scaley) {
var scale:Null<Float> = Std.parseFloat(node.att.scaley);
if (scale.isNotNull()) spr.scale.y = scale;
}
if (node.has.updateHitbox && node.att.updateHitbox == "true") spr.updateHitbox();
spr.zoomFactor = Std.parseFloat(node.getAtt("zoomfactor")).getDefault(spr.zoomFactor);
if(node.has.zoomfactor)
spr.zoomFactor = Std.parseFloat(node.getAtt("zoomfactor")).getDefault(spr.zoomFactor);
if (node.has.alpha)
spr.alpha = Std.parseFloat(node.getAtt("alpha")).getDefault(spr.alpha);
for(anim in node.nodes.anim)
addXMLAnimation(spr, anim);
if (node.has.playOnCountdown)
spr.skipNegativeBeats = node.att.playOnCountdown == "true";
if (node.has.beatInterval)
spr.beatInterval = Std.parseInt(node.att.beatInterval);
if (node.has.beatOffset)
spr.beatOffset = Std.parseInt(node.att.beatOffset);
if(node.hasNode.anim) {
for(anim in node.nodes.anim)
addXMLAnimation(spr, anim);
} else {
if (spr.frames != null && spr.frames.frames != null) {
addAnimToSprite(spr, {
name: "idle",
anim: null,
fps: 24,
loop: spr.spriteAnimType == LOOP,
animType: spr.spriteAnimType,
x: 0,
y: 0,
indices: [for(i in 0...spr.frames.frames.length) i],
forced: (node.has.forced && node.att.forced == "true") || (!node.has.forced && spr.spriteAnimType == BEAT)
});
}
}
return spr;
}
@@ -133,16 +165,18 @@ class XMLUtil {
animType: animType,
x: 0,
y: 0,
indices: []
indices: [],
forced: false,
};
if (anim.has.name) animData.name = anim.att.name;
if (anim.has.type) animData.animType = XMLAnimType.fromString(anim.att.type, animData.animType);
if (anim.has.anim) animData.anim = anim.att.anim;
if (anim.has.fps) animData.fps = Std.parseFloat(anim.att.fps);
if (anim.has.x) animData.x = Std.parseFloat(anim.att.x);
if (anim.has.y) animData.y = Std.parseFloat(anim.att.y);
if (anim.has.fps) animData.fps = Std.parseFloat(anim.att.fps).getDefault(animData.fps);
if (anim.has.x) animData.x = Std.parseFloat(anim.att.x).getDefault(animData.x);
if (anim.has.y) animData.y = Std.parseFloat(anim.att.y).getDefault(animData.y);
if (anim.has.loop) animData.loop = anim.att.loop == "true";
if (anim.has.forced) animData.forced = anim.att.forced == "true";
if (anim.has.indices) {
var indicesSplit = anim.att.indices.split(",");
for(indice in indicesSplit) {
@@ -161,24 +195,30 @@ class XMLUtil {
*/
public static function addXMLAnimation(sprite:FlxSprite, anim:Access, loop:Bool = false):ErrorCode {
var animType:XMLAnimType = NONE;
if (sprite is FunkinSprite)
if (sprite is FunkinSprite) {
animType = cast(sprite, FunkinSprite).spriteAnimType;
}
return addAnimToSprite(sprite, extractAnimFromXML(anim, animType, loop));
}
public static function addAnimToSprite(sprite:FlxSprite, animData:AnimData):ErrorCode {
if (animData.name != null && animData.anim != null) {
if (animData.name != null) {
if (animData.fps <= 0 #if web || animData.fps == null #end) animData.fps = 24;
if (sprite is FunkinSprite && cast(sprite, FunkinSprite).animateAtlas != null) {
var animateAnim = cast(sprite, FunkinSprite).animateAtlas.anim;
if(animData.anim == null)
return MISSING_PROPERTY;
if (animData.indices.length > 0)
animateAnim.addBySymbolIndices(animData.name, animData.anim, animData.indices, animData.fps, animData.loop);
else
animateAnim.addBySymbol(animData.name, animData.anim, animData.fps, animData.loop);
} else {
if (animData.indices.length > 0)
if (animData.anim == null && animData.indices.length > 0)
sprite.animation.add(animData.name, animData.indices, animData.fps, animData.loop);
else if (animData.indices.length > 0)
sprite.animation.addByIndices(animData.name, animData.anim, animData.indices, "", animData.fps, animData.loop);
else
sprite.animation.addByPrefix(animData.name, animData.anim, animData.fps, animData.loop);
@@ -191,9 +231,12 @@ class XMLUtil {
var xmlSpr = cast(sprite, FunkinSprite);
switch(animData.animType) {
case BEAT:
xmlSpr.beatAnims.push(animData.name);
xmlSpr.beatAnims.push({
name: animData.name,
forced: animData.forced.getDefault(false)
});
case LOOP:
xmlSpr.animation.play(animData.name);
xmlSpr.animation.play(animData.name, animData.forced.getDefault(false));
default:
// nothing
}
@@ -219,6 +262,12 @@ typedef AnimData = {
var y:Float;
var indices:Array<Int>;
var animType:XMLAnimType;
var ?forced:Bool;
}
typedef BeatAnim = {
var name:String;
var forced:Bool;
}
interface IXMLEvents {
+1
View File
@@ -69,6 +69,7 @@ class GameOverSubstate extends MusicBeatSubstate
if (controls.BACK)
{
PlayState.resetSongInfos();
if (FlxG.sound.music != null)
FlxG.sound.music.stop();
FlxG.sound.music = null;
+64 -33
View File
@@ -75,7 +75,7 @@ class PlayState extends MusicBeatState
*/
public static var opponentMode:Bool = false;
/**
// * Whenever the song has been started with co-op mode on.
* Whenever the song has been started with co-op mode on.
*/
public static var coopMode:Bool = false;
@@ -89,6 +89,10 @@ class PlayState extends MusicBeatState
*/
public var strumLines:FlxTypedGroup<StrumLine> = new FlxTypedGroup<StrumLine>();
/**
* Death counter on current week (or song if from freeplay).
*/
public static var deathCounter:Int = 0;
/**
* Game Over Song. (assets/music/gameOver.ogg)
*/
@@ -361,11 +365,14 @@ class PlayState extends MusicBeatState
* Whenever the game is currently in a cutscene or not.
*/
public var inCutscene:Bool = false;
/**
* Whenever the game should play the cutscenes. Defaults to whenever the game is currently in Story Mode or not.
*/
public var playCutscenes:Bool = isStoryMode;
/**
* Whenever the game has already played a specific cutscene for the current song. Check `startCutscene` for more details.
*/
public static var seenCutscene:Bool = false;
/**
* Cutscene script path.
*/
@@ -443,6 +450,7 @@ class PlayState extends MusicBeatState
public var hitWindow:Float = Options.hitWindow; // is calculated in create(), is safeFrames in milliseconds
@:noCompletion @:dox(hide) private var _startCountdownCalled:Bool = false;
@:noCompletion @:dox(hide) private var _endSongCalled:Bool = false;
@:dox(hide)
var __vocalOffsetViolation:Float = 0;
@@ -739,11 +747,15 @@ class PlayState extends MusicBeatState
}
@:dox(hide) public override function createPost() {
startCutscene("", cutscene);
startCutscene("", cutscene, null, true);
super.createPost();
updateDiscordPresence();
// Make icons appear in the correct spot during cutscenes
healthBar.update(0);
updateIconPositions();
__updateNote_event = EventManager.get(NoteUpdateEvent);
scripts.call("postCreate");
@@ -761,10 +773,15 @@ class PlayState extends MusicBeatState
* @param prefix Custom prefix. Using `midsong-` will require you to for example rename your video cutscene to `songs/song/midsong-cutscene.mp4` instead of `songs/song/cutscene.mp4`
* @param cutsceneScriptPath Optional: Custom script path.
* @param callback Callback called after the cutscene ended. If equals to `null`, `startCountdown` will be called.
* @param checkSeen Bool that by default is false, if true and `seenCutscene` is also true, it won't play the cutscene but directly call `callback` (PS: `seenCutscene` becomes true if the cutscene gets played and `checkSeen` was true)
*/
public function startCutscene(prefix:String = "", ?cutsceneScriptPath:String, ?callback:Void->Void) {
if (callback == null)
callback = startCountdown;
public function startCutscene(prefix:String = "", ?cutsceneScriptPath:String, ?callback:Void->Void, checkSeen:Bool = false) {
if (callback == null) callback = startCountdown;
if (checkSeen && seenCutscene) {
callback();
return;
}
if (cutsceneScriptPath == null)
cutsceneScriptPath = Paths.script('songs/${SONG.meta.name.toLowerCase()}/${prefix}cutscene');
@@ -774,28 +791,25 @@ class PlayState extends MusicBeatState
var videoCutsceneAlt = Paths.file('songs/${PlayState.SONG.meta.name.toLowerCase()}/${prefix}cutscene.mp4');
var dialogue = Paths.file('songs/${PlayState.SONG.meta.name.toLowerCase()}/${prefix}dialogue.xml');
persistentUpdate = true;
var toCall:Void->Void = function() {
if(checkSeen) seenCutscene = true;
callback();
}
if (cutsceneScriptPath != null && Assets.exists(cutsceneScriptPath)) {
openSubState(new ScriptedCutscene(cutsceneScriptPath, function() {
callback();
}));
openSubState(new ScriptedCutscene(cutsceneScriptPath, toCall));
} else if (Assets.exists(dialogue)) {
MusicBeatState.skipTransIn = true;
openSubState(new DialogueCutscene(dialogue, function() {
callback();
}));
openSubState(new DialogueCutscene(dialogue, toCall));
} else if (Assets.exists(videoCutsceneAlt)) {
MusicBeatState.skipTransIn = true;
persistentUpdate = false;
openSubState(new VideoCutscene(videoCutsceneAlt, function() {
callback();
}));
openSubState(new VideoCutscene(videoCutsceneAlt, toCall));
persistentDraw = false;
} else if (Assets.exists(videoCutscene)) {
MusicBeatState.skipTransIn = true;
persistentUpdate = false;
openSubState(new VideoCutscene(videoCutscene, function() {
callback();
}));
openSubState(new VideoCutscene(videoCutscene, toCall));
persistentDraw = false;
} else
callback();
@@ -850,6 +864,7 @@ class PlayState extends MusicBeatState
sprite.scale.set(event.scale, event.scale);
sprite.updateHitbox();
sprite.screenCenter();
sprite.antialiasing = event.antialiasing;
add(sprite);
tween = FlxTween.tween(sprite, {y: sprite.y + 100, alpha: 0}, Conductor.crochet / 1000, {
ease: FlxEase.cubeInOut,
@@ -913,6 +928,11 @@ class PlayState extends MusicBeatState
Note.__customNoteTypeExists = [];
}
public static function resetSongInfos() {
deathCounter = 0;
seenCutscene = false;
}
@:dox(hide) private function generateSong(?songData:ChartData):Void
{
if (songData == null) songData = SONG;
@@ -1074,6 +1094,18 @@ class PlayState extends MusicBeatState
updateDiscordPresence();
}
function updateIconPositions() {
var iconOffset:Int = 26;
iconP1.x = healthBar.x + (healthBar.width * (FlxMath.remapToRange(healthBar.percent, 0, 100, 1, 0)) - iconOffset);
iconP2.x = healthBar.x + (healthBar.width * (FlxMath.remapToRange(healthBar.percent, 0, 100, 1, 0))) - (iconP2.width - iconOffset);
health = FlxMath.bound(health, 0, maxHealth);
iconP1.health = healthBar.percent / 100;
iconP2.health = 1 - (healthBar.percent / 100);
}
@:dox(hide)
override public function update(elapsed:Float)
{
@@ -1119,15 +1151,7 @@ class PlayState extends MusicBeatState
iconP1.updateHitbox();
iconP2.updateHitbox();
var iconOffset:Int = 26;
iconP1.x = healthBar.x + (healthBar.width * (FlxMath.remapToRange(healthBar.percent, 0, 100, 1, 0)) - iconOffset);
iconP2.x = healthBar.x + (healthBar.width * (FlxMath.remapToRange(healthBar.percent, 0, 100, 1, 0))) - (iconP2.width - iconOffset);
health = FlxMath.bound(health, 0, maxHealth);
iconP1.health = healthBar.percent / 100;
iconP2.health = 1 - (healthBar.percent / 100);
updateIconPositions();
if (startingSong)
{
@@ -1260,6 +1284,7 @@ class PlayState extends MusicBeatState
if (FlxG.sound.music != null)
FlxG.sound.music.stop();
deathCounter++;
openSubState(new GameOverSubstate(character == null ? 0 : character.x, character == null ? 0 : character.y, deathCharID, character != null ? character.isPlayer : true, gameOverSong, lossSFX, retrySFX));
}
@@ -1268,12 +1293,17 @@ class PlayState extends MusicBeatState
*/
public function endSong():Void
{
scripts.call("onSongEnd");
canPause = false;
inst.volume = 0;
vocals.volume = 0;
inst.pause();
vocals.pause();
if (!_endSongCalled) {
_endSongCalled = true;
canPause = false;
inst.volume = 0;
vocals.volume = 0;
inst.pause();
vocals.pause();
if (scripts.event("onSongEnd", new CancellableEvent()).cancelled) return;
}
if (validScore)
{
@@ -1289,6 +1319,7 @@ class PlayState extends MusicBeatState
}
startCutscene("end-", endCutscene, nextSong);
resetSongInfos();
}
private static inline function getSongChanges():Array<HighscoreChange> {
+3 -3
View File
@@ -77,7 +77,7 @@ class Stage extends FlxBasic implements IBeatReceiver {
case "sprite" | "spr" | "sparrow":
if (!node.has.sprite || !node.has.name) continue;
var spr = XMLUtil.createSpriteFromXML(node, spritesParentFolder, BEAT);
var spr = XMLUtil.createSpriteFromXML(node, spritesParentFolder, LOOP);
if (!node.has.zoomfactor && PlayState.instance != null)
spr.initialZoom = PlayState.instance.defaultCamZoom;
@@ -89,8 +89,8 @@ class Stage extends FlxBasic implements IBeatReceiver {
if ( !node.has.name || !node.has.width || !node.has.height) continue;
var spr = new FlxSprite(
(node.has.x) ? Std.parseFloat(node.att.x) : 0,
(node.has.y) ? Std.parseFloat(node.att.y) : 0
(node.has.x) ? Std.parseFloat(node.att.x).getDefault(0) : 0,
(node.has.y) ? Std.parseFloat(node.att.y).getDefault(0) : 0
);
(node.name == "solid" ? spr.makeSolid : spr.makeGraphic)(
@@ -23,7 +23,7 @@ class ScriptedCutscene extends Cutscene {
public override function create() {
super.create();
trace("fuck");
trace("fuck you");
script.call("create");
if (Std.isOfType(script, DummyScript)) {
Logs.trace('Could not find script for scripted cutscene at ${scriptPath}', ERROR, RED);
+1
View File
@@ -61,6 +61,7 @@ class GitarooPause extends MusicBeatState
}
else
{
PlayState.resetSongInfos();
FlxG.switchState(new MainMenuState());
}
}
+6 -3
View File
@@ -71,15 +71,17 @@ class PauseSubState extends MusicBeatSubstate
add(bg);
var levelInfo:FlxText = new FlxText(20, 15, 0, PlayState.SONG.meta.displayName, 32);
var levelDifficulty:FlxText = new FlxText(20, 15 + 32, 0, PlayState.difficulty.toUpperCase(), 32);
var multiplayerText:FlxText = new FlxText(20, 15 + 32 + 32, 0, PlayState.opponentMode ? 'OPPONENT MODE' : (PlayState.coopMode ? 'CO-OP MODE' : ''), 32);
var levelDifficulty:FlxText = new FlxText(20, 15, 0, PlayState.difficulty.toUpperCase(), 32);
var deathCounter:FlxText = new FlxText(20, 15, 0, "Blue balled: " + PlayState.deathCounter, 32);
var multiplayerText:FlxText = new FlxText(20, 15, 0, PlayState.opponentMode ? 'OPPONENT MODE' : (PlayState.coopMode ? 'CO-OP MODE' : ''), 32);
for(k=>label in [levelInfo, levelDifficulty, multiplayerText]) {
for(k=>label in [levelInfo, levelDifficulty, deathCounter, multiplayerText]) {
label.scrollFactor.set();
label.setFormat(Paths.font('vcr.ttf'), 32);
label.updateHitbox();
label.alpha = 0;
label.x = FlxG.width - (label.width + 20);
label.y = 15 + (32 * k);
FlxTween.tween(label, {alpha: 1, y: label.y + 5}, 0.4, {ease: FlxEase.quartInOut, startDelay: 0.3 * (k+1)});
add(label);
}
@@ -155,6 +157,7 @@ class PauseSubState extends MusicBeatSubstate
case "Exit to charter":
FlxG.switchState(new funkin.editors.charter.Charter(PlayState.SONG.meta.name, PlayState.difficulty, false));
case "Exit to menu":
PlayState.resetSongInfos();
CoolUtil.playMenuSong();
FlxG.switchState(PlayState.isStoryMode ? new StoryMenuState() : new FreeplayState());
}
@@ -25,14 +25,15 @@ class CreditsCodename extends funkin.options.OptionsScreen {
public function checkUpdate():Bool {
var curTime:Float = Date.now().getTime();
if(Options.lastUpdated != null && curTime < Options.lastUpdated + 120000) return false; // Fuck you Github rate limits - Nex_isDumb
if(Options.lastUpdated != null && curTime < Options.lastUpdated + 120000) return false; // Fuck you Github rate limits
Options.lastUpdated = curTime;
error = false;
//Main.execAsync(function() {
var idk = GitHub.getContributors("FNF-CNE-Devs", "CodenameEngine", function(e) {
error = true;
var errMsg:String = 'Error while trying to download contributors list:\n${CoolUtil.removeIP(e.message)}';
var errMsg:String = ~/\d+.\d+.\d+.\d+/.replace(e.message, "[Your IP]"); // Removing sensitive stuff
errMsg = 'Error while trying to download contributors list:\n$errMsg';
Logs.traceColored([Logs.logText(errMsg.replace('\n', ' '), RED)], ERROR);
funkin.backend.utils.NativeAPI.showMessageBox("Codename Engine Warning", errMsg, MSG_WARNING);
+4 -1
View File
@@ -27,6 +27,7 @@ class Options
public static var antialiasing:Bool = true;
public static var volume:Float = 1;
public static var week6PixelPerfect:Bool = true;
public static var gameplayShaders:Bool = true;
public static var colorHealthBar:Bool = true;
public static var lowMemoryMode:Bool = false;
public static var betaUpdates:Bool = false;
@@ -54,7 +55,9 @@ class Options
public static var contributors:Array<funkin.backend.system.github.GitHubContributor> = [];
public static var lastUpdated:Null<Float>;
// CHARTER
/**
* CHARTER
*/
public static var charterMetronomeEnabled:Bool = false;
public static var charterShowSections:Bool = true;
public static var charterShowBeats:Bool = true;
@@ -23,6 +23,10 @@ class AppearanceOptions extends OptionsScreen {
"Pixel Perfect Effect",
"If checked, Week 6 will have a pixel perfect effect to it enabled, aligning every pixel on the screen.",
"week6PixelPerfect"));
add(new Checkbox(
"Gameplay Shaders",
"If unchecked, gameplay shaders (visual effects like Thorns's Chromatic Aberration) wont be loaded; this may be helpful on weak devices.",
"gameplayShaders"));
add(new Checkbox(
"Flashing Menu",
"If unchecked, will disable menu flashing when you select an option in the Main Menu, and other flashs will be slower",