diff --git a/art/burns.png b/art/burns.png index 91f5ca62..bc004e04 100644 Binary files a/art/burns.png and b/art/burns.png differ diff --git a/art/design ideas/charter events/1.png b/art/design ideas/charter events/1.png index 64b22751..d63b0d7d 100644 Binary files a/art/design ideas/charter events/1.png and b/art/design ideas/charter events/1.png differ diff --git a/art/design ideas/charter events/2.png b/art/design ideas/charter events/2.png index 3abde9e4..8e5d1939 100644 Binary files a/art/design ideas/charter events/2.png and b/art/design ideas/charter events/2.png differ diff --git a/art/preloaderArt.png b/art/preloaderArt.png index 54498023..86ddbdf6 100644 Binary files a/art/preloaderArt.png and b/art/preloaderArt.png differ diff --git a/art/teaser discord.png b/art/teaser discord.png index 8eb306ae..58a2e421 100644 Binary files a/art/teaser discord.png and b/art/teaser discord.png differ diff --git a/art/teaser layers/teaser funkin logo.png b/art/teaser layers/teaser funkin logo.png index ee707fea..102cb82c 100644 Binary files a/art/teaser layers/teaser funkin logo.png and b/art/teaser layers/teaser funkin logo.png differ diff --git a/art/teaser layers/teaser question mark.png b/art/teaser layers/teaser question mark.png index 0dc7a17d..30f040df 100644 Binary files a/art/teaser layers/teaser question mark.png and b/art/teaser layers/teaser question mark.png differ diff --git a/art/teaser.png b/art/teaser.png index ff4ed3c6..82e424ad 100644 Binary files a/art/teaser.png and b/art/teaser.png differ diff --git a/art/thumbnailNewer.png b/art/thumbnailNewer.png index d5de62e8..daea6f62 100644 Binary files a/art/thumbnailNewer.png and b/art/thumbnailNewer.png differ diff --git a/art/veryimportant.png b/art/veryimportant.png index 7d6d6789..2fe31d88 100644 Binary files a/art/veryimportant.png and b/art/veryimportant.png differ diff --git a/assets/images/characters/bf-car.png b/assets/images/characters/bf-car.png index f84e7ef9..6623e0ea 100644 Binary files a/assets/images/characters/bf-car.png and b/assets/images/characters/bf-car.png differ diff --git a/assets/images/characters/bf-christmas.png b/assets/images/characters/bf-christmas.png index e1676f4d..9b6c1649 100644 Binary files a/assets/images/characters/bf-christmas.png and b/assets/images/characters/bf-christmas.png differ diff --git a/assets/images/characters/bf-dead.png b/assets/images/characters/bf-dead.png index 306c865a..1cff4b78 100644 Binary files a/assets/images/characters/bf-dead.png and b/assets/images/characters/bf-dead.png differ diff --git a/assets/images/characters/bf-holding-gf-dead.png b/assets/images/characters/bf-holding-gf-dead.png index 014b4183..7d15df94 100644 Binary files a/assets/images/characters/bf-holding-gf-dead.png and b/assets/images/characters/bf-holding-gf-dead.png differ diff --git a/assets/images/characters/bf-holding-gf.png b/assets/images/characters/bf-holding-gf.png index c1f6f1e8..d6482460 100644 Binary files a/assets/images/characters/bf-holding-gf.png and b/assets/images/characters/bf-holding-gf.png differ diff --git a/assets/images/characters/bf-pixel-dead.png b/assets/images/characters/bf-pixel-dead.png index 0ecc7915..bd8dbcb9 100644 Binary files a/assets/images/characters/bf-pixel-dead.png and b/assets/images/characters/bf-pixel-dead.png differ diff --git a/assets/images/characters/bf-pixel.png b/assets/images/characters/bf-pixel.png index a9675b9b..7abde04c 100644 Binary files a/assets/images/characters/bf-pixel.png and b/assets/images/characters/bf-pixel.png differ diff --git a/assets/images/characters/bf.png b/assets/images/characters/bf.png index 71f8ae96..ce924dd2 100644 Binary files a/assets/images/characters/bf.png and b/assets/images/characters/bf.png differ diff --git a/assets/images/characters/da.png b/assets/images/characters/da.png index af87c9c8..e711edb9 100644 Binary files a/assets/images/characters/da.png and b/assets/images/characters/da.png differ diff --git a/assets/images/characters/dad.png b/assets/images/characters/dad.png index 1bc637a4..5f678a27 100644 Binary files a/assets/images/characters/dad.png and b/assets/images/characters/dad.png differ diff --git a/assets/images/characters/gf-christmas/spritemap1.png b/assets/images/characters/gf-christmas/spritemap1.png index 41325d0a..0e81d9b9 100644 Binary files a/assets/images/characters/gf-christmas/spritemap1.png and b/assets/images/characters/gf-christmas/spritemap1.png differ diff --git a/assets/images/characters/gf-pixel.png b/assets/images/characters/gf-pixel.png index 6bb4d9b9..aaaf95ee 100644 Binary files a/assets/images/characters/gf-pixel.png and b/assets/images/characters/gf-pixel.png differ diff --git a/assets/images/characters/gf/spritemap1.png b/assets/images/characters/gf/spritemap1.png index 488bde86..226f417f 100644 Binary files a/assets/images/characters/gf/spritemap1.png and b/assets/images/characters/gf/spritemap1.png differ diff --git a/assets/images/characters/mom-car.png b/assets/images/characters/mom-car.png index 8bb65934..738df30f 100644 Binary files a/assets/images/characters/mom-car.png and b/assets/images/characters/mom-car.png differ diff --git a/assets/images/characters/mom.png b/assets/images/characters/mom.png index abf6cc6e..6cc21a8a 100644 Binary files a/assets/images/characters/mom.png and b/assets/images/characters/mom.png differ diff --git a/assets/images/characters/monster-christmas.png b/assets/images/characters/monster-christmas.png index 38795bb0..6537b944 100644 Binary files a/assets/images/characters/monster-christmas.png and b/assets/images/characters/monster-christmas.png differ diff --git a/assets/images/characters/monster.png b/assets/images/characters/monster.png index cb51575c..98c3eec0 100644 Binary files a/assets/images/characters/monster.png and b/assets/images/characters/monster.png differ diff --git a/assets/images/characters/parents-christmas.png b/assets/images/characters/parents-christmas.png index 947535e3..ced08d00 100644 Binary files a/assets/images/characters/parents-christmas.png and b/assets/images/characters/parents-christmas.png differ diff --git a/assets/images/characters/pico-speakers.png b/assets/images/characters/pico-speakers.png index 86d059a8..b4a2bc26 100644 Binary files a/assets/images/characters/pico-speakers.png and b/assets/images/characters/pico-speakers.png differ diff --git a/assets/images/characters/pico.png b/assets/images/characters/pico.png index 476e06ea..9a211b81 100644 Binary files a/assets/images/characters/pico.png and b/assets/images/characters/pico.png differ diff --git a/assets/images/characters/senpai.png b/assets/images/characters/senpai.png index c4ab53ad..99600632 100644 Binary files a/assets/images/characters/senpai.png and b/assets/images/characters/senpai.png differ diff --git a/assets/images/characters/spooky.png b/assets/images/characters/spooky.png index 742a7623..b79f6c8f 100644 Binary files a/assets/images/characters/spooky.png and b/assets/images/characters/spooky.png differ diff --git a/assets/images/characters/tankman.png b/assets/images/characters/tankman.png index 7f621ae8..b981a173 100644 Binary files a/assets/images/characters/tankman.png and b/assets/images/characters/tankman.png differ diff --git a/assets/images/credits/credit icon example.png b/assets/images/credits/credit icon example.png index 281fae23..cdc0034a 100644 Binary files a/assets/images/credits/credit icon example.png and b/assets/images/credits/credit icon example.png differ diff --git a/assets/images/dialogue/boxes/default.png b/assets/images/dialogue/boxes/default.png index e8dc2f84..3960d1ff 100644 Binary files a/assets/images/dialogue/boxes/default.png and b/assets/images/dialogue/boxes/default.png differ diff --git a/assets/images/dialogue/characters/boyfriend.png b/assets/images/dialogue/characters/boyfriend.png index f921159d..6ccc2829 100644 Binary files a/assets/images/dialogue/characters/boyfriend.png and b/assets/images/dialogue/characters/boyfriend.png differ diff --git a/assets/images/dialogue/characters/dad.png b/assets/images/dialogue/characters/dad.png index c1e21467..be0e5b77 100644 Binary files a/assets/images/dialogue/characters/dad.png and b/assets/images/dialogue/characters/dad.png differ diff --git a/assets/images/dialogue/characters/niko.png b/assets/images/dialogue/characters/niko.png index 81acec6e..b7fde571 100644 Binary files a/assets/images/dialogue/characters/niko.png and b/assets/images/dialogue/characters/niko.png differ diff --git a/assets/images/editors/character/WOAH.png b/assets/images/editors/character/WOAH.png index 824b1d1a..8d4b3b56 100644 Binary files a/assets/images/editors/character/WOAH.png and b/assets/images/editors/character/WOAH.png differ diff --git a/assets/images/editors/charter/event.png b/assets/images/editors/charter/event.png index c4f15c42..30860be9 100644 Binary files a/assets/images/editors/charter/event.png and b/assets/images/editors/charter/event.png differ diff --git a/assets/images/editors/charter/strumline-drag.png b/assets/images/editors/charter/strumline-drag.png index e886483f..e9f8b907 100644 Binary files a/assets/images/editors/charter/strumline-drag.png and b/assets/images/editors/charter/strumline-drag.png differ diff --git a/assets/images/editors/charter/strumline-info-bg.png b/assets/images/editors/charter/strumline-info-bg.png index ba43e8ce..01bf0072 100644 Binary files a/assets/images/editors/charter/strumline-info-bg.png and b/assets/images/editors/charter/strumline-info-bg.png differ diff --git a/assets/images/editors/ui/audio-time-empty.png b/assets/images/editors/ui/audio-time-empty.png index 3efd42bf..77f8fd21 100644 Binary files a/assets/images/editors/ui/audio-time-empty.png and b/assets/images/editors/ui/audio-time-empty.png differ diff --git a/assets/images/game/cutscenes/tank/stress-tankman/spritemap1.png b/assets/images/game/cutscenes/tank/stress-tankman/spritemap1.png index 22a814a2..3c19a130 100644 Binary files a/assets/images/game/cutscenes/tank/stress-tankman/spritemap1.png and b/assets/images/game/cutscenes/tank/stress-tankman/spritemap1.png differ diff --git a/assets/images/game/cutscenes/tank/ugh-tankman/spritemap1.png b/assets/images/game/cutscenes/tank/ugh-tankman/spritemap1.png index b871f1f7..787b49aa 100644 Binary files a/assets/images/game/cutscenes/tank/ugh-tankman/spritemap1.png and b/assets/images/game/cutscenes/tank/ugh-tankman/spritemap1.png differ diff --git a/assets/images/game/cutscenes/weeb/senpaiCrazy.png b/assets/images/game/cutscenes/weeb/senpaiCrazy.png index c35d2912..752aa3d1 100644 Binary files a/assets/images/game/cutscenes/weeb/senpaiCrazy.png and b/assets/images/game/cutscenes/weeb/senpaiCrazy.png differ diff --git a/assets/images/game/notes/default.png b/assets/images/game/notes/default.png index 6cd38f99..3201fe30 100644 Binary files a/assets/images/game/notes/default.png and b/assets/images/game/notes/default.png differ diff --git a/assets/images/game/restart.png b/assets/images/game/restart.png index 34ce8252..6ae807a3 100644 Binary files a/assets/images/game/restart.png and b/assets/images/game/restart.png differ diff --git a/assets/images/game/score/bad.png b/assets/images/game/score/bad.png index 77c55576..47d81323 100644 Binary files a/assets/images/game/score/bad.png and b/assets/images/game/score/bad.png differ diff --git a/assets/images/game/score/num0.png b/assets/images/game/score/num0.png index 80b601e8..b3513a75 100644 Binary files a/assets/images/game/score/num0.png and b/assets/images/game/score/num0.png differ diff --git a/assets/images/game/score/num4.png b/assets/images/game/score/num4.png index ae525c87..72234aef 100644 Binary files a/assets/images/game/score/num4.png and b/assets/images/game/score/num4.png differ diff --git a/assets/images/game/score/num6.png b/assets/images/game/score/num6.png index 682e2208..498ce3b0 100644 Binary files a/assets/images/game/score/num6.png and b/assets/images/game/score/num6.png differ diff --git a/assets/images/game/score/num7.png b/assets/images/game/score/num7.png index 6319ffff..4a2ce04a 100644 Binary files a/assets/images/game/score/num7.png and b/assets/images/game/score/num7.png differ diff --git a/assets/images/game/score/shit.png b/assets/images/game/score/shit.png index 7427ac85..4b2450b8 100644 Binary files a/assets/images/game/score/shit.png and b/assets/images/game/score/shit.png differ diff --git a/assets/images/game/splashes/default.png b/assets/images/game/splashes/default.png index 6071b524..3cd0fc4a 100644 Binary files a/assets/images/game/splashes/default.png and b/assets/images/game/splashes/default.png differ diff --git a/assets/images/game/splashes/secret.png b/assets/images/game/splashes/secret.png index f0eccb47..5e9cdf2d 100644 Binary files a/assets/images/game/splashes/secret.png and b/assets/images/game/splashes/secret.png differ diff --git a/assets/images/icons/bf-old/icon.png b/assets/images/icons/bf-old/icon.png index ce349958..df350d4a 100644 Binary files a/assets/images/icons/bf-old/icon.png and b/assets/images/icons/bf-old/icon.png differ diff --git a/assets/images/icons/bf/icon.png b/assets/images/icons/bf/icon.png index 426609fc..53f9ccaa 100644 Binary files a/assets/images/icons/bf/icon.png and b/assets/images/icons/bf/icon.png differ diff --git a/assets/images/icons/dad/icon.png b/assets/images/icons/dad/icon.png index c252c657..cffed6f4 100644 Binary files a/assets/images/icons/dad/icon.png and b/assets/images/icons/dad/icon.png differ diff --git a/assets/images/icons/gf/icon.png b/assets/images/icons/gf/icon.png index 4b65187a..1493d177 100644 Binary files a/assets/images/icons/gf/icon.png and b/assets/images/icons/gf/icon.png differ diff --git a/assets/images/icons/pico/icon.png b/assets/images/icons/pico/icon.png index 8a89b427..3a6322e7 100644 Binary files a/assets/images/icons/pico/icon.png and b/assets/images/icons/pico/icon.png differ diff --git a/assets/images/menus/alphabet-bold.png b/assets/images/menus/alphabet-bold.png index 3979d25c..531254d2 100644 Binary files a/assets/images/menus/alphabet-bold.png and b/assets/images/menus/alphabet-bold.png differ diff --git a/assets/images/menus/alphabet.png b/assets/images/menus/alphabet.png index 41151548..a35a7449 100644 Binary files a/assets/images/menus/alphabet.png and b/assets/images/menus/alphabet.png differ diff --git a/assets/images/menus/mainmenu/freeplay.png b/assets/images/menus/mainmenu/freeplay.png index 361ddfa7..2e4bb436 100644 Binary files a/assets/images/menus/mainmenu/freeplay.png and b/assets/images/menus/mainmenu/freeplay.png differ diff --git a/assets/images/menus/mainmenu/options.png b/assets/images/menus/mainmenu/options.png index 20688ecc..abaa54ef 100644 Binary files a/assets/images/menus/mainmenu/options.png and b/assets/images/menus/mainmenu/options.png differ diff --git a/assets/images/menus/menuTransparent.png b/assets/images/menus/menuTransparent.png index d0f3f731..d6b275fb 100644 Binary files a/assets/images/menus/menuTransparent.png and b/assets/images/menus/menuTransparent.png differ diff --git a/assets/images/menus/options/checkboxThingie.png b/assets/images/menus/options/checkboxThingie.png index 7edb11c2..cf089f6c 100644 Binary files a/assets/images/menus/options/checkboxThingie.png and b/assets/images/menus/options/checkboxThingie.png differ diff --git a/assets/images/menus/pauseAlt/bfLol.png b/assets/images/menus/pauseAlt/bfLol.png index 901cca03..993618ba 100644 Binary files a/assets/images/menus/pauseAlt/bfLol.png and b/assets/images/menus/pauseAlt/bfLol.png differ diff --git a/assets/images/menus/pauseAlt/pauseBG.png b/assets/images/menus/pauseAlt/pauseBG.png index 7d1b9ba4..32d0d92c 100644 Binary files a/assets/images/menus/pauseAlt/pauseBG.png and b/assets/images/menus/pauseAlt/pauseBG.png differ diff --git a/assets/images/menus/pauseAlt/pauseUI.png b/assets/images/menus/pauseAlt/pauseUI.png index 8b7ca92d..63b22e75 100644 Binary files a/assets/images/menus/pauseAlt/pauseUI.png and b/assets/images/menus/pauseAlt/pauseUI.png differ diff --git a/assets/images/menus/storymenu/assets.png b/assets/images/menus/storymenu/assets.png index b4f5c1e7..097c8391 100644 Binary files a/assets/images/menus/storymenu/assets.png and b/assets/images/menus/storymenu/assets.png differ diff --git a/assets/images/menus/storymenu/characters/bf.png b/assets/images/menus/storymenu/characters/bf.png index 1a74050c..48da8dff 100644 Binary files a/assets/images/menus/storymenu/characters/bf.png and b/assets/images/menus/storymenu/characters/bf.png differ diff --git a/assets/images/menus/storymenu/characters/dad.png b/assets/images/menus/storymenu/characters/dad.png index 66026c5e..d571774f 100644 Binary files a/assets/images/menus/storymenu/characters/dad.png and b/assets/images/menus/storymenu/characters/dad.png differ diff --git a/assets/images/menus/storymenu/characters/gf.png b/assets/images/menus/storymenu/characters/gf.png index 84a3736a..ae3093ef 100644 Binary files a/assets/images/menus/storymenu/characters/gf.png and b/assets/images/menus/storymenu/characters/gf.png differ diff --git a/assets/images/menus/storymenu/characters/mom.png b/assets/images/menus/storymenu/characters/mom.png index 91dbec8d..57c4ed03 100644 Binary files a/assets/images/menus/storymenu/characters/mom.png and b/assets/images/menus/storymenu/characters/mom.png differ diff --git a/assets/images/menus/storymenu/characters/parents-christmas.png b/assets/images/menus/storymenu/characters/parents-christmas.png index 58ee07bd..a8b27578 100644 Binary files a/assets/images/menus/storymenu/characters/parents-christmas.png and b/assets/images/menus/storymenu/characters/parents-christmas.png differ diff --git a/assets/images/menus/storymenu/characters/senpai.png b/assets/images/menus/storymenu/characters/senpai.png index 938adc4e..ab2366fa 100644 Binary files a/assets/images/menus/storymenu/characters/senpai.png and b/assets/images/menus/storymenu/characters/senpai.png differ diff --git a/assets/images/menus/storymenu/characters/spooky.png b/assets/images/menus/storymenu/characters/spooky.png index ee6aa742..8b6fc801 100644 Binary files a/assets/images/menus/storymenu/characters/spooky.png and b/assets/images/menus/storymenu/characters/spooky.png differ diff --git a/assets/images/menus/storymenu/characters/tankman.png b/assets/images/menus/storymenu/characters/tankman.png index 12a0211c..ec9fc55a 100644 Binary files a/assets/images/menus/storymenu/characters/tankman.png and b/assets/images/menus/storymenu/characters/tankman.png differ diff --git a/assets/images/menus/storymenu/weeks/week1.png b/assets/images/menus/storymenu/weeks/week1.png index f1563911..f3246757 100644 Binary files a/assets/images/menus/storymenu/weeks/week1.png and b/assets/images/menus/storymenu/weeks/week1.png differ diff --git a/assets/images/menus/storymenu/weeks/week3.png b/assets/images/menus/storymenu/weeks/week3.png index 7a17b5d3..c1b43251 100644 Binary files a/assets/images/menus/storymenu/weeks/week3.png and b/assets/images/menus/storymenu/weeks/week3.png differ diff --git a/assets/images/menus/titlescreen/gf.png b/assets/images/menus/titlescreen/gf.png index b8467282..2208cd48 100644 Binary files a/assets/images/menus/titlescreen/gf.png and b/assets/images/menus/titlescreen/gf.png differ diff --git a/assets/images/menus/titlescreen/titleEnter.png b/assets/images/menus/titlescreen/titleEnter.png index 634310a2..957e5b75 100644 Binary files a/assets/images/menus/titlescreen/titleEnter.png and b/assets/images/menus/titlescreen/titleEnter.png differ diff --git a/assets/images/menus/update/bf.png b/assets/images/menus/update/bf.png index df7664a9..bba8bbf6 100644 Binary files a/assets/images/menus/update/bf.png and b/assets/images/menus/update/bf.png differ diff --git a/assets/images/stages/default/stageback.png b/assets/images/stages/default/stageback.png index 3d4565b4..3baea3d2 100644 Binary files a/assets/images/stages/default/stageback.png and b/assets/images/stages/default/stageback.png differ diff --git a/assets/images/stages/default/stagecurtains.png b/assets/images/stages/default/stagecurtains.png index 47c36498..58574ae4 100644 Binary files a/assets/images/stages/default/stagecurtains.png and b/assets/images/stages/default/stagecurtains.png differ diff --git a/assets/images/stages/default/stagefront.png b/assets/images/stages/default/stagefront.png index 0cb1f56d..8176a71f 100644 Binary files a/assets/images/stages/default/stagefront.png and b/assets/images/stages/default/stagefront.png differ diff --git a/assets/images/stages/limo/bgLimo.png b/assets/images/stages/limo/bgLimo.png index 292b1177..54b58d04 100644 Binary files a/assets/images/stages/limo/bgLimo.png and b/assets/images/stages/limo/bgLimo.png differ diff --git a/assets/images/stages/limo/fastCarLol.png b/assets/images/stages/limo/fastCarLol.png index 88ef908e..66be24ad 100644 Binary files a/assets/images/stages/limo/fastCarLol.png and b/assets/images/stages/limo/fastCarLol.png differ diff --git a/assets/images/stages/limo/limoDrive.png b/assets/images/stages/limo/limoDrive.png index 58ad8af0..a7fd6db6 100644 Binary files a/assets/images/stages/limo/limoDrive.png and b/assets/images/stages/limo/limoDrive.png differ diff --git a/assets/images/stages/limo/limoOverlay.png b/assets/images/stages/limo/limoOverlay.png index 560a5687..d44db7ca 100644 Binary files a/assets/images/stages/limo/limoOverlay.png and b/assets/images/stages/limo/limoOverlay.png differ diff --git a/assets/images/stages/limo/limoSunset.png b/assets/images/stages/limo/limoSunset.png index 476f22f5..e1c2c23a 100644 Binary files a/assets/images/stages/limo/limoSunset.png and b/assets/images/stages/limo/limoSunset.png differ diff --git a/assets/images/stages/mall/bgEscalator.png b/assets/images/stages/mall/bgEscalator.png index a75d918d..6cbae26c 100644 Binary files a/assets/images/stages/mall/bgEscalator.png and b/assets/images/stages/mall/bgEscalator.png differ diff --git a/assets/images/stages/mall/bgWalls.png b/assets/images/stages/mall/bgWalls.png index b7613cbf..b17430a2 100644 Binary files a/assets/images/stages/mall/bgWalls.png and b/assets/images/stages/mall/bgWalls.png differ diff --git a/assets/images/stages/mall/bottomBop.png b/assets/images/stages/mall/bottomBop.png index f044268c..30cfe478 100644 Binary files a/assets/images/stages/mall/bottomBop.png and b/assets/images/stages/mall/bottomBop.png differ diff --git a/assets/images/stages/mall/christmasWall.png b/assets/images/stages/mall/christmasWall.png index 59ec77cd..906162e4 100644 Binary files a/assets/images/stages/mall/christmasWall.png and b/assets/images/stages/mall/christmasWall.png differ diff --git a/assets/images/stages/mall/evilBG.png b/assets/images/stages/mall/evilBG.png index 6ed477d1..e7250675 100644 Binary files a/assets/images/stages/mall/evilBG.png and b/assets/images/stages/mall/evilBG.png differ diff --git a/assets/images/stages/mall/evilSnow.png b/assets/images/stages/mall/evilSnow.png index bae3f246..912030a8 100644 Binary files a/assets/images/stages/mall/evilSnow.png and b/assets/images/stages/mall/evilSnow.png differ diff --git a/assets/images/stages/mall/santa.png b/assets/images/stages/mall/santa.png index 1aeeb595..4399b51c 100644 Binary files a/assets/images/stages/mall/santa.png and b/assets/images/stages/mall/santa.png differ diff --git a/assets/images/stages/mall/upperBop.png b/assets/images/stages/mall/upperBop.png index 606c5aae..2296eb0b 100644 Binary files a/assets/images/stages/mall/upperBop.png and b/assets/images/stages/mall/upperBop.png differ diff --git a/assets/images/stages/philly/city.png b/assets/images/stages/philly/city.png index 883b2ad6..e54e214a 100644 Binary files a/assets/images/stages/philly/city.png and b/assets/images/stages/philly/city.png differ diff --git a/assets/images/stages/philly/sky.png b/assets/images/stages/philly/sky.png index 722b6579..95bf430e 100644 Binary files a/assets/images/stages/philly/sky.png and b/assets/images/stages/philly/sky.png differ diff --git a/assets/images/stages/philly/street.png b/assets/images/stages/philly/street.png index a8e54f1b..93082101 100644 Binary files a/assets/images/stages/philly/street.png and b/assets/images/stages/philly/street.png differ diff --git a/assets/images/stages/philly/train.png b/assets/images/stages/philly/train.png index 7df97b47..85b43f99 100644 Binary files a/assets/images/stages/philly/train.png and b/assets/images/stages/philly/train.png differ diff --git a/assets/images/stages/school/bgFreaks.png b/assets/images/stages/school/bgFreaks.png index f3dc46b3..253ed427 100644 Binary files a/assets/images/stages/school/bgFreaks.png and b/assets/images/stages/school/bgFreaks.png differ diff --git a/assets/images/stages/school/ui/arrows-pixels.png b/assets/images/stages/school/ui/arrows-pixels.png index 93be11c6..a1a7fd09 100644 Binary files a/assets/images/stages/school/ui/arrows-pixels.png and b/assets/images/stages/school/ui/arrows-pixels.png differ diff --git a/assets/images/stages/school/ui/pixel-secret-splashes.png b/assets/images/stages/school/ui/pixel-secret-splashes.png index 6026fd13..53f3c9be 100644 Binary files a/assets/images/stages/school/ui/pixel-secret-splashes.png and b/assets/images/stages/school/ui/pixel-secret-splashes.png differ diff --git a/assets/images/stages/school/ui/pixel-splashes.png b/assets/images/stages/school/ui/pixel-splashes.png index 214c836d..3b864bee 100644 Binary files a/assets/images/stages/school/ui/pixel-splashes.png and b/assets/images/stages/school/ui/pixel-splashes.png differ diff --git a/assets/images/stages/school/weebTrees.png b/assets/images/stages/school/weebTrees.png index b9a3ab79..efb9e031 100644 Binary files a/assets/images/stages/school/weebTrees.png and b/assets/images/stages/school/weebTrees.png differ diff --git a/assets/images/stages/spooky/halloween_bg.png b/assets/images/stages/spooky/halloween_bg.png index d4d055ad..8c85c8a7 100644 Binary files a/assets/images/stages/spooky/halloween_bg.png and b/assets/images/stages/spooky/halloween_bg.png differ diff --git a/assets/images/stages/tank/smokeLeft.png b/assets/images/stages/tank/smokeLeft.png index a1de4783..98aee0ca 100644 Binary files a/assets/images/stages/tank/smokeLeft.png and b/assets/images/stages/tank/smokeLeft.png differ diff --git a/assets/images/stages/tank/smokeRight.png b/assets/images/stages/tank/smokeRight.png index 0605d548..a7cb19a7 100644 Binary files a/assets/images/stages/tank/smokeRight.png and b/assets/images/stages/tank/smokeRight.png differ diff --git a/assets/images/stages/tank/tankClouds.png b/assets/images/stages/tank/tankClouds.png index 1981f2c1..b6d5b7ce 100644 Binary files a/assets/images/stages/tank/tankClouds.png and b/assets/images/stages/tank/tankClouds.png differ diff --git a/assets/images/stages/tank/tankGround.png b/assets/images/stages/tank/tankGround.png index 53765eee..6b2c3231 100644 Binary files a/assets/images/stages/tank/tankGround.png and b/assets/images/stages/tank/tankGround.png differ diff --git a/assets/images/stages/tank/tankRuins.png b/assets/images/stages/tank/tankRuins.png index 5837a69c..59551099 100644 Binary files a/assets/images/stages/tank/tankRuins.png and b/assets/images/stages/tank/tankRuins.png differ diff --git a/assets/images/stages/tank/tankSky.png b/assets/images/stages/tank/tankSky.png index dee84e7a..87cedea8 100644 Binary files a/assets/images/stages/tank/tankSky.png and b/assets/images/stages/tank/tankSky.png differ diff --git a/assets/images/stages/tank/tankmanKilled1.png b/assets/images/stages/tank/tankmanKilled1.png index abf3e404..9ecf9ad4 100644 Binary files a/assets/images/stages/tank/tankmanKilled1.png and b/assets/images/stages/tank/tankmanKilled1.png differ diff --git a/source/funkin/backend/scripting/HScript.hx b/source/funkin/backend/scripting/HScript.hx index 5cbedded..f2f41040 100644 --- a/source/funkin/backend/scripting/HScript.hx +++ b/source/funkin/backend/scripting/HScript.hx @@ -128,7 +128,7 @@ class HScript extends Script { interp.execute(expr); call("new", []); } - + #if GLOBAL_SCRIPT funkin.backend.scripting.GlobalScript.call("onScriptSetup", [this, "hscript"]); #end diff --git a/source/funkin/backend/scripting/events/gameplay/RatingUpdateEvent.hx b/source/funkin/backend/scripting/events/gameplay/RatingUpdateEvent.hx index 59a3305d..06a8a53a 100644 --- a/source/funkin/backend/scripting/events/gameplay/RatingUpdateEvent.hx +++ b/source/funkin/backend/scripting/events/gameplay/RatingUpdateEvent.hx @@ -2,12 +2,12 @@ package funkin.backend.scripting.events.gameplay; final class RatingUpdateEvent extends CancellableEvent { /** - New combo + New combo (may be null if no ratings were found) **/ - public var rating:ComboRating; + public var rating:Null; /** Old combo (may be null) **/ - public var oldRating:ComboRating; + public var oldRating:Null; } \ No newline at end of file diff --git a/source/funkin/backend/utils/CoolUtil.hx b/source/funkin/backend/utils/CoolUtil.hx index 44cbf8e6..29765e6d 100644 --- a/source/funkin/backend/utils/CoolUtil.hx +++ b/source/funkin/backend/utils/CoolUtil.hx @@ -645,11 +645,11 @@ class CoolUtil * @param spr Sprite to load the graphic for * @param path Path to the graphic */ - public static function loadAnimatedGraphic(spr:FlxSprite, path:String) { + public static function loadAnimatedGraphic(spr:FlxSprite, path:String, fps:Float = 24.0) { spr.frames = Paths.getFrames(path, 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.add("idle", [for(i in 0...spr.frames.frames.length) i], fps, true); spr.animation.play("idle"); } diff --git a/source/funkin/game/PlayState.hx b/source/funkin/game/PlayState.hx index 0e12d20a..47bb697a 100644 --- a/source/funkin/game/PlayState.hx +++ b/source/funkin/game/PlayState.hx @@ -288,6 +288,11 @@ class PlayState extends MusicBeatState * Opponent's icon */ public var iconP2:HealthIcon; + /** + * Every active icon that will be updated during gameplay (defaults to `iconP1` and `iconP1` between `create` and `postCreate` in scripts) + */ + public var iconArray:Array = []; + /** * Camera for the HUD (notes, misses). */ @@ -540,10 +545,10 @@ class PlayState extends MusicBeatState */ public function updateRating() { var rating = null; - var acc = get_accuracy(); + var acc = accuracy; // caching since it has a getter with an operation - Nex - for(e in comboRatings) - if (e.percent <= acc && (rating == null || rating.percent < e.percent)) + if (comboRatings != null && comboRatings.length > 0) for (e in comboRatings) + if ((e.percent <= acc && e.maxMisses >= misses) && (rating == null || (rating.percent < e.percent && e.maxMisses >= misses))) rating = e; var event = gameAndCharsEvent("onRatingUpdate", EventManager.get(RatingUpdateEvent).recycle(rating, curRating)); @@ -790,9 +795,9 @@ class PlayState extends MusicBeatState if (Flags.DEFAULT_HEALTH != null) health = Flags.DEFAULT_HEALTH; else health = maxHealth / 2; - iconP1 = new HealthIcon(boyfriend != null ? boyfriend.getIcon() : Flags.DEFAULT_HEALTH_ICON, true); - iconP2 = new HealthIcon(dad != null ? dad.getIcon() : Flags.DEFAULT_HEALTH_ICON, false); - for(icon in [iconP1, iconP2]) { + iconArray.push(iconP1 = new HealthIcon(boyfriend != null ? boyfriend.getIcon() : Flags.DEFAULT_HEALTH_ICON, true)); + iconArray.push(iconP2 = new HealthIcon(dad != null ? dad.getIcon() : Flags.DEFAULT_HEALTH_ICON, false)); + for (icon in iconArray) { icon.y = healthBar.y - (icon.height / 2); add(icon); } @@ -809,7 +814,8 @@ class PlayState extends MusicBeatState scoreTxt.alignment = RIGHT; missesTxt.alignment = CENTER; accuracyTxt.alignment = LEFT; - updateRatingStuff(); + if (updateRatingStuff != null) + updateRatingStuff(); for(e in [healthBar, healthBarBG, iconP1, iconP2, scoreTxt, missesTxt, accuracyTxt]) e.cameras = [camHUD]; @@ -1283,7 +1289,7 @@ class PlayState extends MusicBeatState iconP2.health = 1 - (healthBarPercent / 100); } - function updateRatingStuff() { + dynamic function updateRatingStuff() { scoreTxt.text = 'Score:$songScore'; missesTxt.text = '${comboBreaks ? "Combo Breaks" : "Misses"}:$misses'; @@ -1313,7 +1319,8 @@ class PlayState extends MusicBeatState return; } - updateRatingStuff(); + if (updateRatingStuff != null) + updateRatingStuff(); if (canAccessDebugMenus) { if (chartingMode && FlxG.keys.justPressed.SEVEN) { @@ -1327,24 +1334,30 @@ class PlayState extends MusicBeatState } if (doIconBop) - for (icon in [iconP1, iconP2]) + for (icon in iconArray) if (icon.updateBump != null) icon.updateBump(); if (updateIconPositions != null) updateIconPositions(); - if (startingSong) - { - if (startedCountdown) - { + if (startingSong) { + if (startedCountdown) { Conductor.songPosition += Conductor.songOffset + elapsed * 1000; if (Conductor.songPosition >= 0) startSong(); } } else if (FlxG.sound.music != null) { var instTime = FlxG.sound.music.time; - var isOffsync = vocals.time != instTime || [for(strumLine in strumLines.members) strumLine.vocals.time != instTime].contains(true); + var isOffsync:Bool = vocals.time != instTime; + if(!isOffsync) { + for(strumLine in strumLines.members) { + if(strumLine.vocals.time != instTime) { + isOffsync = true; + break; + } + } + } __vocalOffsetViolation = Math.max(0, __vocalOffsetViolation + (isOffsync ? elapsed : -elapsed / 2)); if (__vocalOffsetViolation > Flags.VOCAL_OFFSET_VIOLATION_THRESHOLD) { resyncVocals(); @@ -1358,11 +1371,17 @@ class PlayState extends MusicBeatState if (controls.PAUSE && startedCountdown && canPause) pauseGame(); - if (generatedMusic) - moveCamera(); + if (generatedMusic && strumLines.members[curCameraTarget] != null) { + var data:CamPosData = getStrumlineCamPos(curCameraTarget); + if (data.amount > 0) { + var event = scripts.event("onCameraMove", EventManager.get(CamMoveEvent).recycle(data.pos, strumLines.members[curCameraTarget], data.amount)); + if (!event.cancelled) + camFollow.setPosition(event.position.x, event.position.y); + } + data.put(); + } - if (camZooming) - { + if (camZooming) { FlxG.camera.zoom = lerp(FlxG.camera.zoom, defaultCamZoom, camGameZoomLerp); camHUD.zoom = lerp(camHUD.zoom, defaultHudZoom, camHUDZoomLerp); } @@ -1396,41 +1415,41 @@ class PlayState extends MusicBeatState scripts.event("postDraw", e); } - public function moveCamera() if (strumLines.members[curCameraTarget] != null) { - var pos = FlxPoint.weak(); - var amount = calculateCamPos(strumLines.members[curCameraTarget].characters, pos); - - if (amount > 0) { - var event = gameAndCharsEvent("onCameraMove", EventManager.get(CamMoveEvent).recycle(pos, strumLines.members[curCameraTarget], amount)); - if (!event.cancelled) - camFollow.setPosition(pos.x, pos.y); - } - pos.put(); + /** + * Returns the camera position of the specified strumline. + * @param strumLine The strumline to get the camera position of. + * @param pos The position to put the camera position in. If `null`, a new FlxPoint will be created. + * @param ignoreInvisible Whenever invisible characters should be ignored. + **/ + public inline function getStrumlineCamPos(strumLine:Int, ?pos:FlxPoint = null, ?ignoreInvisible:Bool = true):CamPosData { + return getCharactersCamPos(strumLines.members[strumLine].characters, pos, ignoreInvisible); } /** - * Function used to calculate the camera position based on the characters. - * - * This function is dynamic, which means you can do `calculateCamPos = function(chars:Array, pos:FlxPoint) {}` in scripts. - */ - public dynamic function calculateCamPos(chars:Array, pos:FlxPoint):Int { - var r:Int = 0; - for (c in chars) { - if (c == null || !c.visible) continue; + * Returns the camera position of the specified characters. + * @param chars The characters to get the camera position of. + * @param pos The position to put the camera position in. If `null`, a new FlxPoint will be created. + * @param ignoreInvisible Whenever invisible characters should be ignored. + **/ + public function getCharactersCamPos(chars:Array, ?pos:FlxPoint = null, ?ignoreInvisible:Bool = true):CamPosData { + if (pos == null) pos = FlxPoint.get(); + var amount = 0; + for(c in chars) { + if (c == null || (ignoreInvisible && !c.visible)) continue; var cpos = c.getCameraPosition(); pos.x += cpos.x; pos.y += cpos.y; - r++; + amount++; + //cpos.put(); // not actually in the pool, so no need } - - if (r > 0) { - pos.x /= r; - pos.y /= r; + if (amount > 0) { + pos.x /= amount; + pos.y /= amount; } - - return r; + return new CamPosData(pos, amount); } + public var eventsTween:Map = []; public function executeEvent(event:ChartEvent) @:privateAccess { @@ -1988,7 +2007,7 @@ class PlayState extends MusicBeatState } if (doIconBop) - for (icon in [iconP1, iconP2]) + for (icon in iconArray) if (icon.bump != null) icon.bump(); @@ -2127,8 +2146,10 @@ final class ComboRating { public var percent:Float; public var rating:String; public var color:FlxColor; + public var maxMisses:Float; // Float since it could be Math.POSITIVE_INFINITY - Nex - public function new(percent:Float, rating:String, color:FlxColor) { + public function new(?percent:Float, ?rating:String, ?color:FlxColor, ?misses:Float) { + maxMisses = misses == null || Math.isNaN(misses) ? Math.POSITIVE_INFINITY : misses; this.percent = percent; this.rating = rating; this.color = color; @@ -2143,3 +2164,28 @@ typedef PlayStateTransitionData = { var camFollowY:Float; var camZoom:Float; } + +class CamPosData { + /** + * The camera position. + **/ + public var pos:FlxPoint; + /** + * The amount of characters that was involved in the calculation. + **/ + public var amount:Int; + + public function new(pos:FlxPoint, amount:Int) { + this.pos = pos; + this.amount = amount; + } + + /** + * Puts the position back into the pool, making it reusable. + **/ + public function put() { + if(pos == null) return; + pos.put(); + pos = null; + } +} \ No newline at end of file