commit 0ee0fa5a53c6ed4e41a630c6f14c2a3f8c26bb52 Author: DaInfLoop Date: Wed Apr 10 21:47:46 2024 +0000 stuff from before diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0bb986 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/bun.lockb +/node_modules \ No newline at end of file diff --git a/LilitaOne.ttf b/LilitaOne.ttf new file mode 100644 index 0000000..091ddf9 Binary files /dev/null and b/LilitaOne.ttf differ diff --git a/assets/actionbgs/Attack Left.png b/assets/actionbgs/Attack Left.png new file mode 100644 index 0000000..698a8e7 Binary files /dev/null and b/assets/actionbgs/Attack Left.png differ diff --git a/assets/actionbgs/Attack Right.png b/assets/actionbgs/Attack Right.png new file mode 100644 index 0000000..0e27e82 Binary files /dev/null and b/assets/actionbgs/Attack Right.png differ diff --git a/assets/actionbgs/Defend Left.png b/assets/actionbgs/Defend Left.png new file mode 100644 index 0000000..806a82f Binary files /dev/null and b/assets/actionbgs/Defend Left.png differ diff --git a/assets/actionbgs/Defend Right.png b/assets/actionbgs/Defend Right.png new file mode 100644 index 0000000..6e79d68 Binary files /dev/null and b/assets/actionbgs/Defend Right.png differ diff --git a/assets/actionbgs/Item Left.png b/assets/actionbgs/Item Left.png new file mode 100644 index 0000000..7a250f1 Binary files /dev/null and b/assets/actionbgs/Item Left.png differ diff --git a/assets/actionbgs/Item Right.png b/assets/actionbgs/Item Right.png new file mode 100644 index 0000000..374d485 Binary files /dev/null and b/assets/actionbgs/Item Right.png differ diff --git a/assets/backs/Battle Hammer Black.png b/assets/backs/Battle Hammer Black.png new file mode 100644 index 0000000..c100a35 Binary files /dev/null and b/assets/backs/Battle Hammer Black.png differ diff --git a/assets/backs/Battle Hammer Blue.png b/assets/backs/Battle Hammer Blue.png new file mode 100644 index 0000000..c25da61 Binary files /dev/null and b/assets/backs/Battle Hammer Blue.png differ diff --git a/assets/backs/Battle Hammer Green.png b/assets/backs/Battle Hammer Green.png new file mode 100644 index 0000000..0c51323 Binary files /dev/null and b/assets/backs/Battle Hammer Green.png differ diff --git a/assets/backs/Battle Hammer Orange.png b/assets/backs/Battle Hammer Orange.png new file mode 100644 index 0000000..dcd11d8 Binary files /dev/null and b/assets/backs/Battle Hammer Orange.png differ diff --git a/assets/backs/Battle Hammer Pink.png b/assets/backs/Battle Hammer Pink.png new file mode 100644 index 0000000..ca58bf9 Binary files /dev/null and b/assets/backs/Battle Hammer Pink.png differ diff --git a/assets/backs/Battle Hammer Purple.png b/assets/backs/Battle Hammer Purple.png new file mode 100644 index 0000000..ec8c3d4 Binary files /dev/null and b/assets/backs/Battle Hammer Purple.png differ diff --git a/assets/backs/Battle Hammer Red.png b/assets/backs/Battle Hammer Red.png new file mode 100644 index 0000000..fbe91f6 Binary files /dev/null and b/assets/backs/Battle Hammer Red.png differ diff --git a/assets/backs/Battle Hammer White.png b/assets/backs/Battle Hammer White.png new file mode 100644 index 0000000..ffe0526 Binary files /dev/null and b/assets/backs/Battle Hammer White.png differ diff --git a/assets/backs/Battle Hammer Yellow.png b/assets/backs/Battle Hammer Yellow.png new file mode 100644 index 0000000..e1e08c0 Binary files /dev/null and b/assets/backs/Battle Hammer Yellow.png differ diff --git a/assets/backs/Battle Scythe Black.png b/assets/backs/Battle Scythe Black.png new file mode 100644 index 0000000..6947bb1 Binary files /dev/null and b/assets/backs/Battle Scythe Black.png differ diff --git a/assets/backs/Battle Scythe Blue.png b/assets/backs/Battle Scythe Blue.png new file mode 100644 index 0000000..4866231 Binary files /dev/null and b/assets/backs/Battle Scythe Blue.png differ diff --git a/assets/backs/Battle Scythe Green.png b/assets/backs/Battle Scythe Green.png new file mode 100644 index 0000000..1e942c2 Binary files /dev/null and b/assets/backs/Battle Scythe Green.png differ diff --git a/assets/backs/Battle Scythe Orange.png b/assets/backs/Battle Scythe Orange.png new file mode 100644 index 0000000..0c62672 Binary files /dev/null and b/assets/backs/Battle Scythe Orange.png differ diff --git a/assets/backs/Battle Scythe Pink.png b/assets/backs/Battle Scythe Pink.png new file mode 100644 index 0000000..66d28b9 Binary files /dev/null and b/assets/backs/Battle Scythe Pink.png differ diff --git a/assets/backs/Battle Scythe Purple.png b/assets/backs/Battle Scythe Purple.png new file mode 100644 index 0000000..9364224 Binary files /dev/null and b/assets/backs/Battle Scythe Purple.png differ diff --git a/assets/backs/Battle Scythe Red.png b/assets/backs/Battle Scythe Red.png new file mode 100644 index 0000000..8fbaabc Binary files /dev/null and b/assets/backs/Battle Scythe Red.png differ diff --git a/assets/backs/Battle Scythe White.png b/assets/backs/Battle Scythe White.png new file mode 100644 index 0000000..adc5d29 Binary files /dev/null and b/assets/backs/Battle Scythe White.png differ diff --git a/assets/backs/Battle Scythe Yellow.png b/assets/backs/Battle Scythe Yellow.png new file mode 100644 index 0000000..346ded6 Binary files /dev/null and b/assets/backs/Battle Scythe Yellow.png differ diff --git a/assets/backs/Battle Spear Black.png b/assets/backs/Battle Spear Black.png new file mode 100644 index 0000000..5d1a209 Binary files /dev/null and b/assets/backs/Battle Spear Black.png differ diff --git a/assets/backs/Battle Spear Blue.png b/assets/backs/Battle Spear Blue.png new file mode 100644 index 0000000..bd1e70b Binary files /dev/null and b/assets/backs/Battle Spear Blue.png differ diff --git a/assets/backs/Battle Spear Green.png b/assets/backs/Battle Spear Green.png new file mode 100644 index 0000000..d2786d5 Binary files /dev/null and b/assets/backs/Battle Spear Green.png differ diff --git a/assets/backs/Battle Spear Orange.png b/assets/backs/Battle Spear Orange.png new file mode 100644 index 0000000..2641732 Binary files /dev/null and b/assets/backs/Battle Spear Orange.png differ diff --git a/assets/backs/Battle Spear Pink.png b/assets/backs/Battle Spear Pink.png new file mode 100644 index 0000000..b660231 Binary files /dev/null and b/assets/backs/Battle Spear Pink.png differ diff --git a/assets/backs/Battle Spear Purple.png b/assets/backs/Battle Spear Purple.png new file mode 100644 index 0000000..537024b Binary files /dev/null and b/assets/backs/Battle Spear Purple.png differ diff --git a/assets/backs/Battle Spear Red.png b/assets/backs/Battle Spear Red.png new file mode 100644 index 0000000..6864e44 Binary files /dev/null and b/assets/backs/Battle Spear Red.png differ diff --git a/assets/backs/Battle Spear White.png b/assets/backs/Battle Spear White.png new file mode 100644 index 0000000..0361e24 Binary files /dev/null and b/assets/backs/Battle Spear White.png differ diff --git a/assets/backs/Battle Spear Yellow.png b/assets/backs/Battle Spear Yellow.png new file mode 100644 index 0000000..e481f9a Binary files /dev/null and b/assets/backs/Battle Spear Yellow.png differ diff --git a/assets/backs/Battle Sword Black.png b/assets/backs/Battle Sword Black.png new file mode 100644 index 0000000..bfa2c29 Binary files /dev/null and b/assets/backs/Battle Sword Black.png differ diff --git a/assets/backs/Battle Sword Blue.png b/assets/backs/Battle Sword Blue.png new file mode 100644 index 0000000..2c78fc0 Binary files /dev/null and b/assets/backs/Battle Sword Blue.png differ diff --git a/assets/backs/Battle Sword Green.png b/assets/backs/Battle Sword Green.png new file mode 100644 index 0000000..6f2550b Binary files /dev/null and b/assets/backs/Battle Sword Green.png differ diff --git a/assets/backs/Battle Sword Orange.png b/assets/backs/Battle Sword Orange.png new file mode 100644 index 0000000..c7e9682 Binary files /dev/null and b/assets/backs/Battle Sword Orange.png differ diff --git a/assets/backs/Battle Sword Pink.png b/assets/backs/Battle Sword Pink.png new file mode 100644 index 0000000..9eb1b1d Binary files /dev/null and b/assets/backs/Battle Sword Pink.png differ diff --git a/assets/backs/Battle Sword Purple.png b/assets/backs/Battle Sword Purple.png new file mode 100644 index 0000000..ddf6774 Binary files /dev/null and b/assets/backs/Battle Sword Purple.png differ diff --git a/assets/backs/Battle Sword Red.png b/assets/backs/Battle Sword Red.png new file mode 100644 index 0000000..72aca2e Binary files /dev/null and b/assets/backs/Battle Sword Red.png differ diff --git a/assets/backs/Battle Sword White.png b/assets/backs/Battle Sword White.png new file mode 100644 index 0000000..de69670 Binary files /dev/null and b/assets/backs/Battle Sword White.png differ diff --git a/assets/backs/Battle Sword Yellow.png b/assets/backs/Battle Sword Yellow.png new file mode 100644 index 0000000..e3eaf3a Binary files /dev/null and b/assets/backs/Battle Sword Yellow.png differ diff --git a/assets/backs/Generic Pole Black.png b/assets/backs/Generic Pole Black.png new file mode 100644 index 0000000..9283960 Binary files /dev/null and b/assets/backs/Generic Pole Black.png differ diff --git a/assets/backs/Generic Pole Blue.png b/assets/backs/Generic Pole Blue.png new file mode 100644 index 0000000..10fa808 Binary files /dev/null and b/assets/backs/Generic Pole Blue.png differ diff --git a/assets/backs/Generic Pole Green.png b/assets/backs/Generic Pole Green.png new file mode 100644 index 0000000..078bf5e Binary files /dev/null and b/assets/backs/Generic Pole Green.png differ diff --git a/assets/backs/Generic Pole Orange.png b/assets/backs/Generic Pole Orange.png new file mode 100644 index 0000000..774bf99 Binary files /dev/null and b/assets/backs/Generic Pole Orange.png differ diff --git a/assets/backs/Generic Pole Pink.png b/assets/backs/Generic Pole Pink.png new file mode 100644 index 0000000..7ad3f05 Binary files /dev/null and b/assets/backs/Generic Pole Pink.png differ diff --git a/assets/backs/Generic Pole Purple.png b/assets/backs/Generic Pole Purple.png new file mode 100644 index 0000000..88a1a06 Binary files /dev/null and b/assets/backs/Generic Pole Purple.png differ diff --git a/assets/backs/Generic Pole Red.png b/assets/backs/Generic Pole Red.png new file mode 100644 index 0000000..afe27ad Binary files /dev/null and b/assets/backs/Generic Pole Red.png differ diff --git a/assets/backs/Generic Pole White.png b/assets/backs/Generic Pole White.png new file mode 100644 index 0000000..8742f26 Binary files /dev/null and b/assets/backs/Generic Pole White.png differ diff --git a/assets/backs/Generic Pole Yellow.png b/assets/backs/Generic Pole Yellow.png new file mode 100644 index 0000000..a3ef06d Binary files /dev/null and b/assets/backs/Generic Pole Yellow.png differ diff --git a/assets/backs/THE FIRE Black.png b/assets/backs/THE FIRE Black.png new file mode 100644 index 0000000..619d90f Binary files /dev/null and b/assets/backs/THE FIRE Black.png differ diff --git a/assets/backs/THE FIRE Blue.png b/assets/backs/THE FIRE Blue.png new file mode 100644 index 0000000..1db3f6f Binary files /dev/null and b/assets/backs/THE FIRE Blue.png differ diff --git a/assets/backs/THE FIRE Green.png b/assets/backs/THE FIRE Green.png new file mode 100644 index 0000000..3a7ae51 Binary files /dev/null and b/assets/backs/THE FIRE Green.png differ diff --git a/assets/backs/THE FIRE Orange.png b/assets/backs/THE FIRE Orange.png new file mode 100644 index 0000000..d3f6880 Binary files /dev/null and b/assets/backs/THE FIRE Orange.png differ diff --git a/assets/backs/THE FIRE Pink.png b/assets/backs/THE FIRE Pink.png new file mode 100644 index 0000000..fbf823d Binary files /dev/null and b/assets/backs/THE FIRE Pink.png differ diff --git a/assets/backs/THE FIRE Purple.png b/assets/backs/THE FIRE Purple.png new file mode 100644 index 0000000..e53b6cc Binary files /dev/null and b/assets/backs/THE FIRE Purple.png differ diff --git a/assets/backs/THE FIRE Red.png b/assets/backs/THE FIRE Red.png new file mode 100644 index 0000000..a977c93 Binary files /dev/null and b/assets/backs/THE FIRE Red.png differ diff --git a/assets/backs/THE FIRE White.png b/assets/backs/THE FIRE White.png new file mode 100644 index 0000000..3a34902 Binary files /dev/null and b/assets/backs/THE FIRE White.png differ diff --git a/assets/backs/THE FIRE Yellow.png b/assets/backs/THE FIRE Yellow.png new file mode 100644 index 0000000..122dcbe Binary files /dev/null and b/assets/backs/THE FIRE Yellow.png differ diff --git a/assets/backs/Tail Black.png b/assets/backs/Tail Black.png new file mode 100644 index 0000000..2bb87ec Binary files /dev/null and b/assets/backs/Tail Black.png differ diff --git a/assets/backs/Tail Blue.png b/assets/backs/Tail Blue.png new file mode 100644 index 0000000..2467494 Binary files /dev/null and b/assets/backs/Tail Blue.png differ diff --git a/assets/backs/Tail Green.png b/assets/backs/Tail Green.png new file mode 100644 index 0000000..32b5d3c Binary files /dev/null and b/assets/backs/Tail Green.png differ diff --git a/assets/backs/Tail Orange.png b/assets/backs/Tail Orange.png new file mode 100644 index 0000000..fdddbf0 Binary files /dev/null and b/assets/backs/Tail Orange.png differ diff --git a/assets/backs/Tail Pink.png b/assets/backs/Tail Pink.png new file mode 100644 index 0000000..0ce3c81 Binary files /dev/null and b/assets/backs/Tail Pink.png differ diff --git a/assets/backs/Tail Purple.png b/assets/backs/Tail Purple.png new file mode 100644 index 0000000..1b97488 Binary files /dev/null and b/assets/backs/Tail Purple.png differ diff --git a/assets/backs/Tail Red.png b/assets/backs/Tail Red.png new file mode 100644 index 0000000..38110e8 Binary files /dev/null and b/assets/backs/Tail Red.png differ diff --git a/assets/backs/Tail White.png b/assets/backs/Tail White.png new file mode 100644 index 0000000..b510854 Binary files /dev/null and b/assets/backs/Tail White.png differ diff --git a/assets/backs/Tail Yellow.png b/assets/backs/Tail Yellow.png new file mode 100644 index 0000000..04bfcd4 Binary files /dev/null and b/assets/backs/Tail Yellow.png differ diff --git a/assets/bases/Black.png b/assets/bases/Black.png new file mode 100644 index 0000000..fadf363 Binary files /dev/null and b/assets/bases/Black.png differ diff --git a/assets/bases/Blue.png b/assets/bases/Blue.png new file mode 100644 index 0000000..fbd0bef Binary files /dev/null and b/assets/bases/Blue.png differ diff --git a/assets/bases/Green.png b/assets/bases/Green.png new file mode 100644 index 0000000..e880959 Binary files /dev/null and b/assets/bases/Green.png differ diff --git a/assets/bases/Orange.png b/assets/bases/Orange.png new file mode 100644 index 0000000..ac7509f Binary files /dev/null and b/assets/bases/Orange.png differ diff --git a/assets/bases/Pink.png b/assets/bases/Pink.png new file mode 100644 index 0000000..660048f Binary files /dev/null and b/assets/bases/Pink.png differ diff --git a/assets/bases/Purple.png b/assets/bases/Purple.png new file mode 100644 index 0000000..e782f26 Binary files /dev/null and b/assets/bases/Purple.png differ diff --git a/assets/bases/Red.png b/assets/bases/Red.png new file mode 100644 index 0000000..95e5cef Binary files /dev/null and b/assets/bases/Red.png differ diff --git a/assets/bases/White.png b/assets/bases/White.png new file mode 100644 index 0000000..41b4386 Binary files /dev/null and b/assets/bases/White.png differ diff --git a/assets/bases/Yellow.png b/assets/bases/Yellow.png new file mode 100644 index 0000000..24e42e6 Binary files /dev/null and b/assets/bases/Yellow.png differ diff --git a/assets/battlebgs/AgentZ.png b/assets/battlebgs/AgentZ.png new file mode 100644 index 0000000..a05d50c Binary files /dev/null and b/assets/battlebgs/AgentZ.png differ diff --git a/assets/battlebgs/ArtMaster.png b/assets/battlebgs/ArtMaster.png new file mode 100644 index 0000000..8f36320 Binary files /dev/null and b/assets/battlebgs/ArtMaster.png differ diff --git a/assets/battlebgs/BattleBeginner.png b/assets/battlebgs/BattleBeginner.png new file mode 100644 index 0000000..30c3dbc Binary files /dev/null and b/assets/battlebgs/BattleBeginner.png differ diff --git a/assets/battlebgs/BattleBeginner2024.png b/assets/battlebgs/BattleBeginner2024.png new file mode 100644 index 0000000..5e25751 Binary files /dev/null and b/assets/battlebgs/BattleBeginner2024.png differ diff --git a/assets/battlebgs/Battler.png b/assets/battlebgs/Battler.png new file mode 100644 index 0000000..6b6a7ed Binary files /dev/null and b/assets/battlebgs/Battler.png differ diff --git a/assets/battlebgs/BattlerElite.png b/assets/battlebgs/BattlerElite.png new file mode 100644 index 0000000..54d8c22 Binary files /dev/null and b/assets/battlebgs/BattlerElite.png differ diff --git a/assets/battlebgs/CommonOverseer.png b/assets/battlebgs/CommonOverseer.png new file mode 100644 index 0000000..189793f Binary files /dev/null and b/assets/battlebgs/CommonOverseer.png differ diff --git a/assets/battlebgs/DEMUL.png b/assets/battlebgs/DEMUL.png new file mode 100644 index 0000000..1cdf156 Binary files /dev/null and b/assets/battlebgs/DEMUL.png differ diff --git a/assets/battlebgs/Delta.png b/assets/battlebgs/Delta.png new file mode 100644 index 0000000..6524861 Binary files /dev/null and b/assets/battlebgs/Delta.png differ diff --git a/assets/battlebgs/Dicey.png b/assets/battlebgs/Dicey.png new file mode 100644 index 0000000..7ff65db Binary files /dev/null and b/assets/battlebgs/Dicey.png differ diff --git a/assets/battlebgs/DoodlePro.png b/assets/battlebgs/DoodlePro.png new file mode 100644 index 0000000..4b43ccc Binary files /dev/null and b/assets/battlebgs/DoodlePro.png differ diff --git a/assets/battlebgs/Eda.png b/assets/battlebgs/Eda.png new file mode 100644 index 0000000..5159d63 Binary files /dev/null and b/assets/battlebgs/Eda.png differ diff --git a/assets/battlebgs/GuitarHero.png b/assets/battlebgs/GuitarHero.png new file mode 100644 index 0000000..8698ad5 Binary files /dev/null and b/assets/battlebgs/GuitarHero.png differ diff --git a/assets/battlebgs/IncomingSword.png b/assets/battlebgs/IncomingSword.png new file mode 100644 index 0000000..bbffd7f Binary files /dev/null and b/assets/battlebgs/IncomingSword.png differ diff --git a/assets/battlebgs/Kacey.png b/assets/battlebgs/Kacey.png new file mode 100644 index 0000000..85be356 Binary files /dev/null and b/assets/battlebgs/Kacey.png differ diff --git a/assets/battlebgs/Lexa.png b/assets/battlebgs/Lexa.png new file mode 100644 index 0000000..b242b18 Binary files /dev/null and b/assets/battlebgs/Lexa.png differ diff --git a/assets/battlebgs/MediumKeyMaster.png b/assets/battlebgs/MediumKeyMaster.png new file mode 100644 index 0000000..e6ee630 Binary files /dev/null and b/assets/battlebgs/MediumKeyMaster.png differ diff --git a/assets/battlebgs/Moonlite.png b/assets/battlebgs/Moonlite.png new file mode 100644 index 0000000..6fd7f40 Binary files /dev/null and b/assets/battlebgs/Moonlite.png differ diff --git a/assets/battlebgs/None.png b/assets/battlebgs/None.png new file mode 100644 index 0000000..28868ba Binary files /dev/null and b/assets/battlebgs/None.png differ diff --git a/assets/battlebgs/PvP.png b/assets/battlebgs/PvP.png new file mode 100644 index 0000000..adf8964 Binary files /dev/null and b/assets/battlebgs/PvP.png differ diff --git a/assets/battlebgs/RapStar.png b/assets/battlebgs/RapStar.png new file mode 100644 index 0000000..2c14346 Binary files /dev/null and b/assets/battlebgs/RapStar.png differ diff --git a/assets/battlebgs/RareOverseer.png b/assets/battlebgs/RareOverseer.png new file mode 100644 index 0000000..ef3fec3 Binary files /dev/null and b/assets/battlebgs/RareOverseer.png differ diff --git a/assets/battlebgs/SmallKeyMaster.png b/assets/battlebgs/SmallKeyMaster.png new file mode 100644 index 0000000..6a6294a Binary files /dev/null and b/assets/battlebgs/SmallKeyMaster.png differ diff --git a/assets/battlebgs/TheFirewall.png b/assets/battlebgs/TheFirewall.png new file mode 100644 index 0000000..c48504e Binary files /dev/null and b/assets/battlebgs/TheFirewall.png differ diff --git a/assets/battlebgs/TheInterrogator.png b/assets/battlebgs/TheInterrogator.png new file mode 100644 index 0000000..c99e7c3 Binary files /dev/null and b/assets/battlebgs/TheInterrogator.png differ diff --git a/assets/bottoms/Battler Drip Black.png b/assets/bottoms/Battler Drip Black.png new file mode 100644 index 0000000..7dc4195 Binary files /dev/null and b/assets/bottoms/Battler Drip Black.png differ diff --git a/assets/bottoms/Battler Drip Blue.png b/assets/bottoms/Battler Drip Blue.png new file mode 100644 index 0000000..3195385 Binary files /dev/null and b/assets/bottoms/Battler Drip Blue.png differ diff --git a/assets/bottoms/Battler Drip Green.png b/assets/bottoms/Battler Drip Green.png new file mode 100644 index 0000000..c7170fc Binary files /dev/null and b/assets/bottoms/Battler Drip Green.png differ diff --git a/assets/bottoms/Battler Drip Orange.png b/assets/bottoms/Battler Drip Orange.png new file mode 100644 index 0000000..3df0358 Binary files /dev/null and b/assets/bottoms/Battler Drip Orange.png differ diff --git a/assets/bottoms/Battler Drip Pink.png b/assets/bottoms/Battler Drip Pink.png new file mode 100644 index 0000000..a0b11ba Binary files /dev/null and b/assets/bottoms/Battler Drip Pink.png differ diff --git a/assets/bottoms/Battler Drip Purple.png b/assets/bottoms/Battler Drip Purple.png new file mode 100644 index 0000000..7617d10 Binary files /dev/null and b/assets/bottoms/Battler Drip Purple.png differ diff --git a/assets/bottoms/Battler Drip Red.png b/assets/bottoms/Battler Drip Red.png new file mode 100644 index 0000000..ce20367 Binary files /dev/null and b/assets/bottoms/Battler Drip Red.png differ diff --git a/assets/bottoms/Battler Drip White.png b/assets/bottoms/Battler Drip White.png new file mode 100644 index 0000000..46bcce3 Binary files /dev/null and b/assets/bottoms/Battler Drip White.png differ diff --git a/assets/bottoms/Battler Drip Yellow.png b/assets/bottoms/Battler Drip Yellow.png new file mode 100644 index 0000000..95703f1 Binary files /dev/null and b/assets/bottoms/Battler Drip Yellow.png differ diff --git a/assets/bottoms/Knee Pads Black.png b/assets/bottoms/Knee Pads Black.png new file mode 100644 index 0000000..0a0a69c Binary files /dev/null and b/assets/bottoms/Knee Pads Black.png differ diff --git a/assets/bottoms/Knee Pads Blue.png b/assets/bottoms/Knee Pads Blue.png new file mode 100644 index 0000000..acf2be5 Binary files /dev/null and b/assets/bottoms/Knee Pads Blue.png differ diff --git a/assets/bottoms/Knee Pads Green.png b/assets/bottoms/Knee Pads Green.png new file mode 100644 index 0000000..e159e5f Binary files /dev/null and b/assets/bottoms/Knee Pads Green.png differ diff --git a/assets/bottoms/Knee Pads Orange.png b/assets/bottoms/Knee Pads Orange.png new file mode 100644 index 0000000..72ef7db Binary files /dev/null and b/assets/bottoms/Knee Pads Orange.png differ diff --git a/assets/bottoms/Knee Pads Pink.png b/assets/bottoms/Knee Pads Pink.png new file mode 100644 index 0000000..cb02d9f Binary files /dev/null and b/assets/bottoms/Knee Pads Pink.png differ diff --git a/assets/bottoms/Knee Pads Purple.png b/assets/bottoms/Knee Pads Purple.png new file mode 100644 index 0000000..147058f Binary files /dev/null and b/assets/bottoms/Knee Pads Purple.png differ diff --git a/assets/bottoms/Knee Pads Red.png b/assets/bottoms/Knee Pads Red.png new file mode 100644 index 0000000..f176213 Binary files /dev/null and b/assets/bottoms/Knee Pads Red.png differ diff --git a/assets/bottoms/Knee Pads White.png b/assets/bottoms/Knee Pads White.png new file mode 100644 index 0000000..098724e Binary files /dev/null and b/assets/bottoms/Knee Pads White.png differ diff --git a/assets/bottoms/Knee Pads Yellow.png b/assets/bottoms/Knee Pads Yellow.png new file mode 100644 index 0000000..9d129e1 Binary files /dev/null and b/assets/bottoms/Knee Pads Yellow.png differ diff --git a/assets/bottoms/Skirt Black.png b/assets/bottoms/Skirt Black.png new file mode 100644 index 0000000..88a9685 Binary files /dev/null and b/assets/bottoms/Skirt Black.png differ diff --git a/assets/bottoms/Skirt Blue.png b/assets/bottoms/Skirt Blue.png new file mode 100644 index 0000000..c8a3395 Binary files /dev/null and b/assets/bottoms/Skirt Blue.png differ diff --git a/assets/bottoms/Skirt Green.png b/assets/bottoms/Skirt Green.png new file mode 100644 index 0000000..04a8819 Binary files /dev/null and b/assets/bottoms/Skirt Green.png differ diff --git a/assets/bottoms/Skirt Orange.png b/assets/bottoms/Skirt Orange.png new file mode 100644 index 0000000..7742d09 Binary files /dev/null and b/assets/bottoms/Skirt Orange.png differ diff --git a/assets/bottoms/Skirt Pink.png b/assets/bottoms/Skirt Pink.png new file mode 100644 index 0000000..f615738 Binary files /dev/null and b/assets/bottoms/Skirt Pink.png differ diff --git a/assets/bottoms/Skirt Purple.png b/assets/bottoms/Skirt Purple.png new file mode 100644 index 0000000..e37fb8d Binary files /dev/null and b/assets/bottoms/Skirt Purple.png differ diff --git a/assets/bottoms/Skirt Red.png b/assets/bottoms/Skirt Red.png new file mode 100644 index 0000000..09746c1 Binary files /dev/null and b/assets/bottoms/Skirt Red.png differ diff --git a/assets/bottoms/Skirt White.png b/assets/bottoms/Skirt White.png new file mode 100644 index 0000000..45630e7 Binary files /dev/null and b/assets/bottoms/Skirt White.png differ diff --git a/assets/bottoms/Skirt Yellow.png b/assets/bottoms/Skirt Yellow.png new file mode 100644 index 0000000..750b266 Binary files /dev/null and b/assets/bottoms/Skirt Yellow.png differ diff --git a/assets/buddies/Basketiballu.png b/assets/buddies/Basketiballu.png new file mode 100644 index 0000000..3b0f294 Binary files /dev/null and b/assets/buddies/Basketiballu.png differ diff --git a/assets/buddies/Battle Special.png b/assets/buddies/Battle Special.png new file mode 100644 index 0000000..60c3bb7 Binary files /dev/null and b/assets/buddies/Battle Special.png differ diff --git a/assets/buddies/Battle Support.png b/assets/buddies/Battle Support.png new file mode 100644 index 0000000..cdd9e22 Binary files /dev/null and b/assets/buddies/Battle Support.png differ diff --git a/assets/buddies/Battler.png b/assets/buddies/Battler.png new file mode 100644 index 0000000..6752d3e Binary files /dev/null and b/assets/buddies/Battler.png differ diff --git a/assets/buddies/DEMUL.png b/assets/buddies/DEMUL.png new file mode 100644 index 0000000..1c6aa3c Binary files /dev/null and b/assets/buddies/DEMUL.png differ diff --git a/assets/buddies/House Vibe.png b/assets/buddies/House Vibe.png new file mode 100644 index 0000000..1ec3944 Binary files /dev/null and b/assets/buddies/House Vibe.png differ diff --git a/assets/buddies/Houseannor.png b/assets/buddies/Houseannor.png new file mode 100644 index 0000000..5a36934 Binary files /dev/null and b/assets/buddies/Houseannor.png differ diff --git a/assets/buddies/Incoming Sword.png b/assets/buddies/Incoming Sword.png new file mode 100644 index 0000000..48b785a Binary files /dev/null and b/assets/buddies/Incoming Sword.png differ diff --git a/assets/buddies/Lock Block.png b/assets/buddies/Lock Block.png new file mode 100644 index 0000000..2a2ea4f Binary files /dev/null and b/assets/buddies/Lock Block.png differ diff --git a/assets/buddies/MARZ Ball.png b/assets/buddies/MARZ Ball.png new file mode 100644 index 0000000..8bae984 Binary files /dev/null and b/assets/buddies/MARZ Ball.png differ diff --git a/assets/buddies/Noodle the Kitten.png b/assets/buddies/Noodle the Kitten.png new file mode 100644 index 0000000..f6423d8 Binary files /dev/null and b/assets/buddies/Noodle the Kitten.png differ diff --git a/assets/buddies/Olivia.png b/assets/buddies/Olivia.png new file mode 100644 index 0000000..ede9495 Binary files /dev/null and b/assets/buddies/Olivia.png differ diff --git a/assets/buddies/PCSB.png b/assets/buddies/PCSB.png new file mode 100644 index 0000000..6b26f32 Binary files /dev/null and b/assets/buddies/PCSB.png differ diff --git a/assets/buddies/PLR.png b/assets/buddies/PLR.png new file mode 100644 index 0000000..56a16c3 Binary files /dev/null and b/assets/buddies/PLR.png differ diff --git a/assets/buddies/Prototype Ranger.png b/assets/buddies/Prototype Ranger.png new file mode 100644 index 0000000..61362b6 Binary files /dev/null and b/assets/buddies/Prototype Ranger.png differ diff --git a/assets/buddies/Ranger.png b/assets/buddies/Ranger.png new file mode 100644 index 0000000..4818692 Binary files /dev/null and b/assets/buddies/Ranger.png differ diff --git a/assets/buddies/Starting Mountain.png b/assets/buddies/Starting Mountain.png new file mode 100644 index 0000000..ca9cc12 Binary files /dev/null and b/assets/buddies/Starting Mountain.png differ diff --git a/assets/eyes/Angry Black.png b/assets/eyes/Angry Black.png new file mode 100644 index 0000000..443db54 Binary files /dev/null and b/assets/eyes/Angry Black.png differ diff --git a/assets/eyes/Angry Blue.png b/assets/eyes/Angry Blue.png new file mode 100644 index 0000000..1e6ee90 Binary files /dev/null and b/assets/eyes/Angry Blue.png differ diff --git a/assets/eyes/Angry Green.png b/assets/eyes/Angry Green.png new file mode 100644 index 0000000..5139e2f Binary files /dev/null and b/assets/eyes/Angry Green.png differ diff --git a/assets/eyes/Angry Orange.png b/assets/eyes/Angry Orange.png new file mode 100644 index 0000000..cdfec4a Binary files /dev/null and b/assets/eyes/Angry Orange.png differ diff --git a/assets/eyes/Angry Pink.png b/assets/eyes/Angry Pink.png new file mode 100644 index 0000000..adef047 Binary files /dev/null and b/assets/eyes/Angry Pink.png differ diff --git a/assets/eyes/Angry Purple.png b/assets/eyes/Angry Purple.png new file mode 100644 index 0000000..5f659c0 Binary files /dev/null and b/assets/eyes/Angry Purple.png differ diff --git a/assets/eyes/Angry Red.png b/assets/eyes/Angry Red.png new file mode 100644 index 0000000..c86ab4c Binary files /dev/null and b/assets/eyes/Angry Red.png differ diff --git a/assets/eyes/Angry White.png b/assets/eyes/Angry White.png new file mode 100644 index 0000000..607a25a Binary files /dev/null and b/assets/eyes/Angry White.png differ diff --git a/assets/eyes/Angry Yellow.png b/assets/eyes/Angry Yellow.png new file mode 100644 index 0000000..159d751 Binary files /dev/null and b/assets/eyes/Angry Yellow.png differ diff --git a/assets/eyes/Cheerful Black.png b/assets/eyes/Cheerful Black.png new file mode 100644 index 0000000..00691fd Binary files /dev/null and b/assets/eyes/Cheerful Black.png differ diff --git a/assets/eyes/Cheerful Blue.png b/assets/eyes/Cheerful Blue.png new file mode 100644 index 0000000..8b8d0da Binary files /dev/null and b/assets/eyes/Cheerful Blue.png differ diff --git a/assets/eyes/Cheerful Green.png b/assets/eyes/Cheerful Green.png new file mode 100644 index 0000000..b076211 Binary files /dev/null and b/assets/eyes/Cheerful Green.png differ diff --git a/assets/eyes/Cheerful Orange.png b/assets/eyes/Cheerful Orange.png new file mode 100644 index 0000000..f4de839 Binary files /dev/null and b/assets/eyes/Cheerful Orange.png differ diff --git a/assets/eyes/Cheerful Pink.png b/assets/eyes/Cheerful Pink.png new file mode 100644 index 0000000..2119518 Binary files /dev/null and b/assets/eyes/Cheerful Pink.png differ diff --git a/assets/eyes/Cheerful Purple.png b/assets/eyes/Cheerful Purple.png new file mode 100644 index 0000000..d624070 Binary files /dev/null and b/assets/eyes/Cheerful Purple.png differ diff --git a/assets/eyes/Cheerful Red.png b/assets/eyes/Cheerful Red.png new file mode 100644 index 0000000..192e2c3 Binary files /dev/null and b/assets/eyes/Cheerful Red.png differ diff --git a/assets/eyes/Cheerful White.png b/assets/eyes/Cheerful White.png new file mode 100644 index 0000000..98641b8 Binary files /dev/null and b/assets/eyes/Cheerful White.png differ diff --git a/assets/eyes/Cheerful Yellow.png b/assets/eyes/Cheerful Yellow.png new file mode 100644 index 0000000..f83bbf0 Binary files /dev/null and b/assets/eyes/Cheerful Yellow.png differ diff --git a/assets/eyes/Confused Black.png b/assets/eyes/Confused Black.png new file mode 100644 index 0000000..eeb2cef Binary files /dev/null and b/assets/eyes/Confused Black.png differ diff --git a/assets/eyes/Confused Blue.png b/assets/eyes/Confused Blue.png new file mode 100644 index 0000000..1493a46 Binary files /dev/null and b/assets/eyes/Confused Blue.png differ diff --git a/assets/eyes/Confused Green.png b/assets/eyes/Confused Green.png new file mode 100644 index 0000000..85d3c66 Binary files /dev/null and b/assets/eyes/Confused Green.png differ diff --git a/assets/eyes/Confused Orange.png b/assets/eyes/Confused Orange.png new file mode 100644 index 0000000..d6e4b80 Binary files /dev/null and b/assets/eyes/Confused Orange.png differ diff --git a/assets/eyes/Confused Pink.png b/assets/eyes/Confused Pink.png new file mode 100644 index 0000000..1af6002 Binary files /dev/null and b/assets/eyes/Confused Pink.png differ diff --git a/assets/eyes/Confused Purple.png b/assets/eyes/Confused Purple.png new file mode 100644 index 0000000..f4cf8e5 Binary files /dev/null and b/assets/eyes/Confused Purple.png differ diff --git a/assets/eyes/Confused Red.png b/assets/eyes/Confused Red.png new file mode 100644 index 0000000..372d6d1 Binary files /dev/null and b/assets/eyes/Confused Red.png differ diff --git a/assets/eyes/Confused White.png b/assets/eyes/Confused White.png new file mode 100644 index 0000000..6399005 Binary files /dev/null and b/assets/eyes/Confused White.png differ diff --git a/assets/eyes/Confused Yellow.png b/assets/eyes/Confused Yellow.png new file mode 100644 index 0000000..b3ccddf Binary files /dev/null and b/assets/eyes/Confused Yellow.png differ diff --git a/assets/eyes/Excited Black.png b/assets/eyes/Excited Black.png new file mode 100644 index 0000000..0251b05 Binary files /dev/null and b/assets/eyes/Excited Black.png differ diff --git a/assets/eyes/Excited Blue.png b/assets/eyes/Excited Blue.png new file mode 100644 index 0000000..a38cf2a Binary files /dev/null and b/assets/eyes/Excited Blue.png differ diff --git a/assets/eyes/Excited Green.png b/assets/eyes/Excited Green.png new file mode 100644 index 0000000..1fc232c Binary files /dev/null and b/assets/eyes/Excited Green.png differ diff --git a/assets/eyes/Excited Orange.png b/assets/eyes/Excited Orange.png new file mode 100644 index 0000000..c8d52a3 Binary files /dev/null and b/assets/eyes/Excited Orange.png differ diff --git a/assets/eyes/Excited Pink.png b/assets/eyes/Excited Pink.png new file mode 100644 index 0000000..73be1a2 Binary files /dev/null and b/assets/eyes/Excited Pink.png differ diff --git a/assets/eyes/Excited Purple.png b/assets/eyes/Excited Purple.png new file mode 100644 index 0000000..bd09289 Binary files /dev/null and b/assets/eyes/Excited Purple.png differ diff --git a/assets/eyes/Excited Red.png b/assets/eyes/Excited Red.png new file mode 100644 index 0000000..6539204 Binary files /dev/null and b/assets/eyes/Excited Red.png differ diff --git a/assets/eyes/Excited White.png b/assets/eyes/Excited White.png new file mode 100644 index 0000000..dd3de50 Binary files /dev/null and b/assets/eyes/Excited White.png differ diff --git a/assets/eyes/Excited Yellow.png b/assets/eyes/Excited Yellow.png new file mode 100644 index 0000000..feb4f00 Binary files /dev/null and b/assets/eyes/Excited Yellow.png differ diff --git a/assets/eyes/Serious Black.png b/assets/eyes/Serious Black.png new file mode 100644 index 0000000..2581178 Binary files /dev/null and b/assets/eyes/Serious Black.png differ diff --git a/assets/eyes/Serious Blue.png b/assets/eyes/Serious Blue.png new file mode 100644 index 0000000..c1275a4 Binary files /dev/null and b/assets/eyes/Serious Blue.png differ diff --git a/assets/eyes/Serious Green.png b/assets/eyes/Serious Green.png new file mode 100644 index 0000000..2c415e6 Binary files /dev/null and b/assets/eyes/Serious Green.png differ diff --git a/assets/eyes/Serious Orange.png b/assets/eyes/Serious Orange.png new file mode 100644 index 0000000..6f66b2d Binary files /dev/null and b/assets/eyes/Serious Orange.png differ diff --git a/assets/eyes/Serious Pink.png b/assets/eyes/Serious Pink.png new file mode 100644 index 0000000..b12e8a8 Binary files /dev/null and b/assets/eyes/Serious Pink.png differ diff --git a/assets/eyes/Serious Purple.png b/assets/eyes/Serious Purple.png new file mode 100644 index 0000000..122bdc1 Binary files /dev/null and b/assets/eyes/Serious Purple.png differ diff --git a/assets/eyes/Serious Red.png b/assets/eyes/Serious Red.png new file mode 100644 index 0000000..03807f4 Binary files /dev/null and b/assets/eyes/Serious Red.png differ diff --git a/assets/eyes/Serious White.png b/assets/eyes/Serious White.png new file mode 100644 index 0000000..00e48d4 Binary files /dev/null and b/assets/eyes/Serious White.png differ diff --git a/assets/eyes/Serious Yellow.png b/assets/eyes/Serious Yellow.png new file mode 100644 index 0000000..60f8fcd Binary files /dev/null and b/assets/eyes/Serious Yellow.png differ diff --git a/assets/eyes/Tired Black.png b/assets/eyes/Tired Black.png new file mode 100644 index 0000000..7d43ded Binary files /dev/null and b/assets/eyes/Tired Black.png differ diff --git a/assets/eyes/Tired Blue.png b/assets/eyes/Tired Blue.png new file mode 100644 index 0000000..a2fcf90 Binary files /dev/null and b/assets/eyes/Tired Blue.png differ diff --git a/assets/eyes/Tired Green.png b/assets/eyes/Tired Green.png new file mode 100644 index 0000000..17ae1fb Binary files /dev/null and b/assets/eyes/Tired Green.png differ diff --git a/assets/eyes/Tired Orange.png b/assets/eyes/Tired Orange.png new file mode 100644 index 0000000..2cad00f Binary files /dev/null and b/assets/eyes/Tired Orange.png differ diff --git a/assets/eyes/Tired Pink.png b/assets/eyes/Tired Pink.png new file mode 100644 index 0000000..5a13fa6 Binary files /dev/null and b/assets/eyes/Tired Pink.png differ diff --git a/assets/eyes/Tired Purple.png b/assets/eyes/Tired Purple.png new file mode 100644 index 0000000..8bb7580 Binary files /dev/null and b/assets/eyes/Tired Purple.png differ diff --git a/assets/eyes/Tired Red.png b/assets/eyes/Tired Red.png new file mode 100644 index 0000000..31c9340 Binary files /dev/null and b/assets/eyes/Tired Red.png differ diff --git a/assets/eyes/Tired White.png b/assets/eyes/Tired White.png new file mode 100644 index 0000000..7b5c136 Binary files /dev/null and b/assets/eyes/Tired White.png differ diff --git a/assets/eyes/Tired Yellow.png b/assets/eyes/Tired Yellow.png new file mode 100644 index 0000000..167ec74 Binary files /dev/null and b/assets/eyes/Tired Yellow.png differ diff --git a/assets/faces/Deal with it Black.png b/assets/faces/Deal with it Black.png new file mode 100644 index 0000000..72968b5 Binary files /dev/null and b/assets/faces/Deal with it Black.png differ diff --git a/assets/faces/Deal with it Blue.png b/assets/faces/Deal with it Blue.png new file mode 100644 index 0000000..c379d35 Binary files /dev/null and b/assets/faces/Deal with it Blue.png differ diff --git a/assets/faces/Deal with it Green.png b/assets/faces/Deal with it Green.png new file mode 100644 index 0000000..cf3cddc Binary files /dev/null and b/assets/faces/Deal with it Green.png differ diff --git a/assets/faces/Deal with it Orange.png b/assets/faces/Deal with it Orange.png new file mode 100644 index 0000000..09bd261 Binary files /dev/null and b/assets/faces/Deal with it Orange.png differ diff --git a/assets/faces/Deal with it Pink.png b/assets/faces/Deal with it Pink.png new file mode 100644 index 0000000..41b3abb Binary files /dev/null and b/assets/faces/Deal with it Pink.png differ diff --git a/assets/faces/Deal with it Purple.png b/assets/faces/Deal with it Purple.png new file mode 100644 index 0000000..3acc5c0 Binary files /dev/null and b/assets/faces/Deal with it Purple.png differ diff --git a/assets/faces/Deal with it Red.png b/assets/faces/Deal with it Red.png new file mode 100644 index 0000000..41dc64f Binary files /dev/null and b/assets/faces/Deal with it Red.png differ diff --git a/assets/faces/Deal with it White.png b/assets/faces/Deal with it White.png new file mode 100644 index 0000000..56317fc Binary files /dev/null and b/assets/faces/Deal with it White.png differ diff --git a/assets/faces/Deal with it Yellow.png b/assets/faces/Deal with it Yellow.png new file mode 100644 index 0000000..e60dfab Binary files /dev/null and b/assets/faces/Deal with it Yellow.png differ diff --git a/assets/faces/Eye Mask Black.png b/assets/faces/Eye Mask Black.png new file mode 100644 index 0000000..8ab3478 Binary files /dev/null and b/assets/faces/Eye Mask Black.png differ diff --git a/assets/faces/Eye Mask Blue.png b/assets/faces/Eye Mask Blue.png new file mode 100644 index 0000000..b03853f Binary files /dev/null and b/assets/faces/Eye Mask Blue.png differ diff --git a/assets/faces/Eye Mask Green.png b/assets/faces/Eye Mask Green.png new file mode 100644 index 0000000..5cef064 Binary files /dev/null and b/assets/faces/Eye Mask Green.png differ diff --git a/assets/faces/Eye Mask Orange.png b/assets/faces/Eye Mask Orange.png new file mode 100644 index 0000000..15decd2 Binary files /dev/null and b/assets/faces/Eye Mask Orange.png differ diff --git a/assets/faces/Eye Mask Pink.png b/assets/faces/Eye Mask Pink.png new file mode 100644 index 0000000..1837bd7 Binary files /dev/null and b/assets/faces/Eye Mask Pink.png differ diff --git a/assets/faces/Eye Mask Purple.png b/assets/faces/Eye Mask Purple.png new file mode 100644 index 0000000..1887c0d Binary files /dev/null and b/assets/faces/Eye Mask Purple.png differ diff --git a/assets/faces/Eye Mask Red.png b/assets/faces/Eye Mask Red.png new file mode 100644 index 0000000..f807fd7 Binary files /dev/null and b/assets/faces/Eye Mask Red.png differ diff --git a/assets/faces/Eye Mask White.png b/assets/faces/Eye Mask White.png new file mode 100644 index 0000000..f875e26 Binary files /dev/null and b/assets/faces/Eye Mask White.png differ diff --git a/assets/faces/Eye Mask Yellow.png b/assets/faces/Eye Mask Yellow.png new file mode 100644 index 0000000..b58df45 Binary files /dev/null and b/assets/faces/Eye Mask Yellow.png differ diff --git a/assets/glows/Black.png b/assets/glows/Black.png new file mode 100644 index 0000000..9fe8f3b Binary files /dev/null and b/assets/glows/Black.png differ diff --git a/assets/glows/Blue.png b/assets/glows/Blue.png new file mode 100644 index 0000000..976628b Binary files /dev/null and b/assets/glows/Blue.png differ diff --git a/assets/glows/Green.png b/assets/glows/Green.png new file mode 100644 index 0000000..f7cc1e7 Binary files /dev/null and b/assets/glows/Green.png differ diff --git a/assets/glows/Orange.png b/assets/glows/Orange.png new file mode 100644 index 0000000..167da76 Binary files /dev/null and b/assets/glows/Orange.png differ diff --git a/assets/glows/Pink.png b/assets/glows/Pink.png new file mode 100644 index 0000000..4cfdaef Binary files /dev/null and b/assets/glows/Pink.png differ diff --git a/assets/glows/Purple.png b/assets/glows/Purple.png new file mode 100644 index 0000000..32bf315 Binary files /dev/null and b/assets/glows/Purple.png differ diff --git a/assets/glows/Red.png b/assets/glows/Red.png new file mode 100644 index 0000000..a2f1404 Binary files /dev/null and b/assets/glows/Red.png differ diff --git a/assets/glows/White.png b/assets/glows/White.png new file mode 100644 index 0000000..1dc235d Binary files /dev/null and b/assets/glows/White.png differ diff --git a/assets/glows/Yellow.png b/assets/glows/Yellow.png new file mode 100644 index 0000000..89a17f0 Binary files /dev/null and b/assets/glows/Yellow.png differ diff --git a/assets/hats/Back Cap Black.png b/assets/hats/Back Cap Black.png new file mode 100644 index 0000000..20a190a Binary files /dev/null and b/assets/hats/Back Cap Black.png differ diff --git a/assets/hats/Back Cap Blue.png b/assets/hats/Back Cap Blue.png new file mode 100644 index 0000000..6429a74 Binary files /dev/null and b/assets/hats/Back Cap Blue.png differ diff --git a/assets/hats/Back Cap Green.png b/assets/hats/Back Cap Green.png new file mode 100644 index 0000000..1c410ff Binary files /dev/null and b/assets/hats/Back Cap Green.png differ diff --git a/assets/hats/Back Cap Orange.png b/assets/hats/Back Cap Orange.png new file mode 100644 index 0000000..dcefd9e Binary files /dev/null and b/assets/hats/Back Cap Orange.png differ diff --git a/assets/hats/Back Cap Pink.png b/assets/hats/Back Cap Pink.png new file mode 100644 index 0000000..77d7785 Binary files /dev/null and b/assets/hats/Back Cap Pink.png differ diff --git a/assets/hats/Back Cap Purple.png b/assets/hats/Back Cap Purple.png new file mode 100644 index 0000000..470eb17 Binary files /dev/null and b/assets/hats/Back Cap Purple.png differ diff --git a/assets/hats/Back Cap Red.png b/assets/hats/Back Cap Red.png new file mode 100644 index 0000000..5270e2f Binary files /dev/null and b/assets/hats/Back Cap Red.png differ diff --git a/assets/hats/Back Cap White.png b/assets/hats/Back Cap White.png new file mode 100644 index 0000000..a3f5fc9 Binary files /dev/null and b/assets/hats/Back Cap White.png differ diff --git a/assets/hats/Back Cap Yellow.png b/assets/hats/Back Cap Yellow.png new file mode 100644 index 0000000..f17252e Binary files /dev/null and b/assets/hats/Back Cap Yellow.png differ diff --git a/assets/hats/Beginner Headtie Black.png b/assets/hats/Beginner Headtie Black.png new file mode 100644 index 0000000..dd65cea Binary files /dev/null and b/assets/hats/Beginner Headtie Black.png differ diff --git a/assets/hats/Beginner Headtie Blue.png b/assets/hats/Beginner Headtie Blue.png new file mode 100644 index 0000000..ffd64e7 Binary files /dev/null and b/assets/hats/Beginner Headtie Blue.png differ diff --git a/assets/hats/Beginner Headtie Green.png b/assets/hats/Beginner Headtie Green.png new file mode 100644 index 0000000..3d5447d Binary files /dev/null and b/assets/hats/Beginner Headtie Green.png differ diff --git a/assets/hats/Beginner Headtie Orange.png b/assets/hats/Beginner Headtie Orange.png new file mode 100644 index 0000000..50ca13a Binary files /dev/null and b/assets/hats/Beginner Headtie Orange.png differ diff --git a/assets/hats/Beginner Headtie Pink.png b/assets/hats/Beginner Headtie Pink.png new file mode 100644 index 0000000..9fffb79 Binary files /dev/null and b/assets/hats/Beginner Headtie Pink.png differ diff --git a/assets/hats/Beginner Headtie Purple.png b/assets/hats/Beginner Headtie Purple.png new file mode 100644 index 0000000..21c10a5 Binary files /dev/null and b/assets/hats/Beginner Headtie Purple.png differ diff --git a/assets/hats/Beginner Headtie Red.png b/assets/hats/Beginner Headtie Red.png new file mode 100644 index 0000000..0638546 Binary files /dev/null and b/assets/hats/Beginner Headtie Red.png differ diff --git a/assets/hats/Beginner Headtie White.png b/assets/hats/Beginner Headtie White.png new file mode 100644 index 0000000..c27ed66 Binary files /dev/null and b/assets/hats/Beginner Headtie White.png differ diff --git a/assets/hats/Beginner Headtie Yellow.png b/assets/hats/Beginner Headtie Yellow.png new file mode 100644 index 0000000..f484c43 Binary files /dev/null and b/assets/hats/Beginner Headtie Yellow.png differ diff --git a/assets/hats/Commander Hat Black.png b/assets/hats/Commander Hat Black.png new file mode 100644 index 0000000..dc3b878 Binary files /dev/null and b/assets/hats/Commander Hat Black.png differ diff --git a/assets/hats/Commander Hat Blue.png b/assets/hats/Commander Hat Blue.png new file mode 100644 index 0000000..7824e6b Binary files /dev/null and b/assets/hats/Commander Hat Blue.png differ diff --git a/assets/hats/Commander Hat Green.png b/assets/hats/Commander Hat Green.png new file mode 100644 index 0000000..f7fcf74 Binary files /dev/null and b/assets/hats/Commander Hat Green.png differ diff --git a/assets/hats/Commander Hat Orange.png b/assets/hats/Commander Hat Orange.png new file mode 100644 index 0000000..a939fc1 Binary files /dev/null and b/assets/hats/Commander Hat Orange.png differ diff --git a/assets/hats/Commander Hat Pink.png b/assets/hats/Commander Hat Pink.png new file mode 100644 index 0000000..332cf84 Binary files /dev/null and b/assets/hats/Commander Hat Pink.png differ diff --git a/assets/hats/Commander Hat Purple.png b/assets/hats/Commander Hat Purple.png new file mode 100644 index 0000000..ddae172 Binary files /dev/null and b/assets/hats/Commander Hat Purple.png differ diff --git a/assets/hats/Commander Hat Red.png b/assets/hats/Commander Hat Red.png new file mode 100644 index 0000000..36f825f Binary files /dev/null and b/assets/hats/Commander Hat Red.png differ diff --git a/assets/hats/Commander Hat White.png b/assets/hats/Commander Hat White.png new file mode 100644 index 0000000..778d4a1 Binary files /dev/null and b/assets/hats/Commander Hat White.png differ diff --git a/assets/hats/Commander Hat Yellow.png b/assets/hats/Commander Hat Yellow.png new file mode 100644 index 0000000..47206de Binary files /dev/null and b/assets/hats/Commander Hat Yellow.png differ diff --git a/assets/hats/The Item Black.png b/assets/hats/The Item Black.png new file mode 100644 index 0000000..2392290 Binary files /dev/null and b/assets/hats/The Item Black.png differ diff --git a/assets/hats/The Item Blue.png b/assets/hats/The Item Blue.png new file mode 100644 index 0000000..966ee75 Binary files /dev/null and b/assets/hats/The Item Blue.png differ diff --git a/assets/hats/The Item Green.png b/assets/hats/The Item Green.png new file mode 100644 index 0000000..a3fa5a2 Binary files /dev/null and b/assets/hats/The Item Green.png differ diff --git a/assets/hats/The Item Orange.png b/assets/hats/The Item Orange.png new file mode 100644 index 0000000..d6cb8bf Binary files /dev/null and b/assets/hats/The Item Orange.png differ diff --git a/assets/hats/The Item Pink.png b/assets/hats/The Item Pink.png new file mode 100644 index 0000000..5e87b7d Binary files /dev/null and b/assets/hats/The Item Pink.png differ diff --git a/assets/hats/The Item Purple.png b/assets/hats/The Item Purple.png new file mode 100644 index 0000000..cc38071 Binary files /dev/null and b/assets/hats/The Item Purple.png differ diff --git a/assets/hats/The Item Red.png b/assets/hats/The Item Red.png new file mode 100644 index 0000000..8affea5 Binary files /dev/null and b/assets/hats/The Item Red.png differ diff --git a/assets/hats/The Item White.png b/assets/hats/The Item White.png new file mode 100644 index 0000000..2d8faf3 Binary files /dev/null and b/assets/hats/The Item White.png differ diff --git a/assets/hats/The Item Yellow.png b/assets/hats/The Item Yellow.png new file mode 100644 index 0000000..1042baa Binary files /dev/null and b/assets/hats/The Item Yellow.png differ diff --git a/assets/hats/Top Hat Black.png b/assets/hats/Top Hat Black.png new file mode 100644 index 0000000..2393df6 Binary files /dev/null and b/assets/hats/Top Hat Black.png differ diff --git a/assets/hats/Top Hat Blue.png b/assets/hats/Top Hat Blue.png new file mode 100644 index 0000000..657d49d Binary files /dev/null and b/assets/hats/Top Hat Blue.png differ diff --git a/assets/hats/Top Hat Green.png b/assets/hats/Top Hat Green.png new file mode 100644 index 0000000..847bc8a Binary files /dev/null and b/assets/hats/Top Hat Green.png differ diff --git a/assets/hats/Top Hat Orange.png b/assets/hats/Top Hat Orange.png new file mode 100644 index 0000000..9943fc2 Binary files /dev/null and b/assets/hats/Top Hat Orange.png differ diff --git a/assets/hats/Top Hat Pink.png b/assets/hats/Top Hat Pink.png new file mode 100644 index 0000000..e8ebb1c Binary files /dev/null and b/assets/hats/Top Hat Pink.png differ diff --git a/assets/hats/Top Hat Purple.png b/assets/hats/Top Hat Purple.png new file mode 100644 index 0000000..31d8ece Binary files /dev/null and b/assets/hats/Top Hat Purple.png differ diff --git a/assets/hats/Top Hat Red.png b/assets/hats/Top Hat Red.png new file mode 100644 index 0000000..0dc0817 Binary files /dev/null and b/assets/hats/Top Hat Red.png differ diff --git a/assets/hats/Top Hat White.png b/assets/hats/Top Hat White.png new file mode 100644 index 0000000..de4de61 Binary files /dev/null and b/assets/hats/Top Hat White.png differ diff --git a/assets/hats/Top Hat Yellow.png b/assets/hats/Top Hat Yellow.png new file mode 100644 index 0000000..86b1e9b Binary files /dev/null and b/assets/hats/Top Hat Yellow.png differ diff --git a/assets/locations/Template.png b/assets/locations/Template.png new file mode 100644 index 0000000..b20c2be Binary files /dev/null and b/assets/locations/Template.png differ diff --git a/assets/locations/TemplateWithBattler.png b/assets/locations/TemplateWithBattler.png new file mode 100644 index 0000000..f1d28b4 Binary files /dev/null and b/assets/locations/TemplateWithBattler.png differ diff --git a/assets/necks/1K Chain Black.png b/assets/necks/1K Chain Black.png new file mode 100644 index 0000000..610d56f Binary files /dev/null and b/assets/necks/1K Chain Black.png differ diff --git a/assets/necks/1K Chain Blue.png b/assets/necks/1K Chain Blue.png new file mode 100644 index 0000000..2e67fc8 Binary files /dev/null and b/assets/necks/1K Chain Blue.png differ diff --git a/assets/necks/1K Chain Green.png b/assets/necks/1K Chain Green.png new file mode 100644 index 0000000..13b42cb Binary files /dev/null and b/assets/necks/1K Chain Green.png differ diff --git a/assets/necks/1K Chain Orange.png b/assets/necks/1K Chain Orange.png new file mode 100644 index 0000000..122cf7b Binary files /dev/null and b/assets/necks/1K Chain Orange.png differ diff --git a/assets/necks/1K Chain Pink.png b/assets/necks/1K Chain Pink.png new file mode 100644 index 0000000..b6ce4b3 Binary files /dev/null and b/assets/necks/1K Chain Pink.png differ diff --git a/assets/necks/1K Chain Purple.png b/assets/necks/1K Chain Purple.png new file mode 100644 index 0000000..2820676 Binary files /dev/null and b/assets/necks/1K Chain Purple.png differ diff --git a/assets/necks/1K Chain Red.png b/assets/necks/1K Chain Red.png new file mode 100644 index 0000000..ecc297a Binary files /dev/null and b/assets/necks/1K Chain Red.png differ diff --git a/assets/necks/1K Chain White.png b/assets/necks/1K Chain White.png new file mode 100644 index 0000000..ec44cc7 Binary files /dev/null and b/assets/necks/1K Chain White.png differ diff --git a/assets/necks/1K Chain Yellow.png b/assets/necks/1K Chain Yellow.png new file mode 100644 index 0000000..3343bc5 Binary files /dev/null and b/assets/necks/1K Chain Yellow.png differ diff --git a/assets/necks/Neck Chain Black.png b/assets/necks/Neck Chain Black.png new file mode 100644 index 0000000..3056fbf Binary files /dev/null and b/assets/necks/Neck Chain Black.png differ diff --git a/assets/necks/Neck Chain Blue.png b/assets/necks/Neck Chain Blue.png new file mode 100644 index 0000000..4b3844c Binary files /dev/null and b/assets/necks/Neck Chain Blue.png differ diff --git a/assets/necks/Neck Chain Green.png b/assets/necks/Neck Chain Green.png new file mode 100644 index 0000000..a326738 Binary files /dev/null and b/assets/necks/Neck Chain Green.png differ diff --git a/assets/necks/Neck Chain Orange.png b/assets/necks/Neck Chain Orange.png new file mode 100644 index 0000000..2ed0973 Binary files /dev/null and b/assets/necks/Neck Chain Orange.png differ diff --git a/assets/necks/Neck Chain Pink.png b/assets/necks/Neck Chain Pink.png new file mode 100644 index 0000000..5814e1d Binary files /dev/null and b/assets/necks/Neck Chain Pink.png differ diff --git a/assets/necks/Neck Chain Purple.png b/assets/necks/Neck Chain Purple.png new file mode 100644 index 0000000..2f0169d Binary files /dev/null and b/assets/necks/Neck Chain Purple.png differ diff --git a/assets/necks/Neck Chain Red.png b/assets/necks/Neck Chain Red.png new file mode 100644 index 0000000..1f47e0d Binary files /dev/null and b/assets/necks/Neck Chain Red.png differ diff --git a/assets/necks/Neck Chain White.png b/assets/necks/Neck Chain White.png new file mode 100644 index 0000000..ad8ded0 Binary files /dev/null and b/assets/necks/Neck Chain White.png differ diff --git a/assets/necks/Neck Chain Yellow.png b/assets/necks/Neck Chain Yellow.png new file mode 100644 index 0000000..bb34f17 Binary files /dev/null and b/assets/necks/Neck Chain Yellow.png differ diff --git a/assets/tops/Bizznizz Tie Black.png b/assets/tops/Bizznizz Tie Black.png new file mode 100644 index 0000000..1d568f5 Binary files /dev/null and b/assets/tops/Bizznizz Tie Black.png differ diff --git a/assets/tops/Bizznizz Tie Blue.png b/assets/tops/Bizznizz Tie Blue.png new file mode 100644 index 0000000..ecebb1d Binary files /dev/null and b/assets/tops/Bizznizz Tie Blue.png differ diff --git a/assets/tops/Bizznizz Tie Green.png b/assets/tops/Bizznizz Tie Green.png new file mode 100644 index 0000000..c520ea4 Binary files /dev/null and b/assets/tops/Bizznizz Tie Green.png differ diff --git a/assets/tops/Bizznizz Tie Orange.png b/assets/tops/Bizznizz Tie Orange.png new file mode 100644 index 0000000..004ecd5 Binary files /dev/null and b/assets/tops/Bizznizz Tie Orange.png differ diff --git a/assets/tops/Bizznizz Tie Pink.png b/assets/tops/Bizznizz Tie Pink.png new file mode 100644 index 0000000..b5b743a Binary files /dev/null and b/assets/tops/Bizznizz Tie Pink.png differ diff --git a/assets/tops/Bizznizz Tie Purple.png b/assets/tops/Bizznizz Tie Purple.png new file mode 100644 index 0000000..26e9a02 Binary files /dev/null and b/assets/tops/Bizznizz Tie Purple.png differ diff --git a/assets/tops/Bizznizz Tie Red.png b/assets/tops/Bizznizz Tie Red.png new file mode 100644 index 0000000..1d4bdfa Binary files /dev/null and b/assets/tops/Bizznizz Tie Red.png differ diff --git a/assets/tops/Bizznizz Tie White.png b/assets/tops/Bizznizz Tie White.png new file mode 100644 index 0000000..2b95e28 Binary files /dev/null and b/assets/tops/Bizznizz Tie White.png differ diff --git a/assets/tops/Bizznizz Tie Yellow.png b/assets/tops/Bizznizz Tie Yellow.png new file mode 100644 index 0000000..f18f2f6 Binary files /dev/null and b/assets/tops/Bizznizz Tie Yellow.png differ diff --git a/assets/tops/House Vibe Hoodie Black.png b/assets/tops/House Vibe Hoodie Black.png new file mode 100644 index 0000000..a83c16f Binary files /dev/null and b/assets/tops/House Vibe Hoodie Black.png differ diff --git a/assets/tops/House Vibe Hoodie Blue.png b/assets/tops/House Vibe Hoodie Blue.png new file mode 100644 index 0000000..f27301f Binary files /dev/null and b/assets/tops/House Vibe Hoodie Blue.png differ diff --git a/assets/tops/House Vibe Hoodie Green.png b/assets/tops/House Vibe Hoodie Green.png new file mode 100644 index 0000000..5a85678 Binary files /dev/null and b/assets/tops/House Vibe Hoodie Green.png differ diff --git a/assets/tops/House Vibe Hoodie Orange.png b/assets/tops/House Vibe Hoodie Orange.png new file mode 100644 index 0000000..10c5301 Binary files /dev/null and b/assets/tops/House Vibe Hoodie Orange.png differ diff --git a/assets/tops/House Vibe Hoodie Pink.png b/assets/tops/House Vibe Hoodie Pink.png new file mode 100644 index 0000000..32372e1 Binary files /dev/null and b/assets/tops/House Vibe Hoodie Pink.png differ diff --git a/assets/tops/House Vibe Hoodie Purple.png b/assets/tops/House Vibe Hoodie Purple.png new file mode 100644 index 0000000..bf932df Binary files /dev/null and b/assets/tops/House Vibe Hoodie Purple.png differ diff --git a/assets/tops/House Vibe Hoodie Red.png b/assets/tops/House Vibe Hoodie Red.png new file mode 100644 index 0000000..6612c5a Binary files /dev/null and b/assets/tops/House Vibe Hoodie Red.png differ diff --git a/assets/tops/House Vibe Hoodie White.png b/assets/tops/House Vibe Hoodie White.png new file mode 100644 index 0000000..d14b8b8 Binary files /dev/null and b/assets/tops/House Vibe Hoodie White.png differ diff --git a/assets/tops/House Vibe Hoodie Yellow.png b/assets/tops/House Vibe Hoodie Yellow.png new file mode 100644 index 0000000..c720416 Binary files /dev/null and b/assets/tops/House Vibe Hoodie Yellow.png differ diff --git a/assets/tops/Sash Black.png b/assets/tops/Sash Black.png new file mode 100644 index 0000000..c57dbd9 Binary files /dev/null and b/assets/tops/Sash Black.png differ diff --git a/assets/tops/Sash Blue.png b/assets/tops/Sash Blue.png new file mode 100644 index 0000000..d7df24b Binary files /dev/null and b/assets/tops/Sash Blue.png differ diff --git a/assets/tops/Sash Green.png b/assets/tops/Sash Green.png new file mode 100644 index 0000000..345d3b8 Binary files /dev/null and b/assets/tops/Sash Green.png differ diff --git a/assets/tops/Sash Orange.png b/assets/tops/Sash Orange.png new file mode 100644 index 0000000..307ccca Binary files /dev/null and b/assets/tops/Sash Orange.png differ diff --git a/assets/tops/Sash Pink.png b/assets/tops/Sash Pink.png new file mode 100644 index 0000000..0e6b3ab Binary files /dev/null and b/assets/tops/Sash Pink.png differ diff --git a/assets/tops/Sash Purple.png b/assets/tops/Sash Purple.png new file mode 100644 index 0000000..5c31f98 Binary files /dev/null and b/assets/tops/Sash Purple.png differ diff --git a/assets/tops/Sash Red.png b/assets/tops/Sash Red.png new file mode 100644 index 0000000..1fca8d6 Binary files /dev/null and b/assets/tops/Sash Red.png differ diff --git a/assets/tops/Sash White.png b/assets/tops/Sash White.png new file mode 100644 index 0000000..0cc01ef Binary files /dev/null and b/assets/tops/Sash White.png differ diff --git a/assets/tops/Sash Yellow.png b/assets/tops/Sash Yellow.png new file mode 100644 index 0000000..64c91ad Binary files /dev/null and b/assets/tops/Sash Yellow.png differ diff --git a/assets/tops/Side Cloak Black.png b/assets/tops/Side Cloak Black.png new file mode 100644 index 0000000..345947f Binary files /dev/null and b/assets/tops/Side Cloak Black.png differ diff --git a/assets/tops/Side Cloak Blue.png b/assets/tops/Side Cloak Blue.png new file mode 100644 index 0000000..1df5c09 Binary files /dev/null and b/assets/tops/Side Cloak Blue.png differ diff --git a/assets/tops/Side Cloak Green.png b/assets/tops/Side Cloak Green.png new file mode 100644 index 0000000..fda742c Binary files /dev/null and b/assets/tops/Side Cloak Green.png differ diff --git a/assets/tops/Side Cloak Orange.png b/assets/tops/Side Cloak Orange.png new file mode 100644 index 0000000..acbeab0 Binary files /dev/null and b/assets/tops/Side Cloak Orange.png differ diff --git a/assets/tops/Side Cloak Pink.png b/assets/tops/Side Cloak Pink.png new file mode 100644 index 0000000..7528cd5 Binary files /dev/null and b/assets/tops/Side Cloak Pink.png differ diff --git a/assets/tops/Side Cloak Purple.png b/assets/tops/Side Cloak Purple.png new file mode 100644 index 0000000..eb02beb Binary files /dev/null and b/assets/tops/Side Cloak Purple.png differ diff --git a/assets/tops/Side Cloak Red.png b/assets/tops/Side Cloak Red.png new file mode 100644 index 0000000..62f497a Binary files /dev/null and b/assets/tops/Side Cloak Red.png differ diff --git a/assets/tops/Side Cloak White.png b/assets/tops/Side Cloak White.png new file mode 100644 index 0000000..f126a47 Binary files /dev/null and b/assets/tops/Side Cloak White.png differ diff --git a/assets/tops/Side Cloak Yellow.png b/assets/tops/Side Cloak Yellow.png new file mode 100644 index 0000000..c3d1a0d Binary files /dev/null and b/assets/tops/Side Cloak Yellow.png differ diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..e409c04 --- /dev/null +++ b/index.ts @@ -0,0 +1,938 @@ +import { createCanvas, loadImage, GlobalFonts, SKRSContext2D } from "@napi-rs/canvas"; +import { + GenerateBattlerOptions, + GenerateBattleImageOptions, + PlayerActionOptions, + Colour, + Opponents, + PlayerActions, + CustomActionOptions +} from "./types"; +import { + generateBattler, drawText, applyText, + validOpponents, validPlayerActions +} from "./utils"; + +import { createServer } from "node:http"; + +import GenerateParty from "./party" + +GlobalFonts + .registerFromPath(import.meta.dirname + "/LilitaOne.ttf", "Lilita One"); + +const opponents = { + [Opponents.BattleBeginner]: { + text: "Battle Beginner", + colour: ["#007500", "#FFFFFF"] + }, + [Opponents.BattleBeginner2024]: { + text: "Battle Beginner", + colour: ["#007500", "#FFFFFF"] + }, + [Opponents.BattleCasual]: { + text: "Battle Casual", + colour: ["#FFFF00", "#000000"] + }, + [Opponents.BattleMaster]: { + text: "Battle Master", + colour: ["#FF0000", "#000000"] + }, + [Opponents.BattlePro]: { + text: "Battle Pro", + colour: ["#FF8000", "#000000"] + }, + [Opponents.Battler]: { + text: "Battler", + colour: ["#FFFFFF", "#000000"] + }, + [Opponents.BattlerElite]: { + text: "Battler Elite", + colour: ["#FFFFFF", "#FF0000"] + }, + [Opponents.None]: { + text: "", + colour: ["#FFFFFF", "#FFFFFF"] + }, + [Opponents.RapStar]: { + text: "Rap Star", + colour: ["#FF0000", "#FFFFFF"] + }, + [Opponents.ArtMaster]: { + text: "Art Master", + colour: ["#000000", "#FFFFFF"] + }, + [Opponents.TheInterrogator]: { + text: "The Interrogator", + colour: ["#FFFFFF", "#000000"] + }, + [Opponents.CommonOverseer]: { + text: "Common Overseer", + colour: ["#000000", "#32CD32"] + }, + [Opponents.Moonlite]: { + text: "Moonlite", + colour: ["#000000", "#FFFFFF"] + }, + [Opponents.Dicey]: { + text: "Dicey", + colour: ["#000000", "#FFFFFF"] + }, + [Opponents.Kacey]: { + text: "Kacey", + colour: ["#000000", "#FFFFFF"] + }, + [Opponents.Lexa]: { + text: "Lexa", + colour: ["#FFFFFF", "#FF00FF"] + }, + [Opponents.Delta]: { + text: "Delta", + colour: ["#000000", "#FFFFFF"] + }, + [Opponents.DoodlePro]: { + text: "Doodle Pro", + colour: ["#000000", "#FFFFFF"] + }, + [Opponents.GuitarHero]: { + text: "Guitar Hero", + colour: ["#FFFFFF", "#FF8000"] + }, + [Opponents.SmallKeyMaster]: { + text: "Small KeyMaster", + colour: ["#FFFFFF", "#32CD32"] + }, + [Opponents.RareOverseer]: { + text: "Rare Overseer", + colour: ["#000000", "#00FFFF"] + }, + [Opponents.DEMUL]: { + text: "DEMUL", + colour: ["#FFFFFF", "#000000"] + }, + [Opponents.AgentZ]: { + text: "Agent Z", + colour: ["#FFFFFF", "#000000"] + }, + [Opponents.MediumKeyMaster]: { + text: "Medium KeyMaster", + colour: ["#000000", "#00FFFF"] + }, + [Opponents.IncomingSword]: { + text: "Incoming Sword", + colour: ["#FF0000", "#FFFFFF"] + }, + [Opponents.Eda]: { + text: "Eda", + colour: ["#9000FF", "#FFFFFF"] + }, + [Opponents.TheFirewall]: { + text: "The Firewall", + colour: ["#FFFFFF", "#FFAA00"] + } +} + +// const _server = Bun.serve({ +// port: 41399, +// async fetch(req: Request) { +// if (req.method == "OPTIONS") { +// return new Response(null, { +// headers: { +// "access-control-allow-origin": "*", +// }, +// }); +// } + +// const url = new URL(req.url); +// if (req.method == "GET" && url.pathname == "/") { +// return new Response(null, { +// status: 204 +// }); +// } + +// if (req.method == "GET" && url.pathname == "/party.png") { +// return GenerateParty(req, url) +// } + +// if (req.method == "GET" && url.pathname == "/battler.png") { +// const opts = Object.fromEntries( +// Array.from(url.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions; + +// const battler = await generateBattler(opts); + +// return new Response(battler.toBuffer("image/png"), { +// headers: { +// "content-type": "image/png", +// }, +// }); +// } + +// if (req.method == "GET" && url.pathname == "/profilebattler.png") { +// const opts = Object.fromEntries( +// Array.from(url.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions & { username: string }; + +// const canvas = createCanvas(1280, 1280); +// const ctx = canvas.getContext("2d"); + +// const battler = await generateBattler(opts) + +// ctx.drawImage(battler, 0, 0); + +// ctx.textAlign = "center" + +// ctx.font = applyText(canvas, opts.username, canvas.width - 20) + +// drawText([640, 1100], opts.username, opts.username == "homeannor" ? "#AA00FF" : "#000000", { colour: "#FFFFFF", width: 20 }, ctx) + +// return new Response(canvas.toBuffer("image/png"), { +// headers: { +// "content-type": "image/png", +// }, +// }); +// } + +// if ( +// req.method == "GET" && +// (url.pathname == "/battlesquadfight.png" || +// url.pathname == "/battlestart.png") +// ) { +// const opts = Object.fromEntries( +// Array.from(url.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions & GenerateBattleImageOptions; + +// if (!opts.opponent) { +// return new Response( +// JSON.stringify({ +// error: '"opponent" query parameter not specified', +// }), +// { +// status: 400, +// headers: { +// "content-type": "application/json", +// }, +// }, +// ); +// } + +// // Image dimensions +// const canvas = createCanvas(1920, 1080); +// const context = canvas.getContext("2d"); + +// if (!validOpponents.includes(opts.opponent)) opts.opponent = Opponents.None + +// const SquadBackground = await loadImage( +// `./assets/battlebgs/${opts.opponent}.png`, +// ); + +// context.drawImage(SquadBackground, 0, 0, canvas.width, canvas.height); + +// const battler = await generateBattler(opts); + +// context.drawImage(battler, -140, -100, battler.width, battler.height); + +// context.textAlign = "center" + +// context.font = applyText(canvas, opponents[opts.opponent].text, 875) + +// drawText([1450, 1000], opponents[opts.opponent].text, opponents[opts.opponent].colour[1], { colour: opponents[opts.opponent].colour[0], width: 20 }, context); + +// context.font = applyText(canvas, opts.username, 675) + +// drawText([470, 1000], opts.username, opts.username == "homeannor" ? "#AA00FF" : "#000000", { colour: "#FFFFFF", width: 20 }, context) + +// return new Response(canvas.toBuffer("image/png"), { +// headers: { +// "content-type": "image/png", +// }, +// }); +// } + +// if ( +// req.method == "GET" && +// url.pathname == "/playeraction.png" +// ) { +// const opts = Object.fromEntries( +// Array.from(url.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as PlayerActionOptions; + +// if (!opts.action) { +// return new Response( +// JSON.stringify({ +// error: '"action" query parameter not specified', +// }), +// { +// status: 400, +// headers: { +// "content-type": "application/json", +// }, +// }, +// ); +// } + +// if (!validPlayerActions.includes(opts.action)) { +// return new Response( +// JSON.stringify({ +// error: +// '"action" query parameter not formatted correctly. Got "' + +// opts.action + +// '".', +// }), +// { +// status: 400, +// headers: { +// "content-type": "application/json", +// }, +// }, +// ); +// } + +// // Image dimensions +// const canvas = createCanvas(1920, 1080); +// const context = canvas.getContext("2d"); + +// const actionBackground = await loadImage( +// `./assets/actionbgs/${opts.action}.png`, +// ); + +// context.drawImage(actionBackground, 0, 0, canvas.width, canvas.height); + +// const pUrl = new URL(encodeURI(opts.player)) + +// const player = Object.fromEntries( +// Array.from(pUrl.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions + +// if (opts.action.endsWith("Left")) { +// const battler = await generateBattler(player); + +// context.drawImage(battler, -50, -100, battler.width, battler.height); +// } else if (opts.action.endsWith("Right")) { +// const battler = await generateBattler({ ...player, direction: "left" }); + +// context.drawImage(battler, (canvas.width / 2) - 300, -100, battler.width, battler.height); +// } + +// return new Response(canvas.toBuffer("image/png"), { +// headers: { +// "content-type": "image/png", +// }, +// }); +// } + +// if ( +// req.method == "GET" && +// url.pathname == "/customaction.png" +// ) { +// const opts = Object.fromEntries( +// Array.from(url.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as CustomActionOptions; + +// if (!opts.background) { +// return new Response( +// JSON.stringify({ +// error: '"background" query parameter not specified', +// }), +// { +// status: 400, +// headers: { +// "content-type": "application/json", +// }, +// }, +// ); +// } + +// // Image dimensions +// const canvas = createCanvas(1920, 1080); +// const context = canvas.getContext("2d"); + +// const actionBackground = await loadImage( +// opts.background, +// ); + +// context.drawImage(actionBackground, 0, 0, canvas.width, canvas.height); + +// const pUrl = new URL(encodeURI(opts.player)) + +// const player = Object.fromEntries( +// Array.from(pUrl.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions + +// const battler = await generateBattler(player); + +// if (opts.position == "middle") { +// context.drawImage(battler, (1920 / 2) - 640, -100, battler.width, battler.height); +// } else { +// context.drawImage(battler, -50, -100, battler.width, battler.height); +// } + +// return new Response(canvas.toBuffer("image/png"), { +// headers: { +// "content-type": "image/png", +// }, +// }); +// } + +// if ( +// req.method == "GET" && +// url.pathname == "/playermap.png" +// ) { +// const opts = Object.fromEntries( +// Array.from(url.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as { player1: string, player2: string, map: string }; + +// if (!opts.player1 || !opts.player2 || !opts.map) { +// return new Response( +// JSON.stringify({ +// error: 'Did not pass all parameters', +// }), +// { +// status: 400, +// headers: { +// "content-type": "application/json", +// }, +// }, +// ); +// } + +// const p1URL = new URL(encodeURI(opts.player1)) +// const p2URL = new URL(encodeURI(opts.player2)) + +// const p1Opts = Object.fromEntries( +// Array.from(p1URL.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions +// const p2Opts = Object.fromEntries( +// Array.from(p2URL.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions + +// const p1 = await generateBattler(p1Opts); +// const p2 = await generateBattler({ ...p2Opts, direction: "left" }) + +// // Image dimensions +// const canvas = createCanvas(1920, 1080); +// const context = canvas.getContext("2d"); + +// const Background = await loadImage( +// `./assets/locations/${opts.map}.png`, +// ); + +// context.drawImage(Background, 0, 0, canvas.width, canvas.height); + +// context.drawImage(p1, 140, 313, p1.width / 2, p1.height / 2); +// context.drawImage(p2, (canvas.width / 2) + 177, 313, p2.width / 2, p2.height / 2); + +// return new Response(canvas.toBuffer("image/png"), { +// headers: { +// "content-type": "image/png", +// }, +// }); +// } + +// if ( +// req.method == "GET" && +// url.pathname == "/map.png" +// ) { +// const opts = Object.fromEntries( +// Array.from(url.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as { player: string, map: string }; + +// if (!opts.player || !opts.map) { +// return new Response( +// JSON.stringify({ +// error: 'Did not pass all parameters', +// }), +// { +// status: 400, +// headers: { +// "content-type": "application/json", +// }, +// }, +// ); +// } + +// const p1URL = new URL(encodeURI(opts.player)) + +// const p1Opts = Object.fromEntries( +// Array.from(p1URL.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions + +// const p1 = await generateBattler(p1Opts); + +// // Image dimensions +// const canvas = createCanvas(1920, 1080); +// const context = canvas.getContext("2d"); + +// const Background = await loadImage( +// `./assets/locations/${opts.map}.png`, +// ); + +// context.drawImage(Background, 0, 0, canvas.width, canvas.height); + +// context.drawImage(p1, 140, 313, p1.width / 2, p1.height / 2); + +// return new Response(canvas.toBuffer("image/png"), { +// headers: { +// "content-type": "image/png", +// }, +// }); +// } + +// if ( +// req.method == "GET" && +// url.pathname == "/pvp.png" +// ) { +// const opts = Object.fromEntries( +// Array.from(url.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as { player1: string, player2: string, username1: string, username2: string }; + +// if (!opts.player1 || !opts.player2 || !opts.username1 || !opts.username2) { +// return new Response( +// JSON.stringify({ +// error: 'Did not pass all parameters', +// }), +// { +// status: 400, +// headers: { +// "content-type": "application/json", +// }, +// }, +// ); +// } + +// const p1URL = new URL(encodeURI(opts.player1)) +// const p2URL = new URL(encodeURI(opts.player2)) + +// const p1Opts = Object.fromEntries( +// Array.from(p1URL.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions +// const p2Opts = Object.fromEntries( +// Array.from(p2URL.searchParams.entries()) +// .map(([key, value]) => [key, value.replaceAll('+', ' ')]), +// ) as GenerateBattlerOptions + +// const p1 = await generateBattler(p1Opts); +// const p2 = await generateBattler({ ...p2Opts, direction: "left" }) + +// // Image dimensions +// const canvas = createCanvas(1920, 1080); +// const context = canvas.getContext("2d"); + +// const Background = await loadImage( +// `./assets/battlebgs/PvP.png`, +// ); + +// context.drawImage(Background, 0, 0, canvas.width, canvas.height); + +// context.drawImage(p1, -140, -100, p1.width, p1.height); +// context.drawImage(p2, (canvas.width / 2) - 180, -100, p2.width, p2.height); + +// context.textAlign = "center" + +// context.font = applyText(canvas, opts.username2, 675) + +// drawText([1450, 1000], opts.username2, opts.username2 == "homeannor" ? "#AA00FF" : "#000000", { colour: "#FFFFFF", width: 20 }, context) + +// context.font = applyText(canvas, opts.username1, 675) + +// drawText([470, 1000], opts.username1, opts.username1 == "homeannor" ? "#AA00FF" : "#000000", { colour: "#FFFFFF", width: 20 }, context) + +// return new Response(canvas.toBuffer("image/png"), { +// headers: { +// "content-type": "image/png", +// }, +// }); +// } + +// return new Response(`Cannot ${req.method} ${url.pathname}`, { +// status: 404, +// }); +// }, +// }); + +const server = createServer(async (req, res) => { + if (req.method === "OPTIONS") { + res.setHeader("access-control-allow-origin", "*") + return res.end(); + } + + const url = new URL(req.url!, "https://loc.al"); + + console.log(req.method, url.pathname) + + if (req.method == "GET" && url.pathname == "/battler.png") { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions; + + const battler = await generateBattler(opts); + + res.setHeader('content-type', 'image/png'); + + return res.end(battler.toBuffer("image/png"), 'binary') + } + + if (req.method == "GET" && url.pathname == "/profilebattler.png") { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions & { username: string }; + + const canvas = createCanvas(1280, 1280); + const ctx = canvas.getContext("2d"); + + const battler = await generateBattler(opts) + + ctx.drawImage(battler, 0, 0); + + ctx.textAlign = "center" + + ctx.font = applyText(canvas, opts.username, canvas.width - 20) + + drawText([640, 1100], opts.username, opts.username == "homeannor" ? "#AA00FF" : "#000000", { colour: "#FFFFFF", width: 20 }, ctx) + + res.setHeader('content-type', 'image/png'); + + return res.end(canvas.toBuffer("image/png"), 'binary') + } + if ( + req.method == "GET" && + (url.pathname == "/battlesquadfight.png" || + url.pathname == "/battlestart.png") + ) { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions & GenerateBattleImageOptions; + + if (!opts.opponent) { + res.writeHead(400, { 'content-type': "application/json" }) + return res.end( + JSON.stringify({ + error: '"opponent" query parameter not specified', + }) + ); + } + + // Image dimensions + const canvas = createCanvas(1920, 1080); + const context = canvas.getContext("2d"); + + if (!validOpponents.includes(opts.opponent)) opts.opponent = Opponents.None + + const SquadBackground = await loadImage( + `./assets/battlebgs/${opts.opponent}.png`, + ); + + context.drawImage(SquadBackground, 0, 0, canvas.width, canvas.height); + + const battler = await generateBattler(opts); + + context.drawImage(battler, -140, -100, battler.width, battler.height); + + context.textAlign = "center" + + context.font = applyText(canvas, opponents[opts.opponent].text, 875) + + drawText([1450, 1000], opponents[opts.opponent].text, opponents[opts.opponent].colour[1], { colour: opponents[opts.opponent].colour[0], width: 20 }, context); + + context.font = applyText(canvas, opts.username, 675) + + drawText([470, 1000], opts.username, opts.username == "homeannor" ? "#AA00FF" : "#000000", { colour: "#FFFFFF", width: 20 }, context) + + res.setHeader('content-type', 'image/png'); + + return res.end(canvas.toBuffer("image/png"), 'binary') + } + + if ( + req.method == "GET" && + url.pathname == "/playeraction.png" + ) { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as PlayerActionOptions; + + if (!opts.action) { + res.writeHead(400, { 'content-type': "application/json" }) + return res.end( + JSON.stringify({ + error: '"action" query parameter not specified', + }) + ); + } + + if (!validPlayerActions.includes(opts.action)) { + res.writeHead(400, { 'content-type': "application/json" }) + return res.end( + JSON.stringify({ + error: + '"action" query parameter not formatted correctly. Got "' + + opts.action + + '".', + }) + ); + } + + // Image dimensions + const canvas = createCanvas(1920, 1080); + const context = canvas.getContext("2d"); + + const actionBackground = await loadImage( + `./assets/actionbgs/${opts.action}.png`, + ); + + context.drawImage(actionBackground, 0, 0, canvas.width, canvas.height); + + const pUrl = new URL(encodeURI(opts.player)) + + const player = Object.fromEntries( + Array.from(pUrl.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions + + if (opts.action.endsWith("Left")) { + const battler = await generateBattler(player); + + context.drawImage(battler, -50, -100, battler.width, battler.height); + } else if (opts.action.endsWith("Right")) { + const battler = await generateBattler({ ...player, direction: "left" }); + + context.drawImage(battler, (canvas.width / 2) - 300, -100, battler.width, battler.height); + } + + res.setHeader('content-type', 'image/png'); + + return res.end(canvas.toBuffer("image/png"), 'binary') + } + + if ( + req.method == "GET" && + url.pathname == "/customaction.png" + ) { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as CustomActionOptions; + + if (!opts.background) { + res.writeHead(400, { 'content-type': "application/json" }) + return res.end( + JSON.stringify({ + error: + '"background" query parameter not found', + }) + ); + } + + // Image dimensions + const canvas = createCanvas(1920, 1080); + const context = canvas.getContext("2d"); + + const actionBackground = await loadImage( + opts.background, + ); + + context.drawImage(actionBackground, 0, 0, canvas.width, canvas.height); + + const pUrl = new URL(encodeURI(opts.player)) + + const player = Object.fromEntries( + Array.from(pUrl.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions + + const battler = await generateBattler(player); + + if (opts.position == "middle") { + context.drawImage(battler, (1920 / 2) - 640, -100, battler.width, battler.height); + } else { + context.drawImage(battler, -50, -100, battler.width, battler.height); + } + + res.setHeader('content-type', 'image/png'); + + return res.end(canvas.toBuffer("image/png"), 'binary') + } + + if ( + req.method == "GET" && + url.pathname == "/playermap.png" + ) { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as { player1: string, player2: string, map: string }; + + if (!opts.player1 || !opts.player2 || !opts.map) { + res.writeHead(400, { 'content-type': "application/json" }) + return res.end( + JSON.stringify({ + error: + 'Did not pass all parameters', + }) + ); + } + + const p1URL = new URL(encodeURI(opts.player1)) + const p2URL = new URL(encodeURI(opts.player2)) + + const p1Opts = Object.fromEntries( + Array.from(p1URL.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions + const p2Opts = Object.fromEntries( + Array.from(p2URL.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions + + const p1 = await generateBattler(p1Opts); + const p2 = await generateBattler({ ...p2Opts, direction: "left" }) + + // Image dimensions + const canvas = createCanvas(1920, 1080); + const context = canvas.getContext("2d"); + + const Background = await loadImage( + `./assets/locations/${opts.map}.png`, + ); + + context.drawImage(Background, 0, 0, canvas.width, canvas.height); + + context.drawImage(p1, 140, 313, p1.width / 2, p1.height / 2); + context.drawImage(p2, (canvas.width / 2) + 177, 313, p2.width / 2, p2.height / 2); + + res.setHeader('content-type', 'image/png'); + + return res.end(canvas.toBuffer("image/png"), 'binary') + } + + if ( + req.method == "GET" && + url.pathname == "/map.png" + ) { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as { player: string, map: string }; + + if (!opts.player || !opts.map) { + res.writeHead(400, { 'content-type': "application/json" }) + return res.end( + JSON.stringify({ + error: + 'Did not pass all parameters', + }) + ); + } + + const p1URL = new URL(encodeURI(opts.player)) + + const p1Opts = Object.fromEntries( + Array.from(p1URL.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions + + const p1 = await generateBattler(p1Opts); + + // Image dimensions + const canvas = createCanvas(1920, 1080); + const context = canvas.getContext("2d"); + + const Background = await loadImage( + `./assets/locations/${opts.map}.png`, + ); + + context.drawImage(Background, 0, 0, canvas.width, canvas.height); + + context.drawImage(p1, 140, 313, p1.width / 2, p1.height / 2); + + res.setHeader('content-type', 'image/png'); + + return res.end(canvas.toBuffer("image/png"), 'binary') + } + + if ( + req.method == "GET" && + url.pathname == "/pvp.png" + ) { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as { player1: string, player2: string, username1: string, username2: string }; + + if (!opts.player1 || !opts.player2 || !opts.username1 || !opts.username2) { + res.writeHead(400, { 'content-type': "application/json" }) + return res.end( + JSON.stringify({ + error: + 'Did not pass all parameters', + }) + ); + } + + const p1URL = new URL(encodeURI(opts.player1)) + const p2URL = new URL(encodeURI(opts.player2)) + + const p1Opts = Object.fromEntries( + Array.from(p1URL.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions + const p2Opts = Object.fromEntries( + Array.from(p2URL.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as GenerateBattlerOptions + + const p1 = await generateBattler(p1Opts); + const p2 = await generateBattler({ ...p2Opts, direction: "left" }) + + // Image dimensions + const canvas = createCanvas(1920, 1080); + const context = canvas.getContext("2d"); + + const Background = await loadImage( + `./assets/battlebgs/PvP.png`, + ); + + context.drawImage(Background, 0, 0, canvas.width, canvas.height); + + context.drawImage(p1, -140, -100, p1.width, p1.height); + context.drawImage(p2, (canvas.width / 2) - 180, -100, p2.width, p2.height); + + context.textAlign = "center" + + context.font = applyText(canvas, opts.username2, 675) + + drawText([1450, 1000], opts.username2, opts.username2 == "homeannor" ? "#AA00FF" : "#000000", { colour: "#FFFFFF", width: 20 }, context) + + context.font = applyText(canvas, opts.username1, 675) + + drawText([470, 1000], opts.username1, opts.username1 == "homeannor" ? "#AA00FF" : "#000000", { colour: "#FFFFFF", width: 20 }, context) + + res.setHeader('content-type', 'image/png'); + + return res.end(canvas.toBuffer("image/png"), 'binary') + } + + res.writeHead(404) + return res.end("404 Not Found") +}) + +server.listen(60125, () => { + console.log(`Listening on localhost:60125`) +}) \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..72ca67e --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "name": "my-project", + "main": "index.ts", + "devDependencies": { + "@types/node": "^20.12.7", + "bun-types": "^1.0.1" + }, + "type": "module", + "dependencies": { + "@napi-rs/canvas": "^0.1.44", + "tsx": "^4.7.2" + } +} \ No newline at end of file diff --git a/party.ts b/party.ts new file mode 100644 index 0000000..09bea40 --- /dev/null +++ b/party.ts @@ -0,0 +1,84 @@ +// Making a whole new file for this, that's how complex it looks like it'll be. +import { Canvas, createCanvas, loadImage, GlobalFonts, SKRSContext2D } from "@napi-rs/canvas"; + +import { + GenerateBattlerOptions, + GenerateBattleImageOptions, + PlayerActionOptions, + Colour, + Opponents, + PlayerActions, + CustomActionOptions +} from "./types"; + +import { + generateBattler, drawText, applyText, +} from "./utils"; + +type Rank = "Beginner" | "Casual" | "Pro" | "Master"; + +type PartyOptions = { + ready: string; + + player1: string; + username1: string; + rank1: Rank; + + player2?: string; + username2?: string; + rank2?: Rank; + + player3?: string; + username3?: string; + rank3?: Rank; + + player4?: string; + username4?: string; + rank4?: Rank; + + player5?: string; + username5?: string; + rank5?: Rank; + + player6?: string; + username6?: string; + rank6?: Rank; + + player7?: string; + username7?: string; + rank7?: Rank; + + player8?: string; + username8?: string; + rank8?: Rank; +} + +function generateMatchType(opts: PartyOptions): string { + const keys: (keyof PartyOptions)[] = [ + 'player1', 'player2', 'player3', 'player4', 'player5', 'player6', 'player7', 'player8' + ]; + let playerCount = keys.reduce((count, key) => opts[key] ? count + 1 : count, 0); + // If there's an odd number of players, round up to the next even number + if (playerCount % 2 !== 0) { + playerCount++; + } + // Divide by 2 to get the number for each team, since it's evenly matched (e.g. "1v1", "2v2") + const teamSize = playerCount / 2; + return `${teamSize}v${teamSize}`; +} + + +export default async function party(request: Request, url: import("url").URL): Promise { + const opts = Object.fromEntries( + Array.from(url.searchParams.entries()) + .map(([key, value]) => [key, value.replaceAll('+', ' ')]), + ) as PartyOptions; + + if (!opts.player1 && !opts.username1 && !opts.rank1) { + return Response.json({ + error: "At least one player must be in the party" + }) + } + + +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..cf19612 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "lib": [ + "ESNext" + ], + "module": "esnext", + "target": "esnext", + "moduleResolution": "node", + "strict": true, + "downlevelIteration": true, + "skipLibCheck": true, + "jsx": "react-jsx", + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "allowJs": true, + "types": ["@types/node"] + }, + "moduleDetection": "force" +} \ No newline at end of file diff --git a/types.ts b/types.ts new file mode 100644 index 0000000..14a08af --- /dev/null +++ b/types.ts @@ -0,0 +1,154 @@ +export enum Colour { + Black = "Black", + Red = "Red", + Orange = "Orange", + Yellow = "Yellow", + Green = "Green", + Blue = "Blue", + Pink = "Pink", + Purple = "Purple", + White = "White", +} + +export type ColouredOpt = `${T} ${Colour}` | "None"; + +export enum Hats { + Headtie = "Beginner Headtie", + CommanderHat = "Commander Hat", + TopHat = "Top Hat", + BackCap = "Back Cap", + TheItem = "The Item", +} + +export enum Faces { + DWI = "Deal with it", + EyeMask = "Eye Mask", +} + +export enum Eyes { + Serious = "Serious", + Angry = "Angry", + Confused = "Confused", + Cheerful = "Cheerful", + Tired = "Tired", + Excited = "Excited", + Dizzy = "Dizzy", + Worried = "Worried", +} + +export enum Tops { + Sash = "Sash", + SideCloak = "Side Cloak", + BizznizzTie = "Bizznizz Tie", + HouseVibeHoodie = "House Vibe Hoo", +} + +export enum Bottoms { + KneePads = "Knee Pads", + Skirt = "Skirt", + BattlerDrip = "Battler Drip", +} + +export enum Buddies { + Battler = "Battler", + HouseVibe = "House Vibe", + LockBlock = "Lock Block", + BattleSpecial = "Battle Special", + BattleSupport = "Battle Support", + Houseannor = "Houseannor", + Ranger = "Ranger", + PCSB = "PCSB", + PLR = "PLR", + Basketiballu = "Basketiballu", + StartingMountain = "Starting Mountain", + Olivia = "Olivia", + PrototypeRanger = "Prototype Ranger", + DEMUL = "DEMUL", + IncomingSword = "Incoming Sword", + MARZBall = "MARZ Ball", + NoodleTheKitten = "Noodle the Kitten", +} + +export enum Backs { + BattleSword = "Battle Sword", + Tail = "Tail", + GenericPole = "Generic Pole", + BattleHammer = "Battle Hammer", + BattleScythe = "Battle Scythe", + BattleSpear = "Battle Spear", + THEFIRE = "THE FIRE", +} + +export enum Necks { + NeckChain = "Neck Chain", + OneKChain = "1K Chain", +} + +export enum Opponents { + None = "None", + BattleBeginner = "BattleBeginner", + BattleBeginner2024 = "BattleBeginner2024", + BattleCasual = "BattleCasual", + BattlePro = "BattlePro", + BattleMaster = "BattleMaster", + Battler = "Battler", + BattlerElite = "BattlerElite", + RapStar = "RapStar", + ArtMaster = "ArtMaster", + TheInterrogator = "TheInterrogator", + CommonOverseer = "CommonOverseer", + Moonlite = "Moonlite", + Dicey = "Dicey", + Kacey = "Kacey", + Lexa = "Lexa", + Delta = "Delta", + DoodlePro = "DoodlePro", + GuitarHero = "GuitarHero", + SmallKeyMaster = "SmallKeyMaster", + RareOverseer = "RareOverseer", + DEMUL = "DEMUL", + AgentZ = "AgentZ", + MediumKeyMaster = "MediumKeyMaster", + IncomingSword = "IncomingSword", + Eda = "Eda", + TheFirewall = "TheFirewall", +} + + +export type GenerateBattlerOptions = { + colour: Colour; + hat?: ColouredOpt; + face?: ColouredOpt; + top?: ColouredOpt; + bottom?: ColouredOpt; + buddy?: Buddies | "None"; + back?: ColouredOpt; + neck?: ColouredOpt; + glow?: Colour | "None"; + eye?: ColouredOpt; +}; + +export enum PlayerActions { + AttackLeft = "Attack Left", + DefendLeft = "Defend Left", + ItemLeft = "Item Left", + AttackRight = "Attack Right", + DefendRight = "Defend Right", + ItemRight = "Item Right" +} + +export type PlayerActionOptions = { + action: PlayerActions; + player: string; +}; + +export type GenerateBattleImageOptions = { + opponent: Opponents; + username: string; +}; + +export type CustomActionOptions = { + background: string; + player: string; + position: "left" | "middle" +} \ No newline at end of file diff --git a/utils.ts b/utils.ts new file mode 100644 index 0000000..eeeb525 --- /dev/null +++ b/utils.ts @@ -0,0 +1,117 @@ +import { Canvas, createCanvas, loadImage, GlobalFonts, SKRSContext2D } from "@napi-rs/canvas"; +import { + GenerateBattlerOptions, + Colour, + Opponents, + PlayerActions, +} from "./types"; + +export const validColours = Object.entries(Colour).map((x) => x[0]); +export const validOpponents = Object.entries(Opponents).map((x) => x[0]); +export const validPlayerActions = Object.entries(PlayerActions).map((x) => x[1]); + +export async function generateBattler( + opts: GenerateBattlerOptions & { direction?: "right" | "left" }, +): Promise { + // Image dimensions + const canvas = createCanvas(1280, 1280); + const context = canvas.getContext("2d"); + if (!validColours.includes(opts.colour)) opts.colour = Colour.Black; + + // Load + draw the necessary images + + // [Glow] + if (opts.glow && opts.glow !== "None") { + const glow = await loadImage(`./assets/glows/${opts.glow}.png`); + context.drawImage(glow, 0, 0, canvas.width, canvas.height); + } + + // [Back] + if (opts.back && opts.back !== "None") { + const back = await loadImage(`./assets/backs/${opts.back}.png`) + context.drawImage(back, 0, 0, canvas.width, canvas.height) + } + + // [Base] + const base = await loadImage(`./assets/bases/${opts.colour || "Black"}.png`); + context.drawImage(base, 0, 0, canvas.width, canvas.height); + + // [Face] + if (opts.face && opts.face !== "None") { + const face = await loadImage(`./assets/faces/${opts.face}.png`); + context.drawImage(face, 0, 0, canvas.width, canvas.height); + } + + // [Hat] + if (opts.hat && opts.hat !== "None") { + const hat = await loadImage(`./assets/hats/${opts.hat}.png`); + context.drawImage(hat, 0, 0, canvas.width, canvas.height); + } + + // [Eyes] + if (opts.eye && opts.eye !== "None") { + const eye = await loadImage(`./assets/eyes/${opts.eye}.png`); + context.drawImage(eye, 0, 0, canvas.width, canvas.height); + } + + // [Bottom] + if (opts.bottom && opts.bottom !== "None") { + const bottom = await loadImage(`./assets/bottoms/${opts.bottom}.png`); + context.drawImage(bottom, 0, 0, canvas.width, canvas.height); + } + + // [Top] + if (opts.top && opts.top !== "None") { + const top = await loadImage(`./assets/tops/${opts.top}.png`); + context.drawImage(top, 0, 0, canvas.width, canvas.height); + } + + // [Neck] + if (opts.neck && opts.neck !== "None") { + const neck = await loadImage(`./assets/necks/${opts.neck}.png`) + context.drawImage(neck, 0, 0, canvas.width, canvas.height) + } + + // [Buddy] + if (opts.buddy && opts.buddy !== "None") { + const buddy = await loadImage(`./assets/buddies/${opts.buddy}.png`) + context.drawImage(buddy, 0, 0, canvas.width, canvas.height) + } + + if (opts.direction && opts.direction == "left") { + let flipped = createCanvas(1280, 1280); + let flippedCtx = flipped.getContext("2d"); + + flippedCtx.scale(-1, 1); + flippedCtx.drawImage(canvas, -canvas.width, 0, canvas.width, canvas.height); + + return flipped; + } + + return canvas; +} + +export function drawText(pos: [number, number], text: string, colour: string, outline: { colour: string, width: number }, ctx: SKRSContext2D) { + ctx.strokeStyle = outline.colour; + ctx.lineWidth = outline.width; + ctx.fillStyle = colour; + + ctx.strokeText(text, pos[0], pos[1]) + ctx.fillText(text, pos[0], pos[1]) +} + +export const applyText = (canvas: Canvas, text: string, width: number) => { + const context = canvas.getContext('2d'); + + // Declare a base size of the font + let fontSize = 175; + + do { + // Assign the font to the context and decrement it so it can be measured again + context.font = `${fontSize -= 10}px Lilita One`; + // Compare pixel width of the text to the canvas minus the approximate avatar size + } while (context.measureText(text).width > width); + + // Return the result to use in the actual canvas + return context.font; +}; \ No newline at end of file